细胞自动机【转】

另类科学的核心技术是细胞自动机。

乌尔姆(Stanislaw M. Ulam)和冯·诺伊曼(John von
Neumann)为了研究机器人自我复制的可能性,在上个世纪50年代提出一种叫做细胞自动机(Cellular
Automaton)的离散型动力系统(Discrete Dynamical
Systems)。细胞自动机是研究复杂系统行为的理论框架之一,也是人工智能在这个领域的雏形之一。

在一个平面上(这里以平面为例,但不限于二维平面)纵横相交的多条直线构成了许多网格,每一个网格被看作一个细胞。这些细胞可以具有一些特征状态,譬如被染成不同颜色。在每个特定的时刻每个细胞只能处于一种特征状态。随着计算机迭代计算过程的进行,全体细胞各自根据周围细胞的状态,按照相同的规则同时自动改变它本身的状态,这就构成了一台细胞自动机。

决定一台细胞自动机的先决条件有四个:1、决定细胞活动的空间维度,譬如一维的、二维的或三维的,等等;2、定义细胞可能具有的状态;3、定义细胞改变状态的规则;4、设定细胞自动机中各细胞的初始状态。

1982年Wolfram发表了第一篇关于细胞自动机的学术论文,由此开始了对细胞自动机的研究。Wolfram着重研究空间维度为二维的细胞自动机。细胞可能具有的状态只有两种,用颜色表示成黑色或白色。全体细胞中的每一个只根据上一迭代过程中与该细胞紧相邻的三个细胞的状态来决定自己下一步的状态,所有细胞在根据上一步结果确定自己在这一步中将有的状态后,全体细胞同时改变自己的状态到新状态。其结果和细胞自动机的初始条件很有关系。被这样设定的细胞自动机叫做一维细胞自动机。

科学的道路来不得半点虚伪和骄傲。这没错。但是,如果你的切入点选对了,也许你在一条新的路上可以成为先行者,而并不一定要先把自己的知识的背囊装的满满的之后才去开始攀登科学高峰的步伐。Wolfram就是一个好例子。虽然他确是很聪明,但按照他现在发表的成果看来,他15岁就能发表论文,不完全因为他那时候有多么渊博的学问,更有可能是因为他选了一个很好的切入点。

下面为你设计实现了一台最简单的细胞自动机,请你亲手来做一下。这是学习的最好方式,同时也可以体验到,有时候进入研究最前沿也不是那么高不可攀的事情。我这里说的是“进入”。跨出这一步后,到你做出成果来,就会有无数的书本等着你去翻开,有无数的实验等着你去完成,有一段很长的距离要走。但是你已经入门了。你享受门外汉不可能体验的乐趣,你在科学的某一条小路上攀登着并沿途拿自己的幼稚和汗水去交换路边的小石、头顶的野花。不知不觉间,你就登上了一座小山包,背上的背包已经有点重了。俯视走过的路,自豪与快乐溢于心间。而前面总有更美的景色在召唤你前行……

下面的例子不需要使用计算机,我们用手画图来完成这个简单的细胞自动机。请你亲手来画一下:

想象有一根无限长的线,线上布满可以变色的点,每个点的颜色或黑或白。初始条件可以简单设为除一个黑点外其余的点全白,或者设为黑白相间。我们按照黑、白相间的简单起始规则,画出下图中的‘起始图’部分。

起始    ○ ● ○ ● ○ ● ○ ● ○ ●

然后对所有的点施行应用某种规则,比如最近邻规则:对线上任意一点,如果在该点最右侧及最左侧的点均为黑色,而该点本身为白色,则把该点变成黑点。否则该点就保留或改变成白点。

按照上述规定反复迭代,就得到了下面的迭代图的全体。

我们从‘起始图’开始来推导出‘第一步迭代图’,请拿一张纸一支笔自己动手画一画:‘起始图’中的第一个点是白点,按照迭代规定,这个点在‘第一步迭代图’中保留原来的白色;‘起始图’中的第二个点是黑点,根据规定它将在‘第一步迭代图’中改变成白色;‘起始图’中的第三个点的最右侧及最左侧的点均为黑色,而该点本身为白色,故把该点变成黑点画在‘第一步迭代图’中……,依此把‘起始图’中所有的点检查一遍,并记住所有点在‘第一步迭代图’中的新颜色,然后就按照得到的全体点的结果,画出‘第一步迭代图’。

起始            
  ○ ● ○ ● ○ ● ○ ● ○ ●

第一步迭代      ○ ○ ● ○ ● ○ ● ○ ● ○

现在针对‘第一步迭代图’,按照同样的方法画出‘第二步迭代图’,‘第三步迭代图’,……,等等,如下图所示:

起始             ○
● ○ ● ○ ● ○ ● ○ ●

第一步迭代    ○ ○ ● ○ ● ○ ● ○ ● ○

第二步迭代    ○ ○ ○ ● ○ ● ○ ● ○ ●

第三步迭代    ○ ○ ○ ○ ● ○ ● ○ ● ○

