viernes, 5 de junio de 2009

Juego de la vida, autómata celular

El juego de la vida es el mejor ejemplo de un autómata celular, diseñado por el matemático británico John Horton Conway en 1970.

Hizo su primera aparición pública en el número de octubre de 1970 de la revista Scientific American, en la columna de juegos matemáticos de Martin Gardner. Desde un punto de vista teórico, es interesante porque es equivalente a una máquina universal de Turing, es decir, todo lo que se puede computar algorítmicamente se puede computar en el juego de la vida.

Desde su publicación, ha atraído mucho interés debido a la gran variabilidad de la evolución de los patrones. Se considera que la vida es un buen ejemplo de emergencia y autoorganización. Es interesante para los científicos, matemáticos, economistas y otros observar cómo patrones complejos pueden provenir de la implementación de reglas muy sencillas.

La vida tiene una variedad de patrones reconocidos que provienen de determinadas posiciones iniciales. Poco después de la publicación, se descubrieron el pentaminó R, el planeador o caminador (en inglés glider, conjunto de células que se desplazan) y el explosionador (células que parecen formar la onda expansiva de una explosión), lo que atrajo un mayor interés hacia el juego. Contribuyó a su popularidad el hecho de que se publicó justo cuando se estaba lanzando al mercado una nueva generación de miniordenadores baratos, lo que significaba que se podía jugar durante horas en máquinas que, por otro lado, no se utilizarían por la noche.

Para muchos aficionados, el juego de la vida sólo era un desafío de programación y una manera divertida de usar ciclos de la CPU. Para otros, sin embargo, el juego adquirió más connotaciones filosóficas. Desarrolló un seguimiento casi fanático a lo largo de los años 1970 hasta mediados de los 80.

El juego de la vida es en realidad un juego de cero jugadores, lo que quiere decir que su evolución está determinada por el estado inicial y no necesita ninguna entrada de datos posterior. El "tablero de juego" es una malla formada por cuadrados ("células") que se extiende por el infinito en todas las direcciones. Cada célula tiene 8 células vecinas, que son las que están próximas a ella, incluso en las diagonales. Las células tienen dos estados: están "vivas" o "muertas" (o "encendidas" y "apagadas"). El estado de la malla evoluciona a lo largo de unidades de tiempo discretas (se podría decir que por turnos). El estado de todas las células se tiene en cuenta para calcular el estado de las mismas al turno siguiente. Todas las células se actualizan simultáneamente.

Las transiciones dependen del número de células vecinas vivas:

  • Una célula muerta con exactamente 3 células vecinas vivas "nace" (al turno siguiente estará viva).
  • Una célula viva con 2 ó 3 células vecinas vivas sigue viva, en otro caso muere o permanece muerta (por "soledad" o "superpoblación").

Ejemplos de patrones

Existen numerosos tipos de patrones que pueden tener lugar en el juego de la vida, como patrones estáticos ("vidas estáticas", en inglés still lifes), patrones recurrentes ("osciladores", oscillators, un conjunto de vidas estáticas) y patrones que se trasladan por el tablero ("naves espaciales", spaceships). Los ejemplos más simples de estas tres clases de patrones se muestran abajo. Las células vivas se muestran en negro y las muertas en blanco. Los nombres son más conocidos en inglés, por lo que también se muestra el nombre de estas estructuras en dicho idioma.

Archivo:game_of_life_block.png Archivo:game_of_life_boat.png Archivo:game_of_life_blinker.png Archivo:game_of_life_toad.png Archivo:game_of_life_glider.png Archivo:game_of_life_lwss.png
Bloque Barco Parpadeador Sapo Planeador Nave ligera
Block Boat Blinker Toad Glider LWSS

El bloque y el barco son vidas estáticas, el parpadeador y el sapo son osciladores y el planeador y la nave espacial ligera (LWSS, lightweight spaceship) son naves espaciales que recorren el tablero a lo largo del tiempo.

Los patrones llamados "Matusalenes" (Methuselahs) pueden evolucionar a lo largo de muchos turnos, o generaciones, antes de estabilizarse. El patrón "Diehard" desaparece después de 130 turnos, mientras que "Acorn" tarda 5206 turnos en estabilizarse en forma de muchos osciladores, y en ese tiempo genera 13 planeadores.

Archivo:game_of_life_diehard.png Archivo:game_of_life_methuselah.png
Diehard Acorn

