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

セルオートマトン

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

モード

1D ウォルフラム
2D ライフゲーム
ルール番号
速度
計算結果
0
世代
生存セル
パターン型
0
FPS
セル状態の可視化
理論・主要公式

$$\text{1Dルール定義:} s_i^{t+1} = f\!\left(s_{i-1}^t,\, s_i^t,\, s_{i+1}^t\right)$$

近傍3セルの状態(各0/1)から次世代の値を決める関数 \(f\)。8通りの組み合わせを8ビットで表現したのがルール番号(0〜255)。

$$\text{2Dライフゲーム(誕生):} n = 3 \;\Rightarrow\; s^{t+1} = 1$$

死セルの生きた隣接セル数 \(n\) がちょうど3のとき誕生。生存は \(n=2\) または \(n=3\)、それ以外は死滅。

$$\lambda = \frac{\text{次世代に生存するルール数}}{2^{2k+1}}$$

Langton の \(\lambda\) パラメータ:\(\lambda=0\) は全死(固定点)、\(\lambda=1\) は全生、\(\lambda\approx0.5\) 付近で複雑な振る舞いが現れる(エッジ・オブ・ケオス)。

セルオートマトンとは

🙋
セルオートマトンって何ですか?単なるドット絵のアニメーションみたいに見えますけど…。
🎓
大まかに言うと、「単純なルールから複雑な模様や振る舞いが生まれる」ことを見るための、一番シンプルな計算モデルだよ。例えば、このシミュレーターの上の「ルール」スライダーを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セル)内の「生」のセルの数です。この局所的な相互作用のみから、グライダーや固定構造、カオス的な挙動など、多様なグローバルパターンが創発します。

よくある質問

ルール番号(0〜255)は、近傍3セルの8通りの組み合わせに対する次の状態を8ビットで定義したものです。番号が異なると、同じ初期条件からでも全く異なるパターン(安定・周期・カオス・複雑)が生まれます。ルール30や110が有名で、番号を変えて挙動の違いを観察してみてください。
グライダーは、5つの生セルからなるパターンで、4世代ごとに右下(または左下)に1セルずつ移動する動的構造です。ライフゲームのルール下で自己複製や衝突・消滅する性質を持ち、計算万能性の例として知られています。ツール上で配置して動作を確認できます。
ランダムな初期条件からスタートすると、ルールによって時間発展の様子が大きく異なります。例えばルール30はカオス的なパターン、ルール90はフラクタル状の三角形模様を生成します。初期条件のわずかな違いが結果に影響するかどうかも、ルールごとに試して比較できます。
はい、シミュレーション中でも任意のセルをクリック(またはタップ)することで、そのセルの生死を反転できます。これにより、特定のパターンを注入したり、障害物を作ったりしながら、ルールの反応をリアルタイムで観察・実験することが可能です。

実世界での応用

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

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

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

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

よくある誤解と注意点

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

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

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