Dejando de lado los problemas exclusivamente técnicos del desarrollo de un conjunto de operaciones unitarias confiables que un autómata replicante debería poder realizar de manera autónoma, el problema subyacente de la autorreplicación con respecto a un dispositivo tecnológico es el mismo enigma teórico detrás de la reproducción biológica. La intuición inmediata es que la autorreplicación es una tarea imposible para cualquier sistema, y en particular para cualquier sistema diseñado. La paradoja se puede resumir en el siguiente argumento:
- La construcción de una máquina requiere un archivo de diseño con las instrucciones para su montaje;
- El archivo de diseño de la máquina A, que es capaz de construir la máquina B, debe contener -aparte de una descripción de los mecanismos de trabajo particulares de A- alguna versión del archivo de diseño de B, para usarlo como un conjunto de instrucciones al construirlo a partir de rasguño;
- El conjunto de instrucciones para construir una máquina que puede construir una segunda es siempre más grande que el único conjunto de instrucciones correspondiente a la última, porque la primera debe contener una copia del archivo de diseño de la segunda máquina más una descripción de sí misma. Dado que una máquina no puede tener un conjunto de instrucciones más grande que el mismo, esto implica que la autorreplicación es imposible.
Aunque la primera propuesta es evidente, la segunda propuesta se puede comprender de inmediato con un ejemplo: cualquier fábrica de automóviles existente, aparte de los planos mecánicos de los vehículos que fabrica, requiere una especificación completa del equipo que conforma la línea de ensamblaje ( transportadores, grúas, máquinas de soldadura, etc.) que describen el proceso para el equipo de construcción y para los proveedores externos de la maquinaria funcional. Como resultado, la empresa de fabricación de automóviles no solo tiene que desarrollar los planos de sus productos finales, sino también el diseño, las hojas de datos de los equipos, los diagramas de líneas y los planos del sitio correspondientes a toda la instalación antes de que pueda comenzar a operar.
También puede abstraer el proceso de ingeniería de diseño y gestión de proyectos, e imaginar que de alguna manera podría construir una fábrica de fábricas de automóviles (completas, es decir, llave en mano), y darse cuenta de que el problema se traslada a la siguiente etapa de la jerarquía. Este proceso se puede iterar indefinidamente: comienza con el archivo de diseño de una máquina base, y luego lo incrusta en un archivo más grande que describe la construcción de la máquina, que a su vez construye la máquina base, y luego lo incrusta en un archivo más grande y así sucesivamente, el proceso se repite indefinidamente y nunca llega a un punto fijo, por lo que finalmente puede concluir que cada sistema complejo (diseñado o no) debe ser el producto de uno diferente (más complejo).
Pero esta línea de razonamiento es errónea, solo porque la proposición final en la lista anterior es falsa. No es el caso de que cada A que produce B deba tener una descripción más amplia que esta última.
- ¿Es el libre albedrío un resultado probable de cualquiera de nuestras teorías científicas de la realidad?
- ¿Qué tan factible es hacer una investigación con un profesor de forma remota?
- ¿Cuánto se paga a un oficial de la marina mercante?
- ¿Cuáles son los factores que afectan el diseño o el funcionamiento del tubo de rayos X?
- ¿Cómo pensó Nikola Tesla en las ideas de su invención y cómo se adelantó a su tiempo?
El truco consiste en auto referirse indirectamente a lo largo de la ejecución del procedimiento de replicación. Esto se puede hacer extrayendo al procesador (es decir, la unidad de control de la máquina) una instrucción para copiar el contenido de la dirección de memoria correspondiente a todo el bloque de código en ejecución, y exportando la descripción de la máquina clonada durante la etapa de ensamblaje de la descendencia del replicador. . De esta manera, la descripción del autómata se trata a su vez como un código de máquina que debe ejecutarse y como datos para copiar, y funciona siempre que el código pueda referirse a su propia ubicación en la memoria, es decir, mediante un puntero. Este es el enfoque más estricto para la solución del problema de replicación, obviamente es sensato tanto en el contexto de los lenguajes de programación imperativos como en los detalles de implementación de cualquier computadora moderna de acceso aleatorio, y sigue la perspectiva original de Von Neumann cuando definió un constructor universal integrado en un modelo de autómatas celulares (constructor universal de Von Neumann).
Pero esta no es la única forma de realizar la autorreplicación, y el teorema de recursión de Kleene (https://en.wikipedia.org/wiki/Kl…) es anterior al modelo de Von Neumann desarrollado en los años 40 por unos pocos años. El primero proporciona una forma constructiva de producir puntos fijos en funciones computables e implica, como corolario, que existen funciones computables que generan su propio número de Gödel. Esta construcción produce un programa de autorreplicación completamente explícito que no necesita acceder a su código como una ubicación de memoria; Un ejemplo simple fácilmente traducible al inglés sería el siguiente [1]:
Imprima la siguiente oración dos veces, la segunda entre comillas:
“Imprima la siguiente oración dos veces, la segunda entre comillas:”
Este tipo de programas informáticos se denominan Quines (Quine (informática)) en la jerga de programación, en honor del filósofo Willard Van Orman Quine. La auto-referencia indirecta es completamente explícita al dividir el código en dos, por lo que evita apuntar directamente a la dirección de memoria del programa. El teorema de Kleene asegura que cualquier lenguaje completo de Turing (y cualquier computadora universal y completa, cualquiera que sea su instanciación física) admite la autorreplicación de código mediante este método; y, de hecho, la quinación ni siquiera requiere universalidad: una función recursiva primitiva también puede generar su propio número.
Hasta ahora todo bien, pero ¿cómo traducir estos resultados al hardware? La implementación de la subrutina quining requiere un proceso de auto-referencia indirecto de la descripción a sí mismo. Una célula viva es un ejemplo perfecto: tiene el ADN y la cadena de traducción-transcripción del ARN, y esto a su vez está asociado a la cadena de enzima ensamblada en el ribosoma. Los ribosomas sintetizan las enzimas que (entre un número astronómico de otras funciones) desencadenan la replicación y el plegamiento del ADN, y el ADN contiene la plantilla para la producción del ARN que se traduce en enzimas y proteínas de plegamiento en los ribosomas. Aunque las funciones particulares de estos componentes celulares son muy diferentes, el material genético constituye un sustrato de memoria seguro a largo plazo, mientras que el complejo del ribosoma es parte de la maquinaria de procesamiento de señales externas a través de mensajeros químicos (http: //en.wikipedia). org / wiki / Sig…) – juntos ejemplifican el proceso de auto-referencia: el ADN puede desencadenar su propia replicación al enviar una señal de ARN a los ribosomas, que a su vez se traduce en enzimas de polimerización que se difunden al ADN. Esto se hace como parte del ciclo de reproducción celular junto con la síntesis de todas las otras estructuras celulares (también codificadas por el ADN).
No hay una diferencia fundamental entre definir un entorno de software o hardware, y es por eso que la vida no solo es posible, sino que dura (la auto-reproducción es la mejor estrategia para transmitir una señal recuperable a través de un canal ruidoso, es análoga a una estación repetidora de radio). , pero el medio de comunicación es temporal en vez de espacial en la naturaleza). Cualquier diseño de sistema diseñado que intente emular este comportamiento debe incluir un proceso de terminación en alguna etapa de su ciclo de vida, y si dicho sistema se vuelve lo suficientemente potente en términos de computación (es decir, capaz de computación universal implementada a través de su circuitería interna), entonces se vuelve indistinguible de un Forma de vida en todo menos en su historia química.
Finalmente, está la pregunta de por qué querríamos construir máquinas autorreplicantes. Hay dos razones principales:
- Aumentar el alcance de la automatización en los procesos industriales, reduciendo la intervención humana y el esfuerzo solo para el diseño e ingeniería de los autómatas de semillas (y posiblemente para el cierre del ciclo de vida de cada “especie” cuando se vuelven obsoletas).
- Produzca máquinas capaces de progresar intelectualmente sobre nosotros, y lleve a nuestra civilización a una “explosión de inteligencia” usando las palabras de IJ Good. En esa etapa del desarrollo tecnológico, simplemente nos “fusionaríamos” con nuestros inventos y viviríamos en algún tipo de cielo material (esta es la teología de la singularidad kurzweliana).
El primero es completamente razonable, y ese es probablemente el objetivo principal que liderará el desarrollo nanotecnológico en la ciencia de los materiales durante este siglo. El segundo no es tan sensato, porque su interpretación ingenua es posiblemente falsa, y las condiciones en las que podría considerarse plausible son teóricamente controvertidas.
Al considerar que una máquina autorreplicante con un código de diseño fijo y una forma de vida libre de mutaciones, son análogas a un sistema axiomático formal si los tres son capaces de computación universal. Eso significa que deben estar incompletos en el sentido de Gödel (la extensión hipercomprimida y de tres líneas de Ron Maimon del Teorema de Gödel se usa en la primera línea: ¿Cuál es una buena explicación para la prueba del Teorema de incompletitud de Godel?), Y así la “explosión de inteligencia” ilimitada esperada no puede ser el resultado de un auto-rediseño a partir de un código original fijo. Sin embargo, puede explotar toda la complejidad algorítmica inicial del replicador en términos de eficiencia de resolución de problemas sin llegar a un límite en un lapso de tiempo finito. La máquina nunca podrá darse cuenta de algunas posibles mejoras que superan su código Kolmogorov. complejidad. Los fundamentos subyacentes de un diseño de este tipo se describen en el modelo abstracto “Máquina Gödel” de Jürgen Schmidhuber: ftp://ftp.idsia.ch/pub/juergen/g….
Existe otra posibilidad, y es que el replicador podría acceder a alguna fuente ambiental de aleatoriedad algorítmica mutando el código original con cada ciclo de replicación, y luego esta información incompresible podría hacer posibles mejoras más allá de las disponibles a través de la introspección en el caso de una complejidad de autómata inicial fija. Esto implica que algunos conjuntos no recursivos podrían ser decidibles accediendo a un oráculo aleatorio; e incluso si la física teórica actual no descarta la posibilidad de fuentes de verdadera aleatoriedad, esta es una afirmación que probablemente nunca será verificable experimentalmente.
Referencias:
[1] Michael Sipser. “Introducción a la teoría de la computación”, 2ª ed. (2005): 217-222.