El algoritmo se muestra en la tabla 5.1.
La figura 5.1 muestra un ejemplo sencillo del funcionamiento de búsqueda Tabú. Supongamos que en cada punto solo pueden hacerse dos movimientos, hacia un estado con un número anterior o a un estado con un número posterior y supongamos que nuestra lista tabú es de tamaño 3.
Supongamos que inicialmente estamos puestos en el punto marcado con el número 1 en la figura 5.1. De ahí se pueden hacer dos movimientos (hacia 0 y hacia 2). Se elige el mejor (hacia 2), denotemoslo como y se actualiza la lista tabú (inicialmente vacía). Registramos el movimiento inverso en la lista () para evitarlo en el futuro.
De ahí nos movemos hacia el estado 3 (el mejor y el permitido dada nuestra lista tabú actual) y después al 4, con lo que la lista tabú se llena con tres elementos: { }.
El siguiente movimiento es peor en la función objetivo (), pero es el mejor dentro de los permitidos por la lista tabú y por nuestro esquema de vecindad utilizado. Tambén provoca que se elimine el elemento más viejo que tiene la lista tabú (por estar llena). La lista tabú queda como: { }.
Este proceso continua hasta que finalmente salimos del mínimo local al movernos del estado 8 al 9.
Puntos:
OPTIMO puede ser:
OPTIMO da la mejor solución o la menos peor sujeta a la lista tabú.
En principio, se podría tomar alguna solución que mejore (en caso de que sea difícil encontrar la mejor), pero normalmente se sigue la estrategia más agresiva.
La razón principal es que los óptimos locales no presentan problemas.
Normalmente la lista tabú se implementa como una lista circular, añadiendo elementos en la posición 1 y eliminando los que sobrepasen la posición (para una fija).
Una forma efectiva de implementar la lista sería:
Por lo que el paso de actualización de sería: .
En general, lo que se trata de evitar en caer en estados solución previos.
Esto no quiere decir que se tenga que escoger una muy grande.
En la práctica no toma la forma anterior: (i) previene un conjunto más grande de movidas, (ii) por consideraciones de memoria es deseable guardar sólo un subconjunto de atributos que caracterizan el movimiento.
Bajo estas condiciones, la lista tabú representa una colección de movidas .
Cuando la lista se pueden eliminar los elementos más viejos de para permitir continuar con el proceso.