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.