细胞自动机

在上篇文章中,我们初步了解了什么是生命游戏。

这不,今天小菜和老鸟还在讨论呢。

老鸟:你知道么,生命游戏其实是一个二维的细胞自动机。

小菜:细胞自动机?听着好高大上啊,那是什么东西啊?

老鸟:细胞自动机,也叫元胞自动机,英文是 Cellular Automaton,很多文章中会把简写成 CA。元胞自动机是定义在一个由具有离散、有限状态的元胞组成的元胞空间上,并按照一定局部规则,在离散的时间维上演化的动力学系统。

小菜:能说人话么?

老鸟:哈哈哈。简单的来说,就是格子细胞、规则与演化。上篇文章中提到的生命游戏,是在一个二维空间中的细胞自动机。

我们再来回顾下生命游戏的规则:

  • 人口过少,离群:如果一个活细胞少于两个活的邻居,它就会死亡。
  • 正常:一个有两个或三个活邻居的活细胞可以延续到下一代。
  • 人口过多,过度竞争:一个有超过三个活邻居的活细胞死亡。
  • 繁衍:如果一个死细胞正好有三个活着的邻居,它就会复活。

按照这个规则,会有一些固定的模式出现,如下图

老鸟:今天我们不说二维,简单点,我们降维,来说一下一维,也就是一维细胞自动机。

小菜:好耶!

一维细胞自动机

老鸟:说到一维细胞自动机,必须要提到一个人物。

小菜:谁?

老鸟:Wolfram。

小菜:能介绍下么?

老鸟:Wolfram 原本是研究粒子物理和宇宙学的,但细胞自动机模拟出的复杂的类似真实自然界中某些现象和过程的图案激发了他对该领域强烈的兴趣。这个人认为生命游戏有一个缺点,就是只研究了一种规则,所以他系统研究了多种规则,细胞自动机基于多种规则的不同演化过程。

老鸟喝了口水继续说道:一个细胞有俩状态,黑和白,你认为生或死也是可以的,细胞的邻居就是细胞左右的相邻细胞。一个细胞和相邻的两个邻居形成了 3 个细胞组成的一个单元组。

老鸟:我考察下你,这个单元组可能有多少种组合?

小菜:这个可难不倒我。每个细胞有两个状态,用 1 和 0 表示,单元组有 3 个细胞,所有的状态一共是 2 * 2 * 2,也就是 2 的 3 次方,一共 8 种排列组合。

边说边写,小菜在纸上排列出了所有可能性:

  • 1 1 1
  • 1 1 0
  • 1 0 1
  • 1 0 0
  • 0 1 1
  • 0 1 0
  • 0 0 1
  • 0 0 0

老鸟:不错嘛。中间就是当前的细胞,我们叫中心细胞吧,左右是它的邻居。一共是 8 种 状态,那我再问你,当前细胞下一步也是两种状态,不是 1 就是 0,按照上面列举的顺序,一共多少种可能性?

小菜:So easy。2 的 8 次方,也就是 256 种。

说完小菜便在纸上绘制出了一幅图

小菜接着说道:举个例子,比如 1 0 0,中心细胞状态是 0,左右邻居是 1 和 0,那么中心细胞 0 的下一代可能是 1 或者 0,两种状态,按照上面的排列顺序,就是 8 个 2 相乘,256 种。嘿嘿。

说完小菜得意的笑了。

老鸟:没错。256种可能性,于是关于规则,按照编号,有 Wolfram 规则 0,Wolfram 规则 1, Wolfram 规则 2, ···,Wolfram 规则 255。

老鸟:来看看 规则 90 如何?

小菜:走你~

规则 90

上图列举了一些比较出名的一些规则。规则 90 非常出名。

小菜:这些图为什么是这样的?你说的一维细胞自动机,不是一维直线么?

老鸟:你要注意了。咱们说的是一维,的确是一条线,细胞的演化会随时间不断进行,但为了更清楚的了解每一次演化的图形,所以每一次迭代,都往下面画一行,这样下来,多次迭代,就会形成二维图形,就像上图一样。

小菜:哦哦,原来如此啊。

老鸟:是的。规则 90 演化生成的图形就是著名的“谢尔宾斯基三角形”,以波兰数学家瓦茨瓦夫·谢尔宾斯基的名字命名,你看它是前阵子我们说的啥?

小菜:分形!

老鸟:没错。神奇吧。

“这个规则演化下去,竟然会形成分形图案,真的太美妙了!”老鸟感慨道。

小菜的课后作业:

小菜使用 Processing 实现的规则 90 效果,运行在了 iPad 模拟器上。

(添加视频号)

规则 30

老鸟:规则 30 也比较出名。最后的图形

迭代的原理图展示:

一维细胞自动机就简单介绍到这里,读者朋友们对这方面感兴趣的可以使用搜索引擎进行探索。

更多阅读

  • https://mathworld.wolfram.com/ElementaryCellularAutomaton.html

  • https://wizardforcel.gitbooks.io/think-comp-2e/content/5.html