由图中可以看到,每迭代一次,白点就向右側移动一位。这样就得到了一个点的动态移动的模式。

怎么样?简单吧?你刚刚做了一台细胞自动机哪!

请你在这里暂停阅读并想一想在计算机上实现这个简单的一维细胞自动机的情景。能替它找到一些相关的应用吗?

我找了几个如下:

如果在计算机上实现上述的简单一维细胞自动机,并在一根直线上画出每次的迭代过程,就可以看到一个白点向右侧运动的动态过程。如果把直线画成螺旋状,这个点就会沿螺旋运动。如果画成环状,点就沿着环跑个不停。

如果只把图中改变颜色的点画出来,并且把点画成宇宙飞船的形状而不是圆点的形状,直线画成某种空间轨迹。那么在程序运行时,就得到了一艘宇宙飞船沿轨迹飞行的动态画面。如果画两艘敌对的宇宙飞船并设计它们的相撞的轨迹,就可以得到一个简单的星球大战的游戏。

怎么样?挺好玩的吧?您再想点别的花样?

下面是一个从《另类科学》中取来的、更具体的、也更复杂一点的例子。如果您有耐心又有兴趣的话,通过它可以更深入了解Wolfram的工作的基本原理。如果没有兴趣,就跳过去不读它即可。作者的饶舌是自己兴之所至的塗鸦,读者大可不必跟着给弄得晕头转向。当然如果我的作品有这么大的魔力让你跟着我的思想转悠,我会很有成就感的。谢谢了。

考虑并排的三个格子,它们分别被赋予黑白两种状态。考虑各种可能的排列方式,我们不难得到共有8种组合状态。这8种组合状态的每一种都各自决定下一个细胞是黑色或白色,这样算下来的排列总共有256种可能性。因此在Wolfram考虑的细胞自动机种类中,细胞改变状态的规则有256种。Wolfram把这256种规则一一编号。譬如下面的图就代表110号规则:

图9-4 Wolfram的细胞自动机110号规则

用文字来叙述就是:当某细胞的上一行相邻三个细胞为全黑、全白或者左侧一个细胞为黑时,该细胞为白色,否则为黑色。设定一个简单的细胞初始状态,譬如在第一行只有一个黑色细胞,根据规则110,细胞自动机就可以自动把其余的细胞变成黑色或保留白色。下图就是根据规则110运行了前20步的情况,在这里似乎看不出什么有趣的东西。但运行到几百步后,就出现了一些有趣的特征,一些结构开始既不是周期性地也不是完全随机地出现在画面上。下图是按规则110运行到700步的情况。

           

图9-5
110号规则运行了前20步的情况                 
图9-6 110号规则运行了前700步的情况

从上面的两个例子中我们可以看到,在这样的模式中,确实没有用到经典的数学公式。

Wolfram用类似的方法,得到了除量子力学外经典物理学中的所有公式。

也就是说,不用数学公式也可以借助计算机来描述自然界。不用数学公式也可以借助计算机来研究宇宙。

1984年Wolfram把256种规则分成了四类:第一类只生成简单重复的图案,比如全黑、全白、或黑白相间如国际象棋棋盘等等;第二类规则产生一些自相似的分形图案,形成稳定的嵌套结构;第三类规则产生的图案具有明显的随机性;第四类规则产生复杂的图案,但不简单重复。

这些图案既不是规则的也不是完全随机的。它们呈现出某种有序性,但却不能被预言。

Wolfram关注较多的是第四类规则。第110号规则及30号规则是第四类规则中的精粹。通过它们可以从简单的初始条件产生出复杂的图形。这是Wolfram对细胞自动机理论所做出的巨大贡献。

Wolfram所用的软件计算本身并不复杂,复杂的是怎样处理输出结果。有了适当的软件后,就可以开展对细胞自动机的研究。

Cited
from:http://blog.china.com.cn/home.php?mod=space&uid=1235952&do=blog&id=232854

Note:cellular automaton 通过对问题进行编码使其更加直观,可以表示传统方法难以表达的特征。 比如展示同源 nucleotide
sequence
之间的差别,可以将一维的序列转化为二维的数组,然后将数组以图像的形式反映出来,于是将序列的特征反映到二维图像上,可以用直观的方式发现其特征。

 

细胞自动机【转】,布布扣,bubuko.com

时间: 2024-11-01 18:33:03

细胞自动机【转】的相关文章

中国MOOC_面向对象程序设计——Java语言_期末考试编程题_1细胞自动机

期末考试编程题 返回 这是期末考试的编程题 温馨提示: 1.本次考试属于Online Judge题目,提交后由系统即时判分. 2.学生可以在考试截止时间之前提交答案,系统将取其中的最高分作为最终成绩. 1 细胞自动机(30分) 题目内容: 这是细胞自动机的非图形版本.细胞自动机是指在一个二维网格内,每一个网格是一个细胞.每个细胞有活和死两种状态. 初始时刻,有些细胞是活的,有些细胞是死的.自动机的每一步,根据每个细胞周围8个格子内的其他细胞的生存情况决定这个细胞下一步是否存活.具体的规则如下:

