老烟枪吧 关注:622贴子:35,854

细胞自动机 Cellular Automata (元胞自动机)

只看楼主收藏回复


2002, 1, 10 吴文成 
 
  细胞自动机(Cellular Automata)最初由数学家 Stanislaw M. Ulam(1909-1984)与 John von Neumann(1903-1957)於 1950 年代所提出 ,在型态表现上,细胞自动机是一个离散型的动力系统( Discrete Dynamical Systems)。在 1940 年代 ,von Neumann 与共事的科学家们合作设计了可储存程式的数位电脑之後,他就对自我复制发生兴趣:能储存程式的机器能不能自我复制
? von Neumann 认为,至少在原则上与形式上是可行的,於是他开始作这方面的理论研究,过程中他提出了「细胞自动机」的概念, 这个实际构想是由罗沙拉摩斯的数学家 Ulam 所建议的
。当细胞自动机在电脑上模拟的时候,几乎可以复制出类似於自然界当中实际发生的动力系统运作,这使得细胞自动机成为了研究复杂系统行为的最初理论框架,罗沙拉摩斯的博士後研究员 Christopher Langton 因而提出了「人工生命」( Artificial Life )这个名词 , 细胞自动机便是人工生命的第一个雏形,并且变成复杂性科学,或者说是复杂适应性系统的其中一支。 
  细胞自动机是由一些特定规则的格子所组成,每个格子看做是一个细胞;每一个细胞可以具有一些状态,但是在某一时刻只能处一种状态之中。随著时间的变化(我们称作「叠代」过程),格子上的每一个细胞根据周围细胞的情形,按照相同的法则而改变状态,换句话说,一个细胞的状态是由上一个时刻所围绕的细胞的状态所决定。以人工生命的角度来看,细胞自动机可以视为一个让许多单细胞生物生活的世界,在我们设定好这个世界的初始状态之後,它们便按照同一个规则做演化。 

  设计一个细胞自动机需要包含几个部份:

  ◆ 决定细胞活动空间的维度
  ◆ 定义细胞可能具有的状态
  ◆ 定义细胞改变状态的规则
  ◆ 设定细胞自动机中各个细胞的初始状态

  细胞自动机,在细胞活动的空间上,可以是一维的,二维的,三维的,或更高维度,在这个网页,笔者要分别介绍二维的细胞自动机(也称作「生命游戏」),与一维的细胞自动机。透过不同的设计,细胞自动机可以展现无限的多样性,其中最让人惊异的是有些细胞自动机可以产生存在於大自然的景象,例如贝壳上的图案、雪花的结构、蜿蜒的河流等等,另外,我们也可以发现,这些小方格的变化似乎展现了许多真实生命的特质,例如,细胞自动机中的细胞们会像有机生物一般,有移动、成长、灭亡与自我复制等类似的行为。

  就形式而言,细胞自动机有三个特徵:

  ◆ 平行计算(parallel computation):每一个细胞个体都同时同步的改变
  ◆ 局部的(local):细胞的状态变化只受周遭细胞的影响。
  ◆ 一致性的(homogeneous):所有细胞均受同样的规则所支配


  事实上,有些研究学者更进一步猜测,我们存在的这个宇宙是否就是一种极其复杂的细胞自动机,我们的宇宙的确与理论上的细胞自动机有很多相似的地方,像是上述的细胞自动机之三个特徵,宇宙也都符合:宇宙是平行处理的,宇宙中的每一点受邻近状态的影响最大,宇宙各处遵循著同样的自然律。虽然与整个宇宙相比,细胞自动机的规则是过於简单,但是它里面所蕴含的道理可能与宇宙的机制是相通的。 理论物理学家 Stephen Wolfram(1959-)就指出 ,细胞自动机的数学架构,与一些造成真实世界的复杂物理系统之数学架构是完全一样的,也许这正是掌管遗传重任的 DNA 所赖以工作的原理 。当你看到自然界那些贝壳或指纹曲折的图案时,不免要问 :「这麼复杂的图案要如何编码到 DNA 里头呢?」Wolfram 说 :「如果我猜的不错,那些图形是由类似於细胞自动机的简单法则所产生的,而这样的编码显然是易如反掌。」

  细胞自动机以简单的规则,却能够产生复杂的动态交互现象,显然我们不该只是以一个数学游戏,来看待它。这些年来,细胞自动机已经被运用於不同领域的研究,包括通讯、计算、建设、生长、再生、竞争及演化。细胞自动机已为物理中平常的微分方程式提供极为简单的模型,例如热和波的波动方程,同时也为湍流、混沌、碎形等提供了离散型的模型,最後,利用细胞自动机所做的生物模型也被提出。接下来,笔者将尽可能地介绍细胞自动机的规则、范例与相关资讯,以下的介绍分为两种不同类型的细胞自动机:
 



