You are on page 1of 14

UNIVERSIDAD DE CASTILLA-LA MANCHA

ESCUELA SUPERIOR DE INGENIER INFORMATICA IA

INGENIER IA EN INFORMATICA

TRABAJO DE BIOINFORMATICA

EL JUEGO DE LA VIDA DE CONWAY Juan Ignacio Del Castillo Waters y Gonzalo Rubio Torrente

Diciembre, 2008

INDICE GENERAL
1. INTRODUCCION - VIDA ARTIFICIAL Y AUTOMATAS CELULARES 1.1. DEFINICION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. DEFINICION DE AUTOMATA CELULAR . . . . . . . . . . . . . . . 2. EL JUEGO DE LA VIDA DE CONWAY 2.1. DESCRIPCION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2. REGLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3. PATRONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3. DESARROLLO 3.1. DESCRIPCION DE LA APLICACION . . . . . . . . . . . . . . . . . . 3.2. IMPLEMENTACION . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. EJEMPLOS DE FUNCIONAMIENTO . . . . . . . . . . . . . . . . . . 4. VARIANTES DEL JUEGO 4.1. VARIANTES EN LAS REGLAS . . . . . . . . . . . . . . . . . . . . . 4.2. VARIANTES EN EL TABLERO . . . . . . . . . . . . . . . . . . . . . 4.3. UNA MAQUINA DE TURING EN EL JUEGO DE LA VIDA . . . . . 5. BIBLIOGRAFIA 1 1 1 3 3 3 4 6 6 7 9 10 10 10 11 12

1. INTRODUCCION - VIDA ARTIFICIAL Y AUTOMATAS CELULARES


1.1. DEFINICION

La vida articial es el campo de la ciencia que se dedica al estudio de la vida y de los mecanismos esenciales de la misma a travs de la creacin de sistemas articiales e o que tratan de imitar o exhibir propiedades similares a la de los seres vivos mediante modelos de simulacin. o El trmino fue acuado por el cient e n co Christopher Langton a nales de los ochenta en la ((International Conference on the Synthesis and Simulation of Living System)). Los investigadores de la vida articial se han dividido habitualmente en dos grupos de opinin: o

Vertiente de vida articial dura/fuerte: consideran que la vida es un proceso que se puede conseguir fuera de cualquier medio particular. Vertiente de vida articial dbil: niega la posibilidad de generar un ((proceso de e vida)) fuera de una solucin qu o mica basada en el carbono.

Dentro de este campo, atendiendo a la primera vertiente, se utilizan muy diversas tcnicas de la inteligencia articial, como son los algoritmos evolutivos, programacin e o gentica, inteligencia de enjambre, qu e mica articial...

1.2.

DEFINICION DE AUTOMATA CELULAR

Los autmatas celulares son redes de autmatas simples conectados localmente. o o Cada autmata simple produce una salida a partir de varias entradas, modicando en o el proceso su estado segn una funcin de transicin. Por lo general, en un autmata u o o o 1

1. INTRODUCCION - VIDA ARTIFICIAL Y AUTOMATAS CELULARES

celular, el estado de una clula en una generacin determinada depende unica y exclue o sivamente de los estados de las clulas vecinas y de su propio estado en la generacin e o anterior. Los autmatas celulares son herramientas utiles para modelar cualquier sistema en o el universo. Pueden considerarse como una buena alternativa a las ecuaciones diferenciales y han sido utilizados para modelar sistemas f sicos, como interacciones entre part culas, formacin de galaxias, cintica de sistemas moleculares y crecimiento de o e cristales, as como diversos sistemas biolgicos a nivel celular, multicelular y pobla o cional.

2. EL JUEGO DE LA VIDA DE CONWAY


2.1. DESCRIPCION

El juego de la vida de Conway es el autmata celular ms conocido y ms estudiado, o a a diseado por el matemtico John Horton Conway en 1970. El juego es un autmata n a o celular bidimensional en el cual cada celda (clula) puede estar en uno de los dos estados e posibles, viva o muerta. Partiendo de un estado inicial, la simulacin va haciendo o evolucionar al autmata en base a unas sencillas funciones de transicin. Una clula o o e va a estar en un estado concreto, el cual ser determinado unicamente del estado a inmediatamente anterior de las clulas vecinas y el de la propia clula, tal y como se e e describi en la seccin de autmatas celulares. o o o

2.2.

REGLAS

El conjunto bsico inicial que propuso Conway se compone de tres reglas muy a sencillas:

Cada clula viva con dos o tres clulas vecinas vivas sobrevive a la siguiente e e generacin. o Cada clula viva con ninguna, una, o ms de tres clulas vivas a su alrededor e a e pasa a estar muerta (soledad y superpoblacin). o Cada clula muerta con tres clulas vecinas vivas resucita en la siguiente gene e eracin. o

