落日间链接: Stephen Wolfram 作为多重计算系统的游戏和谜题 (2022)
译按
我们知道,复杂系统最重要的特征就是具有涌现行为,简单规则的运用诞生出复杂而难以预测的行为——也就是说,在系统的规则和行为之间存在一种认知鸿沟(Epistemic gap)。
这种认知鸿沟能有多大?鸿沟对面的那个世界究竟有多复杂?我们能够在这些问题上作出某种程度上的比较,甚至量化的计算吗?
除了一种单纯的好奇心在促使我们作出这样的发问,这个问题还有更加现实的意义。复杂系统有很多实际应用。在游戏设计中,游戏规则的涌现行为使得一个游戏具有深度和趣味性;在计算创意学中,创作机制的涌现行为决定了我们在多大程度上可以将这个系统看作是具有想象力的。我们有办法去比较两个游戏谁更有深度,或者两个自动创作系统谁更具想象力吗?
Wolfram的这篇文章,提出了一种可视化和具体探讨涌现行为的丰富程度的思路——也就是多重计算过程(Multicomputational Process)的概念。作者以几个传统的游戏或者说谜题为例,在计算机的强大算力下得以用图(Graph)的方式去可视化这些游戏规则下的可能游玩路线。能够将游戏规则的深度与这些图的许多直观特征挂钩,也得以将一些图论中早已建立的理论迁移到对游戏趣味性的讨论语境下。我们能在这些图上直接「看到」一个游戏有多有趣、有多难、对哪个玩家更有利——更重要的是,这个游戏规则所构建的系统有多复杂。
在我们已经感受到许多看似简单的游戏竟有着如此令人叹为观止的复杂性之后,作者又引出 Rulial space(所有可能的规则以及这些规则的所有应用方式所组成的空间)的概念,让我们去想象可计算的宇宙这个复杂系统,其复杂程度又形成了怎样的一种维度碾压。这足以让一个并没有在仰望星空的人,也在「宇宙的浩瀚」之下哑口失言。
我作为一个AI研究者,虽然很早就接触到诸如基于蒙特卡洛树搜索和加强学习的游戏AI,以及神经网络或遗传算法生成游戏规则之类的计算机技术,但这篇文章让我第一次感叹,我们做的是一些多么大胆的「试图与宇宙通灵」的事情。
厌氧菌
校按
我是在尝试使用 Wolfram 语言和理解其创始人庞大,且业已进入工业化和商业可持续道路的愿景中发现了这篇文章的,我立刻意识到这是非常有趣的和稀有的研究尝试,就如同复杂科学的出现,开始将目光从过大的天体、过小的原子而转向日常生活中如水龙头的水滴,湍流,气体,海岸线这样的难以计算的事物;或许就如痴迷于国际象棋的克劳德·香农一样,我们是不是也可以用科学的视角来严肃且深入地研究一些「很简单」的游戏,就像这篇文章一样?
这不是一件容易的事,就像 Wolfram 试图进行的,实际上是通过人类层面对游戏的思考来类比对照量子力学一样,在这篇文章的例子中,即便有强大,能将大量计算可视化的 Wolfram 语言和框架的帮助,游戏的简单规则中蕴含着的人类语言和思维难以捕捉的可能性,以及「多重计算的不可还原性」也远远足以让人意识到游戏中存在的某些惊人的事物。
游戏设计者到底创造出来的是什么?
存在于时间中的我们「只能」在一次次的重复中穿过这些复杂分支的多路图,用直觉,灵感,积累去捕捉,去做出某些棋子的决定,那四维生物是否能够一瞬间同时看到所有魔方转动的可能性呢?当我们哀叹人类棋手败于AI,但我却觉得,人类作为如此不擅长计算的生物(所谓计算受限的实体 computationally bounded entities),居然能够在这样离散和计算化的博弈中抗衡深度神经网络多少亿万次,和多少参数的计算,这以足以令人惊奇了。
那么,当物理学家和数学家取道于游戏来阐述些什么事时,我们或许应该问:为何游戏总是被取道,游戏为何有能力,去成为这些最深奥知识的中介呢?游戏和它们,和世界的规则,秘密之间是什么关系?在这个意义上,就像是数学是对世界的抽象,而揭示出某些面向,而游戏也总是某种「揭示」,展露出了某种现实,并且成为正在发生的现实。
很多对于计算机的哲学讨论有着离散和连续/模拟和数字的对照,但在物理学的视角下,下降到足够低的层级(甚至是普朗克时间),就像Wolfram在文章开头所说的「物理世界在最低层次上是离散的——就像游戏和谜题一样」,而对于游戏来说,自然最终是离散亦或是连续的并非重点,重要的是游戏制作者如何有能力在不同的层面构建离散和联系的关联,并且以人类视角(Humanizing),将这些语言难以捕捉,计算不可还原的多路过程展开。
这篇文章所展示的计算分析方法,以及对现有游戏的计算性解构,或许也能直接地给游戏设计的思考带来的启发,「当我们发现多路图在某种程度上「难以解码(decode)」时,我们就会得到一个丰富的、吸引人的游戏或谜题」,而也正是一种对于游戏设计所在着手处理的事物的一次正面且直接的计算呈现,游戏设计在做什么?在某种意义上来说,便正是在调校,试验这些不可还原的多路和分支图的形态。
本文得益于 Wolfram 语言的强大计算能力,而却也只能从极简的例子出发,更无涉电子游戏,动作游戏等,不禁令人好奇,如 MOBA 游戏是否能以这种方式分析?人工智能视角下的这些多路图的空间是怎样的?游戏是什么东西「理想模型」?种种这也问题依旧引起我们的好奇,而从此文其中得以一窥的错综复杂,大概也正是游戏之难以言说的缘故吧。
* 非常开心能够与厌氧菌再再次合作,本篇超长文章的翻译要仰仗于她的耐心与细致与学识,欢迎更多人关注她关于计算机创意学,赛博文本,涌现叙事的宝藏菌群反应器
叶梓涛
落日间
Stephen Wolfram

