
ライフゲームの初期密度を6倍変えても、行き着く密度は同じだった。違うのは「落ち着くまでの時間」だけ
コンウェイのライフゲームのルールは3行で終わる。格子の各マスは生きているか死んでいるかのどちらかで、周囲8マスの生存数を数えて、
- 生きているマスは、周囲が2か3なら生き残る。それ以外は死ぬ
- 死んでいるマスは、周囲がちょうど3なら生まれる
- それを全マス同時に適用する
これだけだ。それだけのルールから、グライダーが飛び、振動子が点滅し、有名なグライダー銃が無限にパターンを吐き出す。
私が確かめたかったのは、もっと素朴なことだった。最初にどれくらいの密度でマスを埋めるかによって、行き着く先はどう変わるのか。 パーコレーションの回で、占有率1.5ポイントの差で貫通確率が0%から100%に跳ぶ相転移を見たばかりだったので、ライフゲームにも似た臨界密度があるのではないかと思っていた。薄すぎれば死に絶え、濃すぎれば過密で死に絶え、その間のどこかに「一番よく育つ密度」があるはずだ、と。
半分当たっていて、半分は完全に外れていた。
実験に使ったコードの全文はGitHubに置いています。
初期密度を0.02から0.95まで振る
のトーラス(上下・左右がつながった格子)で、初期密度を18通り、各4シードで2000世代まで回し、最後の200世代の平均密度を「行き着いた密度」とした。

両端は予想通りだった。初期密度0.02では3世代で事実上壊滅し、0.90以上でも過密ですぐ死に絶える。
外れたのは真ん中だ。初期密度0.12から0.70まで、約6倍の幅がある。その全部が、2000世代後には密度0.033〜0.038という同じ帯に入った。 半分埋めて始めても、1割強しか埋めずに始めても、行き着く密度は同じになる。パーコレーションのような「臨界点を挟んで結果が跳ぶ」構造ではなく、広い平原がある。
初期密度によって変わるのは、そこに至るまでの時間だった(下段)。密度が最終値の2倍を下回るまでの世代数を測ると、初期密度0.375で307世代と最も長く、そこから両側に向かって短くなる。濃く始めても薄く始めても、行き先は同じで、途中の暴れ方だけが違う。
燃え尽きるまでを見る
初期密度0.375から始めたの格子を、900世代まで。

序盤の数十世代で一気に間引かれ、そこから泡立つように活動しながら、少しずつ静かになっていく。ライフゲーム界隈ではこの燃え尽きた残骸を灰(ash)と呼ぶ。
「落ち着いた」と書いたが、これは正確ではない。10,000世代まで回してみると、下げ止まらない。

| 世代 | 密度 |
|---|---|
| 0 | 0.37637 |
| 100 | 0.09271 |
| 1,000 | 0.04312 |
| 2,000 | 0.03659 |
| 10,000 | 0.02911 |
2000世代時点の0.0366を「行き着いた密度」として上のグラフを描いたが、10,000世代では0.0291まで下がっている。対数軸で見るとほぼ直線、つまり世代数を10倍にするごとに一定量ずつ減る。まだ動いている物体がたまに隣の静止物にぶつかって壊す、というのが延々と続くからだ。ライフゲームの「定常状態」は、実際には非常に長い時間をかけて薄まり続ける状態でしかない。
灰は何でできているか
1500世代後の格子を連結成分に分け、それぞれが静止しているか(次の世代で変わらない)、周期2で振動しているか(2世代後に戻る)を判定して数えた。

落ち着いた5,601個のうち、ブリンカー(31.9%)とブロック(31.5%)の2種類だけで63%を占める。上位3種(ハチの巣を含む)で81%。あれだけ豊かな挙動を見せておいて、最後に残るものの種類はごく少ない。
そして1500世代の時点でも14.5%はまだ動いている。これが上で見た「下げ止まらない」の正体だ。
時空図で見る
各世代を高さ方向に積み上げると、ライフゲームの履歴が3次元の物体になる。回転させてみてほしい。
下(赤い側)が初期のカオス、上(濃紺)が落ち着いたあと。静止物は垂直な柱として、振動子は途切れながら続く柱として、グライダーは斜めの筋として現れる。乱れた層が下にあって、上に行くほど柱ばかりになる——「燃え尽きる」という言葉がそのまま形になっている。
1セルだけ違う2つの宇宙
最後に、初期状態をたった1セルだけ反転させた2つの格子を並走させた。で350世代。

ライフゲームでは、情報は1世代に1セルより速く伝わらない。この上限は「光速」と呼ばれる。実測した違いの広がりは、最初の8世代だけは1, 2, 3, 4, 5, 6, 7, 8 と理論上限ぴったりで進み、そこから遅くなって、全体では0.32セル/世代に落ち着いた。上限では走れるが、いつも走るわけではない。周囲がたまたま静止物ばかりなら、違いはそこで止まる。
350世代後には4,076セルが食い違っている。1セルの違いが4,000セルの違いになる——ロジスティック写像で測ったバタフライ効果の格子版だ。ただしあちらが指数的に爆発したのに対し、こちらは伝わる速さに厳しい上限があるぶん、広がり方は多項式的にしか育たない。
まとめ
- 初期密度0.12〜0.70(6倍の幅)は、すべて2000世代後の密度0.033〜0.038に収束した。行き先は初期密度で決まらない
- 変わるのは落ち着くまでの時間で、初期密度0.375が最も長く暴れた(307世代)
- 「落ち着いた」は近似。10,000世代まで回すと0.0291までまだ下がり続ける
- 灰の63%はブリンカーとブロックの2種類だけ。1500世代でも14.5%はまだ動いている
- 1セルの違いは、最初の8世代こそ理論上限の1セル/世代で広がるが、平均では0.32セル/世代
臨界密度を探しに行って、見つからなかった。代わりに見つかったのは、広い範囲の初期条件がひとつの状態に吸い込まれていく、という別の構造だった。
初期密度を6倍変えても、2000世代後の密度は変わらない。この結果を見たとき、正直なところ少し落胆した。せっかく18通りも試したのに、グラフの真ん中が平らなのだ。
でも面白いのは下段のほうだった。行き先は同じでも、そこに着くまでにかかる時間は3桁近く違う。1世代で決着がつく初期密度もあれば、307世代ぶん暴れ続ける初期密度もある。そして最も長く暴れるのは、極端に薄くも濃くもない、真ん中あたりの密度だった。
同じところに落ち着くなら、途中の307世代には意味がなかったのだろうか。灰の組成を見るかぎり、そうとも言えない。長く暴れた盤面ほど多くのパターンが生まれては消え、その残骸として今の灰がある。行き先が同じでも、通ってきた経路は残る。密度という1つの数字では見えないだけで。
このブログでは、機械学習の仕組みを実際にコードで実装して確かめた実験をテーマ別に整理しています(拡散モデル・Transformer・強化学習・多様体学習・過学習など)。


