セルオートマトン
セルオートマトンは配列中のセルの値が局所ルールによって離散的なステップで変更される多くのシステムを表現する便利な方法を提供する.
セルオートマトンの進化の生成
これは与えられたリストから始め,ルール30で4ステップ進化させる.
| Out[1]= |  |
|
これはルール30の進化をランダムな初期条件から始めて100ステップまで表示する.
| Out[2]= |  |
|
次は,与えられたリストから始め,ルール30を4ステップ進化させる.
| Out[3]= |  |
|
| {a1,a2,...} | 値ai の明示的リスト |
| {{a1,a2,...},b} | b 背景に重ねた値ai |
| {{a1,a2,...},blist} | blist の反復による背景に重ねた値ai |
| {{{{a11,a12,...},{d1}},...},blist} | オフセットdi による値aij |
1次元のセルオートマトンにおける初期条件の指定方法
初期値の明示的なリストを与えると,
CellularAutomatonはリスト中の要素を反復させることでシステムのすべてのセルに対応すると考える.
| Out[4]= |  |
|
小さな「種」区域を安定した「背景」に重ねるように初期条件を設定すると便利なことがよくある.デフォルトは,
CellularAutomatonは指定された進化ステップ数で作られるパターンの大きさをカバーするに足る背景を自動的に埋める.
これはルール30が1個の黒いセルを含む初期条件から進化する様子を示している.
| Out[5]= |  |
|
これは {1, 0, 1, 1}ブロックの繰返しからなる背景上で,ルール30が {1, 1}という種で構成される初期条件から進化する様子を示している.
| Out[6]= |  |
|
構造間の相互作用を研究する際は特に,特定のブロックが特定のオフセットで置かれているセルオートマトンの初期条件を指定したいことがある.
これはオフセット ±40の黒いセルという初期条件を設定する.
| Out[7]= |  |
|
| n | k=2,r=1,初期ルール |
| {n,k} | k 色の一般最近傍ルール |
| {n,k,r} | k 色で範囲r の一般ルール |
| {n,{k,1}} | k の最近傍totalisticルール |
| {n,{k,1},r} | k 色で範囲r のtotalisticルール |
| {n,{k,{wt1,wt2,...}},r} | 近傍i に重みwti が割り当てられたルール |
| {n,kspec,{{off1},{off2},...,{offs}}} | 指定のオフセットの近傍ルール |
| {lhs1->rhs1,lhs2->rhs2,...} | 近傍ルールの明示的な置換 |
| {fun,{},rspec} | 関数 fun を各近傍リストに適用して得られるルール |
1次元のセルオートマトンのルール指定
最も単純な場合は,セルオートマトンは各セルに
k 個の可能な値あるいは「色」を許容し,各辺で最高
r までの近傍を含むルールを持つ.「ルール番号」
n の各桁の数字は各近傍の可能な設定において新たなセルが何色になるかを指定する.
| Out[8]= |  |
|
これは k=2で r=1のセルオートマトンの8つの可能な近傍である.
| Out[9]= |  |
|
これは8つの近傍のそれぞれの中央セルの新たな色を示す.
| Out[10]= |  |
|
ルール30によると,このシーケンスは数30の2進法表現での各桁の数字に対応する.
| Out[11]= |  |
|
これは k=3で r=1の一般ルールでルール番号921408を実行する.
| Out[12]= |  |
|
一般的なセルオートマトンのルールでは,ルール番号の各桁の数字が
2r+1個のセルの可能な近傍が何色になるかを指定する.どの数字がどの近傍に当たるのかが知りたければ近傍中のセルを数字の桁とみなせばよい.
r=1のセルオートマトンでは数字は
neig.{k^2, k, 1}によって近傍中の要素
neig のリストから得られる.
「
totalistic 」なセルオートマトンを考慮するとよいこともある.「
totalistic 」なセルオートマトンではセルの新たな値が近傍の値の合計のみに依存する.「
totalistic 」なセルオートマトンはルール番号あるいは各桁の数字が例えば
neig.{1, 1, 1}から得られるように,与えられた総和の値で近傍を参照する「コード」で指定することができる.
一般に,
CellularAutomatonを使っていかなる重みのシーケンスを使ったルールでも指定することができる.これとはまた別の便利な点に
{k, 1, k}がある.これはouter totalisticルールを与える.
これはコード番号867で, k=3, r=1のtotalisticルールを実行する.
| Out[13]= |  |
|
領域
r のルールはオフセットが
-r から
+r までのすべてのセルを含む.時には特定のオフセットのセルだけを含むルールを考えると便利なことがある.そのような場合は,単一の
r をオフセットのリストで置換するとよい.
任意の
k=2セルオートマトンルールはブール関数に対応すると考えることができる.最も単純な例として,
Andまたは
Norのような基本的なブール関数は2つの引数を取る.これはセルオートマトンのルールを使ってオフセット
{{0}, {1}}であると指定することができる.より高次元のセルオートマトンを扱う上での互換性のために,例え1次元のセルオートマトンであってもオフセットは常にリストで与える点に注意のこと.
これはセルが2つの近傍ルール番号7の真理値表を生成する.このルールはブール関数Nandであることが分かる.
| Out[14]= |  |
|
ルール番号はセルオートマトンルールの非常に簡潔な指定方法を提供する.しかし,各可能な近傍に適用すべき明示的関数を与えるルールを指定する方がより便利なことがある.
これはルールがモジュロ4の各近傍のすべての値を追加する追加的セルオートマトンを実行する.
| Out[15]= |  |
|
この関数には第2引数にステップ数が与えられている.
| Out[16]= |  |
|
関数でルールを指定する場合,セルの値は整数ではなくてもよい.
| Out[17]= |  |
|
| Out[18]= |  |
|
保存ステップの選択
これはルール30を5ステップ,最後のステップだけを保存して実行する.
| Out[19]= |  |
|
| Out[20]= |  |
|
| Out[21]= |  |
|
ステップ指定
spect は
Takeを使ってリストから要素を取り出すのに似ている.違いは,セルオートマトンの初期条件がステップ
0とみなされる点である.
{...}の形式のステップ指定はどれも追加リストに埋め込まれていなければならない.
| u | 0から u までのステップ |
| {u} | ステップ u |
| {u1,u2} | u1 からu2 までのステップ |
| {u1,u2,du} | ステップu1, u1+du, ... |
セルオートマトンのステップ指定
これは100ステップ進化するが1つおきのステップしか保存しない.
| Out[22]= |  |
|
保存するステップとセルの選択
セルオートマトンの進化の過程でどのステップを保存するかを指定できるように,どのセルを保存するかも指定できる.
{a1, a2, ...}, blist のような初期条件を与えると,
ai はどのセルを保存するかを指定するためにオフセットが0であると解釈される.
| All | 指定された初期条件に影響されるすべてのセル |
| Automatic | 領域内の背景とは異なるすべてのセル(デフォルト) |
| 0 | aspec のはじめと並んでいるセル |
| x | 右側にオフセットx までのセル |
| -x | 左側にオフセットx までのセル |
| {x} | 右側にオフセットx のセル |
| {-x} | 左側にオフセットx のセル |
| {x1,x2} | オフセットx1 からx2 までのセル |
| {x1,x2,dx} | x1, x1+dx, ... のセル |
セルオートマトンのセル指定
これはすべてのステップを保存するがオフセットが左側に20より大きいセルは除去する.
| Out[23]= |  |
|
| Out[24]= |  |
|
{{a1, a2, ...}, blist} のような初期条件を与えると,
CellularAutomatonは常に,あたかも無限のセルがあるかのように効果的にセルオートマトンを行う.
{x1, x2}のような
specx を使うことで,
CellularAutomatonに
x1 から
x2 までの特定のオフセットのセルだけを出力に含むように指示することができる.
CellularAutomatonはデフォルトにより背景
blist と同じ値に留まらない程度に十分に離れたセルを含む.
一般に,領域
r のセルオートマトンのルールが与えられると,両側に
rt の距離のセルは原則としてシステムの進化に影響される.
specx を
Allとするとすべてのセルが含まれる.デフォルト設定の
Automaticの場合は値が事実上
blist と同じ値に留まるセルはカットされる.
デフォルトにより,常に黒になるとは限らない部分のみが保存される.
| Out[25]= |  |
|
specx を Allにするとこの領域内でセルオートマトンに影響されるすべてのセルが含まれる.
| Out[26]= |  |
|
CellularAutomatonは任意次数に直接一般化される.しかし一般規則の規則表の項目数は天文学的に増えるので,上の2つの次数ではtotalisticやその他の特別な規則の方が有効である.
| {n,k,{r1,r2,...,rd}} | d 次元 (2r1+1) (2r2+1) ... (2rd+1) 近傍のルール |
| {n,{k,1},{1,1}} | 2次元9近傍のtotalisticルール |
| {n,{k,{{0,1,0},{1,1,1},{0,1,0}}},{1,1}} |
| 2次元5近傍のtotalisticルール |
| {n,{k,{{0,k,0},{k,1,k},{0,k,0}}},{1,1}} |
| 2次元5近傍のouter totalisticルール |
高次元のルール指定
これは2次元9近傍コード797のtotalisticなルール指定である. |
| Out[28]= |  |
|
| Out[29]= |  |
|
| Out[30]= |  |
|