viernes, 12 de octubre de 2007

El mundo de los autómatas celulares





Allá por los años sesenta, los cuales por los enormes avances tecnológicos que ha habido parecen muy distantes y que sin embargo no están tan remotos, cuando Windows aún no existía, cuando para elaborar un documento oficial se requería de una máquina de escribir, cuando las primeras computadoras caseras empezaban a salir a la venta más como un juguete de entretenimiento para los programadores aficionados a divertirse con el lenguaje BASIC que para ser usadas por el público en general, la baja resolución de los gráficos de video y la muy limitada capacidad de colores disponibles en los monitores permitió en aquella época el desarrollo explosivo de un interesante juego conocido como el "Juego de la Vida", nombre que le fue dado por su creador, el prolífico matemático inglés John Conway. La naturaleza limitada de las funciones gráficas en aquél entonces era tal que más que poder cambiar los colores individuales de cada puntito en la pantalla (pixel) del monitor de colores de la computadora, lo que se podía cambiar era el color del bloquecito de puntos que era del tamaño necesario para contener un carácter alfabético. La posición de cada bloquecito en la pantalla (no de cada pixel) era especificada por un sistema de coordenadas rectangulares (x, y) similar al sistema de coordenadas cartesianas que se usa en la geometría analítica en donde x y y tenían que ser números enteros, sin provisiones para números negativos. Hoy en día, cuando ya no es posible programar las computadoras en lenguaje BASIC para montar en la pantalla una retícula rectangular en la cual se pueda llevar a cabo el "Juego de la Vida", tal cosa no es necesaria porque afortunadamente existen ya muchas implementaciones de programas ejecutables bajo Windows y Linux en los cuales se puede llevar a cabo el "Juego de la Vida" tal y como fue originalmente concebido.

El "Juego de la Vida" es sencillísimo de jugar, no se necesitan dos personas para ello, como tampoco se necesita algún grado universitario o algún conocimiento propio de las escuelas de enseñanza media; lo puede jugar hasta un estudiante de escuela primaria. El campo en donde se lleva a cabo dicho juego es un arreglo rectangular como el que se muestra en la siguiente figura:





Dentro del pequeño universo del "Juego de la Vida", en su versión más elemental cada cuadrito puede ser ocupado por una célula que puede tener únicamente dos estados: puede estar "viva", o puede estar "muerta". Si está muerta, desaparece del universo tomando el color de su entorno. Pero si está viva, entonces tiene un color característico que la distingue de manera única en el tablero. Aquí utilizaré el color amarillo para denotar una célula viva.

El Juego de la Vida es único en su género porque el jugador, en vez de estar compitiendo en contra de alguien o en inclusive en contra de sí mismo, lo único que tiene que hacer es sentarse para ver cómo va evolucionando el juego al ir pasando una configuración de células de una generación a otra.

Las reglas para jugar el Juego de la Vida, las cuales en un momento dado se aplican por igual a todas las "células" del tablero, son muy sencillas. Son las siguientes:


LAS REGLAS DEL JUEGO


1) Una célula "viva" con menos de dos células vecinas "vivas" muere, como si por la tristeza de estar solitaria.

2) Una célula "viva" con más de tres células vecinas "vivas" muere, como por efecto de la sobrepoblación circundante.

3) Una célula muerta con tres células vecinas "vivas" vuelve a la vida.

4) Una célula "viva" con dos o tres células vecinas "vivas" pasa como está a la siguiente generación.

A continuación se muestra el efecto de la aplicación de las reglas al pasar de una generación a la otra:




Con estas reglas, empecemos con un "estado inicial" como el que se muestra a continuación:





Al pasar a la segunda generación el tablero tomará el siguiente aspecto:





Y al pasar a la tercera generación tendremos lo siguiente:





Tras esto, al pasar a la cuarta generación la situación será:





Y al pasar a la quinta generación:





