函数的big-O可以大于函数本身吗?

时间:2018-07-18 02:07:50

标签: algorithm sorting big-o

假定两个(正)非递减函数f和g使得f(n)= O(g(n))。 是2 ^ f(n)= O(2 ^ g(n))吗?

解决方案中有2种情况:

  1. 假设f(n)= g(n)= n,在这种情况下它们是相等的,我完全可以理解。
  2. 对于第二种情况,作者假设令f(n)= 10n且g(n)= n,此假设是否正确?函数的big-O如何比函数本身大?

我在这里错过了重点吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

首先根据定义观察10n=O(n)。如果您不清楚,请重新阅读big-O表示法的定义。

但是,2^(10n)不是O(2^n),因为这暗示着

2^(10n) <= C2^n

对于某个常数Cn的所有值都高于某个阈值N

要了解为什么这不是事实,请选择一些常量D,例如C <= 2^D(例如D = lgC)。我们得到

2^(10n) <= C2^n <= (2^D)(2^n) = 2^(D+n)

这意味着

10n <= D + n

9n <= D

所有高于阈值n的{​​{1}}的值。但这是不可能的,因为N是常数,而D是不受限制的。

最后,我们有一个断言9n的反例,因此它通常不成立。