'2n-2n ^ 3`的大O.

时间:2014-06-06 14:45:27

标签: big-o complexity-theory

我正在完成一项任务,但我的一位朋友不同意一部分的答案。

f(n) = 2n-2n^3

我发现复杂性为f(n) = O(n^3)

我错了吗?

2 个答案:

答案 0 :(得分:0)

首先,排序O(f(n)) = n^3的符号并没有多大意义。你可以说n ^ 3属于O(f(n)),这意味着对于足够大的n^3n的增长速度不会比f(n)快。然而,这种说法并非如此。当n无限时,f(n) 无限地减少。因此,即使常数0也不属于O(f(n))

另请参阅this table on wikipedia,其中提供了一个很好的摘要。

编辑:请注意,当问题包括:O(f(n)) = n^3时,此答案已发布。更改后,相同的语句保持不变,但f(n)确实属于O(n^3)。再次考虑类似因素,f(n)属于O(1)或任何比-n^3增长更快的函数。

答案 1 :(得分:0)

你没错,因为O(n ^ 3)没有提供紧束缚。但是,通常您会假设f正在增加,并尝试找到g为真的最小函数f=O(g)。考虑一个简单的函数f=n+3。对f=O(n^3)n+3 < n^3是正确的,因为所有n > 2都是f=O(n)(只是选择一个任意常数)。但是,对于所有n+3 < 2n来说n > 3以来f更加“正确”,这可以让您更好地了解n的行为f增加。

在您的情况下,当n增加时,f = O(g) 正在减少,因此任何函数的n确实如此2n - 2n^3 = O(1)增加时保持正值。对于某些正常数,“最小”(或者更确切地说,生长最慢)这样的函数是常数函数,我们通常将其写为2n - 2n^3 < 1,因为所有n>0都是n

你甚至可以发现n的某些功能随着f的增加而减少,但减少的速度比n慢,但这种用法很少见。 Big-O表示法最常用于描述算法运行时间随着输入大小的增加,因此{{1}}几乎普遍被认为是正的。