¿Qué podemos aprender del algoritmo de ‘optimización de colonias de hormigas’ para mejorar nuestras habilidades de resolución de problemas?

El algoritmo de colonia de hormigas es una clase de algoritmos que se clasifican bajo la etiqueta “metaheurística”. Estos son problemas en los que la computadora solo tiene que “buscar” la solución. Pruebe nuevos valores, nuevas rutas y nuevas combinaciones para llegar a alguna solución a un problema que es un poco o mucho mejor que la solución inicial.

Como ha sido demostrado por el teorema del “no almuerzo gratis”, no existe una mejor estrategia para los problemas en general. La búsqueda de una solución óptima a menudo se compara con tratar de encontrar la cima de una montaña en una espesa niebla. Si caminas lo suficiente, eventualmente lo encontrarás, pero una “metaheurística” común en este caso es caminar hacia arriba desde tu punto de partida. Sigue haciendo eso y podrías llegar a la cima de la montaña. O dependiendo del paisaje, puede terminar en una pequeña colina. La metaheurística común es tomar nota de esta ubicación y luego ir a otro lugar al azar, intente nuevamente y vea si esta vez sube más. Esta idea simple está en el corazón de muchos algoritmos que suenan elegantes, incluidos algunos algoritmos de optimización de colonias de hormigas, algoritmos genéticos, recocido simulado y más.

Si se extrae alguna sabiduría particular de los algoritmos metaheurísticos, es probable que “no se quede atascado en la misma cadena de pensamiento, dé un paso atrás, acérquese desde un ángulo diferente” y “discuta con otros, compare notas, vea si una combinación de tus ideas podría ser mejor que cada una sola “. Esto no es terriblemente profundo, pero muchas metaheurísticas nacen del pensamiento de sentido común, por lo que realmente son las computadoras que aprenden de nosotros y no al revés.

Lo principal a reconocer sobre el algoritmo es que está disponible, no garantiza que encontrará la mejor solución, o incluso una buena.

Específicamente, ilustra el peligro del pensamiento estrictamente local, solo considerando lo que está inmediatamente a su alrededor.

Estas son las hormigas que inspiraron el algoritmo: una hormiga encuentra el inicio de su propio camino y lo sigue de nuevo, colocando feromona a medida que avanza. Esto fortalece el atractivo del camino circular por el que camina, atrayendo más hormigas, y antes de que te des cuenta, toda la colonia está corriendo en círculos hasta que muere de agotamiento.

Entonces, diría que la lección principal es “no seas una hormiga”. Mantén la cabeza en alto y conoce tu contexto y otras opciones. Considere los métodos según sus méritos (¡y pruébelos!) En lugar de seguir servilmente un enfoque porque es el sabor del mes.

More Interesting

¿Cuál es el punto de usar programación dinámica cuando la complejidad de tiempo en la mayoría de los códigos es O (n ^ 2) (que no es tan bueno, es decir, usamos dobles para bucles incluso en DP)?

Dada una expresión matemática 2 + 4 * 6 + 8-11, ¿cómo la colocaría entre corchetes de manera que proporcione el valor máximo? ¿Es posible codificar esto?

¿Cuál es la diferencia entre la optimización de llamadas de cola y la optimización de recursión de cola?

¿Cuál es el mejor algoritmo?

¿Es posible crear una matriz paralela bidimensional?

¿Cómo clasifica Quora las preguntas? ¿Qué algoritmos usan?

¿Cómo se relacionan el comercio algorítmico y de alta frecuencia y la teoría de gráficos?

¿Cuál es una explicación simple de cómo ALS completa los valores donde antes existían ceros?

¿Por qué utilizan la factorización principal para el cifrado en lugar de un algoritmo que hemos demostrado que es difícil de resolver?

¿Cómo pueden los estudiantes de electricidad y electrónica llegar a ser buenos en algoritmos y estructuras de datos?

¿Cuál es el algoritmo Google + 1 utilizado para Sparks?

¿Hay libros / tutoriales para algoritmos y estructuras de datos que sean más amigables y para principiantes?

¿Cuáles son los mejores algoritmos y estructuras de datos MOOC?

¿Cuáles son los diferentes enfoques que uno puede tomar para mejorar la precisión dado un conjunto de datos además de probar diferentes algoritmos en el aprendizaje automático?

¿Qué programas pueden determinar las instrucciones de plegado de origami para una forma tridimensional dada?