生命遊戲

生命遊戲

生命遊戲是英國數學家約翰·何頓·康威在1970年發明的細胞自動機。它最初於1970年10月在《科學美國人》雜誌中馬丁·葛登能(Martin Gardner,1914年11月21日-2010年5月22日。又譯:馬丁·加德納)的“數學遊戲”專欄出現。生命遊戲其實是一個零玩家遊戲,它包括一個二維矩形世界,這個世界中的每個方格居住著一個活著的或死了的細胞。1. 如果一個細胞周圍有3個細胞為生(一個細胞周圍共有8個細胞),則該細胞為生(即該細胞若原先為死,則轉為生,若原先為生,則保持不變) 。

概述

生命遊戲其實是一個零玩家遊戲,它包括一個二維矩形世界,這個世界中的每個方格居住著一個活著的或死了的細胞。一個細胞在下一個時刻生死取決於相鄰八個方格中活著的或死了的細胞的數量。如果相鄰方格活著的細胞數量過多,這個細胞會因為資源匱乏而在下一個時刻死去;相反,如果周圍活細胞過少,這個細胞會因太孤單而死去。實際中,你可以設定周圍活細胞的數目怎樣時才適宜該細胞的生存。如果這個數目設定過高,世界中的大部分細胞會因為找不到太多的活的鄰居而死去,直到整個世界都沒有生命;如果這個數目設定過低,世界中又會被生命充滿而沒有什麼變化。實際中,這個數目一般選取2或者3;這樣整個生命世界才不至於太過荒涼或擁擠,而是一種動態的平衡。這樣的話,遊戲的規則就是:當一個方格周圍有2或3個活細胞時,方格中的活細胞在下一個時刻繼續存活;即使這個時刻方格中沒有活細胞,在下一個時刻也會“誕生”活細胞。在這個遊戲中,還可以設定一些更加複雜的規則,例如當前方格的狀況不僅由父一代決定,而且還考慮祖父一代的情況。你還可以作為這個世界的上帝,隨意設定某個方格細胞的死活,以觀察對世界的影響。

在遊戲的進行中,雜亂無序的細胞會逐漸演化出各種精緻、有形的結構;這些結構往往有很好的對稱性,而且每一代都在變化形狀。一些形狀已經鎖定,不會逐代變化。有時,一些已經成形的結構會因為一些無序細胞的“入侵”而被破壞。但是形狀和秩序經常能從雜亂中產生出來。

這個遊戲被許多電腦程式實現了。Unix世界中的許多Hacker喜歡玩這個遊戲,他們用字元代表一個細胞,在一個計算機螢幕上進行演化。著名的GNUEmacs編輯器中就包括這樣一個小遊戲。

原理

細胞自動機(又稱元胞自動機),名字雖然很深奧,但是它的行為卻是非常美妙的。所有這些怎樣實現的呢?我們可以把計算機中的宇宙想像成是一堆方格子構成的封閉空間,尺寸為N的空間就有N*N個格子。而每一個格子都可以看成是一個生命體,每個生命都有生和死兩種狀態,如果該格子生就顯示藍色,死則顯示白色。每一個格子旁邊都有鄰居格子存在,如果我們把3*3的9個格子構成的正方形看成一個基本單位的話,那么這個正方形中心的格子的鄰居就是它旁邊的8個格子。

每個格子的生死遵循下面的原則:

1. 如果一個細胞周圍有3個細胞為生(一個細胞周圍共有8個細胞),則該細胞為生(即該細胞若原先為死,則轉為生,若原先為生,則保持不變) 。

2. 如果一個細胞周圍有2個細胞為生,則該細胞的生死狀態保持不變;

3. 在其它情況下,該細胞為死(即該細胞若原先為生,則轉為死,若原先為死,則保持不變)

設定圖像中每個像素的初始狀態後依據上述的遊戲規則演繹生命的變化,由於初始狀態和疊代次數不同,將會得到令人嘆服的優美圖案。

這樣就把這些若干個格子(生命體)構成了一個複雜的動態世界。運用簡單的3條作用規則構成的群體會湧現出很多意想不到的複雜性為,這就是複雜性科學的研究焦點。

細胞自動機有一個通用的形式化的模型,每個格子(或細胞)的狀態可以在一個有限的狀態集合S中取值,格子的鄰居範圍是一個半徑r,也就是以這個格子為中心,在距離它r遠的所有格子構成了這個格子的鄰居集合,還要有一套演化規則,可以看成是一個與該格子當前狀態以及鄰居狀態相關的一個函式,可以寫成f:S*S^((2r)^N-1)->S。這就是細胞自動機的一般數學模型。

