自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

王登科:生命游戲與遺傳編程

開(kāi)發(fā) 后端
今天在一本書(shū)中讀到一個(gè)很神奇的故事,在九十年代,生物學(xué)家Thomas S. Ray寫過(guò)一個(gè)80條指令的病毒,并把這條病毒放在計(jì)算機(jī)里面『培養(yǎng)』,這些病毒不斷復(fù)制和變異,變化出了各種不可思議的變種,比如在幾十億次運(yùn)行之后,出現(xiàn)了僅僅有22條指令卻有完善功能的病毒,當(dāng)時(shí)麻省理工的科學(xué)家嘗試用最短的指令來(lái)寫一只病毒,卻還是用了31條指令。

[[123147]]

今天在一本書(shū)中讀到一個(gè)很神奇的故事,在九十年代,生物學(xué)家Thomas S. Ray寫過(guò)一個(gè)80條指令的病毒,并把這條病毒放在計(jì)算機(jī)里面『培養(yǎng)』,這些病毒不斷復(fù)制和變異,變化出了各種不可思議的變種,比如在幾十億次運(yùn)行之后,出現(xiàn)了僅僅有22條指令卻有完善功能的病毒,當(dāng)時(shí)麻省理工的科學(xué)家嘗試用最短的指令來(lái)寫一只病毒,卻還是用了31條指令。

指令的多少關(guān)系到對(duì)計(jì)算機(jī)資源的索取,所以45條指令的病毒比80條指令的病毒更具優(yōu)勢(shì),這位生物學(xué)家調(diào)整了計(jì)算機(jī)規(guī)則,給不同指令的病毒分配不同的資源,以達(dá)到某種『平等』,但是在一百五十億次『繁衍』之后,出現(xiàn)了一種36條指令的病毒,這個(gè)病毒很『狡猾』,他在末尾多占用了一個(gè)字節(jié),以『騙取』了多一倍的運(yùn)行資源,結(jié)果橫掃了整個(gè)系統(tǒng)。

作者還提出一種設(shè)想,讓計(jì)算機(jī)程序也在運(yùn)行中做到生物那樣的自我進(jìn)化,非人為的變得越來(lái)越人性化,比如Word,在你每次用完它之后就會(huì)默默的自我更新以達(dá)到更漂亮的外觀和更人性化的體驗(yàn),當(dāng)然,前提是你應(yīng)該為這些『程序生物』的繁衍設(shè)定一些規(guī)則。

看到這些神奇的東西,我感到我多年的計(jì)算機(jī)知識(shí)白學(xué)了。我立馬開(kāi)始搜索這方面的資料,我的感受是,這個(gè)世界太奇妙了。

『讓計(jì)算機(jī)模擬生物進(jìn)化』一直以來(lái)都是計(jì)算機(jī)科學(xué)和生物學(xué)的課題,事實(shí)上,早在1970年,美國(guó)數(shù)學(xué)家John Horton Conway就發(fā)明了一種『細(xì)胞自動(dòng)機(jī)』,這也被稱之為『生命游戲』。

[[123149]]

生命游戲是一個(gè)零玩家游戲。它包括一個(gè)二維矩形世界,這個(gè)世界中的每個(gè)方格居住著一個(gè)活著的或死了的細(xì)胞。一個(gè)細(xì)胞在下一個(gè)時(shí)刻生死取決于相鄰八個(gè)方格中活著的或死了的細(xì)胞的數(shù)量。如果相鄰方格活著的細(xì)胞數(shù)量過(guò)多,這個(gè)細(xì)胞會(huì)因?yàn)橘Y源匱乏而在下一個(gè)時(shí)刻死去;相反,如果周圍活細(xì)胞過(guò)少,這個(gè)細(xì)胞會(huì)因太孤單而死去。實(shí)際中,玩家可以設(shè)定周圍活細(xì)胞的數(shù)目怎樣時(shí)才適宜該細(xì)胞的生存。如果這個(gè)數(shù)目設(shè)定過(guò)高,世界中的大部分細(xì)胞會(huì)因?yàn)檎也坏教嗟幕畹泥従佣廊?,直到整個(gè)世界都沒(méi)有生命;如果這個(gè)數(shù)目設(shè)定過(guò)低,世界中又會(huì)被生命充滿而沒(méi)有什么變化。

實(shí)際中,這個(gè)數(shù)目一般選取2或者3;這樣整個(gè)生命世界才不至于太過(guò)荒涼或擁擠,而是一種動(dòng)態(tài)的平衡。這樣的話,游戲的規(guī)則就是:當(dāng)一個(gè)方格周圍有2或3個(gè)活細(xì)胞時(shí),方格中的活細(xì)胞在下一個(gè)時(shí)刻繼續(xù)存活;即使這個(gè)時(shí)刻方格中沒(méi)有活細(xì)胞,在下一個(gè)時(shí)刻也會(huì)“誕生”活細(xì)胞。

在這個(gè)游戲中,還可以設(shè)定一些更加復(fù)雜的規(guī)則,例如當(dāng)前方格的狀況不僅由父一代決定,而且還考慮祖父一代的情況。玩家還可以作為這個(gè)世界的“上帝”,隨意設(shè)定某個(gè)方格細(xì)胞的死活,以觀察對(duì)世界的影響。

