递归问题-河内塔问题

问题:给定一个由8个圆盘组成的塔,这些圆盘按照大小递减的方式套在三根柱桩中的一根上,目的是要将整个塔移动到另一根桩柱上,每次只能移动一个圆盘,且较大的圆盘在移动过程中不能放置在较小的圆盘上面。

方法:先研究小的情形

引入记号:命名并求解

Tn 是根据卢卡斯的规则将n个圆盘从一根桩柱移动到另一根桩柱所需的最少移动次数

那么T1=1 T2=3 T0=0

考虑移动数量为3时情形,将上面两个圆盘移动到中间的桩柱上,然后移动第三个圆盘,接着再把其余两个放到它上面

考虑移动n个圆盘情形:

把n-1个小的圆盘移动到一个不同的桩柱(移动Tn-1次)

然后移动最大的圆盘(需要一次移动)最后再把n-1个小圆盘移回到最大圆盘上面。(需要另外的Tn-1次移动),这样至多移动2Tn-1+1次就能移动n个圆盘(n>0)

Tn2Tn-1+1 n>0

没有更好的方法,迟早必须移动最大的那个圆盘,当这样做的时候,n-1个小圆盘必须已经在某根桩柱上,而这至少需Tn-1次移动才能把它们放置到那儿,如果不太精明,则移动最大的圆盘可能会多于一次,在最后一次移动最大的圆盘之后,必须把n-1个小圆盘移回到最大的圆盘上面

这也需要Tn-1 次移动,从而

Tn2Tn-1+1 n>0

T0=0

Tn=2Tn-1+1 n>0

连续计算得到规律 T3=2*3+1=7 T4=2*7+1=15 T5=2*15+1 T6=2*31+1=63

看起来有Tn=2n-1 (n≥0)

通过数学归纳法进行证明

T0 =20-1=0

对n>0用归纳法得出

Tn=2Tn-1+1=2(2n-1-1)+1=2n-1

由此得证

总结

  1. 研究小情形,有助于我们洞察该问题
  2. 对有意义的量求出数学表达式并给出证明
  3. 对数学表达式求出封闭形式并予以证明

posted on 2013-08-06 02:33  贤拔剑拨弦  阅读(550)  评论(0编辑  收藏  举报

导航