【问题标题】:Algorithm Recurrence Relation算法递归关系
【发布时间】:2017-03-18 16:13:13
【问题描述】:

下面的递归关系是如何解决的:

T(n) = 2T(n-2)+O(1)

到目前为止我尝试过的是:

O(1) is lower or equal than a constant c.

所以

 T(n) <= 2T(n-2) + c
 T(n) <= 4T(n-4) + 2c
 T(n) <= 8T(n-6) + 3c
          .
          .
          .

所以一种模式正在出现……总称是:

T(n) <= 2^k*T(n-2k) + kc

但我不知道如何从那里继续。感谢任何建议。

【问题讨论】:

  • 这可能不是适合发布的 Stack 站点。来自计算机科学网站的人会为您提供更多帮助。
  • 这似乎不是真正的话题。您或许可以在计算机科学网站上获得帮助。
  • 好的,我去问问

标签: recursion time-complexity big-o complexity-theory


【解决方案1】:

假设您对k 的概括为真[1]

T(n) <= 2^k*T(n-2k) + kc

对于k=n/2,你会得到:

T(n) <= 2^n/2 * T(0) + n/2 * c = 2^(n/2) + n/2*c

O(sqrt(2^n))

形式证明可以通过归纳来完成,归纳假设如下:

T(n) <= 2^(n/2) + c*n

以及步骤:

T(n) = 2T(n-2) + c  = (induction hypothesis)
T(n) = 2* 2^((n-2)/2)  + (n-2)*c + c
T(n) = 2^ (n/2 - 2/2 + 1) + (n-1)*c
And indeed: 
T(n) = 2^(n/2) + (n-1)*c <= 2^(n/2) + c*n

(1) 不是,它忽略了常数在循环中相乘的事实。

【讨论】:

    猜你喜欢
    • 2019-02-28
    • 1970-01-01
    • 1970-01-01
    • 2016-01-20
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 2015-04-06
    相关资源
    最近更新 更多