汉诺塔:闪烁在数学和心理学交汇之地奇妙问题

"当 64 金片移动完成时宇宙会在一瞬间闪电式毁灭. "

翻译小组成员介绍: 向海飞

武汉市人,2002年华中理工大学应用电子技术专业本科毕业。现在洛阳工作。

文章: plus.maths.org/content/tower-hanoi-where-maths-meets-psychology

译者: 向海飞    校对: 向海飞

数学家和心理学家们的研究鲜有交集,即便有,也难想象其中有汉诺塔问题会闪烁其中。然而,汉诺塔问题在这两个领域都很有吸引力。心理学上,它有助评估一个人的认知能力。数学上,它展示了大量优美特征,带你直面惊人棘手的待解难题。

其游戏规则直截了当。有三根桩和一些碟片(最早是八个),碟片按照大小顺序叠在其中一根桩上,最大的碟片放在最底部。你的任务是把整叠碟片移动到另一根桩上,一次只许移动一张,期间不许大碟压小碟。

数学家安德里亚斯·M·欣茨(Andreas M. Hinz)从数学和心理学的角度来看待这款游戏。他即将出版一本关于汉诺塔游戏的书,而且他与心理学家合作开发了一种评估病人的新工具。他解释说,汉诺塔问题对心理学家来说如此有趣缘于其简洁性。“这个游戏很容易解释,你可以看到人们在思考,”他说。“(被试人员)在实验组织者面前做动作,这样你就能看清他尝试的每一步、每一个策略。这就是心理学家如此喜欢它的原因所在。”

这个游戏特别适用于评估人们的任务规划和任务细分能力:要移动整个塔,先得移动塔的顶端,同样的规则也适用于后续子问题。修改问题也容易:可以添加更多碟片,或者规定新的开始和结束条件,比如说不让所有碟片最终堆叠在一个桩上。事实证明,这两种特性:游戏的递归特性及其可变性,也引出了一些非常有趣的数学问题。

游戏规划

The Game Plan

观察游戏结构的最佳方法是绘制网络或图形,显示所有可能的构图和移动。假设用三张碟片和三根桩来玩这个游戏。将碟1、碟2和碟3标上序号,其中碟1最小, 碟3最大。也为桩1,桩2和桩3打上标记。现在假设碟1和碟3在桩1上,碟2在桩3上。使用三元组(1,3,1)对这种情况进行编码。三元组中数值的位置编号对应于碟片编号,数值表示该碟片所在的桩。因为已知必须按大小顺序排列,所以在哪根桩上放置几号碟片就不会搞混。因此任一合法的碟片码放方式都可以明确地以有序三元组来编码。

连接各状态转移节点

现在在纸上把每个三元组画到圈内。如果单步移动碟片能够从一个圈转移到另一个圈,则将二者连起来。例如起始状态(1,1,1)(所有碟片在桩1)连到了(2,1,1)(碟1在桩2,其他碟都在桩1)和(3,1,1)(碟1在桩3,其他碟都在桩1)上。总共有 3³=27种可能存在的状态。它们构成如下状态转换图:

汉诺塔游戏的状态转移图 H3

这张图叫做汉诺塔游戏状态转移图,以H3表示。下标3表明游戏中有3个碟子。

有了状态转换图就很容易描述某人的游戏过程。“心理学家热衷于使用状态转移图,因为可以用它画出被试者的动作序列,”欣茨解释道,“你能从中轻易看出他有没有做出最优操作,或者,如果没有,他在哪里遇到问题,在哪里长时间思考等。因此可以从个人或众人的测试结果中掌握许多信息,假如你把众人的些操作过程图叠加到一起来看的话。”

玩3张碟子的汉诺塔游戏十分简单,那么4碟、5碟、6碟或任意n碟时情况如何呢?从转移图来看答案非常漂亮:4碟子汉诺塔游戏的状态转移图H4中包含3个H3图,每个H3图与其他两个H3图都由单边相连。

4碟子汉诺塔游戏的状态转移图H4中包含3个H3图

类似地,H5图由3个H4图构成,H6图由3个H5图构成,以此类推。这是由游戏的递归特性决定的:如果忽略最大的碟子,n+1碟汉诺塔游戏就变成了n碟汉诺塔游戏。比如说在4碟汉诺塔游戏中,最大的碟4在桩1,对余下3张碟的任何合法操作,也同样是忽略碟4后3碟汉诺塔游戏中的一个合法操作。因此,如果看H4图中碟4在桩1的状态节点(这些状态节点的标签以1结尾),会看到一个H3图。类似地,碟4在桩2时、碟4在桩3时,会分别看到各自对应的H3图。

