毕竟,是别人家的孩子......
这名叫Liam Ilan的12岁小女孩在Hackernews上低调写了一句话,仅数小时,便惊呆了一路众人:
我12岁了,正在学习JS,用Node写了Wolfram的元胞自动机
网友们不禁唏嘘,真是长江后浪推前浪,把我们全都拍在沙滩上!
来自12岁小女孩的杰作
小女孩在bitbucket中将自己的项目整理了下来:
使用方法
首先,使用下面的命令克隆repo:
$ git clone https://liamilan@bitbucket.org/liamilan/wolfram-cellular-automata.git
要运行项目,请输入目录,然后使用:
$ node index.js 18
或者:
$ node index.js {rule number between 0 to 255}
Development:
使用下方命令在目录中初始化:
$ npm init
用这个命令运行eslint:
$ npm run lint
元胞自动机,了解一下?元胞自动机(cellular automata,CA) 是一种时间、空间、状态都离散,空间相互作用和时间因果关系为局部的网格动力学模型,具有模拟复杂系统时空演化过程的能力。最早由冯诺依曼提出。
包含800个时间步的90号规则演化图案
不同于一般的动力学模型,元胞自动机不是由严格定义的物理方程或函数确定,而是用一系列模型构造的规则构成。凡是满足这些规则的模型都可以算作是元胞自动机模型。因此,元胞自动机是一类模型的总称,或者说是一个方法框架。
就形式而言,细胞自动机有三个特征:
平行计算(parallel computation):每一个细胞个体都同时同步的改变
局部的(local):细胞的状态变化只受周遭细胞的影响
一致性的(homogeneous):所有细胞均受同样的规则所支配
自元胞自动机产生以来,对于元胞自动机分类的研究就是元胞自动机的一个重要的研究课题和核心理论,在基于不同的出发点,元胞自动机可有多种分类。
其中,最具影响力的当属S. Wolfram在80年代初做的基于动力学行为的元胞自动机分类,而基于维数的元胞自动机分类也是最简单和最常用的划分。
Stephen Wolfram
而Wolfram创建的计算搜索引擎Wolfram|Alpha中,其在计算时候,显示的就是元胞自动机。
Wolfram|Alpha 的元胞自动机应该也是 Generations 一类,但肉眼不容易看出具体是什么规则。可通过 Mathematica,将其二值化,并拆分成一个个连通分支来看。
而后放进Golly里。下图所示是周期15的振荡子:
以及还有周期24的puffer:
热心网友评论
有网友将小女孩儿的成果给他12岁儿子看了一眼,结果那孩子快要惊掉下巴!
当然也有热心网友给这个小女孩提出改进建议的。
原文发布时间为:2018-08-30
本文作者:三石
本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”。
原文链接:天才女孩!12岁小学生写出冯·诺依曼提出的元胞自动机