第271行: |
第271行: |
| | | |
| 最简单的元胞自动机就是一维的元胞自动机。在其上,每个元胞都有黑、白两种颜色,每个元胞都有左右两个邻居。由于每个元胞有两个状态,这样,当前元胞加上左右两个邻居一共就有8种状态: | | 最简单的元胞自动机就是一维的元胞自动机。在其上,每个元胞都有黑、白两种颜色,每个元胞都有左右两个邻居。由于每个元胞有两个状态,这样,当前元胞加上左右两个邻居一共就有8种状态: |
− | | + | <center> |
| [[File:8种状态.png|屏幕快照 2015-12-11 23.34.46.png]] | | [[File:8种状态.png|屏幕快照 2015-12-11 23.34.46.png]] |
− | | + | </center> |
| 他们表示的状态分别是:000,001,010,011,100,101,110,111,其中0表示白色,1表示黑色。 | | 他们表示的状态分别是:000,001,010,011,100,101,110,111,其中0表示白色,1表示黑色。 |
| | | |
| 下面考虑规则,由于元胞自动机的规则就是根据每个元胞和它的邻居的当前状态转移到下一个时刻该元胞的状态。无论规则是什么样的黑箱,它的输入就是上面列出的8种组合之一,因为表示的是每个元胞下一时刻的状态,而状态只可能有0、1两种,则规则的输出要么是0,要么是1。这样,任何一个规则都是一个或者一组转换,比如下图表示的就是一条规则: | | 下面考虑规则,由于元胞自动机的规则就是根据每个元胞和它的邻居的当前状态转移到下一个时刻该元胞的状态。无论规则是什么样的黑箱,它的输入就是上面列出的8种组合之一,因为表示的是每个元胞下一时刻的状态,而状态只可能有0、1两种,则规则的输出要么是0,要么是1。这样,任何一个规则都是一个或者一组转换,比如下图表示的就是一条规则: |
− | | + | <center> |
| [[File:规则1.png|屏幕快照 2015-12-11 23.36.07.png]] | | [[File:规则1.png|屏幕快照 2015-12-11 23.36.07.png]] |
− | | + | </center> |
| 另外,若有一个规则是:“如果输入的三个元胞中黑色方格只有1个,那么下一时刻当前元胞就是黑色”可以表示成下面的图: | | 另外,若有一个规则是:“如果输入的三个元胞中黑色方格只有1个,那么下一时刻当前元胞就是黑色”可以表示成下面的图: |
− | | + | <center> |
| [[File:规则2.png|屏幕快照 2015-12-11 23.36.54.png]] | | [[File:规则2.png|屏幕快照 2015-12-11 23.36.54.png]] |
− | | + | </center> |
| 下面我们再把目光转到规则集上。由于每一条规则都是一个状态或一组状态的转换,那么把输入的8种可能情况转换到当前元胞的下一状态。我们可以用一个转换表表示一组规则集,例如: | | 下面我们再把目光转到规则集上。由于每一条规则都是一个状态或一组状态的转换,那么把输入的8种可能情况转换到当前元胞的下一状态。我们可以用一个转换表表示一组规则集,例如: |
− | | + | <center> |
| [[File:规则3.png|屏幕快照 2015-12-11 23.37.37.png]] | | [[File:规则3.png|屏幕快照 2015-12-11 23.37.37.png]] |
− | | + | </center> |
| 这个规则集也可以用下面的一组数字表示为: | | 这个规则集也可以用下面的一组数字表示为: |
− | | + | <center> |
| [[File:规则集1.png|屏幕快照 2015-12-12 00.36.36.png]] | | [[File:规则集1.png|屏幕快照 2015-12-12 00.36.36.png]] |
− | | + | </center> |
| 每一组规则集也可以表示成类似于上面的图和表,例如下面的另外一组规则 | | 每一组规则集也可以表示成类似于上面的图和表,例如下面的另外一组规则 |
− | | + | <center> |
| [[File:规则集2.png|屏幕快照 2015-12-12 00.36.43.png]] | | [[File:规则集2.png|屏幕快照 2015-12-12 00.36.43.png]] |
− | | + | </center> |
| 由于邻居加上当前元胞一共8种状态,每一个状态对应两种可能转换规则,所以规则一共就有<math>2^8=256</math>种,我们可以为每一个规则编码,然后对其进行穷举。 | | 由于邻居加上当前元胞一共8种状态,每一个状态对应两种可能转换规则,所以规则一共就有<math>2^8=256</math>种,我们可以为每一个规则编码,然后对其进行穷举。 |
| | | |
| 下面我们来考察这256中元胞自动机所具备的可能动态行为。对于一维的情况,我们假设所有的元胞都分布在一条直线上,并且直线的长度为300,也就是说有300个元胞在这条直线上,那么一条断续的横线就是当前所有细胞状态的一种分布。这些方格随着时间变化,就形成了不同的横线。我们把这些随着时间变化的线纵向拼在一起形成了一个网格区域。其中纵轴表示时间的流逝(往下为正),横轴为“元胞自动机在对应时刻的状态,就能得到一幅图像: | | 下面我们来考察这256中元胞自动机所具备的可能动态行为。对于一维的情况,我们假设所有的元胞都分布在一条直线上,并且直线的长度为300,也就是说有300个元胞在这条直线上,那么一条断续的横线就是当前所有细胞状态的一种分布。这些方格随着时间变化,就形成了不同的横线。我们把这些随着时间变化的线纵向拼在一起形成了一个网格区域。其中纵轴表示时间的流逝(往下为正),横轴为“元胞自动机在对应时刻的状态,就能得到一幅图像: |
− | | + | <center> |
| [[File:元胞自动机图像.png|屏幕快照 2015-12-12 00.42.38.png]] | | [[File:元胞自动机图像.png|屏幕快照 2015-12-12 00.42.38.png]] |
− | | + | </center> |
| 这个元胞的每一行都是某一个时刻元胞自动机的状态。因而从上到下数第1、2、3、4、5、6行可以分别表示第1、2、3、4、5、6时间步的元胞自动机状态。因此这里的一个平面的图案就是元胞自动机在时间上的发展动态。下面我们分别挑选几种典型的动态情况示于下图(下方的数字是元胞自动机的编码): | | 这个元胞的每一行都是某一个时刻元胞自动机的状态。因而从上到下数第1、2、3、4、5、6行可以分别表示第1、2、3、4、5、6时间步的元胞自动机状态。因此这里的一个平面的图案就是元胞自动机在时间上的发展动态。下面我们分别挑选几种典型的动态情况示于下图(下方的数字是元胞自动机的编码): |
| | | |