给出
f(n) = 2 n^3 + 7 n^2 log(n^4)
可以制作什么大哦,Theta和Omega的陈述?
我理解大哦会O(n^3)
,但我不知道该为别人寻找什么。
我所看到的只是n^3
的约束,并且不能更好。
答案 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