ウルフラム・コード/ウルフラムの265個のルール

ウルフラム・コードとは?

ウルフラムコード(Wolfram code)は、数学者・計算機科学者のスティーブン・ウルフラムによって複雑性や自己組織化の仕組みを調べるために考案された非常に単純なセル・オートマトンの一種である。

初等セル・オートマトンは、一直線上に並んだセルが「0」と「1」の2状態を持ち、各セルの次の状態を、そのセル自身と左右の隣接セル、合計3セルの現在の状態だけから決定する。3個のセルには2³=8通りの状態の組み合わせがあるため、1つの規則では、この8通りそれぞれに対して次の状態を0または1のどちらにするかを指定する。したがって、規則は8個の0・1、すなわち8ビットの情報によって完全に記述可能である。 8つの入力パターンそれぞれに0または1の2通りの出力を割り当てられるため、考えられる規則の総数は2⁸=256通りとなる。ウルフラムコードでは、この8ビット列を二進数として読み、その値を十進数に変換して0~255の番号を付ける。例えば「00011110」は二進数で30なので「ルール30」と呼ばれる。このように、ルール番号そのものが規則を構成する8ビットの情報を数値化したものになっている。

このオートマトンは、わずか8ビットという非常に小さな情報量であるにもかかわらず、非常に長く複雑なパターンを生成できる。つまり、複雑な結果を生み出すためには、複雑な初期規則が必ずしも必要ではないということである。単純な局所規則を反復するだけでも、全体として予測困難な構造が現れる。この性質こそが、ウルフラムがセル・オートマトンを通して探究した「単純な規則から複雑性が生まれる」という問題の核心である。

Wolfram code /
Wolfram's 256 Rules

単純な規則からパターンが生まれる

状態:⏹️ ルール:30 ステップ数:0

代表的なウルフラム・コード一覧

ルール18 & ルール22

ルール30に似たカオス的な性質を持つが、内部に大小さまざまな「空白の三角形」が自己相似的に現れる特徴的な構造を持つ。

ルール30

初期状態はシンプルな単一の黒ドットであるが、時間の経過とともに極めて複雑で予測不能な非周期パターンを生成する。乱数生成器として用いられたり、自然界(イモガイの貝殻の模様など)に見られるパターンのモデルとして知られている。

ルール54

ルール110と同様、規則的な背景の中で局所構造(パルスのようなもの)が移動し、互いに衝突して複雑なパターンを作り出す。チューリング完全性(どんな計算も理論上実行可能という性質)を持つ可能性が高いとして現在も研究対象になっている。

ルール60

自分と左隣のセルの排他的論理和(XOR)で決まるルールである。ルール90が左右両方に広がるのに対し、ルール60は片側(右下方向)に向かって三角形のフラクタル構造を伸ばしていく。

ルール73

規則的な帯状のパターン(壁)の間に、不規則な変動が閉じ込められるような不思議な振る舞いをみせる。

ルール90

各セルの次の状態が、左右の両隣のセルの排他的論理和で決まる。初期状態として1つのドットから開始すると、幾何学的に美しいフラクタル図形である「シェルピンスキーのギャスケット」を描き出す。

ルール110

局所的な構造(局所パターン)が波のように動き、互いに衝突しながら情報を伝達・処理する。スティーブン・ウルフラムのアシスタントであったマシュー・クックによってチューリング完全性(どんな計算も理論上実行可能という性質)を持つことが証明された。極めてシンプルな規則から計算機能が立ち上がる代表例である。

ルール150

左・自分・右の3つのセルの排他的論理和をとるルールである。ルール90と同じく代数的な性質(線形性)を持ち、美しい対称的なフラクタル模様を描く。

ルール184

表面上はシンプルなパターンであるが、道路上の車の流れ(交通渋滞のモデル)や粒子の移動、表面の堆積プロセスなどをモデル化するのに使われる。