Sin embargo se pueden realizar variaciones en estas reglas para obtener comportamientos distintos a los habituales. La manera de representar las reglas es X/Y, donde X e Y son nmeros enteros. Cada uno de los d u gitos que forman estos nmeros repreu senta un nmero de vecinos vlido para nacer o continuar viviendo respectivamente. u a 3

2. EL JUEGO DE LA VIDA DE CONWAY

Por ejemplo, las reglas que propuso Conway se representarian como 3/23. Esto signica que una clula muerta volver a vivir si tiene 3 clulas vecinas vivas, y que una clula e a e e viva sobrevive si tiene 2 o 3 clulas vecinas vivas. En el resto de los casos la clula e e continua sin vida o muere.

2.3.

PATRONES

Un patrn es una conguracin de clulas vivas que permanece estable. Existen o o e bsicamente tres clases de patrones en el juego de la vida de Conway. a

Patrones estticos (still lifes): Un conjunto de clulas vivas que se mantiene a e esttico, sin que se produzcan nuevos nacimientos o muertes. a

Figura 2.1: Patrn bloque (block) o

Figura 2.2: Patrn barco (boat) o Patrones recurrentes (oscilators): Un conjunto de clulas vivas que no se mueve e por el mundo, pero que no es esttico, ya que se producen nacimientos y muertes, a produciendo transiciones que se repiten continuamente. Patrones que se trasladan (spaceships): Un conjunto de clulas vivas que pere manece con la misma forma, pero que se desplaza por el tablero.

2. EL JUEGO DE LA VIDA DE CONWAY

Figura 2.3: Patrn parpadeador (blinker) o

Figura 2.4: Patrn sapo (toad) o

Figura 2.5: Patrn planeador (glider) o

Figura 2.6: Patrn nave ligera (LWSS) o

3. DESARROLLO
3.1. DESCRIPCION DE LA APLICACION

Se ha realizado una versin del Juego de la Vida de Conway utilizando el lenguaje o de programacin C Sharp. En esta versin se ha incluido la funcionalidad bsica del o o a juego junto con algunas opciones aadidas. n

Posibilidad de ejecucin paso a paso, de cara a poder ver el resultado de una o aplicacin de las reglas a una conguracin dada, y ejecucin continuada, para o o o ver el desarrollo de una conguracin inicial en el tiempo. o Control de velocidad en la ejecucin continuada. o Posibilidad de congurar las reglas del juego. Posibilidad de guardar y cargar el estado del juego, mantieniendo tanto las reglas como la disposicin de las clulas. o e

La aplicacin muestra un tablero con una matriz de clulas (80x80), en principio todas o e en color blanco (muertas). Bajo el tablero aparecen los botones ((Simular)) (comienza la ejecucin continuada, cambiando el texto del botn a ((Parar))), ((Simular Paso)) (ejecuta o o una vez las reglas sobre la disposicin del tablero), ((Reset)) (reinicia el tablero dejando o todas las clulas muertas), ((Salir)) (se cierra la aplicacin) y ((Reglas)) (que abre un e o cuadro de dilogo donde congurar las reglas). Al la derecha de los botones aparece un a ((Slider)) que permite ajustar la velocidad de ejecucin. Adems, en la parte superior de o a la aplicacin aparece un men con las opciones ((Archivo)) y ((Acerca de)). En ((Archivo)) o u aparecen las opciones de ((Cargar)) y ((Guardar)) que permiten almacenar y cargar el estado del juego. En ((Acerca de)) se pueden ver los crditos de la aplicacin. e o Para modicar el estado de una clula, para darle vida o matarla, tan solo hay que e picar sobre ella con el ratn. o

3. DESARROLLO

3.2.

IMPLEMENTACION

Para la creacin de la versin del Juego de la vida se han implementaso de 3 clases. o o

La clase Juego. Contiene la lgica del juego. o La clase Tablero. Contiene el cdigo correspondiente a la interfaz grca del o a juego. La clase Reglas. Contiene el cdigo correspondiente a la interfaz grca de la o a seleccin de las reglas. o

El cdigo se concentra principalmente en la primera de las 3 clases, ya que las otras o dos tan solo implementan mtodos de respuesta a eventos del sistema que realizaran e llamadas a los mtodos de la clase Juego. e La clase Juego dene el estado del juego de la vida haciendo uso de los siguientes atributos:

tablero. Una matriz de valores booleanos que representan las clulas del juego. e Si el valor de una clula X,Y es true, la clula est viva. En caso contrario e e a est muerta. a alto. Un valor entero que representa el alto del tablero del juego. ancho. Un valor entero que representa el ancho del tableo del juego. reglaVida. Una matriz que representa las condiciones que tiene que cumplir una clula para seguir viva. e reglaNacer. Una matriz que representa las condiciones que tiene que cumplir una clula para nacer. e nPasos. Un entero que contabiliza el nmero de pasos que se han dado en el juego. u

