欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

证明并推导汉诺塔(河内之塔)问题公式

发布时间:2025/7/14 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 证明并推导汉诺塔(河内之塔)问题公式 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
本文链接:http://www.cnblogs.com/xxNote/p/3965739.html   第一次遇到汉诺塔问题时我瞬间就被搞蒙了之后果断扔下不管了,今天再次遇到这个问题被搞蒙again,在网上搜了好久愣是没让我找到证明汉诺塔问题可解和推导公式过程的资料,于是花了几个小时(谁让咱不太聪明呢,嘿嘿),最后终于想通了,记录下来希望对像我一样不聪明的人有所帮助。

证明可解汉诺塔问题:

我用的是数学归纳法,假设圆盘的个数为n,圆盘编号从上到下依次为1,2,3,4,……n,证明如下

①当 n = 1 时,从 A 移动到 C 显然能够完成,设需要移动的次数是a1

    

②当 n = 2 时,由①可知从把 1 号盘子从 A 移动到 B能够完成(B 和 C 是等效的)此时移动次数为a1

之后把2号盘子移动到C上面此时移动次数为a+ 1。

这时把1号盘子从B移动到C和①是等价的,

移动后总的移动次数是a= a+ 1 + a1

③当n = 3时,由②可知移动成下图的效果是可以实现的,

此时移动的次数是a2,接着把3号盘子移动到C上面

此时移动的次数是a+ 1,这时把1和2号盘子移动到C上面(移动过程中3号盘子始终不会动)和②等效的,移动完成之后如下

移动的总次数是a= a+ 1 + a2

④当n=4时,由③可知移动成下图的效果是可以实现的,

此时移动的次数是a3

把4号盘子从A移动到C

此时移动的次数是a+ 1

接下来把123号盘子从B移动到C的过程又和③等效了移动之后如下

移动的总次数是a4 = a+ 1 + a3

假设当n= k时,从A移动到C是可以实现的,那么当n=k+1时,可以移动到A上面只剩k+1号盘子,B上面依次是1,2,3,.....,k号盘字,此时移动次数是ak  

把k+1号盘子移动到C上面,这时移动次数是ak + 1

接下来和n=k时移动过程等效,移动完成后移动总次数是ak+1 =  ak + 1+ ak

 

可以得知移动k+1个盘子需要的次数与移动k个盘子的次数之间的关系是:

ak+1 =  a+ 1+ ak = 2ak + 1

所以ak+1 + 1  = 2*(a+ 1)【这是个等比数列高中学过的】

即a+ 1 =  (a1 +1)* 2n-1 = 2n 因此ak = 2n - 1

至此,证明完毕。

转载于:https://www.cnblogs.com/xxNote/articles/3965739.html

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的证明并推导汉诺塔(河内之塔)问题公式的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。