生命遊戲 the Game of Life

2020-12-18 騰訊網

引言

群居性昆蟲是一個生命,魚群、鳥群是一個生命,社會、城市是一個有機體,人類的語言是活的,人類的集體行為也是活的。這些複雜系統是如何設計出來的?世界上最著名的遊戲之一,Game of Life生命遊戲,為這些最神秘的問題提出了可能的解釋——也許再複雜的生命,最初也不過是幾條最簡單的規則。本文從Game of Life的緣起說起,解釋了它這幾十年給予數學、計算機、哲學的啟發,最後把它作為Python編程的練習。

「匈牙利唯一的天才」——馮諾依曼

我們的故事從上世紀40年代說起。彼時,第一臺電子計算機的出現昭示了計算機領域風起雲湧的時代,同時也開啟了以信息控制技術為核心的人類第三次科技革命。馮諾依曼(John von Neumann)則是這段歷史中繞不開的開山鼻祖。

能夠作為電子計算機理論和博弈論的奠基者,用「天才」這個詞再去形容馮諾依曼顯得蒼白。他是一個精力智力都充沛的命運寵兒。在他博士論文答辯時,導師們唯一的問題是:你今天的西裝真挺括,是哪個裁縫做的?他喜歡在吵雜的環境裡工作,在辦公室裡放進行曲會吵到隔壁的愛因斯坦。普林斯頓研究拜佔庭歷史的教授說,馮諾依曼在拜佔庭史方面比自己更精通。

馮諾依曼以什麼著名?一個顯示屏可能都放不下(+68More)(來源:維基百科)

人工智慧之父——艾倫·圖靈

說到現代計算機科學的起源,除了馮·諾依曼,不得不提的是圖靈(Alan Turing). 如果說馮·諾依曼是電子計算機的完整呈現者,那圖靈則是「證明」了計算機本身。他給出了「用計算機模擬人類的思維過程」這個思路,而圖靈測試則是對於」計算機是否能展現等同於人的智力「的驗證標準。圖靈機(Turing Machine)[1]給出了計算機能力的邊界,而算法關心的是如何去逼近計算機的能力邊界。圖靈並沒有刻板印象中的四體不勤——他不僅智力超群,還是天賦異稟的長跑運動員。圖靈5公裡能跑進16分鐘,馬拉松最好成績2小時46分。馮諾依曼和圖靈的第一次在時空中的糾纏可以追溯到1931年,當圖靈還在劍橋大學國王學院讀本科的時候。他參加了某一個大獎賽,而獎品則是一本馮諾依曼的《量子力學的數學基礎》。圖靈還評價到:「很有意思,雖然有些應用數學家覺得不好讀,但我覺得還挺容易的。」

人是機器,還是機器是人

隨著人工智慧技術的發展,人與機器的邊界越來越模糊。可以說,人工智慧和對於生命邊界的探索,從有了計算機這個概念開始就存在。馮諾依曼曾給生命下了一個定義。他認為,生命是一個符合圖靈機的定義,同時可以複製自身的有機體。他的朋友,同樣是位家境殷實的高富帥,烏拉姆(Ulam)覺得這個問題非常有意思,提出了「細胞自動機(cellular automata,CA)」的概念,用程序來模擬生長機制[2]。任何程序或多或少都可以被當作一套規則;這套規則明確了每一步程序的行動。就像一個經典的程式設計師笑話:女朋友讓程式設計師男友「下班後,買一袋蘋果回家。如果看到賣西瓜的,就買一個」[3]。細胞自動機就是一個特定類別的簡單程序。它的規則制定在二維的格子(cell)平面上,每一個格子有兩個狀態黑/白;每一步指令都會明確地給出每一個格子如何按照它的八個近鄰的黑白而變色的規則。比如下圖就是一個有十個步驟的細胞自動機[4]。

後來馮·諾依曼和烏拉姆又各忙各的了,等到二十多年後,一生都在遊戲的數學家約翰·康威(John Conway),以一種更有趣的形式發揚了「細胞自動機」,並闡釋了馮·諾依曼的定義是正確的。這個模型就是風靡全球的「Game of Life」, 生命遊戲。

數學魔術師 ——約翰-康威