A continuacin se describen los mtodos principales. o e

3. DESARROLLO

getAncho(). Devuelve un entero cuyo valor se corresponde con el tamao del n ancho del tablero. getReglasVida(). Devuelve una matriz con las reglas que permiten seguir viviendo a una clula. Dicha matriz es tan larga como posibilidades de vivir tiene la clula e e y cada entero contenido en ella es una de dichas posibilidades. Por ejemplo, si la matriz es [2,3] una clula puede seguir viviendo si tiene 2 o 3 vecinos vecinos. En e caso contrario muere. getReglasNacer(). Devuelve una matriz con las reglas que permiten nacer una clula. Dicha matriz es tan larga como posibilidades de vivir tiene la clula y e e cada entero contenido en ella es una de dichas posibilidades. Por ejemplo, si la matriz es [2,3] una clula puede nacer si tiene 2 o 3 vecinos vivos. En caso e contrario permanece muerta. getAlto(). Devuelve un entero cuyo valor se corresponde con el tamao del alto n del tablero. estaViva(int x, int y). Devuelve un valor booleano. Ser cierto si la clula en la a e posicin x,y est viva y falso en caso contrario. o a resetTablero(). Vuelve el tablero a la posicin inicial, con todas las clulas muero e tas. setReglaVida(int[] regla). Fija las reglas para que una clula siga viva. El formato e de la matriz que se le pasa por parmetro es el mismo que el de la matriz devuelta a por getReglasVida. setReglaNacer(int[] regla). Fija las reglas para que una clula nazca. El formato e de la matriz que se le pasa por parmetro es el mismo que el de la matriz devuelta a por getReglasNacer. invierteCelula(int x, int y). Si la clula que est en la posicin x, y est muerta, e a o a nace. En caso contrario, muere. simularPaso(). El sistema recorre todas las clulas y en funcin del nmero de e o u vecinos vivos que tenga cada una, modicar su estado o permanecer estable. a a

3. DESARROLLO

calculaVecinosVivos(int x, int y). El sistema comprueba el nmero de clulas u e vecinas vivas que tiene la clula localizada en x,y y lo devuelve en forma de e entero. Juego(int ancho, int alto, int[] reglaVida, int[] reglaNacer). Es el constructor de la clase. Genera un tablero de clulas de tamao ALTOxANCHO, con las reglas e n reglaVida y reglaNacer que se han pasado como parmetros. a

3.3.

EJEMPLOS DE FUNCIONAMIENTO

Para ver varios ejemplos en funcionamiento, cargar el archivo ((loop.vid)) en la aplicacin. o

4. VARIANTES DEL JUEGO


4.1. VARIANTES EN LAS REGLAS

Desde la creacin del juego se han desarrollado nuevas reglas. Algunos ejemplos de o variantes en las reglas son los siguientes.

/3 (estable) casi todo es una chispa 5678/35678 (catico) diamantes, catstrofes o a 1357/1357 (crece) todo son replicantes 1358/357 (catico) un reino equilibrado de amebas o 23/3 (catico) Juego de la Vida de Conway o 23/36 (catico) HighLife(tiene replicante) o 235678/3678 (estable) mancha de tinta que se seca rpidamente a 245/368 (estable) muerte, locomotoras y naves 34/34 (crece) Vida 34 51/346 (estable) Larga vidaasi todo son osciladores c

4.2.

VARIANTES EN EL TABLERO

Se han desarrollado variantes adicionales mediante la modicacin de otros elemeno tos del universo. Las variantes anteriores son para un universo bidimensional formado por cuadrados, pero tambin se han desarrollado variantes unidimensionales y tridie mensionales, as como variantes 2-D donde la malla es hexagonal o triangular en lugar de cuadrada. Tambin existen variantes en el que se modica el nmero de estados en e u los que puede estar una clula, representndose el estado con el color que se le asigna e a a la misma. 10

4. VARIANTES DEL JUEGO

11

4.3.

UNA MAQUINA DE TURING EN EL JUEGO DE LA VIDA

Nos ha llamado la atencin la implementacin de una mquina de turing en el juego o o a de la vida de Conway, mediante la construccin de las diferentes partes de la mquina o a de turing creando subsistemas con patrones controlados que van reproduciendo el comportamiento esperado. A continuacin podemos ver una captura de la mquina en o a funcionamiento.

Figura 4.1: Mquina de turing en el juego de la vida a

5. BIBLIOGRAFIA
Wikipedia (www.wikipedia.org) A turing machine in Conways game of life (rendell-attic.org/gol/tm.htm) GAIA: Inteligencia articial (www.redcientica.com/gaia/index.html Video demostrativo del juego de la vida (www.youtube.com/watch?v=s92EW7jVeq0)

12

You might also like