Whats the dominant term in 2^n or n^2 for big O notation
I have been looking at Big O notation and have come across an operational count 2^n+n^2 . I understand the practice of big O notation is to remove the constants and the low order terms, however I cant figure out which one to make O(n) . I think it may be 2^n but have had no luck finding anything to suggest this.
Look at the growth factor over time. For the first eight values of n , O(n^2) works out to:
0, 1, 4, 9, 16, 25, 36, 49...
O(2^n) produces powers of two:
1, 2, 4, 8, 16, 32, 64, 128...
It should be fairly obvious which one is growing faster.
Note that the general rule applies even with different bases and exponents. O(1.1^n) may have initially lower work than O(n^10) for smaller n , but all exponential growth with an exponent greater than 1 will eventually outpace fixed exponent polynomial growth as n approaches infinity.
By L'Hopital's rule:
lim_{n -> infinity} (n^2 / 2^n )
= 1/log(2) lim_{n -> infinity} (2n / 2^n)
= 1/log(2)^2 lim_{n -> infinity} (2 / 2^n)
= 0
We have n^2 = o(2^n) which implies n^2 = O(2^n) .
If this proof doesn't make sense: By definition, f(n) = O(g(n) if and only if f(n) is bounded within some constant multiple of g(n) after n grows past some constant. And a way to think of f(n) = o(g(n)) is that as n grows to infinity, g(n) will continue to outgrow f(n) faster. In other words:
f(n) = o(g(n)) if and only if the limit f(n)/g(n) becomes zero as n goes to infinity.
o(g(n) is a strictly stronger condition that f(n) = O(g(n)) .
Alternatively, you just need to use the definition directly: Find some a and b such that n^2 <= a | 2^n | n^2 <= a | 2^n | for all n >= b , which is simple algebraic manipulation.
2 ^ n是占优势的,因为对于较大的n,它增长得更快。
链接地址: http://www.djcxy.com/p/40044.html上一篇: 算法的渐近行为和Big O比较