斯蒂芬·沃尔夫拉姆(Stephen Wolfram)是 Mathematica,Wolfram | Alpha 和 Wolfram 语言的创始人,《一种新科学》(A New Kind of Science)的作者,Wolfram 物理计划的发起人,以及Wolfram Research 公司的创始人和首席执行官。在四十多年的时间里,他一直是计算思维发展和应用的先驱ーー并在科学、技术和商业领域做出许多发现、发明和创新。
沃尔夫拉姆1959年出生于伦敦,曾就读于伊顿公学、牛津大学和加州理工学院。他在15岁时发表了第一篇科学论文,并在20岁时获得了加州理工学院的理论物理学博士学位。沃尔夫拉姆早期的科学工作主要是在高能物理学、量子场论和宇宙学方面,其中包括一些现在已经成为经典的结果。他从1973年开始使用计算机,迅速成为新兴科学计算领域的领导者。1979年,他开始构建smp - 第一个现代计算机代数系统,并于1981年商业化发布。
为了表彰他在物理学和计算机方面的早期工作,沃尔夫拉姆在1981年成为麦克阿瑟奖学金(MacArthur Fellowship)最年轻的获得者。1981年底,他开始了一个雄心勃勃的科学新方向,旨在理解自然界复杂性的起源。他第一个关键想法是使用计算机实验来研究被称为元胞自动机(cellular automata)的简单计算机程序的行为。这让他对复杂性的起源有了一系列惊人的发现。沃尔夫拉姆发表的论文迅速产生了重大影响,为他称为复杂系统研究的新兴领域奠定了基础。
20世纪80年代中期,沃尔夫拉姆继续他在复杂性方面的工作,发现了计算和自然之间的一些基本联系,并创造了诸如计算不可还原性(本篇中提及)等概念。沃尔夫拉姆的工作带来了广泛的应用,并为复杂性理论和人工生命等计划提供了主要的科学基础。沃尔夫拉姆本人用他的想法开发了一种新的随机生成系统和一种计算流体动力学的新方法——这两种方法现在都被广泛使用。
随着他在复杂系统研究方面的科学工作,沃尔夫拉姆于1986年创办了该领域的第一本杂志《复杂系统》(Complex Systems),并建立了其第一个研究中心。在经历了一段非常成功的学术生涯后——先是在加州理工学院,然后在普林斯顿高级研究院,最后在伊利诺斯州大学担任物理、数学和计算机科学教授——沃尔夫拉姆创立了 Wolfram Research, Inc.。
沃尔夫拉姆在1986年底开始开发Mathematica。Mathematica的第一个版本于1988年6月23日发布,立即被誉为计算领域的重大进步。在随后的几年里,Mathematica的受欢迎程度迅速增长,Wolfram Research 成为软件行业的世界领导者,在技术和商业方面的卓越被广泛认可。从它最初作为一个技术计算系统开始,Mathematica在过去的几年里在范围上急剧增长——在超过30年的过程中,它在许多领域和行业中负责许多重要的发明和发现,以及成为一代又一代学生教育的中心工具。
1991年,沃尔夫拉姆开始把他的时间分配在Mathematica开发和科学研究之间。在20世纪80年代中期工作的基础上,现在又有了Mathematica作为工具,迅速取得了一系列重大的新发现。到了20世纪90年代中期,他的发现使他发展出了一个全新的概念框架,然后在90年代剩下的时间里,他不仅将这个框架应用于新的问题,而且还应用于物理学、生物学、计算机科学、数学和其他几个领域中许多现存的基础问题。
经过十多年高度集中的工作,沃尔夫拉姆终于在他1200页的《一种新科学》一书中描述了他的成就。这本书于2002年5月14日发行,广受好评,并立即成为畅销书。它的出版被视为开启了科学领域具有历史重要性的范式转变,每年都有新的含义出现。《一种新科学》包含或激发了许多具体的发现,包括最简单的逻辑公理系统和最简单的通用图灵机。
基于Mathematica和《一种新科学》的思想,沃尔夫拉姆开始了一个更雄心勃勃的项目:构建一个系统,使世界上尽可能多的知识可以立即计算,并让每个人都可以访问。Wolfram | Alpha在2009年5月的发布被广泛认为是历史性的一步,它为计算和人工智能定义了一个新的维度——现在数百万人每天都依赖它直接或通过智能助手(如Siri和Alexa)计算答案。
2014年,沃尔夫拉姆取得了另一个突破,在 Mathematica 和 Wolfram|Alpha 的基础上创建了Wolfram 语言。基于沃尔夫拉姆在过去三十年中开发的前所未有的深度技术栈,Wolfram语言引入了全尺度计算语言(full-scale computational language)的新概念,它集成了大量关于计算和世界的知识,从而实现计算性描述和自动化的新水平,这可以作为大量基于计算的新领域的基础。
2020年,在近30年发展的思想基础上,沃尔夫拉姆宣布在发现物理学基本理论方面取得突破,并启动了Wolfram物理学计划,以鼓励广泛参与这一雄心勃勃的历史性项目。
stephenwolfram主页
「然后当他开始研究游戏……」
原文链接:点击跳转
译者:厌氧菌
校对:叶梓涛
本文翻译已经获得授权

校注:此外,本文的原文链接中的每一张图都是用 Wolfram 语言进行编程并可以直接复制出源码,你可以在 Wolfram Mathematica 或者是 Wolfram Cloud 这样的编辑器中展开,并且进行计算和生成验证的,甚至进行交互,如下:

Games and Puzzles as Multicomputational Systems
June 8, 2022

日常视角下的多重计算过程
Humanizing Multicomputational Processes
多重计算(Multicomputational)是「Wolfram 物理项目」( Wolfram Physics Project)的核心概念之一,尤其是我们对量子力学的新兴理解的核心。但是,如何才能对从一开始就很抽象的多重计算的概念有一个直观的认识呢?
我相信,一个好的方法是在熟悉的系统和情况中看到它起作用。
我在这里探讨一个似乎特别好的例子:游戏和谜题。
人们可能不会想到,像众所周知的游戏和谜题这样的日常事物会与量子力学这样的形式化理论有任何联系。但是多重计算的观点提供了一个关联。事实上,我们可以把存在「有趣的」游戏和谜题的这种恰好的可能性本身,与多重计算的一个核心现象联系起来,即多重计算的不可还原性(multicomputational irreducibility)。
译注:「多重计算的不可还原性」这个翻译中的「还原」含义类似与「还原论」中的「还原」,有将复杂的事物归结到简单事物的含义
在一个普通的计算系统中,系统的每个状态都有一个唯一的后续状态(successor),而且最终有一个单一的时间线来定义一个计算过程。但在多重计算系统中,关键就在于每个状态可以有多个后续状态——追踪它们的行为定义了一个由时间线程的分支和合并组成的一个完整的多路图(multiway graph)。而关键就在于,这与人们如何思考典型的游戏和谜题直接相关。

给定某个游戏或谜题的一个特定状态,玩家通常必须决定下一步该做什么。他们通常有很多选择可以做,这个时候多重计算的概念就出现了。在一次特定的游戏过程(实例 instance)中,他们会做出一个特定的选择。而多重计算范式(paradigm)的关键,是全局地看待所有可能选择的结果——并产生一个代表这些选择的多路图(Multiway Graph)。
为游戏和谜题构造这样的多路图的做法实际上已经存在了100多年了——通常被叫做「游戏图(game graphs)」 。但随着多重计算范式的出现,现在有一些更一般的概念可以应用于这些结构。反过来,理解这些结构与游戏和谜题的关系可以提供关于多路图新层次的直观和熟悉的理解。
我在这里的具体目标是,使用我们一直在发展的研究多重计算系统的一般方法,来足够系统性地研究一系列众所周知的游戏和谜题。就像是在与日常事物相关的研究中通常会出现的那样,我们会遭遇各种具体细节。虽然这些细节可能不会立即被关联到更大尺度的讨论,但对于为我们提供实际游戏和谜题的现实且可联系的画面来说,它们是很重要的,这也能使我们与多重计算的联系有了一个坚实的基础。
值得一提的是,将游戏和谜题与物理学联系起来的可能性,如果没有我们的「物理学计划」(Wolfram Physics Project,校注:项目的官方文章中的描述:「我认为我们已经找到了一条通往物理学基础理论的道路」),就基本上很难理解。
因为游戏和谜题通常在某种最根本层面上是离散的——特别是在它们涉及离散的可能性分支的方面。而如果我们假设物理学从根本上是连续的,那么就没有理由期待它与游戏和谜题会有联系。但我们的「物理学计划」的一个关键想法是,物理世界在最低层次上是离散的——就像游戏和谜题一样。并且更重要的是,我们的「物理学计划」认为,物理学就像游戏和谜题一样,有离散的可能性可探索。
我在这里讨论的每一个游戏和谜题,在结构和操作(operation)上,一开始都可能显得相当不同。但我们将看到的是,当以一种多重计算的视角来看时,在我们不同的例子中,存在着显著的、几乎是千篇一律的统一性(uniformity)。在文本结尾的部分,我会开始讨论各种重要的多重计算现象如何在游戏和谜题的背景中起作用,在此之前我不会过多地评论这些现象的意义。我也会在最后讨论用简单直接的人类语言对多重计算进行概念化是何等困难——而正是它从根本上导致了游戏和谜题的迷人特性。
井字棋
Tic-Tac-Toe
考虑在一个2×2的棋盘上玩一个简化版的井字棋(tic-tac-toe)(又称「圈叉游戏 (noughts and crosses)」)。
假设 X 先下。那么我们可以下用图来表示可能的棋步:

