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 )) 怎么样?我认为我们无法确定这一点,因为我们不知道日志的基础。
让我们实际证明一个更强的结果:对于任何常数 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 )。
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
1648 次 |
| 最近记录: |