我喜欢这个问题中提到的算法:“如何运作?奇怪的汉诺塔解法” (英文链接)
有没有办法将那个非递归的汉诺塔解法扩展到使用X个盘子和Y个塔,其中塔用栈表示?
在维基百科上可以找到一个关于Y=3塔和X个盘子的汉诺塔问题的迭代解决方案:
对于偶数个盘子:
对于奇数个盘子:
在每种情况下,总共进行2^X-1次移动。 使用此算法的移动次数仅为Y=3时最少的次数。
此解决方案忽略了其他塔,因此适用于任何Y>= 3和任何X。
尽管三柱版本有一个简单的递归解决方案,如上所述,但四柱(称为Reve's puzzle)甚至更多柱的汉诺塔问题的最优解仍然是一个未解决的问题。这是一个很好的例子,说明如何通过稍微放松问题约束条件,可以使一个简单可解的问题变得极其困难。引自维基百科。