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.
Capítulo iii
El Juego de la vida de John Conway
Un matemático es un hechicero que revela sus secretos.7
John Horton Conway
Hay un juego de computadora fascinante, llamado Juego de la vida, que fue diseñado en 1970 por el matemático británico John Horton Conway,8 en la Universidad de Cambridge, Inglaterra. Se hizo muy popular desde que Martin Gardner, en su columna de octubre de ese año en la revista Scientific American, abordara las ideas de dicho matemático. Pero más allá de ser un interesante pasatiempo, el Juego de la vida contiene las ideas que originalmente Von Neumann intentó plasmar en su autómata celular. Lo importante aquí es que Conway halló una serie de reglas simples para su autómata celular en dos dimensiones que permitieron superar las dificultades que Von Neumann enfrentó en su momento para crear máquinas que se autorreplicaran.
[no image in epub file]
John Horton Conway.
El Juego de la vida ocurre en un tablero cuadriculado,