使用X光盘和Y塔缩放迭代的按位算法来解决河内塔

Rob*_*obb 8 iteration algorithm stack towers-of-hanoi

我喜欢这个问题中提到的算法:"这是如何工作的?奇怪的河内解决方案塔" 这是如何工作的?河内解决方案奇怪的塔

有没有什么办法可以扩展河内塔楼的非递归解决方案来使用X盘和Y塔,塔楼代表堆栈?

Mar*_*oma 1

河内塔的迭代解决方案,具有 Y=3 塔和 X 圆盘,可以在维基百科上找到:

对于偶数个磁盘:

  • 在钉子 A 和 B 之间进行合法移动
  • 在钉子 A 和 C 之间进行合法移动
  • 重复钉子 B 和 C 之间的合法移动直至完成

对于奇数个磁盘:

  • 在钉子 A 和 C 之间进行合法移动
  • 在钉子 A 和 B 之间进行合法移动
  • 重复钉子 B 和 C 之间的合法移动直至完成

在每种情况下,总共进行 2^X-1 次移动。对于 Y=3 来说,该算法的移动次数是最少的。

该解决方案忽略其他塔,因此它适用于任何 Y >= 3 和任何 X。

尽管三钉子版本具有如上所述的简单递归解决方案,但具有四个钉子的河内塔问题(称为雷夫难题)的最佳解决方案仍然是一个悬而未决的问题,更不用说更多的钉子了。这是一个很好的例子,说明了如何通过稍微放松其中一个问题约束来使一个简单、可解决的问题变得更加困难。

引自维基百科