我试图猜测并证明Big O:
f(n)= n ^ 3 - 7n ^ 2 + nlg(n)+ 10
我猜大O是n ^ 3,因为它是具有最大增长顺序的术语
然而,我无法证明这一点。我的不成功的尝试如下:
f(n) <= cg(n)
f(n) <= n^3 - 7n^2 + nlg(n) + 10 <= cn^3
f(n) <= n^3 + (n^3)*lg(n) + 10n^3 <= cn^3
f(n) <= N^3(11 + lg(n)) <= cn^3
so 11 + lg(n) = c
但这不可能是正确的,因为c必须是常数。我做错了什么?
答案 0 :(得分:10)
对于任何基础 b ,我们知道始终存在n0 > 0
,
log(n)/log(b) < n
时, n >= n0
因此,
n^3 - 7n^2 + nlg(n) + 10
&lt; n^3 - 7n^2 + n^2 + 10
时的n >= n0
。
你可以从那里解决。
答案 1 :(得分:1)
对于你的问题,O(n ^ 3)的证明看起来应该是这样的:
f(n) <= n^3 + 7n^2 + nlg(n) + 10 for (n > 0)
f(n) <= n^3 + 7n^3 + nlg(n) + 10 for (n > 1)
f(n) <= n^3 + 7n^3 + n*n^2 + 10 for (n > 2)
f(n) <= n^3 + 7n^3 + n^3 + 10 for (n > 2)
f(n) <= n^3 + 7n^3 + n^3 + n^3 for (n > 3)
f(n) <= 10n^3 for (n > 3)
因此,对于n> 0,f(n)是O(n ^ 3)。 3和k = 10.