专栏名称: 奶牛关CowLevel
奶牛关(https://cowlevel.net)- 玩游戏就要有追求 - 玩游戏不只是玩,我们有追求。追求精神快感,也追求意义,追求艺术,也追求难度与极限,追求更好的游戏,也追求懂的更多,玩的更好。
目录
相关文章推荐
51好读  ›  专栏  ›  奶牛关CowLevel

用数学方法玩解谜游戏 WayOut丨游戏背后的数学 Vol.1

奶牛关CowLevel  · 公众号  · 游戏  · 2017-07-05 13:09

正文



本文力图以最通俗易懂的语言,讲清游戏背后的数学。如果你没有看懂,说明我讲得不够好,欢迎一起探讨问题。


我上高一时,听过一个段子:有人问法国四年级小学生:3+4等于几?答:不知道。问:那4+3等于几呢?答:不知道。问:那你小学都学了什么呀?答:我知道3+4=4+3。问:为什么呀?答:因为整数关于加法构成一个交换群。


这使我意识到了三件事:


1.数学是Universal Language。无论是 3+4=7, III+IV=VII,还是:{{{,说的都是同一件事,真理是存在的。就3+4=7而言,请参考Peano公理系统。


2.我要学数学。


3.交换性/对称性是好东西。为什么古人觉得地球是平的呢?因为他们理所当然地认为自己所处的空间具有对称性——先往北走100米再往东走100米,等同于先往东走100米再往北走100米。实则不然,以后讲到HyperRogue时会详细探讨这一点。


正文




WayOut 是一个按灯的游戏,每按一盏灯会改变它及周围所有灯的状态,目标是把所有灯关掉。



它的原型是Lights Out,一款由Tiger Electronics发行的“掌上游戏机”。5*5的灯阵,总共有8388608个不同谜题,保证每次玩的都不一样!8388608=223,好像暴露了什么。


交换性体现在哪呢?按灯的先后顺序不会影响最后的结果,所以问题归结于“按哪些灯”而不是“如何操作”。做视频/GIF攻略的朋友辛苦了,但吃力不一定讨好,我觉得图片攻略更简明易懂。

如果有n盏灯,则总共有2n种按法,它们构成F2上的n维线性空间。和我们熟知的线性空间类似,只不过其系数取自有限域F2={0, 1},其中0+0=0,0+1=1,1+1=0,etc。(可以理解为偶+偶=偶、奇+奇=偶,但一个域除了有加法结构还有乘法结构)


举个栗子,如图有A, B, C, D四盏灯。

2A = 0,即:连按两次A等于什么也没做。

(A+B) + (A+C) = B+C,即:按A和B,再按A和C等同于按B和C,因为A按了两次。

注意到:按A改变了A, B, C的状态,按B改变了A, B, D的状态,etc。因此左边的问题转化为解线性方程组。当然,是在F2上。解得x = (1, 1, 0, 0)——A与B各按一次即可。(注意:1+1=0)


接下来我们以Lights Out的5*5灯阵为例,探讨如何找到所有解。


如何找到一组解?


线性方程组怎么解?高斯消元法!这种活儿还是交给计算机吧。


我们用高斯消元法的思想,从另一个角度解决这个问题。

Chase The Lights,顾名思义,是通过一系列操作把所有灯聚集到底边上,其实就是把复杂的局面进行等价简化。


(某盏灯亮着,则按其下方的灯,如此反复)Chase The Lights的按法是唯一的,而且没有用到最上方的五盏灯。


现在我们需要知道,最上方的五盏灯通过Chase The Lights会得到什么结果。

至此,问题已被简化为如下问题(在C.T.L等价意义下):

注意:D=B+C,E=A+C。


因此,A, B, C, D, E总共能表示出23种不同情形——0, A, B, C, A+B, A+C, B+C, A+B+C。不难看出,右边的情形正是A+B+C。

回到原题,我们只需按下A, B和C,再利用C.T.L即可得到一组解。(因为它经C.T.L得到的图案与A+B+C经C.T.L得到的图案相同,二者抵消。)


由C.T.L方法的唯一性,5*5灯阵总共有223种图案有解——因为C.T.L有220种方法,C.T.L之后有23种可能。等下从另一个角度印证这一点。 (总数必然是2的幂,因为F2上n维线性空间有2n个元素)


如何找到所有解?

两组解之间差了什么?“Nothing!!”

Literally nothing——按了这些灯之后,并不会改变任何灯的状态,我们称之为“Quiet Move”。任两组解之间之差一组“Quiet Move”;反之,任一组解可由某一组解加一组“Quiet Move”得到。鉴于之前已经得到了一组解,因此我们只需找到所有Q.M即可。


一个想法是,先随意给定最上面一行的情况,再根据每盏灯的状态被改变了偶数次逐行往下推,直至导出矛盾或得到一组Q.M。缺点很明显,总共要检验25种情形,费时费力。

但仔细一想,逐行往下推导,相当于在进行C.T.L。因此上面这种做法的实质是:对灯进行C.T.L,只有当最后得到空白行时才对应一组Q.M。

并非空白行


这就好办了,利用我们之前得到的结果,可以得到:0=0,A+C+E=0,B+C+D=0,A+B+D+E=0,每一组解与一组Q.M一一对应。实际上,(A+C+E)+(B+C+D)=A+B+D+E,它们构成一个线性子空间。

0当然对应的是“什么也不做的”Q.M

A+B+D+E对应的是Q.M如下,注意第一行就是A, B, D, E哦~

A+B+D+E

A+C+E

B+C+D


因此,一个图案只要有解,就恰好有4组解。按灯的方法有225种,每一种按法都是某一个图案的解,因此恰有223种图案有解。

看攻略确实能知道最优解,但你能知道所有解吗?


回到WayOut本身


现在,任给Lights Out的8388608个谜题中的任何一个,我们都能快速求解。


WayOut保留其核心内容,在此基础上加入了很多新机制。同时,交换性限制了游戏的深度,再多的新机制和“复杂”的关卡都没法从本质改变这一点。


首先是不拘泥于5*5的灯阵。







请到「今天看啥」查看全文