某次計算機仿真比賽之前看到到這個東西,想試一試,於是用c#實現了一下,結果令人很震撼!
看看效果:
先介紹以下元胞自動機的原理:
細胞自動機起源於生物體發育中細胞的自我複製。20世紀50年代初,現代計算機的創始人馮·諾依曼(von Neumann)曾希望通過特定的程序在計算機上實現類似於生物發育中細胞的自我複製。由於當時電子管計算機的限制,他提出了一種簡單的模式:把一個長方形平面劃分爲若干格網格.每一個格點表示一個細胞或系統的基元。他們的狀態賦值爲0或1在事先設定的規則下,細胞的演化就可以用網格中的空格或實格的變動來描述.這就是細胞自動機的雛形。在von Neumann逝世之後長達十多年的時間裏,這一開創性的工作幾乎完全停止了,至到1970年劍橋大學的John H. Conway編制了一個名爲“生命的遊戲”〔TheGame of Life)的程序,並由《科學美國人》的數學遊戲專欄介紹到全世界,才使CA引起了人們的廣泛關注與重視。
再來說說生命的遊戲,先看程序界面:
這裏是以屏幕上每個像素代表一個細胞,細胞有生和死兩種狀態。最原始的規則是
-
一個活着的細胞如果周圍有超過三個活着的鄰居則死去;
-
一個死去的細胞只有在剛好有兩個活着的鄰居才重生;
運行後將死亡率降爲0,調整重生數目讓細胞鋪滿所有單元;
然後將出生率降爲0;
調整參數:當細胞數目超過4個時,死亡率爲100%;(這時就只剩下4個角的四個細胞存在了)
接着講死亡率降爲0,出生率加滿100%,改變出生規則爲1個或n個,你將看到無比美妙的圖案。圖的樣式隨n的不同而不同,中途可以繼續改變參數,圖案將千變萬化。
分形魅力盡顯於此!!
程序及源代碼:點此下載