Hay otros estados iniciales que producen efectos mucho más interesantes. Uno de ellos es el que corresponde al deslizador (glider), que produce un patrón que se va desplazando a través del tablero:




A continuación se muestra con una secuencia de pasos lo que sucede con el deslizador conforme vamos pasando de una generación a otra:



A continuación tenemos otra configuración que actúa de modo semejante al deslizador, excepto que en esta la configuración se va desplazando horizontalmente de izquierda a derecha:



Una configuración que también produce cosas interesantes en el tablero es el tetrómino-T:





Como lo indica el dibujo anterior, después de varias generaciones interesantes, el pequeño tetromino-T terminará convirtiéndose en una "luz de semáforo vial".

A continuación se muestra otra configuración que produce variaciones interesantes, el pentómino-R:





Muchas configuraciones en el tablero conducen a lo que podría clasificarse como un estado de muerte total, en el cual el tablero queda completamente vacío sin posibilidad alguna de que algo pueda volver a suceder en generaciones sucesivas. A continuación tenemos un ejemplo de ello:




No es necesario contar con una computadora poderosa para llevar a cabo el Juego de la Vida, ni siquiera es necesario contar con una computadora. Cualquier estudiante de primaria puede hacer su propio "Juego de la Vida" con tan solo una cartulina en la cual ha dibujado un arreglo rectangular cuyos espacios sean lo suficientemente grandes para contener algo del tamaño de una moneda o un tapón de refresco. Una célula "viva" puede ser una moneda puesta en cada uno de los espacios que se quieran poblar con células. Al "morir" una célula al pasar de una generación a otra, simplemente se remueve la moneda de la cartulina.

Hemos supuesto hasta aquí que el Juego de la Vida empieza con una configuración inicial de un solo objeto "compacto". Sin embargo, nada nos impide poner varios objetos en el tablero, y conforme el juego va pasando de una generación a otra cada uno de los objetos se va transformando y se va moviendo de un modo independiente, lo cual dá lugar a posibilidades muy interesantes. Dos objetos se pueden encontrar y pueden terminar transformándose en una nueva forma de "vida". O pueden terminar aniquilándose. O tal vez terminen pasando el uno a través del otro sin mayores consecuencias. A continuación tenemos un tablero en el cual se han puesto varios objetos con la intención de ver qué es lo que ha ido sucediendo después de varias generaciones:





A continuación tenemos un tablero en el cual se han puesto varios objetos. La imagen original es un archivo con extensión gif, razón por la cual puede mostrar una secuencia animada de pasos al ir pasando de una generación a otra (la secuencia incluye once generaciones):





Las reglas que sugirió Conway para el Juego de la Vida no son las únicas. Podemos perfectamente diseñar nuestras propias reglas, nosotros podemos ser los creadores de nuestro propio "mini-universo". Si el estado de cada célula está determinado por el estado actual de la célula y por el valor de los estados de las células que la rodean, o sea determinado por una retícula de 3 por 3 bloques, y si dicho estado puede tener dos valores (vivo o muerto), entonces habrá 512 (29) configuraciones iniciales posibles. Esto quiere decir que la cantidad posible de reglas será de 2512 reglas. En el sistema decimal (base 10, en lugar del sistema binario de base 2 en el cual estamos basando la exponenciación) esto sería un número con 154 lugares decimales. Esto es mucho más que el famoso número googol (10100), el cual por cierto no es una referencia a ningún escritor ruso. Habiendo tantas posibilidades disponibles, se dá por hecho de que las variaciones del Juego de la Vida de Conway no han empezado ni siquiera remotamente a ser agotadas.

