不完全归纳法来解汉诺塔问题
来源:互联网 发布:网络层作用 编辑:程序博客网 时间:2024/05/11 00:59
汉诺塔的问题解决如下:
1)如果有一个盘子,直接从A移到C即可。
2)如果有n个盘子要从A移到C,B作为辅助。问题可以转化为,先将上面n-1个从A移动到B,C作为辅助,然后将第n个从A移动到C,最后将剩余的n-1个从B移动到C,A作为辅助。
假设圆盘的个数为n,圆盘编号从上到下依次为1,2,3,4,……n,证明如下
①当 n = 1 时,从 A 移动到 C 显然能够完成,设需要移动的次数是a1,此时显然a1等于1.
②当 n = 2 时,由①可知从把 1 号盘子从 A 移动到 B能够完成(B 和 C 是等效的)此时移动次数为a1。
之后把2号盘子移动到C上面此时移动次数为a1 + 1。
这时把1号盘子从B移动到C和①是等价的,
移动后总的移动次数是a2 = a1 + 1 + a1。
③当n = 3时,由②可知移动成下图的效果是可以实现的,
此时移动的次数是a2,接着把3号盘子移动到C上面
此时移动的次数是a2 + 1,这时把1和2号盘子移动到C上面(移动过程中3号盘子始终不会动)和②等效的,移动完成之后如下
移动的总次数是a3 = a2 + 1 + a2
④当n=4时,由③可知移动成下图的效果是可以实现的,
此时移动的次数是a3
把4号盘子从A移动到C
此时移动的次数是a3 + 1
接下来把123号盘子从B移动到C的过程又和③等效了移动之后如下
移动的总次数是a4 = a3 + 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 = ak + 1+ ak = 2ak + 1
所以ak+1 + 1 = 2*(ak + 1)【这是个等比数列高中学过的】
即ak + 1 = (a1 +1)* 2n-1 = 2n 因此ak = 2n - 1
至此,证明完毕。
- 不完全归纳法来解汉诺塔问题
- 归纳法之名人问题
- 空汽水瓶问题之数学归纳法
- 直线分割平面问题(数学归纳法)
- 罗素的火鸡问题:互联网归纳法---TOMsInsight 2014.08.27
- 第二数学归纳法:硬币问题和堆垛游戏
- Android应用不完全退出问题
- 数学归纳法
- 数学归纳法
- 数学归纳法
- 数学归纳法
- 归纳法浅析
- 关于DP问题的不完全总结
- 我的QT编程问题不完全统计
- 卸载VS2005不完全出现的安装问题
- 复制不完全和自我赋值问题
- 浅谈安卓的不完全退出问题
- 关于quartus 11.0破解不完全的问题
- 编写Qt Designer自定义控件(三)——给自定义控件添加属性
- 安迪-比尔定律
- 插入大量数据速度慢的解决方法:批量插入
- Bagging v.s. Boosting
- 数据库自定义函数(date和utc时间相互转换)
- 不完全归纳法来解汉诺塔问题
- 线性表的基本操作及其应用
- 提升搬瓦工VPN速度
- 判断奇偶性
- Codeforces Round #445 (Div. 2 886D
- LINUX与SHELL编程
- FPGA资源平民化
- Collections对List集合中的数据进行排序
- 在Java中用DatagramSocket实现UDP协议编程