2d zellulare Automaten Wolfram-Binärcodes
Dies ist eine ähnliche Frage wie Funktionsweise von 2D-Regeln für zellulare Automaten. Die Antwort dort lieferte mir jedoch nicht das, wonach ich suchte. Insbesondere möchte ich in der Lage sein, diese 2D-Formulare für zellulare Automaten zu rendern:https://www.wolframscience.com/nks/p173--cellular-automata/Ich kann nirgendwo eine Referenz finden, die erklärt, wie man zwischen einer reellen Zahl und einer Wachstumsregel wechselt. In 1d ist die Situation gut dokumentiert, wie hier:https://mathworld.wolfram.com/ElementaryCellularAutomaton.htmlaber in 2d ist die genaue Zuordnung von Bits nirgends zu finden. Ich würde wirklich gerne ein Programm machen, damit ich zum Beispiel die Nummer 465 eingeben kann und es das Muster 465 aus dem Wolfram-Buch zeichnet. Die andere Antwort auf den Stapelaustausch, auf die ich oben verlinkt habe, bietet eine mögliche binäre Zuordnung, jedoch erzeugt die dort angegebene Methode nicht die gleichen Zahlen wie in der Wolfram-Referenz. Der Binärwert von 465 ist 111010001, was mir überhaupt nicht hilft. Diese besondere Form basiert auf dem Hinzufügen einer Zelle, wenn genau ein Nachbar gerade besetzt ist. Sollten wir also nicht damit rechnen, 4 Einsen hintereinander zu haben, eine für jeden der vier Nachbarn? Und um dies noch verwirrender zu machen, scheinen die letzten beiden Ziffern von der Beschreibung auf der Wolfram-Seite selbst vertauscht zu sein ... Aus der anderen Antwort zum Stapelüberlauf geht hervor, dass es nicht nur eine mögliche binäre Zuordnung gibt, sondern jedoch viele Da es bereits eine Anleitung mit Bildern gibt, auf die durch Regelnummern verwiesen wird, möchte ich diese spezifischen Regelnummern wirklich verwenden können. Vielen Dank.
Antworten
Die Beschreibung auf der Seite , auf die Sie verlinkt haben, ist korrekt:
"In jedem Fall gibt die 2-stellige Basisfolge für die Codenummer die Regel wie folgt an. Die letzte Ziffer gibt an, welche Farbe die mittlere Zelle haben soll, wenn alle ihre Nachbarn im vorherigen Schritt weiß waren, und sie war auch weiß. Die vorletzte Ziffer gibt an, was passiert, wenn alle Nachbarn weiß sind, aber die mittlere Zelle selbst ist schwarz. Und jede frühere Ziffer gibt dann an, was passieren soll, wenn immer mehr Nachbarn schwarz sind. (Vergleiche Seite 60.) "
Was Sie möglicherweise vermissen, ist, dass bei einer ungeraden Regelnummer das leere Gitter instabil ist, da weiße Zellen, die von anderen weißen Zellen umgeben sind, spontan schwarz werden. Insbesondere sind alle Regeln, deren Zahl mit 1 Modulo 4 kongruent ist (dh deren Binärform mit 01 endet), wie 465, "stroboskopieren" , dh das leere Gitter wechselt in jeder nachfolgenden Generation zwischen ganz Weiß und ganz Schwarz.
Dies bedeutet insbesondere, dass Regel 465 nicht dem "Hinzufügen einer Zelle, wenn genau ein Nachbar gerade besetzt ist" entsprechen kann. (Das wäre vermutlich Regel 686 oder 1010101110 in Binärform.)
Stattdessen entspricht 465, wie Sie richtig bemerken, binär 111010001. Geschrieben in fünf Gruppen zu je zwei Bits, ergibt dies 01 11 01 00 01. In jeder dieser Gruppen das Bit ganz rechts in der Gruppe$k$ (von 0 bis 4 von rechts nach links nummeriert) ist 1, wenn eine weiße Zelle mit $k$ Schwarze Nachbarn werden in der nächsten Generation schwarz, und das Bit ganz links ist 1, wenn schwarze Zellen mit $k$ schwarze Nachbarn bleiben schwarz.
Dies bedeutet, dass nach dieser Regel eine weiße Zelle schwarz wird, wenn sie 0, 2, 3 oder 4 schwarze Nachbarn hat (da das Bit ganz rechts in den Gruppen 0, 2, 3 und 4 von rechts 1 ist) und ein Schwarz Die Zelle bleibt schwarz, wenn sie genau 3 schwarze Nachbarn hat (da das Bit ganz links nur in Gruppe 3 1 ist).
Wenn Sie diese Regel für 22 Generationen simulieren, beginnend mit einem schwarzen Pixel auf weißem Hintergrund, wird ein Bild erstellt, das mit dem auf der verlinkten Seite übereinstimmt.
Ps. Es stellt sich heraus, dass Regel 465 das "Strobing-Äquivalent" der zustands-symmetrischen Regel 558 = 01000101110 2 ist , die sich von Regel 686 um genau ein Bit unterscheidet und als "Zelle hinzufügen, wenn genau ein Nachbar besetzt ist, entfernen Sie a" beschrieben werden kann Zelle, wenn genau ein Nachbar leer ist ".
Ausgehend von einer einzelnen Zelle scheinen sich die Regeln 558 und 686 identisch zu entwickeln, da sie von diesem Ausgangspunkt aus anscheinend nie eine lebende Zelle mit genau drei lebenden Nachbarn erzeugen. Somit sieht bei geraden Generationen die Strobing-Regel 465 auch für beide identisch aus.