Los patrones que van surgiendo conforme cierta configuración inicial va pasando de una generación a otra no solo pueden ser muy interesantes. También son completamente impredecibles. No existe forma alguna de poder predecir de antemano lo que vaya a surgir, excepto echar a andar el juego. Aunque al nivel de cada "célula" las reglas están perfectamente definidas y podemos predecir el estado que tomará cada célula individual al pasar de una generación a otra, no hay forma en la cual podamos predecir la forma que adquirirá un conjunto de células, tomadas en conjunto, al ir pasando de una generación a otra. Aquí podemos establecer una comparación interesante con nuestros propios cerebros. Sabemos que la "célula básica" de un cerebro es una neurona. Sabemos exactamente cómo trabaja cada neurona, sabemos cómo su "respuesta"" neural depende de los valores que vayan adquiriendo las señales a su entrada (inclusive existe ya en ciencias computacionales una teoría matemática de la redes neurales, la cual tras el estancamiento que sufrió a causa del libro Perceptrons de Marvin Minsky y Seymour Papert quienes se enfocaron únicamente en redes neurales lineares, cobró un auge espectacular con el descubrimiento de las redes neurales no-lineares capaces de "aprender" tras un proceso repetitivo de entrenamiento). Pero no hay forma alguna de poder predecir, a partir de un conjunto grande de neuronas, los patrones a gran escala que irán emergiendo conforme va transcurriendo el tiempo. Estos patrones que se forman a gran escala no pueden ser reducidos a una simple fórmula que los pueda predecir. Esto es lo que en ciencias computacionales se conoce como irreductibilidad.

El Juego de la Vida, pese a su deceptiva sencillez, no apareció publicado por vez primera en alguna de las publicaciones científicas oficiales de renombre (pese a que terminaría detonando una revolución en la investigación de autómatas celulares que hoy en día merece estudios serios dignos de aparecer en tesis de Maestrías y Doctorados). Fué anunciado al mundo por vez primera en una revista popular, Scientific American, en su edición del mes de octubre de 1970, bajo la columna "Mathematical Games" de Martin Gardner.

Se puede encontrar más información acerca del juego de la vida dentro de Wikipedia en el siguiente enlace:

http://en.wikipedia.org/wiki/Conway's_Game_of_Life

En cualquier momento, el estado total no de cada célula individual sino del tablero entero (el cual supondremos finito) en el cual se lleva a cabo el Juego de la Vida está especificado por los valores que en un momento dado tiene cada célula del tablero. Y aún en un tablero extremadamente pequeño, la cantidad posible de estados que puede tener el tablero es enorme. Tomemos por caso un tablero de únicamente 4 por 4 bloques, los suficientes para meter allí una configuración inicial pequeña como el "deslizador" descrito arriba. Son 16 bloques en total. Si cada célula puede tomar uno de dos valores (pudiendo estar "viva" o estar "muerta"), entonces la cantidad total de combinaciones posibles es 216, o sea, más de 65 mil estados posibles. Si extendemos esto hacia un tablero formado con 5 por 5 bloques, entonces la cantidad total de estados posibles ascenderá a 225, o sea a más de 33 millones de estados. Para un tablero más grande, digamos de 7 por 7 bloques, la cantidad total de estados posibles se vuelve tan grande que para poder escribir dicho número se requieren quince cifras. Sin embargo, aunque para un tablero de tamaño regular (digamos de unos 16 por 16 bloques) la cantidad de combinaciones posibles se vuelve astronómicamente grande (infinitamente grande en nuestros términos humanos), una vez que el estado total del tablero ha sido especificado el estado que tomará el tablero al pasar a la siguiente generación estará rígidamente prefijado por las reglas. No existe ninguna posibilidad de que haya "libre albedrío" en ningún autómata celular, por complejo que sea.

De este modo, si para cierto tablero finito hacemos un catálogo de todos los estados posibles, en el cual cada estado se designe como q(n) siendo n el número que le corresponde a cada estado en nuestra lista ordenada, la evolución del autómata será lineal al ir pasando de una generación a otra (de un estado a otro). A partir de un estado inicial, los siguientes estados estarán inflexiblemente prefijados. Por ejemplo:

q(237) → q(34721) → q(79) → q(8933458) → q(695)

