元胞自动机简单理解
元胞自動機
元胞自動機( Cellular Automata) 是 20 世紀 50 年代初由計算機之父馮·諾依曼為了模擬生命系統所具有的自復制功能而提出來的網格動力學模型。
概念
元胞自動機采用離散的空間布局和離散的時間間隔,將元胞分成有限種狀態,元胞個體狀態的演變僅與其當前狀態以及其某個局部鄰域的狀態有關。
將所有元胞自動機的動力學行為歸納為四大類(Wolfram. S.,1986):
⑴ 平穩型:自任何初始狀態開始,經過一定時間運行后,元胞空間趨于一個空間平穩的構形,這里空間平穩即指每一個元胞處于固定狀態。不隨時間變化而變化。
⑵ 周期型:經過一定時間運行后,元胞空間趨于一系列簡單的固定結構(Stable Patterns)或周期結構(Perlodical Patterns)。由于這些結構可看作是一種濾波器(Filter),故可應用到圖像處理的研究中。
⑶ 混沌型:自任何初始狀態開始,經過一定時間運行后,元胞自動機表現出混沌的非周期行為,所生成的結構的統計特征不再變止,通常表現為分形分維特征。
⑷ 復雜型:出現復雜的局部結構,或者說是局部的混沌,其中有些會不斷地傳播。
初等元胞自動機( Elementary Cellular Automata, ECA)的基本要素如下:
- 元胞空間:元胞在空間分布的空間格點的集合,如一維直線上等間距的點。可為某區間上的整數點的集合。二維的元胞自動機通常有三種劃分方式(三角形、正方形、正六邊形)
| 三角形 | 擁有相對較少的鄰居數目,易于處理復雜邊界 | 在計算機的表達與顯示不方便,需要轉換為四方網格 |
| 正方形 | 直觀簡單,而且適合于在現有計算機環境下進行表達顯示 | 不能較好地模擬各向同性的現象 |
| 正六邊形 | 能夠較好地模擬各向同性的現象,因此,模型更更加自然而真實 | 在表達顯示上較為困難、復雜 |
元胞空間的邊界條件
理論上,元胞空間是無限的,實際應用中無法達到這一理想條件。常用的邊界條件有以下幾種:周期型、定值型、絕熱型、反射型
周期型邊界條件(Periodic Boundary)
是指相對邊界連接起來的元胞空間,對于一維空間,首尾相接形成一個圓環;
對于二維空間,上下相接、左右相接,形成一個拓撲圓環面,形似車胎
定值型邊界條件(Constant Boundary)
所有邊界外元胞均取某一固定常量
絕熱型邊界條件(Adiabatic Boundary)
在指邊界外鄰居元胞的狀態始終和邊界元胞的狀態保持一致,即具有狀態的零梯度。
反射型邊界條件(Constant Boundary)
在邊界外鄰居的元胞狀態是以邊界元胞為軸的鏡面反射
- 狀態集:S={s1,s2} 即只有兩種不同的狀態。這兩種不同的狀態可將其分別編碼為0 與 1;若用圖形表示,則可對應“黑”與“白” 或者其他兩種不同的顏色。
- 鄰居:若一維鄰居半徑r=1,即每個元胞最多只有“左鄰右舍”兩個鄰居。
鄰居數目=2d
2. 摩爾型
鄰居數目=3^d-1
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zK0qkYQ5-1604564226207)(https://i.loli.net/2020/10/26/IO2TqoRk316LJpH.png)]
3. 擴展摩爾型
鄰居數目=(2r+1)^d-1
4. 馬格勒斯型(Margolus)
主要區別:以2*2的元胞塊為單元進行處理,而不是單獨處理
主要應用領域:格子氣流體、顆粒流
- 演化規則:任意設定, 最多2^8=256種不同的設定方式。元胞以相鄰的8個元胞為鄰居。即Moore鄰居;一個元胞的生死由其在該時刻本身的生死狀態和周圍八個鄰居的狀態決定。根據元胞及其鄰居元胞的狀態,決定下一時刻該元胞狀態的動力學函數,也可以是狀態轉移方程或局部映射。
從數學上來定義,有限自動機是一個五元組:
FA=(Q,S,δ,q0,F)
其中,Q是控制器的有限狀態集、S是輸入符號約有限集、δ是控制狀態轉移規律的Q×S到Q的映射 (可用狀態轉移圖或狀態轉移表表示),q0是初始狀態、F是終止狀態集。若δ是單值映射,則稱M為確定性有限自動機;若δ是多值映射,則稱M為非確定性 有限自動機。特征
(1)同質性、齊性:同質性反映在元胞空間內的每個元胞都服從相同的規則;齊性指的是元胞的分布方式相同,大小形狀相同,空間分布整齊。
(2)空間離散:元胞分布在按一定規則劃分的離散的元胞空間上。
(3)時間離散:系統的演化是按等時間間隔分步進行的。t時刻的狀態只對t+1時刻的狀態產生影響。
(4)狀態離散、有限:元胞自動機的狀態參量只能取有限個離散值。
(5)同步計算(并行性):元胞自動機的處理是同步進行的。
(6)時空局域性:每個元胞在t+1時刻的狀態,取決于其鄰居的元胞在t時刻的狀態。
(7)維數高:動力系統中一般將變量的個數成為維數。任何完備元胞自動機的元胞空間是在空間上的無窮集,每個元胞的狀態是這個動力學系統的變量,因此元胞自動機是一類無窮維動力系統。
應用:
生物學領域
腫瘤細胞的增長機理和過程模擬
人類大腦的機理探索
艾滋病病毒HIV的感染過程
自組織、自繁殖等生命現象的研究
克隆技術
模擬植物的生長
貝殼上色素的沉積圖案
生態學領域
生態系統動態變化過程的模擬
螞蟻的行走路線,大雁、魚類洄游動物的群體行為的模擬
生物群落的擴散模擬
物理學模擬
LGA 格子氣自動機
LBM格子-玻爾茲曼法
流體領域,在多孔介質、多相流、微小尺寸具有獨特的優越性
LBM同樣被成功用于磁場、電場、熱擴散、熱傳導的模擬
雪花等枝晶的形成
液態金屬材料的凝固結晶過程
顆粒材料的垮塌現象
交通科學領域
兩條主線:
1)Nagel-Schreckenberg模型
對城市道路交通流的研究
2)BML模型
對城市交通網絡的研究
計算機科學與信息學領域
研究信息的保存、傳遞、擴散
圖像處理和模式識別
184號模型
- 道路被劃分為等距格子,每個格點表示一個元胞;
- 某個時刻,元胞或者是空的,或者被一輛車占據;
- 所有車輛的行進方向都是一致的(如向右);
- 在每一個時間步內:若第n輛車的前方元胞是空的,則該車可以向前行駛一步;
- 若前面的元胞被另一輛車n+1所占據,即使第n+1輛車在本時間步內離開此元胞,第n輛車也停在原地不動;
- 整個系統采用周期性邊界條件以確保車輛數守恒。
NaSch模型
NaSch模型是對184號模型的推廣,1992年Nagle和Schreckenberg提出了著名的NaSch模型
Python 實現最簡單的元胞自動機
選取的元胞狀態只有兩種,分別為 0 和 1。每一層由 64 個元胞組成,若元胞狀態為 1,那么控制臺將打印星號(*);如果元胞狀態為 0,那么控制臺將打印連字符(-)。也就是說,每一行由 64 個混合星號與連字符的圖案組成。
狀態更新規則:若當前元胞的前一個元胞的狀態為 1,或者前一個元胞的左右兩邊的元胞的狀態有且只有一個值為 1, 那么該元胞的狀態就為 1。反之,元胞的狀態設為 0。對于第一列和最后一列,我們只需分別考慮右元胞和左元胞即可。對于中間部分的元胞來說,若其領域元胞的狀態為[0,1,0]、[0,0,1]、[1,0,0]、[1,1,0]等狀態時,當前元胞的狀態就為 1。
import time def print_seq(seq, speed=0.5):for item in seq:if item:print('*', end='')else:print('-', end='')print('')time.sleep(speed)class Cell:def __init__(self, deepth=31):self.ca = [0 if i != 31 else 1 for i in range(64)]self.ca_new = []self.deepth = deepthdef process(self):print_seq(self.ca)for i in range(self.deepth):self._rule()print_seq(self.ca_new)self.ca = self.ca_newself.ca_new = []def _rule(self):for i in range(64):if 0 < i < 63:if self.ca[i - 1] == self.ca[i + 1]:self.ca_new.append(0)else:self.ca_new.append(1)elif i == 0:if self.ca[1]:self.ca_new.append(1)else:self.ca_new.append(0)else:if self.ca[62]:self.ca_new.append(1)else:self.ca_new.append(0)def main():cell = Cell()cell.process()if __name__ == '__main__':main()參考文章:
總結
- 上一篇: WCF和webservice的区别
- 下一篇: 什么是同轴电缆