- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关于Hanoi塔递推关系的建立及其启示
关于Hanoi塔递推关系的建立及其启示
Hanoi的背景来源
汉诺塔是源自印度神话里的玩具。
上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按大小顺序摞着64片黄金圆盘。
上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 有预言说,这件事完成时宇宙会在一瞬间闪电式毁灭。也有人相信婆罗门至今还在一刻不停地搬动着圆盘。
算法分析
当圆盘个数较少的时候,我们可以通过笔算将所有可能的情况列举出来。
如上图:当n=3时
移动:A—C A—B C—B A—C B—A B—C A—C
移塔的过程:
1.MoveTower(N-1,A,B,C);
分解: 2.把一个圆盘从A柱移到C柱。
3.MoveTower(N-1, B, C, A);
当n3时,该怎样研究呢?其中又蕴涵着怎样的数学思想和规律呢?这正是我们提出这一课题的目的.
探究过程
研究当n较小的时候的情况,通过发现,归纳,总结,得出一般性的规律,进而在数学的严格证明之下推广到任意情况!通过探究,我们得出如下规律:
1.如果只有一个,则把该从移动到目标,结束。2.如果有n个,则把前n-1个移动到辅助的,然后把自己移动到目标棒,最后再把前n-1个移动到目标算法复杂度分析n个的汉诺塔问题需要移动的金片数是n-1个的汉诺塔问题需要移动的数的 2倍再加1。因此:
因此,要完成64个的汉诺塔问题,需要移动的金片数为:
如果每秒移动一次,一年有31,536,000秒,则们一刻不停地来回移动,也需要花费5849亿年的时间;假定计算机以每秒1000万个金片的速度进行移动,则需要花费 58,490年的时间。汉诺塔问题说明了理论上可以计算的问题,实际上并不一定能行,这属于计算复杂性领域的研究内容。通常将可以在多项式时间内求解的问题看作是易解问题,这类问题在可以接受的时间内实现问题求解,将需要指数时间求解的问题看作是难解问题,这类问题的计算时间随着问题规模的增长而快速增长,即使中等规模的输入,其计算时间也是以世纪来衡量的。
4
C
B
A
(0,3,1,2)
2—1
(0,2,3,1)
(1,2,1,3)
1—3
(0,2,3,1)
(0,2,3,1)
(1,1,3,2)
2—3
(2,2,3,1)
(0,1,2,3)
3—2
(0,2,3,1)
(1,2,3,1)
1—3
(0,2,3,1)
(1,1,3,2)
(0,1,2,3)
1—2
(2,1,2,3)
1—3
(3,1,3,2)
h(n-1)=1(n=1)
h(n-1)*2+1(n=2)
文档评论(0)