Esto es lo que podríamos llamar un autómata celular autónomo, el cual es incapaz de interactuar con el mundo exterior al tablero.

Sin embargo, hay autómatas (no necesariamente celulares) que en respuesta a señales recibidas del exterior pueden tomar una de varias rutas posibles, según el valor de la señal recibida del exterior y según el estado en el que se encuentre el autómata. Esto es precisamente lo que se estudia en ciencias computacionales bajo la materia teoría de autómatas. En su nivel más básico, a un autómata de este tipo lo podemos alimentar del exterior con una señal que puede tomar únicamente uno de dos valores, cero (0) ó uno (1). De este modo, al pasar de una generación a otra, un autómata puede adquirir uno de dos estados diferentes dependiendo de la señal que esté recibiendo del exterior. A continuación se muestra un autómata que partiendo del estado q(1) pasará en la siguiente generación al estado q(2) si la señal de entrada que está recibiendo del exterior es 0, ó al estado q(3) si la señal de entrada es 1:



Con todo lo que se ha señalado arriba, el Juego de la Vida que acabo de describir es en realidad uno muy primitivo para nuestros días. Podemos hacer el juego mucho más interesante si en vez de dos estados cada célula puede tomar no dos sino varios valores, como lo muestran las células que están posicionadas en el siguiente tablero:



Si una célula puede adquirir varios estados, entonces las posibilidades aumentan dramáticamente. Las reglas que podemos formular para que cada célula pueda pasar de un estado a otro crecen en forma espectacular. En el siguiente enlace podemos encontrar un Juego de la Vida en acción en el cual las células del autómata celular pueden adquirir varios estados:

http://neuromusic.soc.plymouth.ac.uk/camus/tutorial/camus.htm

Pero esto no es lo único que podemos hacer para convertir al juego de la vida en un asunto interesante. No hay razón alguna para que estemos limitados a una cuadrícula plana. ¿Por qué no llevar esto un paso más hacia adelante? ¿Por qué no ir hacia un Juego de la Vida tridimensional? Esto es precisamente lo que se ha hecho, y es un campo activo de investigación alrededor del mundo. A continuación tenemos la representación de la simulación de un Juego de la Vida tridimensional:





En este caso, la configuración inicial consta de cinco células "vivas", cada una de las cuales puede tomar por lo menos uno de cuatro estados (esto lo sabemos porque hay cuatro colores diferentes en el cubo reticular).

Existen muchísimos programas ejecutables para computadora (descargables gratuitamente de Internet) con los cuales mis lectores pueden empezar a experimentar con el "Juego de la Vida". Todo lo que tienen que hacer es teclear la hilera "game of life" (con las dobles comillas) en la caja de búsqueda de Google o algún otro motor de búsqueda similar, y encontrarán cientos de sitios en donde pueden obtener la implementación del juego de la vida que más les guste.

Las dos preguntas que tal vez se estarán haciendo algunos de mis lectores son:

1) ¿Cuáles son las reglas que determinarán cuál será el estado que tomará cada célula individual al pasar de una generación a otra?

2) ¿Cuáles son las configuraciones iniciales que se usarán para empezar con la evolución de un Juego de la Vida de varios estados, digamos, siete?

