J'ai écrit le code pour dessiner l'évolution de l'automate cellulaire unidimensionnel en Python. Enfin, le résultat de l'exécution de certaines règles est affiché.
L'automate cellulaire développe l'état d'une cellule selon une règle locale, qui est un physicien Stephen Wolfram. 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) et mathématicien [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% Ses propriétés ont été étudiées en détail par B3% E3% 83% B3% E3% 82% A6% E3% 82% A7% E3% 82% A4) et al. En changeant les règles, divers phénomènes naturels peuvent être imités, et celui à deux dimensions est connu comme un «jeu de la vie».
Les règles pour les automates à cellules unidimensionnels sont numérotées. Par exemple, la règle appelée règle 214 est comme illustré dans la figure ci-dessus. Si vous n'êtes pas sûr, veuillez consulter cet article pour plus de détails.
Implémentons la règle ci-dessus.
1d_ca.py
import matplotlib.pyplot as plt
def cellautomaton(l_bit, rule, pattern=False, padding=0):
# pattern:Condition aux limites périodique, padding:Valeur des cellules en dehors du cadre
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):
#Déterminez l'état de la cellule suivante
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 #Numéro de règle(0~255)
##Spécifiez l'état initial dans la liste x
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()
Par défaut, sa longueur est de 100 et seule la cellule la plus à droite est un tableau unidimensionnel avec 1 et 0. Il est intéressant de jouer avec et de le changer. Enfin, utilisons ce code pour voir un exemple avec quelques règles.
[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) a quatre comportements d'automate cellulaire unidimensionnel Il est classé en classes. En termes simples, cela ressemble à ceci:
--Classe 1: converge vers un état comme tous les 0, tous les 1 --Classe 2: convergent vers un état où les vibrations fixes sont répétées --Classe 3: Devenez chaotique --Classe 4: les états périodiques et chaotiques coexistent (bord du chaos)
La règle 30 est une règle chaotique de classe 3.
Vous pouvez voir que le modèle est compliqué et n'a pas de périodicité.
La règle 90 est une règle de classe 3 qui dessine une figure fractale appelée joint Sylpinsky. Une figure fractale est une figure dans laquelle une forme similaire apparaît lorsqu'elle est agrandie / réduite.
La règle 110 est une règle de classe 4 qui prend un état intermédiaire entre périodique et chaos.
Vous pouvez voir qu'il a une périodicité et des pauses après un certain temps. On sait que la dynamique entre cet ordre et le chaos se trouve souvent dans des phénomènes naturels, et il est possible d'imiter une machine à tuling en utilisant la riche dynamique de ces zones.
c'est tout. Il existe de nombreuses autres formes de règles, telles que cet article. A titre d'exemple pratique, il semble qu'il soit parfois utilisé dans la simulation de trafic comme dans cet article.
[Système complexe de trivia illustré (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