1. はじめに
碁盤のようなグリッドに、生きたセルと死んだセルが並んでいます。
「周囲に生きた隣人が3個いれば誕生、2〜3個なら生存、それ以外は死滅」
たったこれだけのルールで動くシミュレーションが「 ライフゲーム 」です。
このシンプルなルールから、グライダー(斜めに移動し続ける模様)や振動子(同じ形を繰り返す構造)といった複雑なパターンが自然に生まれます。1970年にジョン・コンウェイが考案したルールで、「シンプルな入力から複雑な現象が創発する」という性質が長年注目されてきました。
ここで生まれる疑問があります。
「このコンウェイが発見したルール以外にも、面白い振る舞いをするルールがあるんじゃないか?」
実は、ライフゲームと同じ枠組みで定義できるルールは 262,144 通り 存在します。今回はその全通りを探索し、「面白いルール」を自動で発見する実験をしました。
同じく全262,144ルールを探索した先行研究として、Peña & Sayama(2021)"Life Worth Mentioning: Complexity in Life-Like Cellular Automata"(Artificial Life, MIT Press)があります。本記事はその発想を引き継ぎつつ、複数指標の同時評価とパレート最適による絞り込みという独自のアプローチを加えたものです。
2. ライフゲームから生まれるパターン
このシンプルなルールから、次のような構造が自然に生まれます。
- グライダー:斜め方向に動き続ける模様
- ブリンカー:縦・横に交互に変化する振動子
- グライダーガン:グライダーを永遠に射出し続ける構造
![]() |
![]() |
![]() |
|---|---|---|
| グライダー | ブリンカー | グライダーガン |
このように、シンプルなルールから複雑なパターンが自然に生まれることを「創発(emergence)」と呼びます。
3. ルール空間は 262,144 通りある
ライフゲームのルールは B.../S... の形式で表します。
- B(Birth):死んでいるセルが「何個の生きた隣人を持つとき」に誕生するか
- S(Survival):生きているセルが「何個の生きた隣人を持つとき」に生き残るか
- 隣人は上下左右 + 斜めの 8セル
隣人の数は 0〜8 の 9通りなので、B と S それぞれに 2⁹ = 512 通りの部分集合があります。
ルール総数 = 512(Birth の組み合わせ)× 512(Survival の組み合わせ)
= 262,144 通り
Conway's Life(B3/S23)はそのうちの 1通り に過ぎません。
残り 262,143 通りの中にも、面白いルールが眠っているかもしれない —— それがこの実験の出発点です。
4. 「面白いルール」をどう定義するか
「面白い」を数値で定義しなければ機械的に探索できません。そこで次の3つの指標を設計しました。
ここで定義する「面白さ」は、空間的な集積・自己組織化・パターン構造度という3つの性質を数値化したものです。先ほど紹介したグライダーのような人が見て「面白い」と感じるものとは必ずしも一致しません。
C:空間集積度(Clustering)
「セルは固まっているか?」
ランダムに初期化した盤面では、生セルの隣に生セルがある確率は偶然の範囲内です。
C はそれを超えて「隣に生セルがいる傾向」がどれだけ強いかを、Pearson 相関係数(2つの数値列がどれだけ同じ方向に動くかを −1〜1 で表した値)で測ります。
Conway's Life で島状のコロニーができるのは、まさに C が高い状態です。
C = 0.0 → セルがバラバラに散在(ランダムノイズ)
C = 1.0 → セルが密集して島を形成
C は一般的な Moran's I 等の空間自己相関指標とは異なります。本記事では セル状態と近傍生存数の Pearson 相関(2つの数値がどれだけ連動するかを表す値)を 0〜1 に正規化した独自指標 として定義しています。
O:自己組織化度(Organization)
「カオスから秩序に向かっているか?」
シミュレーション開始直後は変化が激しく、ステップを経るにつれて落ち着いていく——そういう「時間的な変化の減少」を O で測ります。
さらに「何ステップ生き延びたか」を掛け合わせることで、即死ルールへの過大評価を防いでいます。
前半の変化量 >> 後半の変化量 → O が高い(秩序化)
変化量がずっと一定 or 即消滅 → O はほぼ 0
O は一般的な自己組織化の定量指標ではなく、シミュレーション前後半の変化率比と生存ステップ数を組み合わせた独自指標 です。
S:パターン構造度(Structure)
「同じ模様が繰り返し現れているか?」
盤面上のすべての 3×3 パッチを集め、どのパターンが何回現れたかを数えます。
「ブロック」「ブリンカー」など少数パターンが支配 → S が高い
512種類のパターンがほぼ均等に出現 → S はほぼ 0(ランダムノイズ)
live:最終生セル比率
「シミュレーション終了時点で盤面の何割が生きているか」
live = 生セルの数 / 全セル数
0.0 → 全滅 0.5 → 半分 1.0 → 全セル生存
live 自体は良し悪しを判断する指標ではなく、記録のみしています。
他の指標と組み合わせると状況を読み解けます。
| live | O | 意味 |
|---|---|---|
| ほぼ 0 | ほぼ 0 | 即消滅したルール |
| ほぼ 1 | ほぼ 0 | 全生存付近で振動・停滞するルール(全死↔全生の周期振動含む) |
| 中間 | 高い | 動的に構造を作りながら安定(指標上の高スコア帯) |
3指標(C、O、S)の読み合わせ
| ルール | C | O | S | live | 何が起きているか |
|---|---|---|---|---|---|
| B3/S23(Conway) | 0.73 | 0.47 | 0.45 | 0.10 | 島を作るが完全には安定しない |
| B38/S3(発見ルール) | 0.80 | 0.93 | 0.84 | 0.008 | 密集→安定した少数パターンへ収束 |
| B04567/S017 | 0.25 | 0.995 | 0.14 | 0.20 | ゆっくり変化しながら疎な状態へ |
| ノイズ維持系 | 約0.5 | 約0 | 約0 | 0.50 | 変化し続けるだけで構造なし |
5. パレート最適とは
3指標を同時に最大化したいとき、「どのルールが最も優れているか」を 1つに決めることはできません。
たとえば次の2つのルール、どちらが優れているでしょうか。
ルール A:C=0.9、O=0.5、S=0.3
ルール B:C=0.3、O=0.5、S=0.9
C は A が上、S は B が上——単純には決められません。そこで「パレート最適」という考え方を使います。
パレート支配とは
ルール A が C・O・S のすべてで ルール B 以上であり、
かつ 少なくとも1つでは B を上回るとき、
「A は B を支配する」と言います。
例:
ルール A:C=0.9、O=0.8、S=0.7
ルール B:C=0.8、O=0.7、S=0.6
→ A はすべての指標で B 以上、かつ全部で上回る → A が B を支配
パレート最適集合とは
誰にも支配されないルールの集合をパレート最適集合(パレートフロント)と呼びます。
図で表すとこうなります(2指標の場合で説明)。
S(パターン構造度)
↑
│ ★ B ← B は A に支配されないが C には支配される
│ ★ A
│ ★ C ← C は誰にも支配されない(Cの右上に誰もいない)
│ ★ D ← D は A と C に支配される
└──────────────────→ C(空間集積度)
パレート最適 = {A, B, C}(D は除外)
「どれか1つの指標で誰よりも秀でている、または総合的に誰にも負けていない」ルール群がパレート最適集合です。これが 「複雑な振る舞いをするルールの候補」 になります。
なぜパレート最適を選んだか
3指標を合成して1つのスコアにまとめる方法(加重平均など)や、閾値で絞り込む方法もあります。しかしそれらは重みや閾値を人間が決める必要があり、選択が恣意的になります。
パレート最適を選んだ理由は、重みも閾値も決めずに「どの指標でも誰かに負けていないルール」を客観的に取り出せるからです。「C が高ければ良い」「O が高ければ良い」という価値判断を持ち込まず、3つの軸すべてで見たときの境界線を機械的に抽出できます。
6. 最初の指標設計は失敗だった
実は最初、別の3指標(H/T/D)を使っていました。
| 指標 | 定義 | 問題点 |
|---|---|---|
| H(エントロピー) | 生セル比率の二値エントロピー | p=0.5 のランダムノイズで最大になる |
| T(持続時間) | ステップ生存率 | 89.6% のルールが T=1.0 で飽和し弁別できない |
| D(多様性) | 3×3 パターン種類数/512 | ランダムノイズで最大になる |
この指標で全探索した結果、パレート最適に残ったのは たった6件。しかもすべてが「ランダムノイズを維持するだけのルール」でした。
B8/S1234567, B/S1234567, B12345678/S8 ...
Conway's Life(B3/S23)は H・D ともに 下位8% に沈んでいました。
なぜ失敗したか
H と D の設計が根本的に間違っていました。
- H(エントロピー):生セル比率が 50% のとき最大。「何もしない」ランダムノイズ維持が最高評価
- D(多様性):出現する 3×3 パターンの種類が多いほど高い。こちらもランダムノイズが最高評価
「複雑性の高いルールを選ぶ」つもりが、実際には「ランダムなものを好む」指標を作っていたのです。
指標の再設計
失敗の原因を分析し、C/O/S に完全に作り直しました。
| 旧指標 | 問題 | 新指標 | 改善 |
|---|---|---|---|
| H(エントロピー) | ノイズで最大 | C(空間集積度) | 空間的な構造の有無を測定 |
| T(持続時間) | 飽和 | O(自己組織化) | 時間的な変化の減少を測定 |
| D(多様性) | ノイズで最大 | S(パターン構造度) | パターンの偏りを測定 |
7. 実装と最適化
全探索の規模
| 項目 | 値 |
|---|---|
| ルール数 | 262,144 |
| 盤面サイズ | 32 × 32 |
| 最大ステップ数 | 50 |
| 境界条件 | トーラス境界(左右・上下の端をつなげた面として扱う。左端の隣は右端、上端の隣は下端になるため、端のセルも常に8個の隣人を持てる) |
| 更新方式 | 同時更新(全セルが前ステップの状態を参照して一斉に次の状態へ切り替わる) |
| 実行環境 | 4コア CPU |
高速化のポイント
素朴に Python で実装するとボトルネックが複数あります。
近傍カウントの高速化
# 改善前:np.roll を 8 回呼ぶ(中間配列が多い)
neighbors = np.roll(board, 1, 0) + np.roll(board, -1, 0) + ...
# 改善後:np.pad で1枚拡張してスライス加算(約2.4倍速)
p = np.pad(board, 1, mode="wrap")
neighbors = p[:-2,:-2] + p[:-2,1:-1] + p[:-2,2:] + ...
3×3 パターン集計の高速化
# 改善前:Python の二重ループ(32×32 = 1024 回の反復)
for i in range(h - 2):
for j in range(w - 2):
patterns.add(board[i:i+3, j:j+3].tobytes())
# 改善後:sliding_window_view + ビットパック(約20〜50倍速)
windows = sliding_window_view(board, (3, 3))
packed = (windows.reshape(-1, 9) * powers).sum(axis=1)
counts = np.bincount(packed, minlength=512)
並列化
with multiprocessing.Pool(processes=4) as pool:
for result in pool.imap(_worker, worker_args, chunksize=64):
...
各ルールの評価は完全に独立しているため、4コアすべてを使用できます。
実測パフォーマンス
全 262,144 ルール実行時間:約 28 分
平均処理速度:約 156 ルール/秒
素朴実装の推定(1.6時間)に対して 約 3.4 倍の高速化を達成しました。
8. 探索結果
パレート最適は 106 件
| 指標 | 旧(H/T/D) | 新(C/O/S) |
|---|---|---|
| パレート最適数 | 6件 | 106件 |
| Conway の全体順位 | 下位8% | 上位2.8% |
| パレートの内容 | ノイズ維持ルールのみ | 構造形成・自己組織化ルール群 |
Conway's Life は幾何平均(C×O×S)^(1/3) で全体の上位 2.8%(7,392位 / 262,144)に位置しました。旧指標での下位8%から大幅改善です。
幾何平均バランストップ 10
| ルール | C | O | S | 幾何平均 | 特徴 |
|---|---|---|---|---|---|
| B4678/S5678 | 0.839 | 0.893 | 0.837 | 0.856 | バランス型1位 |
| B38/S3 | 0.797 | 0.933 | 0.840 | 0.855 | Conway近傍 |
| B3678/S37 | 0.766 | 0.953 | 0.856 | 0.855 | Conway近傍 |
| B045678/S25678 | 0.824 | 0.912 | 0.830 | 0.854 | |
| B0145678/S025678 | 0.813 | 0.910 | 0.841 | 0.854 | |
| B37/S37 | 0.768 | 0.946 | 0.855 | 0.853 | Conway近傍 |
| B4/S35678 | 0.856 | 0.938 | 0.771 | 0.853 | 高C |
| B458/S578 | 0.809 | 0.891 | 0.858 | 0.852 | |
| B4578/S567 | 0.818 | 0.924 | 0.818 | 0.852 | |
| B468/S567 | 0.820 | 0.873 | 0.858 | 0.850 |
![]() |
![]() |
![]() |
|---|---|---|
| B4678/S5678 | B38/S3 | B3678/S37 |
Conway's Life(参照):C=0.732、O=0.468、S=0.446、幾何平均 0.535
複雑性の希少さ
幾何平均 0.8 以上のルールは わずか 203件(全体の 0.08%)。
本レポートの指標上、複雑性の高いルールは極めて希少です。
幾何平均の分布(全 262,144 ルール):
0.0〜0.1 : 181,901件 (69.4%) ← 大多数
0.1〜0.2 : 25,752件 ( 9.8%)
0.2〜0.3 : 25,259件 ( 9.6%)
0.3〜0.4 : 14,453件 ( 5.5%)
0.4〜0.5 : 5,993件 ( 2.3%)
0.5〜0.6 : 3,829件 ( 1.5%)
0.6〜0.7 : 3,046件 ( 1.2%)
0.7〜0.8 : 1,708件 ( 0.7%)
0.8〜0.9 : 203件 ( 0.1%) ← 幾何平均 0.8 以上の高スコア帯
0.9〜1.0 : 0件 ( 0.0%)
Conway's Life がパレート外になった理由
Conway's Life(B3/S23)はパレート最適に入りませんでした。これは指標の失敗ではなく、Conway の本質的な性質を正確に捉えた結果だと考えています。
Conway は O = 0.468 と、B38/S3(O=0.933)や B3678/S37(O=0.953)に比べて自己組織化スコアが低い。
なぜか? Conway's Life は「ブロックやブリンカーに収束しつつも、変化が続く」ルールです。完全な安定には至らず、何かが常に動き続ける——これが O スコアの低さとして現れています。
むしろこれは「Conway's Life は創発的な複雑さを維持し続けるルールであり、静的な安定に収束しない」という 重要な性質を数値で表現できている と解釈できます。
9. 発見されたルールの特徴
Birth 条件の傾向
パレート最適106件における Birth 条件の数字の出現率:
| 数字 | 出現率 | 意味 |
|---|---|---|
| 7 | 73% | 7近傍での誕生 |
| 8 | 66% | 8近傍での誕生 |
| 4 | 57% | 4近傍での誕生 |
| 3 | 48% | Conway 同様の3近傍誕生 |
高近傍数(7、8)での誕生条件を持つルールが多い。「密集しているときに誕生する」条件が構造形成に寄与していると考えられます。
注目ルール
10. 課題と今後
ブリンカーやグライダーガンが出てこなかった理由
今回の探索では、Conway's Life の代名詞とも言えるブリンカーやグライダーガンのような「見た目に面白いパターン」は出てきませんでした。これには3つの理由があります。
指標が「動き続けるもの」を低く評価する
グライダーやグライダーガンは盤面が変化し続けます。O(自己組織化)は「後半の変化率が低下する」ことを測定するため、変化が持続するルールはスコアが下がります。Conway's Life 自体がパレートに入らなかったのも同じ理由です。パレートに残った高 O ルールは「変化が止まる方向」に収束するため、動的な構造が生まれにくい。
ランダム初期配置から特定パターンは出にくい
グライダーガンは幅36セル以上の特定配置が必要です。ランダム初期化の 32×32 盤面では、そもそも出現する余地がありません。記事冒頭の GIF で示したグライダーガンは、手動で座標を配置した専用スクリプトで生成したものです。
S 指標が「静止パターンの支配」を好む
グライダーは移動しながら多様な位置・状態を取るため、3×3 パッチの分布が広がり S が下がります。S が高いルールは「ブロックや静止パターンに収束したもの」になりがちで、見た目には地味です。
つまり今回の指標は 「落ち着く複雑さ」を捉えるのは得意だが、「動き続ける複雑さ」は捉えられない という設計上のトレードオフがあります。グライダーガン的な振る舞いを評価するには、「空間的な移動パターンの持続」を測る別の指標が必要です。
残る問題
O=0 のルールがパレートに12件残留
B01/S0(C=0.880、S=0.914)など「短周期振動/固定点ルール」が残っています。
トーラス境界・同時更新では全死↔全生の周期2振動になりやすく、C と S は高くなりますが、創発的・情報的に豊かな動的構造は見られません。
O 指標の弁別力不足
全ルールの 56.5% が O ≈ 0(ほぼゼロ)という偏った分布になっています。
即死・短周期振動・固定点ルールが過半数を占めるため、O=0 か非0かという二値的な分布になっています。
今後の改善案
-
trials=3以上での再実行:確率的ノイズを低減 - O=0 ルールの前フィルタ:静的/短周期振動ルールをパレート候補から除外
- O 指標の再設計:活動期間・収束速度を加味した設計
- 3指標の相互相関への対処:C と S が共変するケースの扱い
11. まとめ
- ライフゲームのルール空間(262,144通り)を全探索し、C/O/S の3指標でパレート最適集合を抽出した
- 最初の指標設計(H/T/D)はランダムノイズを優遇する欠陥があり、再設計が必要だった
- 新指標では Conway's Life が上位2.8%に浮上し、パレート最適は6件→106件に拡大した
- 幾何平均 0.8 以上の高スコアルールは全体のわずか 0.08%
- 複雑性は極めて希少であり、Conway's Life はその希少な集合の近傍に位置する特別なルールだった
「面白いルールを自動で見つける」という問いに向き合うことで、「面白さをどう定義するか」という、より根本的な問いが浮かび上がってきました。
指標設計の試行錯誤そのものが、この実験の本質だったかもしれません。
取り組みの意義
「面白さ」の定義を試みた
「面白いルール」という主観的な問いを C/O/S という数値指標に落とし込み、機械的に評価できるようにしました。指標設計の失敗と再設計のプロセス自体が、「何を測るべきか」という問いの難しさを示しています。ただし、スコアが高いルールが人の目に面白く映るかどうかは別の問題であり、本レポートの指標はあくまで構造的・統計的な性質を捉えたものに過ぎません。
パレート最適という視点の導入
「1つの正解を選ぶ」のではなく「複数の軸でのトレードオフの境界を取り出す」という考え方を CA のルール探索に適用しました。ハイパーパラメータ探索や設計最適化と同じ構造であり、応用範囲の広い発想です。
Conway's Life の特殊性を数値で確認した
26万通りの中で Conway's Life が上位2.8%に位置し、パレート最適には入らない(=完全に収束しない動的な複雑さを維持する)という性質を、独自指標で定量的に示せました。
12. 先行研究との比較
同じ問いに向き合った先行研究を調べたところ、いくつかの重要な研究が見つかりました。
Peña & Sayama(2021)— 最も近い先行研究
"Life Worth Mentioning: Complexity in Life-Like Cellular Automata"
Artificial Life, Vol.27, No.2, MIT Press
同じく全 262,144 ルールを網羅的に探索し、条件付きエントロピー(Conditional Entropy)を指標として複雑性を計測した研究です。Conway's Life(B3/S23)が「最も少ないルール条件で最大の複雑性を保つ最節約的なルールである」ことを示しています。
生命らしさの定量基準
この研究の核心は、「どのルールが生命的か?」という問いに数値的な答えを与えようとした点にあります。条件付きエントロピーを使い、「セルの状態が近傍の状態からどれだけ予測困難か」を測定しています。
- 値が高すぎる → 完全なランダムノイズ(予測不能・無秩序)
- 値が低すぎる → 完全に固定した状態(予測容易・無変化)
- 中間の値が持続する → 生命的複雑性
Conway's Life はこの中間帯を安定して保ち続けることが実証されました。
これは「複雑性は特定の狭い条件下にしか生まれない」という直感を数値で裏付けるものです。
最小構造・最大複雑性という設計原則
Peña & Sayama が明示した重要な知見は、**「最も少ない条件で最も豊かな複雑性を実現する」という最節約性(parsimony)**です。
Conway Life(B3/S23)は:
- 誕生条件が1種類のみ(近傍3個)
- 生存条件が2種類のみ(近傍2個または3個)
- 合計わずか3条件
これほどシンプルな規則が、グライダー・振動子・グライダーガンといった多様な構造を生み出すのです。「複雑な出力のために複雑な入力は不要」という事実は、設計論として深い含意を持ちます。
本レポートとの主な違いは以下の通りです。
| 観点 | Peña & Sayama | 本レポート |
|---|---|---|
| 指標 | 条件付きエントロピー(1つ) | C / O / S(3つ) |
| 目的 | Conway の特別さを検証 | 複雑なルール群を抽出 |
| 抽出方法 | 単一指標でランキング | パレート最適集合 |
(余談)LLMへの連想
以下は厳密な研究比較ではなく、読み物としての連想です。
「最小構造・最大複雑性」という発想は、現代の AI 設計を連想させます。
大規模言語モデル(LLM)の研究では、パラメータ数を増やすほど性能が上がるという経験則が長らく支配的でした。しかし近年の研究(DeepSeek・Phi シリーズなど)は**「小規模でも高品質なデータと洗練されたアーキテクチャで大型モデルに匹敵できる」**ことを示しています。
この傾向は、CA における「最小ルール・最大複雑性」と構造的に似ています(ただし直接の対応関係があるわけではありません)。
| CA の文脈 | AI の文脈(連想) |
|---|---|
| ルール条件の数 | モデルのパラメータ数 |
| 生み出されるパターンの多様性 | 出力の多様性・汎化性能 |
| ランダムノイズ維持ルール | 暗記・過学習モデル |
| Conway's Life(最小構造・最大複雑性) | 効率的なアーキテクチャ |
工学的な意味:設計空間の探索
CA の全ルール探索には、もう一つ工学的な意味があります。
設計空間を網羅的に調べ、優れた設計候補を自動抽出するという発想です。
今回の実験では 262,144 通りのルールから「複数の軸で優れたルール」をパレート最適として絞り込みました。これはまさに:
- ハイパーパラメータ最適化(どの設定が複数の性能指標で優れているか)
- アーキテクチャ探索 NAS(Neural Architecture Search)
- 進化的アルゴリズムによる設計最適化
と同じ構造です。「1つの正解を探す」のではなく「トレードオフの境界線(フロンティア)を探す」という考え方は、AI・工学の最適化問題全般に応用できます。
Wolfram(2002)— 問いの源流
"A New Kind of Science"
全 256 通りの1次元 ECA を4クラス(均一・周期・カオス・複雑)に定性的に分類した研究です。「シンプルなルールから複雑さが生まれる」という問いの源流であり、本レポートの動機の背景にあります。ただし分類は定性的であり、数値指標による多次元評価やパレート最適の概念はありません。
本レポートのオリジナリティ
調査した範囲では、「全ルール空間の網羅的探索」「複数の独立した複雑性指標」「パレート最適による抽出」の3つを同時に組み合わせた研究は見当たりませんでした。
個別要素はそれぞれ先行研究に存在します。しかし「CAのルール空間にパレートフロントという概念を持ち込む」発想——「どのルールが最良か」を1つに決めるのではなく「複数の軸でのフロンティアを取り出す」という立場——は、少なくとも著者が確認した範囲では見当たらないアプローチです。
13. 今後取り組んでみたいこと
「動く複雑さ」を捉える指標の設計
今回の C/O/S 指標はいずれも「落ち着いた構造」を好む設計になっており、グライダーのように空間を移動し続けるパターンを評価できません。この問題に正面から取り組んだのが Crutchfield らの 計算力学(Computational Mechanics) です。盤面上の時空間パターンを「粒子(particle)」として形式的に定義し、その生成・消滅・衝突をシンボル列として記述するアプローチで、移動する構造を定量的に扱えます。この枠組みを指標として組み込めれば、現在のパレート軸では見えていない「動く複雑さ」の次元が開きます。
エッジ・オブ・カオス仮説の検証
Langton(1990)は1次元 CA において、ルールの「活性度」を表す λ パラメータ(全遷移のうち非消滅状態への割合)が増加するにつれ、ふるまいが固定点→周期→複雑→カオスと相転移することを示し、複雑な振る舞いは λ ≈ 0.27〜0.45 付近の相転移領域にしか現れないと主張しました。
今回の 262,144 件のスコアデータがあれば、この仮説を2次元 CA で検証できます。幾何平均スコアの高いルールが λ の特定の範囲に集中するかどうかを確認するだけで、Langton の知見が2次元・複数指標の文脈でも成立するかを実証できます。
計算万能性との関係
Conway's Life は Turing 完全——すなわち任意の計算を盤面上で実行できることが証明されています。パレート最適に残った 106 件のルールにも、同様の計算万能性を持つものが存在するかどうかは未解明です。計算万能性の証明は一般に困難ですが、「グライダーガンとイーターの両方が構成できるか」という必要条件を自動探索するだけでも、高スコアルールの性質を絞り込む手がかりになります。
情報理論的複雑性との対比
C/O/S はいずれも統計的・幾何学的な指標です。一方、盤面を bit 列として圧縮したときのサイズ(Lempel-Ziv 圧縮率)は Kolmogorov 複雑性の近似として使われ、情報理論的な複雑性を与えます。両者を対比することで、「C/O/S スコアが高いルールは情報理論的にも複雑か」を検証でき、本記事の指標が既存の複雑性尺度とどう整合するかを議論できます。
付録:実装概要
ルール表現
from dataclasses import dataclass
@dataclass(frozen=True)
class LifeRule:
birth: frozenset[int]
survive: frozenset[int]
def __str__(self) -> str:
b = "".join(str(n) for n in sorted(self.birth))
s = "".join(str(n) for n in sorted(self.survive))
return f"B{b}/S{s}"
指標計算(C の例)
def spatial_autocorrelation(board: np.ndarray) -> float:
p = float(board.mean())
if p <= 0.0 or p >= 1.0:
return 0.0
b = board.astype(float)
n = count_neighbors(board).astype(float)
b_c = b - p
n_c = n - p * 8
num = float(np.mean(b_c * n_c))
den = float(np.std(b) * np.std(n))
if den < 1e-9:
return 0.0
return float(max(0.0, min(1.0, (num / den + 1.0) / 2.0)))
実行方法
# 全探索
python3 full_rule_pareto_search.py --output-dir output
# 特定ルールを可視化(GIF生成)
python3 visualize.py B3/S23 --size 64 --steps 150
python3 visualize.py B38/S3 --size 64 --steps 150
実行環境:Python 3.13.5 / NumPy 2.2.4
リポジトリ:cellular-complexity








