»  數學  2011-04-18 递归分析与河内塔

递归分析与河内塔            江铭辉      五梦网

 一、           河内塔问题(Towers of Hanoi Problem
 
古印度有一个很有趣的传说,在伯那尔斯(Benares)的一座大寺庙里,有一栋被称为是世界之中心点的楼阁,它的下面有一块黄铜制的方形盘子,盘子上竖立着三根钻石制成的棒子。在开天辟地的时候,万能的上帝波罗摩(Brahma)在其中一根钻石捧上放置了六十四个大小都不相同的金圈,这些金圈是依大在下小在上顺序地迭放着,叫河内塔。古印度人也称它为梵天培(Towers of Brahma)。上帝所颁下的意旨,是要庙里的婆罗门和尚们将这六十四个金圈移到另一根钻石棒上,不过,在移动这些金圈时,有两项规则:第一是每一次只能移动一个金圈;第二是在移动的过程中,较大的金圈不能放在较小的金圈上。(图)
  
图:传说河内塔问题如果解决,全世界就会毁灭
 
当这件工作完成后,也就是说,这六十四个金圈都已按照上面两项规则移到另一根钻石棒后,这个梵天塔寺庙就一切都会化为灰烬,接着将会是一声晴天霹雳,然后,整个世界就会消失了。
若传说中的确有其事,生活在地球的人们有一天,伯那尔斯(Benares)寺的和尚,完成上帝的指示,全世界的人岂不都完蛋。
 
让我们算算看这件事会不会发生,下面我们将会证明,根据那两项原则,同时,婆罗门教徒在搬动金圈的过程中,所有的步骤都遵守那二大原则没有错误,那么,他们所需要搬动的次数共需2641次,即18,446,744,073,709,551,615次。如果这些和尚们没有片刻休
息地每秒钟搬动一次,那么,他们要完成这件工作所需的时间超过5840亿年。这个惊人的数字实在很大,所以,读者们,不要杞人忧天,放心地上床睡觉吧!
 
二、           递归分析
 
1.数列:
 
我们如何算出婆罗门教的僧侣们依天帝的指示来完河内塔游戏,总共需移动2641次呢?要解决这个问题非借重数学上的递归分析不可,首先我们介绍数列。
读者都非常熟悉下面的一组等差级数:
123………n………
a11a22a33………ann………
这个数列我们可以用下列数列来表示,即:
a11a2a211a3a311………anan 11………
 
在举一个等比级数的例子,如下:
212223………2n………
设:
a121a222 a323………an2n………
我们亦可以这样表示,即:
a121a2221×2 2 a1a3231×22 a2………an2n1×22 an1
 
2.递归律的定义
 
所谓递归律是指:
假设一个数列a1a2a3………an………,对于任意nan可以用一个或多个ai的式子来表示(i小于n),称为递归律,如123………n………的等差级数,an可以用an 11来表示,212223………2n………的等比级数,an可以用2 an1来表示。至于费波那契级数(0112358132134……),an可以用an 1an 2来表示。
 
三、           河内塔问题的解决
 
了解递归律后,我们就用它来算出河内塔问题及所需次数。
我们先从只有一个金圈开始着手:
假设三根钻石棒分别为ABC棒,并假设金圈开始时,放在A棒上,现在要搬到C棒上,同时金圈由小至大依序编以123……64的号码。
 
1.     如果金圈只有一个,则将它从A棒搬到C棒,只需搬动一次,我们记为a11;如图1a(刚开始)、图1b(从A棒搬到C棒)。
 
 
图1a:刚开始
 
图1b:从A棒搬到C棒
 
图1:金圈只有一个,则将它从A棒搬到C棒,只需搬动一次。
 
2.     如果金圈有二个,则我们需要依下列顺序来搬动3次搬动,才能得到所希望的结果(如图2a:刚开始、2c2d),我们记为a23
1)将1号金圈由A棒搬到B棒(图2b
2)将2号金圈由A棒搬到C棒(图2c);
3)将1号金圈由B棒搬到C棒(图2d);
 
图2a:刚开始
  
图2b:将1号金圈由A棒搬到B棒
 
图2c:将2号金圈由A棒搬到C棒
  
