经典的元胞自动机转换规则采用最经典的“生命游戏”规则,对于初学者有帮助。用C语言编写
2021-10-11 16:41:22 4KB 元胞自动机
1
Game of Life 约翰·康威最常被专业人士和大众拿来讨论的成果,就是他在1970年发明的生命游戏,Game of Life。它的意义在于验证了某些科学家的宇宙观,即最简单的逻辑规则能产生出复杂有趣的活动。 康威生命游戏在方格网上进行,有点像围棋。有填充的网格代表有生命,或理解成一个细胞,再或者按中国传统,把填充和无填充理解成“有”和“无”。游戏规则只有四条: 1 当周围仅有1个或没有存活细胞时, 原来的存活细胞进入死亡状态。(模拟生命数量稀少) 2 当周围有2个或3个存活细胞时, 网格保持原样。 3 当周围有4个及以上存活细胞时,原来的存活细胞亦进入死亡状态。(模拟生命数量过多) 4 当周围有3个存活细胞时,空白网格变成存活细胞。(模拟繁殖) (图源:《上帝与新物理学》) “种子”长成“花朵”,“花朵”死后留下四个“种子” 康威生命游戏的四条规则一目了然地对应着宇宙中的生命规律,它是一种元胞自动机(cellular automaton),体现了冯·诺依曼(Von Neumann)关于机器自我进化的思想。 简单图形 早在计算机还没有普及的时候,人们就已经发现了生命游戏的许多代表性图形。比如静物(still lifes),细胞分布形态非常稳定,永远都保持一开始的样子,不会有变化。 (图源:en.wikipedia.org) 方块(Block) 蜂窝(Beehive) 吐司(Loaf) 小船(Boat) 浴缸(Tub) 还有一类叫做振荡器(oscillator),从初始形态开始,在有限图形之间切换,周而复始。数学家发现了很多周期的振荡器,但至今还没有找到周期为19、23、34、38、41的。 (图源:en.wikipedia.org) 甚至还有会整体移动的,比如太空飞船(spaceship)类型。图形会在方格世界内一直沿固定方向运动。 滑翔机(Glider) 轻型飞船(Lightweight spaceship) (图源:en.wikipedia.org) 复杂图形 后来人们又发现了很多更为复杂的变化,看几个例子。 (图源:en.wikipedia.org) 康威最初认为生命游戏中没有任何图形可以无限增长,但很快高斯帕滑翔机枪(Gosper glider gun)推翻了他的想法。这个图形每15代产生一架滑翔机,无限延续。 (图源:en.wikipedia.org) 复杂振荡器一类里有一个繁殖者(breeder),也是高斯帕的杰作。它拥有二次增长率。 河豚(puffer或puffer train)则是大型运动的代表。它也是高斯帕发现的,根据碎片多少分为脏河豚和净河豚两类。 河豚(puffer) (图源:web.stanford.edu) 还有一个变型,叫做耙子(rakes)。 耙子(rakes)(图源:web.stanford.edu) 其实还有更为大型复杂的图形。也有一些研究者通过对规则稍微修改或补充而获得了意想不到的成功。 Rule 30 1983年,沃尔夫勒姆在研究了康威生命游戏以后,自己制定规则,做出了一个一维元胞自动机(更接近于冯·诺依曼的思路)。表示方法是将下一代的图形画在前一代的下面。这个规则组称为Rule 30(因为按顺序排列的二进制数00011110对应的十进制就是30)。 (图源:en.wikipedia.org) Rule 30经过多代演化后显示出一部分规律一部分随机的结果。 (图源:en.wikipedia.org) 自然界中的织锦芋螺(Conus textile)花纹与Rule 30非常相似,这个发现估计让沃尔夫勒姆高兴了好一阵子。 (图源:archinect.com) 说剑桥北站表皮图案是Rule 30其实并不确切,它是黑白反转的Rule 30。所以晚上内部亮灯时,或者如图这样从内向外看,才真正符合Rule 30。 反转的Rule 30事实上就是沃尔夫勒姆的另一个规则组Rule 135。他从Rule 30开始,发现了一系列有趣的图形。 Rule 110(图源:en.wikipedia.org) (图源:blog.stephenwolfram.com) 初始状态不同也会导致图案变化不同 更多变化
2021-08-19 09:27:47 4.77MB 安装包
1
【元胞自动机】基于元胞自动机生命游戏matlab源码.md
2021-08-09 14:03:00 8KB matlab
1
康威生命游戏Windows演示程序,使用MFC实现,Visual C++ 2010编译,这个是演示程序,源代码后面上传。有这方面研究兴趣的可以下载来玩玩。
2021-07-25 11:04:11 784KB 康威生命游戏元胞自动机
1
推荐给rust学习爱好者
2021-07-22 09:05:43 60.76MB rust webassembly
1
基于Matlab的生命游戏仿真设计.pdf
2021-07-10 15:05:43 1.09MB MATLAB 数据分析 数据处理 论文期刊
用C++实现的控制台生命游戏,注释清晰,逻辑简介。
2021-07-08 09:00:36 4KB 生命游戏 GameOfLife C++ 源码
1
生命游戏 gameoflife是康威为 Arduino 和 MAX7219 控制的 8x8 LED矩阵实现的生命游戏。 它是在一天内开发出来的,没有任何花哨的选择。 它只是有效 如何使用它 让它工作很容易。 将您的 LED 矩阵连接到 Arduino 上的适当引脚并在其上加载草图。 该程序以滑翔机穿过屏幕开始。 之后,网格被初始化为随机值,直到: 所有细胞死亡。 系统被冻结。 或者已经成长了 50 代。 然后生成一个新的随机矩阵,循环再次开始。 执照 Copyright (C) 2014 Rafael Bailón-Ruiz This program is free software: you can redistribute it and/or modify it under the terms o
2021-07-04 15:02:58 15KB
1
康威编码练习 使用康威的生命游戏进行编码练习 描述代码的文章收集在这里: : 第1部分 分支 01-UnitTests 描述了为康威生命游戏的基本规则创建测试和代码。 这使用带有 MS 测试的测试驱动开发,如下所述: : 并继续使用 NUnit 创建参数化测试,此处描述: : 第2部分 Branch 02-ConsoleUI 添加了一个控制台应用程序来可视化 Conway 的游戏人生的输出。 此处描述了创建 UI: : 第 3 部分 Branch 03-Optimization 探索添加并行性以优化操作。 这在这里描述: : 更多……
2021-07-03 14:06:07 21KB C#
1
1. 生命游戏是什么 生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死了的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个时刻死去;相反,如果周围活细胞过少,这个细胞会因太孤单而死去。 规则看起来很简单,但却能演绎出无穷无尽的内容。 滑翔者:每4个回合”它”会向右下角走一格。虽然细胞早就是不同的细胞了,但它能保持原本的形态。 轻量级飞船:它的周期是4,每2个回合会向右边走一格。 脉冲星:它的周期为3,看起来像一颗周
2021-06-25 10:44:51 175KB 格子 源代码 生命游戏
1