细胞自动机,那是什么?相关推荐

  1. 通过细胞自动机,AI在「我的世界」学会了盖房子

    子豪 发自 凹非寺 量子位 报道 | 公众号 QbitAI 了解游戏「我的世界(MineCraft)」的读者,一定很熟悉这样的画面. △图源:Science Magazine 但是,如果盖房子的不是人 ...

  2. 细胞自动机 通用计算机,细胞自动机

    细胞自动机,又称格状自动机.元胞自动机,是一种离散模型,在可算性理论.数学及理论生物学都有相关研究.它是由无限个有规律.坚硬的方格组成,每格均处于一种有限状态.整个格网可以是任何有限维的.同时也是离散 ...

  3. java实现细胞自动机_Java自动机实现

    java实现细胞自动机 这篇文章将解决在Java中实现有限状态机的问题. 如果您不知道什么是FSM或在什么地方可以使用FSM,您可能会热衷于阅读本 , 本和本 . 如果您发现自己在设计上使用FSM的情 ...

  4. 细胞自动机 c语言程序,Processing精彩例程之细胞自动机

    title: Processing精彩例程之细胞自动机 date: 2018-3-25 22:19:41 categories: 编程与生活 tags: Java 一维细胞自动机 一维细胞自动机 in ...

  5. c++ 45行代码实现 生命游戏-细胞自动机!!!

    概念:自动运行的机器 大家知道细胞自动机这个东西吗?当年冯诺依曼发明了计算机,同时也提出了一个概念:有一种机器,只要人为事先设定好,便可以一直自行地执行下去.可惜他早逝,52岁便被癌症带往天堂,到真正 ...

  6. 【简单好玩】细胞自动机小游戏

    细胞自动机 备注:文末有自己用Javascript简单实现的网页版细胞自动机(还挺好玩) 什么是细胞自动机 细胞自动机(英语:Cellular automaton),又称格状自动机.元胞自动机,它是由 ...

  7. 生命游戏和细胞自动机的学习笔记

    Last updated: 28 May, 2012 © 野比 2012 版权所有 (本文为个人学习笔记,知识浅薄,供大家乐乐) 欢迎对这方面感兴趣的爱好者一起研究. 寻求技术指导. 联系QQ 142 ...

  8. Java进阶学习-9 细胞自动机

    title: Java进阶学习-9 细胞自动机 date: 2020-02-02 22:06:23 tags: Java学习 死亡:如果活着的邻居数量<2或>3 则死亡 新生:如果正好有3 ...

  9. 【编程书籍】《The Nature of Code》笔记 -《代码本色》7.细胞自动机

    7.1 什么是细胞自动机 7.2 初等细胞自动机 *背景:Wolfram提出初等CA模型,CA有三大要素 *思想: 时间 -> 代 : 下一代的细胞状态 = f(上一代的细胞状态) *扩展:谢尔 ...

  10. 细胞自动机 二维数组的使用

    之前在MOOC大学翁恺讲的Java进阶的期末题使用了二维数组去求解: 细胞自动机(30分) 题目内容: 这是细胞自动机的非图形版本.细胞自动机是指在一个二维网格内,每一个网格是一个细胞.每个细胞有活和 ...

最新文章

  1. 设计模式系列3-----C++实现命令模式(Command Pattern)
  2. C语言基础语言总结(二)
  3. MemSQL初体验 - (1)传说中速度最快的关系数据库软件
  4. html5的文档申明为什么是!DOCTYPE html?
  5. java判断题_【Java判断题】请大神们进来看下、这些判断题你都知道多少~
  6. boost学习之boost::shared_ptr
  7. Java技术学习心得
  8. 实验1-4 输出三角形 (5 分)
  9. NOIP 2014 解方程
  10. 別人的心得。。。。。學習
  11. C++习题之变量和基本类型
  12. 固高板卡mct2008调试轴回零_MCT2008-for-ges 固高所有GE运动控制卡的DEMO软件,用来测试板卡是否正常工作 matlab 238万源代码下载- www.pudn.com...
  13. VMware ESXi下载和安装
  14. 三重积分平均值_直角坐标系下的三重积分的几何可视化解释图解高等数学
  15. 微信小程序 wx.getUserProfile返回的iv、encryptedData 解密获取不到openId的问题解决方案 openId无返回
  16. 第34次中国互联网络发展状况统计报告
  17. DevCloud注册和登录
  18. nivicat破解包安装以及问题解决。MySQL安装版本Navicat连接报错2509解决方案
  19. CDN工作原理及其在淘宝图片业务中的应用
  20. 教程:MySQL 8安装与配置及注意事项

热门文章

  1. t470键盘拆解_thinkpad t470怎么样?thinkpad t470拆机图解全面评测
  2. mysql 查询替换语句_MYSQL查询字符替换sql语句
  3. 怎样用比较器实现信号的衰减和饱和_小器件大功用之变频器输入滤波器
  4. 基于FPGA的电梯控制器设计(任意楼层)
  5. 在PSP上玩《大旋风 Twin Hawk》
  6. 基于 Flink、ClickHouse 的舆情分析系统:系统架构设计说明书
  7. Android 开发即时聊天工具系列(8)
  8. 单片机c语言程序编写歌谱,单片机简谱程序
  9. 基于华为产品的高校云数据中心建设规划设计方案
  10. 1、RH850时钟源及配置