Powered by SmartDoc

life game
Ver. 1.0

2003年8月3日
栗野 俊一
kurino@math.cst.nihon-u.ac.jp
http://edu-gw2.math.cst.nihon-u.ac.jp/~kurino/2003/OC/index.html
Open Canpus 2003コンウェイのライフゲーム

コンウェイのライフゲーム

ライフゲームとは

ライフゲームは特殊なセルオートマトン

ライフゲームを考えたのは、コンウェイという数学者(計算機学者)です。

実は、ライフゲームは、一般的に、セルオートマトンと呼ばれるシステムの特殊なものなのですが、特に振る舞いが面白いので、コンウェイが発表するないなや、世界中の計算機で、遊ばれるようになったものです。

セルオートマトンとは

セルオートマトンとは、単純に言えば(1)、次のようなものです。

  1. 無限に広がる枡目がある
  2. 枡目はいくつかの有限状態を取ることができる
  3. 枡目の状態は一定の時間毎(これを世代と呼ぶ)に次の状態に変わる。
  4. 一つの枡目の次の状態は、現在のその枡目並びに隣接したいくつかの枡目の状態から定まる。

この記述からわかるように、セルオートマトンは、最初の状態が決まれば、その後、何世代経とうと、その状態が決定的に予測できる(2)ことが分かります。

  1. もちろん、厳密には、ちゃんとした定義もありますが、あまり気にしないでください。
  2. だから、計算機にやらせるわけです。

ライフゲームのルール

コンウェイのライフゲームは、次のようなセルオートマトンです。

  1. 状態は1 (生)と0 (死)の二つしかない
  2. 次の状態は現在の枡の状態とその枡の周りの8個の枡の合計9個の枡の状態から決まる。

    ライフゲームの近傍
    No 1 2 3
    1
    2
    3

    22の枡の状態は、その枡の状態並びに、その上下左右の近傍( 11-13, 21, 23, 31-33 )の枡の状態から決まる。

    状態を決める規則は以下の通り。

    1. 周りに丁度、二つの生枡があれば、現在の枡の状態がそのまま残る。
    2. 周りに丁度、三つの生枡があれば、現在の枡の状態にかかわらず、次の状態は生となる。
    3. その他の場合は、現在の枡の状態にかかわらず、次の状態は死となる。

ライフゲームで遊ぶ

「ライフゲームで遊ぶ」ということは、最初に升目の状態を決定し、何世代か経過した後の状態を目で見て楽しむということに他なりません。

ライフゲームの実行例

いくつか、ライフゲームの様子を確認してみましょう。

L の場合

例えば、次のような初期状態から始まることを考えて見ましょう。

初期状態 L (一世代目)
No 1 2 3 4 5
1
2
3
4
5
6

手作業で行うと、大変ですが、順にやってみることにしましょう。

初期状態 L の二世代目の結果
位置 結果 生き枡の数 理由
11 1 無条件死
12 2 現状(死)維持
13 1 無条件死
14 0 無条件死
15 0 無条件死
21 1 無条件死
22 1 無条件死
23 1 無条件死
24 0 無条件死
25 0 無条件死
31 3 無条件生
32 3 無条件生
33 4 無条件死
34 1 無条件死
35 1 無条件死
41 2 現状(死)維持
42 2 現状(生)維持
43 2 現状(生)維持
44 1 無条件死
45 1 無条件死
51 1 無条件死
52 2 現状(死)維持
53 2 現状(死)維持
54 1 無条件死
55 1 無条件死
61 0 無条件死
62 0 無条件死
63 0 無条件死
64 0 無条件死
65 0 無条件死

まとめると、結果は次のようになります。

L の二世代目
No 1 2 3 4 5
1
2
3
4
5
6

同様に、三世代目は、次のようになります(自分で確かめてみよう)。

L の三世代目
No 1 2 3 4 5
1
2
3
4
5
6

そして、四世代目は、次のようになり、以下五世代以降、変化はありません。

L の四世代目
No 1 2 3 4 5
1
2
3
4
5
6

点滅燈の場合

今度は、次のようなパターンを考えてみましょう。

点滅燈の初期状態(一世代目)
No 1 2 3 4 5
1
2
3
4
5

同様に、一つ一つ考えてみると、以下のようになります。

点滅燈の二世代目の結果
位置 結果 生き枡の数 理由
11 0 無条件死
12 1 無条件生
13 1 無条件生
14 1 無条件生
15 0 無条件死
21 0 無条件死
22 2 現状(死)維持
23 1 無条件生
24 2 現状(死)維持
25 0 無条件死
31 0 無条件死
32 3 無条件生
33 2 現状(生)維持
34 3 無条件生
35 0 無条件死
41 0 無条件死
42 2 現状(死)維持
43 1 無条件生
44 2 現状(死)維持
45 0 無条件死
51 0 無条件死
52 1 無条件生
53 1 無条件生
54 1 無条件生
55 0 無条件死

まとめると、結果は次のようになります。

点滅燈の二世代目
No 1 2 3 4 5
1
2
3
4
5

