Está en la página 1de 14

UNIVERSIDAD DE CASTILLA-LA MANCHA

ESCUELA SUPERIOR DE INGENIERIA INFORMATICA

INGENIERIA

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

DE AUTOMATA

1.2. DEFINICION
CELULAR . . . . . . . . . . . . . . .

2. EL JUEGO DE LA VIDA DE CONWAY

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.1. DESCRIPCION

2.2. REGLAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.3. PATRONES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. DESARROLLO

DE LA APLICACION
. . . . . . . . . . . . . . . . . .
3.1. DESCRIPCION

. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. IMPLEMENTACION

3.3. EJEMPLOS DE FUNCIONAMIENTO . . . . . . . . . . . . . . . . . .

4. VARIANTES DEL JUEGO

10

4.1. VARIANTES EN LAS REGLAS . . . . . . . . . . . . . . . . . . . . .

10

4.2. VARIANTES EN EL TABLERO . . . . . . . . . . . . . . . . . . . . .

10

4.3. UNA MAQUINA


DE TURING EN EL JUEGO DE LA VIDA . . . . .

11

5. BIBLIOGRAFIA

12

- VIDA ARTIFICIAL Y
1. INTRODUCCION

AUTOMATAS
CELULARES
1.1.

DEFINICION

La vida artificial es el campo de la ciencia que se dedica al estudio de la vida y de


los mecanismos esenciales de la misma a traves de la creacion de sistemas artificiales
que tratan de imitar o exhibir propiedades similares a la de los seres vivos mediante
modelos de simulacion.
El termino fue acu
nado por el cientfico Christopher Langton a finales de los ochenta
en la ((International Conference on the Synthesis and Simulation of Living System)).
Los investigadores de la vida artificial se han dividido habitualmente en dos grupos
de opinion:

Vertiente de vida artificial dura/fuerte: consideran que la vida es un proceso que


se puede conseguir fuera de cualquier medio particular.
Vertiente de vida artificial debil: niega la posibilidad de generar un ((proceso de
vida)) fuera de una solucion qumica basada en el carbono.

Dentro de este campo, atendiendo a la primera vertiente, se utilizan muy diversas


tecnicas de la inteligencia artificial, como son los algoritmos evolutivos, programacion
genetica, inteligencia de enjambre, qumica artificial...

1.2.

DE AUTOMATA

DEFINICION
CELULAR

Los automatas celulares son redes de automatas simples conectados localmente.


Cada automata simple produce una salida a partir de varias entradas, modificando en
el proceso su estado seg
un una funcion de transicion. Por lo general, en un automata
1

- VIDA ARTIFICIAL Y AUTOMATAS

1. INTRODUCCION
CELULARES

celular, el estado de una celula en una generacion determinada depende u


nica y exclusivamente de los estados de las celulas vecinas y de su propio estado en la generacion
anterior.
Los automatas celulares son herramientas u
tiles para modelar cualquier sistema en
el universo. Pueden considerarse como una buena alternativa a las ecuaciones diferenciales y han sido utilizados para modelar sistemas fsicos, como interacciones entre
partculas, formacion de galaxias, cinetica de sistemas moleculares y crecimiento de
cristales, as como diversos sistemas biologicos a nivel celular, multicelular y poblacional.

2. EL JUEGO DE LA VIDA DE CONWAY


2.1.

DESCRIPCION

El juego de la vida de Conway es el automata celular mas conocido y mas estudiado,


dise
nado por el matematico John Horton Conway en 1970. El juego es un automata
celular bidimensional en el cual cada celda (celula) puede estar en uno de los dos estados
posibles, viva o muerta. Partiendo de un estado inicial, la simulacion va haciendo
evolucionar al automata en base a unas sencillas funciones de transicion. Una celula
va a estar en un estado concreto, el cual sera determinado u
nicamente del estado
inmediatamente anterior de las celulas vecinas y el de la propia celula, tal y como se
describio en la seccion de automatas celulares.

2.2.

REGLAS

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

