大 O 符号中的指数

Kal*_*lon 3 math big-o asymptotic-complexity

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

我第一次弄错了,无论你乘以 2 n的常数 C 是多少,3 n 的增长速度都比 2 n快。第二个也一样?

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

tem*_*def 5

让我们实际证明一个更强的结果:对于任何常数 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 = O(r 1 n )。

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

r 1 n ≤ cr 0 n

取双方的对数得到

n log r 1 ≤ log (cr 0 n )

n log r 1 ≤ log c + n log r 0

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

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

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

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

我们遇到了矛盾,所以我们的假设一定是错误的。因此,如果 1 < r 0 < r 1,我们有 r 1 n ≠ O(r 0 n )。

希望这可以帮助!