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 ))怎么样?我想我们无法确定这一点,因为我们不知道日志的基础。
答案 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 )。
希望这有帮助!