大时间复杂度n ^ 1.001

时间:2018-04-20 14:16:24

标签: time-complexity big-o

  • 为什么Big O表示法中n^1.001的增长大于n log nn^0.001似乎并不重要......

2 个答案:

答案 0 :(得分:3)

对于任何大于1的指数(x),n x 最终大于n * log(n)。在x = 1.001的情况下,所讨论的n难以置信地大。即使将x降低到1.01,n x 也不会比n * log(n)大,直到超过n = 1E + 128(但在达到1E + 256之前)。

因此,对于n小于天文数的问题,n 1.001 将小于n * log(n),但最终会达到更大的点。

答案 1 :(得分:1)

如果有人感兴趣,这是一个正式的证明:

为简单起见,我们假设我们在基数e中使用对数。

a > 1成为任何指数(例如a = 1.001)。然后是a-1 > 0。现在考虑函数

f(x) = x^(a-1)/log(x)

使用L'Hôpital的规则,不难看出这个功能是无限的。此外,计算f(x)的导数,人们也可以看到x > exp(1/(a-1))的函数正在增加。

因此,必须存在整数N,对于所有n > Nf(n) > 1都是n^(a-1)/log(n) > 1 。换句话说

n^(a-1) > log(n)

n^a > n log(n).

所以

O(n^a) >= O(n log(n))

这表明>

但等一下。我们想要>=,而不是a = 1.001,对吧?幸运的是,这很容易看到。例如,在O(n^1.001) > O(n^1.0001) >= O(n log(n)) 的情况下,我们有

{{1}}

我们已经完成了。