Muchos problemas interesantes que se pueden resolver por medio de algoritmos en un determinado modelo precisan de un alto coste para su resolución, ya sea en tiempo y/o en espacio, siendo habitual que el intento de disminuir una de las dos medidas provoca un crecimiento exponencial en la otra. Por ello, surge la necesidad de buscar nuevos modelos que sean capaces de reducir ambos parámetros o, al menos, de incluir procedimientos en los que un coste alto en una de las medidas sea asimilado, en cierto sentido, por el propio modelo en beneficio de una reducción considerable sobre la otra.
En este contexto, la búsqueda de nuevos modelos alternativos de computación está encaminada a la mejora cuantitativa en los resultados que proporciona la Teoría de la Complejidad.
En los últimos años, esta búsqueda ha dado como resultado la introducción de nuevos modelos de computación sustancialmente distintos de los clásicos o convencionales (máquinas de Turing, funciones recursivas, Lambda-cálculo, máquinas URM, modelo GOTO, etc.) que proporcionan una mejora importante en las medidas de complejidad y en el marco de una posible implementación práctica.
La Computación Natural surge como una de las posibles alternativas a la computación que podríamos denominar clásica, en la búsqueda de nuevos paradigmas que puedan proporcionar una solución efectiva a las limitaciones que poseen los modelos convencionales. Actualmente, dentro del concepto de Computación Natural se engloba un conjunto de modelos que tienen como característica común la simulación del modo en que la naturaleza actúa/opera sobre la materia (hay quien extiende este concepto hasta abarcar modelos tales como la computación cuántica, que no se ajusta fielmente a la interpretación anterior). Es decir, la Computación Natural estudia la forma en que las diversas leyes de la naturaleza producen modificaciones en determinados sistemas (desde hábitats hasta conjuntos de moléculas, pasando por organismos vivos) que pueden ser interpretados como procesos de cálculo sobre sus elementos. Así, un hábitat en el que varias especies de seres vivos conviven, sufre transformaciones con el paso de las generaciones y en donde la interacción entre las especies puede provocar cambios en los elementos que la forman (cambios que pueden afectar desde la distribución de dichas especies en el hábitat hasta la morfología propia de cada especie). Es lo que entendemos como evolución de las especies; un conjunto de moléculas en un entorno con determinadas características (de temperatura, salinidad, etc) puede evolucionar hacia estados estructuralmente más complejos modificando las características de las mismas; es decir, propiciando reacciones químicas entre ellas que pueden llegar a producir elementos funcionalmente más complejos, como son las moléculas de ácido desoxirribonucléico (ADN).
Figura 1. Ramas de la computación natural.
Ahora bien: ¿qué entendemos por computación? ¿qué procesos pueden ser considerados como computaciones y cuáles no? ¿la Naturaleza produce computaciones? ¿a qué niveles? Si bien no podemos adentrarnos mucho a la hora de responder a estas cuestiones, sí hemos de precisar algunas cosas. Desde luego, la Naturaleza evoluciona, el fín primordial de la vida es la vida misma y la computación no es, propiamente, una actividad natural en tanto en cuanto sólo los humanos podemos etiquetar como computaciones ciertos procesos. Por ello, nosotros adoptaremos una perspectiva pragmática: entenderemos por computación todo aquello que puede ser simulado, de alguna manera, por una máquina de Turing; es decir, a partir de una cierta entrada se produce una salida a través de la ejecución de una serie de instrucciones u operaciones perfectamente definidas. Dos ingredientes básicos son necesarios en cualquier dispositivo computacional: una estructura de datos que proporcione los objetos sobre los que se trabaja, y una serie de operaciones o instrucciones que actúen sobre dichos objetos. Con estos elementos fundamentales aparecen de manera natural las computaciones: a partir de una situación inicial descrita por la configuración del dispositivo (donde se codifica el dato de entrada) y por la ejecución de una sucesión de instrucciones, se definen las sucesivas configuraciones obtenidas usando las operaciones de acuerdo con la semántica del modelo hasta llegar a una configuración exitosa que produce un dato de salida.
La simulación que aborda la Computación Natural puede tener diversas interpretaciones a la hora de describir los nuevos modelos: que se utilice para el diseño de nuevos esquemas algorítmicos usando técnicas inspiradas en la naturaleza, o bien que sugiera la creación física de nuevos modelos experimentales en los que el medio electrónico de los ordenadores convencionales se sustituya por otro sustrato que pueda implementar ciertos procesos que aparecen en el modo de operar de la Naturaleza.
Como ejemplo de la primera interpretación, podemos considerar los Algoritmos Genéticos (o de manera más general, la computación evolutiva), que se basan en el proceso genético de los seres vivos a través del cual evolucionan y cuyo elemento fundamental es el principio de selección natural, y las Redes Neuronales artificiales que están inspiradas en la organización y funcionamiento del cerebro (siendo el origen de los autómatas finitos). Tanto los Algoritmos Genéticos como las Redes Neuronales artificiales están inspiradas en la Biología y han sido implementadas en ordenadores electrónicos. Su estudio tiene como finalidad la obtención de nuevos tipos de algoritmos que permitan mejorar el rendimiento de las máquinas convencionales e incluso su propia arquitectura.
Como ejemplo de la segunda interpretación, a finales de la década de los cincuenta el premio nobel R.P. Feynman postula la necesidad de considerar operaciones sub-microscópicas como única alternativa revolucionaria en la carrera por la miniaturización de las componentes físicas de los ordenadores convencionales (basados en circuitos de silicio), y propone la computación a nivel molecular como posible modelo en el que implementar dichas operaciones. De esta manera, los complejos moleculares empiezan a ser considerados como componentes virtuales de un dispositivo de procesamiento de información. En 1987, T. Head propone explícitamente el primer modelo teórico molecular basándose en las propiedades de la molécula de ADN. En noviembre de 1994, L. Adleman realiza el primer experimento en un laboratorio que permite resolver una instancia concreta de un problema NP-completo a través de la manipulación de moléculas de ADN.
Comentarios
Publicar un comentario