分析:
对于三柱汉诺塔问题,我们已经熟知步骤数最优解为 2 i − 1 2^{i}-1 2i−1,其中 i 为盘子个数。
对于四柱以上的问题,我们将柱子分为三类,起点柱Start,辅助柱Buf,终点柱End,三柱情况时,我们总想着将前n - 1个盘从Start借助End移动到Buf,然后将第 n 个盘从Start移到End,最后将Buf柱上的n - 1个盘借助Start移到End,这就找到了递推关系:
S t e p s ( n ) = 2 ∗ S t e p s ( n − 1 ) + 1 Steps(n) = 2*Steps(n-1)+1 Steps(n)=2∗Steps(n−1)+1
对于三柱问题,我们将前n-1盘移到Buf是唯一的选择,对于四柱以上的问题,我们可以移前n-1或者前n-2等等,哪个最佳呢?这就需要动态规划了。
思路:
这里提供Frame算法:
由于不知道哪个 r 使得移动前 n - r 个盘是最优解,我们需要算出所有可能性再取最小值。
(1)首先把前 n - r 个盘移从Strat移到Buf上,此时可用柱数为 m ,步骤数是 S t