再考虑下一回合的棋步,就得到:

到目前为止,这个图是一个简单的树结构。但如果我们再玩一个回合,我们会发现不同的分支可以合并,「玩到棋盘填满了为止」,我们会得到一个下图这样的多路图,或「游戏图」:

这个图中的每一条路径都表示一个可能的完整游戏:

根据目前的游戏设定,在任何游戏中可以达到的棋盘局面配置的总数(即图中的节点总数)为35,而可能的完整游戏总数(即从图的根部开始的可能路径数)为24。
如果将该图渲染成3维,可以看到它有一个非常规则的结构:

而现在,如果我们把「获胜」的 2×2 井字游戏局面定义为在一横行中有两个相同的元素,那么我们就可以在这个多路图上标注获胜局面——也就是去掉那些「游戏已经结束」的情况。

多路图的大部分核心结构实际上已经很明显了,即使这在「单人井字棋」这种看似不起眼的情况下,在这种情况下,人们只是在逐步填满棋盘上的格子:

但是,并不那么不起眼的是,存在着引向同样棋盘局面(state)的不同路径。
以不同的方式展示后的这个图(有2^4 = 16 个节点和 4! = 24 条「游戏路径」)具有明显的4维超立方体形式(现在我们没有写出了每个各自中的明确X符号):

对于一个3×3的棋盘,这个图会是一个9维的超立方体,有2^9=512个节点和 9!=362880 条「游戏路径」,以「棋步分层」的形式表示如下:

这种基本结构在「单人1维井字棋」中已经可见,其中「长度为 n」的棋盘的多路图正好对应于一个n维的超立方体。

在这种情况下,不同的棋盘局面的总数就是2n,而不同的「游戏」过程的数量是n!。在第t步,不同棋盘局面(即状态)的数量是二项式系数[n, t](Binomial[n, t]) 。
如果是2个玩家,图会变得稍微复杂一些。

这些图中的状态总数是

当n值趋近无穷时,图中的状态总数达到

译注:如果把上式中的n换成n+1,会发现代入后得到的结果很接近长度为n时的状态数,但将n推向无穷时,n+1可以等同于n。
(注意,对于n=4,其结果与上面讨论的2×2棋盘相同。)当游戏进行到第t步时,不同状态的数量由以下公式给出

译注:上面两个二项式系数相乘

好的,那么标准的2人3×3井字棋游戏呢?
它的多路图在最开始是:

经过两步(即X和O各走一步),图仍然是一棵树(初始状态现在在中心):

三步之后,状态开始可以合并了。

而继续进行全部九步,完整的、有6046个状态的分层图是:

一般来说, 在各个步骤时的连通子图(connected components)的部分的数量如下:
在这个图的层面上,其结果与总共有9方格的2人1维版本完全相同。但是对于实际的2维3×3井字棋来说,还有一个额外的概念:赢得游戏,从而终止游戏。在通常的规则下,当一个玩家在一个水平、垂直或对角线的三个格子上下了棋子时,就被认为是赢了游戏,比如说:

每当达到像这样的「获胜状态」时,游戏就被认为是结束了,因此多路图中的后续状态就可以被删减,而之前的6046个节点图就会变成5478个节点图。

下面是这568个被修剪掉的状态的例子(其中标记了终止游戏的「胜利 」)。

游戏胜利可以发生在不同的步数:从第5步到第9步间都可能有玩家获胜。不同的胜利状态总数如下

(任意步骤中,X有626种可能的胜利状态,O有316种可能的胜利状态)。
在每一个方格都被填满之前,人们无法明确判断一盘棋是否已经以平局结束——只有16种最终的「平局状态」可以达成。

我们可以在完整的修剪过(game-over-pruned)的多路图上标注出胜利和平局的状态。

为了进一步研究这个问题,让我们先看看一个只包括「终局」的子图,这个子图从一个已经填满了4个格子的棋盘开始。

我们在这里看到,从我们最初的棋盘状态开始,

X和O都有可能最后获胜

但在许多这样的情况下,结果在实际胜利发生前一步或更早的时候就已基本确定了——从这个意义上说,除非某个玩家「犯错」,否则他们是有必胜策略的(force a win)。
因此,举例来说,假设现在轮到X了,并且状态是:

那么,只要X按以下方式落子,就能保证获胜:

我们可以通过给多路图中的子图(或实际上的「光锥」)着色来标记这种已经注定的胜利局面:

在游戏最开始,当X下第一步棋时,还没有任何一方的胜利是已经确定的。但只下了一步棋,就已经有可能达到X有必胜策略的局面:

从第一步后得到的状态开始,我们可以看到,两步后有一些棋盘状态,其中O有必胜策略:

走更多步,就会产生更多的这种某一方有必胜策略的棋盘状态:

标注整个多路图,我们就能得到:

我们可以把这个图看作是在表示这个游戏的「解(solution)」:给定任何状态,图中的着色告诉我们哪个棋手可以从该状态中确保胜利,且图中给定了他们可以怎么下来达到这样的状态。
下图总结了每一步棋的可能棋盘状态:


这里我们只是在计算每一步的各种可能状态的数量。但是,能否把这些状态看作是以某种方式分布在「游戏状态空间」(game state space)中的某种东西?
分支图(Branchial Graph)提供了一种可能的方法来做到这一点。某一特定步骤的基本分支图是通过连接在前一步骤中具有共同前置状态的状态对而得到的。对于2人2×2井字棋的情况,我们在连续的步骤中得到的分支图如下:

对于普通的3×3井字棋来说,这个分支图更加复杂。但由于前两步的多路图纯粹是一棵树,这些步骤的分支图仍有一个相当显而易见的结构。(校注:我的通俗理解得到了厌氧菌的鼓励,就是等于是把原来的多路图做垂直剖面,类似你把多簇的花菜剖开,看到每一个段落上的共时的面)

一般情况下,连续步骤下的强连通子图数量如下表:

以及这些通过不同图的结构形态分解如下:

下面是其中一些步骤的典型分支图中子图的更具体的形态:

在某一特定步骤的分支图内,不同的组成部分中可能有不同数量的赢局。

值得注意的是,赢局在各分支图中的分布相当广泛。而这在某种意义上也是井字形游戏不(那么)简单的原因。如果只需知道自己处于分支图的哪个部分,而就能立即知道结果,那么游戏中的「悬念」就会更少。但是在整个分支空间的广泛分布下,「大致知道你在哪里」对确定你是否会赢没有什么帮助。
到目前为止,我们一直在讨论可以达到什么状态,但没有讨论「多经常」会达到这些状态的。想象一下,我们不是在玩一个特定的游戏,而是在每一步都以相同的概率进行每一种可能的下子。井字棋的设置是对称的,在游戏的大部分时间里,每个可能的局面在给定的步骤中出现的概率都是相等的。但是一旦开始有「获胜」,并且有一个「锥形」的「游戏结束剪枝(game-over-pruned)」的状态,那么剩下的状态就不再有相等的概率。
对于标准的3×3井字棋来说,这种情况发生在7步之后,其中有两类状态,其发生的概率略有不同:

