big-O表示法的指数

时间:2013-02-13 06:24:17

标签: math big-o asymptotic-complexity

3 n = O(2 n )?怎么样(3/2) n = O(2 n )?你能解释一下这个答案吗?

我第一次得到假,因为3 n 增长得快于2 n ,无论C乘以2 n 。第二个也一样吗?

log(3 n )= O(log(2 n ))怎么样?我想我们无法确定这一点,因为我们不知道日志的基础。

1 个答案:

答案 0 :(得分:4)

让我们实际证明一个更强的结果:对于任何常数r 0 和r 1 ,其中1≤r 0 < r 1 ,确实r 0 n = O(r 1 n )并且r 1 n = r 0 n 是错误的。这证明了你的结果是一个特例,因为1< 3/2< 2。

为证明第一部分,我们将证明r 0 n = O(r 1 n )。为此,我们将使用big-O的定义并找到n 0 和c的值,使得对于任何n> n 0 ,我们有

  

r 0 n ≤cr 1 n

我们可以选择n = n 0 并且可以选择c = 1.然后上面的不等式成立,所以根据定义我们得到r 0 n < / sup> = O(r 1 n )。

为证明第二部分,我们将证明r 1 n ≠O(r 0 n )。要做到这一点,我们将继续矛盾。为了矛盾起见,假设存在c和n 0 的选择,使得对于任何n> 0。 n 0 ,我们有

  

r 1 n ≤cr 0 n

记录双方的日志

  

n log r 1 ≤log(c r 0 n

     

n log r 1 ≤logc + n log r 0

     

n(log r 1 - log r 0 )≤logc

     

n log(r 1 / r 0 )≤logc

     

n≤logc /(log(r 1 / r 0 ))

但现在我们遇到了麻烦,因为这个陈述应该适用于任何n的选择。但是,如果我们选择n大于log c /(log(r 1 / r 0 )),则该语句将变为false。

我们已经达成了矛盾,所以我们的假设一定是错的。因此,如果1&lt; r 0 &lt; r 1 ,我们得到r 1 n ≠O(r 0 n )。

希望这有帮助!