セルオートマトン 戻る
複雑系

セルオートマトン

1Dウォルフラムルール(256通り)と2Dコンウェイのライフゲームを体験。単純なルールから生まれる複雑な挙動を可視化します。

モード

1D ウォルフラム
2D ライフゲーム
ルール番号110
速度5
0
世代
生存セル
パターン型
0
FPS

セルオートマトンとは

🧑‍🎓
セルオートマトンって何ですか?単なるドット絵のアニメーションみたいに見えますけど…。
🎓
ざっくり言うと、「単純なルールから複雑な模様や振る舞いが生まれる」ことを見るための、一番シンプルな計算モデルだよ。例えば、このシミュレーターの上の「ルール」スライダーを0から255まで動かしてみて。たった一つの数字を変えるだけで、線が全く違う動き方をするのがわかるよね。
🧑‍🎓
え、そうなんですか!ルール110って有名みたいですが、何が特別なんですか?
🎓
実は、ルール110は「計算普遍性」を持つ、つまり原理的にはどんな計算もできることが数学的に証明されているんだ。たった1行のセルの並びと、8通りの隣接ルールだけで、コンピュータと同じことができてしまう。このシミュレーターでルール110を選んで「スタート」を押すと、一見ランダムだけど秩序もある、複雑な模様が永遠に続いていくのが観察できるよ。
🧑‍🎓
2Dの「ライフゲーム」の方も面白そう!プリセットにある「グライダー」って何ですか?
🎓
あれは、死と生のルールの中で生まれる、自己複製しない「移動する構造物」なんだ。画面左下のプリセットから「グライダー」を選んで実行してみて。四角い塊が斜めに動いていくのが見えるだろう?この「グライダー」を部品のように使って、ライフゲームの中に論理回路さえ作れるんだよ。パラメータの「速度」スライダーをいじると、その動きがゆっくりになったり速くなったりして観察しやすいぞ。

物理モデルと主要な数式

1次元ウォルフラムルールの定義
各セルの状態を0(死)または1(生)とし、自身と左右の隣人、合計3セルの状態($2^3=8$通り)によって、次の時刻の自身の状態が決まります。この対応関係が「ルール」です。

$$ a_i^{t+1}= \Phi( a_{i-1}^{t}, a_{i}^{t}, a_{i+1}^{t}) $$

ここで、$a_i^{t}$は時刻$t$における位置$i$のセルの状態、$\Phi$は8ビット(0/1の並び)で定義されるルール関数です。この8ビットの並びを10進数に変換したものが「ルール番号」(0〜255)となります。

2次元コンウェイのライフゲームルール
2次正方格子上の各セルは、周囲8近傍の「生」のセルの数によって次の状態が決定されます。ルールは次の2条件だけです。

$$ \begin{aligned}&\text{誕生:}\quad \text{(死セル)}\land (N_{\text{live}}= 3) \rightarrow \text{生}\\ &\text{生存:}\quad \text{(生セル)}\land (N_{\text{live}}= 2 \text{ or }3) \rightarrow \text{生}\\ &\text{過疎・過密:}\quad \text{上記以外}\rightarrow \text{死}\end{aligned}$$

ここで、$N_{\text{live}}$は中心セルのムーア近傍(周囲8セル)内の「生」のセルの数です。この局所的な相互作用のみから、グライダーや固定構造、カオス的な挙動など、多様なグローバルパターンが創発します。

実世界での応用

計算理論・複雑系科学:セルオートマトンはチューリングマシンに匹敵する計算能力を持つことが証明されており、複雑系の「創発」現象を研究するための基礎モデルとして使われます。単純なルールからいかにして秩序やカオスが生まれるかを探求します。

物理シミュレーション(格子ボルツマン法):流体力学の分野では、セルオートマトンの考え方を発展させた「格子ボルツマン法」が、空気の流れや水の動きをシミュレーションするCFD解析で広く利用されています。微視的な粒子の衝突・移動ルールから、巨視的な流体方程式を再現します。

材料科学・腐食モデリング:金属の腐食の広がり方や、材料内部の亀裂の進展を模擬するのにセルオートマトンが用いられます。局所的な「腐食確率」や「強度」をルールとして定義し、時間経過とともに構造物全体がどのように劣化するかを予測します。

