En este vídeo:
Autómatas celulares y regla 30
Stephen Wolfram habla de ese autómata celular elemental en el minuto 17:01. Alguien tiene idea de cuál es exactamente el que podría estar hablando?
En este vídeo:
Autómatas celulares y regla 30
Stephen Wolfram habla de ese autómata celular elemental en el minuto 17:01. Alguien tiene idea de cuál es exactamente el que podría estar hablando?
Hay más detalles -bastantes más detalles- en el original Anuncio de los premios de la Regla 30 en el blog de Stephen Wolfram. En particular, la regla específica se nombra allí:
He aquí un ejemplo un tanto curioso -encontrado mediante una búsqueda- de una regla con 4 colores posibles (código totalista 150898). Ejecútalo durante 200 pasos, y la columna central parece bastante aleatoria:
[Imagen 1]
Después de 500 pasos, todo el patrón sigue pareciendo bastante aleatorio:
[Imagen 2]
Pero si uno se acerca a la columna central, hay algo sorprendente: después de 251 pasos, la columna central parece evolucionar hacia un valor fijo (o al menos se mantiene fijo durante 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 entrada del blog; seleccionando y copiando la primera imagen de la página, por ejemplo, se obtiene 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 prefieres no intentar averiguar qué hace ese código, creo que ANKOS página 60 (molesta, la entrada del blog enlaza con la página 61) describe la convención de Wolfram para la numeración de las reglas de CA totalistas 1D y cómo decodificarlas y simularlas. En concreto:
Sólo para confirmar que la decodificación y la aplicación de la regla de esta manera realmente produce una salida que coincide con las imágenes de la entrada del blog, aquí hay un simple programa de Python 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)))
Simulando esta regla en un entramado lo suficientemente amplio, partiendo de una única celda 1 sobre un fondo de celdas 0, se puede observar que la celda central acaba por quedarse atascada en el estado 1 mientras que sus vecinas alternan de forma casi aleatoria entre los estados 1 y 3. De hecho, examinando el código de la regla base-4, no es demasiado difícil ver por qué esta configuración particular en el centro de un patrón simétrico es invariante bajo la regla:
Así, una vez que las cinco columnas centrales de un patrón centralmente simétrico bajo esta regla terminan en la configuración " $a111a$ " o " $b313b$ ", donde $a$ es cualquier estado y $b$ es cualquier estado distinto de 2, no pueden volver a entrar en ninguna configuración que no sea de este tipo.
I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.
0 votos
Habla de si la Regla 30 se repetirá o no después de $n$ pasos.