Cada celula viva con dos o tres celulas vecinas vivas sobrevive a la siguiente
generacion.
Cada celula viva con ninguna, una, o mas de tres celulas vivas a su alrededor
pasa a estar muerta (soledad y superpoblacion).
Cada celula muerta con tres celulas vecinas vivas resucita en la siguiente generacion.

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 n
umeros enteros. Cada uno de los dgitos que forman estos n
umeros representa un n
umero de vecinos valido para nacer o continuar viviendo respectivamente.
3

2. EL JUEGO DE LA VIDA DE CONWAY

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

2.3.

PATRONES

Un patron es una configuracion de celulas vivas que permanece estable. Existen


basicamente tres clases de patrones en el juego de la vida de Conway.

Patrones estaticos (still lifes): Un conjunto de celulas vivas que se mantiene


estatico, sin que se produzcan nuevos nacimientos o muertes.

Figura 2.1: Patron bloque (block)

Figura 2.2: Patron barco (boat)


Patrones recurrentes (oscilators): Un conjunto de celulas vivas que no se mueve
por el mundo, pero que no es estatico, ya que se producen nacimientos y muertes,
produciendo transiciones que se repiten continuamente.
Patrones que se trasladan (spaceships): Un conjunto de celulas vivas que permanece con la misma forma, pero que se desplaza por el tablero.

2. EL JUEGO DE LA VIDA DE CONWAY

Figura 2.3: Patron parpadeador (blinker)

Figura 2.4: Patron sapo (toad)

Figura 2.5: Patron planeador (glider)

Figura 2.6: Patron nave ligera (LWSS)

3. DESARROLLO
3.1.

DE LA APLICACION

DESCRIPCION

Se ha realizado una version del Juego de la Vida de Conway utilizando el lenguaje


de programacion C Sharp. En esta version se ha incluido la funcionalidad basica del
juego junto con algunas opciones a
nadidas.

Posibilidad de ejecucion paso a paso, de cara a poder ver el resultado de una


aplicacion de las reglas a una configuracion dada, y ejecucion continuada, para
ver el desarrollo de una configuracion inicial en el tiempo.
Control de velocidad en la ejecucion continuada.
Posibilidad de configurar las reglas del juego.
Posibilidad de guardar y cargar el estado del juego, mantieniendo tanto las reglas
como la disposicion de las celulas.

La aplicacion muestra un tablero con una matriz de celulas (80x80), en principio todas
en color blanco (muertas). Bajo el tablero aparecen los botones ((Simular)) (comienza la
ejecucion continuada, cambiando el texto del boton a ((Parar))), ((Simular Paso)) (ejecuta
una vez las reglas sobre la disposicion del tablero), ((Reset)) (reinicia el tablero dejando
todas las celulas muertas), ((Salir)) (se cierra la aplicacion) y ((Reglas)) (que abre un
cuadro de dialogo donde configurar las reglas). Al la derecha de los botones aparece un
((Slider)) que permite ajustar la velocidad de ejecucion. Ademas, en la parte superior de
la aplicacion aparece un men
u con las opciones ((Archivo)) y ((Acerca de)). En ((Archivo))
aparecen las opciones de ((Cargar)) y ((Guardar)) que permiten almacenar y cargar el
estado del juego. En ((Acerca de)) se pueden ver los creditos de la aplicacion.
Para modificar el estado de una celula, para darle vida o matarla, tan solo hay que
picar sobre ella con el raton.

3. DESARROLLO

3.2.

IMPLEMENTACION

Para la creacion de la version del Juego de la vida se han implementaso de 3 clases.

La clase Juego. Contiene la logica del juego.


La clase Tablero. Contiene el codigo correspondiente a la interfaz grafica del
juego.
La clase Reglas. Contiene el codigo correspondiente a la interfaz grafica de la
seleccion de las reglas.

El codigo se concentra principalmente en la primera de las 3 clases, ya que las otras


dos tan solo implementan metodos de respuesta a eventos del sistema que realizaran
llamadas a los metodos de la clase Juego.
La clase Juego define el estado del juego de la vida haciendo uso de los siguientes
atributos:

tablero. Una matriz de valores booleanos que representan las celulas del juego.
Si el valor de una celula X,Y es true, la celula esta viva. En caso contrario
esta muerta.
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
celula para seguir viva.
reglaNacer. Una matriz que representa las condiciones que tiene que cumplir una
celula para nacer.
nPasos. Un entero que contabiliza el n
umero de pasos que se han dado en el juego.

