THE TOWER OF HANOL :河内塔问题
河内塔问题是由法国数学家爱德华·卢卡斯于1883年发明的,给定一个由8个圆组成的塔,这些圆盘按照从大到小递减的方式套在三根桩柱中的一根上。
我们的目的是要将整个塔移动到另一个柱子上,每次只能移动一个圆盘,并且较大的圆盘在移动过程中不能放在较小的圆盘上面。这位伟大的数学家还赋予一个罗曼蒂克传说,即婆罗贺摩塔的传说,具体就不再一一讲述这个故事,若有人想知道可以去自己百度,下面我们开始讨论这个汉诺塔问题:
我们可以规定 T[i] 表示当有i个圆盘,完成时移动的最少次数是T[i];
显而易见:
T[0]=0;
T[1]=1;
T[2]=3;
T[3]=7; 当i=3的时候最好不要心算了,可以模拟一下的
........
首先的我们可以找规律得出:T[i+1]=2*T[i]+1;(只是对于i(0...3)成立),所以我们需要证明一般式,做出有力的推论,高中时就已经学过,证明某个命题对所有满足n>=n0的整数n都成立的一般方法就是数学归纳法,可是这里我们要怎么去归纳呢?很简单,我们只需要对已经推出来的公式做一下变形,即:
以为:T[0]=0;
所以:T[0]+1=1;
因为:T[i+1]=2*T[i]+1;
所以:T[i+1]+1=2*T[i]+2 -> T[i+1]+1 = 2* (T[i]+1)
是不是很熟悉呢?没错就是我们常见的等比数列了,那么我们再回归到原来的序列可以表示为
T[0]=2^0-1=0;
T[1]=2^1-1=1;
T[2]=2^2-1=3;
T[3]=2^3-1=7;
......
T[n]=2^n-1;
然后就开始一波久违的数学归纳吧:
我们先假设T[n-1]=2^(n-1)-1成立; 则T[n] = 2*T[n-1]+1 = 2*(2^(n-1)-1)+1 = 2^n-1
所以我们的推论是正确的,所以当有n个圆盘时,那么最少的移动次数可以直接套这个公式,2^n-1;
我曾经在一本书上看到对于,那个古老的传说:婆罗贺摩塔问题,当n=64的时候,有2^64-1次移动(大约1.8x10^19)
如果按照每微秒移动一次这个不可能实现的速度,也需要5000多个世纪来完成,那么5000个世纪以后人类是否还存在呢......