丁度、90度回転した形になっていることが分かります。

したがって、ライフゲームの特徴により、自然と第三世代目が以下のように、初代目と同じになることが分かります。

点滅燈の三世代目
No 1 2 3 4 5
1
2
3
4
5

90度回転を二回繰り返すと、180度回転したことになりますが、もともとの形が、180度回転すると、元に戻る形であったことから、結局、二世代毎にもとの形に戻ることがわかります。

後で述べるように、計算機で、この繰り返しを高速に実行すると、あたかも点滅を繰り返す電燈のように見えることから、このパターンを「点滅燈」と呼んでいるわけです。

ライフゲームの中の動物図鑑

ライフゲームを行うと、良く見かけるパターンというものがいくつかあります。

前節で紹介した二つの最終的なパターンも、そのような良く見かけるパターン(3)の一つです。

このように、良く見かけるパターンには、それぞれ愛称がつけられています。「点滅燈」もこのような愛称の一つです。

以下、ライフゲームの中で有名なパターンをいくつか紹介しましょう。

  1. 「良く見かける」というのは、もちろん、そのパターンが、何度も出現するということを意味します。つまり、そのパターンは、繰り返しパターンといえるわけです。

    最初の例は、1世代で繰り返し(つまり、不変なパターン)ですし、二つ目のパターンは、2世代での繰り返しパターンになっていた(ので、良く見かける.. )わけです。

固定パターン

ブロック
ブロック 初期状態(固定)
No 1 2 3 4
1
2
3
4
桶 初期状態(固定)
No 1 2 3 4 5
1
2
3
4
5
ボート
ボート 初期状態(固定)
No 1 2 3 4 5
1
2
3
4
5
船 初期状態(固定)
No 1 2 3 4 5
1
2
3
4
5
はしけ
はしけ 初期状態(固定)
No 1 2 3 4 5 6
1
2
3
4
5
6
蛇 初期状態(固定)
No 1 2 3 4 5 6
1
2
3
4
蜂の巣
蜂の巣 初期状態(固定)
No 1 2 3 4 5
1
2
3
4
5
6
パンの塊
パンの塊 初期状態(固定)
No 1 2 3 4 5 6
1
2
3
4
5
6
長ボート
長ボート 初期状態(固定)
No 1 2 3 4 5 6
1
2
3
4
5
6
長はしけ
長はしけ 初期状態(固定)
No 1 2 3 4 5 6 7
1
2
3
4
5
6
7
長船
長船 初期状態(固定)
No 1 2 3 4 5 6
1
2
3
4
5
6
池 初期状態(固定)
No 1 2 3 4 5 6
1
2
3
4
5
6

振動パターン

点滅燈
点滅燈 初期状態
No 1 2 3 4 5
1
2
3
4
5
点滅燈 二世代目
No 1 2 3 4 5
1
2
3
4
5
点滅燈 三世代目(元に戻る)
No 1 2 3 4 5
1
2
3
4
5
ひき蛙
ひき蛙 初期状態
No 1 2 3 4 5 6
1
2
3
4
5
6
ひき蛙 二世代目
No 1 2 3 4 5 6
1
2
3
4
5
6
ひき蛙 三世代目(元に戻る)
No 1 2 3 4 5 6
1
2
3
4
5
6
ビーコン
ビーコン 初期状態
No 1 2 3 4 5 6
1
2
3
4
5
6
ビーコン 二世代目
No 1 2 3 4 5 6
1
2
3
4
5
6
時計
このパターンも、90度回転し、かつ180回転すると元に戻るので、点滅パターンの例であるが、面白いことに、しばらく観察していると、90度ずつぐるぐる回っているように見える。
時計 初期状態
No 1 2 3 4 5 6
1
2
3
4
5
6
時計 二世代目
No 1 2 3 4 5 6
1
2
3
4
5
6

移動パターン

ライフゲームにおける移動パターンは、「ライフゲームが無限に変化し続ける」ことを証明する結果になった。

グライダー
グライダー 初期状態
No 1 2 3 4 5 6
1
2
3
4
5
6
グライダー 二世代目
No 1 2 3 4 5 6
1
2
3
4
5
6
グライダー 三世代目
No 1 2 3 4 5 6
1
2
3
4
5
6
グライダー 四世代目
No 1 2 3 4 5 6
1
2
3
4
5
6
グライダー 五世代目(初代に比較して右下に一つ移動している)
No 1 2 3 4 5 6
1
2
3
4
5
6
宇宙船
以下、変化は省くが、これは、右に移動して行く。
宇宙船 初期状態
No 1 2 3 4 5 6 7
1
2
3
4
5
6

ライフゲームプログラムで遊んでみよう

さすがに、ライフゲームを手動で遊ぶには、手間がかかりすぎです。

そこで、計算機を利用することを考えて見ましょう。

[ここ]をクリックしてみてください。

ライフゲームので遊ぼう

是非、プログラムを利用してライフゲームを楽しんでみてください。

小さなサンプルを動かしてみよう

まずは、小さなサンプルで、理解を確かめましょう。設定としては、Zoom 5, Speed 1ぐらいが良いと思います。

