Processing能够以相对简单的方式对很多元胞自动机进行模拟,此外它还内置了一些例子。比如file/examples/topics/cellularautomata/game of life 就是很简单的一个,它把画布切割成网状格,每个格子只有两种状态:“生”和“死”,而这种状态由环绕着它的八个格子的生死状态来决定,只有当八个格子中有两个或三个“生格子”的时候,该格子才能“生”,大于三个,则因“拥挤”而死,小于两个,则因“孤独”而死。遵循着这个原则,画布上所有格子不断进化,生生死死,最后得到一个相对较稳定的状态。这个模型说起来也是对生活中很多现象的抽象化表达。
题图的砂堆模型,应用的是另一种元胞自动机的规则,叫做blockcellularautomaton,可以译作分块式元胞自动机,就是把所有元胞按照位置分为若干个均匀的“块”,每一各块内部的元胞根据规则作出相应活动;紧接着下一步把元胞重新划块,重新块内作用;再分块,再作用,周而复始,不断变化。这在模拟物理运动时非常好用(这几句看不懂没关系,继续往下看)。
Margolusneighborhood就是这个分块式模型里最简单的模型。把平面内所有元胞按照2*2分割成块(如绿线所示分割),计算块内四个元胞的相互作用并更新状态;然后错一行一列重新进行分割(如蓝线),块内相互作用并更新元胞状态;再按绿线分割;再按蓝线分割;如此往复。

