N06.- ElementaryCAs

INFORMACIÓN

Elementary Cellular Automata
Este modelo presenta los autómatas celulares, AC, unidimensionales con celdas de dos estados (blanco y negro) en vecindarios de tres celdas. Siguiendo a Stephen Wolfram, quien los inventó a principios de la década de 1980, se denominan AC elementales (ECA en inglés).
Este modelo muestra cómo asignar números de Wolfram a las 256 posibles reglas para espacios unidimensionales discretos (una fila horizontal o rejilla) de celdas de dos estados (blanco y negro), cada una con tres vecinos: el más cercano a izquierda y derecha de uno mismo. (Nuestra convención es que cada celda es ‘uno mismo’ o el ‘vecino intermedio’; esto puede parecer incómodo al principio, pero hace que la descripción de un AC sea mucho más simple en general).
Con este modelo, puede experimentar con estos sistemas editando interactivamente el estado de cada celda, así como la propia regla ECA.

Una regla ECA es una función finita. Se puede considerar como una tabla de búsqueda, asignando consistentemente una sola ‘salida’ que es uno de los dos posibles valores booleanos a cada una de las ocho posibles ‘entradas’, que son combinaciones ordenadas (permutaciones) de tres valores booleanos. Estos valores booleanos se pueden denominar, según el contexto, «verdadero» y «falso», blanco y negro o 1 y 0. Para cada celda, en cada paso de tiempo, las entradas a la regla son los estados booleanos del vecindario de esa celda. La salida de la regla se convierte en el nuevo estado de la celda en el siguiente paso. Los estados de todas las celdas se actualizan simultáneamente. Por convención, los estados más antiguos se muestran encima de los más nuevos, y el entramado actual se muestra en la parte inferior de la pantalla. Esto crea una imagen llamada diagrama de espacio-tiempo, donde el tiempo corre por el eje
vertical de la pantalla.

Cómo usar el modelo
La familia de autómatas celulares elementales es conceptualmente bastante simple. Los únicos parámetros son la regla, las condiciones iniciales y el tamaño del espacio. Todos estos parámetros son accesibles desde la pestaña Interfaz.

El deslizador visible-size (tamaño visible) establece el número de celdas que se muestran en la pantalla. El conmutador circular? determina si esta celosía visible se envuelve o no en un círculo, haciendo que la celda visible más a la derecha sea la vecina izquierda de la celda visible más a la izquierda. Si circular? está en On, entonces visible-size es el tamaño total de la celosía. Si circular? está en Off entonces la celosía se extiende infinitamente hacia la izquierda
y hacia la derecha. En este caso, en realidad no se pueden ver las celdas invisibles fuera de la pantalla, pero realmente están allí en la memoria de NetLogo y afectarán a los patrones producidos por el AC. El control deslizante rule-code permite elegir una regla ECA por su número de código Wolfram, de 0 a 255. Alternativamente, puede editar los bits individuales de la tabla de reglas directamente, como se describe a continuación. Si al pulsar el botón Setup, el interruptor random-start, si está en On, entonces se crea un estado inicial aleatorio para todas las celdas visibles, Si random-start está en Off, entonces la condición inicial será una sola celda negra en el centro de un entramado de celdas completamente blancas.

El botón Edit Rule le permite editar la regla cambiando los estados de la celda con el mouse, El número binario resultante se traduce a un código Wolfram decimal y también se usa directamente (mediante el procedimiento eval-bfn) para calcular nuevos estados de celda. El botón Go 1 hace lo mismo que Go, pero solo en un solo paso. El paso de tiempo actual se muestra en la parte superior de la pantalla. En el diagrama de espacio-tiempo, una de cada cinco filas de celdas está numerada (en verde brillante) con su correspondiente paso de tiempo. Puede ejecutar el sistema CA para un número específico de pasos sin la animación (relativamente lenta) girando el control deslizante de velocidad en la barra de herramientas al punto máximo y escribiendo, por ejemplo, en la línea de entrada del Centro de Comando

 go-steps 999

. También se proporcionan otros comandos. Si desea ver el estado de celosía actual como una lista de 0 y 1, simplemente escriba

 show current-state

Para establecer el estado del sistema desde el Centro de Comando, escriba (por ejemplo)

 set-state [1 0 1 0 1]

Si da una lista con menos bits que la longitud del ciclo, ambos extremos se rellenarán con ceros («falso», blancos) para ajustarse al ancho de la pantalla. Para rellenar solo un extremo, de modo que el nuevo patrón esté alineado a la izquierda o derecha de la celosía, use un comando como

 set-state on-right [1]

NetLogo tricks
Aunque los patches y las turtles se utilizan para la visualización y la entrada, todo el cálculo de CA para este modelo se realiza indirectamente, con estructuras de lista que contienen valores booleanos nativos. Aunque este enfoque complica un poco el código, tiene algunas ventajas importantes: nos permite mostrar el editor de reglas o cambiar el tamaño de la pantalla sin destruir los patrones, es considerablemente más rápido (especialmente para sistemas grandes) y nos permite trabajar con celosías infinitas. Si desea ver una implementación más simple y directa, hay una (titulada CA 1D
Elementary disponible en la biblioteca de modelos. Si se está preguntando cómo podemos representar una red infinita en nuestras computadoras finitas, la suposición esencial es que, en cualquier paso de tiempo particular, todas las celdas de la red, excepto un segmento central de tamaño finito (la parte ‘interesante’) son uniformemente en blanco o negro, por lo que no es necesario que los representemos todos explícitamente. Estas celosías infinitas tienen una forma como (por ejemplo)

[... 1 1 0 0 1 0 1 0 1 0 ...]

donde ... a la izquierda significa una secuencia infinita de unos, y ... a la derecha significa una secuencia infinita de ceros. Lo que realmente sucede cuando circular? está en Off es que la lista que representa el estado de CA crece en dos elementos (uno a la izquierda, otro a la derecha) en cada paso. Estos nuevos elementos se consideran los mismos valores booleanos que los extremos anteriores de la lista. Aunque la lista es potencialmente infinita, solo podemos ejecutar nuestro programa un número finito de pasos. Entonces, por supuesto, la representación siempre permanece finita. Debido a que la información solo se puede propagar en un ECA a una velocidad máxima de una celda por marca, el segmento central «interesante» de la red siempre está representado. Este uso de una estructura de datos infinita es muy útil en el estudio de autómatas celulares, porque nos permite evitar restricciones de tamaño arbitrarias que podrían afectar el comportamiento de la CA.

INTERFAZ