• 汉诺塔通项公式


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

    1. 问题背景:有A,B和C三根柱子,开始时n个大小互异的圆盘从小到大叠放在A柱上,现要将所有圆盘从A移到C,在移动过程中始终保持小盘在大盘之上。求移动盘子次数的最小值。
    2. 变量设置:n为圆盘个数,H(k)为n=k时移动盘子次数的最小值。
    3. 递推公式: H(k)=2H(k-1)+1。
    4. 通项公式:H(k)=2^k-1。
    5. 证明

    (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

  • 相关阅读:
    基于express框架的Token实现方案
    书籍整理
    openfire4.0.2开发环境搭建(windows)
    Express4.x动态的销毁或者替换中间件(app.unuse)
    mysql学习笔记(三)----函数
    mysql学习笔记(二)----数据类型
    mysql学习笔记(一)----建表操作
    Windows-mysql5.7安装
    JavaScript学习笔记–(new关键字)
    n枚硬币问题(找假币)
  • 原文地址:https://www.cnblogs.com/cszlg/p/2912621.html
Copyright © 2020-2023  润新知