图2d:将1号金圈由B棒搬到C棒
图2:金圈有二个,则将它从A棒搬到C棒,要三次。
 
3.     如果金圈共有三个,则搬动次数就会增加,我们将各个步骤列出如下,总共搬了7次,我们记为a37
 
(1)   1号金圈由A棒搬到C棒(图3b
(2)   2号金圈由A棒搬到B棒(图3c
(3)   1号金圈由C棒搬到B棒(图3d
(4)   3号金圈由A棒搬到C棒(图3e
(5)   1号金圈由B棒搬到A棒(图3f
(6)   2号金圈由B棒搬到C棒(图3g
(7)   1号金圈由A棒搬到C棒(图3h
  
 
图3a:刚开始三个金圈全部放在A棒
 
图3b:将1号金圈由A棒搬到C棒
 
图3c:将2号金圈由A棒搬到B棒
 
图3d:将1号金圈由C棒搬到B棒
 
图3e:将3号金圈由A棒搬到C棒
 
图3f:将1号金圈由B棒搬到A棒
 
图3g:将2号金圈由B棒搬到C棒
 
图3h:将1号金圈由A棒搬到C棒
图3:金圈有三个,则将它从A棒搬到C棒,要七次。
 
如此我们就得到我们所希望的结果。因此总共要搬动7次。即a32317
 
从上面有关三个金圈的讨论,我们可以猜到64金圈的搬动,势必大费章,将它们逐步搬动并加以记录,是件麻烦的事,像这样问题,递归分析及递归律的威力,就显现出来。使用这个方法时,我们不必再局限于64这个数字,而假定A棒的金圈共有n个,并以an,表示将这n个金圈由A棒搬移到C棒所需的次数。因为在搬移工作完成的时候,第n号金圈必须从A棒的最下面搬移到C棒的最下面;而完成搬动之前,A棒上必须只剩下第n号金圈而C捧上则须是一个金圈都没有;换言之,在将第n号金圈由A棒移到C捧之前,前面那n1个较小的金圈必须按顺序地迭放在B上时,才将第n个金圈由A棒搬移到C棒,在完成神明的指示,将64个金圈由A棒搬移到C棒,我们的构想如下:
 
(1) 1n1号等n1个金圈由A棒移到B棒(如图4b);
(2) 将第n个金圈由A棒移到C; (如图4c)
(3) 1n1号等n1个金圈由B棒移到C棒(如图4d)。
  
图4a:刚开始n个金圈全部放在A棒
 
图4b:将1至n-1号等n-1个金圈由A棒移到B棒(即an-1次)
 
图4c:将第n个金圈由A棒移到C棒(只需搬动一次)
 
图4d:将1至n-1号等n-1个金圈由B棒移到C棒(即an-1次)
图4:将n个金圈由A棒移到C棒的步骤。
 
    完成(1)的步骤,需an1步,完成(2)的步骤仅需1步,完成(3)的步骤,需an1步。
因此,将n个金圈由A棒搬移到C棒所需的次数等于2 an11。亦即,
an2an11
因此:
 
a00(没有金圈,无需搬动),a11(只有一个金圈,只需搬动一次),a=3(只有二个金圈,只需搬动三次),a=7(只有三个金圈,只需搬动七次)
接下来是:a415a531a=63a=127,……an2an11
a2221a3231a4241a5251a21a21…………an2n1
 
因此若有64个金圈,则:
A64264118,446,744,073,709,551,615

網站負責人

會員作品

最新消息

意見箱

忘記密碼

會員作品

數學

化學

生物(健康)

物理

氣象與地震

環保與能源

工程

花的故事

國旗、國徽

萬事起源

幽默與趣譚

傳說與神話

佛教、道教

基督教、天主教

股票(財經)漫談

財經資訊

商場策略

投資、理財

你知道嗎?

似是而非?

你夠聰明嗎?

你該怎麼辦?

科學家

文學家

藝術家

台灣名人

名人軼事

名人幽默

政治與軍事

歷史不會倒退

談諾貝爾精神

論六道輪迴

历史不会倒退(简体)

谈诺贝尔精神(简体)

论六道轮回(简体)

世界文選

世界寓言

中國文選

中國寓言

偵探小說