En la aparición original del juego en la revista, Conway ofreció un premio de 50 dólares por el descubrimiento de patrones que crecieran indefinidamente. El primero fue descubierto por Bill Gosper en noviembre de 1970. Entre los patrones que crecen indefinidamente se encuentran las "pistolas" (guns), que son estructuras fijas en el espacio que generan planeadores u otras naves espaciales; "locomotoras" (puffers), que se mueven y dejan un rastro de basura y "rastrillos" (rakes), que se mueven y emiten naves espaciales. Gosper descubrió posteriormente un patrón que crece cuadráticamente llamado "criadero" (breeder), que deja atrás un rastro de pistolas. Desde entonces se han creado construcciones más complicadas, como puertas lógicas de planeadores, un sumador, un generador de números primos y una célula unidad que emula el juego de la vida a una escala mucho mayor y una velocidad menor.

El primer planeador que se ha descubierto sigue siendo el más pequeño que se conoce:

Archivo:game_of_life_glider_gun.png
Pistola de Gosper
Pistola de planeadores de Gosper (Gosper Glider Gun)

Se han hallado posteriormente patrones más simples que también crecen indefinidamente. Los tres patrones siguientes crecen indefinidamente. Los dos primeros generan un motor interruptor que deja bloques, mientras que el tercero genera dos. El primero tiene una población mínima de 10 células vivas, el segundo cabe en un cuadrado 5 × 5 y el tercero sólo tiene un cuadrado de altura:

Archivo:game_of_life_infinite1.png Archivo:game_of_life_infinite2.png

Archivo:game_of_life_infinite3.png

Es posible que los planeadores interactúen con otros objetos de forma interesante. Por ejemplo, si se disparan dos planeadores hacia un bloque contra el que chocan de la forma correcta, el bloque se acercará al origen de los planeadores, pero si se disparan tres planeadores de forma correcta el bloque se alejará. Esta "memoria del bloque deslizante" se puede emplear para simular un contador. Es posible construir puertas lógicas AND (y, conjunción), OR (o, disyunción) y NOT (no, negación) mediante el uso de planeadores.

También se puede construir una estructura que actúe como una máquina de estados finitos conectada a dos contadores. Esto tiene la misma potencia computacional que una máquina universal de Turing, así que el juego de la vida es tan potente como un ordenador con memoria ilimitada: por ello es Turing-completo.

Además, una estructura puede contener un conjunto de pistolas que se combinen para construir nuevos objetos, incluso copias de la estructura original. Se puede construir un "constructor universal" que contenga un ordenador Turing-completo y que pueda generar muchos tipos de objetos complejos, incluso nuevas copias de sí mismo. (Vienen descripciones de estas construcciones en Winning Ways for your Mathematical Plays de Conway, Elwyn Berlekamp y Richard Guy)

Variantes

Desde la creación del juego se han desarrollado nuevas reglas. El juego estándar, en que nace una célula si tiene 3 células vecinas vivas, sigue viva si tiene 2 o 3 células vecinas vivas y muere en otro caso, se simboliza como "23/3". El primer número o lista de números es lo que requiere una célula para que siga viva, y el segundo es el requisito para su nacimiento.

Así, "16/6" significa que "una célula nace si tiene 6 vecinas y vive siempre que haya 1 o 6 vecinas". HighLife ("Alta Vida") es 23/36, porque es similar al juego original 23/3 sólo que también nace una célula si tiene 6 vecinas vivas. HighLife es conocida sobre todo por sus replicantes. Se conocen muchas variaciones del juego de la vida, aunque casi todas son demasiado caóticas o demasiado desoladas.

  • /3 (estable) casi todo es una chispa
  • 5678/35678 (caótico) diamantes, catástrofes
  • 1357/1357 (crece) todo son replicantes
  • 1358/357 (caótico) un reino equilibrado de amebas
  • 23/3 (caótico) "Juego de la Vida de Conway"
  • 23/36 (caótico) "HighLife" (tiene replicante)
  • 235678/3678 (estable) mancha de tinta que se seca rápidamente
  • 245/368 (estable) muerte, locomotoras y naves
  • 34/34 (crece) "Vida 34"
  • 51/346 (estable) "Larga vida" casi todo son osciladores

Parte de la lista que hay en Life32

Se han desarrollado variantes adicionales mediante la modificación de otros elementos del universo. Las variantes anteriores son para un universo bidimensional formado por cuadrados, pero también se han desarrollado variantes unidimensionales y tridimensionales, así como variantes 2-D donde la malla es hexagonal o triangular en lugar de cuadrada.

[via Wikipedia]