欢迎光临散文网 会员登陆 & 注册

康威生命游戏的计算机演算

2023-04-03 17:32 作者:Because6666666  | 我要投稿

先介绍下游戏的规则:

游戏开始时,每个细胞随机地设定为“生”或“死”之一的某个状态。然后,根据某种规则,计算出下一代每个细胞的状态,画出下一代细胞的生死分布图。

应该规定什么样的迭代规则呢?需要一个简单的,但又反映生命之间既协同又竞争的生存定律。为简单起见,最基本的考虑是假设每一个细胞都遵循完全一样的生存定律;再进一步,把细胞之间的相互影响只限制在最靠近该细胞的8个邻居中。

也就是说,每个细胞迭代后的状态由该细胞及周围8个细胞状态所决定。作了这些限制后,仍然还有很多方法来规定“生存定律”的具体细节。例如,在康威的生命游戏中,规定了如下生存定律。

(1)当前细胞为死亡状态时,当周围有3个存活细胞时,则迭代后该细胞变成存活状态(模拟繁殖);若原先为生,则保持不变。

(2)当前细胞为存活状态时,当周围的邻居细胞低于两个(不包含两个)存活时,该细胞变成死亡状态(模拟生命数量稀少)。

(3)当前细胞为存活状态时,当周围有两个或3个存活细胞时,该细胞保持原样。

(4)当前细胞为存活状态时,当周围有3个以上的存活细胞时,该细胞变成死亡状态(模拟生命数量过多)。

可以把最初的细胞结构定义为种子,当所有种子细胞按以上规则处理后,可以得到第1代细胞图。按规则继续处理当前的细胞图,可以得到下一代的细胞图,周而复始。

我使用了python的pygame来实现这个过程,初始格数为302x302,初始化生成活细胞的概率为50%,经过一段时间的演算后整个棋盘趋于稳定。

稳定的棋盘

定义稳定:大部分的细胞所组成的形状不会发生改变,少部分的细胞所组成的形状发生周期性的改变。统计后发现,周期为3.

输出的日志

此外如果更改初始生成活细胞的概率的话,也会影响后续的演变。例如取概率为0.9,则3轮过后无细胞存活。

康威生命游戏的计算机演算的评论 (共 条)

分享到微博请遵守国家法律