我一直在关注Big O符号并且遇到了操作计数2^n+n^2
。我理解大O符号的做法是删除常量和低阶项,但是我无法弄清楚哪一个要O(n)
。我认为它可能是2^n
,但没有找到任何建议这一点的运气。
答案 0 :(得分:4)
随着时间的推移,看看增长因素。对于n
的前八个值,O(n^2)
适用于:
0,1,4,9,16,25,36,49 ......
O(2^n)
产生两个权力:
1,2,4,8,16,32,64,128 ......
应该相当明显哪一个增长得更快。
请注意,一般规则适用于不同的基数和指数。对于较小的O(1.1^n)
,O(n^10)
最初的工作可能低于n
,但指数大于1的指数增长最终将超过固定的指数多项式增长,因为n
接近无穷大。
答案 1 :(得分:4)
按照L' Hopital的规则:
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
我们n^2 = o(2^n)
暗示n^2 = O(2^n)
。
如果此证据没有意义:根据定义,f(n) = O(g(n)
当且仅当f(n)
在g(n)
增长后n
的某个常数倍内有界时f(n) = o(g(n))
经过一些不变的。考虑n
的一种方法是,当g(n)
增长到无穷大时,f(n)
将继续快速增长f(n) = o(g(n))
。换句话说:
f(n)/g(n)
当且仅当限制n
变为零时o(g(n)
变为无穷大。
f(n) = O(g(n))
是a
的严格条件。
或者,您只需要直接使用该定义:查找一些b
和n^2 <= a | 2^n |
,使n >= b
为所有x
,这是一种简单的代数操作。
答案 2 :(得分:3)
2 ^ n占主导地位,因为它对于较大的n增长得更快。
答案 3 :(得分:3)
我非常喜欢 @ShadowRanger 对你问题的回答。但是,我想再展示一个问题。
如果您查看此图表,绿色部分为2^n
,红色为n^2
。如果你可以看到,行n^2
开始增长的速度比2^n
快,但随着你越来越大,行越过,2^n
开始变得更大,更快。
答案 4 :(得分:2)