El resolver un problema combinatorio se resume a encontrar la ``mejor'' / ``óptima'' solución dentro de un conjunto finito o contablemente infinito de alternativas.
Asumimos que la calidad de la solución es cuantificable y comparable con cualquier otra solución y asumimos que las soluciones son finitas.
Muchos problemas combinatorios son NP, por lo que normalmente se buscan soluciones ``rápidas'' sub-óptimas.
Una instancia de un problema combinatorio se puede formalizar por un
par donde el espacio solución denota el conjunto
finito de todas las posibles soluciones y denota la función
de costo:
Lo que se trata (en minimización) es encontrar una solución tal que para toda .
Los algoritmos de búsqueda local constituyen una clase de algoritmos aproximados basados en la exploración de vecinos. Estos presuponen que existe una función de costo y una estructura de vecindad.
La estructura de vecindad define para cada un conjunto que son cercanos a en algún sentido. Se asume que .
El mecanismo de generación se define como la forma de seleccionar una solución en la vecindad de la solución .
Los algoritmos de búsqueda local normalmente iteran partiendo de una solución aleatoria, generando un vecino que sea mejor hasta que se llegue a una solución que no tiene mejores vecinos.
Ya hemos visto varias alternativas que se han propuesto para tratar de evitar quedarse en mínimos locales:
Recocido simulado se basa en aceptar en forma limitada transiciones que no mejoren la función de costo usando un mecanismo no determinista.
Recocido simulado se llama así por su analogía con el proceso físico de recocido de sólidos, en el cual:
Lo que hace recocido simulado es establecer una conexión entre este tipo de proceso termodinámico y la búsqueda de un mínimo global.
Otro proceso relacionado es el de quenching en el cual la temperatura se baja inmediatamente.
El núcleo de recocido simulado lo consituye lo que se conoce como el algoritmo de Metropolis.