简单的大O与lg(n)证明

时间:2010-03-19 17:07:19

标签: algorithm big-o

我试图猜测并证明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必须是常数。我做错了什么?

2 个答案:

答案 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.