【问题标题】:analysis algorithm - recurrence equation (tower of hanoi)分析算法 - 递归方程(河内塔)
【发布时间】:2013-11-11 08:42:17
【问题描述】:

我在维基百科中看到了这个解决河内塔的递归算法。有人可以向我解释一下我是如何得到这个算法的递归方程的吗?

递归解

  • 标记钉子 A、B、C - 这些标签可能会以不同的步长移动
  • 设 n 为磁盘总数
  • 从 1(最小,最顶部)到 n(最大,最底部)对光盘进行编号

将 n 个圆盘从钉 A 移到钉 C:

  • 将 n-1 个圆盘从 A 移动到 B。这使得圆盘 n 单独留在钉 A 上
  • 将磁盘 n 从 A 移动到 C
  • 将 n-1 个圆盘从 B 移动到 C,使它们位于圆盘 n 上

以上是递归算法,要执行步骤 1 和 3,对 n-1 再次应用相同的算法。整个过程是有限数量的步骤,因为在某些时候,n = 1 时需要该算法。这一步,将单个圆盘从钉 A 移动到钉 B,是微不足道的。

【问题讨论】:

  • T(n) = 三个步骤的总和...请努力。

标签: algorithm recursion towers-of-hanoi


【解决方案1】:

前三步可以在线性时间内完成,后三步是递归的部分,那么,用递归的方式写明文写的就行了:

T(n,A,C) = T(n-1,A,B) + 1 + T(n-1,B,C).

另一方面,由于标签并不重要,并且 T(n,A,B) = T(n,B,C)=T(n,A,C)=...,我们可以去掉标签,所以方程将是?

【讨论】:

    猜你喜欢
    • 2012-09-11
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2016-05-25
    • 1970-01-01
    • 2013-08-28
    相关资源
    最近更新 更多