大O符号

时间:2013-03-10 18:03:59

标签: big-o notation

我正在阅读有关Big O符号的内容。在我的书中,有一个例子,其中 n 2 的复杂性属于O( n 3 < / em>的)。这对我来说似乎不合逻辑,因为 n 3 依赖于 n 而且它不仅仅是一个普通的常数乘数我们可以“得到摆脱。“

请向我解释为什么这两个具有相同的复杂性。我在这个论坛或任何其他论坛上找不到答案。

1 个答案:

答案 0 :(得分:1)

Big O确定n的大值的上限。 O( n 3 )大于O( n 2 ),因此 n 2 程序仍为O( n 3 )。它也是O( n 4 ),O(* n 5 ),...,O( n infinity功能 的)。

然而,事实并非如此。 n ^ 3程序不是O( n 2 )。相反,它将是Omega( n 2 ),因为Omega确定了下限(我们至少要做多少工作)。

Big O没有说这个上限是“紧”,它只需要高于实际的复杂性。因此,虽然n * n复杂度程序以O( n 3 )为界,但这并不是一个非常严格的约束。 O( n 2 )更紧凑,信息更丰富。