A continuacion se describen los metodos principales.

3. DESARROLLO

getAncho(). Devuelve un entero cuyo valor se corresponde con el tama


no del
ancho del tablero.
getReglasVida(). Devuelve una matriz con las reglas que permiten seguir viviendo
a una celula. Dicha matriz es tan larga como posibilidades de vivir tiene la celula
y cada entero contenido en ella es una de dichas posibilidades. Por ejemplo, si la
matriz es [2,3] una celula puede seguir viviendo si tiene 2 o 3 vecinos vecinos. En
caso contrario muere.
getReglasNacer(). Devuelve una matriz con las reglas que permiten nacer una
celula. Dicha matriz es tan larga como posibilidades de vivir tiene la celula y
cada entero contenido en ella es una de dichas posibilidades. Por ejemplo, si
la matriz es [2,3] una celula puede nacer si tiene 2 o 3 vecinos vivos. En caso
contrario permanece muerta.
getAlto(). Devuelve un entero cuyo valor se corresponde con el tama
no del alto
del tablero.
estaViva(int x, int y). Devuelve un valor booleano. Sera cierto si la celula en la
posicion x,y esta viva y falso en caso contrario.
resetTablero(). Vuelve el tablero a la posicion inicial, con todas las celulas muertas.
setReglaVida(int[] regla). Fija las reglas para que una celula siga viva. El formato
de la matriz que se le pasa por parametro es el mismo que el de la matriz devuelta
por getReglasVida.
setReglaNacer(int[] regla). Fija las reglas para que una celula nazca. El formato
de la matriz que se le pasa por parametro es el mismo que el de la matriz devuelta
por getReglasNacer.
invierteCelula(int x, int y). Si la celula que esta en la posicion x, y esta muerta,
nace. En caso contrario, muere.
simularPaso(). El sistema recorre todas las celulas y en funcion del n
umero de
vecinos vivos que tenga cada una, modificara su estado o permanecera estable.

3. DESARROLLO

calculaVecinosVivos(int x, int y). El sistema comprueba el n


umero de celulas
vecinas vivas que tiene la celula localizada en x,y y lo devuelve en forma de
entero.
Juego(int ancho, int alto, int[] reglaVida, int[] reglaNacer). Es el constructor de
la clase. Genera un tablero de celulas de tama
no ALTOxANCHO, con las reglas
reglaVida y reglaNacer que se han pasado como parametros.

3.3.

EJEMPLOS DE FUNCIONAMIENTO

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

4. VARIANTES DEL JUEGO


4.1.

VARIANTES EN LAS REGLAS

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

/3 (estable) casi todo es una chispa


5678/35678 (caotico) diamantes, catastrofes
1357/1357 (crece) todo son replicantes
1358/357 (caotico) un reino equilibrado de amebas
23/3 (caotico) Juego de la Vida de Conway
23/36 (caotico) HighLife(tiene replicante)
235678/3678 (estable) mancha de tinta que se seca rapidamente
245/368 (estable) muerte, locomotoras y naves
34/34 (crece) Vida 34
51/346 (estable) Larga vidacasi todo son osciladores

4.2.

VARIANTES EN EL TABLERO

Se han desarrollado variantes adicionales mediante la modificacion de otros elementos del universo. Las variantes anteriores son para un universo bidimensional formado
por cuadrados, pero tambien se han desarrollado variantes unidimensionales y tridimensionales, as como variantes 2-D donde la malla es hexagonal o triangular en lugar
de cuadrada. Tambien existen variantes en el que se modifica el n
umero de estados en
los que puede estar una celula, representandose el estado con el color que se le asigna
a la misma.
10

4. VARIANTES DEL JUEGO

4.3.

11

UNA MAQUINA
DE TURING EN EL JUEGO DE LA VIDA

Nos ha llamado la atencion la implementacion de una maquina de turing en el juego


de la vida de Conway, mediante la construccion de las diferentes partes de la maquina
de turing creando subsistemas con patrones controlados que van reproduciendo el comportamiento esperado. A continuacion podemos ver una captura de la maquina en
funcionamiento.

Figura 4.1: Maquina de turing en el juego de la vida

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

12

También podría gustarte