在游戏结束时,有几类具有不同概率的最终状态:

而下图展示了这对于游戏的不同结果的概率意味着什么:

并不出乎意料的是,先下的棋手在获胜上有优势。也许更令人惊讶的是,在这种「无策略」的游玩中,平局是比较少见的——尽管如果一个玩家积极地试图阻止另一个玩家,他们往往会迫使游戏走向平局。
我们已经研究了「经典井字棋」和一些特定的变体。但最终还有各种可能的变体。一种来表示任何类似井字游戏的「棋盘」的方便的一般方法是,给出一个「扁平化」的数值列表—— 0 代表空白位置,i 代表玩家 i 添加的一个符号。
在标准的「二维表示法」中,人们可能会有这样一个棋盘

将它扁平化后得到:

然后可以表示出典型的获胜模式:

其中,在每一种情况下,我们都标出了跟获胜相关的「获胜符号」,然后给出它们在扁平化列表中的位置。在普通的井字棋中,很明显,「获胜符号」的位置必须总是形成一个等差数列。而概括井字棋的一个好方法似乎是将 i 的胜利定义为与 i 的符号出现在形成一定长度s的等差数列的位置有关。对于普通的井字棋来说,s=3,但一般情况下,它可以有其他值。
现在考虑一个长度为5的列表(即5个位置的「1维棋盘」)的情况。完整的多路图如下,其中长度为s=3的等差数列的「获胜状态」被标出了。

上图的一个更具对称性的可视化是:

下面是长度为7的1维棋盘和2个玩家的情形的类似结果:

对于每个大小的棋盘n,我们可以计算出任何特定玩家的获胜状态总数,以及总的状态数。当获胜是基于长度为3的算术级数(即s=3)时,其结果是:

这里的两个玩家、n=9(=3×3)的情况与普通井字棋相似,但不是完全一样。
特别是,像这样的状态

在扁平化了之后,也被认为是X获胜的状态,但在普通井字游戏中却不是。
如果我们增加胜利所需的等差数列长度,例如增加到s=4,我们就会得到:

游戏状态的总数没有变化,但正如预期的那样,「获胜的方式更少了」。
但是,假设我们的棋盘完全被填满了。对于小棋盘来说,任何棋手不管怎么下子都可能达不到等差数列,因此游戏必须被认为是平局——正如我们在n=5的情况下看到的那样。

但是,最后发现这是一个与拉姆齐理论(Ramsey theory)相关的结果:对于n≥9,不可避免的是,至少有一个玩家会有「等差数列的胜利」,所以永远不会出现平局——正如下面这些例子所说明的那样:

行进(Walk)和它们对应的多路图
Walks and Their Multiway Graphs
(校注:walk 的翻译作为名词与动词,国内有翻译为途径,但从 Wolfram 写作出发点的构想又是非常经典的 random-walk,即随机漫步或随机游走的问题来源,但用于本文中显得有些过于浪漫化表达,取折中翻译做「行进」)
像井字棋这样的游戏,实际上在每一步都要移动到几个可能的新棋盘状态中的一个——我们可以把它看作是在「游戏状态空间」中的不同「位置」。但是,如果我们不考虑棋盘状态,而只是把我们的状态看作是一个栅格(lattice)上的位置,如:

然后我们看一下这个图中可能的行进路线(walks),现在这个情况下,每一步都可以向4个方向中的任何一个方向走一个单位吗?
从图上某一点开始,1步之后的多路图很简单地就是

这里我们特地布置了这个图形,使得「状态」的位置对应于它们在栅格上的几何位置。
两步之后我们得到:

而更一般的情况下,这个多路图的结构只是「重述」(recapitulates)了栅格的结构。

我们可以把多路图中的路径,看作是代表栅格中所有可能的一定长度的随机行进(Walk)路线。我们可以将该图铺成3D,垂直位置代表可以到达某一点的第一步:

我们也可以像布置井字图的多路图那样布置这个图:

这些「随机行进(random-walk)」的多路图的一个特点是,它们包含循环,记录了「返回已经去过的地方」的可能性。这与井字棋中的情况不同,在井字棋中,每一步都是在棋盘上增加一个元素,而不可能再回到以前的状态。

但是我们可以通过考虑「自我回避的行进路线(self-avoiding walks)」,为行进建立一个类似的「永不回头的规则」,其中任何被访问过的点都不会被再次访问。
让我们首先考虑非常简单的栅格:

现在用红点表示「我们目前到达的地方」,用蓝点表示我们以前去过的地方,并从一个角落开始:

这里只有两种可能的走法,一种是顺时针走,另一种是逆时针走。如果允许从每个可能的位置开始,就会产生一个稍微复杂的多路图:

如果是一个2×3的网格,我们就得到下图:

而 3x3 的网格对应的多路图是:

从中间开始,用不同的布局来画多路图,可以得到:

请注意图中的几个大「洞」的存在,其中每一边的路径基本上是以「相反的方式」到达「同一个地方」。请注意,在有1个蓝点和最多8个红点的2304种可能方式中,这个多路图实际只达到了57种。(从角落开始可以达到75种,从所有可能的初始位置可以达到438种)。
在4×4的栅格里(从角落里开始走),多路图有这样的形态:

或者换一种布局:

其中,共计524288个状态中,有1677个状态最终被访问到了,每一步访问(即图中连续几层的节点数量)的新状态的数量为:

对于一个5×5的网格来说,有89,961个状态能够达到,根据以下情况分布在各个步骤中:

(对于一个有n个顶点的网格,总共有n x 2^(n–1) 个可能的状态,但实际达到的数量总是小得多)。
在讨论行进时,一个明显的问题是关于迷宫的。
考虑下面这个迷宫:

就穿越这个迷宫而言,它等同于在图上「行进」(walking)。

而另一种表示即是:

但就像以前一样,代表所有可能的行进路线的多路图本质上只是「重述」了这个图。这意味着,「解」这个迷宫在某种意义上同样可以被认为是直接在迷宫图或多路图中找到一条路径:

十二面体游戏与其他相关游戏
The Icosian Game & Some Relatives
我们对自我回避的行进路线的讨论,其实与威廉·罗文·汉密尔顿(William Rowan Hamilton)在1857年提出的十二面体游戏(Icosian game)(这与早期的计算机游戏 Hunt the Wumpus 有一定的关系)直接相关。


这个「游戏」(或者更恰当地说,谜题)的目的是在二十面体图形的边上找到一条路径(是的,一条汉密尔顿路径),访问每个节点(并返回到它的起点)。我们可以再次构建一个多路图,代表游戏中所有可能的「移动」序列。
让我们从底层四面体图形的较简单情况开始:

由此我们得到多路图:

而考虑进了四面体图形上所有可能的起始位置得出的「组合的多路图」,给出了一个呈截断的立方八面体形状(truncated cuboctahedron)的多路图:

按照这个图形,我们可以看到,从任何初始状态出发,都有可能达到四面体图形中的每个节点都被访问过的状态。事实上,由于四面体图是一个完全图(Complete graph),它甚至可以保证序列中的最后一个节点将与起始节点「相邻」——这样我们就形成了一个汉密尔顿环(Hamiltonian Cycle)来解决这个谜题。
对于立方体图来说,事情就不那么简单了:

