jueves, junio 12, 2008

Colonias de Hormigas

el trabajo de los programadores consiste en decir a los ordenadores lo que tienen que hacer. Les dan órdenes y estos obedecen fielmente (bueno... algunas veces no :) ). Es curioso, pero el problema es que les tenemos que explicar paso por paso lo que tienen que hacer. Es como si quisiésemos que un taxista nos lleve a un sitio y le vamos dando "instrucciones" de por donde tiene que ir.

El problema es que guiar a un taxista consiste en decirle "ahora a la izquierda" o "sigue recto", pero guiar a un ordenador es mucho más complejo. Debido a que es tan complicado, la gente que sabe de esto ha estudiado y categorizado todos los tipos de "instrucciones" que se le pueden dar a un ordenador y cómo se estructuran y se repiten. A un conjunto de instrucciones ordenadas de una determinada manera y con un determinado objetivo se le denomina Algoritmo. Obviamente esto no es una definición formal, pero quizás a los no informáticos os resuma un poco lo que es.

Pues bien, hay muchos tipos de algoritmos. Los algoritmos resuelven problemas. Por ejemplo el problema de buscar el camino más corto entre dos ciudades. O por ejemplo el problema de calcular la resistencia del aire en una carrocería de un Formula 1. Y hay cosas que no parecen un problema, pero que también lo son. Por ejemplo, coger el vídeo que viene de YouTube y "pintarlo" en la pantalla.

Pues bien, hay un tipo de algoritmos que son aproximados, no son exactos. ¿Qué quiere decir? ¿Que los algoritmos no funcionan bien? Si y no. Imagina que le dices al Tomtom que te calcule la ruta más corta para llegar a Almería, supongamos que para decir el camino más corto se tiene que tirar 5 horas "calculando ruta". Obviamente eso sería demasiado tiempo. Pero ¿y si tuviese una opción que tardase 1 minuto que te dijese un camino "de los más cortos"? Pues seguramente la gente usaría la opción de 1 minuto aunque no se estuviese seguro de si el camino es "el mejor". Pues bien, estos son los algoritmos aproximados, algoritmos que no te dicen "la mejor" solución (el mejor camino), si no que te dicen "alguna de las mejores". A "la mejor" solución se le denomina solución óptima.

Algunos de estos algoritmos aproximados, se denominan bioinspirados. Se destacan por que están inspirados en la naturaleza. Uno de los más curiosos es el basado en colonias de hormigas. Las colonias de hormigas son capaces de "calcular" el camino más corto entre dos puntos. Los algoritmos calculan cosas más complejas, pero siguen la misma idea que las hormigas. Las hormigas buscan a su alrededor y los mejores caminos los van marcando con feromonas. De esa manera otras hormigas pueden ir por ese camino (marcando con más feromonas).

En el siguiente video se ve como las hormigas, en la naturaleza, son capaces de autoorganizarse para encontrar el camino más corto.