生物・生態系モデリング:細菌コロニーの成長パターン、森林火災の延焼シミュレーション、動物の群れの動きなど、個体の単純な行動ルールから集団の複雑な振る舞いを生み出すモデルとして応用されています。

よくある誤解と注意点

まず、「初期状態がランダムなら結果も毎回ランダム」と思いがちですが、そうとは限りません。特に1次元セルオートマトンでは、ルール番号によっては、異なるランダムな初期状態からでも、最終的に同じような安定したパターン(例えば、すべてが0になる「死の世界」や、一定の周期的な模様)に収束してしまうことがよくあります。これは「初期値感受性」が低いルールの特徴です。逆に、ルール110のような複雑な振る舞いを見たいなら、初期状態はある程度「生」のセルが散らばっている状態から始めるのがコツです。

次に、2次元ライフゲームで「グライダーなどのパターンはどこに置いても永遠に動き続ける」と誤解すること。実際は、他のパターンと衝突して消滅したり、全く異なる構造に変化したりします。シミュレーション領域の端に到達すると、トーラス状(上下左右が繋がっている)でない限り消えてしまいます。実務でパターンを分析する時は、十分な広さのフィールドを確保し、境界の影響を考慮しましょう。

最後に、パラメータ「速度」の設定ミス。速度を最大にするとアニメーションが速すぎてパターンの詳細な変化を追えません。特にグライダー銃のような複雑な装置の動作を確認したい時は、速度を遅くして一世代ずつの変化を目で追うことが理解への近道です。逆に、長時間実行後の大域的な傾向を知りたい時は速度を上げて一気に進めます。目的に応じて使い分けるのがポイントです。

関連する工学分野

セルオートマトンの考え方は、材料工学における相変態や組織形成のシミュレーションに直接応用されています。例えば、金属が冷却される時にできる結晶粒の成長モデル(ポッツモデル)は、セルオートマトンの一種です。各セルを結晶粒の方位と見なし、「隣接する多数のセルと同じ方位になる」という単純なルールを適用するだけで、現実に近い粒成長の過程を再現できます。

また、流体力学の分野では、格子ガスオートマトン(LGA)やその発展形である格子ボルツマン法(LBM)がこれに該当します。流体粒子の衝突と移動をセル空間上の単純ルールでモデル化し、巨視的にはナビエ-ストークス方程式に従う流れを出現させます。複雑な形状の流路内の流れや、多相流のシミュレーションに強みを発揮します。

さらに、交通流シミュレーションも代表的な応用例です。道路をセルの連なり、車を「生」のセルと見立て、「前のセルが空いていれば進む、そうでなければ止まる」といったルールを課すだけで、渋滞の発生や伝播といった複雑な現象を捉えることができます。例えば、ある密度を超えると突然流れが悪化する「相転移」的な挙動も観察できます。

発展的な学習のために

まずは、このシミュレーターで「ルール空間」を体系的に探索してみましょう。ウォルフラムは1次元セルオートマトンを、その振る舞いからクラスI(均一に収束)〜クラスIV(複雑で構造的なパターンが継続)の4つに分類しました。ルール0-255を片っ端から試し、それぞれがどのクラスに属するか自分で分類してみるのが最高の訓練です。例えば、ルール30はカオス的(クラスIII)、ルール90はフラクタル的な三角形模様(クラスII)を生成します。

数学的背景を学ぶなら、「計算理論」や「オートマトン理論」が次のステップです。セルオートマトンがチューリング完全(計算普遍性)とはどういうことか、ルール110で実際にどのように計算がエミュレートされるかを理解すると、計算の本質への理解が深まります。また、ライフゲームの「グライダー」を0と1の信号と見なし、それらを操作する「ANDゲート」や「ORゲート」を構成できることを知ると、デジタル回路の基礎と複雑系が地続きであることに驚くはずです。

実践的な次のトピックとしては、「3状態以上のセルオートマトン」や「非同期更新のセルオートマトン」を調べてみてください。例えば、森林火災のシミュレーション(セル状態:木、燃焼中、焼失)や、感染症の拡散モデル(セル状態:未感染、感染中、回復免疫)など、より現実に近い現象のモデリングが可能になります。これらは、単純なルールセットからいかにして現実味のある複雑な振る舞いが「創発」するかを体感する格好の題材です。