Códigos binarios Wolfram de autómatas celulares 2d

Aug 17 2020

Esta es una pregunta similar a ¿Cómo funcionan las reglas de autómatas celulares 2d? Sin embargo, la respuesta no me proporcionó lo que estoy buscando. Específicamente, quiero poder renderizar estas formas de autómatas celulares 2d:https://www.wolframscience.com/nks/p173--cellular-automata/No puedo encontrar ninguna referencia en ninguna parte que explique cómo cambiar entre un número real y una regla de crecimiento. En 1d, la situación está bien documentada, como aquí:https://mathworld.wolfram.com/ElementaryCellularAutomaton.htmlpero en 2d el mapeo exacto de bits no se encuentra en ninguna parte. Realmente me gustaría hacer un programa, de modo que pueda, por ejemplo, ingresar el número 465 y dibujará el patrón 465 del libro Wolfram. La otra respuesta de intercambio de pila a la que me vinculé anteriormente proporciona una posible asignación binaria, sin embargo, el método dado allí no produce los mismos números que en la referencia de Wolfram. El valor binario de 465 es 111010001, lo que no me ayuda en absoluto. Esta forma particular se basa en agregar una celda cuando exactamente un vecino está ocupado actualmente, entonces, ¿no deberíamos esperar tener 4 1 en una fila, uno para cada uno de los cuatro vecinos? Y para hacer esto aún más confuso, los dos últimos dígitos parecen intercambiarse de la descripción dada en la página de Wolfram ... Parece claro de la otra respuesta de Stack Overflow que no hay solo un mapeo binario posible sino muchos, sin embargo Dado que ya existe una guía con imágenes referenciadas por números de reglas, realmente me gustaría poder usar esos números de reglas específicos. Gracias.

Respuestas

1 IlmariKaronen Aug 18 2020 at 00:15

La descripción proporcionada en la página a la que enlazó es correcta:

"En cada caso, la secuencia de base de 2 dígitos para el número de código especifica la regla de la siguiente manera. El último dígito especifica de qué color debería ser la celda central si todos sus vecinos eran blancos en el paso anterior, y también era blanco. El segundo- al último dígito especifica lo que sucede si todos los vecinos son blancos, pero la celda central en sí es negra. Y cada dígito anterior especifica lo que debería suceder si progresivamente más vecinos son negros. (Compare la página 60.) "

Lo que podría perderse es que, si el número de la regla es impar, la celosía vacía es inestable, ya que las células blancas rodeadas por otras células blancas se volverán negras espontáneamente. Específicamente, cualquier regla cuyo número sea congruente con 1 módulo 4 (es decir, cuya forma binaria termine en 01), como 465, son "estroboscópicas" , es decir, el enrejado vacío alternará entre todo blanco y todo negro en cada generación sucesiva.

En particular, esto significa que la regla 465 no puede corresponder a "agregar una celda cuando exactamente un vecino está ocupado". (Esa sería presumiblemente la regla 686, o 1010101110 en binario).

En cambio, como ha notado correctamente, 465 es igual a 111010001 en binario. Escrito en cinco grupos de dos bits cada uno, que da 01 11 01 00 01. En cada uno de estos grupos, el bit más a la derecha del grupo$k$ (numerado de derecha a izquierda de 0 a 4) es 1 si una celda blanca con $k$ los vecinos negros se volverán negros en la próxima generación, y el bit más a la izquierda es 1 si las celdas negras con $k$ los vecinos negros seguirán siendo negros.

Esto significa que, según esta regla, una celda blanca se volverá negra si tiene 0, 2, 3 o 4 vecinos negros (ya que el bit más a la derecha es 1 en los grupos 0, 2, 3 y 4 contando desde la derecha) y un negro la celda permanecerá negra si tiene exactamente 3 vecinos negros (ya que el bit más a la izquierda es 1 solo en el grupo 3).

Y de hecho, la simulación de esta regla durante 22 generaciones, comenzando con un píxel negro sobre un fondo blanco, produce una imagen que coincide con la de la página vinculada.


PD. Resulta que la regla 465 es el "equivalente estroboscópico" de la regla de estado simétrico 558 = 01000101110 2 , que difiere de la regla 686 en exactamente un bit y puede describirse como "agregar una celda cuando exactamente un vecino está ocupado, eliminar un celda cuando exactamente un vecino está vacío ".

Partiendo de una sola celda, parece que las reglas 558 y 686 evolucionan de manera idéntica, ya que desde este punto de partida aparentemente nunca generan una celda viva con exactamente tres vecinos vivos. Por lo tanto, en las generaciones pares, la regla estroboscópica 465 también parece idéntica a ambas.