如何在这些状态转移图上移动?若想移动碟4,必得其他3碟同在另外两桩之一上面才行。每份H3图中都有2个节点对应此种情况(分别表示另外两桩之一上有全部剩余碟子),从任一H3图出发分别有一条边通往其他两个H3图(代表碟4移动)。因此各H3图被两两分组并联通。同理,当n为整数时,Hn+1图中包含3个Hn图。

2012年7月,在克拉科夫(Krakow)的欧洲数学大会(European Congress of Mathematics)上,欣茨在介绍他的书《The Tower of Hanoi — Myths and Maths》(汉诺塔——神话和数学)

如果已经掌握了解决汉诺塔游戏的方法,那么增加碟子数并不会相应加大游戏难度。但若规定:游戏开始和结束时,并非所有碟子都以塔式叠于同一根桩上,那么事情就复杂了。“此时游戏变得相当困难,”欣茨说。“心理学家在测试中使用了这种变体游戏,但他们对其结构理解不深。我们帮助其建立了这种图表式的数学模型,使得可以用数学方法分析游戏结构。”

比如,通过状态转移图可以立即看出,无论怎样规定起止条件,无论用多少碟子,总是可以找到游戏答案。因为很容易从递归结构中推断出每个Hn图都是联通的:任何两个节点之间都有通路。

但是最小移动次数的最优解怎样求呢?一般的起止条件是所有碟子都在一个桩上,因此可以算出最小移动步数是2n-1。这也是最糟的:任意起止条件下,最小移动步数至少是2n-1。可以用数学归纳法证明:首先证明该公式对于初值n=1成立,然后证明如果公式对n成立则必定对n+1也成立。(自己证明试试,或看看这个证明)plus.maths.org/content/optimal-solution

三角形连接

Triangle Connections

数学家发现,增加碟子的数量会引发一些有趣的问题。假设游戏中有无数个碟片,那么状态转移图会是怎样的?好吧,看看下面的图片。

谢尔宾斯基三角形Sierpiński's triangle

这便是谢尔宾斯基三角形。通过另一种无限递归过程就能生成它。从一个(填满的)等边三角形开始,去掉其三条边的中点的连线所围的倒三角形(只移走该倒三角形的内部而留下其三条边)。现在剩下了3个填满的等边三角形。同样地,再从这3个三角形中逐一移除其各自的中心倒三角形,于是便剩下9个三角形。继续进行,总是从剩余的各个三角形中移除其中间倒三角形,不断重复进行。最终你会得到谢尔宾斯基三角形。

谢尔宾斯基三角形是最著名的分形之一。它是自相似的:任何一个三角形不管它有多小,如果放大其内部,你看到的都和整张图完全一样。谢尔宾斯基三角形属于一个介于相邻维度之间的奇怪世界:它比光滑的一维曲线维度更高,但面积是零,所以也就不是二维对象。数学家们推广了维度的概念,以抓住此类复杂事物的本质。从广义的维度概念来看,谢尔宾斯基三角形的维度是log3/log2≈1.585。

当逐渐增加汉诺塔游戏中的碟子时,对应的状态转换图经过适当缩放,看起来就越来越像谢尔宾斯基三角形。当n趋于无穷时,得到的图形和谢尔宾斯基三角形的结构是一样的。

它与数学家喜欢的另一种三角形:帕斯卡三角形,有着同样有趣的联系。(我们不会在这里定义它,如果你还没见过它,这里有个很好的解释[1])如果取帕斯卡三角形的前2^n行,并连接水平和对角相邻的奇数,那么得到的图和汉诺塔Hn图结构完全一样。

[1] mathforum.org/dr.math/faq/faq.pascal.triangle.html

帕斯卡三角形的前八行中相邻的奇数项相连

这种联系不仅漂亮而且实用。在某个领域内难以证明的结果,在其他领域内或许易于证明,于是就可以进行问题转化。例如,假设你在谢尔宾斯基三角形中旅行,但是从未走出分形之外。那么两点之间的平均距离是多少?没有人能够回答这个问题,直到欣茨用汉诺塔状态转移图来计算它:结果是466/885(假设谢尔宾斯基三角形最外层的边长是1)。

加桩

Adding Pegs

增加碟片的情况讨论够多了,增加一根桩会怎样呢?游戏本身变得更容易了,因为有了更多空间来移动碟子。但这些图表也失去了它们的整洁结构。现在有更多的碟子组合以让你移动最大碟片——小的碟片不再需要被堆在一根桩上了。

