Ich habe den Code geschrieben, um die Entwicklung des eindimensionalen Zellautomaten in Python zu zeichnen. Schließlich wird das Ergebnis der Ausführung mit einigen Regeln veröffentlicht.
Der Zellularautomat entwickelt den Zustand einer Zelle nach einer lokalen Regel, bei der es sich um einen Physiker [Stephen Wolfram] handelt (https://ja.wikipedia.org/wiki/%E3%). 82% B9% E3% 83% 86% E3% 82% A3% E3% 83% BC% E3% 83% 96% E3% 83% B3% E3% 83% BB% E3% 82% A6% E3% 83% AB% E3% 83% 95% E3% 83% A9% E3% 83% A0) und Mathematiker [John Horton Conway](https://ja.wikipedia.org/wiki/%E3%82%B8%E3% 83% A7% E3% 83% B3% E3% 83% BB% E3% 83% 9B% E3% 83% BC% E3% 83% 88% E3% 83% B3% E3% 83% BB% E3% 82% Seine Eigenschaften wurden von B3% E3% 83% B3% E3% 82% A6% E3% 82% A7% E3% 82% A4) et al. Durch Ändern der Regeln können verschiedene Naturphänomene nachgeahmt werden, und das zweidimensionale wird als "Lebensspiel" bezeichnet.
Die Regeln für eindimensionale Zellautomaten sind nummeriert. Zum Beispiel ist die Regel, die als Regel 214 bezeichnet wird, wie in der obigen Abbildung gezeigt. Wenn Sie sich nicht sicher sind, lesen Sie bitte diesen Artikel für Details.
Lassen Sie uns die obige Regel implementieren.
1d_ca.py
import matplotlib.pyplot as plt
def cellautomaton(l_bit, rule, pattern=False, padding=0):
# pattern:Periodische Randbedingung, padding:Wert der Zellen außerhalb des Rahmens
l_bit_new = []
if not pattern:
l_bit = [padding] + l_bit
l_bit.append(padding)
else:
l_bit = [l_bit[-1]] + l_bit
l_bit.append(l_bit[1])
for i in range(1, len(l_bit)-1):
l_bit_new.append(next_state(l_bit[i-1],l_bit[i],l_bit[i+1], rule))
return l_bit_new
def next_state(l, x, r, rule):
#Bestimmen Sie den Status der nächsten Zelle
bin_str = format(rule, '08b')
bin_num = int(str(l)+str(x)+str(r), 2)
return int(bin_str[-(bin_num+1)])
def main():
result = []
loop = 200
rule = 110 #Regelnummer(0~255)
##Geben Sie den Anfangszustand in Liste x an
x = [0]*200
x[-1] = 1
result.append(x)
for i in range(loop):
x = cellautomaton(x, rule, pattern=False)
result.append(x)
plt.figure()
plt.title("rule{}".format(rule))
plt.imshow(result, cmap="binary")
plt.show()
main()
Standardmäßig ist es 100 lang und nur die Zelle ganz rechts ist ein eindimensionales Array mit 1 und 0. Es ist interessant, damit herumzuspielen und es zu ändern. Verwenden wir zum Schluss diesen Code, um ein Beispiel mit einigen Regeln zu sehen.
[Stephen Wolfram](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%86%E3%82%A3%E3%83%BC%E3%83%96%E3% 83% B3% E3% 83% BB% E3% 82% A6% E3% 83% AB% E3% 83% 95% E3% 83% A9% E3% 83% A0) hat vier Verhaltensweisen eines eindimensionalen Zellautomaten Es ist in Klassen eingeteilt. Einfach ausgedrückt sieht es so aus:
Regel 30 ist eine chaotische Regel der Klasse 3.
Sie können sehen, dass das Muster kompliziert ist und keine Periodizität aufweist.
Regel 90 ist eine Regel der Klasse 3, die eine fraktale Figur zeichnet, die als Sylpinsky-Dichtung bezeichnet wird. Eine fraktale Figur ist eine Figur, bei der eine ähnliche Form auftritt, wenn sie vergrößert / verkleinert wird.
Regel 110 ist eine Regel der Klasse 4, die einen Zwischenzustand zwischen periodisch und chaotisch einnimmt.
Sie können sehen, dass es Periodizität hat und nach einer Weile bricht. Es ist bekannt, dass die Dynamik zwischen dieser Ordnung und dem Chaos häufig in natürlichen Phänomenen zu finden ist, und es ist möglich, eine Steuermaschine zu imitieren, indem die reichhaltige Dynamik in solchen Bereichen verwendet wird.
das ist alles. Es gibt viele andere Regelformen, wie z. B. dieser Artikel. Als praktisches Beispiel scheint es, dass es manchmal in Verkehrssimulationen wie [diesem Artikel] verwendet wird (https://qiita.com/gushwell/items/767112fcf1c725632113).
[Illustriertes Trivia-Komplex-System (Natsume, Norio Konno)](https://hb.afl.rakuten.co.jp/ichiba/1bc63814.31bba873.1bc63815.5874eb3b/?pc=https%3A%2F%2Fitem.rakuten. co.jp% 2Fcomicset% 2F4816323899% 2F & link_type = hybrid_url & ut = eyJwYWdlIjoiaXRlbSIsInR5cGUiOiJoeWJyaWRfdXJsIiwic2l6ZSI6IjI0MHgyNDAiLCJuYW0iOjEsIm5hbXAiOiJyaWdodCIsImNvbSI6MSwiY29tcCI6ImRvd24iLCJwcmljZSI6MSwiYm9yIjoxLCJjb2wiOjEsImJidG4iOjEsInByb2QiOjB9)
Recommended Posts