对数与幂的渐近复杂性

时间:2011-10-24 22:54:49

标签: big-o logarithm asymptotic-complexity

因此,显然,log(n)是O(n)。但是,(log(n))^ 2怎么样?那么sqrt(n)还是log(n) - 什么界限是什么?

有一系列这样的比较:
n ^ a与(log(n))^ b

我经常遇到这些比较,我从来没有想出一个很好的解决方法。解决一般案例的策略提示?

谢谢,
伊恩

编辑: 我不是在谈论计算这些函数值的计算复杂性。我在谈论功能本身。例如,f(n)= n是g(n)= log(n)的上限,因为对于c = 1和n0>,f(n)<= c * g(n)。 0.

3 个答案:

答案 0 :(得分:2)

log(n)^ a总是O(n ^ b),对于任何正常数a,b。

您在寻找证明吗?通过以下技巧可以将所有这些问题简化为看到log(n)为O(n):

log(n)^ a = O(n ^ b)相当于: log(n)= O(n ^ {b / a}),因为提高到1 / a功率是一个增加的函数。 这相当于 log(m ^ {a / b})= O(m),通过设置m = n ^ {b / a}。 这相当于log(m)= O(m),因为log(m ^ {a / b})=(a / b)* log(m)。

你可以通过归纳证明log(n)= O(n),重点关注n是2的幂的情况。

答案 1 :(得分:2)

  

我经常遇到这些比较(...)   解决一般情况的策略提示?

关于一般情况,以及您对此类问题的大量关注。这是我的建议:

一旦您知道,请使用limit definition of BigO notation

f(n) = O(g(n)) iff limit (n approaches +inf) f(n)/g(n) exists and is not +inf

您可以使用Computer Algebra System,例如开源Maxima,此处位于Maxima documentation about limits

For more detailed info and example - check out THIS answer

答案 2 :(得分:1)

log n -- O(log n)
sqrt n -- O(sqrt n)
n^2 -- O(n^2)
(log n)^2 -- O((log n)^2)

n^a(log(n))^b

你需要基地或权力相同。因此,请使用数学将n^a更改为log(n)^(whatever it gets to get this base)(whatever it gets to get this power)^b。没有一般情况