汉诺塔通项公式证明

来源:互联网 发布:淘宝买家采集器破解版 编辑:程序博客网 时间:2024/06/05 02:36
汉诺塔通项公式

汉诺塔问题家传户晓,其问题背景不做详述,此处重点讲解在有3根柱子的情况下,汉诺塔问题求解的通项公式的推导。

问题背景:有A,B和C三根柱子,开始时n个大小互异的圆盘从小到大叠放在A柱上,现要将所有圆盘从A移到C,在移动过程中始终保持小盘在大盘之上。求移动盘子次数的最小值。
变量设置:n为圆盘个数,H(k)为n=k时移动盘子次数的最小值。
递推公式: H(k)=2H(k-1)+1。
通项公式:H(k)=2^k-1。
证明:
(1)证明递推公式:首先被移动到C盘的必定是最大的盘子,否则必定违反“在移动过程中始终保持小盘在大盘之上”的规定。既然要将最大盘移动到C,此时最大盘之上必定没有任何盘子,亦即它独自在一根柱子上,要做到这点最优做法当然是先把较小的n-1个盘子由A移动到B,剩下最大盘独自在A。将n-1个盘由A移动到B花费的最少次数为H(n-1)。此时再将最大盘由A移动到C,此时移动总次数为H(n-1)+1。接着把剩下的n-1个盘由B移动到C,花费的最少次数当然也是H(n-1)。于是得到总移动次数2H(n-1)+1.证得H(k)=2H(k-1)+1。

(2)推导通项公式。由H(k)=2H(k-1)+1得H(k)+1=2(H(k-1)+1),于是{H(k)+1}是首项为H(1)=1,公比为2的等比数列,求得H(k)+1 = 2^k,所以H(k) = 2^k-1
原创粉丝点击