新浪微博 Github

The Tower of Hanoi

汉诺塔游戏是19世纪由法国数学家 Lucas 发明的,这个游戏由三根柱子以及n个大小不一的圆盘组成,初始时全部的圆盘都放在第一个柱子(最左边的柱子)上,并且从小到大排列,游戏的目标是将全部的圆盘从小到大放到第二个柱子上,游戏规则是:“每次只能移动一个圆盘,任何时候都不能把较大的圆盘叠在较小的圆盘上”。

我们在这里需要讨论如果要完成游戏,则需要移动的次数。

设 $H_n$ 表示当有n个圆盘时用方法A需要移动的次数。我们可以先用方法A将前n-1个圆盘移到第3个柱子(移动次数为$H_{n-1}$),再将最左边柱子的剩下的一个圆盘移到第二个柱子(移动次数为1次),再将第三个柱子上的n-1个圆盘用方法A放到第2个柱子上(移动次数为$H_{n-1}$),因此$H_n=2H_{n-1}+1$,其中$H_1=1$。

解得:$H_n=2^n -1$

因此需要指数次的移动次数才能够完成汉诺塔。

 

Reve's Puzzle(雷夫难题):4个柱子的汉诺塔问题。

posted @ 2013-05-27 22:17  xiazdong  阅读(318)  评论(0编辑  收藏  举报