IP属地:山东1楼2007-03-16 17:37回复
    ab


    3楼2007-03-16 17:41
    回复
      ◆ 第二类:在叠代过程中,细胞群会在有限的叠代次数内周期循环其状态(形状),最著名的代表就是所谓的「闪光灯」(blinker)


      4楼2007-03-16 17:42
      回复
          ◆ 第三类:是第二类的延伸,除了会周期循环其状态(形状)之外,还会稳定地移动,最有名的代表就是所谓的「滑翔机」(glider)。

          像滑翔机这种会移动并维持形态的结构,似乎能够在生命游戏中扮演传递讯号的角色 。能够产生「滑翔机」的生命游戏,代表著它具有讯号储存与讯号传递的功能,而讯号(资料)的储存与传递(像是 DNA )是生物演化机制的重要特徵,也是建构一台电脑的必要条件, 这符合 von Neumann 当初的看法:细胞自动机可以建构一个以人工生命为计算单位的电脑雏形。同样地, Conway 也指出,飞行的滑翔机可以想像成川流不息的位元,滑翔机若能与其他滑翔机做巧妙的结合,便可以做符号运算,例如滑翔机的碰撞相当於逻辑闸,入射机群为输入,而碰撞後的碎片为输出, Conway 用数学去证明生命游戏在逻辑上,足以涵盖多用途数位电脑的全部功能,他甚至认为细胞自动机可以成为一部万用电脑。虽然 von Neumann 与 Conway 的理论构想是成立的,但是目前还没有人实际做出来。


        5楼2007-03-16 17:42
        回复
            介绍了几个简单的稳定结构,想必这些例子是无法满足你的好奇心。在下一个单元,笔者将介绍 Conway 生命游戏中几个比较复杂的著名范例


          6楼2007-03-16 17:43
          回复
            生命游戏的有趣范例 
             
              在了解生命游戏的规则,与几个简单的稳定结构後,笔者接著要举一些较为复杂的例子,让你更进一步了解,生命游戏之所以让众多玩家爱不释手的潜在魅力。为了循序渐进地操作这些范例,所以,笔者把范例分为两阶段,第一阶段是较小尺寸的例子,第二阶段便是宏伟壮观的形态变化。下面有两个 Java Applet,分别包含这两阶段的范例。

              这些 Java Applet 分成上、中、下三个部分,分别解说如下:

            ◆ 上端的部分显示范例选单与三个控制按钮: 
             ● 范例选单的「Clear」选项可以清除画面
            ● 范例选单的「Random」选项可以随机设定初始状态
            ●「Start」按钮,按下之後,便开始连续的叠代过程
            ●「Step」按钮,按下之後,可以单步执行个别的叠代演算
            ●「Stop」按钮,按下之後,可以让你暂停所有的叠代演算 
            ◆ 中间的部分显示细胞叠代过程的图像: 
               当格子设定成很小时,便不画出格线。当你用滑鼠在方格间移动时,你可以在浏览器的状态列看见滑鼠的所在座标,与该处细胞的状态,与其(正常存活的)邻居数;当你用滑鼠在方格中轻按时,你便可以把死细胞变成活细胞,活细胞变成死细胞,自己可以订作出想要的细胞形态。 
            ◆ 下端的部分显示叠代状态与目前生命游戏所设定的规则: 
             ● 叠代标签:显示目前是否正进行叠代演算
            ● 规则标签:使用的是「规则通用表示法」,在这里 Conway 生命游戏的规则表示
              成 23/3,或 23/3/0,下个单元笔者将开始介绍不同规则的生命游戏。 

              想要了解更多这个 Java Applet 的细节吗?请按 这里。


            --------------------------------------------------------------------------------

            第一阶段

              这是大小 50x50 的生命游戏 ,总共有 21 个范例,这些范例都会维持一定的稳定形态。当然,像这样从一开始就呈现稳定形态的范例,是由於我们刻意安排其初始状态的缘故。生命游戏有个非常重要的特徵,就是这个系统对於环境的任何改变是非常敏感的,这个影响可能造成原本稳定的状态陷入不规则的紊乱之中。例如,当我们在这些范例的叠代过程中,任意加入一个活细胞,就很有可能马上破坏画面中原本维持的稳定性,这会使得画面陷入一阵混乱,而我们要问:混乱过後,会发生什麼事呢?

              就 Conway 生命游戏的规则而言(下面所提的结论,不见得对其他规则的生命游戏是有效的),不管初始的图像是什麼,也不管一开始叠代就是稳定的还是混沌的,生命游戏最後都会倾向出现稳定的细胞生态。到最後,整个图像会由几个稳定的(静态的,周期式的,与移动而周期式的)分群所组成,或者到最後,所有的细胞都会灭绝。因此, Conway 的生命游戏可以看成是对达尔文演化论的模拟,族群最後会适者生存,不适者淘汰,而达成稳定的形态。


            7楼2007-03-16 17:43
            回复
                生命游戏本身还有许多可以探讨的部分,接下来的三个单元,笔者将介绍生命游戏的规则变化,从这些规则的变化我们将发现:其中几个不同的规则会比 Conway 所提出的规则,更能够贴近生命行为的模拟,它们叠代到最後可能不是稳定的,而是混沌,或是介於两者之间


              10楼2007-03-16 17:44
              回复
                  这个单元主要在介绍规则可以向哪几个方面来做改变,而这些规则的改变才真正开启了生命游戏的迷人之处。在下个单元,笔者将继续介绍不同规则的范例,将有更多的丰富色彩与让人想像不到的形态变化


                14楼2007-03-16 17:45
                回复
                  生命游戏的规则变化(二) 
                   
                    生命游戏的规则 ,除了特殊设定之外,主要集中在 Survivals、 Births 与 Ghosts 三个项目的变化上。在这个单元,笔者将把这个领域的研究者们陆续所发现的有趣规则,与其特徵作了一个简单的整理,表列如下。对於每个规则你都可以在点选连结後,看到该规则的范例。在表列中,规则的名称大多是根据其特徵所取的,此外,其中对於规则的「描述」并不是广泛性的,也不可能完全涵盖其特徵,不过你可以观察不同规则的范例,以检视它们彼此特徵的差异:

                  ◆ 这里表列的是规则中 ghosts=0 的状况 ,但是你会发现有的范例运用了不同的色系,那是因
                    为笔者怕色彩太过於单调,所以对於不同叠代过程所出现的活细胞,给了不同的颜色:


                  15楼2007-03-16 17:46
                  回复
                    ab


                    16楼2007-03-16 17:50
                    回复
                      ◆ 这里表列是的规则中 ghosts>0 的状况,这里可以产生的规则更是多样化


                      17楼2007-03-16 17:51
                      回复
                          以上所列出的规则,只是千万种变化中的其中几十个,而每一个规则都可以做更为深度的探讨,例如该规则在叠代过程中是倾向稳定的、混沌的,还是倾向其他的形态?例如它的特徵是扩展的、皱缩的,还是突发的?例如该规则的细胞群落是否会出现类似生命现象的行为?这些规则正被人工生命领域的学者、复杂性科学领域的学者,与电脑玩家们持续地研究著,无论是其中美丽的图样,还是叠代过程中所展现的复杂行为,都吸引著人们的目光。在下个单元,笔者将持续地举出几个个人比较喜欢的范例。


                        18楼2007-03-16 17:51
                        回复
                          生命游戏的规则变化(三) 
                           
                            生命游戏之千变万化,就像是地球上许多不同种类的生物展现各自的风采。在品味巧夺天工的彩绘与艺术创作之馀,笔者的兴趣还是在於类似生物行为的模拟,所以在上个单元与这个单元,笔者特别选入了几个类似细胞繁殖与微生物迁移现象的范例,例如:

                          在上个单元的范例中(你可以直接点选连结,观察该范例):

                           ● Assimilation:两只变形虫相遇之後,合而为一,但是变形为菱形时,就不再调整形状
                           ● Coagulations:细菌的繁殖行为,并在过程中形成稳定的群落结构
                           ● Coral、Lines:不同样式的细菌繁殖现象,细菌本身并呈现不同的排列纹路
                           ● HighLife:非常有趣也很生动的节状微生物,其中有移动、排泄与自我复制的行为
                           ● Maze、Mazectric:像是医生在培养皿里作细菌培养,而细菌在繁殖後留下了条状痕迹
                           ● Swirl:不同品种的细菌处於拥挤的空间,在自相残杀之後,只留下身强体壮的螺旋菌
                           ● WalledCities:细菌们在建立群落,而且越大型的群落向外扩展范围的速度也越快

                          在下面所展示的范例中:

                           ● Amoeba:变形虫在调整自己的身体形状,以适应周遭的环境。如果你用滑鼠把变形虫的
                                 身体「点」掉一些,你会发现它马上又会「再生」出完整的身体
                           ● Flakes (2):像是胚芽在横向生长的过程中,遇到阻碍便改变生长方向,直到停止生长
                           ● Replicator:其中有五个细胞在做细胞复制与分裂,这是非常生动的模拟

                            你会发现这几个类似生物行为的范例,它们的特徵既不完全地稳定,却也不会陷入混沌般的疯狂状态,似乎有一定的结构支配其中。在下个单元,笔者将介绍 Wolfram 对於细胞自动机的规则所提出的「四种普遍性等级」,我们会发现:原来生命现象是介於秩序与混沌之间。


                          19楼2007-03-16 17:51
                          回复
                            该游戏见:http://www.atlas-zone.com/complex/alife/ca/ca2/page5.htm


                            20楼2007-03-16 17:52
                            回复
                                在这三个单元约略地介绍了生命游戏的规则变化,在这里你也可以自己动手玩生命游戏,甚至发现属於自己的有趣规则,例如,笔者就提出了 Sinner Rule(S/B/G=1358/0/1)。

                                为了方便你自己动手玩生命游戏,在上面的 Java Applet 中,笔者提供了四组控制项可以让你直接在线上改变参数,包括让你修改规则、色彩、随机密度与方格的大小。你可以在叠代过程中同步修改规则、色彩与方格大小,这个改变会马上显现在画面上,其中色彩控制项的 S 代表 StartColor,E 代表 EndColor, 0 代表蓝色,1 代表绿色, 2 代表黄色 ,3 代表红色 。如果你还是不了解这些细节,请参考 这里。

                                在你动手玩生命游戏的时候,建议你对照第四单元的规则列表,对於每一个规则先设定简单的初始图样,例如 1x2、2x2 或 3x3 …… 看看叠代的变化如何,再选择选单中「Rondom」随机细胞分布的方式,比较看看演化的结果;或者,直接用滑鼠修改范例中的细胞分布,观察这样的改变对於下一步的叠代会有什麼影响。这样你会比较容易发现该规则的特徵,与其中有趣的形态。


                              21楼2007-03-16 17:52
                              回复