La respuesta a esto agradará a muchos. Cada quien es completamente libre de crear y especificar tanto sus propias reglas como empezar una simulación con todas las configuraciones que se le vengan a la mente. Desde esta perspectiva, cada quien puede ser el creador (o el descubridor) de su propio "universo" interesante; cada quien tiene la posibilidad de descubrir algo espectacular que nadie anteriormente había descubierto. Aquí, hasta el más pequeño niño de una escuela primaria está en igualdad de condiciones con un señor que tenga un Doctorado o un Post-Doctorado en Matemáticas, porque la cruda realidad es que no hay forma de anticipar lo que un autómata celular operando bajo ciertas reglas producirá después de varias generaciones. La única forma de saberlo es montar el escenario y echarlo a andar. Sobre esto último, hay algunos científicos-filósofos como Edward Fredkin que han propuesto seriamente la idea de que el Universo en el que vivimos es una computadora, un autómata celular gigantesco que está siendo utilizado por alguien para llevar a cabo una computación gigantesca de la única manera en la que puede conocerse el resultado final del experimento. Si hemos de darles la razón a estos señores, la vieja pregunta sobre si nuestras existencias tienen un propósito sonaría a un chiste de la clase "la buena noticia y la mala noticia". La buena noticia sería que nuestras vidas sí tienen un propósito. La mala noticia es que el propósito es ayudarle a alguien a computar el número π (pi) con una infinidad de cifras significativas. (Una salida a esta pesimista proposición es la de que un ser capaz de crear el Universo ciertamente tiene que estar por encima de nuestras limitaciones físicas de tiempo y espacio, conocería de antemano todo el pasado, el presente y el futuro, y conociendo el futuro no necesitaría del auxilio de un autómata celular tan complicado sólo para comprobar un resultado que ya conoce de antemano.)

La variedad de posibilidades de lo que puede ocurrir en una versión multi-dimensional multi-estados del Juego de la Vida nos lleva eventualmente y en forma directa a considerar una posibilidad intrigante: ¿Es posible especificar un autómata celular que, después de cierto número finito de pasos, sea capaz de reproducirse a sí mismo en el tablero? Con esto queremos decir un autómata que después de una secuencia finita de generaciones quede al final en el tablero junto con una copia idéntica del mismo producida a partir del patrón original del mismo.

Aquí es donde entra uno de los matemáticos más brillantes que haya producido el siglo XX, el húngaro John von Neumann (se pronuncia "noiman"). Se trata del mismo hombre cuya ingeniosa idea de almacenar dentro de la memoria de una computadora el mismo programa (conjunto de instrucciones a nivel de máquina) usado para el procesamiento de datos, permitiendo con ello la posibilidad de modificar no sólo los datos manejados por la computadora sino inclusive las instrucciones del mismo programa con el que está corriendo, posibilitó el desarrollo de prácticamente todas las computadoras que están siendo usadas en la actualidad, incluyendo las computadoras caseras en las cuales mis distinguidos visitantes están viendo esta página, a grado tal que la arquitectura de las computadoras es conocida como la arquitectura von Neumann. Él fue quien, además de sus numerosas contribuciones teóricas al campo de las matemáticas, estuvo detrás del desarrollo de una de las primeras computadoras electrónicas, la computadora EDVAC. A continuación lo tenemos en una foto precisamente al lado de la computadora EDVAC:





En una época en la que no existían las computadoras, pero auxiliado por su penetrante visión, e intrigado por la posibilidad de que, en principio, una máquina pudiese reproducirse a sí misma, von Neumann empezó el último gran proyecto de su fructífera vida, decidió investigar si, en principio, tal cosa era posible teóricamente. No estaba interesado en los detalles "sucios" para la implementación de esto en lo que se refiere a tuercas y tornillos, en lo que estaba interesado era en la lógica teórica de que un autómata pudiera poder llevar a cabo tal hazaña. Su esfuezo culminó con un manuscrito que nunca llegó a ver publicado en vida, el Theory of Self-Reproducing Automata, de donde se reproduce algo que aparece al principio:

"los organismos vivientes son agregados muy complicados de partículas elementales, y por cualquier teoría razonable de probabilidad o termodinámica, altamente improbables. Que ellos ocurran en el mundo pese a todo es un milagro de la primera magnitud; la única cosa que remueve, o mitiga, este milagro es que se reproducen a sí mismos, a partir de allí las reglas de probabilidad no se aplican, y habrá muchos como ellos, al menos si el entorno es razonable."

