具有/解释的以下功能的大O,Theta和Omega?

时间:2015-01-08 11:20:31

标签: big-o big-theta

给出

f(n) = 2 n^3 + 7 n^2 log(n^4)

可以制作什么大哦,Theta和Omega的陈述?

我理解大哦会O(n^3),但我不知道该为别人寻找什么。 我所看到的只是n^3的约束,并且不能更好。

1 个答案:

答案 0 :(得分:0)

正如wiki关于大O符号的文章中所解释的那样。

Big O:

O(f(n)) = n^3, because  f(n) = 2n^3 + (7n^2)*log(n^4) =< 2n^3 + (7n^2)*n =< 9n^3,
for big enough n. As explained  below log(n^4) <= n, for big enough n. 

Big Omega:

Omega(f(n)) = n^3; because f(n) = 2n^3 + (7n^2)*log(n^4) >= 2n^3 >= n^3,
for big enough n. 
You can assume that `(7n^2)*log(n^4) > 0` so 2n^3 + (7n^2)*log(n^4) > 2n^3 >= n^3.

Big Theta:

Theta(f(n)) = n^3; because it O(f(n)) = Omega(f(n)) = n^3,

在你的例子中n^3支配7 n^2 log(n^4),“支持大n”。

更难以计算O / Theta / Omega的功能,如:g(n) = 7 n^2 log(n^4)

===更新===

g(n)函数的主要问题是理解log(n^4)函数(在我看来,它比简单n更难)。 log(n ^ 4)= 4 * log(n)。 所以O(log(n ^ 4))= Omega(log(n ^ 4))= Theta(log(n ^ 4))= log(n),因为log(n)&lt; = log(n ^ 4) &LT; 4 *的log(n)。这也意味着log(n ^ 4)&lt; = n,足够大的n。

最后,这导致我们:

(7 n^2)*log(n^4) = (7n^2)*4log(n) = 28*(n^2)*(log n)
1*(n^2)*(log n)  <= 28*(n^2)*(log n) <= 29*(n^2)*(log n)
// O(g(n))= n^2 * log n  
// Omega(g(n))= n^2 * log n  
// Theta(g(n))= n^2 * log n