INFORMACIÓN
Conway’s Game of Life
En el Laboratorio Nacional de Los Alamos, a fines de la década de 1940, el matemático extremadamente prolífico e influyente John von Neumann trabajó
en el desarrollo de autómatas o máquinas abstractas que se reproducían a sí mismas. Inspirado por la máquina de computación universal de Alan Turing
y el trabajo contemporáneo de su colega Stanislaw Ulam sobre estructuras de celosía cristalina, von Neumann inventó un sistema de 29 símbolos, junto
con reglas que gobiernan las interacciones simultáneas entre símbolos adyacentes en una cuadrícula infinita, que podría soportar una “Constructor universal”. Se trataba de una configuración de símbolos que trabajaban juntos bajo las reglas de interacción como una máquina capaz de construir cualquier otra configuración de símbolos, cuando se les da una descripción en forma de una cadena lineal o «cinta» de instrucciones simbólicas. Aunque von Neumann nunca terminó su constructor, generalmente se lo considera como uno de los autómatas celulares originales.
Un poco más de veinte años después, y poco después de la publicación póstuma en 1966 de la mayor parte del trabajo conocido de von Neumann sobre el tema, John H. Conway desarrolló este «Juego de la vida» como una simplificación extrema de ciertos aspectos del sistema de von Neumann, utilizando sólo dos símbolos (o estados) por celda de cuadrícula cuadrada, y una regla simétrica simple que (a diferencia de la de von Neumann) también tiene en cuenta los vecinos diagonales de cada celda, un sistema de vecindad generalmente atribuido a Edward F.Moore, quien trabajó en modelos de máquinas abstractas de reproducción biológica a principios de la década de 1960.
En lugar de organizar cuidadosamente patrones de símbolos en la búsqueda de un propósito particular, Conway estaba interesado en cómo las configuraciones arbitrarias podían evolucionar de maneras impredecibles. La regla «Vida» está diseñada para cumplir con los siguientes tres criterios:
1º.- No debe haber un patrón inicial para el que exista una prueba simple de que la población puede crecer sin límite.
2º.- Debería haber patrones iniciales que aparentemente crezcan sin límite.
3º.- Debe haber patrones iniciales simples que crezcan y cambien durante un período de tiempo considerable antes de llegar a su fin de tres maneras posibles: desapareciendo por completo (por hacinamiento o escasez), estableciendo una configuración estable que permanezca sin cambios a partir de entonces, o entrando en un fase oscilante en la que repiten un ciclo sin fin de dos o más periodos. En resumen, las reglas deben ser tales que hagan impredecible el comportamiento de la población. - [Gardner 1970]
La regla CA simple que Conway definió es una regla aditiva para celdas con dos estados (aquí, «negro» y «blanco», o «vivo» y «muerto») en una cuadrícula de
cuadrados infinitos, donde el vecindario de una celda incluye sus cuatro ‘ vecinos diagonales:
.- Sea n es el número de celdas negras en la vecindad 8 externa de la celda;
.- Una celda negra permanece negra en el siguiente paso solo si n = 2 o n = 3 de lo contrario se vuelve blanca;
.- Una célula blanca se vuelve negro en el siguiente paso solo si n = 3; de lo contrario, permanece blanca.
Aunque Conway desarrolló por primera vez su “juego de jugador cero” a mano usando papel cuadriculado o un tablero Go, pronto se implementó para él
en la minicomputadora PDP-7, una máquina relativamente asequible que luego estaba disponible en muchas universidades. En octubre de 1970, el columnista de Scientific American Martin Gardner publicó una descripción de Conway’s Life en su columna ampliamente leída Mathematical Games, lo que provocó lo que se convertiría en una próspera cultura de aficionados de la ingeniería y el descubrimiento de patrones de vida, así como una investigación seria sobre las capacidades computacionales de los autómatas celulares. . Desde entonces, Game of Life de Conway se ha implementado de muchas formas, en muchos entornos informáticos diferentes. Hay dos implementaciones diferentes de NetLogo disponibles en la biblioteca de modelos. ¡Su código es más simple, más directo y mucho más fácil de entender que el de este!
El modelo actual es relativamente complicado en parte porque admite un «tablero infinito»: no envuelve ni encierra arbitrariamente la cuadrícula de celdas.
Esta es una característica esencial de la vida tal como la definió Conway: los autómatas celulares de tamaño fijo tienen menos poder computacional que las CA ilimitadas.
La otra característica que hace que este modelo sea más complicado es la capacidad de guardar plantillas de patrones y componer nuevos patrones a partir de ellas. Esto facilita mucho la experimentación con estructuras coordinadas.
Este modelo está destinado a ser un paso hacia programas Life más «serios» optimizados y con todas las funciones, como Golly,, al mismo tiempo que proporciona una implementación relativamente simple y accesible para aquellos que deseen leer el código.
How to use this model
Al hacer clic en el botón setup, aparece un «universo vacío» en blanco. Puede pensar en esto como una cuadrícula infinita de células blancas.
Debido a que el modelo no representa explícitamente las células blancas «muertas», podemos pensar en ellos como «huecos» o «celdas vacías». El «universo» se representa en el programa como una lista de pares [X Y] que representan la ubicación de las celdas negras. El nombre de esta lista (inicialmente vacía) es cells.
Para agregar celdas negras «vivas» a la pantalla del mundo haga clic para activar el botón edit. Cuando la edición está activa, el interruptor ‘inset-pattern?‘ le ofrece dos opciones: cuando está «off«, puede hacer clic en cualquier lugar de la pantalla para alternar el estado de una celda individual entre blanco y negro, y cuando está «on«, puede insertar (pero no eliminar) un patrón completo, como un planeador. Este patrón se especifica mediante los parámetros en el lado izquierdo de la pestaña Interfaz: los controles le permiten seleccionar un patrón almacenado de una lista de «selectores» y cambiar su orientación mediante cualquier combinación de reflejos o rotaciones. Coloque el patrón directamente en la pantalla con un clic. Se proporcionan algunos patrones estables básicos y «partículas» móviles, así como algunos más complejos que se pueden utilizar para crear y manipular corrientes de planeadores.
Los botones go 1 y go G, como es de esperar, hacen avanzar al autómata celular uno o más pasos a través del tiempo calculando y mostrando una nueva “generación” de estados celulares. Un gráfico etiquetado como live cell count recuento de células vivas muestra la «población» de células negras a lo largo del tiempo. Los patrones pueden crecer más allá de los límites de la pantalla mundial, mientras permanecen en la memoria de NetLogo. Una pequeña pantalla adicional (en realidad otra trama), titulada map of the universe muestra todo el «universo» de células vivas, con los bordes del «mundo» visible delimitados por un marco gris claro. A medida que el «universo» se expande, el «mapa» se encoge. Ambas pantallas pueden desactivarse temporalmente (para mayor velocidad) cambiando las pantallas de actualización. ‘Apagado’.
Para navegar por la pantalla principal del «mundo» alrededor del «universo» infinito, se proporcionan algunos controles adicionales. La «localización del universo», un patch azul claro en el centro de la pantalla, viene dada por los monitores x-offset e y-offset donde se mide con relación con el punto de «origen» del universo (0,0). El deslizador display-scale y el botón zoom-to-display-scale cambian la resolución de la vista del mundo sin cambiar la ubicación de su punto central. El botón pan, cuando está activo, le permite mover ese punto central haciendo clic en cualquier celda visible en la pantalla. También puede «desplazarse» a una nueva ubicación en un solo paso escribiendo (por ejemplo) «pan-to 123 -456» en el Centro de Comandos.
Al experimentar con la vida, a menudo querrás probar cosas diferentes, pero podrás volver a un estado guardado. Siempre puede utilizar los comandos integrados «Export World» e «Import World» de NetLogo, que escriben y leen archivos externos. O bien, puede imprimir la lista de celdas del universo escribiendo print cells y copiar y pegar la salida en un archivo de texto. Pero se consigue un almacenamiento temporal mucho más rápido y sencillo con estos tres comandos:
save «nombre de patrón»
restore «nombre de patrón»
saved devuelve una lista de nombres de patrones guardados, en caso de que los olvide. También puede usar números, si no quiere molestarse en escribir un nombre completo entre comillas.
Finalmente, el botón trim descarta todas las celdas que no son visibles en la pantalla principal y vuelve a centrar las restantes para que el parche azul claro central ahora se ubique en (0,0). Esto es muy útil para aislar nuevos subpatrones que le gustaría guardar para una reinserción posterior: simplemente recorte las celdas sobrantes y escriba celdas centradas en la impresión para obtener una lista de celdas que luego puede pegar en la lista de patrones en el final del código.
No tendrá ningún problema para encontrar patrones de vida interesantes en la web. En el momento de escribir este artículo, dos de los repositorios más grandes son Life Lexicon de Stephen Silver y LifeWiki de Nathaniel Johnston. Puede importar cualquier patrón en el formato estándar basado
en texto para un pequeño intercambio de patrones Life (una especie de imagen hecha con caracteres “.” y “*” u “o”) usando el comando read-new-patterns; consulte el final de la pestaña Código para obtener instrucciones detalladas.
INTERFAZ
Referencias y lecturas complementarias
1.- En el código se declara la extensión Table. La descripción (en inglés) puede verse en NetLogo Table Extension.
2.- En la introducción se cita el programa «GOLLY» una exploración del juego de la vida de John Horton Conway
3.- En la introducción se citan los repositorios «Life Lexicon» y «LifeWiki«