【问题标题】:Using big-O to prove N^2 is O(2^N)使用 big-O 证明 N^2 是 O(2^N)
【发布时间】:2012-07-12 06:20:00
【问题描述】:

我可以清楚地看到 N^2 以 c2^N 为界,但是我如何通过使用 big-O 的正式定义来证明它。我可以简单地用 M.I. 来证明它。

这是我的尝试.. 根据定义,对于任何 n>n0,存在一个常数 C f(n)

我应该把 log 带到两边并解决 C 吗?

还有一个关于斐波那契数列的问题,我想解决递归关系。

int fib(int n){
   if(n<=1) return n;
   else return fib(n-1) + fib(n-2);

等式是..

T(n) = T(n-1)+T(n-2)+C // where c is for the adding operation
所以
T(n) = T(n-2) + 2T(n-3) + T(n-4) + 3c 

还有一个

T(n) = T(n-3) + 3T(n-4) + 3T(n-5) + T(n-6) + 6c

然后我开始迷路以形成一般方程 i 该模式有点像帕斯卡三角形?

 t(n) = t(n-i) + aT(n-i-1) + bT(n-i-2) + ... + kT(n-i-i) + C 

【问题讨论】:

  • 最好问here
  • o.. 所以我应该在这里删除帖子吗?
  • 一种方法是在 n 接近 g(n)/f(n) 的无穷大时使用极限
  • 您介意再详细解释一下吗? 2^n / n^2 因为 2^n 比 n^2 增长得快,当 n 趋于无穷大时,g(n)/f(n) 也会趋于无穷大,对吧?

标签: big-o proof


【解决方案1】:

正如您所指出的,要查看是否 f(x) ϵ O(g(x)) 您需要找到...

  • ...一些 c > 0
  • ...一些x0

使得 f(x) 对于所有 x > x0

在这种情况下,您可以选择 c = 1x0 = 2。你需要证明的是

    x2x 对于所有 x > 2

此时你可以记录双方(因为如果log(x) > log(y),那么x > y。 ) 假设您使用的是 base-2 日志,您会得到以下结果

    log(x2) x)

根据标准的对数定律,你得到

    2·log(x)

因为 log(2) = 1 这可以写成

    2·log(x)

如果我们设置 x = 2,我们得到

    2·log(2) = 2

并且由于 xlog(x) 增长得更快,我们知道 2·log(x) 适用于所有 x > 2.

【讨论】:

  • 因为 x = 2 我们有 2 * log(2) = 2 ≤ 2 并且 log(x) 比 x 增长得更快。
  • 但是“log(x) 的增长速度比 x 快”是我们想要证明的陈述对吗?我们想证明“2^N 比 N^2 增长得更快”。
  • (首先,抱歉,在我的上一条评论中应该是“x 的增长速度比 log(x) 快”。)无论如何,我认为你可以认为这是理所当然的。
【解决方案2】:

在大多数情况下,接受的答案(来自 aioobe)是正确的,但需要进行重要的更正。

是的,对于 x=2,2×log(x) = x2×log(2) = 2 是正确的,但随后他错误地暗示了2×log(x) 对所有 x>2 都为真,但不是真的。

我们取 x=3,所以方程变为:2×log(3) (一个无效的方程)。

如果你计算这个,你会得到:2×log(3) ≈ 3,16993,它大于 3。

如果您绘制 f(x) = x2g(x) = 2x,您可以清楚地看到这一点 或者如果你绘制 f(x)= 2×log(x)g(x) = x(如果 c=1)。

在 x=2 和 x=4 之间,您可以看到 g(x) 将低于 f(x)。只有当 x 4 时,f(x) 才会保持 c×g(x)。

所以要得到正确的答案,你按照 aioobe 的答案中描述的步骤,但是你绘制函数来获得 f(x) = c×g(x )。该交点处的 x 是您的 x0(连同选择的 c),满足以下条件:f(x) c×g(x ) 对于所有 x x0

所以对于 c=1 它应该是:对于所有 x≥4,或 x0=4

【讨论】:

    【解决方案3】:

    改进已接受的答案:

    你必须证明 x^2 2

    取双方的log,我们要证明: 2·log(x) 2

    因此我们必须对所有 x>2 显示函数 h(x)=x-2·log(x)>0

    h(2)=0

    h(x) 对 x 微分,我们得到 h'(x)= 1 - 1/(x·ln(2))

    对于所有 x>2,h'(x) 总是大于 0,因此 h(x) 不断增加,并且由于 h(2)=0, 因此证明,对于所有 x > 2,h(x) > 0, 或 x^2 2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 2012-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      相关资源
      最近更新 更多