Sobre esto, es interesante observar que un solo virus (la forma más pequeña de vida) como el virus de la gripe o el virus del SIDA (del cual podrían caber un millón de ellos en la punta de un alfiler) carece de los elementos necesarios para poder reproducirse a sí mismo. Para poder hacer copias de sí mismo, es necesario que el virus infecte una célula, injertando su propio ADN dentro de la célula y reprogramándola para que comience a hacer copias del virus en lugar de hacer copias de la misma célula, lo cual destruye la célula huésped. Un virus es necesariamente una forma de vida parasítica, a grado tal que algunos investigadores se rehúsan a identificarlo como una forma de vida. Si consideramos al virus como un autómata (biológico) capaz de llevar a cabo ciertas funciones básicas como infectar a una célula o salir de su capa protectora al no necesitarla ya tras llevar a cabo la infección, claramente el virus no podría considerarse como un autómata auto-reproducible al no contener dentro de sí todo lo que necesita para poder hacer una copia completa de sí mismo, aunque de cualquier modo seguiría siendo un autómata al igual que el juego de la vida.

Como ya se dijo, Von Neumann, como buen matemático teórico y sabedor de que las computadoras que ya había concebido en su mente aún no existían, estaba interesado en investigar la lógica necesaria para que pudiera llevarse a cabo la reproducción de los organismos vivientes. Él no estaba interesado ni tenía las herramientas para construír una máquina al nivel molecular o genético capaz de reproducirse a sí misma. Y para ello, inventó precisamente lo que hoy conocemos como un autómata celular, de lo cual el "juego de la vida" de Conway es un ejemplo sencillo de entender.

Como ya se mencionón, cuando von Neumann emprendió la resolución del problema las computadoras caseras no existían, es más, ni siquiera existían. No había monitores a colores, ni siquiera había monitores en blanco y negro. Para poder comunicarse con las primeras computadoras que estaban siendo creadas en aquél entonces, había que alimentar los datos en una cinta perforada que contenía las instrucciones a ser procesadas, y la respuesta dada por la computadora al mundo exterior era también a través de una cinta perforada. Desde esta perspectiva, un autómata auto-reproducible sería un conjunto de instrucciones en la cinta de entrada conteniendo la información suficiente para producir una copia completa de sí mismo posibilitando el proceso de auto-copiado de manera indefinida.

Cualquier ignorante podría afirmar que la instrucción de "Copiar" en el menú de comandos de una ventana de Windows permite llevar a cabo una cantidad ilimitada de copias de cualquier archivo, incluyendo el mismo archivo en el cual están contenidas todas las instrucciones de computadora para permitir llevar a cabo el proceso de copiado. Sin embargo, esto no permitiría clasificar ni remotamente al sistema operativo Windows como un autómata auto-reproducible, porque para que el proceso se pueda llevar a cabo se requiere forzosamente de la participación de un operador humano. Es debatible sobre si el sistema combinado computadora-Windows-humano podría ser clasificado como un autómata auto-reproducible, sin embargo aunque así fuera ello sería algo muchísimo más complejo que el autómata multi-estados que sería propuesto por von Neumann. Y la meta en el problema es que el autómata tenga lo suficiente para poder reproducirse dentro de su propio "universo" sin necesidad de recibir auxilio externo.

Pese a la complejidad del problema, Von Neumann logró resolver la parte teórica del problema; descubrió que sí era posible definir, en principio, un autómata celular en el cual un "ente" fuese capaz de reproducirse, produciendo una copia idéntica al original. Desafortunadamente, no vivió para ver publicado su trabajo, y el manuscrito que dejó tuvo que ser suplementado por los colaboradores que le sobrevivieron.

