Conway: Game of Life

Posted by Mr. Thursday

這篇文章的標題翻譯成中文是:「康威:生命遊戲」。康威(John Horton Conway)是一位劍橋的數學家,生命遊戲是他在1970年發明的小遊戲。這個遊戲是一個模擬遊戲,首先有一個長方形棋盤,裡面劃分成許多小格子。每一個可以是的細胞或的細胞。每一步棋盤的狀態可以影響下一步的狀態,規則是:

  • 如果某一格細胞在時間 t 是活著的話,那麼在時間 t+1 的時候
    1. 如果這格細胞只有一個鄰居或沒有鄰居活著的話,就死去 (因為孤獨)
    2. 如果這格細胞有四個或更多鄰居活著的話,就死去 (因為擁擠)
    3. 如果這格細胞剛好只有兩個或三個鄰居,則繼續活著
  • 如果某一格細胞在時間 t 是死的話,那麼在時間 t+1 的時候
    1. 如果這格細胞剛好有三個鄰居的話,就起來

 上面就是其中一個例子,每一格細胞依照剛才的規則來決定下一步的生死,綠色是活起來的細胞,黑色是還沒有活起來的細胞。這個遊戲之所以稱為「生命遊戲」,是因為他用一些基本的規則,來模擬生命的進行,每一個細胞僅僅依照這幾條規則,就有許多不同的變化。我們甚至可以把大的圖形看成是一個有機體,一堆細胞組成的一個有機體,這個有機體就因為細胞的變化跟著變形,所以「看起來」的確有些生命演化的味道,好像有些有機體會吃掉其他有機體,有時候變大,有時候消失,然而所根據的,是組成有機體的細胞,依照幾條基本規則演化的結果。

除了「看起來」有生命的感覺,裡面其實也有數學在裡頭。因為規則是固定的、可預測的,我們只要知道初始狀態(有哪幾格是活著的細胞),就可以知道第一步的狀態,知道第一步的狀態,就可以知道第二步的狀態,以此類推,因此如果數學比較有sense的讀者,也許可以嚐試看看,先試試10*10的棋盤,然後把每一格細胞寫成時間 t 的函數,我只要把時間t和初始條件帶入,就可以知道第n步的時候,這個棋盤有哪些細胞會活起來了。

然而這個遊戲其實也是有趣在於可以一步一步看這些有機體演化,因此我也在網路上找到一個JAVA Applet可以讓各位讀者玩玩看:

http://www.bitstorm.org/gameoflife/

gol1.jpg

上面是screenshot和使用說明。我們除了可以指定初始狀態以外,也可以在中途停下來,變動一些細胞的狀態,再繼續演化。目前我是出一些基本的圖形,像是連續三個細胞形成的直線連續四個細胞形成的直線,以及四個細胞形成的正方形等等,這些組合方式都可以穩定下來,像是正方形就永遠不會變動,連續三個細胞的直線則會在水平線和垂直線之間不停的交錯變換,連續四個細胞的直線,會在幾個步驟以後穩定下來,變成類似菱形的形狀。

gol2.jpg

 如果我們在菱形旁邊加一個點,會產生甚麼樣子的變化呢?

gol4.jpg

過了幾步以後,原來的菱形開始向外面擴張

gol5.jpg

到最後,穩定下來,居然就變成四個小菱形,排列成一個大菱形狀了。

gol6.jpg

至於文章一開始提到的圖形,在這個模擬器裡面也有這個圖形需要的初始狀態可以選擇,只要選左邊下拉選單的最後一項”Gosper Glider Gun”然後按開始,就可以看到剛才的動畫了。

gol7.jpg

然而上面的圖形,假設我們隨便加給個點進去,整個系統就會破壞掉,在這邊還滿有「混沌」(chaos)的味道。因此雖然這個遊戲只有幾個基本規則,演化出來的生命卻是千變萬化,還可以用數學加以分析。Donald E. Knuth在他的一系列演講中的某一次演講,也提到了Game of Life,有興趣的可以在這邊(Dr. Dobb’s Journal Techcast)收看演講錄影。

近代的「系統生物學」(System Biology)應該也是做類似的事情,把生命的機制,歸納出基本的規則,不管是系統層次、器官層次、細胞層次、一直到基因分子層次。雖然這個生命遊戲離真正的生命還有段距離,但是也初步展示了系統生物學的一些原理了!

參考資料

喜歡這篇文章嗎? 分享出去給作者一點鼓勵吧!