这意味着,最大碟片在桩1的状态图,和最大碟片在桩2的状态图之间的连接边不止1条,因此使得整体状态图更复杂。“4根桩的状态转移图通常不再是平面结构,”欣茨说。“这意味着,你不可能把它们画在一张纸上而不让边交叉。这得要3个维度才行。我们还不能很好地理解这些图表,因为它们紧密地交织在一起。”

欣茨和书的共同作者在一起。从左到右:Ciril Petr, Andreas M. Hinz, Sandi Klavžar和Uros Milutinović

这种复杂性意味着看似简单的问题可能难以解决。例如,没人知道在正常起止条件下,最短解决方案有多长。有一些策略策略可以解决多桩难题,著名的弗瑞姆-斯图尔特猜想(Frame-Stewart conjecture )声称这些策略是最优的。但是,尽管这个猜想已经有70多年的历史了,但这个问题还没有解决。在计算机的帮助下,它的正确性已经被证明在30个碟子之内是正确的。

欣茨是一位数学物理学家,但他迷恋汉诺塔游戏纯属消遣。他说:“与图论专家---他们是我在这本书的合著者---和心理学家之间的合作非常吸引人。”他与心理学家一起制作的评估工具现在正在被使用,例如测试患有痴呆症或中风的人,看看大脑的哪些区域受到了损伤。

它不仅仅有用。“数学家伊恩·斯图尔特(Ian Stewart)曾经说过,人们对数学很感兴趣,因为它很有趣,很漂亮,而且很有用。”欣茨说。“但我想补充第4点:人们喜欢数学,因为它令人惊奇。”作为一个数学对象,汉诺塔游戏当然符合所有这4点的要求。(完)

「予人玫瑰, 手留余香」感谢支持!

(0)

相关推荐

  • 如何玩八层的汉诺塔?

    8层汉诺塔共有: 2^8 - 1 = 255个步骤 以下是移动的过程:(说明: A表示第一个柱子   B表示第二个珠子  C表示第三个柱子  -->表示盘的移动方向) 对于汉诺塔问题的求解,可以 ...

  • Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏

    Py:递归求解汉诺塔,简单的几行编程可以搞定很高层的三柱汉诺塔游戏 输出结果 核心代码 def hanoi(n,x,y,z): if n==1: print(x,'--→',z) else: hano ...

  • 汉诺塔问题,五个盘子具体走法

    我移了三盘的和四盘的,就是推不出五盘的...笨嘛...等指教 1个回答 满意答案 fatso1118 推荐于 2017.12.15 五个柱子!分别为1号 2号 3号 五个盘子 A B C D E 这样 ...

  • 汉诺塔问题的两种解法(1)

    汉诺塔是一种益智玩具,源自古老的印度.如图1.图2及图3所示,有三根柱子,若干个大小不等的圆盘按顺序依次叠落在起点(左侧)的柱子上,通过多次移动后,全部圆盘要叠落在终点(右侧)的柱子上.移动必需遵守两 ...

  • 修订 | 汉诺塔:闪烁在数学和心理学交汇之地奇妙问题

    2018.9.16 修改了文章一处公式错误以及几处排版瑕疵 2018.9.17 修改文章中一处公式错误, 非常感谢译者 @向海飞 指正! "当 64 金片移动完成时宇宙会在一瞬间闪电式毁灭. ...

  • 汉诺塔的递归问题

    gzqldz9t32013.05.25 看书还是不怎么理解,当盘子为4个时候的,怎么移动,例子都是3个 gzqldz9t3 采纳率:53%    等级:11 已帮助:16112人 私信TA向TA提问 ...

  • 汉诺塔递归算法流程图的搜索结果

    汉诺塔递归算法流程图的搜索结果

  • C++ - 汉诺塔

    >=FreeMan=<2019-02-22 14:50:27 分类专栏:C++文章标签:汉诺塔C++ 版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链 ...

  • 汉诺塔算法

    汉诺塔算法 ----C++语言递归实现 线上幽灵 2018-04-24 17:19:59 8159 收藏 26分类专栏:算法 文章标签:汉诺塔版权声明:本文为博主原创文章,遵循 CC 4.0 BY-S ...

  • c/c++ 递归实现汉诺塔问题(代码内部运行详细解释)。

    Wings_of_freedom2020-04-23 18:08:14 114 收藏 文章标签:算法c++数据结构 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原 ...

  • 关于C++的递归(以汉诺塔为例)

    关于C++,hanoi塔的递归问题一直是个经典问题,我们学习数据结构的时候也会时常用到, 因为它的时间复杂度和空间复杂度都很高,我们在实际的应用中不推荐使用这种算法,移动n个盘子, 需要2的n次幂减一 ...