看《科學美國人》《環球科學》的朋友們看到這個名字一定會覺得很親切,很多人因為康威的「生命遊戲」與計算結下了不解之緣。數學家團體對他有這樣的評價,「他是一位多才多藝的數學家,他在構建和處理『非主流』代數結構方面,以完全出乎意料的方式闡明了各種問題。他在有限群理論、結子理論、數理邏輯和博弈論方面做出了傑出的貢獻。」不幸的是,在2020年4月11日,他因感染COVID-19與世長辭。而他創造的細胞生物就一直留在了二維方格的世界裡。

John Conway

生命遊戲 the Game of Life

生命遊戲算得上是現在流行的真實世界模擬遊戲的鼻祖(也在一定程度上啟發了分形數學)。它用特別簡單的規則產生出帶有真實感的複雜性。

生命遊戲開始於一張二維的方格紙。初始細胞(有機體)每個佔據一個方格。它們各自有活著或死去兩種狀態(live/dead). 每一個細胞是死是活只取決於周圍的環境資源,也就是圍繞著它的八個格子。根據規則,就像真實的細胞生長情況,在二維上的這些方格細胞如果太擠或者太稀疏就會死去;在最合適的群體密度時,它們生長地最好[5]。

康威想要通過這樣一個有趣,過程不受外界控制的遊戲,弄明白怎麼樣的結構可以保持穩定不消亡。生命遊戲是對於由有機體構成的社會起伏的簡化,就像現在全員在探討的「穿越周期性」。經過深思熟慮後,康威非常節制地僅給出了幾條最基礎的遊戲設定[6]。其餘,就看每一次遊戲開始後的「造化」。

By Saisundar.s - Own work

生命遊戲是一代計算機的記憶,就像21世紀的超級計算機的回憶一定有機器學習。生命遊戲是世界上被玩得最多的電腦遊戲之一。上世紀70年代正是微型計算機蓬勃發展的時候,不過當時的計算機還是不擅長圖像處理和儲存,於是生命遊戲席捲了全球的計算機。在美國因為在工作時間偷偷盯著生命遊戲發呆的總損失高達數百萬美金。

不難想像為什麼這個遊戲那麼受人歡迎,正如同變幻莫測的恆星軌跡讓那麼多《三體》書裡書外的人驚心動魄:

1.如此簡單的初始條件卻可以出現驚人的複雜行為;

2.達到平衡的結構中有些非常有趣,有些甚至呈現周期性[7];

3.對於計算機專業的人來說,生命遊戲的價值在於它是圖靈完備(Turing complete)的,也就是說,任何在計算機上可以由算法做到的,都可以在生命遊戲裡實現。

史蒂芬·霍金的《大設計》

為什麼是我們?宇宙的存在有意義嗎?智慧的起源為何?「大設計」曾是一個神學概念,指的是宇宙規律的背後有造物主式的安排。霍金的《大設計》在討論了這些問題用了生命遊戲的模型,「像生命遊戲這樣規則簡單的東西能夠創造出高度複雜的特徵,智慧甚至可能從中誕生。而我們的腦中就有數千億的細胞」。科學界的Google創始人Wolfram更是認為宇宙的本質就是計算,是一套簡單的規則生成的複雜現象。更有意義的是,就算了解了一切規則,我們也無法提前得知這些規則可以演化成怎樣的系統。這對我們有關鍵的啟發,即使在完全絕對論的世界裡,我們依然擁有自由意志。

credit to:Mike Zeng

代碼實現

生命遊戲的思想上和圖像上都有深入淺出特性,我們可以把它當作很好的編程入門問題。像Google這樣的企業也會把它作為試題。我們接下來將如何用Python實現這個遊戲。

下圖是每一個細胞的生死規則。

入門級:

引入Convolution和Kernel:

SciPy中有一個對於諸如人臉識別等圖像處理很重要的功能Convolution(卷積)[8]. Convolution作用在一個細胞和它的鄰居上。

這九個方格的狀態(location/weight)用kernel(核)來表示。

比如這個kernel表示了在0的周圍8個臨近的權重都是1。

在生命遊戲中,neighborhood指的是細胞周圍相鄰的8個格子(這種neighborhood也稱為Moore Neighborhood)

可以用以下代碼替代上述代碼:

「滑翔機」Glider

