【问题标题】:Solving a recurrence relation using Smoothness Rule使用平滑规则求解递归关系
【发布时间】:2020-04-02 19:50:07
【问题描述】:

考虑这种重复关系:x(n) = x(n/2) + n,对于n > 1x(1) = 0
现在这里的反向代入法会为n 的值而不是2 的幂而奋斗,所以这里最好使用平滑规则来解决这类问题,当我们使用平滑规则时,其中我们将求解 n = 2^k(对于 n = 值 2 的幂),我们将得到 x(n) = 2n - 1 的解。
但是,如果我们使用反向代入的方法,这个递推关系就会有解!
x(n) = x(n/2) + n = x(n/4) + n/2 + n = x(n/8) + n/4 + n/2 + n = x(n/16) + n/8 + n/4 + n/2 + n = ....
模式在哪里
x(n) = x(n/i) + n/(i/2) + n/(i/4) + n/(i/8) + n/(i/16) + ...
当 n = 1 时(即 i = n 时)将停止,在这种情况下
x(n) = x(n/n) + n/(n/2) + n/(n/4) + n/(n/8) + n/(n/16) + ... = 1 + 2 + 4 + 8 + 16 + ... = 2^(n+1) - 1
这是两个不同的答案!
所以请我在这里很困惑,因为在教科书(Anany Levitin 的算法分析与设计简介)中提到我们应该在这里使用平滑规则,但正如你所看到的,我已经通过向后的方法完全解决了它替换方法在这里预期会遇到困难但没有发生任何事情!

【问题讨论】:

    标签: algorithm recursion discrete-mathematics recurrence


    【解决方案1】:

    转换1 + 2 + 4 + 8 + 16 + ... = 2^(n+1) - 1 为假。
    那是因为左边系列中的元素数是log n,所以总和是2^(log n + 1) - 1,正好是2n - 1
    log n元素的原因是n/(2^i) = 1(系列的最后一个元素是1)当i = log n

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-18
      • 2015-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多