最早研究細胞自動機的科學家是馮·諾伊曼,後來康韋發明了上面展示的這個最有趣的細胞自動機程式:《生命遊戲》,而wolfram則詳盡的討論了一維世界中的細胞自動機的所有情況,認為可以就演化規則f進行自動機的分類,而只有當f滿足一定條件的時候,系統演化出來的情況才是有活力的,否則不是因為演化規則太死板而導致生命的死亡,就是因為演化規則太複雜而使得隨機性無法克服,系統亂成一鍋粥,沒有秩序。後來人工生命之父克里斯·朗頓進一步發展了元胞自動機理論。並認為具有8個有限狀態集合的自動機就能夠湧現出生命體的自複製功能。他根據不同系統的演化函式f,找到了一個參數lamda用以描述f的複雜性,得出了結論只有當lamda比混沌狀態的lamda相差很小的時候,複雜的生命活系統才會誕生,因此,朗頓稱生命誕生於“混沌的邊緣”!並從此開闢了“人工生命”這一新興的交叉學科!

如今細胞自動機已經在地理學、經濟學、計算機科學等領域得到了非常廣泛的套用!

遊戲代碼

以下是生命遊戲的Mathematica代碼。 在圓環面地圖上共有100×100個格子。每個格子的生死遵循下面的原則:

1. 如果一個細胞周圍有3個細胞為生(一個細胞周圍共有8個細胞),則該細胞為生(即該細胞若原先為死,則轉為生,若原先為生,則保持不變) 。

2. 如果一個細胞周圍有2個細胞為生,則該細胞的生死狀態保持不變;

3. 在其它情況下,該細胞為死(即該細胞若原先為生,則轉為死,若原先為死,則保持不變)。

Checkboard = RandomInteger[1, {100, 100}];

update[1, 2] := 1;

update[_, 3] := 1;

update[_, _] := 0;

SetAttributes[update, Listable];

Dynamic[ArrayPlot[

Checkboard =

update[Checkboard,

Plus @@ Map[

RotateRight[Checkboard, #] &, {{-1, -1}, {-1, 0}, {-1,

1}, {0, -1}, {0, 1}, {1, -1}, {1, 0}, {1, 1}}]]]]

一種比較初級的生命遊戲matlab代碼

function ca

m=30;n=30;p=.7;h=100;

for x=1:m

for y=1:n

r=rand(1);

if r>p

a(x,y)=1;

else a(x,y)=0;

end

end

end

for x=1:m

for y=1:n

if a(x,y)==1

fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on

else

end

end

end

for k=1:h

fx=[0,m,m,0];fy=[0,0,n,n];fill(fx,fy,'k'),hold on

for x=2:m-1

for y=2:n-1

b(x,y)=a(x-1,y-1)+a(x-1,y)+a(x-1,y+1)+a(x,y-1)+a(x,y+1)+a(x+1,y-1)+a(x+1,y)+a(x+1,y+1);

if b(x,y)==2,c(x,y)=a(x,y);

elseif b(x,y)==3,c(x,y)=1;

else c(x,y)=0;

end

end

end

c(1:m,1)=a(1:m,1);c(1:m,n)=a(1:m,n);

for x=1:m

for y=1:n

if c(x,y)==1

fx=[x-1,x-1,x,x];fy=[y-1,y,y,y-1];fill(fx,fy,'g'),hold on

else

end

end

end

pause(.05)

a=c;

end

同名電影

主演: 未知 狀態: 完結 類型: 恐怖 地區: 其他地區 語言: 其他語言 導演: 未知 時間: 2013-08-02 01:58:05 年份: 2013

一個鳴“生命遊戲”的手機APP,主人公為了以及心儀的女生約會而不竭完成使命刷分,終極卻迷失了生命。該片由加州年夜學洛杉磯分校(UCLA)的中國同窗們一塊兒拍攝完成,總導演以及編劇是任澤宇。假定,有一個鳴《Life Game》(生命遊戲)的手機App, 它能敏鈍地探測以及記載你的舉動,並激活每個使命的獎勵。 每個使命都有著差別的分數,越難題的使命分數越多。 而阿誰天下範疇內子分數至多的人,就是《Life Game》的最年夜贏家...... 該片的劇情設定還不錯,可是手持鏡頭過於擺盪。而演員的演技也比力正常,沒有表演人物心裡的情感升沉。關於“殺生”那個使命,可能良多人以及小編同樣狐疑,不大白末了鬚眉借Sara的手自盡,應當是Sara完成使命,而鬚眉的手機為什麼也會響起完成使命呢?別的場景要是再精細精美點,觀感上會更好些。印象最深的一句台詞是:“愛,能值幾多分?”實是不可救藥的遊戲達人啊!遊戲人生的立場禍患了幾多成年人以及未成年人,讓他們正在遊戲中丟失自我,輸失了本身的出息。影片正在警示眾人的同時也對遊戲主宰部門人餬口的命題提出了深入的深思。虛構世界裡人們的威力經由過程一系列虛構數值來衡量,而人們為了證實本身,為了強盛的虛榮心而逐漸丟失正在遊戲的世界裡

數學遊戲

數學遊戲即包含了數學中的遊戲和使用數學玩的遊戲。大部分數學遊戲的規則都非常簡單,但解決它們時,有時卻需用到很高深的幾何學、圖論、拓撲學、組合數學、邏輯學或博弈論等的知識。對某些數學遊戲的研究,更有助推動一些數學話題的發展。不少數學家都是數學遊戲的愛好者。

相關詞條

相關搜尋

熱門詞條

聯絡我們