Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica >

セルオートマトン

セルオートマトンは配列中のセルの値が局所ルールによって離散的なステップで変更される多くのシステムを表現する便利な方法を提供する.
CellularAutomaton[rnum,init,t]進化ルールrnuminit からt ステップ進化させる

セルオートマトンの進化の生成

これは与えられたリストから始め,ルール30で4ステップ進化させる.
In[1]:=
Click for copyable input
Out[1]=
これはルール30の進化をランダムな初期条件から始めて100ステップまで表示する.
In[2]:=
Click for copyable input
Out[2]=
次は,与えられたリストから始め,ルール30を4ステップ進化させる.
In[3]:=
Click for copyable input
Out[3]=
{a1,a2,...}ai の明示的リスト
{{a1,a2,...},b}b 背景に重ねた値ai
{{a1,a2,...},blist}blist の反復による背景に重ねた値ai
{{{{a11,a12,...},{d1}},...},blist}オフセットdi による値aij

1次元のセルオートマトンにおける初期条件の指定方法

初期値の明示的なリストを与えると,CellularAutomatonはリスト中の要素を反復させることでシステムのすべてのセルに対応すると考える.
最後のセルの右近傍は始まりに当たる.
In[4]:=
Click for copyable input
Out[4]=
小さな「種」区域を安定した「背景」に重ねるように初期条件を設定すると便利なことがよくある.デフォルトは,CellularAutomatonは指定された進化ステップ数で作られるパターンの大きさをカバーするに足る背景を自動的に埋める.
これはルール30が1個の黒いセルを含む初期条件から進化する様子を示している.
In[5]:=
Click for copyable input
Out[5]=
これは{1, 0, 1, 1}ブロックの繰返しからなる背景上で,ルール30が{1, 1}という種で構成される初期条件から進化する様子を示している.
In[6]:=
Click for copyable input
Out[6]=
構造間の相互作用を研究する際は特に,特定のブロックが特定のオフセットで置かれているセルオートマトンの初期条件を指定したいことがある.
これはオフセット±40の黒いセルという初期条件を設定する.
In[7]:=
Click for copyable input
Out[7]=
nk=2r=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 の各桁の数字は各近傍の可能な設定において新たなセルが何色になるかを指定する.
これは単一の近傍を1ステップ進化させる.
In[8]:=
Click for copyable input
Out[8]=
これはk=2r=1のセルオートマトンの8つの可能な近傍である.
In[9]:=
Click for copyable input
Out[9]=
これは8つの近傍のそれぞれの中央セルの新たな色を示す.
In[10]:=
Click for copyable input
Out[10]=
ルール30によると,このシーケンスは数30の2進法表現での各桁の数字に対応する.
In[11]:=
Click for copyable input
Out[11]=
これはk=3r=1の一般ルールでルール番号921408を実行する.
In[12]:=
Click for copyable input
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ルールを実行する.
In[13]:=
Click for copyable input
Out[13]=
領域r のルールはオフセットが-r から+r までのすべてのセルを含む.時には特定のオフセットのセルだけを含むルールを考えると便利なことがある.そのような場合は,単一のr をオフセットのリストで置換するとよい.
任意のk=2セルオートマトンルールはブール関数に対応すると考えることができる.最も単純な例として,AndまたはNorのような基本的なブール関数は2つの引数を取る.これはセルオートマトンのルールを使ってオフセット{{0}, {1}}であると指定することができる.より高次元のセルオートマトンを扱う上での互換性のために,例え1次元のセルオートマトンであってもオフセットは常にリストで与える点に注意のこと.
これはセルが2つの近傍ルール番号7の真理値表を生成する.このルールはブール関数Nandであることが分かる.
In[14]:=
Click for copyable input
Out[14]=
ルール番号はセルオートマトンルールの非常に簡潔な指定方法を提供する.しかし,各可能な近傍に適用すべき明示的関数を与えるルールを指定する方がより便利なことがある.
これはルールがモジュロ4の各近傍のすべての値を追加する追加的セルオートマトンを実行する.
In[15]:=
Click for copyable input
Out[15]=
この関数には第2引数にステップ数が与えられている.
In[16]:=
Click for copyable input
Out[16]=
関数でルールを指定する場合,セルの値は整数ではなくてもよい.
In[17]:=
Click for copyable input
Out[17]=
記号的にすることもできる.
In[18]:=
Click for copyable input
Out[18]=
CellularAutomaton[rnum,init,t]すべてのステップを保存しながらt ステップ進化する
CellularAutomaton[rnum,init,{{t}}]最後のステップだけを保存してt ステップ進化する
CellularAutomaton[rnum,init,{spect}]spect で指定されたステップだけを保存する
CellularAutomaton[rnum,init]規則を1ステップ分進化させ,最後のステップだけを返す