这时从一个特定的状态开始的多路图是:

这时就有13个无法产生进一步行动的状态。

在其中一些情况下,玩家被「堵住」(boxed in)了,没有相邻的节点可供访问。在其他情况下,所有的节点都被填满了。但只有3个最终实现了真正的汉密尔顿循环,即其终点与起始节点相邻。

事实证明,人们可以通过4条不同的路径从多路图的根部到达这些状态中的每一个。这种路径的一个例子是:

我们可以将这一路径概括为原始立方体图的汉密尔顿环:

在多路图中,12条「获胜路径」是

这还可以表示成下图:

如果只保留「获胜路径」,多路图的子图具有对称的形式:

对应于这些获胜的路径的底层立方体图的汉密尔顿环分别是:

对于十二面体图(即原本的二十面体游戏),多路图更大、更复杂。它开始于:

并在11步之后出现了第一次合并(总共529步),最后总共有11093个节点,其中2446个是「终止状态」,不可能再有进一步的移动。下图展示了每个连续步骤中的终止(黄色柱状图)和非终止(蓝色柱状图)状态的数量:

连续的「走上成功之路」的状态比例如下,表明从某种意义上说,该谜题在开始时比结束时更难:

有13个「结束状态」,填补了底层十二面体图的每一个位置,其中3个对应于汉密尔顿环:

从多路图的根部通往最终状态的路径总数(实际上是也就是尝试解谜的总数量)为3120条。其中,有60条路径通向3个汉密尔顿环的最终状态。这些「获胜路径」的一个例子是:

与3个汉密尔顿环结束状态中的每一个对应的基本汉密尔顿环的例子是:

而这展示了通过多路图到达汉密尔顿环终点状态的所有60条路径——从而对应于谜题的解:

实际上,解谜就是在多路图的所有可能性中成功找到这些路径。不过,在实践中——例如在定理证明中——有比直接查看多路图中的所有可能性更有效的方法来寻找「获胜路径」(例如Wolfram语言中的 FindHamiltonianCycle)。但对于我们在多重计算框架中理解游戏和谜题的目标来说,看看这个谜题的解决方案在多路图中是如何布局的是很有用的。
汉密尔顿的十二面体游戏首次引入了图上的汉密尔顿环的概念。但早在1736年,莱昂哈德·欧拉(Leonhard Euler)就在柯尼斯堡桥之谜中讨论了现在所谓的欧拉环(Eulerian cycles)。


用现代术语来说,我们可以把这个谜题表述为寻找一条能够访问一次且只访问一次图中所有边的路径的问题(其中原谜题中的「双桥」已经被额外的节点所取代)。

我们可以创建一个多路图,代表从某一特定顶点出发的所有可能路径。

但现在我们看到,这里的最终状态是:

而由于它们都没有访问过所有的边,所以这里没有欧拉环。为了彻底解决这个难题,我们需要构造一个多路图,从所有可能的底层顶点开始。其结果是一个不相连的多路图,其末端状态也从未访问过底层图中的每一条边(从每个子图中的「层次」数量少于10这一事实可以看出)。

地理游戏
The Geography Game
在地理游戏中,人们有一组词(比如说地名),然后试图将这些词「串起来」,一个词的最后一个字母与下一个词的第一个字母相同。游戏通常在没有人能够想出一个符合规则的、且之前没有使用过的词时结束。
通常在实践中,这个游戏是由多个玩家游玩的。但我们完全可以考虑只有一个玩家的版本。作为一个例子,让我们把我们的「词」作为美国各州的缩写。然后我们就可以构造一个什么词可以接什么词的图:

首先,让我们忽略一个州名是否「已经被使用」的问题。然后,从马萨诸塞州(Massachusetts)开始,我们可以构建一个多路图的开头,给我们所有可能的序列。

十步以后这个图变成了:

或者换一种布局:

假设不允许任何状态重复,下面的图表展示了该图中的路径总数与路径长度的关系。

路径的最大长度是23,有256条这样的路径,88条以TX结尾,168条以AZ结尾。几个这样的路径的例子是:

而所有这些路径都可以用等同于有限状态机(finite state machine)的形式来表示:

顺便说一下,引向最长路径的起始状态是MN——它以2336种不同的方式达到长度24,可能的结尾是AZ、DE、KY和TX。几个例子是:

在从MN开始的多路图的前几步中绘制这些路径,我们得到:

群和(简化的)魔方
Groups and (Simplified) Rubik’s Cubes
我们已经谈论过那些本质上涉及图结构上的行进(Walk)的谜题。一个特别著名的可以用这种方式思考的谜题的例子是魔方。有关的图是由可应用于魔方的变换所形成的群(group)的凯莱图(Cayley Graph)。
译注:群(group)是一个数学术语,指一个集合和一个作用在这个集合的元素上的二元运算。这个集合需要满足其中任意元素存在一个逆元素(inverse),以及存在一个单位元素(identity)。这个二元运算需要符合封闭性(运算结果仍然是集合中的元素)、结合律、单位元(在单位元素上应用该运算得到的仍然是单位元素)的性质。比如所有整数组成的集合和加法就构成一个群。凯莱图(Cayley Graph)是群的结构一种可视化方法。(推荐 3B1B视频 群论与808017424794512875886459904961710757005754368000000000)
作为一个非常简单的类比,我们可以考虑正方形的对称变换群(the symmetry group of the square)(D4),基于镜像反转和90°旋转的操作。我们生成的凯莱图就像一个多向图:通过在每一步应用每个操作。而在这个例子中,凯莱图是:
译注:蓝色箭头表示90°旋转,绿色箭头表示镜像反转

这个图足够小,可以直接看到如何从任何状态到任何其他状态。但是,尽管这个凯莱图有8个节点,从任何一个节点到另一个节点的最大路径长度为3,魔方的凯莱图的节点数量却有

最大最短路径长度为20。
为了了解这样一个事物的结构,我们可以考虑非常简化的「2×2×2 立方体」的情况——只在其角上着色——每个面可以旋转90°。

从上图中的状态开始,多路图的第一步就是(注意,图中的边不是有向的,因为对应的转换总是可逆的):

再多走一步就得到:

完整的多路图(也是由变换产生的这个群的凯莱图——就是S8)有8!=40320个节点(和483840条边)。从一个状态(即凯莱图中的节点)开始,在连续的步骤中达到的新状态的数量是:

图中的最大最短路径(maximum shortest paths)由8个步骤组成,一个例子是:

译注:maximum shortest paths 指的是那些不是任何其他最短路径的子路径的最短路径。比如假设 A-B-C 是A点到C点之间的最短路径,A-B-C-D是A点到D点的最短路径,那么A-B-C就不是一个maxumum shortest path,因为另一条最短路径A-B-C-D包含了A-B-C。
在这两个特定的端点之间,实际上有3216条「测地(geodesic)」路径——这些路径在多路图中分布很广。
译注:「测地」路径指球体结构上两点之间的最短路径。

只挑出测地路径,我们看到有许多方法可以从立方体的一个状态到达它的一个「反节点」(antipodes)。

孔明棋
Peg Solitaire
像井字棋这样的谜题涉及到逐步填满棋盘,而至少从16世纪开始使用的一大类谜题则涉及到从棋盘上移走棋子。典型的规则是棋子能够跳过一个中间的棋子进入一个洞,然后中间的棋子被移除。目标是最终在棋盘上只剩下一个棋子。
这里有一个非常简单的例子,基于一个棋子的T字形排列:

