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.