大O符号中的指数

3

3n = O(2n)吗?(3/2)n = O(2n)呢?你能解释一下答案吗?

对于第一个问题,我认为是错误的。因为无论您将2n乘以什么常数C,3n都会增长得更快。第二个问题也是同样的道理。

那么log(3n) = O(log (2n) )呢?我认为我们无法确定这个问题,因为我们不知道log的底数。


2
对数的底数通过一个常数因子改变数字,所以这并不重要。 - Joni
1个回答

5
让我们证明一个更强的结论:对于任意常数r0和r1,其中1 ≤ r0 < r1,有r0n = O(r1n)成立且r1n = r0n不成立。这证明了你的结果是一个特例,因为1 < 3/2 < 2。
为了证明第一部分,我们将展示r0n = O(r1n)。为此,我们将使用大O符号的定义,并找到n0和c的值,使得对于任何n > n0,我们都有以下不等式:
r0n ≤ c r1n 我们可以选择n = n0,并且可以选择c = 1。上述不等式成立,因此根据定义,我们有r0n = O(r1n)。
为了证明第二部分,我们将展示r1n ≠ O(r0n)。为此,我们将采用反证法。为了推导矛盾,假设存在c和n0的选择,使得对于任何n > n0,我们都有以下不等式:
r1n ≤ c r0n 取两边的对数得到:
n log r1 ≤ log (c r0n) n log r1 ≤ log c + n log r0 n (log r1 - log r0) ≤ log c n log(r1 / r0) ≤ log c n ≤ log c / (log(r1 / r0))
但现在我们遇到麻烦了,因为这个语句应该适用于任何n的选择。然而,如果我们选择的n大于log c / (log(r1 / r0)),则该语句变为假。
我们遇到了矛盾,因此我们的假设必定是错误的。因此,如果1 < r0 < r1,那么r1n ≠ O(r0n)。
希望这可以帮助您!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接