在游戲的進(jìn)行中,雜亂無(wú)序的細(xì)胞會(huì)逐漸演化出各種精致、有形的結(jié)構(gòu);這些結(jié)構(gòu)往往有很好的對(duì)稱性,而且每一代都在變化形狀。一些形狀已經(jīng)鎖定,不會(huì)逐代變化。有時(shí),一些已經(jīng)成形的結(jié)構(gòu)會(huì)因?yàn)橐恍o(wú)序細(xì)胞的“入侵”而被破壞。但是形狀和秩序經(jīng)常能從雜亂中產(chǎn)生出來(lái)。

顯然Thomas S. Ray的『病毒生物』比生命游戲中的這些『細(xì)胞』更加強(qiáng)大,它們運(yùn)行在計(jì)算機(jī)系統(tǒng)中而非軟件中,換言之,它們更加『高級(jí)一層』,所以這些病毒造成的變異更加神奇,而不僅僅是生命游戲中的形狀體現(xiàn)。很遺憾我沒(méi)有找到Thomas S. Ray的病毒樣本 Thomas S. Ray的項(xiàng)目主頁(yè)是:http://life.ou.edu/tierra/,有下載,有論文,自取。不過(guò)我找到了好幾款現(xiàn)在還可以運(yùn)行的生命游戲,有興趣的不妨看看:http://simplesource.blog.163.com/blog/static/103414062010089838173/,還有個(gè)程序員在Conway的生命游戲的基礎(chǔ)上進(jìn)行了更多的設(shè)置,使得其更加復(fù)雜有趣,這個(gè)『高級(jí)版』可以在這找到:http://www.cnblogs.com/conmajia/archive/2012/05/31/life-game-note.html

后來(lái)我知道,Thomas S. Ray的程序其實(shí)屬于遺傳編程(GP)的范疇,按照百科的解釋,遺傳編程是一種特殊的利用進(jìn)化算法的機(jī)器學(xué)習(xí)技術(shù), 它開(kāi)始于一群由隨機(jī)生成的千百萬(wàn)個(gè)計(jì)算機(jī)程序組成的"人群",然后根據(jù)一個(gè)程序完成給定的任務(wù)的能力來(lái)確定某個(gè)程序的適合度,應(yīng)用達(dá)爾文的自然選擇(適者生存)確定勝出的程序,計(jì)算機(jī)程序間也模擬兩性組合,變異,基因復(fù)制,基因刪除等代代進(jìn)化,直到達(dá)到預(yù)先確定的某個(gè)中止條件為止。

復(fù)雜的生命形式可以通過(guò)最簡(jiǎn)單的規(guī)則來(lái)進(jìn)行演化,生命之奇妙莫過(guò)于此。更直觀的感受可以通過(guò)以下一個(gè)五分鐘的小視頻來(lái)感受:http://v.youku.com/v_show/id_XNjczOTU3OTQw.html

算法是人寫的,可是演化卻是人所不能控制的,這種由簡(jiǎn)單規(guī)律和大量個(gè)體智慧共同作用的結(jié)合讓我想到了分布式計(jì)算和大數(shù)據(jù),我們炒的很火的新概念,其實(shí)早就根植于我們進(jìn)化的基因當(dāng)中,而擁有強(qiáng)大運(yùn)算能力的現(xiàn)代計(jì)算機(jī),則是潘多拉的魔盒,我們通過(guò)它來(lái)研究生命,但是里面也充滿著未知。

我們所有計(jì)算機(jī)老師都告訴我們計(jì)算機(jī)是最老實(shí)的,你讓它做什么它就做什么,可是計(jì)算機(jī)也有不老實(shí)的時(shí)候,某些時(shí)候,計(jì)算機(jī)的『失控』比『受控』更加令人興奮。

失控的計(jì)算機(jī),帶來(lái)的是嶄新的世界,諸如人工智能,進(jìn)化模擬等等領(lǐng)域,我們需要的正是出乎我們預(yù)料的結(jié)果。

其實(shí)我也一直好奇,是什么讓這些變異發(fā)生?讓這些進(jìn)化開(kāi)啟?讓人所寫的程序變得不被人理解?想來(lái),這個(gè)原因應(yīng)該和我們之所以從細(xì)胞進(jìn)化到人,而又從石器時(shí)代走到信息時(shí)代的原因一樣,這個(gè)原因就是生命之與世界的奧秘。

能夠知道這些奇妙的東西真是太爽了。

責(zé)任編輯:張偉 來(lái)源: wdk的博客
相關(guān)推薦

2014-12-19 11:03:45

2013-04-18 09:29:02

編程語(yǔ)言編程

2011-07-21 16:48:19

iPhone 游戲

2013-07-15 13:42:34

手機(jī)游戲生命周期

2015-03-17 17:06:05

2012-12-18 13:38:53

Java編程

2024-12-20 14:35:00

2024-01-08 22:08:48

Rust生命周期編程

2009-12-22 10:05:54

WCF編程生命周期

2019-11-22 16:05:44

阿里巴巴技術(shù)開(kāi)源

2014-07-01 09:20:56

大數(shù)據(jù)

2013-05-21 09:47:15

編輯器IDE程序員

2016-10-28 14:53:59

云計(jì)算證券

2011-09-19 10:24:22

編程

2021-05-12 23:16:17

區(qū)塊鏈游戲IT

2015-10-10 14:40:36

編程游戲

2011-04-01 14:24:07

C#編程

2013-03-20 09:54:07

2009-04-22 18:03:47

雙核電源服務(wù)器

2016-03-08 13:52:10

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)