康威的生命游戏
2020-06-30
当代最伟大的数学家之一英国数学家约翰·霍顿·康威(John Horton Conway)因新冠肺炎逝世,享年82岁。他在群论、数论、代数、几何拓扑、理论物理、组合博弈论和几何等领域,做出了重大贡献。(如图1)
约翰·霍顿·康威(1937—2020)
这位天才数学家在剑桥研究数学同时还热爱着游戏,他把大把时间用在了玩游戏,发明小游戏,或者改写那些他认为无聊的游戏的规则上。
回看康威一生对数学做出的数不清的贡献中,游戏在其中占据了很大的比重。其中最著名的一个游戏,就是在1970年发明的生命游戏(Conways Game of Life)。(如图2)
生命游戏
这是一种可以模拟自然界的生命演化的游戏,它是第一个元胞自动机。在这个二维世界中,每个方格可以居住一个“生”和“死”状态的细胞,用黑和白来表示。细胞的生死存续受到周围8格的影响。
1.繁殖:如果一个细胞周围有3个细胞为生,则该细胞为生(即该细胞若原先为死,则转为生,若原先为生,则保持不变) 。
2. 稳定:如果一个细胞周围有2个细胞为生,则该细胞的生死状态保持不变。
3. 拥挤:在周围细胞高于3个的情况下,则该细胞因拥挤而死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)。
4. 孤独:在周围细胞低于2个的情况下,则该细胞因孤独而死(即该细胞若原先为生,则转为死,若原先为死,则保持不变)。
生命游戏的规则基于相鄰细胞的ON或OFF数目。为了简化这些规则的应用,可以只计算出处于 ON 状态的相邻细胞总数。这几条规则用Python代码表示如图。(如图3)
if 周围细胞小于2或 周围细胞大于3 则 该细胞 OFF
else if 周围细胞等于3则 该细胞 ON
设定图像中每个像素的初始状态后依据上述的游戏规则演绎生命的变化,由于初始状态和迭代次数不同,将会得到令人叹服的优美图案。(如图4、5、6)
滑翔者:它会向右下角前进
轻量级飞船:它向右边飞翔
1974年康威在玩生命游戏
这个游戏带来的最大启示,或许就是它展示了,生命游戏中的细胞只需要遵循几条简单规则,就可以演化出高度复杂的特征,当格子足够多时甚至可以演化出类似理性思维的活动。
1974年康微在玩生命游戏
由于这个游戏核心算法简洁,展示效果神奇,且具有生物学、社会学甚至哲学上的意义,因此成为了学习编程语言的经典习题。网上有大量的学习资料,不计其数的程序员制作了从简陋到完美的源程序,由于资料齐全非常适合已经有一定编程基础的人实操提高。
除了学习用不同语言编写生命游戏之外,找到可以长期稳定生存的初始图案或神奇的循环的复杂图案也是生命游戏的核心玩法。
conwaylife上分享的图案
在www.conwaylife.com、生命游戏吧、Golly吧里聚集着一批爱好者,他们会分享自己找到的神奇图案。
Golly是一款专门模拟各类型元胞自动机(康威规则是最初的一种元胞自动机)的免费软件。(下载地址:sourceforge.net/projects/golly/)
Golly中内置丰富的规则和图案
除了可以自己绘制初始图案外,Golly中内置了丰富的规则和图案,选择运行能看到各种神奇的效果。与网友交流分享成果也非常方便,把类似x = 80, y = 78, rule = B3/S23……的长串代码直接复制粘贴在舞台上就可以了。
脉冲星:一颗周期爆发的星星