在这种情况下,只有一种方法可以「解开谜题」。
但在一般情况下,有一个多路图:

一个更复杂的例子是「棘手的三角形」(又称「饼干桶谜题(Cracker Barrel puzzle)」)。它的多路图这样开始:

再走几步后,就变成了:

在最终的多路图中总共有3016个状态,其中118个是「死胡同」,从那里不可能有进一步的行动。这些死胡同状态中「最早能达到」的是:

可以达到的「获胜状态」只有4个,而导致这些状态的「终局」是:

从初始状态开始,每一步达到的可能状态的数量如下,其中可以导致获胜的状态显示为黄色:

下图展示了完整的多路图,并高亮显示了「获胜路径」:

在连续的步骤中,能够导致获胜状态的状态的比例如下:

分支图是高度连接的,这意味着在某种意义上,这个谜题直到最后仍然是「均匀混合的(well mixed)」和「不可预知的」:

西洋跳棋
Checkers
孔明棋是一种单人「游戏」。西洋跳棋是一种双人游戏,规则有点类似。
「黑」棋和「红」棋在棋盘上向不同方向斜向移动,当它们相邻时,通过跳过对方棋子来「吃掉 」对方的棋子。
考虑一个相当小的4×4棋盘的例子。
「黑」和「红」的基本走法由下图(注意,4×4棋盘太小,不支持「多跳」):

我们可以立即开始生成一个这个情况下的多路图,基于黑棋和红棋的交替进行:

按照目前定义的规则,完整的161个节点的多路图是:

在这种简单的4×4情况下,「赢」的含义并不完全清楚。但可以说,当对方在下一步棋中不能做任何事情时就赢了。这与多路图中的「死路(dead ends)」相对应。这种情况有26个,其中只有3个发生在红方下一步棋的时候,其余的都发生在黑方的时候:

如前所述,任何特定的游戏过程都对应于多路图中从根状态(root state)到某个终止状态的路径。如果我们看一下这种情况下的分支图,我们会发现它们有许多不相连的子图,这表明对于这个简单的游戏来说,有许多基本独立的「游戏路径」——所以没有多少结果的「混合」。


到目前为止,我们使用的规则没有考虑到跳棋的第二层规则:当一个棋子到达棋盘的另一边时,它就成为一个「国王」,允许向后和向前移动。即使只有一个棋子和一个棋手,这也已经产生了一个多路图——尤其现在图中有了循环:

或者换一种布局(有明确的无向边):

有了两颗棋子(两个玩家轮流),「国王」多路图是这样开始的:

在这个初始棋局下,但不考虑后退的动作,整个多路图就可以简化为:

完整的「国王」多路图在上述条件下也只有62个节点——但包括各种循环(尽管有这么少的棋子并且让黑棋先下,且任何胜利都不可避免地会是黑棋的):

在我们最初的初始条件下的普通+国王的多路图又如何呢?组合图有161个节点来自「前国王」阶段,4302个来自「后国王」阶段——下图给出了最终形式:

