人生游戏,第一部分,规则

这是关于John Conway的生命游戏系列文章的一部分。一个看似简单的规则导致了令人难以置信的各种模式、谜题和未解决的数学问题,以及MATLAB稀疏矩阵的漂亮使用。

内容

规则

“生命游戏”是由英国出生的数学家约翰·霍顿·康威(John Horton Conway)发明的,他现在是普林斯顿大学的教授。这款游戏在1970年10月的《科学美国人,在数学游戏马丁·加德纳的专栏。当时,加德纳写道

这个月我们考虑康威的最新创意,他称之为“生活”的一种奇妙的纸牌消遣。因为它与生物社会的兴衰和更替有着相似之处,所以它属于日益壮大的“模拟游戏”——类似于现实生活过程的游戏。要玩人生,你必须有一个相当大的棋盘和充足的两种颜色的平台子。

今天康威的发明被称为细胞自动机我们可以在电脑上进行模拟,而不是在棋盘上。的宇宙是一个无限的二维矩形网格。的人口标记为的网格单元格的集合是活着.种群以离散时间步长演化,称为一代又一代.在每一步中,每个细胞的命运都取决于它八个最近的邻居的活力,这条规则是:
  • 一个有两个活邻居的活细胞,或者任何有三个活邻居的活细胞,在下一步都是活的。
康威的《生命游戏》的魅力在于,这个看似简单的规则导致了令人难以置信的各种模式、谜题和未解决的数学问题——就像现实生活一样。

如果初始种群由三个活细胞组成,那么由于旋转和自反对称性,只有两种不同的可能性;总体要么是l型要么是i型。我们的第一个种群是从l型的活细胞开始的。这三个细胞都有两个活着的邻居,所以它们都活下来了。它们都接触到的死细胞有三个活着的邻居,所以它活了起来。其他死亡细胞都没有足够的活邻居来恢复生命。所以,一步之后,就得到了固定的四细胞群,也就是.每个活细胞都有三个活的邻居,因此可以继续存活。其他细胞都不能活过来。四个牢房的牢房永远存在。

信号灯

其他三个细胞的初始群体是i型的。两种可能的方向显示在眨眼器的两个步骤。在每一步中,两个末端细胞死亡,中间细胞存活,两个新细胞生成,以指示另一步中显示的方向。如果没有干扰的话,这三个单元信号灯不停地眨眼。它分两步重复;这就是所谓的

滑翔机

最有趣的五细胞初始种群之一的进化的四个步骤滑翔机,如图所示。每一步两个细胞死亡,两个新的细胞诞生。四步之后,原始种群重新出现,但它已沿对角线向下移动并穿过网格。它永远朝这个方向移动,继续存在于无限的宇宙中。

无限的宇宙

那么,无限的宇宙究竟是如何运作的呢?天体物理学家和宇宙学家对我们的宇宙也提出了同样的问题。多年来,我提供了三个不同的MATLAB生命游戏程序,以三种不同的方式解决这个问题。MATLABmatlab /演示/ /工具箱目录包含一个程序生活我和内德·格利20年前写的该程序使用环形边界条件和随机起始种群。这些都很容易实现,但我现在不得不说,它们并不能提供特别令人满意的Game of Life模拟。在环形边界条件下,到达一侧边缘的细胞会从另一侧重新进入宇宙。所以宇宙并不是无限的。随机的初始种群不太可能产生丰富的配置,使生活如此有趣。几年前,我出版了这本书MATLAB实验其中包括生命游戏的一章和一个程序lifex.该程序根据需要重新分配稀疏数据结构中的存储,以适应不断扩大的人口,从而模拟一个无限的宇宙。观测窗口仍然是有限的,所以不断扩张的人口的外部部分离开了视野。的初始种群lifex都是从生命词典中获得的,这是一个有价值的资源,编目了数百个与生命游戏相关的术语。《生命辞典》收录了四百多个有趣的起始种群。你也可以参观图形版本秘典的一部分。我的最新程序(我将在这篇文章和本博客后面的文章中描述)使用的动态存储分配与lifex.但它的特点是一个扩大的观察窗口,所以整个人口总是在视线范围内。随着视点的后退,单个单元格变得越来越小。这个程序还可以访问生活词典,所以我给它起了个名字life_lex.它现在可以从MATLAB中央文件交换;参见投稿人生游戏.静态屏幕截图和这篇文章中的电影来自life_lex

全屏视频回放

的输出life_lex这样你就能以合理的分辨率和帧率回放。但这涉及到视频编解码器和YouTube知识产权协议以及其他各种各样的东西,我不想在本周的博客中涉及这些东西。可能过几天吧。在MATLAB程序中插入六行代码来生成GIF动画文件是很容易的——这是一种古老的技术,足以满足我们今天的目的。但是捕捉每一个步骤是不现实的。结果。gif文件太大,播放速度太慢。然而,下面的两个例子表明,不记录每一帧也可以制作出令人满意的电影。

滑翔机枪

比尔·高斯帕发展了他的理论滑翔机枪1970年在麻省理工学院。两个静态块之间的总体部分来回振荡。每走30步,就会出现一架滑翔机。结果是无穷无尽的滑翔机飞向不断膨胀的宇宙。这是发现的第一个例子,一个有限的起始种群的增长是无限的。这是一部电影,高斯帕滑翔机枪电影,它可以捕捉140步中的每五步。第一个滑翔机刚到达画面边缘life_lex是关于当我停止录制时调整它的视图大小。您必须下载代码并自己运行,以查看调整大小的工作方式。

诺亚方舟

我认为这是一个惊人的进化。秘典说

这个名字来源于它留下的各种物品:积木、眼罩、蜂箱、面包、滑翔机、船、船、长船、信标和桌子上的积木。

我们已经学习了其中的一些东西——积木、闪灯和滑翔机。但是其他的呢?欢迎来到生命游戏的世界。在这部电影中,我捕捉了2000步中的每50步。你可以看到为什么宇宙膨胀和life_lex调整大小是必要的,诺亚方舟电影

使用MATLAB®7.14发布

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。