Estudio de técnicas de búsqueda por vecindad a muy gran escala
Estudio de técnicas de búsqueda por vecindad a muy gran escala
Estudio de técnicas de búsqueda por vecindad a muy gran escala
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Estudio</strong> <strong>de</strong> <strong>técnicas</strong> <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong><br />
Ravindra K. Ahuja<br />
Departamento <strong>de</strong> ingeniería industrial y <strong>de</strong> sistemas<br />
Universidad <strong>de</strong> Florida<br />
Gainesville, FL 32611, USA<br />
ahuja@ufl.edu<br />
Özlem Ergun<br />
Centro <strong>de</strong> investigación operativa<br />
Instituto tecnológico <strong>de</strong> Massachussets<br />
Cambridge, MA 02139, USA<br />
ozie@mit.edu<br />
James B. Orlin<br />
Escuela Sloan <strong>de</strong> dirección<br />
Instituto tecnológico <strong>de</strong> Massachussets<br />
Cambridge, MA 02139, USA<br />
jorlin@mit.edu<br />
Abraham P. Punnen<br />
Departamento <strong>de</strong> matemáticas, estadística y ciencias informáticas<br />
Universidad <strong>de</strong> New Brunswick<br />
Saint John, New Brunswick, Canada E2L 4L5<br />
punnen@unbsj.ca<br />
(22 <strong>de</strong> julio <strong>de</strong> 1999)<br />
(Revisado el 11 <strong>de</strong> octubre <strong>de</strong> 2000)<br />
1
<strong>Estudio</strong> <strong>de</strong> <strong>técnicas</strong> <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong><br />
Ravindra K. Ahuja, Özlem Ergun, James B. Orlin, Abraham P. Punnen<br />
Resumen<br />
Muchos problemas <strong>de</strong> optimización <strong>de</strong> interés práctico resultan intratables mediante <strong>técnicas</strong> <strong>de</strong> cálculo.<br />
Ante esta dificultad, los algoritmos heurísticos (o <strong>de</strong> aproximación) se revelan como un medio útil para<br />
su resolución, ya que permiten obtener soluciones casi óptimas en un tiempo razonable. Los algoritmos<br />
<strong>de</strong> mejora son algoritmos heurísticos que, <strong>por</strong> lo general, parten <strong>de</strong> una solución factible y tratan <strong>de</strong><br />
hallar, <strong>por</strong> medio <strong>de</strong> iteraciones, una solución aún mejor. Los algoritmos <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong><br />
(también llamados algoritmos <strong>de</strong> <strong>búsqueda</strong> local) constituyen un tipo bastante amplio <strong>de</strong> algoritmos <strong>de</strong><br />
mejora en los que en cada iteración se obtiene una solución mejorada buscando en la "<strong>vecindad</strong>" <strong>de</strong> la<br />
solución existente. Un aspecto crítico <strong>de</strong>l diseño <strong>de</strong> esta clase <strong>de</strong> algoritmos es la elección <strong>de</strong> la<br />
estructura <strong>de</strong> la <strong>vecindad</strong>; es <strong>de</strong>cir, el modo en el que se va a <strong>de</strong>finir ésta. Como regla general, cuanto<br />
más amplia sea la <strong>vecindad</strong>, mayor será tanto la calidad <strong>de</strong> las soluciones localmente óptimas como la<br />
precisión <strong>de</strong> la solución final que se obtenga. Pero, al mismo tiempo, cuanto más amplia sea la <strong>vecindad</strong>,<br />
más tiempo será necesario para realizar la <strong>búsqueda</strong> <strong>de</strong>ntro <strong>de</strong> ella en cada iteración. Por esta razón, una<br />
<strong>vecindad</strong> <strong>muy</strong> amplia produce necesariamente una heurística más eficaz, a menos que la <strong>búsqueda</strong> se<br />
realice <strong>de</strong> un modo <strong>muy</strong> eficiente. El presente estudio se concentra en algoritmos <strong>de</strong> <strong>búsqueda</strong> local en<br />
los que el tamaño <strong>de</strong> la <strong>vecindad</strong> es “<strong>muy</strong> <strong>gran</strong><strong>de</strong>” con respecto al tamaño <strong>de</strong> los datos y en los que la<br />
<strong>búsqueda</strong> local se hace con criterios <strong>de</strong> máxima eficiencia. En él se analizan tres tipos <strong>muy</strong> amplios <strong>de</strong><br />
algoritmos <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong> (VLSN: Very Large-Scale Neighborhood): (1)<br />
métodos <strong>de</strong> profundidad variable en los que la <strong>búsqueda</strong> local se realiza <strong>de</strong> modo heurístico, (2)<br />
aplicación <strong>de</strong> la programación dinámica o <strong>de</strong> <strong>técnicas</strong> <strong>de</strong> flujo <strong>de</strong> re<strong>de</strong>s a vecinda<strong>de</strong>s amplias, y (3)<br />
vecinda<strong>de</strong>s <strong>gran</strong><strong>de</strong>s inducidas <strong>por</strong> restricciones <strong>de</strong>l problema original que pue<strong>de</strong>n resolverse en tiempo<br />
polinómico.<br />
1. Introducción<br />
Muchos problemas <strong>de</strong> optimización <strong>de</strong> interés práctico resultan intratables mediante <strong>técnicas</strong><br />
<strong>de</strong> cálculo. Ante esta dificultad, los algoritmos heurísticos (o <strong>de</strong> aproximación) se revelan como un<br />
medio útil para su resolución, ya que permiten obtener soluciones casi óptimas en un tiempo razonable.<br />
Los trabajos <strong>de</strong>dicados a algoritmos heurísticos suelen dividir éstos en dos amplias categorías:<br />
algoritmos <strong>de</strong> construcción (o constructivos) y algoritmos <strong>de</strong> mejora. Los primeros montan una solución<br />
partiendo <strong>de</strong> cero, mediante la asignación <strong>de</strong> valores a una o varias variables <strong>de</strong> <strong>de</strong>cisión al mismo<br />
tiempo, mientras que los algoritmos <strong>de</strong> mejora parten <strong>de</strong> una solución factible y tratan <strong>de</strong> hallar una<br />
2
mejor <strong>por</strong> medio <strong>de</strong> iteraciones. Los algoritmos <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> (también llamados algoritmos<br />
<strong>de</strong> <strong>búsqueda</strong> local) constituyen un tipo bastante amplio <strong>de</strong> algoritmos <strong>de</strong> mejora en los que en cada<br />
iteración se obtiene una solución mejorada buscando en la "<strong>vecindad</strong>" <strong>de</strong> la solución existente. El<br />
presente estudio se concentra en algoritmos <strong>de</strong> <strong>búsqueda</strong> local en los que el tamaño <strong>de</strong> la <strong>vecindad</strong> es<br />
“<strong>muy</strong> <strong>gran</strong><strong>de</strong>” con respecto al tamaño <strong>de</strong> los datos y en los que la <strong>búsqueda</strong> local se hace con criterios <strong>de</strong><br />
máxima eficacia. En instancias <strong>gran</strong><strong>de</strong>s <strong>de</strong> problemas, la <strong>búsqueda</strong> <strong>de</strong> este tipo <strong>de</strong> vecinda<strong>de</strong>s <strong>de</strong> modo<br />
explícito resulta poco práctica, lo que hace necesario realizar la <strong>búsqueda</strong> en un segmento más pequeño<br />
<strong>de</strong> la <strong>vecindad</strong> o bien <strong>de</strong>sarrollar algoritmos que resulten eficaces en <strong>búsqueda</strong>s <strong>de</strong> modo implícito en la<br />
<strong>vecindad</strong>.<br />
Un aspecto crítico <strong>de</strong>l diseño <strong>de</strong> esta clase <strong>de</strong> algoritmos es la elección <strong>de</strong> la estructura <strong>de</strong> la<br />
<strong>vecindad</strong> (es <strong>de</strong>cir, el modo en el que se va a <strong>de</strong>finir ésta), ya que <strong>de</strong>l tipo <strong>de</strong> estructura que se elija<br />
<strong>de</strong>pen<strong>de</strong>rá el que la <strong>búsqueda</strong> <strong>de</strong> <strong>vecindad</strong> <strong>de</strong>sarrolle soluciones altamente precisas o soluciones con<br />
óptimos locales <strong>muy</strong> pobres. Como regla general, cuanto más amplia sea la <strong>vecindad</strong>, mayor será tanto la<br />
calidad <strong>de</strong> las soluciones localmente óptimas como la precisión <strong>de</strong> la solución final que se obtenga. Pero,<br />
al mismo tiempo, cuanto más amplia sea la <strong>vecindad</strong>, más tiempo será necesario para realizar la<br />
<strong>búsqueda</strong> <strong>de</strong>ntro <strong>de</strong> ella en cada iteración. Dado que se suelen ejecutar varios algoritmos <strong>de</strong> <strong>búsqueda</strong><br />
local con distintos puntos <strong>de</strong> partida, la mayor duración <strong>de</strong> los tiempos <strong>de</strong> ejecución para cada iteración<br />
requiere un menor número <strong>de</strong> ejecuciones <strong>por</strong> tiempo unitario. Por esta razón, una <strong>vecindad</strong> <strong>muy</strong> amplia<br />
produce necesariamente una heurística más eficaz, a menos que la <strong>búsqueda</strong> se realice <strong>de</strong> un modo <strong>muy</strong><br />
eficiente.<br />
Varios <strong>de</strong> los métodos más utilizados <strong>por</strong> su alta eficiencia en investigación operativa pue<strong>de</strong>n<br />
enten<strong>de</strong>rse como <strong>técnicas</strong> <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>gran</strong> <strong>escala</strong>. Así, <strong>por</strong> ejemplo, si contemplamos el<br />
algoritmo simplex para la resolución <strong>de</strong> programas lineales como un algoritmo <strong>de</strong> <strong>búsqueda</strong> local,<br />
tendremos que la generación <strong>de</strong> columnas es a su vez un método <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>gran</strong><br />
<strong>escala</strong>, al igual que ocurre con las <strong>técnicas</strong> <strong>de</strong> extrapolación empleadas para la resolución <strong>de</strong> muchos<br />
problemas <strong>de</strong> flujo <strong>de</strong> re<strong>de</strong>s. El algoritmo <strong>de</strong> cancelación <strong>de</strong>l ciclo <strong>de</strong> coste negativo que se usa para<br />
resolver el problema <strong>de</strong>l flujo <strong>de</strong> coste mínimo y el algoritmo <strong>de</strong>l camino <strong>de</strong> aumento que resuelve<br />
problemas <strong>de</strong> ajuste son dos ejemplos <strong>de</strong> ello.<br />
En el presente estudio, hemos clasificado los métodos <strong>de</strong> <strong>vecindad</strong> a <strong>gran</strong> <strong>escala</strong> en tres categorías<br />
que pue<strong>de</strong>n coincidir parcialmente. La primera <strong>de</strong> ellas compren<strong>de</strong> los métodos <strong>de</strong> profundidad variable:<br />
una serie <strong>de</strong> algoritmos que se centran en vecinda<strong>de</strong>s exponencialmente <strong>gran</strong><strong>de</strong>s en las que realizan<br />
<strong>búsqueda</strong>s parciales <strong>por</strong> medio <strong>de</strong> la heurística. La segunda categoría compren<strong>de</strong> algoritmos <strong>de</strong> mejora<br />
basados en flujos <strong>de</strong> red; métodos <strong>de</strong> <strong>búsqueda</strong> local que emplean <strong>técnicas</strong> <strong>de</strong> flujo <strong>de</strong> red para<br />
i<strong>de</strong>ntificar posibilida<strong>de</strong>s <strong>de</strong> mejora en la <strong>vecindad</strong>. Por último, en la tercera categoría se analizan<br />
vecinda<strong>de</strong>s para problemas NP-difíciles inducidos <strong>por</strong> subconjuntos <strong>de</strong> restricciones <strong>de</strong> los problemas<br />
que se pue<strong>de</strong>n resolver en tiempo polinómico. Aunque hemos introducido el concepto <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong><br />
3
<strong>vecindad</strong> a <strong>gran</strong> <strong>escala</strong> al hacer referencia a <strong>técnicas</strong> <strong>de</strong> generación <strong>de</strong> columnas para programas lineales<br />
y a <strong>técnicas</strong> <strong>de</strong> extrapolación para flujos <strong>de</strong> re<strong>de</strong>s, no se insiste sobre los programas lineales. Por el<br />
contrario, el estudio se concentra en la aplicación <strong>de</strong> <strong>técnicas</strong> <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>gran</strong> <strong>escala</strong> a<br />
problemas <strong>de</strong> optimización NP-difíciles.<br />
Esta monografía se halla estructurada <strong>de</strong>l modo que a continuación se <strong>de</strong>scribe. En el apartado 2 se<br />
incluye una breve <strong>de</strong>scripción general <strong>de</strong> la <strong>búsqueda</strong> local. El apartado 3 compren<strong>de</strong> un análisis <strong>de</strong><br />
métodos <strong>de</strong> profundidad variable. El apartado 4 trata sobre algoritmos <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>gran</strong><br />
<strong>escala</strong> basados en <strong>técnicas</strong> <strong>de</strong> flujo <strong>de</strong> re<strong>de</strong>s. En el apartado 5 se analizan <strong>técnicas</strong> eficientes para la<br />
resolución <strong>de</strong> supuestos especiales <strong>de</strong> problemas NP-difíciles <strong>de</strong> optimización combinatoria, así como <strong>de</strong><br />
vecinda<strong>de</strong>s <strong>muy</strong> amplias basadas en ellos. El apartado 6 <strong>de</strong>scribe las mediciones <strong>de</strong> vecinda<strong>de</strong>s, que<br />
pue<strong>de</strong>n servir <strong>de</strong> guía para el <strong>de</strong>sarrollo <strong>de</strong> algoritmos <strong>de</strong> <strong>búsqueda</strong> local con respecto a una <strong>vecindad</strong><br />
dada. Por último, en el apartado 7 se analiza el rendimiento computacional <strong>de</strong> varios <strong>de</strong> los algoritmos<br />
vistos en los apartados anteriores.<br />
2. Búsqueda local: esquema general<br />
Comenzaremos <strong>por</strong> introducir formalmente un problema <strong>de</strong> optimización combinatoria, junto con el<br />
concepto <strong>de</strong> <strong>vecindad</strong>. Existen diversas maneras <strong>de</strong> representar este tipo <strong>de</strong> problemas, todas ellas<br />
basadas en métodos <strong>de</strong> representación <strong>de</strong>l conjunto <strong>de</strong> soluciones factibles. En este apartado,<br />
representaremos el conjunto <strong>de</strong> soluciones factibles como subconjuntos <strong>de</strong> un conjunto finito,<br />
formulándolo <strong>de</strong>l siguiente modo:<br />
Sea E = {1, 2,..., m} un conjunto finito. En general, la cardinalidad <strong>de</strong> un conjunto S se indica<br />
mediante |S|. Supongamos, a<strong>de</strong>más, que F ⊆ 2 E , don<strong>de</strong> 2 E indica el conjunto formado <strong>por</strong> todos los<br />
subconjuntos <strong>de</strong> E. Los elementos <strong>de</strong> F se <strong>de</strong>nominan soluciones factibles. Sea f: F → ℜ, llamándose a<br />
la función f la función objetivo. Con estos datos, una instancia <strong>de</strong> un problema <strong>de</strong> optimización<br />
combinatoria (POC) se representará <strong>de</strong>l siguiente modo:<br />
Minimizar {f(S) : S ∈ F}.<br />
Damos <strong>por</strong> hecho que la familia F no nos viene dada explícitamente mediante el listado <strong>de</strong> todos sus<br />
elementos; sino que se halla representada en una forma compacta <strong>de</strong> tamaño polinómico en m. El par (F,<br />
f) indica una instancia <strong>de</strong> un problema <strong>de</strong> optimización combinatoria. En la mayor parte <strong>de</strong> los<br />
problemas que veremos, la función <strong>de</strong> coste es una función lineal; es <strong>de</strong>cir, existe un vector f1, f2,…, fm<br />
tal que, para todos los conjuntos factibles, S, f(S) = Σi∈Sfi.<br />
Supongamos que (F, f) es una instancia <strong>de</strong> un problema <strong>de</strong> optimización combinatoria. La función<br />
<strong>de</strong> <strong>vecindad</strong> es un punto <strong>de</strong> <strong>de</strong>finición <strong>de</strong>l mapa N: F→ 2 E . En esta función, cada valor <strong>de</strong> S ∈ F tiene<br />
4
asociado un subconjunto N(S) <strong>de</strong> E. El conjunto N(S) recibe el nombre <strong>de</strong> <strong>vecindad</strong> <strong>de</strong> la solución S, y<br />
po<strong>de</strong>mos suponer, sin pérdida <strong>de</strong> generalidad, que S ∈ N(S). Se dice que una solución S* ∈ F es<br />
localmente óptima con respecto a una función <strong>de</strong> <strong>vecindad</strong> N cuando f(S*) ≤ f(S) para todo S ∈ N(S*).<br />
Asimismo, se dice que N(S) es exponencial cuando |N(S)| crece <strong>de</strong> manera exponencial en m a medida<br />
que el valor <strong>de</strong> esta última se incrementa. A lo largo <strong>de</strong> la mayor parte <strong>de</strong> este estudio, veremos<br />
vecinda<strong>de</strong>s <strong>de</strong> tamaño exponencial, a<strong>de</strong>más <strong>de</strong> vecinda<strong>de</strong>s cuyo tamaño es <strong>de</strong>masiado amplio para<br />
realizar en ellas <strong>búsqueda</strong>s explícitas en la práctica. Así, <strong>por</strong> ejemplo, una <strong>vecindad</strong> con m 3 elementos<br />
resultará <strong>de</strong>masiado amplia para una <strong>búsqueda</strong> en la práctica si m tiene un valor alto (<strong>por</strong> ejemplo,<br />
superior a un millón). Nos referiremos a las <strong>técnicas</strong> <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> empleando dichas<br />
vecinda<strong>de</strong>s como algoritmos <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong> o algoritmos <strong>de</strong> <strong>búsqueda</strong><br />
VLSN.<br />
Para dos soluciones S y T, llamaremos S – T al conjunto <strong>de</strong> elementos que se encuentran en S pero<br />
no en T. La distancia d(S, T) la <strong>de</strong>finiremos como |S - T| + |T - S|, que es el número <strong>de</strong> elementos <strong>de</strong> E<br />
que se encuentran en S o en T, pero no en ambos. Ocasionalmente, podremos permitir que las<br />
vecinda<strong>de</strong>s incluyan también soluciones no factibles. Por ejemplo, en el caso anterior po<strong>de</strong>mos hacer<br />
que la <strong>vecindad</strong> <strong>de</strong> un recorrido incluya cada uno <strong>de</strong> los itinerarios obtenidos mediante la supresión <strong>de</strong><br />
uno <strong>de</strong> los vértices <strong>de</strong>l mismo. Para resaltar el hecho <strong>de</strong> que una <strong>vecindad</strong> contenga otros elementos<br />
a<strong>de</strong>más <strong>de</strong>l itinerario, daremos, como norma general, una <strong>de</strong>scripción combinatoria <strong>de</strong> las soluciones no<br />
factibles permitidas en la <strong>búsqueda</strong>. Nos referiremos a estas estructuras combinatorias no factibles como<br />
estructuras <strong>de</strong> referencia. Un camino <strong>de</strong> Hamilton sería un ejemplo <strong>de</strong> este tipo <strong>de</strong> estructuras.<br />
Po<strong>de</strong>mos imaginar un algoritmo <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> (para un problema <strong>de</strong> minimización <strong>de</strong><br />
costes)como compuesto <strong>de</strong> tres partes:<br />
(i) Un grafo <strong>de</strong> <strong>vecindad</strong> (NG) <strong>de</strong>finido con respecto a una instancia <strong>de</strong> problema específica,<br />
don<strong>de</strong> NG es un grafo dirigido con un nodo para cada solución factible que se cree (o una<br />
instancia <strong>de</strong> una estructura <strong>de</strong> referencia no factible), y que consta <strong>de</strong> un arco (S, T) siempre<br />
que T ∈ N(S).<br />
(ii) Un método <strong>de</strong> <strong>búsqueda</strong> <strong>de</strong>l grafo <strong>de</strong> <strong>vecindad</strong> en cada iteración.<br />
(iii) Un método que permita <strong>de</strong>terminar cuál es el siguiente nodo <strong>de</strong>l grafo <strong>de</strong> <strong>vecindad</strong> que se<br />
elegirá en la <strong>búsqueda</strong> <strong>de</strong>l paso anterior. Nos referiremos a este nodo como solución básica.<br />
El algoritmo termina cuando S es una solución localmente óptima con respecto a la <strong>vecindad</strong> dada.<br />
(Véase [1] para un estudio extensivo).<br />
A continuación <strong>de</strong>finiremos dos vecinda<strong>de</strong>s basadas en la distancia. La primera es Nk(S) = {T ∈ F :<br />
d(S, T) ≤ k}. Nos referiremos a estas vecinda<strong>de</strong>s como vecinda<strong>de</strong>s <strong>de</strong> distancia-k.<br />
5
En <strong>de</strong>terminadas instancias <strong>de</strong> problemas, dos soluciones factibles cualesquiera tienen la misma<br />
cardinalidad, como ocurre en el problema <strong>de</strong>l viajante <strong>de</strong> comercio (TSP: Travelling Salesman Problem),<br />
don<strong>de</strong> cada solución factible S representa un recorrido en un grafo completo <strong>por</strong> un número n <strong>de</strong><br />
ciuda<strong>de</strong>s, <strong>por</strong> lo que tiene un número n <strong>de</strong> arcos (véase [48] para más <strong>de</strong>talles sobre el TSP). Como regla<br />
general, afirmamos que se pue<strong>de</strong> obtener T mediante un intercambio simple <strong>de</strong> S cuando |S - T| = |T - S|<br />
= 1; y que se pue<strong>de</strong> obtener mediante un k-intercambio cuando |T - S| = |S - T| = k. Definimos la<br />
<strong>vecindad</strong> <strong>de</strong> k- intercambios <strong>de</strong> S como {T : |S - T| = |T - S| ≤ k}. Si dos soluciones factibles<br />
cualesquiera tienen la misma cardinalidad, la <strong>vecindad</strong> <strong>de</strong> k-intercambios <strong>de</strong> S será igual a N2k(S). Un<br />
ejemplo típico <strong>de</strong> <strong>vecindad</strong> <strong>de</strong> k-intercambios aplicada al problema <strong>de</strong>l viajante <strong>de</strong> comercio es la<br />
<strong>vecindad</strong> <strong>de</strong> doble intercambio, también conocida como <strong>vecindad</strong> 2-opt. En el grafo correspondiente a<br />
ella, cada uno <strong>de</strong> los nodos representa un recorrido, y dos recorridos serán vecinos cuando se pueda<br />
obtener uno a partir <strong>de</strong>l otro mediante un intercambio doble. Aplicando un método <strong>de</strong> <strong>búsqueda</strong><br />
exhaustiva (o con algunos atajos), la siguiente solución básica será una solución <strong>de</strong> mejora.<br />
De Nm(S) = F, se <strong>de</strong>spren<strong>de</strong> que realizar <strong>búsqueda</strong>s en la <strong>vecindad</strong> <strong>de</strong> distancia k pue<strong>de</strong> resultar más<br />
complicada a medida que el valor <strong>de</strong> k aumente. Por lo general, ocurre que esta <strong>vecindad</strong> crece<br />
exponencialmente cuando k no es un valor fijo, y que hallar la mejor solución (o incluso una<br />
solución mejorada) es NP-difícil cuando el problema original es también NP-difícil.<br />
3. Métodos <strong>de</strong> profundidad variable<br />
Para k = 1 ó 2, se pue<strong>de</strong>n realizar <strong>búsqueda</strong>s eficaces en las vecinda<strong>de</strong>s <strong>de</strong> k-intercambios (o, <strong>de</strong><br />
modo similar, las <strong>de</strong> distancia k), aunque la media <strong>de</strong> los óptimos locales que se obtienen suele resultar<br />
insuficiente. En cambio, para valores más altos <strong>de</strong> k, las vecinda<strong>de</strong>s <strong>de</strong> k-intercambios producen mejores<br />
óptimos locales, pero el esfuerzo necesario para realizar la <strong>búsqueda</strong> pue<strong>de</strong> ser excesivo. Los métodos <strong>de</strong><br />
profundidad variable son <strong>técnicas</strong> que permiten realizar <strong>búsqueda</strong>s parciales en las vecinda<strong>de</strong>s <strong>de</strong> k-<br />
intercambios. El objetivo <strong>de</strong> esta <strong>búsqueda</strong> parcial consiste en hallar soluciones que sean vecinas en el<br />
valor <strong>de</strong> la función objetivo a los óptimos globales, y que a la vez sean capaces <strong>de</strong> reducir drásticamente<br />
el tiempo <strong>de</strong> <strong>búsqueda</strong> en la <strong>vecindad</strong>, si bien no suelen garantizar óptimos locales. En los algoritmos <strong>de</strong><br />
<strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong>, entran en juego varios tipos <strong>de</strong> algoritmos para realizar<br />
<strong>búsqueda</strong>s parciales en la <strong>vecindad</strong> <strong>de</strong> k-intercambios. En este apartado analizaremos el algoritmo <strong>de</strong> Lin<br />
y Kernighan [50] para el TSP, así como otras heurísticas <strong>de</strong> profundidad variable aplicadas a <strong>búsqueda</strong>s<br />
en vecinda<strong>de</strong>s <strong>de</strong> k-intercambio en distintos problemas <strong>de</strong> optimización combinatoria. El apartado<br />
siguiente está <strong>de</strong>dicado a la <strong>de</strong>scripción <strong>de</strong> otros enfoques que, en tiempo polinómico, permiten realizar<br />
<strong>búsqueda</strong>s <strong>de</strong> modo implícito en un subconjunto <strong>de</strong> tamaño exponencial <strong>de</strong> la <strong>vecindad</strong> <strong>de</strong> k-intercambio<br />
cuando k no es un valor fijo.<br />
6
Antes <strong>de</strong> pasar a <strong>de</strong>scribir el algoritmo <strong>de</strong> Lin y Kernighan, veremos algunos aspectos relativos a la<br />
notación. Posteriormente, explicaremos el modo <strong>de</strong> generalizar dicho algoritmo a métodos <strong>de</strong><br />
profundidad variable (y a "ejection chains") para resolver heurísticamente problemas <strong>de</strong> optimización<br />
combinatoria. Supongamos que T y T’ son subconjuntos <strong>de</strong> E, aunque no necesariamente factibles. Una<br />
ruta que vaya <strong>de</strong> T a T’ será una secuencia T = T1, …, TK = T’ tal que d(Tj, Tj+1) = 1 para j = 1 a K - 1.<br />
Los métodos <strong>de</strong> profundidad variable se basan en una subrutina Move que tiene las siguientes<br />
características:<br />
1. En cada iteración, esta subrutina crea un subconjunto Tj y posiblemente también un subconjunto<br />
factible Sj a partir <strong>de</strong>l par <strong>de</strong> entrada (Sj-1,Tj-1) conforme a <strong>de</strong>terminados criterios <strong>de</strong> <strong>búsqueda</strong>. El<br />
subconjunto Tj pue<strong>de</strong> ser factible o no serlo. Representaremos esta operación como Move (Sj-1,Tj-1) =<br />
(Sj, Tj)<br />
2. d(Tj, Tj+1) = 1 para todo j = 1 a K - 1.<br />
3. Tj cumple las propieda<strong>de</strong>s adicionales, <strong>de</strong>pendiendo <strong>de</strong>l enfoque <strong>de</strong> profundidad variable.<br />
Llamemos T al recorrido actual <strong>de</strong>l problema <strong>de</strong>l viajante <strong>de</strong> comercio, suponiendo, sin pérdida <strong>de</strong><br />
generalidad, que T visita las ciuda<strong>de</strong>s siguiendo el or<strong>de</strong>n 1, 2, 3,…, n, 1. Po<strong>de</strong>mos <strong>de</strong>finir la <strong>vecindad</strong> <strong>de</strong><br />
intercambio-2 para T como la sustitución <strong>de</strong> los vértices (i, j), y (k, l) <strong>por</strong> otros dos; (i, k) y (j, l), o bien<br />
(i, l) y (j, k) para formar otro recorrido T’. Obsérvese que d(T, T’) = 4. La <strong>vecindad</strong> <strong>de</strong> intercambio-2 se<br />
pue<strong>de</strong> <strong>de</strong>scribir <strong>de</strong> un modo más formal aplicando 4 operaciones <strong>de</strong> la subrutina Move, en las que la<br />
primera <strong>de</strong> ellas suprime <strong>de</strong>l recorrido el vértice (i, j), la segunda inserta el vértice (i, k), la tercera<br />
suprime el vértice (k, l) y la cuarta y última inserta el vértice (j, l).<br />
Llamemos G = (N, A) a un grafo no dirigido en los nodos n; y P = v1, …, vn a un camino <strong>de</strong><br />
Hamilton <strong>de</strong> G con n nodos. Por otra parte, un stem and cycle (término acuñado <strong>por</strong> Glover [30]) es un<br />
subgrafo expandido <strong>de</strong> n arcos que se obtiene añadiendo un arco (i, j) a un camino <strong>de</strong> Hamilton, en el<br />
que i es un nodo extremo <strong>de</strong>l camino. Obsérvese que, al ser i y j los nodos extremos <strong>de</strong>l camino, la<br />
estructura stem and cycle es un ciclo <strong>de</strong> Hamilton, o, <strong>de</strong> modo equivalente, un recorrido. Si T es un<br />
camino o una estructura <strong>de</strong>l tipo mencionado, indicaremos su longitud total <strong>por</strong> medio <strong>de</strong> f(T).<br />
La heurística <strong>de</strong> Lin y Kernighan permite la sustitución <strong>de</strong> un total <strong>de</strong> n vértices al moverse <strong>de</strong> un<br />
recorrido S a un recorrido T; es <strong>de</strong>cir, d(S, T) equivale a un valor arbitrario k = 2n. El algoritmo<br />
comienza <strong>por</strong> suprimir un vértice <strong>de</strong>l recorrido original T1 construyendo un camino <strong>de</strong> Hamilton T2. En<br />
lo sucesivo, uno <strong>de</strong> los puntos extremos <strong>de</strong> T2 será constante y permanecerá constante hasta el fin <strong>de</strong> la<br />
iteración. El otro punto extremo se selecciona al comenzar la <strong>búsqueda</strong>. El movimiento par inserta un<br />
extremo en el camino <strong>de</strong> Hamilton T2j que inci<strong>de</strong> en el punto extremo no constante para obtener una<br />
7
estructura stem and cycle T2j+1. Por su parte, los movimientos impares <strong>de</strong> la iteración suprimen un<br />
extremo <strong>de</strong> la estructura stem and cycle existente T2j-1 para obtener un camino <strong>de</strong> Hamilton T2j. De cada<br />
camino <strong>de</strong> Hamilton T2j se construye implícitamente un recorrido factible S2j uniendo los dos nodos<br />
extremos. Al final <strong>de</strong> la iteración <strong>de</strong> Lin y Kernighan obtenemos el nuevo recorrido <strong>de</strong> la solución base<br />
Si, <strong>de</strong> modo que f(Si) =f(S2j) para todo j.<br />
A continuación <strong>de</strong>scribiremos con mayor <strong>de</strong>talle los pasos <strong>de</strong>l algoritmo <strong>de</strong> Lin y Kernighan. Cuando<br />
se produce un movimiento par, el vértice que se va a añadir es el <strong>de</strong> longitud mínima, que inci<strong>de</strong> sobre el<br />
punto extremo no constante, lo que se aña<strong>de</strong> al camino <strong>de</strong> Hamilton T2j únicamente si f(S)-f(T2j+1) > 0.<br />
El algoritmo <strong>de</strong> Lin y Kernighan [50] <strong>de</strong>scribe también un medio <strong>de</strong> mejorar la forma <strong>de</strong> elegir este<br />
vértice. La elección <strong>de</strong>l vértice que se va a añadir al camino <strong>de</strong> Hamilton T2j se realiza maximizando<br />
f(T2j) – f(T2j+2). Por otra parte, los vértices que se van a suprimir en los movimientos impares vienen<br />
<strong>de</strong>terminados exclusivamente <strong>por</strong> la estructura stem and cycle T2j-1 creada en el movimiento anterior, <strong>de</strong><br />
modo que T2j sea un camino <strong>de</strong> Hamilton. A la hora <strong>de</strong> elegir los vértices que se van a añadir, también se<br />
pue<strong>de</strong>n tener en cuenta otras restricciones. Varios estudios han consi<strong>de</strong>rado distintas combinaciones <strong>de</strong><br />
restricciones, como que un vértice ya suprimido no se pueda volver a añadir o que un vértice añadido<br />
previamente no pueda suprimirse en un movimiento posterior. Por último, el algoritmo <strong>de</strong> Lin y<br />
Kernighan termina con un óptimo local cuando no hay posibilidad <strong>de</strong> construir un recorrido que lo<br />
mejore tras consi<strong>de</strong>rar todos los nodos como el nodo fijo original.<br />
Veamos una ilustración <strong>de</strong>l algoritmo <strong>de</strong> Lin y Kernighan con un ejemplo numérico, partiendo<br />
<strong>de</strong>l recorrido <strong>de</strong> 10 nodos que muestra la figura 1(a). El algoritmo suprime primero el arco (1, 2)<br />
creando el camino <strong>de</strong> Hamilton <strong>de</strong> la figura 1(b). A continuación se aña<strong>de</strong> el arco (2, 6), lo que da como<br />
resultado la estructura stem and cycle <strong>de</strong> la figura 1(c).<br />
8
Figura 1. Ilustración <strong>de</strong>l algoritmo <strong>de</strong> Lin y Kernighan<br />
(a) Recorrido con 10 nodos. (b) Camino <strong>de</strong> Hamilton. (c) Estructura stem and cycle.<br />
Al suprimir el vértice (6, 5) <strong>de</strong> esta estructura obtenemos un camino <strong>de</strong> Hamilton, mientras que si<br />
añadimos el vértice (5, 8) tenemos otra estructura stem and cycle. Los movimientos <strong>de</strong> inserción <strong>de</strong><br />
vértices en la heurística <strong>de</strong> Lin y Kernighan se hallan guiados <strong>por</strong> criterios <strong>de</strong> costes basados en el<br />
"beneficio acumulativo", <strong>de</strong>finiéndose los movimientos <strong>de</strong> supresión <strong>de</strong> vértices únicamente con<br />
intención <strong>de</strong> generar la estructura <strong>de</strong>l camino. El algoritmo <strong>de</strong> Lin y Kernighan alcanza un óptimo local<br />
cuando, <strong>de</strong>spués <strong>de</strong> haber consi<strong>de</strong>rado todos los nodos como el nodo <strong>de</strong> inicio, no se obtienen<br />
soluciones <strong>de</strong> mejora.<br />
Diversas variantes <strong>de</strong> este algoritmo han dado lugar a soluciones heurísticas <strong>de</strong> <strong>gran</strong> calidad. Se<br />
9
trata <strong>de</strong> algoritmos que recurren a distintas mejoras, como los movimientos 2-opt, 3-opt y 4-opt<br />
especial. ([29], [41], [42], [50], [51], [52], [64]) a fin <strong>de</strong> obtener un itinerario que no se podría diseñar<br />
mediante los movimientos básicos <strong>de</strong> la heurística <strong>de</strong> Lin y Kernighan. Asimismo, se emplean<br />
estructuras <strong>de</strong> datos capaces <strong>de</strong> actualizar <strong>de</strong> modo eficiente los itinerarios, y así po<strong>de</strong>r lograr tanto la<br />
eficiencia computacional como la calidad <strong>de</strong> la solución ([24], [42]). Papadimitriou [54] ha <strong>de</strong>mostrado<br />
que el problema <strong>de</strong> <strong>de</strong>terminar un óptimo local con respecto a una versión <strong>de</strong>l algoritmo <strong>de</strong> Lin y<br />
Kernighan es un problema PLS-completo.<br />
Po<strong>de</strong>mos <strong>de</strong>finir los métodos <strong>de</strong> profundidad variable para el TSP mediante un procedimiento <strong>de</strong><br />
generalización <strong>de</strong> la heurística <strong>de</strong> Lin y Kernighan. Se trata <strong>de</strong> un procedimiento que toma como datos<br />
<strong>de</strong> partida un itinerario factible S, aplicando a continuación la función Move más arriba. En cada<br />
iteración, esta función crea el par (Tj, Sj), en el que el subconjunto Tj pue<strong>de</strong> ser una solución factible, o<br />
bien ser una instancia no factible <strong>de</strong> una estructura <strong>de</strong> referencia; y el subconjunto Sj es factible. A<br />
continuación, se invoca la función Move para r iteraciones, <strong>de</strong>pendiendo el valor <strong>de</strong> r <strong>de</strong> la regla<br />
directriz a<strong>de</strong>cuada. Por último, el procedimiento <strong>de</strong> <strong>búsqueda</strong> <strong>de</strong> profundidad variable da como<br />
resultado el subconjunto factible Sk que tenga el mejor valor <strong>de</strong> función objetivo hallado en la<br />
<strong>búsqueda</strong>.<br />
Procedimiento: <strong>búsqueda</strong> <strong>de</strong> profundidad variable (S);<br />
Inicio:<br />
Final<br />
S1 := T1 := S;<br />
para j := 2 a r (Tj, Sj) = Move(S j-1, Tj-1);<br />
seleccionar el conjunto Sk que minimice (f(Sj): 1 ≤ j ≤ r);<br />
Este tipo concreto <strong>de</strong> <strong>búsqueda</strong> <strong>de</strong> profundidad variables se basa en una heurística llamada “Move”,<br />
que crea <strong>de</strong> forma sistemática un itinerario <strong>de</strong> soluciones comenzando <strong>por</strong> la solución inicial. Al tratarse<br />
<strong>de</strong> un marco bastante flexible, existen varias formas <strong>de</strong> diseñar este procedimiento. Las características<br />
<strong>de</strong>l diseño <strong>de</strong> Move pue<strong>de</strong>n suponer la diferencia entre una heurística capaz <strong>de</strong> pro<strong>por</strong>cionar resultados<br />
y otra que no lo sea tanto.<br />
En el procedimiento arriba <strong>de</strong>scrito, hemos supuesto que Move crea en cada fase una solución<br />
simple. En realidad, esta heurística ofrece la posibilidad <strong>de</strong> crear soluciones factibles múltiples en cada<br />
fase ([30], [61]) o ninguna solución factible en una fase <strong>de</strong>terminada ([30], [58]).<br />
Muchos métodos <strong>de</strong> profundidad variable requieren las soluciones intermedias Tj para po<strong>de</strong>r<br />
cumplir ciertas propieda<strong>de</strong>s topológicas (o estructurales). En el algoritmo <strong>de</strong> Lin y Kernighan, <strong>por</strong><br />
10
ejemplo, es necesario que para cada valor impar <strong>de</strong> j, Tj sea una estructura stem and cycle, así como que,<br />
para cada valor par <strong>de</strong> j, Tj sea un camino <strong>de</strong> Hamilton. En el siguiente apartado veremos también<br />
ejemplos en los que Tj cumple otras propieda<strong>de</strong>s que no son estructurales; como, <strong>por</strong> ejemplo, las que<br />
<strong>de</strong>pen<strong>de</strong>n <strong>de</strong>l or<strong>de</strong>n <strong>de</strong> los índices.<br />
Glover [30] consi<strong>de</strong>ró una clase estructurada <strong>de</strong> métodos <strong>de</strong> profundidad variable llamados<br />
ejection chains y basados en métodos <strong>de</strong> itinerarios alternativos clásicos, ampliando y generalizando las<br />
i<strong>de</strong>as <strong>de</strong> Lin y Kernighan. En palabras <strong>de</strong> Glover: “De modo <strong>muy</strong> esquemático, una ejection chain se<br />
inicia seleccionando un conjunto <strong>de</strong> elementos que van a experimentar un cambio <strong>de</strong> estado (e.g, ocupar<br />
nuevas posiciones, recibir nuevos valores o ambas cosas). Este cambio tendrá <strong>por</strong> efecto i<strong>de</strong>ntificar una<br />
serie <strong>de</strong> conjuntos distintos, que tengan la propiedad <strong>de</strong> que los elementos <strong>de</strong> al menos uno <strong>de</strong> ellos<br />
<strong>de</strong>ben ser “eyectados” <strong>de</strong> su estado actual. Por lo general, los pasos <strong>de</strong> cambio <strong>de</strong> estado y <strong>de</strong> eyección<br />
se alternan, y las opciones existentes para cada uno <strong>de</strong> ellos <strong>de</strong>pen<strong>de</strong>rán <strong>de</strong>l efecto cumulativo <strong>de</strong> los<br />
pasos previos (estando influido generalmente, aunque no siempre, <strong>por</strong> el paso inmediatamente anterior).<br />
En algunos casos, una secuencia en cascada <strong>de</strong> operaciones indica que se ha producido un efecto<br />
dominó. La terminología <strong>de</strong> la "ejection chain" preten<strong>de</strong> sugerir, no limitar; pro<strong>por</strong>cionando un hilo<br />
conductor que sirva para vincular una serie <strong>de</strong> procedimientos útiles para sacar el máximo partido <strong>de</strong><br />
la estructura sin fijar reglas <strong>de</strong> admisión que excluyan otros tipos <strong>de</strong> clasificaciones.” (La cursiva es un<br />
añadido).<br />
En el presente estudio, emplearemos una <strong>de</strong>finición más restrictiva <strong>de</strong> las ejection chains. Así,<br />
nos referiremos al método <strong>de</strong> profundidad variable como una ejection chain si:<br />
(i) |T1| = |T3| = |T5| =…= n, y:<br />
(ii) |T 2| = |T4| = |T6| =…= n +1 (o n-1).<br />
Para cada valor par <strong>de</strong> j, si |Tj| = |S|- 1, Tj se obtiene a partir <strong>de</strong> Tj-1 eyectando un elemento. De otro<br />
modo, |Tj| = |S|+1, y Tj+1 se obtiene eyectando un elemento a partir <strong>de</strong> Tj. Muchos <strong>de</strong> los métodos <strong>de</strong><br />
profundidad variable publicados en estudios pue<strong>de</strong>n contemplarse como ejection chains. Estos métodos<br />
suelen suponer la construcción <strong>de</strong> diferentes estructuras <strong>de</strong> referencia, junto con una serie <strong>de</strong> reglas que<br />
permitan obtener distintas soluciones factibles. Por lo que sabemos, todos los métodos <strong>de</strong> profundidad<br />
variable aplicados al problema <strong>de</strong>l viajante <strong>de</strong> comercio <strong>de</strong> los que tenemos noticia pue<strong>de</strong>n<br />
contemplarse como ejection chains.<br />
Po<strong>de</strong>mos suponer que los nodos <strong>de</strong>l grafo <strong>de</strong> <strong>vecindad</strong> referido a la <strong>vecindad</strong> <strong>de</strong> Lin y<br />
Kernighan se hallan compuestos <strong>por</strong> caminos y estructuras <strong>de</strong> stem-and-cycle. (Recuér<strong>de</strong>se que los<br />
itinerarios son también instancias <strong>de</strong> stem-and cycle. Los puntos finales <strong>de</strong> cada vértice <strong>de</strong>l grafo <strong>de</strong><br />
<strong>vecindad</strong> enlazarían un camino con una estructura stem and cycle. La técnica <strong>de</strong> <strong>búsqueda</strong> sería la<br />
11
propuesta <strong>por</strong> Lin y Kernighan [44], y el proceso <strong>de</strong> selección consistiría en elegir el mejor <strong>de</strong> los<br />
itinerarios hallados al realizar la <strong>búsqueda</strong>. Por consiguiente, las estructuras <strong>de</strong> referencia <strong>de</strong>scritas para<br />
las ejection chains serían los nodos <strong>de</strong>l grafo <strong>de</strong> <strong>vecindad</strong> <strong>de</strong> las <strong>técnicas</strong> <strong>de</strong> ejection chain. Toda técnica<br />
en la que la siguiente solución básica sea mucho mayor que la distancia unitaria <strong>de</strong>s<strong>de</strong> la solución<br />
básica existente es un "método <strong>de</strong> profundidad variable". Una ejection chain es un método <strong>de</strong><br />
profundidad variable en el que los vecinos se caracterizan <strong>por</strong> ser subconjuntos los unos <strong>de</strong> los otros (y<br />
en los que, <strong>por</strong> tanto, un elemento se eyecta al trasladarse <strong>de</strong>l más <strong>gran</strong><strong>de</strong> al más pequeño).<br />
En el método <strong>de</strong>scrito anteriormente, las <strong>técnicas</strong> <strong>de</strong> profundidad variable se basan en la función<br />
Move. También es posible crear subconjuntos <strong>de</strong> tamaño exponencial <strong>de</strong> Nk en los que se realicen<br />
<strong>búsqueda</strong>s mediante flujos <strong>de</strong> re<strong>de</strong>s. En estas vecinda<strong>de</strong>s, se pue<strong>de</strong> también llegar a cualquier vecino<br />
mediante una secuencia <strong>de</strong> funciones Move en un grafo <strong>de</strong> <strong>vecindad</strong> a<strong>de</strong>cuadamente <strong>de</strong>finido. Conviene<br />
tener presente que, en el caso <strong>de</strong>l algoritmo <strong>de</strong> Lin y Kernighan, la <strong>vecindad</strong> es <strong>de</strong> tamaño polinómico, y<br />
que es la propia <strong>búsqueda</strong> la que lleva a obtener soluciones sustancialmente diferentes <strong>de</strong> la solución<br />
básica. En el siguiente apartado analizaremos estas <strong>técnicas</strong> basadas en flujos <strong>de</strong> re<strong>de</strong>s, algunas <strong>de</strong> las<br />
cuales pue<strong>de</strong>n también contemplarse como <strong>técnicas</strong> <strong>de</strong> ejection chain cuando existe un medio natural <strong>de</strong><br />
asociar una ejection chain (una secuencia alternativa <strong>de</strong> adiciones y supresiones) a elementos <strong>de</strong> la<br />
<strong>vecindad</strong> ([30], [31], [58], [21]).<br />
Los algoritmos basados en la profundidad variable y en la ejection chain se han aplicado con<br />
éxito a la obtención <strong>de</strong> soluciones válidas para diversos problemas <strong>de</strong> optimización combinatoria.<br />
Autores como Glover [30], Rego [61], Zachariasen y Dum [83], Johnson y McGeoch [42], Mak y<br />
Morton [51], y Pesch y Glover [55] han utilizado estos algoritmos para la resolución <strong>de</strong>l problema <strong>de</strong>l<br />
viajante <strong>de</strong> comercio. El problema <strong>de</strong>l enrutamiento <strong>de</strong> vehículos ha sido tratado <strong>por</strong> Rego y Roucairol<br />
[63] y Rego [62], mientras que Dondorf y Pesch [13] han propuesto la solución a algoritmos <strong>de</strong><br />
clustering mediante ejection chains. Por su parte, Yagiura et al. ([80]) han consi<strong>de</strong>rado la aplicación <strong>de</strong><br />
métodos <strong>de</strong> profundidad variable al problema <strong>de</strong> las asignaciones en general, al igual que distintas<br />
variantes <strong>de</strong> la ejection chain [79]. Asimismo, Laguna et al. [47] aplican algoritmos cortos <strong>de</strong> estructura<br />
ejection chain al problema <strong>de</strong> las asignaciones multinivel en general. Estas <strong>técnicas</strong> se aplican también al<br />
problema <strong>de</strong> la partición <strong>de</strong>l grafo uniforme ([16], [20], [44], [53]), al problema <strong>de</strong> las asignaciones <strong>por</strong><br />
categorías ([3]), al problema <strong>de</strong> asignación <strong>de</strong> canal ([17]), y al <strong>de</strong> distribución <strong>de</strong> turnos <strong>de</strong> enfermería-<br />
([14]). Por último, Sourd [70] aplica una clase <strong>muy</strong> general <strong>de</strong> procedimientos <strong>de</strong> mejora <strong>de</strong> vecinda<strong>de</strong>s<br />
a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong> en los que la distancia entre dos vecinos <strong>de</strong>pen<strong>de</strong> <strong>de</strong> las tareas programadas en<br />
máquinas no relacionadas. El <strong>de</strong>sarrollo <strong>de</strong> estas vecinda<strong>de</strong>s se lleva a cabo mediante la generación <strong>de</strong><br />
árboles <strong>de</strong> enumeración parciales, aunque <strong>de</strong> tamaño <strong>gran</strong><strong>de</strong>, basados en las soluciones existentes y<br />
12
uscados <strong>por</strong> heurística.<br />
4. Algoritmos <strong>de</strong> mejora basados en flujos <strong>de</strong> re<strong>de</strong>s<br />
En este apartado estudiaremos algoritmos locales <strong>de</strong> mejora en los que la <strong>búsqueda</strong> <strong>por</strong><br />
vecinda<strong>de</strong>s se lleva a cabo mediante algoritmos basados en flujos <strong>de</strong> re<strong>de</strong>s. Las <strong>técnicas</strong> <strong>de</strong> flujos <strong>de</strong><br />
re<strong>de</strong>s empleadas para i<strong>de</strong>ntificar vecinda<strong>de</strong>s <strong>de</strong> mejora pue<strong>de</strong>n agruparse en tres categorías: (i) métodos<br />
<strong>de</strong> <strong>búsqueda</strong> <strong>de</strong> ciclo <strong>de</strong> coste mínimo; (ii) métodos basados en la programación dinámica o en la técnica<br />
<strong>de</strong>l camino más corto; y (iii) métodos basados en la <strong>búsqueda</strong> <strong>de</strong> asignaciones y ajustes <strong>de</strong> coste mínimo.<br />
Las vecinda<strong>de</strong>s <strong>de</strong>finidas <strong>por</strong> ciclos pue<strong>de</strong>n contemplarse como generalizaciones <strong>de</strong> vecinda<strong>de</strong>s <strong>de</strong> dos<br />
intercambios, mientras que las basadas en asignaciones se pue<strong>de</strong>n enten<strong>de</strong>r como generalizaciones <strong>de</strong><br />
vecinda<strong>de</strong>s a partir <strong>de</strong> inserciones. En los tres subapartados que siguen, se ofrecen <strong>de</strong>finiciones generales<br />
<strong>de</strong> estas vecinda<strong>de</strong>s exponenciales, <strong>de</strong>scribiéndose a<strong>de</strong>más los algoritmos <strong>de</strong> flujos <strong>de</strong> re<strong>de</strong>s empleados<br />
en la <strong>búsqueda</strong> <strong>de</strong> vecinda<strong>de</strong>s mejoradas. En muchos <strong>de</strong> los problemas, la <strong>vecindad</strong> <strong>de</strong> mejora se<br />
<strong>de</strong>termina aplicando un algoritmo <strong>de</strong> flujos <strong>de</strong> re<strong>de</strong>s a un grafo relacionado, lo que se conoce como grafo<br />
<strong>de</strong> mejora.<br />
4.1 Vecinda<strong>de</strong>s <strong>de</strong>finidas <strong>por</strong> ciclos<br />
En este subapartado, comenzaremos <strong>por</strong> <strong>de</strong>finir un problema <strong>de</strong> partición genérica, para a<br />
continuación pasar a <strong>de</strong>finir la <strong>vecindad</strong> <strong>de</strong> dos intercambios y la <strong>vecindad</strong> <strong>de</strong> intercambio cíclico.<br />
Sea A = {a1, a2, a3, …, an} un conjunto formado <strong>por</strong> n elementos. El conjunto {S1, S2, S3, …, SK}<br />
<strong>de</strong>fine una Kpartición <strong>de</strong> A f A cuando cada conjunto Sj es no vacío, los conjuntos no se hallan<br />
agrupados <strong>por</strong> pares, y su punto <strong>de</strong> unión es A. Para cualquier subconjunto S <strong>de</strong> A, llamaremos d[S] al<br />
coste <strong>de</strong> S. Por tanto, el problema <strong>de</strong> partición consiste en hallar una partición <strong>de</strong> A en tantos<br />
subconjuntos <strong>de</strong> K como sean necesarios para minimizar Σk d[Sk].<br />
Sea {S1, S2, S3, …, SK} cualquier partición factible. Diremos entonces que {T1, T2, T3, …, TK}<br />
será un 2-vecino <strong>de</strong> {S1, S2, S3, …, SK} cuando pueda obtenerse intercambiando dos elementos que se<br />
encuentren en subconjuntos diferentes. La <strong>vecindad</strong> <strong>de</strong> dos intercambios <strong>de</strong> {S1, S2, S3, …, SK} se halla<br />
formada <strong>por</strong> todas las vecinda<strong>de</strong>s-2 <strong>de</strong> {S1, S2, S3, …, SK}. De don<strong>de</strong> <strong>de</strong>ducimos que {T1, T2, T3, …, TK}<br />
es una <strong>vecindad</strong> cíclica <strong>de</strong> {S1, S2, S3, …, SK} cuando se pueda obtener transfiriendo elementos simples a<br />
lo largo <strong>de</strong> una secuencia <strong>de</strong> subconjuntos <strong>de</strong> k ≤ K en S. Sea también (Sh 1 , Sm 2 , Sn 3 , …, Sp k ) una<br />
secuencia <strong>de</strong> k subconjuntos tal que hace necesario que h = p, que es el último subconjunto <strong>de</strong> la<br />
secuencia idéntico a Sh 1 . A esta transferencia <strong>de</strong> elementos la llamaremos intercambio cíclico, quedando<br />
13
ilustrada en la figura 2. En el presente ejemplo, el nodo 9 pasa <strong>de</strong>l subconjunto S1 al subconjunto S4; el<br />
nodo 2 se transfiere <strong>de</strong>l subconjunto S4 al subconjunto S5, el nodo 3 pasa <strong>de</strong>l subconjunto S5 al S3 y,<br />
finalmente, el intercambio se completa transfiriendo el nodo 14 <strong>de</strong>l subconjunto S3 al S1. De un modo<br />
análogo pue<strong>de</strong> <strong>de</strong>finirse un vecino <strong>de</strong> camino. Des<strong>de</strong> un punto <strong>de</strong> vista matemático, no resulta difícil<br />
convertir un intercambio <strong>de</strong> camino en un intercambio cíclico añadiendo los nodos <strong>de</strong> prueba a<strong>de</strong>cuados.<br />
Por lo general, el número <strong>de</strong> vecinda<strong>de</strong>s cíclicas es sustancialmente mayor que el <strong>de</strong> vecinda<strong>de</strong>s <strong>de</strong> dos<br />
intercambios (2-vecinda<strong>de</strong>s). Mientras que hay O(n 2 ) 2-vecinda<strong>de</strong>s para un valor fijo <strong>de</strong> k, existen O(n K )<br />
vecinos cíclicos. Si se permite que la variación <strong>de</strong> k sea paralela a la <strong>de</strong> n, tendremos un número<br />
exponencial <strong>de</strong> vecinos cíclicos.<br />
Thompson [75], Thompson y Orlin [76], y Thompson y Psaraftis [77] han mostrado la forma <strong>de</strong><br />
obtener una <strong>vecindad</strong> mejorada en la <strong>vecindad</strong> <strong>de</strong> intercambio cíclico hallando un ciclo <strong>de</strong> "subconjunto<br />
no agrupado" <strong>de</strong> coste negativo en un grafo <strong>de</strong> mejora. Expondremos a continuación cómo construir<br />
dicho grafo. Sea A = {a1, a2,…, an} que es el conjunto <strong>de</strong> elementos que componen el problema <strong>de</strong><br />
partición <strong>de</strong>l conjunto original, y llamemos S[i] al subconjunto en el que se encuentra el elemento ai. El<br />
grafo <strong>de</strong> mejora es un grafo G = (V, E) en el que V = {1, 2,…, n} es un conjunto <strong>de</strong> nodos que se<br />
correspon<strong>de</strong> con los índices <strong>de</strong> los elementos <strong>de</strong> A <strong>de</strong>l problema original. Sea asimismo E = {(i, j): S[i]<br />
≠ S[j]}, don<strong>de</strong> un arco (i, j) correspon<strong>de</strong> a la transferencia <strong>de</strong>l nodo i <strong>de</strong>s<strong>de</strong> S[i] a S[j] y a la supresión <strong>de</strong><br />
j <strong>de</strong>s<strong>de</strong> S[j]. Para cada arco (i, j) ∈ E, haremos que c[i, j] = d[{i} ∪ S[j]\{j}] – d[S[j]], es <strong>de</strong>cir, el<br />
incremento en el coste <strong>de</strong> S[j] cuando se aña<strong>de</strong> i al conjunto y se suprime j. Decimos que un ciclo W en<br />
14
G no está agrupado en el subconjunto cuando, para cada par i y j <strong>de</strong> los nodos <strong>de</strong> W, S[i] ≠ S[j], es<br />
<strong>de</strong>cir, los elementos <strong>de</strong> A correspondientes a los elementos <strong>de</strong> W se encuentran todos en subconjuntos<br />
diferentes. Existe una correspon<strong>de</strong>ncia entre el mantenimiento <strong>de</strong> costes uno a uno en los intercambios<br />
cíclicos <strong>de</strong>l problema <strong>de</strong> la partición y el mantenimiento en los ciclos no asignados en el subconjunto <strong>de</strong>l<br />
grafo <strong>de</strong> mejora. Concretamente existe, para cada intercambio cíclico <strong>de</strong> coste negativo, un ciclo no<br />
asignado en el subconjunto <strong>de</strong>l grafo <strong>de</strong> mejora. Desgraciadamente, el problema consistente en<br />
<strong>de</strong>terminar si hay un ciclo no asignado en el subconjunto <strong>de</strong>l grafo <strong>de</strong> mejora es un problema NP-<br />
completo, y el consistente en hallar un ciclo no asignado en el subconjunto <strong>de</strong> coste negativo es NP-<br />
difícil. (Véase, <strong>por</strong> ejemplo, Thompson [75], Thompson y Orlin [76], y Thompson y Psaraftis [77].)<br />
Aun cuando este último problema sea NP-difícil, existen heurísticas que han <strong>de</strong>mostrado su<br />
eficacia en la <strong>búsqueda</strong> <strong>de</strong>l grafo. (Véase, <strong>por</strong> ejemplo, Thompson y Psaraftis [77] y Ahuja et al. [2].)<br />
La <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> <strong>de</strong> intercambio cíclico se aplica con éxito a varios problemas <strong>de</strong><br />
optimización combinatoria que pue<strong>de</strong>n caracterizarse como problemas <strong>de</strong> partición específica.<br />
Thompson y Psaraftis [77], Gendreau et al. [25], y Fahrion y Wre<strong>de</strong> [19] resuelven el problema <strong>de</strong>l<br />
enrutamiento <strong>de</strong> vehículos mediante este tipo <strong>de</strong> <strong>búsqueda</strong>, mientras que Frangioni et al. [23] aplican<br />
intercambios cíclicos a la programación <strong>de</strong> máquinas en periodos mínimos. Thompson y Psaraftis [77]<br />
han <strong>de</strong>mostrado también la aplicación <strong>de</strong> este método a problemas <strong>de</strong> programación . Por su parte, Ahuja<br />
et al. [2], empleando intercambios cíclicos, han <strong>de</strong>sarrollado las mejores soluciones existentes para un<br />
conjunto ampliamente usado <strong>de</strong> instancias <strong>de</strong> referencia en problemas <strong>de</strong> árboles <strong>de</strong> expansión mínima<br />
capacitados.<br />
La i<strong>de</strong>a <strong>de</strong> hallar soluciones <strong>de</strong> mejora mediante la <strong>de</strong>terminación <strong>de</strong> ciclos <strong>de</strong> coste negativo en<br />
grafos <strong>de</strong> mejoras se ha aplicado también en otros contextos. Talluri [74] i<strong>de</strong>ntifica intercambios <strong>de</strong><br />
ahorro <strong>de</strong> costes <strong>de</strong> equipo entre turnos <strong>de</strong> vuelos en problemas <strong>de</strong> asignación diaria <strong>de</strong> flota aérea<br />
hallando ciclos <strong>de</strong> coste negativo en una red relacionada. El problema <strong>de</strong> asignación <strong>de</strong> flota pue<strong>de</strong><br />
plantearse como un problema <strong>de</strong> flujo multiservicio entero sujeto a restricciones <strong>de</strong> lado, en el que cada<br />
servicio hace referencia a un tipo <strong>de</strong> flota. Talluri consi<strong>de</strong>ra una solución dada restringida a dos únicos<br />
tipos <strong>de</strong> flota, buscando a partir <strong>de</strong> ella mejoras que puedan obtenerse mediante el intercambio <strong>de</strong> un<br />
número <strong>de</strong> vuelos entre ambos tipos <strong>de</strong> flota. Así, <strong>de</strong>sarrolla un grafo <strong>de</strong> mejora asociado, <strong>de</strong>mostrando<br />
que las vecinda<strong>de</strong>s <strong>de</strong> mejora se correspon<strong>de</strong>n con los ciclos <strong>de</strong> coste negativo <strong>de</strong>l grafo <strong>de</strong> mejora.<br />
Schneur y Orlin [68] y Rockafellar [65] resuelven el problema <strong>de</strong> flujo multiservicio lineal <strong>de</strong>tectando<br />
flujo y enviándolos iterativamente <strong>por</strong> los ciclos <strong>de</strong> coste negativo. Esta técnica se extien<strong>de</strong>, <strong>de</strong> hecho, a<br />
la heurística <strong>de</strong> mejora basada en ciclos para el problema <strong>de</strong> flujo multiservicio entero. En [81], Wayne<br />
ofrece un algoritmo <strong>de</strong> cancelación <strong>de</strong> ciclo para resolver el problema <strong>de</strong>l flujo <strong>de</strong> coste mínimo<br />
generalizado. Firla et al. [22] introducen un grafo <strong>de</strong> mejora para la intersección <strong>de</strong> dos programas<br />
15
enteros cualesquiera. Los caminos y ciclos <strong>de</strong> esta red correspon<strong>de</strong>n a posibilida<strong>de</strong>s <strong>de</strong> mejora <strong>de</strong><br />
soluciones factibles. A<strong>de</strong>más, esta red da lugar a una <strong>de</strong>finición algorítmica <strong>de</strong>l problema <strong>de</strong>l b-ajuste <strong>de</strong><br />
peso bipartito. Los algoritmos analizados <strong>por</strong> Glover y Punnen [28] y Yeo [78] permiten construir<br />
itinerarios <strong>de</strong>l viajante <strong>de</strong> comercio que resultan mejores que un número exponencial <strong>de</strong> itinerarios.<br />
Estos algoritmos se pue<strong>de</strong>n contemplar, asimismo, como el cálculo <strong>de</strong> un ciclo <strong>de</strong> coste mínimo en una<br />
red consi<strong>de</strong>rada <strong>de</strong> capas especiales implícitamente consi<strong>de</strong>rada. Veremos esta heurística <strong>de</strong> forma más<br />
<strong>de</strong>tallada en el apartado 5.<br />
4.2 Vecinda<strong>de</strong>s <strong>de</strong>finidas <strong>por</strong> caminos (o <strong>por</strong> programación dinámica)<br />
A continuación analizaremos tres tipos distintos <strong>de</strong> algoritmos <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong><br />
basados en caminos más cortos o en programación dinámica, tomando como contexto el problema <strong>de</strong>l<br />
viajante <strong>de</strong> comercio. Aplicados al mismo, po<strong>de</strong>mos contemplar estos enfoques <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong><br />
<strong>vecindad</strong> como: (i) adición y supresión <strong>de</strong> vértices secuencialmente, (ii) aceptación en intercambios<br />
paralelos múltiples, entendiendo <strong>de</strong>finido cada intercambio como la permuta <strong>de</strong>l or<strong>de</strong>n actual <strong>de</strong> dos<br />
ciuda<strong>de</strong>s en un recorrido, y (iii) cambios cíclicos en el itinerario existente. Veamos estas vecinda<strong>de</strong>s con<br />
mayor <strong>de</strong>talle.<br />
4.2.1 Creación <strong>de</strong> un nuevo vecino mediante la adición o supresión <strong>de</strong> arcos secuencialmente<br />
Examinaremos en primer lugar una clase <strong>de</strong> métodos basados en el camino más corto, que<br />
consi<strong>de</strong>ran los vecinos obtenidos añadiendo o suprimiendo vértices alternativamente <strong>de</strong>l itinerario<br />
existente. Se trata <strong>de</strong> métodos que realizan <strong>de</strong> modo exhaustivo <strong>búsqueda</strong>s en la <strong>vecindad</strong> <strong>de</strong> ejection<br />
chain tratada en el apartado 3, con el añadido <strong>de</strong> restricciones adicionales en los vértices. Para<br />
simplificar, damos <strong>por</strong> hecho que el itinerario S pasa <strong>por</strong> las ciuda<strong>de</strong>s siguiendo el or<strong>de</strong>n 1, 2, 3, …, n, 1.<br />
Empleando la terminología <strong>de</strong>l apartado 3, llamaremos itinerario T a un vecino <strong>de</strong> k-intercambios <strong>de</strong> S, y<br />
al camino que va <strong>de</strong>s<strong>de</strong> S a T, la secuencia S = T1, …, TK = T. Estas vecinda<strong>de</strong>s correspon<strong>de</strong>n a<br />
soluciones <strong>por</strong> aproximaciones sucesivas creadas mediante los caminos pares e impares <strong>de</strong>scritos en<br />
Punnen y Glover [58] entre varias otras vecinda<strong>de</strong>s y soluciones <strong>por</strong> aproximaciones sucesivas<br />
construidas a partir <strong>de</strong> diversas clases <strong>de</strong> estructuras <strong>de</strong> camino. La solución <strong>por</strong> aproximaciones<br />
sucesivas generada <strong>por</strong> los caminos impares ya fue <strong>de</strong>sarrollada <strong>de</strong> modo in<strong>de</strong>pendiente <strong>por</strong> Firla et<br />
al.[21]. A efectos ilustrativos <strong>de</strong> este tipo <strong>de</strong> solución generada a partir <strong>de</strong> caminos tanto pares como<br />
impares, veamos el siguiente algoritmo:<br />
(i) Se elimina el vértice (n, 1) para obtener un camino <strong>de</strong> Hamilton T2 y se aña<strong>de</strong> el vértice<br />
16
(1, i) <strong>de</strong>s<strong>de</strong> el nodo 1 al nodo i (don<strong>de</strong> i > 2) para obtener una estructura stem and cycle<br />
T3.<br />
(ii) El actual nodo terminal <strong>de</strong>l camino es el nodo i. Se elimina el vértice (i, i-1) y se aña<strong>de</strong><br />
el vértice (i-1, j) para i < j < n, creando primero un camino <strong>de</strong> Hamilton y a<br />
continuación una estructura stem and cycle.<br />
(iii) Se comprueba si se ha alcanzado un criterio <strong>de</strong> terminación. Si se alcanza, se sigue al<br />
paso (iv). Si no, se <strong>de</strong>fine i = j y se vuelve al paso (ii).<br />
(iii) Se elimina el vértice (j, j-1) y se aña<strong>de</strong> el vértice final (j-1, n) para completar el<br />
recorrido.<br />
Figura 3. Ilustración <strong>de</strong>l intercambio <strong>de</strong> camino alternativo.<br />
La figura 3 ilustra este proceso en un itinerario <strong>de</strong> 9 nodos S = (1, 2,…, 9, 1). El<br />
procedimiento <strong>de</strong> intercambio <strong>de</strong> camino se inicia con la supresión <strong>de</strong>l vértice (n, 1) y la adición <strong>de</strong>l<br />
vértice (1, 4). A continuación se elimina el vértice (3, 4) y se aña<strong>de</strong> el vértice (3, 7). Por último, se<br />
crea el nuevo itinerario T suprimiendo el vértice (6, 7) y añadiendo el vértice (6, 9). En la figura<br />
3(a) los vértices añadidos aparecen representados mediante líneas en negrita y los eliminados<br />
mediante una raya sobre el vértice. La figura 3(b) ilustra el nuevo itinerario que se obtiene tras el<br />
intercambio <strong>de</strong> camino.<br />
Firla et al.[21], Glover [30] y Punnen y Glover [58] han <strong>de</strong>mostrado que se pue<strong>de</strong> obtener una<br />
solución <strong>de</strong> mejora para esta <strong>vecindad</strong> en tiempo O(n 2 ), hallando en un grafo <strong>de</strong> mejora un camino<br />
<strong>de</strong> longitud mínima par o impar. Describimos aquí un grafo <strong>de</strong> mejora que permite i<strong>de</strong>ntificar la<br />
mejor <strong>vecindad</strong> <strong>de</strong> un itinerario hallando un camino más corto con un número <strong>de</strong> nodos par o impar.<br />
Recor<strong>de</strong>mos que S = (1, 2, 3,…, n, 1) es el itinerario existente <strong>de</strong>l problema <strong>de</strong>l viajante <strong>de</strong><br />
17
comercio con n nodos. El grafo <strong>de</strong> mejora es un grafo G = (V, E) en el que V = {1, 2,…, n}, lo que<br />
correspon<strong>de</strong> a los nodos <strong>de</strong>l problema original, y don<strong>de</strong> E = {(i, j) : 1 = i < j-1 < n} es un conjunto<br />
<strong>de</strong> arcos dirigidos. Los arcos (1, j) ∈ E (<strong>de</strong> modo que 2 < j = n) correspon<strong>de</strong>n a la supresión <strong>de</strong>l<br />
vértice (n, 1) y a la adición <strong>de</strong>l vértice (1, j), y los arcos (i, j) ∈ E (<strong>de</strong> modo que 1 < i < j-1 < n)<br />
correspon<strong>de</strong>n a la supresión <strong>de</strong>l vértice (i-1, i) y la adición <strong>de</strong>l vértice (i-1, j) en el recorrido original<br />
S. Si d[i, j] es el coste <strong>de</strong> trasladarse <strong>de</strong> la ciudad i a la ciudad j cuando asociamos un coste c[1, j] =<br />
-d[n, 1] + d[1, j].a cada arco (1, j) ∈ E <strong>de</strong> modo que 2 < j = n y un coste c[i, j] = -d[i-1, i] + d[i-1, j] a<br />
cada arco (i, j) ∈ E tal que 1 < i < j-1 < n. Por último, hallar un camino <strong>de</strong> coste negativo G <strong>de</strong>s<strong>de</strong> el<br />
nodo 1 a n permite i<strong>de</strong>ntificar un intercambio k provechoso.<br />
Por otra parte, en [58] se examinan soluciones <strong>por</strong> aproximaciones sucesivas creadas a<br />
partir <strong>de</strong> caminos pares e impares, nuevas estructuras <strong>de</strong> caminos, como caminos cortados y<br />
caminos inversos, que llevan a distintas soluciones <strong>por</strong> aproximaciones sucesivas, y estructuras <strong>de</strong><br />
referencia. El tamaño <strong>de</strong> la <strong>vecindad</strong> generada únicamente <strong>por</strong> caminos pares e impares es Ω (n2 n ).<br />
Las <strong>técnicas</strong> que aceleran la <strong>búsqueda</strong> en vecinda<strong>de</strong>s son im<strong>por</strong>tantes incluso en vecinda<strong>de</strong>s cuyo<br />
tamaño no sea exponencial. Así, <strong>por</strong> ejemplo, gracias al empleo <strong>de</strong> un algoritmo <strong>de</strong>l camino más<br />
corto en un grafo <strong>de</strong> mejora acíclico, Glover [31] ha obtenido una clase con los mejores<br />
movimientos 4-opt en tiempo O(n 2 ).<br />
4.2.2 Creación <strong>de</strong> un nuevo vecino mediante intercambios compuestos<br />
La segunda clase <strong>de</strong> algoritmos <strong>de</strong> <strong>búsqueda</strong> local <strong>de</strong>finidos mediante intercambios <strong>de</strong><br />
caminos consiste en una generalización <strong>de</strong> la <strong>vecindad</strong> <strong>de</strong> intercambio. Dado un itinerario <strong>de</strong>l<br />
problema <strong>de</strong>l viajante <strong>de</strong> comercio T = (1, 2, 3,…, n, 1) con un número n <strong>de</strong> nodos, la <strong>vecindad</strong> <strong>de</strong><br />
intercambio generará soluciones intercambiando las posiciones <strong>de</strong> los nodos i y j <strong>por</strong> 1 ≤ i ≤ j ≤ n.<br />
Por ejemplo, supongamos que i = 3 y que j = 6, T' = (1, 2, 6, 4, 5, 3, 7,…, n, 1) es un vecino) <strong>de</strong> T<br />
bajo la operación <strong>de</strong> intercambio. Se dice que dos operaciones <strong>de</strong> intercambio que conecten el nodo<br />
i con j, y el nodo k con l son in<strong>de</strong>pendientes cuando max{i, j} < min{k, l}, ó cuando min{i, j} ><br />
max{k, l}. Entonces, una <strong>vecindad</strong> a <strong>gran</strong> <strong>escala</strong> en el itinerario T se pue<strong>de</strong> <strong>de</strong>finir componiendo (es<br />
<strong>de</strong>cir, tomando en su totalidad) un número arbitrario <strong>de</strong> operaciones <strong>de</strong> intercambio individuales.<br />
Congram et al. [9] y Potts y van <strong>de</strong> Vel<strong>de</strong> [57] aplicaron esta <strong>vecindad</strong> <strong>de</strong> intercambios<br />
compuestos al problema <strong>de</strong> la programación <strong>de</strong> la lentitud pon<strong>de</strong>rada total <strong>de</strong> una máquina y al <strong>de</strong>l<br />
viajante <strong>de</strong> comercio (TSP), respectivamente, llamando a este enfoque dynasearch. En su estudio,<br />
Congram et al. [9] <strong>de</strong>muestran que el tamaño <strong>de</strong> la <strong>vecindad</strong> es O(2 n-1 ) y presentan una recursión <strong>de</strong><br />
programación dinámica capaz <strong>de</strong> hallar la mejor <strong>vecindad</strong> en tiempo O(n 3 ). Hurink [40] aplica un<br />
18
supuesto especial <strong>de</strong> la <strong>vecindad</strong> <strong>de</strong> intercambio compuesto en la que sólo se permite sustituir pares<br />
adyacentes en el contexto <strong>de</strong> problemas <strong>de</strong> funcionamiento <strong>de</strong> una única máquina, y <strong>de</strong>muestra que<br />
es posible obtener un vecino <strong>de</strong> mejora en tiempo O(n 2 ) hallando el camino más corto en el grafo <strong>de</strong><br />
mejora apropiado.<br />
A continuación <strong>de</strong>scribiremos un grafo <strong>de</strong> mejora que nos sirva <strong>de</strong> ayuda en la <strong>búsqueda</strong> <strong>de</strong> la<br />
<strong>vecindad</strong> <strong>de</strong> intercambio compuesto. Sea T = (1, 2, 3,…, n, 1) un itinerario <strong>de</strong>l viajante <strong>de</strong> comercio<br />
<strong>de</strong> n nodos. El grafo <strong>de</strong> mejora es un grafo G = (V, E), don<strong>de</strong> (i) V = {1, 2,…, n, 1' , 2' ,…, n'} es a<br />
un conjunto <strong>de</strong> nodos correspondiente a los nodos <strong>de</strong>l problema original y una copia <strong>de</strong> éstos, y (ii)<br />
E es un conjunto <strong>de</strong> arcos dirigidos (i, j') ∪ (j', k), en el que un arco (i, j') correspon<strong>de</strong> al<br />
intercambio <strong>de</strong> los nodos i y j, y un arco (j', k) indica que el nodo k es el primer nodo <strong>de</strong>l siguiente<br />
intercambio. Así, <strong>por</strong> ejemplo, un camino <strong>de</strong> tres arcos (i, j'), (j', k), (k, l) ) en G representa dos<br />
operaciones <strong>de</strong> intercambio que cambian el nodo i <strong>por</strong> el j, y el nodo k <strong>por</strong> l. Para construir el<br />
conjunto <strong>de</strong> arcos E, se tiene en cuenta cada par <strong>de</strong> nodos (i, j') y (j', k) en V, añadiéndose el arco (i,<br />
j') a E si, y solamente si, j > i.> 1. El arco (j', k) se aña<strong>de</strong> a E si, y solamente si, j = 1 y k > j ó j > 1 y<br />
k > j + 1. Para cada arco (i, j') ∈ E, se asocia un coste c[i, j] equivalente al incremento neto en el<br />
coste óptimo <strong>de</strong>l itinerario <strong>de</strong>l viajante <strong>de</strong> comercio tras suprimir los vértices (i-1, i), (i, i+1), (j–1, j)<br />
y (j, j+1) y añadir los vértices (i-1, j), (j, i+1), (j-1, i) y (i, j+1). En otras palabras, si d[i, j] es el coste<br />
<strong>de</strong> trasladarse <strong>de</strong>l nodo i al nodo j en el problema original, y d[n, n+1] = d[n, 1], tenemos que:<br />
c[i, j'] = (-d[i-1, i] – d[i, j] - d[j, j+1] ) + (d[i-1, j] + d[j, i] + d[i, j+1]) para j' = i+1, y c[i, j] =<br />
(-d[i-1, i] – d[i, i+1] - d [j-1, j] - d[j, j+1] ) + (d[i-1, j] + d[j, i+1] + d[j-1, i] + d[i, j+1]) para j' ><br />
i+1.<br />
El coste c[j', k] <strong>de</strong> todos los vértices (j', k) se <strong>de</strong>fine como igual a 0.<br />
Vemos que hallar el mejor vecino <strong>de</strong> un itinerario en el TSP para la <strong>vecindad</strong> <strong>de</strong> intercambio<br />
compuesto equivale a hallar el camino más corto en el grafo <strong>de</strong> mejora y, <strong>por</strong> tanto, precisa un tiempo<br />
O(n 2 ). Obsérvese que, al ser el TSP un problema cíclico, uno <strong>de</strong> los nodos se mantiene fijo durante el<br />
intercambio. En la construcción más arriba expuesta <strong>de</strong>l grafo <strong>de</strong> mejora, suponemos, sin pérdida <strong>de</strong><br />
generalidad, que no se permite mover el nodo 1, <strong>por</strong> lo que la <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> se realiza hallando<br />
el camino más corto <strong>de</strong>s<strong>de</strong> el nodo 1' al nodo n o al nodo n'. La recursión <strong>de</strong> programación dinámica que<br />
ofrecen Congram et al. [9] para realizar <strong>búsqueda</strong>s en la <strong>vecindad</strong> llevará igualmente un tiempo O(n 2 )<br />
cuando se aplique al problema <strong>de</strong>l viajante <strong>de</strong> comercio. El algoritmo <strong>de</strong>l camino más corto visto arriba<br />
emplea un tiempo O(n 3 ) cuando se aplica al problema <strong>de</strong> la programación <strong>de</strong>l retraso pon<strong>de</strong>rado total, ya<br />
que ese tiempo O(n 3 ) es el que se precisa para calcular los costes <strong>de</strong> los arcos.<br />
19
4.2.3 Creación <strong>de</strong> un nuevo vecino mediante un intercambio cíclico<br />
La última clase <strong>de</strong> algoritmos <strong>de</strong> <strong>búsqueda</strong> local que trataremos en este apartado se basa en un<br />
tipo <strong>de</strong> intercambio cíclico <strong>de</strong> itinerarios piramidales (Carlier y Villon [8]). Se dice que un itinerario es<br />
piramidal cuando comienza en la ciudad 1, visita a continuación las ciuda<strong>de</strong>s en or<strong>de</strong>n creciente hasta<br />
llegar a la ciudad n, y termina volviendo a la ciudad 1 pasando <strong>por</strong> las restantes ciuda<strong>de</strong>s en or<strong>de</strong>n<br />
<strong>de</strong>creciente. Supongamos que T(i) representa la ciudad situada en la posición i-ésima <strong>de</strong>l itinerario T. Un<br />
recorrido T' es un vecino piramidal <strong>de</strong> un recorrido T cuando existe un número entero p tal que:<br />
(i) 0 ≤ p ≤ n,<br />
(ii) T' (1) T' (2) = T(i2),…, T' (p) = T(ip) con i1 < i2
c[j', k] = -d[j, j+1] – d[k-1, k] + d[j, k].<br />
Visto esto, y teniendo en cuenta que es preciso poner especial cuidado a la hora <strong>de</strong> calcular el<br />
coste <strong>de</strong> los vértices en los que uno <strong>de</strong> sus puntos extremos sea 1, 1', n, o n', ya po<strong>de</strong>mos realizar la<br />
<strong>búsqueda</strong> en la <strong>vecindad</strong> hallando un camino más corto <strong>de</strong>s<strong>de</strong> el nodo 1 al nodo n o al n'. Carlier y Villon<br />
[8] <strong>de</strong>muestran también que, si un itinerario es el óptimo local <strong>de</strong> la <strong>vecindad</strong> arriba expuesta, será un<br />
óptimo local para la <strong>vecindad</strong> <strong>de</strong> dos intercambios.<br />
A<strong>de</strong>más <strong>de</strong> estas tres clases <strong>de</strong> vecinda<strong>de</strong>s, también se ha empleado la programación dinámica<br />
para <strong>de</strong>terminar soluciones óptimas a supuestos especiales <strong>de</strong>l problema <strong>de</strong>l viajante <strong>de</strong> comercio. Así,<br />
Simonetti y Balas [69] resuelven el TSP <strong>por</strong> medio <strong>de</strong> ventanas <strong>de</strong> tiempo, aplicando ciertos tipos <strong>de</strong><br />
restricciones <strong>de</strong> prece<strong>de</strong>ncia con una técnica <strong>de</strong> programación dinámica. Burkard et al. [6], <strong>por</strong> su parte,<br />
ponen <strong>de</strong> manifiesto que, para todo un conjunto <strong>de</strong> itinerarios <strong>de</strong> estructura especial que pue<strong>de</strong>n<br />
representarse <strong>por</strong> medio <strong>de</strong> árboles <strong>de</strong> prioridad, es posible resolver el TSP en tiempo polinómico<br />
aplicando una técnica <strong>de</strong> programación dinámica. También <strong>de</strong>muestran que se pue<strong>de</strong> representar el<br />
conjunto <strong>de</strong> itinerarios piramidales mediante árboles <strong>de</strong> prioridad y que existe un algoritmo O(n 2 ) para el<br />
cálculo <strong>de</strong>l itinerario piramidal más corto. Estos resultados se analizan <strong>de</strong> modo más <strong>de</strong>tallado en el<br />
apartado 5.<br />
4.3 Vecinda<strong>de</strong>s <strong>de</strong>finidas mediante asignaciones y ajustes<br />
En este apartado analizaremos una estructura <strong>de</strong> <strong>vecindad</strong> exponencial <strong>de</strong>finida <strong>por</strong> la obtención <strong>de</strong><br />
asignaciones <strong>de</strong> costes mínimos en un grafo mejorado, ilustrando este tipo <strong>de</strong> <strong>vecindad</strong> en el contexto <strong>de</strong>l<br />
problema <strong>de</strong>l viajante <strong>de</strong> comercio (TSP). Asimismo, <strong>de</strong>mostraremos que la <strong>vecindad</strong> <strong>de</strong> la asignación se<br />
pue<strong>de</strong> generalizar a vecinda<strong>de</strong>s <strong>de</strong>finidas <strong>por</strong> la obtención <strong>de</strong> ajustes <strong>de</strong> coste mínimo en un grafo <strong>de</strong><br />
mejora no bipartito. Para <strong>de</strong>mostrar esta generalización recurriremos al problema <strong>de</strong> la partición <strong>de</strong>l<br />
conjunto.<br />
La <strong>vecindad</strong> <strong>de</strong> asignación en el problema <strong>de</strong>l viajante <strong>de</strong> comercio se pue<strong>de</strong> contemplar como<br />
una generalización <strong>de</strong> la <strong>vecindad</strong> simple que se <strong>de</strong>fine retirando un nodo <strong>de</strong>l itinerario y reinsertándolo<br />
<strong>de</strong> manera óptima. Dado un itinerario T <strong>de</strong> n nodos = (1, 2, 3,…, n, 1), y siendo el coste <strong>de</strong> <strong>de</strong>splazarse<br />
<strong>de</strong> la ciudad i a la ciudad j d[i, j], el primer paso para realizar la <strong>búsqueda</strong> en la <strong>vecindad</strong> <strong>de</strong> la<br />
asignación será crear un grafo <strong>de</strong> mejora bipartito <strong>de</strong>l siguiente modo:<br />
(i) Para k = ⌊n / 2⌋, se eligen los nodos k <strong>de</strong>l itinerario actual T y se retiran. El conjunto <strong>de</strong><br />
nodos retirados será V = {v 1, v2, …, vk} y el conjunto <strong>de</strong> nodos restantes, U = {u 1, u 2, …, u n-<br />
k}.<br />
(ii) Se construye un sub-itinerario T´ = (u 1, u 2, …, u n-k, u 1) qi indica el vértice correspondiente a<br />
21
cada (ui, ui+1) para i = 1 a n – k – 1, y qn-k indica el vértice (u n-k, u 1)<br />
(iii) A continuación se construye un grafo bipartito completo G = (N, N', E) tal que N = {qi: i =<br />
1 a n – k}, N' = V, y que el peso en cada vértice (qi, vj) sea c[qi, vj] = d[ui, vj] + d[vj, ui+1] -<br />
d[ui, ui+1].<br />
Un vecino <strong>de</strong> T correspon<strong>de</strong>rá a un itinerario T* obtenido mediante la inserción <strong>de</strong> los nodos <strong>de</strong><br />
V en el sub-itinerario T´ y que tenga como máximo un nodo insertado entre los nodos adyacentes <strong>de</strong> T´.<br />
La asignación <strong>de</strong>l coste mínimo <strong>de</strong> k arcos correspon<strong>de</strong>rá al vecino <strong>de</strong> coste mínimo <strong>de</strong> T.<br />
Por medio <strong>de</strong> la figura 4, vamos a <strong>de</strong>mostrar que la <strong>vecindad</strong> <strong>de</strong> asignación en el itinerario <strong>de</strong> 9<br />
nodos T = (1, 2, 3, 4, 5, 6, 7, 8, 9, 1). Si V = {2, 3, 5, 8}, podremos construir el sub-itinerario en los<br />
nodos en U como T' = (1, 4, 6, 7, 9, 1). La figura 4 ilustra el grafo bipartito G únicamente con los<br />
vértices <strong>de</strong> los ajustes, a fin <strong>de</strong> simplificar. El nuevo itinerario que se obtiene será T" " = (1, 3, 4, 8, 6, 5,<br />
7, 9, 2, 1). Obsérvese que cuando k = ⌊n / 2⌋, el tamaño <strong>de</strong> la <strong>vecindad</strong> <strong>de</strong> asignación es igual a Ω(⌊n /<br />
2⌋!).<br />
22
Figura 4. Ilustración <strong>de</strong> la <strong>vecindad</strong> <strong>de</strong> ajuste.<br />
La <strong>vecindad</strong> <strong>de</strong> asignación fue introducida <strong>por</strong> primera vez en el contexto <strong>de</strong>l TSP <strong>por</strong> Sarvanov y<br />
Doroshko [66] para el supuesto en que k = n/2 y n es un valor par. Gutin [33] ofrece una comparación<br />
teórica entre el algoritmo <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> vecinda<strong>de</strong>s <strong>de</strong> asignación y los algoritmos <strong>de</strong> <strong>de</strong>scenso <strong>por</strong><br />
gradiente local para k = n/2. Punnen [60] ha consi<strong>de</strong>rado la <strong>vecindad</strong> <strong>de</strong> asignación general para valores<br />
arbitrarios <strong>de</strong> k y n. En [60] se muestra asimismo una extensión <strong>de</strong> la <strong>vecindad</strong> en la que, en vez <strong>de</strong><br />
nodos, se retiran y se reinsertan caminos <strong>de</strong> modo óptimo resolviendo un problema <strong>de</strong> ajuste <strong>de</strong> peso<br />
mínimo. Gutin [34], a su vez, <strong>de</strong>muestra que, para ciertos valores <strong>de</strong> k, es posible maximizar el tamaño<br />
<strong>de</strong> la <strong>vecindad</strong>, junto con ciertos algoritmos <strong>de</strong> baja complejidad, <strong>por</strong> medio <strong>de</strong> <strong>búsqueda</strong>s en vecinda<strong>de</strong>s<br />
relacionadas. Gutin y Yeo [37] han <strong>de</strong>sarrollado una <strong>vecindad</strong> basada en la <strong>vecindad</strong> <strong>de</strong> asignación, con<br />
la que <strong>de</strong>muestran que es posible trasladarse <strong>de</strong> cualquier itinerario T a otro itinerario T' a través <strong>de</strong><br />
dicha <strong>vecindad</strong> en un máximo <strong>de</strong> 4 pasos. Deineko y Woeginger [12] han estudiado varias vecinda<strong>de</strong>s<br />
exponenciales para su aplicación al problema <strong>de</strong>l viajante <strong>de</strong> comercio y al problema <strong>de</strong> asignación<br />
cuadrática, basadas en asignaciones y ajustes en grafos bipartitos, así como vecinda<strong>de</strong>s basadas en<br />
23
ór<strong>de</strong>nes parciales, árboles y otras estructuras combinatorias. La heurística <strong>de</strong> vecinda<strong>de</strong>s basada en<br />
ajustes se aplica también al problema <strong>de</strong> ruta <strong>de</strong> inventarios en los trabajos <strong>de</strong> Dror y Levy [15].<br />
Pue<strong>de</strong> obtenerse otra clase <strong>de</strong> vecinda<strong>de</strong>s basadas en ajustes mediante el agrupamiento <strong>de</strong> sub-<br />
itinerarios, don<strong>de</strong> éstos se generan resolviendo un problema <strong>de</strong> ajuste <strong>de</strong> peso mínimo bipartito ([43],<br />
[59]). En este caso, la <strong>búsqueda</strong> <strong>de</strong>l mejor itinerario es un problema NP-difícil. Para realizar la <strong>búsqueda</strong><br />
en este tipo <strong>de</strong> vecinda<strong>de</strong>s existen heurísticas eficaces ([27], [43], [59]), y es posible <strong>de</strong>sarrollar<br />
algoritmos <strong>de</strong> <strong>búsqueda</strong> en los mismos aplicando modificaciones <strong>de</strong> coste u otros medios <strong>de</strong> control <strong>de</strong>l<br />
ajuste generado.<br />
A continuación veremos una estructura <strong>de</strong> <strong>vecindad</strong> basada en ajustes no bipartitos, <strong>de</strong>ntro <strong>de</strong>l<br />
contexto <strong>de</strong>l problema <strong>de</strong> la partición general <strong>de</strong> conjuntos contemplado en el apartado 3. Llamemos S =<br />
{S1, S2, S3,…, SK} a una partición <strong>de</strong>l conjunto A = {a1, a2, a3,…, an}. A continuación, construyamos un<br />
grafo completo G = (N, E) tal que cada nodo i para 1 ≤ i ≤ K represente el subconjunto Si en S. Los<br />
pesos c[i, j] <strong>de</strong>l vértice (i, j) <strong>de</strong> G se pue<strong>de</strong>n construir separadamente conforme a una variedad <strong>de</strong> reglas,<br />
una <strong>de</strong> las cuales es la siguiente:<br />
(i) Sea la contribución <strong>de</strong>l coste <strong>de</strong>l subconjunto Si al problema <strong>de</strong> la partición d[Si].<br />
(ii) Para cada vértice (i, j) en E, se combinan los elementos <strong>de</strong> Si and Sj, y se vuelven a<br />
repartir óptimamente en dos subconjuntos, a los que llamaremos Si y Sj.<br />
(iii) Luego c[i, j] = (d[Si'] + d[Sj']) – (d[Si] + d[Sj]).<br />
Obsérvese que, si se eliminan <strong>de</strong> G los vértices con pesos no negativos, cualquier ajuste <strong>de</strong> coste<br />
negativo que se haga en este grafo <strong>de</strong>finirá un coste vecino <strong>de</strong> mejora <strong>de</strong> S. Tailard ha aplicado este tipo<br />
<strong>de</strong> i<strong>de</strong>as a una clase general <strong>de</strong> problemas <strong>de</strong> clustering ([71]), y al problema <strong>de</strong>l enrutamiento <strong>de</strong><br />
vehículos ([72]).<br />
5. Casos especiales resolubles y vecinda<strong>de</strong>s relacionadas<br />
Existen <strong>gran</strong> cantidad <strong>de</strong> estudios relativos a casos especiales <strong>de</strong> problemas <strong>de</strong> optimización<br />
combinatoria NP-difíciles que pue<strong>de</strong>n resolverse <strong>de</strong> forma eficiente. Particularmente interesantes para<br />
nosotros son aquellos casos especiales que se pue<strong>de</strong>n obtener a partir <strong>de</strong>l problema NP-difícil original<br />
limitando la topología <strong>de</strong>l problema, o añadiendo restricciones al problema original, o <strong>por</strong> medio <strong>de</strong> una<br />
combinación <strong>de</strong> estos dos factores. Al basar vecinda<strong>de</strong>s en estos supuestos especiales, a menudo se<br />
pue<strong>de</strong>n <strong>de</strong>sarrollar vecinda<strong>de</strong>s <strong>de</strong> tamaño exponencial en las que es posible realizar <strong>búsqueda</strong>s en tiempo<br />
polinómico. Conviene señalar que la mayoría <strong>de</strong> estas <strong>técnicas</strong> no se han probado experimentalmente,<br />
<strong>por</strong> lo que cabe esperar que produzcan óptimos locales poco satisfactorios. Obsérvese asimismo que la<br />
<strong>vecindad</strong> <strong>de</strong> intercambio cíclico vista en el apartado 4 se basa en un algoritmo O(n 2 ) para la obtención<br />
<strong>de</strong>l itinerario piramidal <strong>de</strong> coste mínimo.<br />
24
La siguiente ilustración tiene que ver con los grafos <strong>de</strong> Halin. Un grafo <strong>de</strong> Halin es aquel que se<br />
obtiene insertando en el plano un árbol que no tenga nodos <strong>de</strong> grado 2, y uniendo a continuación los<br />
nodos hoja mediante un ciclo, <strong>de</strong> forma que el resultado sea un grafo planar. Cornuejols et al. [10] han<br />
propuesto un algoritmo O(n) que resuelve el problema <strong>de</strong>l viajante <strong>de</strong> comercio mediante un grafo <strong>de</strong><br />
este tipo. Hay que tener en cuenta que los grafos <strong>de</strong> Halin pue<strong>de</strong>n tener un número exponencial <strong>de</strong><br />
itinerarios TSP, como ocurre en el ejemplo <strong>de</strong> la figura 3 (tomado <strong>de</strong> [10]).<br />
Vamos a <strong>de</strong>mostrar cómo los grafos <strong>de</strong> Halin pue<strong>de</strong>n emplearse para construir vecinda<strong>de</strong>s <strong>de</strong><br />
<strong>muy</strong> <strong>gran</strong> tamaño para su aplicación al problema <strong>de</strong>l viajante <strong>de</strong> comercio. Supongamos que T es un<br />
itinerario. Decimos que H es una extensión <strong>de</strong> Halin <strong>de</strong> T cuando H es un grafo <strong>de</strong> Halin y T es un<br />
subgrafo <strong>de</strong> H. La figura 5 ilustra una extensión <strong>de</strong> Halin para el itinerario T = (0, 1, 2, …, 9, 0).<br />
Imaginemos que existe un procedimiento eficiente Extensión-<strong>de</strong>-Halin(T), que permite crear una<br />
extensión <strong>de</strong> Halin <strong>de</strong> T. Para crear la <strong>vecindad</strong> N(T), se haría que H(T) = Extensión-<strong>de</strong>-Halin(T), y que<br />
N(T) = {T' : T' es un itinerario en H(T)}. Para hallar el mejor itinerario en esta <strong>vecindad</strong>, buscaríamos el<br />
mejor itinerario en H(T). En principio, se podría <strong>de</strong>finir una <strong>vecindad</strong> mucho mayor: N(T) = { T': existe<br />
una extensión <strong>de</strong> Halin <strong>de</strong> T <strong>de</strong>ntro <strong>de</strong> T'}. Pero, <strong>por</strong> <strong>de</strong>sgracia, sería <strong>de</strong>masiado difícil realizar una<br />
<strong>búsqueda</strong> eficiente en tal <strong>vecindad</strong>, ya que supondría optimizar simultáneamente todas las extensiones <strong>de</strong><br />
Halin <strong>de</strong> T. Sería posible <strong>de</strong>sarrollar soluciones parecidas, basadas en el grafo <strong>de</strong> Halin, para la variante<br />
<strong>de</strong> cuello <strong>de</strong> botella <strong>de</strong>l problema <strong>de</strong>l viajante <strong>de</strong> comercio y para el problema <strong>de</strong>l árbol <strong>de</strong> Steiner,<br />
aplicando el algoritmo <strong>de</strong> tiempo lineal <strong>de</strong> Philips et al [56] y el <strong>de</strong> Winter [82], respectivamente.<br />
Figura 5. Grafo <strong>de</strong> Halin<br />
(a) Itinerario con 10 nodos. (b) Extensión <strong>de</strong> Halin<br />
25
En los anteriores ejemplos hemos visto itinerarios piramidales, que pue<strong>de</strong>n consi<strong>de</strong>rarse<br />
como un problema <strong>de</strong>l viajante <strong>de</strong> comercio con restricciones adicionales. También hemos<br />
analizado el TSP restringido a grafos <strong>de</strong> Halin. En el siguiente ejemplo, en cambio, veremos una<br />
<strong>vecindad</strong> ([28]) que se basa simultáneamente en una clase restringida <strong>de</strong> grafos con restricciones<br />
adicionales <strong>de</strong> lado. Glover y Punnen [28] han i<strong>de</strong>ntificado la siguiente clase <strong>de</strong> itinerarios, en los<br />
que se pue<strong>de</strong> hallar el mejor miembro en tiempo lineal. Sean C1, C2,..., Ck ciclos disjuntos <strong>de</strong> k<br />
vértices, cada uno <strong>de</strong> los cuales contiene al menos tres nodos, hallándose cada nodo en uno <strong>de</strong> los<br />
ciclos. Llamamos "itinerario <strong>de</strong> eyección <strong>de</strong> vértice único" (single edge ejection tour) al itinerario<br />
T que presenta las siguientes características:<br />
1. | T ∩ Ci| = |Ci| - 1 para i = 1 a k, es <strong>de</strong>cir, T tiene |Ci| - 1 arcos en común con Ci.<br />
2. Hay un arco <strong>de</strong> T dirigido <strong>de</strong>s<strong>de</strong> Ci a Ci+1 para i = 1 a k-1 y <strong>de</strong>s<strong>de</strong> Ck a C1.<br />
El número <strong>de</strong> formas <strong>de</strong> suprimir arcos <strong>de</strong> los ciclos es, como mínimo, Πi |Ci|, lo que pue<strong>de</strong><br />
resultar un valor exponencialmente alto, al igual que el número <strong>de</strong> itinerarios <strong>de</strong> eyección únicos. Para<br />
hallar el itinerario <strong>de</strong> eyección único que resulte óptimo, es preciso resolver un problema <strong>de</strong>l camino más<br />
corto relacionado en un grafo <strong>de</strong> mejora. El tiempo <strong>de</strong> ejecución es lineal en el número <strong>de</strong> arcos. En un<br />
itinerario dado, se pue<strong>de</strong>n suprimir k+1 arcos <strong>de</strong>l mismo, crear k caminos, y a continuación transformar<br />
éstos en la unión <strong>de</strong> k ciclos <strong>de</strong>scrita más arriba. Aunque, en principio, la <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong><br />
explicada anteriormente es fácil <strong>de</strong> realizar, la calidad <strong>de</strong> la técnica <strong>de</strong> <strong>búsqueda</strong> tien<strong>de</strong> a ser sensible a<br />
las características <strong>de</strong> la implementación. Glover y Punnen [28] han consi<strong>de</strong>rado asimismo vecinda<strong>de</strong>s<br />
más amplias, entre ellas lo que han dado en llamar "double ejection tours" ("itinerarios <strong>de</strong> eyección<br />
doble"). También han propuesto un algoritmo que se ha <strong>de</strong>mostrado eficiente en la optimización <strong>de</strong> esta<br />
clase <strong>de</strong> itinerarios.<br />
Yeo [78] ha estudiado otra <strong>vecindad</strong> para la versión asimétrica <strong>de</strong>l TSP. Se trata <strong>de</strong> una<br />
<strong>vecindad</strong> que guarda relación con la <strong>de</strong> Glover y Punnen [28] (aunque su tamaño es muchísimo mayor),<br />
y para la que muestra que el tiempo <strong>de</strong> <strong>búsqueda</strong> es O(n 3 ). Burkard y Deineko [7], <strong>por</strong> su parte, han<br />
<strong>de</strong>scubierto otra clase <strong>de</strong> <strong>vecindad</strong> exponencial, en la que es posible i<strong>de</strong>ntificar al mejor miembro en<br />
tiempo cuadrático. Cada uno <strong>de</strong> estos tres algoritmos pue<strong>de</strong>n emplearse para <strong>de</strong>sarrollar algoritmos <strong>de</strong><br />
<strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong>. Sin embargo, <strong>por</strong> lo que sabemos hasta ahora, ninguno <strong>de</strong><br />
ellos ha sido implementado.<br />
Resumiremos las conclusiones <strong>de</strong>l presente apartado presentando un método general para<br />
convertir una técnica <strong>de</strong> solución <strong>de</strong> problemas con restricciones en una técnica <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong><br />
<strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong>. Sea X un tipo <strong>de</strong> problema <strong>de</strong> optimización combinatoria NP-difícil, y X'<br />
una restricción <strong>de</strong> X resoluble en tiempo polinómico. Supongamos, a<strong>de</strong>más, que para una instancia<br />
26
particular (F, f) <strong>de</strong> X, y para cada subconjunto factible S en F, existe una subrutina llamada<br />
"CreateNeighborhood(S)" que crea una instancia bien estructurada (F ', f) <strong>de</strong> X' tal que<br />
1. S sea un elemento <strong>de</strong> F'<br />
2. F' sea un subconjunto <strong>de</strong> F<br />
3. (F ', f) sea una instancia <strong>de</strong> X'<br />
Llamaremos F' a la <strong>vecindad</strong> X'-inducida <strong>de</strong> S. El enfoque <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> consiste en<br />
invocar la subrutina CreateNeighborhood(S) en cada iteración, para luego optimizar (F', f) mediante el<br />
algoritmo <strong>de</strong> tiempo polinómico. A continuación se sustituye S <strong>por</strong> el óptimo <strong>de</strong> (F', f), y el algoritmo se<br />
itera. Especial interés presenta el supuesto en el que la subrutina CreateNeighborhood se ejecuta en<br />
tiempo polinómico y el tamaño <strong>de</strong> F' es exponencial. En este caso, la <strong>vecindad</strong> no se creará<br />
explícitamente. Si bien estamos convencidos <strong>de</strong>l enorme potencial <strong>de</strong> este enfoque en el contexto <strong>de</strong> la<br />
<strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong>, lo cierto es que se trata <strong>de</strong> un potencial sin explotar en su mayor parte, y, lo que<br />
es más, que en muchos casos no se sabe bien cómo explotar. Por ejemplo, muchos problemas <strong>de</strong><br />
optimización combinatoria NP-difíciles son resolubles en tiempo polinómico cuando se hallan<br />
restringidos a grafos <strong>de</strong> re<strong>de</strong>s en serie-paralelo. Son ejemplos <strong>de</strong> ello el problema <strong>de</strong> la fiabilidad <strong>de</strong><br />
re<strong>de</strong>s ([67]), el <strong>de</strong>l árbol <strong>de</strong> expansión <strong>de</strong> comunicación óptima ([18]), el <strong>de</strong> cubierta <strong>de</strong> vértices ([5],<br />
[73]), el <strong>de</strong>l conjunto <strong>de</strong> vértices ([5], [73]), etc. Parecidos resultados se obtienen con problemas <strong>de</strong><br />
planificación <strong>de</strong> horarios comerciales con restricciones <strong>de</strong> prece<strong>de</strong>ncia específicas [46]. Queda en el aire<br />
una cuestión sumamente interesante: cómo sacar el máximo partido <strong>de</strong> estos algoritmos eficientes para<br />
aplicarlos a grafos <strong>de</strong> re<strong>de</strong>s en serie-paralelo <strong>de</strong>ntro <strong>de</strong>l contexto <strong>de</strong> la <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong>.<br />
6. Medición <strong>de</strong> vecinda<strong>de</strong>s<br />
En este apartado <strong>de</strong>scribiremos <strong>técnicas</strong> <strong>de</strong> medición <strong>de</strong> vecinda<strong>de</strong>s, que pue<strong>de</strong>n servir como guía<br />
para calibrar el rendimiento <strong>de</strong> algoritmos <strong>de</strong> <strong>búsqueda</strong> local con respecto a las vecinda<strong>de</strong>s. Como ya<br />
hemos indicado, uno <strong>de</strong> los aspectos críticos <strong>de</strong>l diseño <strong>de</strong> la heurística <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong><br />
consiste en hallar el equilibrio entre el tamaño <strong>de</strong> la <strong>vecindad</strong> y el tiempo necesario para llevar a cabo la<br />
<strong>búsqueda</strong>. De ahí que un elemento im<strong>por</strong>tante en la medición <strong>de</strong> vecinda<strong>de</strong>s sea el tamaño <strong>de</strong> la<br />
<strong>vecindad</strong>. Des<strong>de</strong> el punto <strong>de</strong> vista <strong>de</strong>l grafo <strong>de</strong> <strong>vecindad</strong>, el tamaño <strong>de</strong> ésta para una solución S pue<strong>de</strong><br />
contemplarse como el número <strong>de</strong> arcos dirigidos que salen <strong>de</strong> S, o, lo que es lo mismo, el grado <strong>de</strong><br />
salida <strong>de</strong> S. Para los métodos <strong>de</strong> profundidad variable, el tamaño <strong>de</strong> la <strong>vecindad</strong> no tiene <strong>por</strong> qué ser<br />
necesariamente exponencial, sino que es la <strong>búsqueda</strong> en sí la que lleva a hallar soluciones radicalmente<br />
diferentes a la solución base. Por el contrario, para las <strong>técnicas</strong> basadas en re<strong>de</strong>s y las que se hallan<br />
inducidas <strong>por</strong> supuestos resolubles, el tamaño <strong>de</strong> la <strong>vecindad</strong> es generalmente exponencial.<br />
27
La siguiente tabla (tomada en su mayor parte <strong>de</strong> [6]) muestra un resumen <strong>de</strong>l tamaño <strong>de</strong> las<br />
vecinda<strong>de</strong>s anteriormente vistas para el problema <strong>de</strong>l viajante <strong>de</strong> comercio:<br />
Vecindad Tamaño log(tamaño) Tiempo <strong>búsqueda</strong> Referencia:<br />
2-Opt Ω(n 2 ) Θ(log n) O(n 2 ) Croes [11]<br />
k-Opt Ω (n k ) Θ (log n) O(n k ) Lin [49]<br />
Piramidal Ω (2 n ) Θ (n) O(n 2 ) Klyaus [45]<br />
Intercambio cíclico Ω (n2 n ) Θ (n) O(n 3 ) Carlier y Villion [8]<br />
Edge ejection Ω ((12 n ) 1/3 ) Θ (n) O(n) Glover y Punnen [28]<br />
Edge ejection basada<br />
en el camino más<br />
corto<br />
Intercambio cíclico<br />
(subconjuntos k-fijos)<br />
Ω (n2 n ) Ω (n) O(n 2 ) Punnen y Glover [58],<br />
Glover [30]<br />
Θ (n k ) Θ (log n) O(n 2 ) Ahuja et al. [2]<br />
Interc. compuestos Θ (2 n-1 ) Θ (n) O(n 2 ) Potts y van <strong>de</strong> Vel<strong>de</strong> [57]<br />
Basada en ajustes 1 Θ(n!/2) Θ (n log n) O(n 3 ) Sarvanov y Doroshko [66]<br />
Grafos <strong>de</strong> Halin Ω(2 n ) Θ (n) O(n) Cornuejols et al. [10]<br />
Árboles PQ<br />
2 Θ (n loglog n)<br />
Θ (n loglog n) O(n 3 )<br />
Burkard et al. [6]<br />
Otra técnica <strong>de</strong> medición <strong>de</strong> vecinda<strong>de</strong>s que se estudia en la literatura es el grafo <strong>de</strong>l diámetro <strong>de</strong> la<br />
<strong>vecindad</strong>. La distancia <strong>de</strong>s<strong>de</strong> un nodo S a un nodo T en el grafo <strong>de</strong> <strong>vecindad</strong> es la longitud <strong>de</strong>l camino<br />
más corto entre ambos. El diámetro <strong>de</strong>l grafo <strong>de</strong> <strong>vecindad</strong> NG es el valor entero positivo más bajo d tal<br />
que d(S, T) = d para todos los nodos S y T <strong>de</strong> NG. Gutin y Yeo [37] han <strong>de</strong>sarrollado vecinda<strong>de</strong>s <strong>de</strong><br />
tamaño exponencial que admiten <strong>búsqueda</strong>s polinómicas para el TSP, y cuyos grafos <strong>de</strong> <strong>vecindad</strong> son<br />
<strong>de</strong> diámetro 4; es <strong>de</strong>cir, que para cualquier par <strong>de</strong> itinerarios T1 y T5, existen itinerarios T2, T3, y T4 tales<br />
1 Esto está suponiendo que cuando k = ⌊n/2⌋, los nodos se han suprimido. Si se suprimen menos nodos, es<br />
posible obtener mejores cotas <strong>de</strong> tiempo, <strong>por</strong> lo que el tamaño <strong>de</strong> la <strong>vecindad</strong> disminuirá<br />
pro<strong>por</strong>cionalmente.<br />
28
que Ti ∈ N(Ti-1) para todo i = 2, 3, 4, 5. El grafo <strong>de</strong> <strong>vecindad</strong> para la <strong>vecindad</strong> basada en intercambios<br />
cíclicos estudiada <strong>por</strong> Carlier y Villon [8] es <strong>de</strong> diámetro θ(log n).<br />
Para un grafo <strong>de</strong> <strong>vecindad</strong> dado, <strong>de</strong>cimos que P = i1, i2, …, iK es monótono cuando el valor objetivo<br />
f(ij) < f(ij-1) para j = 2 a K. Sea dm(S) la longitud <strong>de</strong>l camino monótono más corto <strong>de</strong>s<strong>de</strong> S a una<br />
solución óptima local. Si dm(S) es exponencialmente <strong>gran</strong><strong>de</strong> para cualquier S, se garantiza que una<br />
técnica <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> que comience en S sea exponencialmente larga. Supongamos, en el<br />
sentido contrario, que dm p (S, T) indica el camino monótono más largo <strong>de</strong>s<strong>de</strong> S hasta T. Si se garantiza<br />
que dm p (S, T) es polinómico, toda técnica <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> basada en esta <strong>vecindad</strong> tendrá un<br />
número polinómico <strong>de</strong> iteraciones.<br />
Veamos <strong>por</strong> último el análisis <strong>de</strong> dominio <strong>de</strong> algoritmos <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong>. El análisis <strong>de</strong><br />
dominio <strong>de</strong> un heurístico analiza el número <strong>de</strong> soluciones "dominadas" <strong>por</strong> la solución obtenida . Sea α<br />
un algoritmo heurístico para un problema <strong>de</strong> optimización combinatoria que produce una solución S*<br />
en F. El número <strong>de</strong> dominio <strong>de</strong> α, representado <strong>por</strong> dom(α), será la cardinalidad <strong>de</strong>l conjunto F(S*),<br />
don<strong>de</strong> F(S*) = {S ∈ F : f(S) ≥ f(S*)}. Si dom(α) = |F|, S* será una solución óptima. El análisis <strong>de</strong><br />
dominio <strong>de</strong> varios algoritmos para el TSP se estudia en [27], [28], [35], [36], [38], [59], y [60].<br />
7. Rendimiento computacional <strong>de</strong> algoritmos <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong><br />
<strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong><br />
En este apartado estudiaremos brevemente el rendimiento computacional <strong>de</strong> algunos <strong>de</strong> los<br />
algoritmos <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong> vistos en los apartados anteriores.<br />
Comenzaremos <strong>por</strong> consi<strong>de</strong>rar el problema <strong>de</strong>l viajante <strong>de</strong> comercio. El algoritmo <strong>de</strong> Lin y Kernighan y<br />
sus variantes se consi<strong>de</strong>ran mayoritariamente como los mejores heurísticos para este problema. El<br />
amplio estudio computacional llevado a cabo <strong>por</strong> Johnson y McGeoch [42] corrobora esta impresión en<br />
el exhaustivo análisis <strong>de</strong> rendimiento comparativo que se incluye en él. Rego [61] ha implementado<br />
experimentalmente algoritmos <strong>de</strong> ejection chain para el TSP con excelentes resultados que <strong>de</strong>muestran<br />
las ventajas <strong>de</strong> su técnica con respecto al algoritmo original <strong>de</strong> Lin y Kernighan. Punnen y Glover [58],<br />
<strong>por</strong> su parte, han puesto en práctica un algoritmo <strong>de</strong> ejection chain basado en el camino más corto. Las<br />
implementaciones <strong>de</strong> Rego [61] y Punnen y Glover [58] son relativamente sencillas y emplean<br />
estructuras <strong>de</strong> datos simples.<br />
Recientemente, Helsgaun [39] ha obtenido resultados computacionales más que notables a partir <strong>de</strong><br />
29
una implementación compleja <strong>de</strong>l algoritmo <strong>de</strong> Lin y Kernighan. Aunque su algoritmo emplea los<br />
elementos fundamentales <strong>de</strong> la <strong>búsqueda</strong> <strong>de</strong> profundidad variable <strong>de</strong> estos dos autores, se diferencia <strong>de</strong><br />
implementaciones anteriores en varios aspectos clave. Consigue un mejor rendimiento computacional<br />
gracias al manejo eficiente <strong>de</strong> datos, a movimientos especiales 5-opt, a nuevos movimientos no<br />
secuenciales, a listas <strong>de</strong> candidatos efectivos, a cálculos <strong>de</strong> costes, al uso eficiente <strong>de</strong> cotas superiores en<br />
costes <strong>de</strong> elementos, a la aplicación <strong>de</strong> información proce<strong>de</strong>nte <strong>de</strong>l algoritmo <strong>de</strong> un árbol <strong>de</strong> Held y Karp<br />
y a la aplicación <strong>de</strong>l análisis <strong>de</strong> sensibilidad, entre otras cosas. Helsgaun afirma que su algoritmo ha<br />
producido soluciones óptimas en todos los problemas <strong>de</strong> prueba para los que se conoce una solución<br />
óptima, entre ellos los <strong>de</strong> 7.397 ciuda<strong>de</strong>s y <strong>de</strong> 13.509 ciuda<strong>de</strong>s estudiados <strong>por</strong> Applegate et al.[4].<br />
Helsgaun ha calculado que el tiempo <strong>de</strong> ejecución medio <strong>de</strong> este algoritmo es O(n 2.2 ). Para dar una<br />
perspectiva a<strong>de</strong>cuada <strong>de</strong> lo que este logro supone, hay que tener en cuenta que, para resolver con<br />
optimalidad el problema <strong>de</strong> 13.509 ciuda<strong>de</strong>s mediante un algoritmo exacto <strong>de</strong> ramificación y corte,<br />
Applegate et al. [4] necesitaron tres meses <strong>de</strong> cálculos realizados con un clúster <strong>de</strong> tres servidores Digital<br />
Alpha 4100 (con 12 procesadores) y otro clúster <strong>de</strong> 32 PCs con procesadores Pentium –II. Helsgaun, <strong>por</strong><br />
su parte, utilizó un Macintosh <strong>de</strong> 300 MHz y 3Gigas. Para el problema <strong>de</strong> 85.900 ciuda<strong>de</strong>s, (pla85900<br />
<strong>de</strong>l TSPLIB) consiguió obtener una solución mejorada en apenas dos semanas <strong>de</strong> cálculo en CPU.<br />
(Obsérvese también que casi todo el tiempo empleado <strong>por</strong> Applegate et al. [4] se <strong>de</strong>dicó a probar que la<br />
solución óptima lo era efectivamente.)<br />
En la tabla 1 presentamos un resumen <strong>de</strong>l rendimiento <strong>de</strong>l algoritmo <strong>de</strong> Rego (REGO) [61], <strong>de</strong>l<br />
algoritmo <strong>de</strong> Helsgaun-Lin-Kernighan (HLK) [39], <strong>de</strong>l algoritmo <strong>de</strong> Lin y Kernighan modificado <strong>por</strong><br />
Mak y Morton [51] y <strong>de</strong>l algoritmo <strong>de</strong>l camino más corto <strong>de</strong> Punnen y Glover (SPG) [58] en instancias<br />
pequeñas <strong>de</strong>l problema <strong>de</strong>l viajante <strong>de</strong> comercio. La tabla refleja el mejor caso para cada uno <strong>de</strong> ellos.<br />
30
Tabla 1. Instancias pequeñas <strong>de</strong>l TSP: mejor % <strong>de</strong> <strong>de</strong>sviación <strong>de</strong>l óptimo<br />
Problema REGO HLK MLK SPG<br />
bier127 0,12 0,00 0,42 0,10<br />
u159 0,00 0,00 0,00 ----<br />
ch130 ----- 0,00 ----- 0,23<br />
ch150 ----- 0,00 ----- 0,40<br />
d198 0,30 0,00 0,53 0,33<br />
d493 0,97 0,00 ----- 2,65<br />
eil101 0,00 0,00 0,00 0,79<br />
fl417 0,78 0,00 ----- 0,41<br />
gil262 0,13 0,00 1,30 1,81<br />
kroA150 0,00 0,00 0,00 0,00<br />
kroA200 0,27 0,00 0,41 0,68<br />
kroB150 0,02 0,00 0,01 0,07<br />
kroB200 0,11 0,00 0,87 0,42<br />
kroC100 0,00 0,00 0,00 0,00<br />
kroD100 0,00 0,00 0,00 0,00<br />
kroE100 0,00 0,00 0,21 0,02<br />
lin105 0,00 0,00 0,00 0,00<br />
lin318 0,00 0,00 0,57 1,03<br />
pcb442 0,22 0,00 1,06 2,41<br />
pr107 0,05 0,00 0,00 0,00<br />
pr124 0,10 0,00 0,08 0,00<br />
pr136 0,15 0,00 0,15 0,00<br />
pr144 0,00 0,00 0,39 0,00<br />
pr152 0,90 0,00 4,73 0,00<br />
pr226 0,22 0,00 0,09 0,11<br />
pr264 0,00 0,00 0,59 0,20<br />
pr299 0,22 0,00 0,44 1,30<br />
pr439 0,55 0,00 0,54 1,29<br />
rd100 0,00 0,00 ----- 0,00<br />
rd400 0,29 0,00 ----- 2,45<br />
ts225 0,25 0,00 ----- 0,00<br />
gr137 0,20 0,00 0,00 ----<br />
31
gr202 1,02 0,00 0,81 ----<br />
gr229 0,23 0,00 0,20 ----<br />
gr431 0,91 0,00 1,14 ----<br />
La tabla 2 muestra un resumen <strong>de</strong>l rendimiento <strong>de</strong>l algoritmo <strong>de</strong> (REGO) [61], <strong>de</strong>l <strong>de</strong> Helsgaun-Lin-<br />
Kernighan (HLK) [39], y <strong>de</strong> la implementación <strong>de</strong> Lin y Kernighan (JM-LK) <strong>de</strong> Johnson et al. [42]<br />
(Atención al error: no se ha encontrado la fuente <strong>de</strong> referencia) para instancias <strong>gran</strong><strong>de</strong>s <strong>de</strong>l problema <strong>de</strong>l<br />
viajante <strong>de</strong> comercio. La tabla refleja el % <strong>de</strong> <strong>de</strong>sviación media para cada algoritmo.<br />
Tabla 2. Instancias <strong>gran</strong><strong>de</strong>s <strong>de</strong>l TSP: % <strong>de</strong> <strong>de</strong>sviación media tras varias ejecuciones<br />
Problema Rego JM-LK HLK<br />
dsj1000 1,10 3,08 0,035<br />
pr1002 0,86 2,61 0,00<br />
pr2392 0,79 2,85 0,00<br />
pcb3038 0,97 2,04 0,00<br />
fl3795 7,16 8,41 ----<br />
fl4461 1,06 1,66 0,001<br />
pla7397 1,57 2,19 0,001<br />
A continuación nos fijaremos en el problema <strong>de</strong>l árbol <strong>de</strong> expansión mínima capacitado; un supuesto<br />
especial <strong>de</strong>l problema <strong>de</strong> la partición ya visto en el apartado 4. Abundando en la estructura <strong>de</strong>l problema,<br />
Ahuja et al. [2] han <strong>de</strong>sarrollado un algoritmo <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong> basado en<br />
vecinda<strong>de</strong>s <strong>de</strong> intercambios cíclicos. Se trata <strong>de</strong> un algoritmo <strong>de</strong> <strong>gran</strong> eficiencia con el que se han<br />
obtenido soluciones mejoradas para muchos problemas patrón. Actualmente, ofrece la mejor solución<br />
existente para cada una <strong>de</strong> las instancias que aparecen en la lista <strong>de</strong> patrones, a la que se pue<strong>de</strong> acce<strong>de</strong>r<br />
en http://www.ms.ic.ac.uk/info.html.<br />
Finalmente, en nuestro último ejemplo nos fijaremos en algoritmos <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>muy</strong><br />
<strong>gran</strong> <strong>escala</strong> para problemas <strong>de</strong> asignación generalizada (GAP). Yagiura et al. [80] han <strong>de</strong>sarrollado un<br />
algoritmo <strong>de</strong> <strong>búsqueda</strong> tabú basado en ejection chain para este tipo <strong>de</strong> problemas y afirman haber<br />
obtenido, en un tiempo <strong>de</strong> cálculo razonable, soluciones superiores o, al menos, comparables, a las<br />
32
obtenidas con los algoritmos ya existentes. A partir <strong>de</strong> comparaciones y experimentos computacionales,<br />
se afirma que, en instancias patrón, las soluciones obtenidas <strong>por</strong> este algoritmo se hallan <strong>de</strong>ntro <strong>de</strong><br />
óptimos <strong>de</strong>l 16%.<br />
Muchas <strong>de</strong> las referencias <strong>de</strong> autores citadas a lo largo <strong>de</strong>l presente estudio dan cuenta asimismo <strong>de</strong><br />
resultados <strong>de</strong> cálculos basados en sus algoritmos. A ellos nos remitimos para más <strong>de</strong>talles. Por otra parte,<br />
varias vecinda<strong>de</strong>s <strong>de</strong> <strong>muy</strong> <strong>gran</strong> <strong>escala</strong> tratadas en este estudio no han sido probadas experimentalmente<br />
<strong>de</strong>ntro <strong>de</strong> un marco <strong>de</strong> <strong>búsqueda</strong> <strong>por</strong> <strong>vecindad</strong> a <strong>muy</strong> <strong>gran</strong> <strong>escala</strong>. Las implementaciones efectivas <strong>de</strong><br />
éstas y otras vecinda<strong>de</strong>s son temas para posteriores investigaciones.<br />
Agra<strong>de</strong>cimientos:<br />
La investigación <strong>de</strong>l primer autor recibió el apoyo <strong>de</strong> la beca NSF (DMI-9900087). El segundo y<br />
tercer autor fueron apoyados parcialmente <strong>por</strong> las becas NSF (DMI-9810359 y DMI-9820998). El cuarto<br />
autor recibió el apoyo <strong>de</strong> la beca NSERC (OPG0170381).<br />
33
Referencias<br />
[1] E. Aarts and J.K. Lenstra, Local Search in Combinatorial Optimization, (John Wiley & Sons, New<br />
York, 1997).<br />
[2] R.K. Ahuja, J.B. Orlin, and D. Sharma, New neighborhood search structures for the capacitated<br />
minimum spanning tree problem, Research Re<strong>por</strong>t 99-2, Department of Industrial & Systems<br />
Engineering, University of Florida, 1999.<br />
[3] V. Aggarwal, V.G. Tikekar, and Lie-Fer Hsu, Bottleneck assignment problem un<strong>de</strong>r categorization,<br />
Computers and Operations Research 13 (1986) 11-26.<br />
[4] D. Applegate, R. Bixby, V. Chvatal, and W. Cook, On the solution of traveling salesman problems,<br />
Documenta Mathematica, Extra volume ICM (1998), 645-656.<br />
[5] S. Arnborg and A. Proskurowski, Linear time algorithms for NP-hard problems restricted to partial<br />
k-trees, Discrete Applied Mathematics 23 (1989), 11-24.<br />
[6] R. E. Burkard, V. G. Deineko, and G. J. Woeginger, The travelling salesman problem and the PQtree,<br />
in: Proc. IPCO V, Lecture Notes in Computer Science, Vol. 1084 (Springer, 1996) 490-504.<br />
[7] R.E. Burkard and V.G. Deineko, Polynomially solvable cases of the traveling salesman problem and<br />
a new exponential neighborhood, Computing 54 (1995) 191-211.<br />
[8] J. Carlier and P. Villon, A new heuristic for the traveling salesman problem, RAIRO - Operations<br />
Research 24 (1990) 245-253.<br />
[9] R.K. Congram, C.N. Potts, S. L. van <strong>de</strong> Vel<strong>de</strong>, An iterated dynasearch algorithm for the single<br />
machine total weighted tardiness scheduling problem, paper in preparation, 1998.<br />
[10] G. Cornuejols, D. Nad<strong>de</strong>f, and W.R. Pulleyblank, Halin graphs and the traveling salesman problem,<br />
Mathematical Programming 26 (1983) 287-294.<br />
[11] G. A. Croes, A method for solving traveling-salesman problems, Operations Research 6 (1958)<br />
791-812.<br />
[12] V. Deineko and G.J. Woeginger, A study of exponential neighborhoods for the traveling salesman<br />
problem and the quadratic assignment problem, Re<strong>por</strong>t Woe-05, Technical University Graz, 1997.<br />
[13] U. Dorndorf and E. Pesch, Fast clustering algorithms, ORSA Journal of Computing 6 (1994) 141-<br />
153.<br />
[14] K.A. Dowsland, Nurse scheduling with tabu search and strategic oscillation, European Journal of<br />
Operations Research 106 (1998) 393-407.<br />
[15] M. Dror and L. Levy, A vehicle routing improvement algorithm comparison of a “greedy” and a<br />
“matching” implementation for inventory routing, Computers and Operations Research 13 (1986) 3345.<br />
31<br />
[16] A.E. Dunlop and B.W. Kernighan, A procedure for placement of standard cell VLSI circuits, IEEE<br />
Transactions on Computer-Ai<strong>de</strong>d Design 4 (1985) 92-98.<br />
34
[17] M. Duque-Anton, Constructing efficient simulated annealing algorithms, Discrete Applied<br />
Mathematics 77 (1997) 139-159.<br />
[18] E.S. El-Mallah and C.J. Colbourn, Optimum communication spanning trees in series parallel<br />
networks, SIAM Journal of Computing 14 (1985) 915-925.<br />
[19] R. Fahrion and M. Wre<strong>de</strong>, On a principle of chain exchange for vehicle routing problems (IVRP),<br />
Journal of Operational Research Society (1990) 821-827.<br />
[20] C.M. Fiduccia and R.M. Mattheyses, A linear time heuristic for improving network partitions, in:<br />
ACM IEEE Nineteenth Design Automation Conference Proceedings, IEEE Computer Society, (Los<br />
Alamitos, CA, 1982) 175-181.<br />
[21] R.T.Firla, B.Spille and R.Weismantel, personal communication.<br />
[22] R.T.Firla, B.Spille and R.Weismantel, A primal analogue of cutting plane algorithms, Depatment of<br />
Mathematics, Otto-von-Guericke-University Mag<strong>de</strong>burg, 1999.<br />
[23] A. Frangioni, E. Necciari, M.G. Scutella, Multi-exchange algorithms for the minimum makespan<br />
machine scheduling problem, paper in preparation, Dipartimento di Informatica, University of Pisa,<br />
2000.<br />
[24] M.L. Fredman, D.S. Johnson, and L.A McGeoch, Data structures for traveling salesman, Journal of<br />
Algorithms 16 (1995) 432-479.<br />
[25] M. Gendreau, F. Guertin, J.Y. Potvin, R. Seguin, Neighborhood search heuristics for a dynamic<br />
vehicle dispatching problem with pick-ups and <strong>de</strong>liveries, CRT-98-10, 1998.<br />
[26] P.C. Gilmore, E.L. Lawler, and D.B. Shmoys, Well-solved special cases, in: E.L. Lawler, J.K.<br />
Lenstra, A.H.G. Rinnooy Kan, and D.B. Shmoys, eds., The Traveling Salesman Problem (Wiley, New<br />
York, 1985) 87-143.<br />
[27] F. Glover, G.M. Gutin, A. Yeo, and Zverovich, Construction heuristics and domination analysis for<br />
the asymmetric TSP, Research re<strong>por</strong>t, Brunel University, 1999.<br />
[28] F. Glover and A.P. Punnen, The traveling salesman problem: New solvable cases and linkages with<br />
the <strong>de</strong>velopment of approximation algorithms, Journal of the Operational Research Society 48 (1997)<br />
502-510.<br />
[29] F. Glover and M. Laguna, Tabu Search, (Kluwer Aca<strong>de</strong>mic Publishers, 1997).<br />
[30] F. Glover, Ejection chains, reference structures, and alternating path algorithms for the traveling<br />
salesman problem, Research Re<strong>por</strong>t, University of Colorado-Boul<strong>de</strong>r, Graduate School of Business,<br />
1992. {A short version appeared in Discrete Applied Mathematics 65 (1996) 223-253.}<br />
32<br />
[31] F. Glover, Finding the best traveling salesman 4-opt move in the same time as a best 2-opt move,<br />
Journal of Heuristics 2 (1996) 169-179.<br />
[32] G.M. Gutin, On approach to solving the traveling salesman problem, in: Theory, Methodology, and<br />
Practice of System Research, Mathematical Methods of Systems Analysis, VNIIST (Moscow, 1984)<br />
184-186.<br />
35
[33] G.M. Gutin, On the efficiency of a local algorithm for solving the traveling salesman problem,<br />
Automation and Remote Control No. 11(part 2) (1988) 1514-1519.<br />
[34] G.M. Gutin, Exponential neighborhood local search for the traveling salesman problem, Computers<br />
and Operations Research 26 (1999) 313-320.<br />
[35] G.M. Gutin, and A. Yeo, Polynomial algorithms for the TSP and the QAP with a factorial<br />
domination number, Manuscript, Brunel University, UK, 1998.<br />
[36] G.M. Gutin, and A. Yeo, TSP heuristics with large domination number, Re<strong>por</strong>t 12/98, Department<br />
of Mathematics and Statistics, Brunel University, UK, 1998.<br />
[37] G.M. Gutin, and A. Yeo, Small diameter neighborhood graphs for the traveling salesman problem,<br />
Computers and Operations Research 26 (1999) 321-327.<br />
[38] G.M. Gutin, and A. Yeo, TSP tour domination and Hamiltonian cycle <strong>de</strong>composition of regular<br />
digraphs, Manuscript, Brunel University, UK, 1999.<br />
[39] K. Helsgaun, An effective implementation of the Lin-Kernighan traveling salesman heuristic,<br />
Manuscript, Roskil<strong>de</strong> University, Denmark, 1999.<br />
[40] J. Hurink, An exponential neighborhood for a one machine batching problem, University of<br />
Twente, Faculty of Mathematical Sciences, The Netherlands, 1998. To appear in OR-Spektrum 1999.<br />
[41] D.S. Johnson, Local search and the traveling salesman problem, in: Proceedings of 17th<br />
International Colloquium on Automata Languages and Programming, Lecture Notes in Computer<br />
Science, (Springer-Verlag, Berlin, 1990) 443-460.<br />
[42] D.S. Johnson, L.A. McGeoch, The travelling salesman problem: a case study in local optimization,<br />
in: E.H.L Aarts and J.K. Lenstra, eds., Local Search in Combinatorial Optimization, (Wiley, N.Y., 1997)<br />
in press.<br />
[43] R.M. Karp, A patching algorithm for the non-symmetric traveling salesman problem, SIAM Journal<br />
of Computing 8 (1979) 561-573.<br />
[44] B.W. Kernighan and S. Lin, An efficient heuristic procedure for partitioning graphs, Bell System<br />
Technical Journal 49 (1970) 291-307.<br />
[45] P.S. Klyaus, The structure of the optimal solution of certain classes of the traveling salesman<br />
problems, (in Russian), Vestsi Akad. Nauk BSSR, Physics and Math. Sci., Minsk, (1976) 95-98.<br />
33<br />
[46] S. Knust, Optimality conditions and exact neighborhoods for sequencing problems, Universitat<br />
Osnabruck, Fachbereich Mathematik/Informatik, Osnabruck, Germany, 1997.<br />
[47] M. Laguna, J. Kelly, J.L. Gonzales-Velar<strong>de</strong>, and F. Glover, Tabu search for multilevel generalized<br />
assignment problem, European Journal of Operations Research 82 (1995) 176-189.<br />
[48] E.L. Lawler, J.K. Lenstra, A.H.G. Rinnooy Kan, and D.B. Shmoys, eds., The Traveling Salesman<br />
Problem (Wiley, New York, 1985).<br />
[49] S. Lin, Computer solutions to the traveling salesman problem, Bell System Tech. Journal 44 (1965)<br />
36
2245-2269.<br />
[50] S. Lin and B. Kernighan, An effective heuristic algorithm for the traveling salesman problem,<br />
Operations Research 21 (1973) 498-516.<br />
[51] K. Mak and A. Morton, A modified Lin-Kernighan traveling salesman heuristic, ORSA Journal of<br />
Computing 13 (1992) 127-132.<br />
[52] I.I. Melamed, S.I. Sergeev, and I.K. Sigal, The traveling salesman problem: approximation<br />
algorithms, Avtomat Telemekh 11 (1989) 3-26.<br />
[53] C.H. Papadimitriou and K. Steiglitz, Combinatorial Optimization: Algorithms and Complexity<br />
(Prentice-Hall, Englewood Cliffs, NJ, 1982).<br />
[54] C.H. Papadimitriou, The complexity of Lin-Kernighan algorithm, SIAM Journal of Computing<br />
(1992) 450-465.<br />
[55] E. Pesch and F. Glover, TSP ejection chains, Discrete Applied Mathematics 76 (1997) 165-181.<br />
[56] J.M. Phillips, A.P. Punnen, and S.N. Kabadi, A linear time algorithm for the bottleneck traveling<br />
salesman problem on a Halin graph, Information Processing Letters 67 (1998) 105-110.<br />
[57] C.N. Potts and S.L. van <strong>de</strong> Vel<strong>de</strong>, Dynasearch - Iterative local improvement by dynamic<br />
programming: Part I, The traveling salesman problem, Techinical Re<strong>por</strong>t, University of Twente, The<br />
Netherlands, 1995.<br />
[58] A.P. Punnen and F. Glover, Ejection chains with combinatorial leverage for the TSP, Research<br />
Re<strong>por</strong>t, University of Colorado-Boul<strong>de</strong>r, 1996.<br />
[59] A.P. Punnen, S.N. Kabadi, Domination analysis of heuristics for the asymmetric traveling salesman<br />
problem, Manuscript, University of New Brunswick, 1998.<br />
[60] A.P. Punnen, The traveling salesman problem: New polynomial approximation algorithms and<br />
domination analysis, To Appear in Journal of Information and Optimization Sciences.<br />
[61] C. Rego, Relaxed tours and path ejections for the traveling salesman problem, European Journal of<br />
Operational Research 106 (1998a) 522-538.<br />
[62] C. Rego, A subpath ejection method for the vehicle routing problem, Management Science 44<br />
(1998b) 1447-1459.<br />
34<br />
[63] C. Rego, C. Roucairol, A parallel tabu search algorithm using ejection chains for the vehicle routing<br />
problem, in: I. H. Osman, J. P. Kelly, eds., Meta-Heuristics: Theory and Applications, (Kluwer<br />
Aca<strong>de</strong>mic Publishers, 1996).<br />
[64] G. Reinelt, The traveling salesman computational solutions for TSP application, Lecture Notes in<br />
Computer Science, Vol. 840 (Springer, 1994).<br />
[65] R.T. Rockafellar, Network Flows and Monotropic Optimization (John Wiley and Sons, New York,<br />
1984).<br />
[66] V.I. Sarvanov and N.N. Doroshko, Approximate solution of the traveling salesman problem by a<br />
37
local algorithm with scanning neighborhoods of factorial cardinality in cubic time, Software: Algorithms<br />
and Programs, Mathematics Institute of the Belorussia Aca<strong>de</strong>my of Science., Minsk, No. 31, (1981) 11-<br />
13. (In Russian)<br />
[67] A Satyanarayana and R K Wood, A linear time algorithm for computing k-terminal reliability in<br />
series parallel networks, SIAM Journal of Computing 14 (1985) 818-832.<br />
[68] R.R. Schneur and J.B. Orlin, A scaling algorithm for multicommodity flow problems, Operations<br />
Research 46 (1998).<br />
[69] N. Simonetti and E. Balas, Implementation of a linear time algorithm for certain generalized<br />
traveling salesman problems, in: Proc. IPCO V, Lecture Notes in Computer Science, Vol. 1084<br />
(Springer, 1996) 316-329.<br />
[70] F. Sourd, Scheduling tasks on unrelated machines: large neighborhood improvement procedures,<br />
submitted to Journal of Heuristics.<br />
[71] E.D. Taillard, Heuristic methods for large centroid clustering problems, Technical re<strong>por</strong>t IDSIA-96-<br />
96, Lugano, 1996.<br />
[72] E.D. Taillard, Parallel iterative search methods for vehicle routing problems, Network 23 (1993)<br />
661-673.<br />
[73] T. Takamizawa, T. Nishizeki, and N. Sato, Linear time computability of combinatorial problems on<br />
series-parallel graphs, Journal of ACM 29 (1982) 623-641.<br />
[74] K.T. Talluri, Swapping applications in a daily airline fleet assignment, Trans<strong>por</strong>tation Science. 30<br />
(1996).<br />
[75] P.M. Thompson, Local search algorithms for vehicle routing and other combinatorial problems,<br />
Ph.D. Thesis, Operations Research Center, MIT, 1988.<br />
[76] P.M. Thompson and J.B. Orlin, The theory of cyclic transfers, Operations Research Center Working<br />
Paper, MIT, August 1989.<br />
[77] P.M. Thompson and H.N. Psaraftis, Cyclic transfer algorithms for multivehicle routing and<br />
scheduling problems, Operations Research 41 (1993).<br />
35<br />
[78] A. Yeo, Large exponential neighborhoods for the traveling salesman problem, Preprint no 47,<br />
Department of Mathematics and Computer Science, O<strong>de</strong>nse University, 1997.<br />
[79] M. Yagiura, T. Ibaraki, and F. Glover, An ejection chain approach for the generalized assignment<br />
problem, Technical Re<strong>por</strong>t #99013, Department of Applied Mathematics and Physics, Kyoto University,<br />
1999.<br />
[80] M. Yagiura, T. Yamaguchi, and T. Ibaraki, A variable-<strong>de</strong>pth search algorithm for the generalized<br />
assignment problem, in: S. Voss, S. Martello and I.H. Osman, eds., Metaheuristics: Advances and<br />
Trends in Local Search Paradigms for Optimization (Kluwer Aca<strong>de</strong>mic Publishers, Boston, 1999) 459-<br />
471.<br />
[81] K. Wayne, A polynomial combinatorial algorithm for generalized minimum cost flow, STOC 1999.<br />
38
[82] P. Winter, Steiner problem in Halin networks, Discrete Applied Mathematics 17 (1987) 281294.<br />
[83] M. Zachariasen and M. Dam, Tabu search on the geometric traveling salesman problem”, in: I. H.<br />
Osman, J. P. Kelly, eds., Meta-Heuristics: Theory and Applications, (Kluwer Aca<strong>de</strong>mic Publishers,<br />
1996).<br />
36<br />
39