(极其简化的)围棋
(Very Simplified Go
完整的围棋游戏是错综复杂的,在任何现实情况下,它的多路图都太大了,我们根本无法明确地生成(尽管人们当然可以想一想是否有有意义的「连续极限(continuum limit)」结果)。然而,为了能对围棋有点概念,我们可以考虑一个非常简化的版本,在这个版本中,黑色和白色的 「棋子」被逐步放在图的节点上,如果一方成功地包围了连成一片的另一方的棋子,游戏就被视作「胜利」。
想象一下,我们从一个由2×2网格组成的空白「棋盘」开始,然后在一连串的「回合」中以所有可能的方式添加黑白棋子。由此产生的多路图是:

每一个在这里没有后继情形的状态都是黑或白方的胜利。
「黑胜」(高亮显示了被包围的棋子)是:

而「白胜」则有:

在这个层面上,我们所拥有的基本上相当于2×2的井字棋——除了后者有一个「对角线」的胜利条件。
在一个3×2的「棋盘」上,多路图的前两步是:

完整的多路图是:

该图有235个节点,其中24个是白方的胜利,34个是黑方的胜利:

在这种情况下,连续的分支图是(图中标明了是哪方胜利):

对于一个3×3的「棋盘」来说,多路图有5172个状态,其中604个是白方的胜利,684个是黑方的胜利。
尼姆游戏
Nim
作为另一个简单游戏的例子,我们现在考虑尼姆游戏(Nim)。
在尼姆游戏中,有k堆物体,每一步中,p个玩家交替从他们选择的任何一个物体堆中去除任意数量的物体。游戏的失败者是被迫处在所有堆中都没有物体的玩家。
从两堆各含2个物体开始,我们可以为这个游戏构建一个多路图:

如果有三堆的物体,这个多路图就变成了:

这些图显示了将物体堆的不同状态相联系的所有不同的可能棋步。然而,它们并没有指出哪位棋手在什么时候移动。加上这点,我们在2-2情况下得到:

而在三个物体堆、每堆有2个物体(2-2-2)的情况下:

尽管这些图看起来有些复杂,但事实证明,对于一个特定的状态何时具有可以保证「对手」输掉的属性,有一个非常直接的标准:只要拿着数字列表,看看这个列表中的数字按比特位取异或(bitwise XOR )之后是否为0。
译注:按比特位取异或指将两个数字转换成二进制之后,比较每一个位是否相同,同为0,异为1,最后得到另一个二进制数。结果可以再与第三个数进行异或操作(同为0,异为1),以1此类推。比如 BitXor[2,2,2] = 11 ^ 11 ^ 11 = 00 ^ 11 = 11 = 2,其中粗体表示二进制数。
标记这些状态,我们得到(译注:下图中用深红色做标记):

在三个物体堆、每堆有2个物体(2-2-2)的情况下,这个分支图序列变成了:

下图展示了一些其他情况:

滑块谜题
Sliding Block Puzzles
这类游戏有很多名字,有很多不同的主题。
但许多谜题本质上都是滑块谜题。
一个简单的例子可能是要求从下面的左图变换成右图:

变换是通过将积木滑入空(较暗)的方块完成的。
这个谜题的一个解是:

可以用一个多路图来表示所有可能的变换:

(注意这4!= 24个可能的状态中只有12个出现在了上图中;像下面这样的状态

是不可能达到的。)
由于滑块总是可以「双向滑动」,所以滑动积木谜题的多路图中的每条边都有一个逆向(inverse),因此,我们就把这些多路图画成无向图。
下面是几种简单的情况:


当我们考虑3x2规模的网格时,情况一下子就复杂起来了:

在3维的表示下这个多路图是:

当所有的积木都不同的时候,人们倾向于得到具有某种球形结构的多路图:

(请注意,在前三种情况下,有可能达到所有30、120、360个可想象的积木排列,而在最后一种情况下,只能达到积木的「偶数排列」,或720个可想象的排列中的360个)。
以及这张图的标记部分展示了从

到达

的路线:

如果有许多相同的积木,通常会形成简单的网格状结构:

而如果只是让一个积木不同,基本上只是在这个网格图中「增加装饰」:

随着「1」和「2」的积木的数量越来越接近于相等,结构就会被填满:

添加第三种类型的积木会迅速导致一个非常复杂的结构:

下图总结了一些多路图的情况:


汉诺塔,等等
Towers of Hanoi, etc.
另一个著名的谜题是汉诺塔(Towers of Hanoi)。
我们可以为它也构建一个多路图。从左边的所有盘子开始,多路图的第一步是:

前进两步就得到:

从而完整的多路图就是(展示的是无向边,以代替成对的有向边):

很容易看出这个多路图的递归结构是如何建立起来的。
下图是2个圆盘(和3根柱子)的「基础情形」:

每增加一个圆盘,多路图中的节点数量就增加3倍,例如,有4个圆盘(仍有3根柱子)。

如果有4根柱子,事情起初看起来更复杂,即使只有两个圆盘:

在三维的可视化下能看出更明显的结构:

下面分别是3个、4个和5个圆盘的结果——「耳朵上的点」对应于所有圆盘都在一个柱子上的状态。

在3根柱子的情况下,最短步骤数的「谜题解决方案」——将所有圆盘从一根柱子移动到另一根柱子——沿着多路图的「边」走,对于n根柱子来说,长度为2n - 1:

4根柱子的情况下,就不再有唯一的「测地路径(geodesic path)」了。

(并且连续的柱子数量下路径长度组成的序列是

或者对于很大的柱子数量n来说,路径长度略低于

那么分支图呢?
对于标准的3个圆盘和3根柱子的情况,我们有:

其中,连续的「时间切片(time slices)」被认为是通过观察上述多路图的连续垂直层次而获得的。
对于4个圆盘的情况,我们实质上得到的「基本上是同样的东西」:

而4根柱子就让问题变得稍微复杂了:

5根柱子的情况也延续了这个趋势:

多重计算视角下的推论和阐释
Multicomputational Implications & Interpretation
我们已经考察了许多游戏和谜题的例子。在每一个例子中,我们都探索了囊括了整个可能行为谱系的多路图。那么,我们的结论是什么呢?
最明显的一点是,如果游戏和谜题在我们看来是困难的——或者说是「有趣的」——它在某种程度上为多路图的显著复杂性所反映。或者,换句话说,当我们发现多路图在某种程度上「难以解码(decode)」时,我们就会得到一个丰富的、吸引人的游戏或谜题。
在玩一个游戏的任何特定实例中,我们基本上是沿着一条特定的路径(与物理学相类似,我们可以称之为「时间路径(timelike path)」)穿过游戏的多路图(或「游戏图」)。并且在某种程度上,我们可能只是做了一个全局性的声明,即游戏图代表了所有这样的路径。
但多重计算范式(Multicomputational paradigm)所建议的是,我们还可以有效地做出更多的局部声明。特别是,在沿着一条时间路径的每一步,我们可以在多路图中「横断地(transversally)」观察,并看到「瞬时分支图」,它代表了我们的路径与「邻近路径」的「纠缠(entanglement)」。
从而,某种意义上说,弄清「下一步该做什么」就是决定在分支空间中「朝什么方向」走。而游戏的困难之处在于,我们无法轻易预知我们「穿越分支空间」时发生了什么。这里有一个与计算的不可还原性(computational Irreducibility)概念的某种类比。沿着一些时间路径从一个状态到另一个状态,计算的不可还原性意味着,即使我们可能知道根本的规则,我们也不能轻易地预测其结果——因为这可能需要不可减少的计算量来计算出许多步骤之后的结果。
预测「穿越分支空间」是一个相关的、但稍有不同的现象,人们可以将其描述为「多重计算的不可还原性(multicomputational irreducibility)」。这不是关于计算出一个特定路径的困难,而是关于看到许多纠缠的路径如何相互作用的困难。
当一个人在玩游戏时,通常会谈论「能往前看到多少步」。而在我们这里,这基本上是在问我们可以轻易获知能在分支空间里走多远。作为计算上受约束的实体(computationally bounded entities),我们在分支空间有一定的「触达范围」。如果这个范围不足以达到类似「获胜点」的地方,那么这个游戏对我们来说就是「困难的」。
不过,这里还有一个问题。在一个游戏中「获胜」的因素通常是在多路图中达到一些特定的地方或区域。但这些地方或区域的定义通常是一些计算上在约束范围内的东西(「只要看看是否有一行X」,等等)。这是对系统的某种「观察」,它只是提取了完整状态的一个特定的(计算约束内)采样。然后,关键在于,这个采样并没有设法去「解码多重计算的不可还原性」。
这里有一个与热力学的类比。在热力学中,我们感知到「热」和「熵增加」的事实是这样的:我们的(粗粒度的)度量不能「解码」导致系统中产生的特定状态的不可还原的过程。同样,我们认为「很难弄清楚如何赢得一场游戏」的事实是这样一个结果,即我们的获胜判断标准不能去「观察游戏的内部」和「解码正在发生的事」,直到说它实际上成为只是选择一个特定的、简单径直的路径。相反,它是一个去经历玩游戏的多重计算不可还原的过程的问题,并且相对于对胜利的观察,实际上是「看看它会落在什么位置(seeing where it lands)」。
这里也有一个与量子力学的类比。追溯玩一个游戏的许多可能路径,就像追寻量子力学中的许多历史线程(threads),而获胜的标准就像一个选择某些线程的量子度量。在我们的「物理学计划」中,我们想象我们作为观察者是在分支空间中延伸的,通过我们对自己的单一经验线程的信念,将不同的历史线程「编织在一起」。在游戏中,我们对单一经验线的信念的类比,大概就是「重要的是谁赢谁输;游戏具体是怎么玩的并不重要」。
为了与量子力学做一个更接近的类比,我们可以开始考虑将「多路游玩」的不同部分结合起来,并试图为这些部分如何结合起来制定一套「微积分学」。
我们在这里讨论的游戏在某种意义上都是纯粹的「技巧游戏」。但在也有运气因素的游戏中,我们可以认为这导致了多路图中的单一路径「模糊化(fuzz out)」为一束路径,以及本来是分支空间中的一个点变成了整个扩展区域。
在研究不同的具体游戏和谜题时,我们经常不得不去研究一些相当简化的案例,以便得到规模可控的多路图。但是,如果我们研究非常大的多路图,是否会有整体的规律性涌现?对于游戏图来说,是否存在某种潜在的「连续极限(continuum limit)」?
几乎不可避免的是,如果我们看得「足够详细」,我们就会看到各种多重计算的不可还原性在发挥作用。但在我们的「物理学计划」中,甚至在一般的多重计算范式中,一个关键的问题是,相关的观察者并没有看到那个层次的细节。就像热力学或气体定律从底层分子动力学中的「涌现(emergence )」一样,底层计算的不可还原性的存在,不可避免地导致观察者所能感知的简单定律。
那么,对于一个游戏来说,「观察者」的类比是什么呢?至少在某些方面,它可以被认为是「获胜」的判断标准。那么现在问题来了:如果我们只看这些标准,我们能不能推导出「物理定律」的类似物,而不敏感于其下的所有多重计算的不可还原的细节?
关于这一点,还有很多东西需要弄清楚,但也许可以从一个地方开始,看看各种游戏中的分支空间和多路图的大规模结构。在许多不同的游戏中,一个基本的印象是,虽然分支图的特征可能在游戏的「不同阶段」之间发生变化,但在单个分支图中,往往有某种统一性。如果我们看一下细节,可能有很多多重计算的不可还原性。但在某种「可感知的水平」上,图的不同部分可能看起来很相似。这表明,即使已经采取了相当不同的行动,将人们带到由分支图定义的「游戏空间」的相当不同部分,「游戏的局部印象」在某一特定阶段往往是相似的,。
但是,虽然分支图的不同部分之间可能存在相似性,但我们看到的是,在一些游戏和谜题中,分支图会分成多个不相连的区域。这反映了游戏中存在着不同的「守恒区(conserved sectors)」——玩家可以进入的游戏空间区域,但随后会被卡住(至少在一定时间内),就像在时空中事件视界(event horizons,校注:德国天文学家卡尔·史瓦西提出的涉及黑洞的概念,一旦光线或物质越过事件视界,就永远无法逃脱了)可以阻止物理空间的不同区域之间的传送。
我们在一些游戏和谜题中注意到的另一个(相关的)现象是多路图中的大「洞」:在图中两点之间有多条「遥远」的路径。当多路图是密集连接的时候,通常总是有办法通过附近的路径改道来 「修复任何错误」。但是,当有一个洞时,这就表明人们最终会「致力于(committed)」某个行动的进程而不是另一个,而且要经过许多步骤才有可能到达与另一个行动进程所能到达的相同的地方。
如果我们假设在某个层面上,我们在多路图中最终「观察」到的是与评估输赢相对应的那种粗粒度,那么我们将不可避免地处理一个可能路径的分布情况。在没有「洞」的情况下,这些路径可能很接近,而且看起来很相似。但是当有洞的时候,可能会有相距甚远的不同的路径。而「属于相同分布部分」的遥远路径可能被认为是类似于量子叠加效应的事实。
游戏中是否有类似于广义相对论和路径积分(path integral)的概念?为了清楚地表述这个问题,我们必须更仔细地定义「游戏空间」的特征。很可能会有因果图(causal graph)的类似物。也很可能游戏空间中也会有一个类似能量的概念,与游戏空间中不同地方的「活动密度」相关。
那么,引力现象的类似物将是这样的:最好的游戏的游玩方式(即通过游戏图的测地路径)将倾向于被高活动密度的存在所偏转。换句话说,如果一个游戏处于某种状态时有很多事要做,那么好的游戏游玩将倾向于「被拉向那个状态」。在某种程度上,这并不令人惊讶:当游戏图中存在高密度的活动时,往往会有更多关于做什么的选择,因此,如果一个玩家经过那里,就更有可能 「玩出一场精彩的游戏」。
到目前为止,我们还没有明确地谈论游戏的策略。但在我们的多重计算框架中,策略有一个相当明确的解释:它是可能规则空间(rulial space)中的一个地方,在那里,人们实际上是假设了一套关于如何构建多路图的规则。换句话说,给定一个策略,人们就会在多路图中选择一些边(或者在相关的多路因果图中选择一些可能的事件),而放弃其他的边。
一般来说,谈论「可能策略的空间」可能很困难,因为这就像谈论「可能程序的空间」。但这恰恰是可能规则空间(rulial space)让我们谈论的东西。「策略空间」到底有什么样的「几何结构」,将取决于我们如何选择协调可能规则空间。但是,再一次,通过仅仅只看类似于博弈论中讨论的那种东西,将倾向于实现某种程度的粗放(coarse-graining)——在这种程度上,我们可以预期所有各种标准的「结构化」的博弈论结果将普遍成立。
译注:Rulial space是 Wolfram 自创的一个术语,意指所有可能的规则以及这些规则的所有应用方式所组成的空间。比如,从符号A开始应用符号替换规则{A → AB, BB → A},可以用下面的多路图表示这个规则所有可能的应用方式:

这个图只画出了前几步,完整的图应该是无限的
假设只有A、B两个符号,只考虑长度最多为2的符号串,那么所有这样的可能的替换规则有

按照上面的方式画出所有这些替换规则对应的多路图,并把这些多路图合并成一个图,就构成了这个有限语境下的 Rulial space。
现在想象我们考虑的不仅仅是上面这些符号替换规则,而是宇宙中所有可能的规则,这个巨大的Rulial Space可以认为包含了一切”可计算的事物(everything that is computationally possible.)“。
推荐阅读:The Concept of the Ruliad
个人笔记
Personal Notes
即使在小时候,我也从未特别喜欢玩游戏或做拼图。而这也许是我太像个科学家的一个标志。因为只是选出特定的棋步对我来说总是显得太武断任意了。为了引起我的兴趣,我需要一个更大的图景,更加前后一致的认知叙事。
而现在,从某种意义上说,这正是我在这里讨论的对游戏和谜题的多重计算方法带给我们的东西。是的,能够思考做出特定的动作是非常「人类视角化(humanizing)」的。但是,多重计算方法立即给人了一种连贯的全局观,至少对我来说,理智上更令人满意。
我在这里讨论的探索可以被认为是源于《一种新的科学》中的一个注释。在《一种新的科学》的第五章中,我有一节首次介绍了多路系统。在那一节的最后一个注释中,我讨论了「游戏系统」。

我在20世纪90年代做了这方面的研究——事实上,我现在发现1998年的一本关于井字棋的文件,其中得出了一些相同的结果

其中还有一个看起来很耐人寻味的关于井字棋的图表:

但在那个时候,我并没有从我生成的这些游戏相关的图中得出什么结论;它们只是显得庞大而复杂。20年过去了,我没有再多想这个问题。但后来在2017年,我的儿子克里斯托弗在玩一个叫《Rush Hour》的桌游。

也许是家族倾向的表现,他决定构建其游戏图——得出了对我来说似乎是非常令人惊讶的结果。

当时我并没有试图去理解这里的结构,但我还是把它「归档」了,作为游戏图可以有「可见的大规模结构」的证据。
几年后——2019年底——我们的物理项目正在进行中,我们已经意识到,量子力学和多路图之间存在着深刻的关系。量子力学一直看起来是神秘的东西——纯数学形式主义的抽象结果。但是,看到与多路系统的联系,开始暗示人们实际上能够「理解量子力学」,因为它可以从一些具体的基础结构中「机制地产生」。
我开始思考如何在一个直观的层面上解释量子力学。为此,我需要一个熟悉的类比:可以与多路系统联系起来的日常事物。我立即想到了游戏。2020年9月,我决定考察一下游戏,以更详细地探索这个类比。我很快就分析了井字游戏和尼姆游戏,以及简单的滑动块谜题和汉诺塔。但我想探索更多的游戏和谜题。而且我还有其他项目要做,所以游戏和谜题的多重计算分析被搁置了。
今年早些时候,汉诺塔又出现了,当时我把它作为一个生成类似证明的多路图的例子,与我对元数学的物理化研究有关。最后,几周前我决定是时候写下我到目前为止所知道的关于游戏和谜题的东西了——并产生了这里的东西。
致谢
Thanks
感谢 Brad Klee 和 Ed Pegg 在本文给出的分析的最后阶段提供的各种帮助——以及 Christopher Wolfram 在2017年的灵感和2020年的帮助。

日 | 落译介计划 是媒体实验室落日间对一些有助于思考游戏/电子游戏的外文文本翻译和推荐/索引计划。(查看网站)。
游戏-涌现-自然
David Krakauer 与达尔文下围棋 Playing Go with Darwin (2020)
Jonathan Blow 游戏设计的真如 Truth in Game Design (2011)
Michael Nielsen 重塑解释 Reinventing Explanation (2014)
和厌氧菌的节目 E32 赛博文本中的幽灵作者
感谢支持落日间的朋友们!
欢迎赞赏或在爱发电赞助落日间