递归关系树方法

时间:2016-10-13 00:47:54

标签: recurrence

我目前在解决我们的一些复发问题时遇到了问题,因为我很快就会有关于它的问题,我真的可以使用一些帮助,也许可以解释它是如何工作的。

所以我基本上有解码河内塔的伪代码

TOWER_OF_HANOI ( n, FirstRod, SecondRod, ThirdRod)
    if n == 1 
          move disk from FirstRod to ThirdRod 
     else
             TOWER_OF_HANOI(n-1, FirstRod, ThirdRod, SecondRod)
              move disk from FirstRod to ThirdRod
              TOWER_OF_HANOI(n-1, SecondRod, FirstRod, ThirdRod)

如果我理解如何写关系(说实话,我不确定我做...)它应该是T(n)= 2T(n-1)+Ɵ(n),对吗?我有点理解如何使用小数子问题制作一棵树,但即便如此,我还是不完全理解能够为你提供Ɵ(n)或Ɵ(n log n)或其他的最终解决方案的过程。

感谢您的帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

  1. 假设时间复杂度为T(n),则假定为:T(n)= T(n-1)+ T(n-1)+ 1 = 2T(n-1)+ 1.为什么是“+1”而不是“+ n”?由于“将磁盘从FirstRod移动到ThirdRod”只需要一次搬迁。

  2. 对于T(n)= 2T(n-1)+ 1,其递归树将如下所示: https://www.quora.com/What-is-the-complexity-of-T-n-2T-n-1-+-C(你可能会发现它很有用,图像很整洁。)C是一个常量;它意味着每次操作的成本。在河内塔的情况下,C = 1.

  3. 计算每个级别的成本之和,在这种情况下您将很容易找到,总成本将是2 ^ n-1,这是指数(昂贵)。因此,这个递归方程的答案是Ɵ(2 ^ n)。