汉诺塔:又称河内塔,是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
由于汉诺塔的经典性,趣味性,经常被一些拓展活动拿来当游戏项目。而且它还是一个非常优秀的亲子互动游戏,可以帮助培养孩子的逻辑思维。
经常会有人不得要领,把汉诺塔问题想得很难。甚至看了一些教程之后, *** 作起来效果还是不尽如人意。
相信我,
汉诺塔的问题其实非常非常简单~
问:那么它到底有多简单呢?
答:汉诺塔问题=“要把大象装冰箱总共分几步”的问题
先结合下图↓看一下我们的设定:
①三根柱子从左至右依次为A B C,五颗串珠从小到大依次为1~5。
②把最下面一颗串珠看作大象,上面的几颗串珠看作冰箱门。
PS:
图中是最常见的五层汉诺塔
其实不管几层都是一样玩法,
这里设为汉诺塔层数为n,
冰箱门则永远是汉诺塔上面的m=n-1层。
对,就是这么简单。
把最大的串珠当成“大象”,其他的串珠(冰箱门)作为一个整体“嗖”地一声就过去了,先以这种方式思考,我们离问题的解决就不远了。
现在问题来了:
怎样“嗖”地一声把1至4号串珠从A柱移动到B柱?
即:怎样把冰箱门打开?
发现了没,这其实变成了一道m层汉诺塔的问题。
其中:m=n-1。
继续用把大象装冰箱分几步的思路,
一直推导下去,
最终就得到了一个“两层汉诺塔该怎么玩”的问题,
这下相信你闭着眼也知道怎么搞了。
一般人我不告诉他:
悄悄告诉你,汉诺塔实 *** 的时候有一个规律:
奇偶相关性
思考一下:
怎样成为王健林那样的有钱人?
显然,我们需要设定一个阶段性目标:先挣它一个亿。
好吧,这里其实只是想引出个阶段性目标的概念。
也就是说,
如果你想把5号串珠移动到C柱上,
那你的阶段性目标是:先把3号串珠移动到C柱上。
那怎样把3号串珠移动到C柱上呢?
你的阶段性目标是:先把1号串珠移动到C柱上。
5→3→1,
利用奇偶相关性一推导就知道第一步该怎么走了。
把“阶段性目标/奇偶相关性”和“冰箱理论”结合起来,
其实每一步都知道该怎么走了。
偶数也是同样的道理,
6层汉诺塔的推理就是6→4→2。
想研究得更深的同学 可以看一下汉诺塔的公 式:
这个公式可以这样理解:
其中
代表把冰箱门打开又合上,即完成两次n-1层汉诺塔的过程,冰箱门打开或者合上需要的步数都是一样的,都是完成一个m=n-1层汉诺塔的过程。
+1
代表移动汉诺塔最下面一层,即“把大象装冰箱”的过程。
好啦,到这里汉诺塔的问题就彻底解决了,
有小孩儿的快带着小孩儿一起玩吧~~
将A柱子上最大的盘子直接放到C柱子上,最后只需要依次将B柱子上的盘子依次摆放到C柱子上就OK! 这种重复性的搬运 *** 作用计算机肯定能轻松解决,接下来我们只需要考虑用哪种算法便好。那么该使用哪种算法?稍微读一读题,很明显该题暗示我们的是盘子总数已经知道,只需要全部移到目的地。所以,A柱子上的盘子只会越来越少!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)