Para la resolución del problema, Von Neumann seleccionó no un autómata celular en el que cada una de las células pueda tener dos estados (viva o muerta), sino un autómata celular en el que fuesen posibles 29 estados. Con tantos estados posibles, no se requiere mucha imaginación para ver que la cantidad de combinaciones posibles es extraordinariamente grande. Resta decir que, hasta el día de hoy, no ha sido posible simular inclusive en las más poderosas computadoras un autómata capaz de reproducirse de la manera como lo definió Von Neumann. Sin embargo, el aumento en la potencia de las computadoras ha sido tal que parece no estar lejano el momento en el que tengamos una simulación virtual en la que un autómata pueda reproducirse a sí mismo, tal y como Von Neumann predijo teóricamente que ocurriría si se tiene a la mano un conjunto básico de condiciones. Las implicaciones filosóficas de un acontecimiento de esta naturaleza serían enormes; sería la primera ocasión en la historia en la que el hombre demostraría haber logrado diseñar algo capaz de reproducirse por sí mismo, algo cuyo descendiente, investido con todos los atributos del modelo original, también sería capaz también de reproducirse, con el proceso de multiplicación susceptible de continuar indefinidamente hasta agotarse por falta de espacio (al igual que como ocurre en el mundo real). Un obstáculo que tal vez podría ser solventado es el hecho de que el autómata de von Neumann de 29 estados no necesariamente es el autómata celular más sencillo capaz de reproducirse a sí mismo. Posiblemente baste un autómata celular de 25 estados, o tal vez uno de 20. No existe una demostración teórica que demuestre que 29 estados es la cantidad absoluta mínima de estados requeridos para materializar a un autómata auto-reproducible en el universo interno de una computadora. De cualquier modo, aunque por un buen golpe de suerte auxiliado por la visión de von Neumann resulte ser que no es posible especificar ningún autómata auto-reproducible en el que no haya por lo menos 29 estados, la aparición de nuevas super-computadoras posiblemente logren materializar esta predicción teórica de von Neumann.

¿Veremos en nuestras vidas el cumplimiento de lo vaticinado por von Neumann en referencia a la posibilidad teórica de poder diseñar un autómata auto-reproducible? En este momento, no hay forma de saberlo, excepto la certeza de que cada día que pasa posiblemente nos está acercando más y más hacia la respuesta final.


ALGUNAS REFERENCIAS:

Hay muchas referencias en Internet acerca del "juego de la vida", gran parte de ellas localizables bajo las frases "game of life" y "cellular automata". También hay muchos programas que se pueden descargar gratuitamente y que pueden correr prácticamente en cualquier computadora que permiten la simulación de autómatas celulares de los más diversos tipos, permitiéndole al usuario especificar los tipos de células con las cuales iniciará el programa, la rapidez con la cual se pasará de una generación a otra, etc.

Un buen programa que puede ser descargado y usado de inmediato sin necesidad de instalación previa en una computadora (el cual funciona por medio de un applet escritos en el lenguaje de programación Java que la gran mayoría de las computadoras está preparada para ejecutar de inmediato a través de Internet) es el siguiente (no olviden de oprimir con el cursor del mouse el botón en la pantalla que dice "Start MJCell"):

http://www.mirekw.com/ca/mjcell/mjcell.html

Existen varias implementaciones tridimensionales del Juego de la Vida de John Conway. Empezaré mencionando una muy buena que podemos comenzar a utilizar de inmediato en cualquier computadora casera de mediana potencia:

http://www.cse.sc.edu/~bays/d4d4d4/index.html

La "guía del usuario" de este autómata celular tridimensional se puede consultar en el siguiente enlace relacionado:

http://www.cse.sc.edu/~bays/d4d4d4/guide.html

En los siguientes enlaces se puede obtener más información sobre autómatas tridimensionales:

http://www.mathworks.com/matlabcentral/files/4892/Life3D.png

http://www.rudyrucker.com/blog/2004/12/02/

http://www.ctechnet.com/ca3d/ca3dapplet.htm