很多人把滑翔機這個圖案作為生命遊戲的標示。滑翔機是一種處在穩定的振蕩狀態,同時會移動的結構。它在1970年被英國數學家Richard Guy發現。與英特網和Unix同時期的誕生使得Glider在一代黑客心裡有著重要的地位。到現在它還會被當做這個團體的圖騰。

我們得到如下的圖像,這就是一個glider:

By Xerol at en.wikipedia

Father, give us courage to change what must be altered;

serenity to accept what cannot be helped;

and the insight to know the one from the other.

惠我以安寧,忍所當忍;

賜我以勇毅,為所當為;

更賜我以智慧,將兩者區分。

雷茵霍爾德·尼布爾(Reinhold Niebuhr

THE SUN NEWS SYNDICATION

注釋

[1]圖靈機(Turing Machine)

圖靈機是一個真實計算機的模型。圖靈機可以完成所有計算機可以完成的任務。

[2]細胞自動機(CA)是一種用來思考複雜系統的極簡化計算模型。人類對於智慧生物的好奇與仿真的熱情源源不斷地推動著科學技術的發展,不論是細胞自動機,還是飛機,人工智慧,都是從真實的複雜系統中抽象出最核心的要素,再通過一定的邏輯重構。

[3]程式設計師買了一個蘋果回家——因為路上遇到了一個賣西瓜的。

[4]這個CA的具體規則是:第一步,第一行中間的格子是黑色,除此之外均為白色。在緊接著的步驟中,與上一步驟或者任一步驟黑色格子相鄰的格子成黑色。

[5]遊戲設定

1.避免爆發式的總數上漲

2.存在小的初始狀態以達到混沌的、不可預測的結果

3.需要以能在細胞自動機環境裡模擬出馮諾依曼的自複製結構(Von Neumann’s Universal Constructor)

4.具體的演變規則在滿足1-3的情況下越簡單越好

[6]具體程序(演變規則)

1.「總數過少」:任何活細胞如果活鄰居少於2個,則死掉。

2.「正常」:任何活細胞如果活鄰居為2個或3個,則保持活的狀態。

3.「總數過多」:任何活細胞如果活鄰居大於3個,則死掉。

4.「繁殖」:任何死細胞如果活鄰居正好是3個,則活過來。

[7]有三種穩定態:靜止態(Still Life),震蕩態(Oscillator)和以Glider為代表的移動震蕩態

[8] 比如知名的卷積神經網絡(Convolutional Neural Network, CNN)的核心概念就是它的人工神經元可以響應一部分覆蓋範圍內的周圍單元(neighborhood),對於大型圖像處理有出色表現。

參考文獻和衍生閱讀

1.這個遊戲沒有玩家,為何在學術圈火了半個世紀?時間: 2017年01月06日 | 作者: 徐寒易 | 來源: 環球科學

https://huanqiukexue.com/a/qianyan/xinxi__nenyuan/2017/0106/26910.html

2.Introduction to the Theory of Computation 3rd - Michael Sipser

3.https://web.stanford.edu/class/sts145/Library/life.pdf

4. https://commons.wikimedia.org/w/index.php?curid=73877448

5.https://www.csail.mit.edu/event/von-neumann-and-origin-life

Von Neumann and the Origin of Life SPEAKER Hyman Hartman

6.史蒂芬·沃爾夫勒姆(Wolfram):宇宙的本質是計算

https://m.guokr.com/article/126181

7. Wikipedia:詞條-Game of Life; Glider

8. Turing and von Neumann, Professor Raymond Flood

9. A New Kind of Science - Stephen Wolfram

9 : 老胡談話錄

10. The Lives of a Cell - Lewis Thomas,李紹明翻譯

11. 這些是史上最有意思的GoL Patterns?:

https://conwaylife.com/forums/viewtopic.php?t=1067

代碼參考:

https://github.com/madison-python/think-complexity/blob/master/game-of-life.ipynb

https://github.com/madison-python/think-complexity/blob/master/thinkcomplexity/game_of_life.py

https://github.com/madison-python/think-complexity/blob/master/game-of-life.ipynb

https://leetcode-cn.com/problems/game-of-life/

By Lucas Vieira - Own work,CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=101736

相關焦點

  • 壽屋no game no life -白 近日開訂
    壽屋 no game no life -白 近日開訂 時間:2014-05-29 11:21:16   來源:AC模玩網   責任編輯:零下九度
  • 遊戲人生-零:人類少年與機器少女的另類愛情,no game no life
    對於《遊戲人生:零》,我是在b站上,一天內補完12集,然後就直接買票去看的,很好看。原本以為是熱血冒險,結果被愛情的光輝感動到。因為喜歡所以7月份又去影院補了票,也認真地全部看完。但全程笑不出來,也哭不出來,說到底從影院出來後,心情就沒放鬆過。現實比所有黑,動畫所描述的更為扭曲、心痛。
  • 世界頂尖數學家、「生命遊戲」發明者約翰·康衛因新冠病去世
    「生命遊戲」之父Conway生於英國利物浦,他11歲時就知道自己想當數學家。John Conway對他的領域最令人矚目的貢獻可能是他發明了「生命遊戲」,催生了一個全新的數學分支:細胞自動機。而早在個人計算機發明之前,「生命遊戲」就可以用單靠筆和紙完成,這款遊戲不僅可以促進受眾對於數據編程和展示的理論興趣,也可以在其中鍛鍊自己的實際能力。 遊戲模擬, Bitstorm1981年,Conway當選為皇家學會會員。
  • 如何利用python實現生命遊戲
    英國數學家約翰·何頓·康威在1970年發明了 the game of life,今天番茄加速就來分享下如何利用python實現生命遊戲,規則如下:每個細胞有兩種狀態 - 存活或死亡每個細胞與以自身為中心的周圍八格細胞產生互動當前細胞為存活狀態時
  • 雙語美文欣賞:The Torrent of Life 生命的急流
    Friends, do you know what is meant by life? And what is meant by the "torrent of life"?朋友,你知道什麼叫生命嗎?你知道什麼叫做「生命之流」嗎?I bet you don't!
  • 《No game no life劇場版:零》遊戲就是人生,人生也如遊戲
    自從我入宅以來,我幾乎沒有討厭過任何一部作品,然而,同時我心目中也從來沒有過所謂的神作,直到今日《No game no life劇場版零》七月於日本首映,我們這裡則等到了這個寒冷的12月才最終上映。那麼這一個始於《遊戲人生》本傳6000年前的故事為何受到極度的好評呢? 又為何眾人皆期待不已呢?
  • 遊戲人生:NO GAME NO LIFE
    在一起就不會輸了遊戲人生僅僅是遊戲人生?對於《遊戲人生》的TV而言大部分都是搞笑的過場版的單元劇,而劇場版作為TV版的前傳,用更為廣闊的世界觀和時間線講述了TV版的背景。突然發現一件事,空白的描述是「只要不存在不能獲勝的遊戲,空白就必然能夠獲得勝利」,也就是說,只要存在贏的可能性,那麼空白必然能夠抓住。
  • NO GAME NO LIFE 遊戲人生
    NO GAME NO LIFE 遊戲人生 白,是遊戲人生裡面空的妹妹。拒絕上學,沒有朋友,有對人恐懼症,遊戲廢人,被欺負的孩子。一旦離開空變成獨自一人,就會變成無法正常交流的對人恐懼症患者。
  • 滿分神作——《No Game No Life 遊戲人生 Zero》
    《NO GAME NO LIFE 遊戲人生 ZERO》是一部改編自輕小說《NO GAME NO LIFE 遊戲人生》的劇場版動畫,劇情方面延續了TV版動畫《NO GAME NO LIFE 遊戲人生》的設定。
  • a new life結局大全:新生活a new life遊戲攻略[多圖]
    a new life遊戲結局是有多種路線的,每個不同的路線選擇所產生的結局都不同,很多玩家已經體驗過了,但是對於所有的遊戲結局並不太了解,為了幫助大家有更好的體驗,今天小編就為大家帶來a new life遊戲結局大全:新生活a new life遊戲攻略,感興趣的朋友們一起來看看吧!
  • 《生命遊戲》FPGA實例評測:有限狀態機用哪種編碼更好?
    我最終選擇的系統是康威的《生命的遊戲》,這是一種細胞自動機,它模擬了活細胞在其環境中的行為,模擬了這些細胞的出生、繁殖和死亡過程,命遊戲是一個二維網格遊戲,這個網格中每個方格居住著一個活著或死了的細胞。一個細胞在下一個時刻的生死取決於相鄰8個方格中活著或死了的細胞的數量。
  • Water for Life生命之水
    當我們用自己的舌頭來品味聖名時,舌頭,就像一片乾涸的沙漠,突然變得生命圓滿。當聖名進入我們的耳朵,祂給予了我們太多的淨化,滋養和救贖,以致我們渴望能有千百萬隻耳朵。當這甘美聖名的聲音進入我們的心田,祂給了我們完全的極樂和滿足,我們的感官因為品嘗這份甜美而遲鈍起來。The Holy Name is like water.
  • 「the name of the game」是指「遊戲的名字」嗎?
    大家好,今天我們分享一個非常有用且地道的表達——the name of the game」, 這個短語的含義不是指「遊戲的名字」,其正確的含義是:the name of the game(活動)最重要的部分,最需要的素質
  • 遊戲人生/NO GAME NO LIFE
    遊戲人生/NO GAME NO LIFE遊戲人生/NO GAME NO LIFE由日本小說家檟宮佑創作並負責插畫的輕小說「遊戲人生(No Game, No Life)」,確認將於2014年4月登上電視螢屏。作品講述了家裡蹲的兄妹——空、白兩人,在網絡上卻是被奉為都市傳說的天才遊戲玩家。
  • game是遊戲,那game face是什麼意思
    game face |鬥志昂揚的樣子,勢在必得的樣子。(準備好應對某個棘手的事情或迎接挑戰時的表情)When I ask the little boy if he dares to take that challenge, he put on game face.
  • NO GAME NO LIFE——在生活中遊戲,在遊戲中生活
    就算業界一副藥丸的樣子,沙子裡還是藏著珍珠的,有一部2014年異世界輕改作品,卻做到了口碑和銷量上的雙成功,那就是《遊戲人生》。遊戲和人生一樣,它對於我們珍貴的,就在於遊戲本身,在於我們經歷的過程。當一個遊戲通關時,你的喜悅感是無比的,其途中可能讓你煞費苦心,讓你惱羞成怒,甚至讓你感到絕望,但真的到了通關那一天,你會選擇忘記這些讓你曾經痛苦過,愛抽過的東西嗎?顯然是不會的。
  • 龍魂的不正經遊戲測評:腦洞大開的解謎遊戲——There is no game
    但是事實上這個遊戲有一個前身,那就是在2015年發布在steam平臺的《There is no game: Jam Edition 2015》(雖然不知道因為什麼原因,在steam的介紹之中這款遊戲的上架時間變更為2020年3月,下文用《2015》指代~)。
  • NO GAME NO LIFE:披著遊戲皮的後宮番
    NO GAME NO LIFE又名遊戲人生,背景設定還是很特別的,一個不論什麼都是由遊戲決定的世界,人權、領土、金錢等等。男女主來到這個世界以後,遇到了遊戲失敗的史蒂芬妮(←被男女主稱為「史蒂芙」,人類最後國家的前任國王——艾爾齊亞先王的孫女,非常重視自己的祖父(先王)和艾爾奇亞的一切,參加「下任國王遴選」的循環賽制賭博大會,被克拉米打敗,在克拉米即將登上王位的時候,空白挑戰克拉米,成功登上了王位,史蒂芙就在一旁輔佐空白。雖然經常被當作笨蛋,但從小接受精英教育,以優秀成績畢業,在管理國家處理政務方面有一手。)
  • 《NO GAME NO LIFE 遊戲人生 ZERO》:休比感知「心」的歷程
    本篇從機凱種休比感知並最終擁有「心」的歷程的角度,對劇場版動畫《NO GAME NO LIFE 遊戲人生 ZERO》進行解讀。首先要解釋的是劇中被稱為「心」的東西是什麼?休比表達自己的心情休比生命的最終說出的話語,完完全全是現實中一個墜入愛河的小女孩的內心的貼切寫照,而上圖中「繼承」一詞更是點睛之筆!現實人類對心愛之人濃烈真摯的思念,也不過如此吧!
  • 《抖音》you are my everything in life是什麼歌
    you are my everything in life」這一句歌詞聽起來是不是有些奇怪,小編在抖音上面聽到這一首歌的時候也感覺非常的奇怪。但是卻不知道這一首歌叫什麼名字。接下來,小編就給各位玩家小夥伴帶來了《抖音》you are my everything in life是什麼歌,有不清楚的玩家可以一起來看一看。