Python的元胞自动机模拟

来自集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织
跳到导航 跳到搜索

什么是元胞自动机Cellular automata

这篇文章“释放比特自由”是一个很好的介绍。

这篇文章写于2007年9月,值得一提的是其中提到的最小图灵机,在2007年10月已经被找到并通过评审。

理解了希尔伯特的数学形式主义后,CA会变得更有意义。

800px

Wolfram介绍的四类元胞自动机,分别对应定点(fix),周期(periodic),混沌(chaotic),复杂(complex)。

基本代码的下载

这里下载定义(cellular automata)CA的代码,在这里下载相应的绘图程序(CADrawer)。

使用代码

    import sys
    sys.path.append('E:/wulingfei/CA')#保存CA和CADrawer的地址
    import CA
    import CADrawer
    
    
    def CAplot(rule,n,initiate):
        ca = CA.CA(rule, n)
        if initiate == "single":
            ca.start_single()
        else:
            ca.start_random()
        ca.loop(n-1)
        drawer = CADrawer.PyplotDrawer()
        drawer.draw(ca)
    
    
    CAplot(50,10,"random")

实验

使用CAplot(50,10,"random")这个命令,我们就得到以下图形

400px

这是第二类。

CAplot(18,64,"single")的结果:

CA figure 2.png

这也是第二类。

CAplot(30,100,"single")的结果:

400px

这是第三类。

CAplot(110,100,"single")的结果:

400px

CAplot(110,500,"random")的结果:

400px

这是第四类。

使用CA模拟大自然

哲学

最小模型的哲学:

500px

测试你的决定论信仰水平:

D1: Deterministic models can make accurate predictions for some physical systems.

D2: Many physical systems can be modeled by deterministic processes, but some are intrinsically random.

D3: All events are caused by prior events, but many physical systems are nevertheless fundamentally unpredictable.

D4: All events are caused by prior events, and can (at least in principle) be predicted.

你选D几?

更多哲学

1. 我们是生活在图灵机的纸带上的图灵机

看的到各种变化,实质是宇宙图灵机在计算时产生的内部花纹(pattern)。这些变化本身,有一些可以构成独立的(通用)图灵机,比如我们的大脑和计算机,因此有模拟其他变化的能力(理解世界,预测未来),有一些则不行,例如沧海桑田。


2. 数学是图灵机的一种形式

数学是对符号的变化,只要我们定义一个良性的符号系统,这个系统本身就成了(通用)图灵机。我们的脑力,就好像计算机的电流一样,在驱动这个符号系统的变化,并从中选择符合我们需求的结果(最简洁的符号表达)。这个系统的通用性使得它可以模拟其他变化,例如表达行星轨道,但这种通用性本身与人脑的思考无关,就好像图灵机的通用性与它是否正在工作无关。所以数学家常常会有这种感慨,好像数学有自己的生命,数学家只是发现,不是发明。


3. 科学就是一台图灵机试着以最小代价模拟另一台图灵机

科学就是要观察花纹(数据)并模拟这些花纹(模型或程序),更精确地说,找到能模拟花纹最短的程序(最小模型)。


4. 程序 = 数据

程序是对变化的表达,数据也是。数据就是直接观察到的图灵机的变化花纹,程序就是导致这些花纹的计算任务。两者是同一件事的在不同逻辑层次上的表达:程序比数据高一层。数据是直接观察花纹,程序是对制造花纹的图灵机的理解,或者模拟。“程序 = 数据” 这个表达更深刻的意义是,它描述了两个图灵机的嵌套结构,A图灵机上运行着虚拟图灵机B,B的程序(计算任务)实际上在A这个层次也是不过是一堆花纹。当B认识到这件事,并且可以通过自身花纹的变化来影响A的花纹变化,即修改关于自己的程序时,B就可以被定义为生命体。


5. 大数据是用数据代替程序

机器学习基于大量用户行为训练得到的矩阵,可以看做是数据,也可以看做是程序 - 因为矩阵实际上是一种线性变换,所以也可以看做是函数或者程序。大数据之所以出现,是因为对于复杂的天气和人类行为,尚未找到有效的简洁程序,只好用数据,也就是花纹,来代替更简洁的表达。我们把所有可能的花纹变化都储存下来,当出现新的花纹,我们当然就可以预测可能的变化。大数据需要高性能的(并行)储存和计算资源,不是值得夸耀的事,恰恰说明科学的落后。但大数据不是完全没有科学的一面,用一部分特征代替所有可能的特征,用更小的矩阵代替大的矩阵,这个努力的方向,就是数据转变为程序,或者不精简的程序转变为精简程序的尝试。


相关wiki