¿Qué alternativas hay para los algoritmos de escalada?

Estás tratando de resolver una clase de problemas llamados problemas de optimización global [1]. La escalada es un algoritmo codicioso, por lo que es vulnerable a los máximos locales y se adapta mejor a la optimización local.

El ascenso aleatorio al subir una colina [2] es una variante cercana que podrías probar. Involucra múltiples carreras de escalada, cada una comenzando desde una condición inicial aleatoria, y toma el mejor resultado en todas las carreras. (¡Gracias a Marc Pujol por señalar esto en los comentarios!)

También hay muchas heurísticas aparte de la escalada para abordar problemas de optimización global [3, 4]. Aquí hay algunos conocidos que pueden ser interesantes:

  • Recocido simulado [5] – Reemplazar iterativamente la solución actual por una cercana, eligiendo el reemplazo al azar pero ponderado hacia mejores soluciones. A medida que pasa el tiempo, disminuya la aleatoriedad en el reemplazo.
  • Algoritmos genéticos [6]: comience con una población de soluciones y reemplácelas iterativamente con una nueva población creada aplicando un cruce genético y una mutación a la población actual, y filtrando estas poblaciones de acuerdo con una función de aptitud .
  • Optimización de colonias de hormigas [7]
  • Búsqueda tabú [8]

[1] http://en.wikipedia.org/wiki/Glo…
[2] http://en.wikipedia.org/wiki/Hil…
[3] http://en.wikipedia.org/wiki/Glo…
[4] http://en.wikipedia.org/wiki/Met…
[5] http://en.wikipedia.org/wiki/Sim…
[6] http://en.wikipedia.org/wiki/Gen…
[7] http://en.wikipedia.org/wiki/Ant…
[8] http://en.wikipedia.org/wiki/Tab…

More Interesting

Digamos que encontramos un algoritmo que resuelve problemas de NP-Complete en tiempo polinómico pero no podemos probarlo. ¿Cuáles serían las consecuencias?

¿Es correcto mi nuevo estado de ánimo? Ingresé a la programación desde un punto de vista de programación algorítmica y, como tal, tengo una inclinación a querer saber cómo funcionan las cosas debajo. Pero ahora, después de un tiempo en el mundo de los desarrolladores, finalmente tengo que darme cuenta de que se trata menos de eso. ¿Lo que usted dice?

¿Cómo puedo aprender las estructuras de datos en 3 meses?

Cuando aumentamos la cantidad de datos de entrenamiento en el algoritmo KNN, ¿por qué se reduce la tasa de error?

¿Puedes compartir tu algoritmo de encontrar la longitud del AP más largo en una matriz dada?

¿Debo tomar un curso de estructura de datos y algoritmos antes de aprender cualquier lenguaje de programación? ¿Es importante entender la programación?

Cómo recorrer un trabajo de búsqueda binaria e imprimirlo en orden

¿Cómo funcionará este caché asociativo con el algoritmo de reemplazo de LRU?

¿Qué patrones de diseño y algoritmos comunes necesito saber para el desarrollo de Android?

¿Cuál es la explicación intuitiva de agregar bordes traseros en el gráfico en el algoritmo Ford-Fulkerson?

¿Cómo se puede resolver el coeficiente binomial usando programación dinámica y tabla hash?

¿Cómo es tomar CS 267 (Algoritmos gráficos) en Stanford?

¿Resolver todos los problemas en Project Euler facilita la resolución de problemas en Topcoder?

¿Cómo se pueden condensar hipergrafías construidas para problemas de flujo de red que implican minimizar el tiempo necesario para impulsar el flujo desde la fuente al sumidero?

¿Cómo resolver el problema de los genéricos?