请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2018-02-25 09:33:40

由于这个课程不涉及非常严谨的复杂度计算,所以在这里我的用语可能不够严谨。抱歉。


在这里,我是指,二者都是指数级的复杂度。具体是指:

2^n = (3^(log3(2)))^n = 3^(log3(2)*n)

这里,log3(2)是指对2求以3为底的对数。


所以2^n和3^n都可以表达成2^(cn)的形式,其中c是常数。所以通常说二者都是指数级复杂度,相差一个常数,这个常数就是c。在上面的例子里,c = log3(2)。


不过从严格的复杂度定义的角度,确实:2^n != Big-Theta(3^n);他们之间的关系是:

2^n = Big-O(3^n)

3^n = Big-Omega(2^n)


如果对Big-O,Big-Theta,Big-Omega这些符号的严格数学定义感兴趣,可以在网上搜索相应的资料,或者看算法导论第三章,介绍的非常清楚。不过通常在面试中不会考察这么严谨的复杂度计算方法,习惯上把指数级复杂度归为一类。即O(a^n)的形式。


0 回复 有任何疑惑可以回复我~
  • 老师,感觉2^n = (3^(log3(2)))^n = 3^(log3(2)*n)是不是应该写成3^n = (2^(log2(3)))^n =2^(log2(3)*n)。不过写成那样也明白是啥意思。
    回复 有任何疑惑可以回复我~ 2020-01-13 21:13:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信