生命游戏&一维细胞自动机 笔记

de 生命游戏是一种简单的聚合模型,展示了事物是如何聚合的,是自动机(CA)模型的一种.由剑桥大学约翰康威发明,其规则为: 1. 每个细胞拥有八个邻居,细胞状态只有存活(黑)和死亡(白)两种: 2.处于死亡状态的细胞可以在有三个存活邻居的情况下复活: 3.存活状态的细胞在相邻有2个一下或三个以上存活细胞的情况下会死去,2-3个相邻细胞存活时会继续存活: 从而产生了信号灯.闪光灯.滑翔机.警示灯等经典的变换. 遵循简单规则的简单图像聚合一起可以形成复杂图像,甚至如活物一般能进行空间平移(自组织模型

混沌,细胞自动机与生命游戏

混沌,细胞自动机与生命游戏 1.康威生命游戏的规则 生命游戏中,对于任意细胞,规则如下:每个细胞有两种状态-存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动. Ⅰ. A live square with two or three live neighbors survives (survival).Ⅱ. A dead square with exactly three live neighbors becomes a live cell (birth).Ⅲ. In all other c

CellularAutomation(细胞自动机)

CellularAutomation(细胞自动机) 细胞自动机(英语:Cellular automaton),又称格状自动机.元胞自动机,是一种离散模型,在可算性理论.数学及理论生物学都有相关研究.它是由无限个有规律.坚硬的方格组成,每格均处于一种有限状态.整个格网可以是任何有限维的.同时也是离散的.每格于t时的态由 t-1时的一集有限格(这集叫那格的邻域)的态决定. 每一格的"邻居"都是已被固定的.(一格可以是自己的邻居.)每次演进时,每格均遵从同一规矩一齐演进. 就形式而言,细胞自

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

Last updated: 23rd. July, 2012 野比 2012 版权所有 (本文为学习笔记,知识浅薄.我会将学习中的实验记录和心得记录在此.) 欢迎对这方面感兴趣的爱好者一起研究. 寻求技术指导. 联系QQ:1429013154 我一直对人工智能很感兴趣,苦于数学基础太差,很多理论方面的东西理解起来十分吃力.最近又翻出以前的学习目标:人工生命.名字挺悬乎,其实很多人都曾和它有过交集,就算没有用到它进化出的好物种--智能机器人,至少也应该听过甚至中过它进化的恶劣物种--蠕虫病毒. 说

LA 3704细胞自动机——循环矩阵&&矩阵快速幂

题目 一个细胞自动机包含 $n$ 个格子,每个格子的取值为 $0 \sim m-1$.给定距离 $d$,则每次操作是将每个格子的值变为到它的距离不超过 $d$ 的所有格子的在操作之前的值的和除以 $m$ 的余数.给出 $n, m, d, k$ 和自动机各个格子的初始值.你的任务是计算 $k$ 次操作以后各格子的值.($1 \leq n\leq 500, 1 \leq m\leq 10^6, 0 \leq d\leq n/2, 1\leq k\leq 10^7$). 分析 如果我们把 $t$ 次操

细胞自动机

今天发奇想,想试试康威生命游戏.规则非常简单: 每个细胞有两种状态 - 存活或死亡,每个细胞与以自身为中心的周围八格细胞产生互动.(如图,黑色为存活,白色为死亡)当前细胞为存活状态时,当周围低于2个(不包含2个)存活细胞时, 该细胞变成死亡状态.(模拟生命数量稀少)当前细胞为存活状态时,当周围有2个或3个存活细胞时, 该细胞保持原样.当前细胞为存活状态时,当周围有3个以上的存活细胞时,该细胞变成死亡状态.(模拟生命数量过多)当前细胞为死亡状态时,当周围有3个存活细胞时,该细胞变成存活状态. (模

C语言 细胞自动机(生命游戏)

1 #include<stdio.h> 2 #include<stdlib.h> 3 #include <windows.h> 4 5 #define ROWS 60 6 #define COLS 60 7 8 int board[ROWS][COLS]; 9 int temp[ROWS][COLS]; 10 11 int system(const char *string); 12 void randomize_board(); 13 void show_board(

【转载】计算机图形学框架

原文: 计算机图形学框架 应用 基本图形生成算法 图元光栅化标准 直线要直 图元终点要准 图元生成的亮度.色泽粗细要均匀 快速计算 直线光栅化算法 逐点比较法 数值微分法 中点Bresenham算法 圆的光栅化算法 简单方程产生圆弧 Bresenham算法产生圆弧 多边形填充 扫描线填充 宽图元 复制像素画宽图元 移动画笔画宽图元 3D数学基础 坐标系 向量 矩阵 空间集合运算 集合形体的表达 几何体之间的关系 图形变换 二维及三维图形几何变换 二维图形几何变换 平移变换 比例变换 旋转变换 错