繁体   English   中英

展开方法:当 n = 0 和 2T(n-1) + 1 时,T(n) = 1

[英]Unrolling Method For: T(n) = 1 when n = 0 and 2T(n-1) + 1

为了

  • 当 n = 0 时,T(n) = 1
  • T(n) = 2T(n-1) + 1 否则

我知道我们应该寻找模式并理解问题,直到我们开始用不同的变量转换方程。 然而,一旦我到达那里,我不明白它是如何完成的以及为什么要完成某些事情。

我的问题特别是我们在 2 i ·T(n-1) 处用n替换i 但是,完整的解释也很有用!

展开方法的图片

就像 99999 10是 100000 10 - 1, 11111 2是 100000 2 - 1 一样。

有两种方法可以看待这个问题。 一个是从一些任意的n个工作倒退,这说明你已经盖。 我发现有用的另一种方法是从零开始,直到n

  • T(0) = 1
  • T(1) = 1 << 1 + 1 = 3
  • T(2) = 3 << 1 + 1 = 7
  • ...

这里 << 是二进制数上的“左移”运算符,相当于乘以 2。这个运算符在许多编程语言中相当常见。 它有助于表明您只是在每一步添加 1 位。 回到第一个断言, n个连续的一位等价于 2 n + 1 - 1。

您问题中的解释仅使用i作为从 1 到n运行的计数器。 除了作为计步器之外,它不是等式的一部分。 在最后一步中, i = n ,因此您可能会对转换感到困惑。

当第一次看到公式时,我和你有同样的问题。 但让我们从头开始。
首先,您尝试通过i逐步接近最终深度n 因此,对于每个数字i您解析公式i次(在图片中i=1 , i=2 , i=3 , i=4 ),但要注意您还不能解析T(ni) 但是您可以推导出i=n的模式。 这一行实际上是从错误开始的:图片上写着i=ni但实际上应该是i=n因为你到达了底部。
剩下的就很简单了:你写下你看到的模式并将它放在一个总和公式中( Sum_{j=0}^{i-1}2^j )。 你用n代替i ,因为这是该行的前提。 您将T(nn)替换为T(0)=1 接下来,您应用有限几何级数,从而摆脱求和符号。 其余的应该是清楚的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM