細胞自動機 - iThome
文章推薦指數: 80 %
而由英國數學家John Conway創造的生命遊戲,屬於細胞自動機(Cellular automaton)範疇,理論上,這樣的運算具有圖靈完備的能力,甚至可應用於許多科學 ...
移至主內容
文/林信良
|
2020-08-28發表
關於細胞自動機的研究,最早可追溯至1950年代,這篇文章想從生命遊戲(Gameoflife)開始談起,或許不少程式人也曾聽過或實作過這個簡單的遊戲。
而由英國數學家JohnConway創造的生命遊戲,屬於細胞自動機(Cellularautomaton)範疇,理論上,這樣的運算具有圖靈完備的能力,甚至可應用於許多科學領域。
Conway的生命遊戲
在1970年10月的《ScientificAmerican》的數學遊戲專欄中,JohnConway發表了生命遊戲,他建議你兩種顏色棋子要夠多,以及一個夠大的棋盤,棋盤中各方格的細胞與鄰居形成九宮格,也就是每個細胞的鄰居有八個,一開始各細胞會有個初始狀態:要不就活著,要不就死亡。
遊戲的規則是這樣的:如果細胞的鄰居為二個或三個,該細胞在下一代(generation)的狀態會是存活(穩定)。
若細胞的鄰居小於一個或在四個以上,下一代將會死亡(孤單死或擁擠死)。
死亡狀態的細胞若有三個存活狀態的鄰居,下一代將會復活(繁殖)。
顯然地,想使用程式建構這樣的遊戲並不難,單純就是迭代所有棋盤方格,計算每個細胞的鄰居數量,從而決定各方格細胞的下個狀態。
如果懶得寫程式,網路上也會有許多生命遊戲的模擬程式,例如Golly,有桌機或行動裝置的版本,下載回來後可用滑鼠點選各位置初始細胞狀態,模擬每一代的狀態變化。
在隨意玩耍生命遊戲的過程中,你也許會發現一些有趣的特性。
例如,有些初始狀態最後會形成穩定狀態,也就是最後始終是存活或死亡,而有些初始狀態最後在每一代或數代週期之間,重複相同的圖案(振盪狀態),運氣好的話,你可能還會發現一些會移動的圖案(會移動的振盪狀態)。
如果你玩不出這些狀態也沒關係,可以查看維基百科〈康威生命遊戲〉條目,試著在Golly中畫出對應的初始圖案,或者是載入Golly提供的既有初始狀態模式,看看各種有趣的生命遊戲演化。
基本細胞自動機
生命遊戲是二維的,狀態極為複雜,1983年英國電腦科學家StephenWolfram發表了基本細胞自動機(Elementarycellularautomaton),細胞只存在於一維的方格中,有左右兩個鄰居,各細胞的初始狀態為活著或死亡,若存活為1而死亡為0,細胞與其鄰居可能的狀態可以用三個位數的二進位數來表示,也就是000、001、010一直到111。
根據細胞與其鄰居可能的狀態,Wolfram制定細胞的演化規則是:在000時,細胞會維持死亡,也就是中間的位數依舊為0,而在001時,細胞復活,也就是中間的位數為1,以此類推。
而從000至111,細胞下一代的新狀態,各會是:0、1、1、1、1、0、0、0,我們通常將其稱為規則30。
如果將規則30每一代的狀態,依照舊代至新代,以由上至下的方式畫出來,會是個特殊圖案的三角形。
型態可參考維基百科〈Rule30〉條目中的照片,有趣的是,該條目中有張織錦芋螺的照片,螺殼上的圖案跟規則30非常相似。
因為細胞與其鄰居可能的狀態,使用000至111表示,下一代的狀態各可以對應至0或1,這表示演化規則會有256個可能性。
而在不同的規則下,Wolfram的基本細胞自動機如果畫出來,將會呈現不同的樣貌,例如,在規則90當中,初始狀態從000至111,對照的演化狀態是:0、1、0、1、1、0、1、0,所畫出來的圖案,竟然是碎形圖案謝爾賓斯基三角形(Sierpinskitriangle)(可參考先前專欄〈遞迴、碎形與數學〉)。
不過,並非每個規則都能生成類似自然界生成的圖案,因此,Wolfram在2002年發表的《ANewKindofScience》匯集了他的研究成果,其中將細胞自動機的演化,分為了四個類型:平衡(equilibrium)、暫時均勻(temporallyuniform)、混亂(chaotic)與複雜(complex)。
當中的平衡或暫時均勻,相當於之前提到的穩定或振盪;規則30屬於混亂,甚至可作為隨機產生器;規則110屬於複雜,像是類型二與三的混合,圖案可參考維基百科〈Rule110〉條目,而且被證明是圖靈完備(Turingcomplete)。
圖靈等價?
如果你下載了之前提到的Golly,可能會注意到首頁中的文字跑馬燈,那是由生命遊戲產生的,我們可以在Golly的Life/Guns中找到golly-ticker。
這令人感到神奇,生命遊戲也可以執行運算?
Conway的生命遊戲或者是Wolfram的基本細胞自動機,具有狀態與規則,每一代的演化就是狀態轉移,很自然地,會令人聯想到有限狀態機,生命遊戲也能呈現一些重複模式,最有名的是Conway發現的滑行者(glider),以及在Conway的50英鎊懸賞下,由美國數學家BillGosper發表的槍(gun),可以不斷地發射出滑行者。
更多複雜行為的模式被發現,甚至可以自我複製。
在《深入理解運算原理》的〈康威的生命遊戲〉談到,Conway本人曾在1982年示範,如何用滑行者表示二進位資料流,以及設計AND、OR、NOT邏輯閘,從而完成邏輯運算,他只差一點就可以設計出可運作的機器。
而Wolfram在1985年亦曾經猜想,規則110或許能進行通用運算。
而Wolfram的助理MatthewCook也證明了規則110是圖靈完備,也就是它具有與圖靈機等價的運算能力。
實際上,Cook在Wolfram發表《ANewKindofScience》之前,就曾經在研討會上提出證明,然而,因為違反了保密協議,直到2004年,才發表了〈UniversalityinElementaryCellularAutomata〉。
在生命遊戲這方面,2002年PaulChapman實作了一個特殊的通用電腦,稱為LifeUniversalComputer,而PaulRendell在2010年基於生命遊戲,也設計了一個通用圖靈機。
複雜系統核心原則
我第一次接觸生命遊戲,是在冼鏡光著的《名題精選百則》中,當時只當它是個練習用的題目,而不以為意。
後來,在十幾年後的《深入理解運算原理》中,才再次看到生命遊戲的簡介。
但直到最近,於《Thenatureofcode》中看到基本細胞自動機,發現竟可構造謝爾賓斯基三角形而感到訝異,開始思考著這其中的道理究竟是什麼!
或許也不需要訝異,正如《TheNatureofCode》中談到的複雜系統核心原則「複雜系統是由許多個體元件組成,個體並行地運作,相互之間存在簡單的關係,整體上表現出一些自發現象。
」遞迴是如此、碎形是如此,細胞自動機也是如此,順便一提,你知道巴斯卡三角形也隱含著謝爾賓斯基三角形嗎?(提示:將巴斯卡三角形中的奇數、偶數標示不同顏色!)
關於細胞自動機,還有許多有趣的事實,除了《深入理解運算原理》、《TheNatureofCode》,如果想要看到更多有趣的資料,我們可參考〈電腦裡的生命遊戲,等你挑戰讓生命無限延續!〉、〈一文讀懂細胞自動機的起源、原理和應用〉等文件。
專欄作者
林信良
因在網路上經營「良葛格學習筆記」(openhome.cc)而聞名,曾任昇陽教育訓練中心技術顧問、甲骨文教育訓練中心授權講師,目前為自由工作者,專長為技術寫作、翻譯與教育訓練。
喜好研究程式語言、框架、社群,從中學習設計、典範及文化。
閒暇之餘記錄所學,技術文件涵蓋C/C++、Java、Ruby/Rails、Python、JavaScript、Haskell等多個領域。
熱門新聞
可口可樂傳被勒索軟體攻擊,竊走161GB資料
2022-04-27
上市櫃公司年報揭露資安作為,已有台積電、京城銀十多家企業公布
2022-04-27
蘋果終止macOSServer
2022-04-25
居家隔離時間大縮短!指揮中心公布居家隔離3+4新規定,明日開始執行
2022-04-25
【企業為什麼要設立資安長】臺灣設立資安長動能來自法規遵循
2022-04-25
3+4居家隔離新政策今上路,指揮中心公布更多調整細節
2022-04-26
微軟揭露Linux的權限擴張漏洞
2022-04-27
【專家觀點:臺灣科技大學資管系教授查士朝】稱職資安長要懂得確認資安需求並做好資源分配
2022-04-25
Advertisement
專題報導
如何當一個稱職的資安長?
友達數位製造轉型大解密
醫療HIS微服務化大改造
美國升起資安防護罩
儲存防寫應用重新崛起
更多專題報導
延伸文章資訊
- 1自動機理論- 維基百科,自由的百科全書
自動機是有限狀態機(FSM)的數學模型。FSM是給定符號輸入,依據(可表達為一個表格的)轉移函式「跳轉」過一系列狀態的一種機器。
- 2自動機- 教育百科
有限自動機常用作數位電路的數學模型或用以描述類神經系統和算法。無限自動機用於描述杜林機(Turing machine)或細胞型自動機演算法。
- 3自動機
自動機(英語:Automaton,複數:Automata,又稱自動機器、自動機械),是指非電源供應,以發條裝置作為動力來源,使自己運作的機器;自動機是必須先手動上緊發條, ...
- 4automata - 自動機 - 國家教育研究院雙語詞彙
依照儲存量是否有限分為有限自動機和無限自動機。有限自動機常用作數位電路的數學模型或用以描述類神經系統和算法。無限自動機用於描述杜林機(Turing machine)或細胞 ...
- 5automata theory - 自動機理論 - 國家教育研究院雙語詞彙
名詞解釋: 所謂自動機,英語稱automaton(複數automata)係由希臘語而來,指「自行動作者」,或指「自動木偶」,但一般而言,含有「響應外來的資訊而自行動作的機械」 ...