Otro programa mucho más completo aún, de la empresa Alloy Software Consulting Services, el cual permite no sólo el modelaje de autómatas celulares tridimensionales sino inclusive el modelaje de redes neurales bi-dimensionales y tri-dimensionales, el cual se puede descargar gratuitamente de Internet y el cual se puede instalar en prácticamente cualquier computadora corriendo Windows XP (o Windows Vista) está disponible en el siguiente enlace:

http://www.alloysoftware.com/automata.asp

El autómata celular tridimensional puede ser llevado aún más lejos. Puede ser llevado de la tercera dimensión a la cuarta dimensión. Y aunque esta extensión es más matemática que geométrica, dada nuestra incapacidad de poder visualizar a través de nuestros sentidos un universo de cuatro dimensiones, es posible obtener alguna vaga idea cómo operaría un autómata celulcar de cuatro dimensiones en el siguiente enlace:

http://eric_rollins.home.mindspring.com/gpgpu/index.html

En el siguiente enlace es en donde podemos jugar la versión sobre un toroide (una superficie en forma de dona) del Juego de la Vida. Las reglas del juego siguen siendo las mismas, lo único que cambia es el hecho de que el tablero se cierra sobre sí en una superficie finita en lugar de la superficie teóricamente infinita que ofrece el tablero rectangular:

http://www.javaview.de/games/PaLife.html

Ha habido ya numerosos intentos de implementar el autómata celular de 29 estados de John von Neumann. Hasta la fecha, ninguno de ellos ha fructificado en encontrar la combinación mágica de reglas y configuración inicial de aquél autómata celular que pueda ser capaz de reproducirse creando una copia completa de sí mismo. El siguiente enlace muestra la implementación de uno de esos esfuerzos (llevada a cabo con la intención de enseñar a los usuarios el aprendizaje de la plataforma de código abierto para Internet conocida como OpenLazlo) :

http://www.donhopkins.com/drupal/node/41

El siguiente enlace Wikipedia proporciona más información sobre la computadora EDVAC en la que trabajó von Neumann:

http://es.wikipedia.org/wiki/EDVAC

Sobre el trabajo pionero de John von Neumann en el cual resolvió la parte teórica del problema sobre la factibilidad de poder construír un autómata que sea auto-reproducible, afortunadamente gracias a Internet no es necesario ir a una biblioteca para echarle un vistazo al libro elaborado en base a la solución manuscrita que dejó von Neumann para resolver el asunto sobre si es posible construír un "autómata" que sea capaz de reproducirse a sí mismo (de cualquier manera, se trata de un libro que no es fácil de encontrar en la mayoría de las bibliotecas públicas en México). Podemos consultar el libro "Theory of Self-Reproducing Automata" en el siguiente enlace (aquí hago la sugerencia de entrar en el índice "index" para poder tener acceso a todos los capítulos del libro):

http://www.walenz.org/vonNeumann/page0001.html

El siguiente enlace proporciona una implementacion en el juego de la vida de la hipotética Maquina Turing tan usada para la demostración de importantes teoremas en ciencias computacionales:

http://rendell-attic.org/gol/tm.htm

Sobre los argumentos filosóficos de que el Universo es una computadora, propuesta inicialmente por Edward Fredkin, podemos encontrar más información en apoyo de esta idea en el siguiente enlace que contiene un trabajo publicado por Plamen Petrov:

http://digitalphysics.org/Publications/Petrov/Pet02a2/Pet02a2.htm

En una página montada por el Profesor Cliff Reiter de la Universidad de Lafayette, tenemos la simulación de un autómata celular que opera sobre las reglas de algo que llamamos lógica borrosa (fuzzy logic), en las cuales un estado de una célula no está totalmente definido sino que puede tener un grado parcial de pertenencia entre dos o varios estados (esto requiere explicación más a fondo que escapa los alcances de esta bitácora). Para quienes quieran ver la animación de este autómata "borroso", lo pueden hacer yendo al siguiente enlace:

http://ww2.lafayette.edu/~reiterc/mvp/fuzz_auto/fuzzlife.html