Darwin y la informatica

Quienes trabajen con ordenadores es posible que hayan oido hablar de una tecnica de programacion llamada «Algoritmos geneticos»; se trata basicamente de la aplicacion de la teoria de la seleccion natural a la informatica, y se utiliza para resolver problemas para los que no existe un algoritmo de resolucion; eso si, es necesario disponer de una funcion que evalue una solucion determinada y le asigne una puntuacion en funcion de lo «buena» que sea; esta funcion cumple el papel que, en la naturaleza, juega el medio ambiente.

¿Como funciona esta tecnica? Los pasos son los siguientes:

  1. Generamos al azar un primer bloque de posibles soluciones (por ejemplo, veinte).
  2. Evaluamos estas soluciones y seleccionamos las (por ejemplo) cinco mejores.
  3. Cogemos cada solucion seleccionada, y, por la via de aplicar pequeñas modificaciones al azar, generamos a partir de cada una un bloque de cinco. De esta forma tendremos nuevamente un conjunto de veinte soluciones posibles.
  4. Volvemos al paso 2, y repetimos este proceso hasta que vemos que, de cada generacion a la siguiente, no se observa una mejora significativa de puntuacion de una generacion a la siguiente.

Sencillo, ¿verdad? Pues, por increible que parezca, el sistema funciona; y con unos resultados extraordinarios. Yo mismo, hace años, escribi algunos programas que aplicaban esta metodologia en problemas sencillos (por ejemplo, encontrar la mejor ruta entre dos puntos de un mapa), y las soluciones que encontraba eran tan buenas como las que se obtenian aplicando la formulacion matematica estandar.

Actualmente, se estan empezando a aplicar los algoritmos geneticos al diseño de circuitos integrados, con los siguientes resultados:

  1. Los circuitos obtenidos tienen una arquitectura mas compleja y funcionan mejor que los diseñados por un ingeniero.
  2. Nadie es capaz de descifrar el funcionamiento de estos circuitos. No es simplemente que su complejidad haga muy dificil su analisis, es que poseen componentes que, al menos en apariencia, no realizan ninguna funcion util (por ejemplo, un transistor que solo tiene conectada una de sus patas).

El porque del punto 2 es muy simple: Porque en un circuito de esta clase intervienen leyes naturales que aun no han sido descubiertas.

El punto 1 es algo mas dificil de explicar; para empezar, hay que pensar que la evolucion no es exactamente un metodo de ensayo y error, es mas correcto describirla como un camino que se va abriendo en multiples bifurcaciones, en el cual un grupo de exploradores se van repartiendo para seguir esas bifurcaciones, siendo la ruta concreta lo que se elige al azar; y cuando un camino se termina (la funcion de evaluacion/medio ambiente nos dice que esa solucion no es buena), abandonamos esa ruta y probamos otra. Aqui, el elemento clave es la «apertura en arbol», el hecho de que estamos explorando varias rutas en paralelo; ¿Que quiere decir esto? Muy sencillo, que si el problema que hemos planteado tiene varias soluciones, el sistema tiene capacidad para encontrarlas TODAS (o al menos muchas de ellas) y combinarlas en el producto resultante, con lo que por fuerza aparecera algo con una arquitectura muy compleja.

Aun queda otra pregunta por responder, ¿Como es posible que la evolucion sea capaz de encontrar leyes naturales desconocidas? A fin de cuentas, estamos hablando de un proceso automatico, sin ninguna inteligencia que lo diriga. La explicacion tambien es simple.

Supongamos que un grupo de exploradores se encuentran en la entrada de una selva y tienen que averiguar que hay alli dentro, si hay plantas medicinales, los restos de una civilizacion perdida, … ¿Como pueden hacerlo? Solo hay una forma: empezar a caminar por la selva, a ver que encuentran; para que su tarea se cumpla con exito, lo unico que han de ser capaces de hacer estos exploradores es reconocer lo que se encuentren por el camino; es decir, si aparece una piedra tallada, han de ser capaces de darse cuenta de que estan ante los restos de una civilizacion; pero fuera de eso, solo pueden andar y mirar; si tienen varios caminos a seguir, no tienen forma de saber cual es el bueno; solo pueden elegir uno y seguirlo a ver si lleva a algun sitio.

Pues esto es exactamente lo que hacen los algoritmos geneticos; el bloque de soluciones posibles son nuestros exploradores, la funcion de evaluacion es quien dice si lo que se ha encontrado es bueno o no, y el azar es quien elige la bifurcacion a seguir; todo ello para explorar la selva de las posibles soluciones al problema que le estamos planteando, y poder asi hayar la solucion sin necesidad de tener un conocimiento previo de como es dicha selva.

La aplicacion de los algoritmos geneticos al diseño de circuitos electronicos esta dando unos resultados tan espectaculares, que las compañias que estan trabajando en el tema se enfrentan a un grave problema: ¿Como puedes patentar un diseño que no tienes ni idea de como funciona? De hecho, no sera posible aplicar comercialmente esta tecnica hasta que se hayan resuelto los problemas legales.

Related Posts Plugin for WordPress, Blogger...
Widget By Best Accounting Services