Читать книгу Jugando a ser Dios - Manuel López Michelone - Страница 8
Capítulo ii
John von Neumann y los autómatas celulares
ОглавлениеSiempre me he preguntado si un cerebro como el de Von Neumann no es un indicativo de una especie superior al hombre.
Hans Bethe
Uno de los científicos más influyentes del siglo pasado fue, sin duda, John von Neumann. Nacido en Budapest el 3 de diciembre de 1903, fue reconocido a muy corta edad como un prodigio, pues desde entonces, por ejemplo, podía hacer divisiones en su cabeza con dos números de ocho cifras. Entretenía a amigos y visitantes de sus padres memorizando columnas de nombres, direcciones y teléfonos. Según una anécdota, en una ocasión su madre, que estaba tejiendo, se detuvo de pronto y miró hacia la nada. El pequeño John le preguntó: “¿Qué estás calculando?”
A los 20 años Von Neumann elaboró una definición formal de los números ordinales y a los 25 ya era un matemático de primer orden que resolvía problemas de mecánica cuántica a través de una teoría vectorial. De hecho, fue él quien descubrió que los estados de los sistemas cuánticos podían ser representados por vectores en un espacio n-dimensional. Para 1931, año en el que emigró a Estados Unidos, era uno de los matemáticos más importantes del planeta.
Von Neumann trabajaba en muchos temas. Su capacidad era notable y en algún momento, después de la Segunda Guerra Mundial, se preguntó acerca del fenómeno de la vida. Una característica que parecía definirla era esa capacidad de autorreproducción que comparten los seres vivos. ¿Sería esto lo que diferencia a la vida de la no vida? Von Neumann pensó entonces en la posibilidad de que una máquina creara un duplicado de sí misma. ¿Habría una limitación en este sentido?, ¿alguna contradicción de estos sistemas que él estaba pasando por alto? ¿Qué tal pensar en una máquina que creara una más compleja que la original? ¿Sería eso factible? Y con ese mismo criterio habría que considerar que si esto fuese posible, la segunda máquina podría crear una más compleja, y así sucesivamente. La idea era absolutamente fundamental y Von Neumann, que trabajaba incansablemente, decidió dar una respuesta a estas interrogantes.
John von Neumann.
Su primer intento en el campo de la vida artificial fue la concepción de una máquina, una especie de robot, que podría hacer una copia de sí mismo. Von Neumann la describió como un robot que flota en un lago; también flotan piezas y componentes que permiten a éste construir otro robot. Él pensaba entonces que se podía diseñar un robot —al menos en teoría— que se copiara a sí mismo. Desde luego las dificultades tecnológicas de los años cincuenta del siglo pasado (e incluso hoy día) hacen imposible aún que exista físicamente semejante robot autorreplicable, pero en esencia el problema estaba planteado. A esto se le llamó el modelo cinemático, propuesta de quien terminara la formulación de Von Neumann: Arthur W. Burks.
Aunque Von Neumann podía demostrar la capacidad de su modelo para crear un robot que fuese copia de sí mismo, no estaba conforme con que su robot imaginario tuviera que buscar cada pieza necesaria para replicarse en una sopa de componentes. Por ello, la sugerencia de Stanislaw Ulam, otro fantástico matemático, de crear un modelo en dos dimensiones, de células, con reglas que le permitiesen crecer, desarrollarse y autorreproducirse, parecía una mejor opción. De esta manera, el problema se simplificaba a un universo bidimensional en donde las células luchan por crecer y multiplicarse bajo ciertas reglas perfectamente conocidas.
Ulam estaba fascinado con la idea de los patrones y compartía los intereses de Von Neumann. Dice Ulam en su autobiografía:2 “Cuando tenía cuatro años estaba viendo en el piso un tapete oriental que tenía una serie de patrones visuales dibujados. Recuerdo la figura de mi padre, alto como una torre, parado a mi lado, que sonreía. Él sonríe —supuse— porque piensa que soy un niño pequeño, pero yo sé que éstos son patrones curiosos”.
Ulam indica que probablemente éstas no fueron sus palabras exactas, pero agrega: “Yo sentí que, definitivamente, sabía algo que no sabía mi padre. Tal vez incluso sabía más al respecto que él”.
Stanislaw Ulam.
Ulam, usando las novedosas computadoras de Los Álamos, se divertía inventando juegos de patrones que, dadas ciertas reglas, cambiaban con el tiempo. A estos patrones los llamó “objetos geométricos creados recursivamente”. Cabe decir que la recursión es la forma en la cual se especifica un proceso basado en su propia definición, la cual aparentemente no parece tener sentido en algunos casos, pero que es muy útil usada en matemáticas y cómputo,3 por ejemplo.
Encontró que los patrones eran muy sofisticados, y le propuso a su amigo John von Neumann que “construyera” un universo abstracto para su análisis de las máquinas autorreplicantes. Desde luego que este “universo” en miniatura debía estar supeditado a reglas muy claras, inmutables y lo suficientemente sencillas para considerarlas como las leyes de la física en este universo alterno. Con ello podría demostrarse la idea del desarrollo de una máquina que se creara a sí misma, sin tener que pasar por la problemática de la construcción real.
La idea le llamó poderosamente la atención a Von Neumann, que desarrolló un plano en una gran cuadrícula como si se tratase en un mundo bidimensional. A esto Ulam le llamaba “juegos de autómatas”, en donde cada patrón estaba constituido por celdas acomodadas de cierta manera en un tablero cuadriculado que en principio no tenía fronteras. Se aplicaban las reglas definidas y se veía la siguiente generación de las “células”. Dichas reglas en general se basaban en observar las celdas contiguas a la celda de una célula y aplicarles una operación que bien podía duplicar el resultado o quizás aniquilarlo. Así pues, la suerte de las células se definía por los estados de las células vecinas, las que estaban adyacentes.
La ventaja de este enfoque es que su estructura de reglas era muy simple. Von Neumann adoptó este tablero de celdas ilimitado; en ellas podría haber cualquier número de estados y su distribución inicial era un patrón, una máquina de dichas celdas.
En poco tiempo el científico llegó a elaborar una concepción completa. Aquí, las células podían tener hasta 29 estados. Un estado podría tener un espacio vacío (donde podría ir una célula). Los otros 28 estados eran diversas formas que podían adoptar las células en ese espacio de dos dimensiones.
Lo que trataba de hallarse era un mecanismo que permitiera la autorreplicación. Las células podrían tener una descripción codificada de su propia autoorganización, que actualmente sería considerada como un mapa genético. En este mapa habría un constructor universal, y con base en las ideas de Turing sobre la máquina universal que había concebido, se podía coordinar todo este proceso.
La reproducción, de acuerdo con Von Neumann, sería de la siguiente manera: un patrón leería su propio plano, su propio mapa genético —valga la expresión. Éste mandaría la información a su constructor universal. Este constructor tendría una especie de brazo, una península de células activas que se movería creando nuevas células. Una nueva copia de este patrón se autorreplicaría casi de la misma forma en que se crean las imágenes en un televisor analógico, línea por línea.
Von Neumann no tuvo posibilidades reales de comprobar si su autómata podía hacer efectivamente la tarea de autorreproducción, pero en su mente estaba claro que eso era literalmente una obviedad. Considerando que las computadoras de la época no eran muy avanzadas, simplemente no había manera de programar sus ideas; sin embargo, ahora esto ya es posible. A pesar de la complejidad del sistema de autómatas celulares de Von Neumann, ya existen programas que permiten probar las ideas en cuestión.4
Pero hay más dificultades: los organismos vivos son finitos y se reproducen en un tiempo finito. El problema con los autómatas de Von Neumann es que el constructor universal sigue reglas muy precisas y, por ende, genera una réplica de la máquina original sin siquiera saber lo que está haciendo y no sabe cuándo detenerse, lo que causa una regresión infinita. Por ello, él decidió incorporar un mecanismo extra, el cual llamó “unidad supervisora”, que ocasiona una dificultad inesperada: hace más compleja aún a la máquina por replicar. De esta manera se evita la replicación infinita, pues el mapa describe al constructor universal y a la unidad supervisora. Cuando hay que hacer un nuevo mapa, éste es su propio mapa. Ahora entonces se interpreta de dos formas, primero como un conjunto de instrucciones que deben seguirse para hacer un cierto tipo de máquina, y luego la unidad supervisora cambia al segundo modo, las instrucciones en el mapa son ignoradas. El mapa solamente es el material para realizar la copia.
Lo notable de esta descripción de los autómatas de Von Neumann es que siguen el modelo de replicación del adn. En la época en que desarrollaba este trabajo aún no se sabía cómo se replicaba el código genético de los seres vivos. Watson y Crick demostraron que el mecanismo descrito por el científico húngaro-estadunidense era prácticamente el mismo del adn. Se llegó a la conclusión de que no se necesita una fuerza mística o intangible (como la fuerza vital de la que hablaba el extraordinario físico Niels Bohr) para explicar cómo se replican las cadenas de adn. Esto caló hondo en la mente de los biólogos de la época, sepultando de forma inevitable la idea de que esta fuerza de vida, esta fuerza vital, era la que definía la diferencia entre seres vivos y objetos sin vida. De hecho, los biólogos han adoptado el punto de vista de Von Neumann que en esencia sostiene que la autorreplicación finalmente es organización, es decir, la habilidad de un sistema para contener una descripción de sí mismo y usar esa información para crear nuevas copias.
La idea de una unidad supervisora incomoda en un principio, pero quizás en la concepción de Von Neumann sea una necesidad. En el ámbito computacional existen ejemplos de que la regresión infinita se impide cuando se utiliza una función recursiva. En cierto sentido, la recursión es un proceso basado en sí mismo, en su propia definición. Esto conlleva regresión infinita, a menos que se plantee una condición que elimine dicha situación. Por ejemplo, en Prolog podemos definir un predicado, member, el cual nos puede indicar si un elemento es parte de una lista. Para ello, lo definimos de esta manera:
member(X, [X|_]). % member(X, [Cab|Cola]) es cierto si X = Cab
% esto es, si X es cabeza de la lista
member(X, [_|Tail]) :- % o si X es miembro de la cola,
member(X, Tail) . % si member(X, Cola) es verdadero.
Aquí el mecanismo de la recursividad tiene una “unidad supervisora” que es simplemente una sola instrucción, la primera (member(X, [X|_]).), que se llama en muchos casos la “condición terminal o de salida”. Esto termina de tajo con la regresión infinita.5
Dicho de otra manera, la unidad supervisora de Von Neumann quizás no necesita ser tan compleja como podría esperarse en un inicio. Simplemente decide el modo de actuar de acuerdo con una simple condición binaria, de verdadero o falso.
Von Neumann finalmente pudo probar con su juego de patrones celulares lo siguiente: “Hay patrones que pueden reproducirse a sí mismos”. Si se empieza con un patrón que se puede autorreplicar, eventualmente tendremos dos; después cuatro, ocho, etcétera. También logró demostrar que incluso con estas reglas sencillas la creación de máquinas que se autorreprodujeran sería un asunto complejo, que representaba aproximadamente 200 000 cuadrados del tablero en el que hacía la simulación.
Aparte de esto, Von Neumann llegó a demostrar que la autorreplicación era posible en un universo simplificado sin contradicciones inherentes. Si esto es así, entonces es posible crear máquinas que se puedan autorreplicar en el mundo real. Y aunque nadie lo ha logrado, ya no se pone en duda su factibilidad.6
Von Neumann no solamente mostró que podía crear una máquina que se podía autorreplicar, sino que además corroboró que una máquina puede crear otra incluso más compleja que la original. Y aunque esto no ha tenido aplicación práctica, parece ser evidente que ocurre en la biología, y la prueba más fehaciente de ello es la evolución del ser humano, asunto que ha dejado de ser objeto de discusión.
Es claro que las máquinas de Von Neumann no son seres vivos, pero lo que demostró es fundamental: que una serie de reglas basada en la lógica era suficiente para hacer máquinas que pueden reproducirse a sí mismas. Y volviendo a la biología, es razonable pensar en las células de los seres vivos como máquinas complejas que se autorreplican, y en esos términos la analogía con
las máquinas de Von Neumann es bastante adecuada.
En resumen, Von Neumann logró crear una definición de vida basándose en la teoría de la información, bajo el supuesto de que la reproducción biológica es en última instancia un evento meramente mecánico. He aquí las valiosas conclusiones de su trabajo:
1 Un sistema vivo encapsula una descripción de sí mismo.
2 Impide la regresión infinita (la recursión) incluyendo una descripción de la descripción en la descripción.
3 Así, la descripción tiene un doble papel: es una descripción codificada del resto del sistema, y al mismo tiempo es una especie de modelo de trabajo (que no requiere decodificarse) del mismo.
4 Hay una parte del sistema que se llama “unidad supervisora” que conoce este rol dual de la descripción y se asegura que la descripción se interprete de ambas maneras durante la reproducción.
5 Hay otra parte, llamada “constructor universal”, que puede construir cualquier clase de objetos, incluyendo el sistema vivo, dadas las instrucciones correctas.
6 La reproducción ocurre cuando la unidad supervisora instruye al constructor universal a construir una copia nueva del sistema, incluida la propia descripción.
Es importante aclarar que Von Neumann, al referirse a la autorreplicación (o reproducción) de los autómatas celulares, habla de recursión, en donde el mapa genético está en el mismo autómata; es decir que lo definido está en la definición y esto es precisamente una condición indispensable para que haya autorreplicación.
2 S. M. Ulam, Adventures of a Mathematician, University of California Press, 1976.
3 De niños nos enseñan que lo definido no puede estar en la definición, pero esto no es cierto. Por ejemplo, podemos definir la operación factorial, que se anota con ‘!’ de forma recursiva. Decimos que n! = n (n – 1)! Y además que 0! = 1. Así entonces, 3! Se podrá calcular diciendo que 3! = 3 (2!); pero 2! = 2 (1!); pero 1! = 1 (0!); pero 0! = 1 entonces podemos regresar en los cálculos que tenemos pendientes: 1! = 1 (0!) = 1; 2! = 2 (1!) = 2; 3! = 3 (2!) = 6. Hay una historia en donde se decía que Iteratum humanum est, recursivitum divinum est cuyo autor era el creador del lenguaje Pascal, Niklaus Wirth (15 de febrero de 934-). Sin embargo, el propio Wirth ha desmentido constantemente esta afirmación y no se sabe a ciencia cierta por qué se le adjudica a él.
4 Umberto Pesavento, entre 1992 y 1994, con 16 años de edad, programó las ideas de Von Neumann asesorado por Renato Nobili, que había emprendido esta tarea unos años atrás. El programa funciona en la plataforma Windows y fue compilado usando Watcom C++. El resultado se presentó en la conferencia Artificial Worlds and Urban Studies, en Venecia, Italia, a fines de 1994. Dos años después se publicó un artículo denominado “An Implementation of Von Neumann’s Self-Reproducing Machine” (Artificial Life Journal 2, 337-354) cuando ya Pesavento estudiaba física en Princeton, Estados Unidos. El programa, con una profusa ayuda, puede descargarse de http://www.pd.infn.it/~rnobili/au_cell/.
5 Los programas en el lenguaje funcional Prolog se ejecutan de arriba hacia abajo. De hecho, ésta es la razón por la cual la condición terminal debe ir antes de la función recursiva. Si se ponen al revés, el resultado es que se cicla el programa o se detiene por falta de memoria en el stack.
6 Es claro que los seres humanos son un ejemplo de máquinas que se autorreproducen.