前節で紹介した様々な固定パターンや、振動パターンを入力し、実際に動かしてみましょう(4)

  1. 点滅燈や、グライダーを入力した場合は、一時的に、Zoomを小さく、Speedを大きくして実行してみると面白いですよ。

ちょっと大きなサンプルを動かしてみよう

Rペントミノ

「Rペントミノ」は、形は、小さいくせに、なかなか安定しないパターンです。

是非、Zoom = 2, Speed = 20で試してみてください。

R ペントミノ
No 1 2 3 4 5
1
2
3
4
5

最終的な結果は、ブロック、蜂の巣、点滅燈、パン塊、ボート、船、グライダー(もちろん、画面の外に飛び出して行く)に落ち着くがそれぞれ、いくつだろうまた、(グライダーを除く他の)パターンに落ち着くのは、何世代目だろうか?

π(パイ)

「π(パイ)」もなかなか終わらない。

π(パイ)
No 1 2 3 4 5
1
2
3
4
5

「H(エイチ)」はすぐにおわるのに..。

H(エイチ)
No 1 2 3 4 5
1
2
3
4
5
15連
「15連」は、繰り返しパターンなんだけど、実は秘密が...
15 連
No 1 2 3 4 5 6 7 8 9 10 11 12
1
2
3
4
5
チシャ猫
「チシャ猫」は、ニヤニヤ笑いを残して消えて行く... (これは、speed = 1で見よう。最後の一瞬だけが勝負だ.. )
チシャ猫
No 1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8
チシャ猫が消える寸前(ニヤっと笑って..)
No 1 2 3 4 5 6 7 8
1
2
3
4
5
6
7
8

グライダーをぶつけて遊んでみよう

グライダーの発見は、ライフゲームの大変大きな発見の一つと考えて良いでしょう。

グライダーを使えば、ライフゲームで色々と楽しむことができます。

ブロック
ブロックに色々なパターンでグライダーをぶつけてみよう。衝突して両方消えるパターン、グライダーだけが壊れてしまって、ブロックは生き延びるパターン、そして、衝突の結果、大爆発して、最後に大穴(池)ができるパターン。全部のパターンを見つけることができるかな?
15連
「15連」にも、グライダーをぶつけてみよう。上手にできれば、グライダーを吸収したり、反射させたりもできるんだ。君にも上手に、グライダーを操ることができるかな?
グライダー
グライダーとグライダーを衝突させてみよう。えっ?「簡単にきえちゃうだけで、つまらない」だって?たった二つだけじゃつまらないよ。三つとか四つはどうかな?実は、いくつかのグライダーを衝突させると...(5)
色々なもの
色々なもの(固定パターンや振動パターン)に、グライダーを衝突させたらどうなるだろうか?面白いパターンがみつかるかなぁ...(6)
  1. 実は、この後で述べるグライダー砲が作れたりしちゃうんだけど、これはさすがに、「発見」できそうもないね...。
  2. およそ、根気の必要な話ではあるが...

作品鑑賞会

[Open]ボタンを押してみよう。そして、その中から、好きなもの選んでクリックしよう。

すると、予め用意された芸術作品ともいえる、パターンが表示されるはずだ。

Zoomを1にして、Speedを20より早くして、Goしてみよう。そこには、計算しつくされた美しい世界が...

混沌のスープをかき混ぜたら..

Zoomを1にして、画面にぐちゃぐちゃな絵を書いてみよう。そして、Speedを20より早くして、Goとすると...。

手始は、自分の名前がよいかもしれない。そこから、どんなパターンが生まれるだろうか?

よく目を凝らしてみると、見慣れたパターンもいくつかみうけられる。

ビッグバーンから何が生まれるかは、君という神の御心にかかっているのだ..

ライフゲームの世界

懸賞問題

コンウェイは、次の二つの懸賞問題を出した。

現時点では、二つとも解けているが、前者の結果は、グライダー砲というすばらしい形での解となった。

グライダー砲に発展するパターン
No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
1
2
3
4
5
6
7
8
9
10
11

グライダー砲それ自身は、繰り返しパターンだが、その繰り返しの間に、一台のグライダーを発進させるため、たくさんのグライダーが無限に増殖することになる。

グライダーの織り成す世界

以下、いくつかの事実をまとめておこう。

  1. 既に紹介したように、実は、グライダーの向きは、15連を用いて、向きを変えることができる。
  2. 上手に、グライダー砲と15連を並べればグライダーを好きな方向から好きなタイミングで、好きな数だけ衝突させることができる。
  3. 複数のグライダーを上手な形で衝突させれば、グライダー砲を作ることができる。

ここから、導きだせる結論は、「グライダー砲を組み合わせてグライダー砲を作ることができる」という楽しい結論なのだ。

これは、「自己増殖」の可能性を示唆している。つまり、「生き物」としての属性の一つの可能性が、このライフゲームの中に秘められているわけだ。

短い時間だったが、ライフゲームに堪能できただろうか.. ?

参考資料

  1. Conway's Game of Life
  2. Anfy Life2d