第37行: |
第37行: |
| | | |
| | | |
− | 运行上面的程序,观察<math>λ</math>的不同,细胞自动机产生的动态行为如何变化。拖动中间的滑块可以更改<math>λ</math>的数值。右边New按钮可以在当前的λ下随机产生新的规则,底下的几个选择框分别更改状态个数、邻居模板个数(注意这个数字包括该细胞自己,比如N=5,那么左边两个细胞,右边两个细胞,再加上中间的细胞,所以邻居半径是2),Isotropic表示规则是不区分左右对称的方格状态的,Anisotropic则是区分的,因此Anisotropic产生的编码比较长,下面的Random Start表示从一个随机的状态开始,Random Clump表示从一个随机的小块开始演化。One Dot Start表示从一个点的初始状态开始演化。下面的文本框里面显示的是当前规则的编码。下面将具体说明其中的原理。 | + | 运行上面的程序,观察<math>λ</math>的不同,细胞自动机产生的动态行为如何变化。拖动中间的滑块可以更改<math>λ</math>的数值。右边New按钮可以在当前的<math>λ</math>下随机产生新的规则,底下的几个选择框分别更改状态个数、邻居模板个数(注意这个数字包括该细胞自己,比如<math>N=5</math>,那么左边两个细胞,右边两个细胞,再加上中间的细胞,所以邻居半径是2);Isotropic表示规则是不区分左右对称的方格状态的Anisotropic则是区分的,因此Anisotropic产生的编码比较长,下面的Random Start表示从一个随机的状态开始,Random Clump表示从一个随机的小块开始演化。One Dot Start表示从一个点的初始状态开始演化。下面的文本框里面显示的是当前规则的编码。下面将具体说明其中的原理。 |
| | | |
| 为了更好的看清楚细胞自动机的动态行为,我们选用4个状态{0,1,2,3},邻居半径为2(一共4个邻居)的一维细胞自动机来讨论,因为这种细胞自动机包含了所有的四种类别。 | | 为了更好的看清楚细胞自动机的动态行为,我们选用4个状态{0,1,2,3},邻居半径为2(一共4个邻居)的一维细胞自动机来讨论,因为这种细胞自动机包含了所有的四种类别。 |
| | | |
− | 我们知道,在给定了状态集{0,1,2,3},邻居半径2的一维情况下,细胞自动机的规则集决定了它们的不同。每一个细胞自动机的规则集都可以看成是一张大的转换表,形如: | + | 我们知道,在给定了状态集<math>{0,1,2,3}</math>,邻居半径2的一维情况下,细胞自动机的规则集决定了它们的不同。每一个细胞自动机的规则集都可以看成是一张大的转换表,形如: |
| | | |
− | 其中每个输入的5位数字串中,中间的一个表示当前细胞的t时刻的状态,两边的数字都是它的邻居状态,而输出则对应当前细胞在t+1时刻的状态。表中一共有45=1024项,这其中有些输出项为0状态,有些不为0,我们把所有输出项为0的个数记为nq。那么我们可以定义参数:
| + | 其中每个输入的5位数字串中,中间的一个表示当前细胞的t时刻的状态,两边的数字都是它的邻居状态,而输出则对应当前细胞在<math>t+1</math>时刻的状态。表中一共有45=1024项,这其中有些输出项为0状态,有些不为0,我们把所有输出项为0的个数记为<math>nq</math>。那么我们可以定义参数: |
| {| class="wikitable" | | {| class="wikitable" |
| |输入||01203||03120||12231||...... | | |输入||01203||03120||12231||...... |
第50行: |
第50行: |
| |}其中每个输入的5位数字串中,中间的一个表示当前细胞的t时刻的状态,两边的数字都是它的邻居状态,而输出则对应当前细胞在t+1时刻的状态。表中一共有<math>4^5=1024</math>项,这其中有些输出项为0状态,有些不为0,我们把所有输出项为0的个数记为<math>n_q</math>。那么我们可以定义参数:<center><math>\lambda = (4^5-n_q)/4^5</math></center>这个参数反映了一组规则中转换成非0状态的比例。显然,根据给定的λ我们可以得到很多的规则表,因此我们可以随机的在这些规则表中选择一个。比如令λ=0.5,那么我们可以随机的生成一个规则组转换表,表的输出部分0状态占据了一半的比例,其他的位置由1,2,3这几个数随机的填充。 | | |}其中每个输入的5位数字串中,中间的一个表示当前细胞的t时刻的状态,两边的数字都是它的邻居状态,而输出则对应当前细胞在t+1时刻的状态。表中一共有<math>4^5=1024</math>项,这其中有些输出项为0状态,有些不为0,我们把所有输出项为0的个数记为<math>n_q</math>。那么我们可以定义参数:<center><math>\lambda = (4^5-n_q)/4^5</math></center>这个参数反映了一组规则中转换成非0状态的比例。显然,根据给定的λ我们可以得到很多的规则表,因此我们可以随机的在这些规则表中选择一个。比如令λ=0.5,那么我们可以随机的生成一个规则组转换表,表的输出部分0状态占据了一半的比例,其他的位置由1,2,3这几个数随机的填充。 |
| | | |
− | 下面看看根据参数λ的取值不同,细胞自动机的动态行为如何变化。请运行上面的程序,让λ在0到1之间变化。
| + | 下面看看根据参数λ的取值不同,细胞自动机的动态行为如何变化。请运行上面的程序,让<math>λ</math>在0到1之间变化。 |
− | *当λ=0~0.1,所有的细胞被吸引到一种固定的状态,这相当于我们上一节叙述的第一类细胞自动机; | + | *当<math>λ=0~0.1</math>,所有的细胞被吸引到一种固定的状态,这相当于我们上一节叙述的第一类细胞自动机; |
− | *λ=0.2附近,系统在一些固定的状态之间周期的循环,这相当于第二类细胞自动机,λ=0.3的细胞自动机比λ=0.2的在开始的时候具有更复杂的结构; | + | *<math>λ=0.2</math>附近,系统在一些固定的状态之间周期的循环,这相当于第二类细胞自动机,<math>λ=0.3</math>的细胞自动机比<math>λ=0.2</math>的在开始的时候具有更复杂的结构; |
− | *λ介于大约0.3到0.6之间的时候,会出现相当复杂的结构。这些结构既不属于固定的周期或者固定值,也不属于完全的随机,因此这些细胞自动机属于第四类即“复杂型”。并且,随着λ的增长,复杂结构的维持时间也会变得越来越大; | + | *<math>λ</math>介于大约0.3到0.6之间的时候,会出现相当复杂的结构。这些结构既不属于固定的周期或者固定值,也不属于完全的随机,因此这些细胞自动机属于第四类即“复杂型”。并且,随着λ</math>的增长,复杂结构的维持时间也会变得越来越大; |
− | *λ>=0.6的时候,复杂的结构消失,系统将被吸引于一种完全随机的混沌状态。 | + | *<math>λ>=0.6</math>的时候,复杂的结构消失,系统将被吸引于一种完全随机的混沌状态。 |
| 由于在实验中,规则是根据λ随机产生的,因此我们在这里说明的动态行为随λ的变化性质仅仅是一种大致的分类。 | | 由于在实验中,规则是根据λ随机产生的,因此我们在这里说明的动态行为随λ的变化性质仅仅是一种大致的分类。 |
| | | |