保存ステップの選択

これはルール30を5ステップ,最後のステップだけを保存して実行する.
In[19]:=
Click for copyable input
Out[19]=
これは最後の2ステップを保存する.
In[20]:=
Click for copyable input
Out[20]=
これは1ステップ与える.
In[21]:=
Click for copyable input
Out[21]=
ステップ指定spectTakeを使ってリストから要素を取り出すのに似ている.違いは,セルオートマトンの初期条件がステップ0とみなされる点である.{...}の形式のステップ指定はどれも追加リストに埋め込まれていなければならない.
u0から u までのステップ
{u}ステップ u
{u1,u2}u1 からu2 までのステップ
{u1,u2,du}ステップu1, u1+du, ...

セルオートマトンのステップ指定

これは100ステップ進化するが1つおきのステップしか保存しない.
In[22]:=
Click for copyable input
Out[22]=
CellularAutomaton[rnum,init,t]すべてのステップとすべての関連するセルを保存する
CellularAutomaton[rnum,init,{spect,specx}]指定されたステップとセルだけを保存する

保存するステップとセルの選択

セルオートマトンの進化の過程でどのステップを保存するかを指定できるように,どのセルを保存するかも指定できる.{a1, a2, ...}, blist のような初期条件を与えると,ai はどのセルを保存するかを指定するためにオフセットが0であると解釈される.
All指定された初期条件に影響されるすべてのセル
Automatic領域内の背景とは異なるすべてのセル(デフォルト)
0aspec のはじめと並んでいるセル
x右側にオフセットx までのセル
-x左側にオフセットx までのセル
{x}右側にオフセットx のセル
{-x}左側にオフセットx のセル
{x1,x2}オフセットx1 からx2 までのセル
{x1,x2,dx}x1, x1+dx, ... のセル

セルオートマトンのセル指定

これはすべてのステップを保存するがオフセットが左側に20より大きいセルは除去する.
In[23]:=
Click for copyable input
Out[23]=
これは中央の列のセルだけを保存する.
In[24]:=
Click for copyable input
Out[24]=
{{a1, a2, ...}, blist} のような初期条件を与えると,CellularAutomatonは常に,あたかも無限のセルがあるかのように効果的にセルオートマトンを行う.{x1, x2}のようなspecx を使うことで,CellularAutomatonx1 からx2 までの特定のオフセットのセルだけを出力に含むように指示することができる.CellularAutomatonはデフォルトにより背景blist と同じ値に留まらない程度に十分に離れたセルを含む.
一般に,領域r のセルオートマトンのルールが与えられると,両側にrt の距離のセルは原則としてシステムの進化に影響される.specxAllとするとすべてのセルが含まれる.デフォルト設定のAutomaticの場合は値が事実上blist と同じ値に留まるセルはカットされる.
デフォルトにより,常に黒になるとは限らない部分のみが保存される.
In[25]:=
Click for copyable input
Out[25]=
specxAllにするとこの領域内でセルオートマトンに影響されるすべてのセルが含まれる.
In[26]:=
Click for copyable input
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なルール指定である.
In[27]:=
Click for copyable input
これは進化におけるステップ0と1を与える.
In[28]:=
Click for copyable input
Out[28]=
これは進化におけるステップ70を与える.
In[29]:=
Click for copyable input
Out[29]=
これはx 軸に沿ったスライスの全ステップを示す.
In[30]:=
Click for copyable input
Out[30]=
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team