什么叫做 Tower of Hanoi???!!!(一个数学游戏)

来源:百度知道 编辑:UC知道 时间:2024/06/03 18:35:03
好像是把3或4颗珠子从小到大移到另一边,小的在大的上边,
移的过程中不能把大的放在小的上边。
帮帮忙!!!!!!

汉诺塔,A盘上有n个大小不同的碟子,它们叠放起来,并且上面的比下面的小。要求把所有的碟子移动到C盘子上,B盘子为可利用盘子。要求每次只能移动一个碟子,并且在所有的过程中,A、B、C上面的碟子情况一定是小盘子在大盘子上面。一共需要 2^n-1 次才可以移动完毕

汉诺塔问题(又称河内塔问题)是根据一个传说形成的一个问题:

有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:

1,每次只能移动一个圆盘;
2,大盘不能叠在小盘上面。

提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须尊循上述两条规则。

问:如何移?最少要移动多少次?

最早发明这个问题的人是法国数学家爱德华·卢卡斯。有一个传说是这样的:印度某间寺院有三根柱子,上串64个金盘。寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子;预言说当这些盘子移动完毕,世界就会灭亡。这个传说叫做梵天寺之塔问题(Tower of Brahma puzzle)。但不知道是卢卡斯自创的这个传说,还是他受其启发。

若传说属实,僧侣们需要264 − 1步才能完成这个任务;若他们每秒可完成一个盘子的移动,就需要5846亿年才能完成。整个宇宙现在也不过137亿年。

这个传说有若干变体:寺院换成修道院、僧侣换成修士等等。寺院的地点众说纷纭,其中一说是位于越南的河内。另外亦有“金盘是创世时所造”、“僧侣们每天移动一盘”之类的背景设定。

佛教中确实有“浮屠”(塔)这种建筑;有些浮屠亦遵守上述规则而建。“河内塔”一名可能是由中南半岛在殖民时期传入欧洲的。

解法
许多的河内塔玩具都有 8 个碟子(disks)。在初学者看起来似乎不太可能有解,然而其算法是相当简单的:

任意初始结构的解法
为了从任意初始结构中找寻最佳解,其算法可以一般化如下:

以 Scheme 语言表示:

; Let conf be a list of the post