因此,显然,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.
答案 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。
答案 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
。没有一般情况