Autómata celular elemental que muestra un comportamiento eventualmente periódico después de un gran número de iteraciones.

En este video:

Autómatas celulares y regla 30

Stephen Wolfram habla de un autómata celular tan elemental a las 17:01. ¿Alguien tiene una idea de cuál podría estar hablando exactamente?

Habla de si la Regla 30 se repetirá o no después norte pasos.

Respuestas (1)

Hay más detalles, muchos más detalles, en la publicación original de Anunciando los Premios de la Regla 30 en el blog de Stephen Wolfram. En particular, la regla específica se nombra allí:

Aquí hay un ejemplo algo original, encontrado por una búsqueda, de una regla con 4 colores posibles (código totalista 150898). Ejecútelo durante 200 pasos, y la columna central se ve bastante aleatoria:
[Imagen 1]
Después de 500 pasos, todo el patrón todavía se ve bastante aleatorio:
[Imagen 2]
Pero si uno hace zoom alrededor de la columna central, hay algo sorprendente: después de 251 pasos, la columna central parece evolucionar a un valor fijo (o al menos está fijo para más de un millón de pasos):
[Imagen 3]

Resulta que el código de Mathematica para generar las imágenes (y así simular la regla) también está oculto en la publicación del blog; seleccionar y copiar y pegar la primera imagen en la página, por ejemplo, produce el siguiente fragmento de código:

ArrayPlot[
 CellularAutomaton[{150898, {4, 1}, 1}, {{1}, 0}, {200, 150 {-1, 1}}],
  ColorRules -> {0 -> Hue[0.12, 1, 1], 1 -> Hue[0, 0.73, 0.92], 
   2 -> Hue[0.13, 0.5, 1], 3 -> Hue[0.17, 0, 1]}, 
 PixelConstrained -> 2, Frame -> False]

Si prefiere no simplemente tratar de averiguar qué hace ese código, creo que la página 60 de ANKoS (de manera molesta, la publicación del blog enlaza con la página 61) describe la convención de Wolfram para numerar las reglas de CA totalistas 1D y cómo decodificarlas y simularlas. Específicamente:

  1. Escriba el número de regla en la base norte con w ( norte 1 ) + 1 dígitos, donde norte es el número de estados y w es el ancho del vecindario (aquí aparentemente se toma como 3 por defecto). Por ejemplo, 150898 escrito en base 4 con 10 dígitos es 0210311302 4 .
  2. Para aplicar la regla CA, reemplace el estado de cada celda (numerada de 0 a norte 1 ) con el k -ésima cifra desde la derecha en la base norte número de regla (contando desde cero, es decir, el dígito más a la derecha se numera 0 y el más a la izquierda se numera w ( norte 1 ) ), dónde k es la suma de los estados de todos w celdas en la vecindad de esta celda (incluida la celda misma).

Solo para confirmar que la decodificación y la aplicación de la regla como esta realmente produce una salida que coincide con las imágenes en la publicación del blog, aquí hay un programa de Python simple para simular esta regla en una red envolvente finita:

rule = 150898
states = 4
width = 3

# decode rule number
table = tuple((rule // states**k) % states for k in range(width*(states-1)+1))

# initial cell states
cells = ((0,) * 20) + (1,) + ((0,) * 20)

# transition function
def new_state(i):
    neighbors = (cells[(i + j - width // 2) % len(cells)] for j in range(width))
    return table[sum(neighbors)]

for t in range(20):
    print("".join(str(s) for s in cells))
    cells = tuple(new_state(i) for i in range(len(cells)))

¡Pruébelo en línea!

Simulando esta regla en una red lo suficientemente ancha, comenzando desde una sola celda 1 en un fondo de 0 celdas, se puede observar que la celda central eventualmente se atasca en el estado 1 mientras que sus vecinos alternan casi aleatoriamente entre los estados 1 y 3. De hecho , examinando el código de la regla de base 4, no es demasiado difícil ver por qué esta configuración particular en el centro de un patrón simétrico es invariable bajo la regla:

  • Como regla totalista, la función de transición de estado es necesariamente simétrica izquierda/derecha. Por lo tanto, la evolución temporal de cualquier patrón inicial simétrico especular permanece necesariamente simétrica. En particular, esto implica que los dos vecinos de la celda central siempre tendrán el mismo estado.
  • Si la celda central está en el estado 1 y sus dos vecinas en el estado 1 o 3, entonces la suma de los estados de vecindad de la celda central es 1+1+1 = 3 o 3+1+3 = 7. código de regla de base 4, podemos ver que los dígitos 3 y 7 (contando de derecha a izquierda desde cero) son ambos 1.
  • Además, si una celda está en el estado 1 o 3, y uno de sus vecinos está en el estado 1, entonces la suma de sus estados vecinos debe estar entre 1+1+0 = 2 y 1+3+3 = 7 inclusive. Mirando nuevamente el código de la regla de base 4, podemos ver que, de los dígitos 2–7, casi todos son 1 o 3. La única excepción es el dígito 6, que es 0; la única forma en que esta suma puede surgir bajo estas restricciones es como 1+3+2 = 6, es decir, si la celda misma está en el estado 3 y su otra vecina está en el estado 2.
  • Sin embargo, un poco más de examen de la cadena de reglas muestra que no hay una configuración posible de cuatro celdas de la forma " 1 X y z ", dónde X { 1 , 3 } , que podría dar lugar a la configuración " 32 " para sus dos celdas intermedias en el siguiente paso de tiempo. Específicamente, para que la celda central izquierda se convierta en 3, 1 + X + y debe ser 2 o 5. Por lo tanto, X = 1 y y = 0 , X = 1 y y = 3 , o X = 3 y y = 1 . En el primer caso, 1 X + y + z 4 ; en los dos últimos, 4 X + y + z 7 . Pero para que la celda del medio derecho se convierta en 2, X + y + z debe ser 0 u 8, lo cual es imposible.

Por lo tanto, una vez que las cinco columnas centrales de un patrón centralmente simétrico bajo esta regla terminan en la configuración " a 111 a " o " b 313 b ", dónde a es cualquier estado y b es cualquier estado que no sea 2, no pueden volver a entrar en ninguna configuración que no sea de este tipo.