SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Estudio de técnicas de búsqueda por vecindad a muy gran escala




                                 Ravindra K. Ahuja
                   Departamento de ingeniería industrial y de sistemas
                               Universidad de Florida
                            Gainesville, FL 32611, USA
                                    ahuja@ufl.edu


                                       Özlem Ergun
                            Centro de investigación operativa
                         Instituto tecnológico de Massachussets
                              Cambridge, MA 02139, USA
                                      ozie@mit.edu


                                      James B. Orlin
                                Escuela Sloan de dirección
                         Instituto tecnológico de Massachussets
                              Cambridge, MA 02139, USA
                                      jorlin@mit.edu


                                  Abraham P. Punnen
             Departamento de matemáticas, estadística y ciencias informáticas
                            Universidad de New Brunswick
                     Saint John, New Brunswick, Canada E2L 4L5
                                   punnen@unbsj.ca




                                  (22 de julio de 1999)
                           (Revisado el 11 de octubre de 2000)




                                            1
Estudio de técnicas de búsqueda por vecindad a muy gran escala


                    Ravindra K. Ahuja, Özlem Ergun, James B. Orlin, Abraham P. Punnen

                                                    Resumen
Muchos problemas de optimización de interés práctico resultan intratables mediante técnicas de cálculo.
Ante esta dificultad, los algoritmos heurísticos (o de aproximación) se revelan como un medio útil para
su resolución, ya que permiten obtener soluciones casi óptimas en un tiempo razonable. Los algoritmos
de mejora son algoritmos heurísticos que, por lo general, parten de una solución factible y tratan de
hallar, por medio de iteraciones, una solución aún mejor. Los algoritmos de búsqueda por vecindad
(también llamados algoritmos de búsqueda local) constituyen un tipo bastante amplio de algoritmos de
mejora en los que en cada iteración se obtiene una solución mejorada buscando en la "vecindad" de la
solución existente. Un aspecto crítico del diseño de esta clase de algoritmos es la elección de la
estructura de la vecindad; es decir, el modo en el que se va a definir ésta. Como regla general, cuanto
más amplia sea la vecindad, mayor será tanto la calidad de las soluciones localmente óptimas como la
precisión de la solución final que se obtenga. Pero, al mismo tiempo, cuanto más amplia sea la vecindad,
más tiempo será necesario para realizar la búsqueda dentro de ella en cada iteración. Por esta razón, una
vecindad muy amplia produce necesariamente una heurística más eficaz, a menos que la búsqueda se
realice de un modo muy eficiente. El presente estudio se concentra en algoritmos de búsqueda local en
los que el tamaño de la vecindad es “muy grande” con respecto al tamaño de los datos y en los que la
búsqueda local se hace con criterios de máxima eficiencia. En él se analizan tres tipos muy amplios de
algoritmos de búsqueda por vecindad a muy gran escala (VLSN: Very Large-Scale Neighborhood): (1)
métodos de profundidad variable en los que la búsqueda local se realiza de modo heurístico, (2)
aplicación de la programación dinámica o de técnicas de flujo de redes a vecindades amplias, y (3)
vecindades grandes inducidas por restricciones del problema original que pueden resolverse en tiempo
polinómico.



1. Introducción
          Muchos problemas de optimización de interés práctico resultan intratables mediante técnicas
de cálculo. Ante esta dificultad, los algoritmos heurísticos (o de aproximación) se revelan como un
medio útil para su resolución, ya que permiten obtener soluciones casi óptimas en un tiempo razonable.
Los trabajos dedicados a algoritmos heurísticos suelen dividir éstos en dos amplias categorías:
algoritmos de construcción (o constructivos) y algoritmos de mejora. Los primeros montan una solución
partiendo de cero, mediante la asignación de valores a una o varias variables de decisión al mismo
tiempo, mientras que los algoritmos de mejora parten de una solución factible y tratan de hallar una


                                                   2
mejor por medio de iteraciones. Los algoritmos de búsqueda por vecindad (también llamados algoritmos
de búsqueda local) constituyen un tipo bastante amplio de algoritmos de mejora en los que en cada
iteración se obtiene una solución mejorada buscando en la "vecindad" de la solución existente. El
presente estudio se concentra en algoritmos de búsqueda local en los que el tamaño de la vecindad es
“muy grande” con respecto al tamaño de los datos y en los que la búsqueda local se hace con criterios de
máxima eficacia. En instancias grandes de problemas, la búsqueda de este tipo de vecindades de modo
explícito resulta poco práctica, lo que hace necesario realizar la búsqueda en un segmento más pequeño
de la vecindad o bien desarrollar algoritmos que resulten eficaces en búsquedas de modo implícito en la
vecindad.
    Un aspecto crítico del diseño de esta clase de algoritmos es la elección de la estructura de la
vecindad (es decir, el modo en el que se va a definir ésta), ya que del tipo de estructura que se elija
dependerá el que la búsqueda de vecindad desarrolle soluciones altamente precisas o soluciones con
óptimos locales muy pobres. Como regla general, cuanto más amplia sea la vecindad, mayor será tanto la
calidad de las soluciones localmente óptimas como la precisión de la solución final que se obtenga. Pero,
al mismo tiempo, cuanto más amplia sea la vecindad, más tiempo será necesario para realizar la
búsqueda dentro de ella en cada iteración. Dado que se suelen ejecutar varios algoritmos de búsqueda
local con distintos puntos de partida, la mayor duración de los tiempos de ejecución para cada iteración
requiere un menor número de ejecuciones por tiempo unitario. Por esta razón, una vecindad muy amplia
produce necesariamente una heurística más eficaz, a menos que la búsqueda se realice de un modo muy
eficiente.
    Varios de los métodos más utilizados por su alta eficiencia en investigación operativa pueden
entenderse como técnicas de búsqueda por vecindad a gran escala. Así, por ejemplo, si contemplamos el
algoritmo simplex para la resolución de programas lineales como un algoritmo de búsqueda local,
tendremos que la generación de columnas es a su vez un método de búsqueda por vecindad a gran
escala, al igual que ocurre con las técnicas de extrapolación empleadas para la resolución de muchos
problemas de flujo de redes. El algoritmo de cancelación del ciclo de coste negativo que se usa para
resolver el problema del flujo de coste mínimo y el algoritmo del camino de aumento que resuelve
problemas de ajuste son dos ejemplos de ello.
    En el presente estudio, hemos clasificado los métodos de vecindad a gran escala en tres categorías
que pueden coincidir parcialmente. La primera de ellas comprende los métodos de profundidad variable:
una serie de algoritmos que se centran en vecindades exponencialmente grandes en las que realizan
búsquedas parciales por medio de la heurística. La segunda categoría comprende algoritmos de mejora
basados en flujos de red; métodos de búsqueda local que emplean técnicas de flujo de red para
identificar posibilidades de mejora en la vecindad. Por último, en la tercera categoría se analizan
vecindades para problemas NP-difíciles inducidos por subconjuntos de restricciones de los problemas
que se pueden resolver en tiempo polinómico. Aunque hemos introducido el concepto de búsqueda por


                                                   3
vecindad a gran escala al hacer referencia a técnicas de generación de columnas para programas lineales
y a técnicas de extrapolación para flujos de redes, no se insiste sobre los programas lineales. Por el
contrario, el estudio se concentra en la aplicación de técnicas de búsqueda por vecindad a gran escala a
problemas de optimización NP-difíciles.
    Esta monografía se halla estructurada del modo que a continuación se describe. En el apartado 2 se
incluye una breve descripción general de la búsqueda local. El apartado 3 comprende un análisis de
métodos de profundidad variable. El apartado 4 trata sobre algoritmos de búsqueda por vecindad a gran
escala basados en técnicas de flujo de redes. En el apartado 5 se analizan técnicas eficientes para la
resolución de supuestos especiales de problemas NP-difíciles de optimización combinatoria, así como de
vecindades muy amplias basadas en ellos. El apartado 6 describe las mediciones de vecindades, que
pueden servir de guía para el desarrollo de algoritmos de búsqueda local con respecto a una vecindad
dada. Por último, en el apartado 7 se analiza el rendimiento computacional de varios de los algoritmos
vistos en los apartados anteriores.



2. Búsqueda local: esquema general
    Comenzaremos por introducir formalmente un problema de optimización combinatoria, junto con el
concepto de vecindad. Existen diversas maneras de representar este tipo de problemas, todas ellas
basadas en métodos de representación del conjunto de soluciones factibles. En este apartado,
representaremos el conjunto de soluciones factibles como subconjuntos de un conjunto finito,
formulándolo del siguiente modo:

    Sea E = {1, 2,..., m} un conjunto finito. En general, la cardinalidad de un conjunto S se indica
mediante |S|. Supongamos, además, que F ⊆ 2E, donde 2E indica el conjunto formado por todos los
subconjuntos de E. Los elementos de F se denominan soluciones factibles. Sea f: F → ℜ, llamándose a
la función f la función objetivo. Con estos datos, una instancia de un problema de optimización
combinatoria (POC) se representará del siguiente modo:

                  Minimizar {f(S) : S ∈ F}.
    Damos por hecho que la familia F no nos viene dada explícitamente mediante el listado de todos sus
elementos; sino que se halla representada en una forma compacta de tamaño polinómico en m. El par (F,
f) indica una instancia de un problema de optimización combinatoria. En la mayor parte de los
problemas que veremos, la función de coste es una función lineal; es decir, existe un vector f1, f2,…, fm
tal que, para todos los conjuntos factibles, S, f(S) = Σi∈Sfi.
    Supongamos que (F, f) es una instancia de un problema de optimización combinatoria. La función
de vecindad es un punto de definición del mapa N: F→ 2E. En esta función, cada valor de S         ∈   F tiene



                                                       4
asociado un subconjunto N(S) de E. El conjunto N(S) recibe el nombre de vecindad de la solución S, y
podemos suponer, sin pérdida de generalidad, que S      ∈   N(S). Se dice que una solución S*     ∈   F es
localmente óptima con respecto a una función de vecindad N cuando f(S*) ≤ f(S) para todo S ∈ N(S*).
Asimismo, se dice que N(S) es exponencial cuando |N(S)| crece de manera exponencial en m a medida
que el valor de esta última se incrementa. A lo largo de la mayor parte de este estudio, veremos
vecindades de tamaño exponencial, además de vecindades cuyo tamaño es demasiado amplio para
realizar en ellas búsquedas explícitas en la práctica. Así, por ejemplo, una vecindad con m3 elementos
resultará demasiado amplia para una búsqueda en la práctica si m tiene un valor alto (por ejemplo,
superior a un millón). Nos referiremos a las técnicas de búsqueda por vecindad empleando dichas
vecindades como algoritmos de búsqueda por vecindad a muy gran escala o algoritmos de búsqueda
VLSN.

    Para dos soluciones S y T, llamaremos S – T al conjunto de elementos que se encuentran en S pero
no en T. La distancia d(S, T) la definiremos como |S - T| + |T - S|, que es el número de elementos de E
que se encuentran en S o en T, pero no en ambos. Ocasionalmente, podremos permitir que las
vecindades incluyan también soluciones no factibles. Por ejemplo, en el caso anterior podemos hacer
que la vecindad de un recorrido incluya cada uno de los itinerarios obtenidos mediante la supresión de
uno de los vértices del mismo. Para resaltar el hecho de que una vecindad contenga otros elementos
además del itinerario, daremos, como norma general, una descripción combinatoria de las soluciones no
factibles permitidas en la búsqueda. Nos referiremos a estas estructuras combinatorias no factibles como
estructuras de referencia. Un camino de Hamilton sería un ejemplo de este tipo de estructuras.

    Podemos imaginar un algoritmo de búsqueda por vecindad (para un problema de minimización de
costes)como compuesto de tres partes:
        (i) Un grafo de vecindad (NG) definido con respecto a una instancia de problema específica,
            donde NG es un grafo dirigido con un nodo para cada solución factible que se cree (o una
            instancia de una estructura de referencia no factible), y que consta de un arco (S, T) siempre
            que T ∈ N(S).

        (ii) Un método de búsqueda del grafo de vecindad en cada iteración.
        (iii) Un método que permita determinar cuál es el siguiente nodo del grafo de vecindad que se
            elegirá en la búsqueda del paso anterior. Nos referiremos a este nodo como solución básica.
El algoritmo termina cuando S es una solución localmente óptima con respecto a la vecindad dada.
(Véase [1] para un estudio extensivo).
    A continuación definiremos dos vecindades basadas en la distancia. La primera es Nk(S) = {T ∈ F :
d(S, T) ≤ k}. Nos referiremos a estas vecindades como vecindades de distancia-k.


                                                   5
En determinadas instancias de problemas, dos soluciones factibles cualesquiera tienen la misma
cardinalidad, como ocurre en el problema del viajante de comercio (TSP: Travelling Salesman Problem),
donde cada solución factible S representa un recorrido en un grafo completo por un número n de
ciudades, por lo que tiene un número n de arcos (véase [48] para más detalles sobre el TSP). Como regla
general, afirmamos que se puede obtener T mediante un intercambio simple de S cuando |S - T| = |T - S|
= 1; y que se puede obtener mediante un k-intercambio cuando |T - S| = |S - T| = k. Definimos la
vecindad de k- intercambios de S como {T : |S - T| = |T - S| ≤ k}. Si dos soluciones factibles
cualesquiera tienen la misma cardinalidad, la vecindad de k-intercambios de S será igual a N2k(S). Un
ejemplo típico de vecindad de k-intercambios aplicada al problema del viajante de comercio es la
vecindad de doble intercambio, también conocida como vecindad 2-opt. En el grafo correspondiente a
ella, cada uno de los nodos representa un recorrido, y dos recorridos serán vecinos cuando se pueda
obtener uno a partir del otro mediante un intercambio doble. Aplicando un método de búsqueda
exhaustiva (o con algunos atajos), la siguiente solución básica será una solución de mejora.
    De Nm(S) = F, se desprende que realizar búsquedas en la vecindad de distancia k puede resultar más
        complicada a medida que el valor de k aumente. Por lo general, ocurre que esta vecindad crece
        exponencialmente cuando k no es un valor fijo, y que hallar la mejor solución (o incluso una
        solución mejorada) es NP-difícil cuando el problema original es también NP-difícil.


3. Métodos de profundidad variable
    Para k = 1 ó 2, se pueden realizar búsquedas eficaces en las vecindades de k-intercambios (o, de
modo similar, las de distancia k), aunque la media de los óptimos locales que se obtienen suele resultar
insuficiente. En cambio, para valores más altos de k, las vecindades de k-intercambios producen mejores
óptimos locales, pero el esfuerzo necesario para realizar la búsqueda puede ser excesivo. Los métodos de
profundidad variable son técnicas que permiten realizar búsquedas parciales en las vecindades de k-
intercambios. El objetivo de esta búsqueda parcial consiste en hallar soluciones que sean vecinas en el
valor de la función objetivo a los óptimos globales, y que a la vez sean capaces de reducir drásticamente
el tiempo de búsqueda en la vecindad, si bien no suelen garantizar óptimos locales. En los algoritmos de
búsqueda por vecindad a muy gran escala, entran en juego varios tipos de algoritmos para realizar
búsquedas parciales en la vecindad de k-intercambios. En este apartado analizaremos el algoritmo de Lin
y Kernighan [50] para el TSP, así como otras heurísticas de profundidad variable aplicadas a búsquedas
en vecindades de k-intercambio en distintos problemas de optimización combinatoria. El apartado
siguiente está dedicado a la descripción de otros enfoques que, en tiempo polinómico, permiten realizar
búsquedas de modo implícito en un subconjunto de tamaño exponencial de la vecindad de k-intercambio
cuando k no es un valor fijo.


                                                    6
Antes de pasar a describir el algoritmo de Lin y Kernighan, veremos algunos aspectos relativos a la
notación. Posteriormente, explicaremos el modo de generalizar dicho algoritmo a métodos de
profundidad variable (y a "ejection chains") para resolver heurísticamente problemas de optimización
combinatoria. Supongamos que T y T’ son subconjuntos de E, aunque no necesariamente factibles. Una
ruta que vaya de T a T’ será una secuencia T = T1, …, TK = T’ tal que d(Tj, Tj+1) = 1 para j = 1 a K - 1.

    Los métodos de profundidad variable se basan en una subrutina Move que tiene las siguientes
    características:
    1. En cada iteración, esta subrutina crea un subconjunto Tj y posiblemente también un subconjunto
    factible Sj a partir del par de entrada (Sj-1,Tj-1) conforme a determinados criterios de búsqueda. El
    subconjunto Tj puede ser factible o no serlo. Representaremos esta operación como Move (Sj-1,Tj-1) =
    (Sj, Tj)

    2. d(Tj, Tj+1) = 1 para todo j = 1 a K - 1.

    3. Tj cumple las propiedades adicionales, dependiendo del enfoque de profundidad variable.


    Llamemos T al recorrido actual del problema del viajante de comercio, suponiendo, sin pérdida de
generalidad, que T visita las ciudades siguiendo el orden 1, 2, 3,…, n, 1. Podemos definir la vecindad de
intercambio-2 para T como la sustitución de los vértices (i, j), y (k, l) por otros dos; (i, k) y (j, l), o bien
(i, l) y (j, k) para formar otro recorrido T’. Obsérvese que d(T, T’) = 4. La vecindad de intercambio-2 se
puede describir de un modo más formal aplicando 4 operaciones de la subrutina Move, en las que la
primera de ellas suprime del recorrido el vértice (i, j), la segunda inserta el vértice (i, k), la tercera
suprime el vértice (k, l) y la cuarta y última inserta el vértice (j, l).

    Llamemos G = (N, A) a un grafo no dirigido en los nodos n; y P = v1,               …,   vn a un camino de
Hamilton de G con n nodos. Por otra parte, un stem and cycle (término acuñado por Glover [30]) es un
subgrafo expandido de n arcos que se obtiene añadiendo un arco (i, j) a un camino de Hamilton, en el
que i es un nodo extremo del camino. Obsérvese que, al ser i y j los nodos extremos del camino, la
estructura stem and cycle es un ciclo de Hamilton, o, de modo equivalente, un recorrido. Si T es un
camino o una estructura del tipo mencionado, indicaremos su longitud total por medio de f(T).
    La heurística de Lin y Kernighan permite la sustitución de un total de n vértices al moverse de un
recorrido S a un recorrido T; es decir, d(S, T) equivale a un valor arbitrario k = 2n. El algoritmo
comienza por suprimir un vértice del recorrido original T1 construyendo un camino de Hamilton T2. En
lo sucesivo, uno de los puntos extremos de T2 será constante y permanecerá constante hasta el fin de la
iteración. El otro punto extremo se selecciona al comenzar la búsqueda. El movimiento par inserta un
extremo en el camino de Hamilton T2j que incide en el punto extremo no constante para obtener una



                                                         7
estructura stem and cycle T2j+1. Por su parte, los movimientos impares de la iteración suprimen un
extremo de la estructura stem and cycle existente T2j-1 para obtener un camino de Hamilton T2j. De cada
camino de Hamilton T2j se construye implícitamente un recorrido factible S2j uniendo los dos nodos
extremos. Al final de la iteración de Lin y Kernighan obtenemos el nuevo recorrido de la solución base
Si, de modo que f(Si) =f(S2j) para todo j.
   A continuación describiremos con mayor detalle los pasos del algoritmo de Lin y Kernighan. Cuando
se produce un movimiento par, el vértice que se va a añadir es el de longitud mínima, que incide sobre el
punto extremo no constante, lo que se añade al camino de Hamilton T2j únicamente si f(S)-f(T2j+1) > 0.
El algoritmo de Lin y Kernighan [50] describe también un medio de mejorar la forma de elegir este
vértice. La elección del vértice que se va a añadir al camino de Hamilton T2j se realiza maximizando
f(T2j) – f(T2j+2). Por otra parte, los vértices que se van a suprimir en los movimientos impares vienen
determinados exclusivamente por la estructura stem and cycle T2j-1 creada en el movimiento anterior, de
modo que T2j sea un camino de Hamilton. A la hora de elegir los vértices que se van a añadir, también se
pueden tener en cuenta otras restricciones. Varios estudios han considerado distintas combinaciones de
restricciones, como que un vértice ya suprimido no se pueda volver a añadir o que un vértice añadido
previamente no pueda suprimirse en un movimiento posterior. Por último, el algoritmo de Lin y
Kernighan termina con un óptimo local cuando no hay posibilidad de construir un recorrido que lo
mejore tras considerar todos los nodos como el nodo fijo original.
        Veamos una ilustración del algoritmo de Lin y Kernighan con un ejemplo numérico, partiendo
del recorrido de 10 nodos que muestra la figura 1(a). El algoritmo suprime primero el arco (1, 2)
creando el camino de Hamilton de la figura 1(b). A continuación se añade el arco (2, 6), lo que da como
resultado la estructura stem and cycle de la figura 1(c).




                                                     8
Figura 1. Ilustración del algoritmo de Lin y Kernighan

          (a) Recorrido con 10 nodos. (b) Camino de Hamilton. (c) Estructura stem and cycle.

Al suprimir el vértice (6, 5) de esta estructura obtenemos un camino de Hamilton, mientras que si
añadimos el vértice (5, 8) tenemos otra estructura stem and cycle. Los movimientos de inserción de
vértices en la heurística de Lin y Kernighan se hallan guiados por criterios de costes basados en el
"beneficio acumulativo", definiéndose los movimientos de supresión de vértices únicamente con
intención de generar la estructura del camino. El algoritmo de Lin y Kernighan alcanza un óptimo local
cuando, después de haber considerado todos los nodos como el nodo de inicio, no se obtienen
soluciones de mejora.
         Diversas variantes de este algoritmo han dado lugar a soluciones heurísticas de gran calidad. Se


                                                   9
trata de algoritmos que recurren a distintas mejoras, como los movimientos 2-opt, 3-opt y 4-opt
especial. ([29], [41], [42], [50], [51], [52], [64]) a fin de obtener un itinerario que no se podría diseñar
mediante los movimientos básicos de la heurística de Lin y Kernighan. Asimismo, se emplean
estructuras de datos capaces de actualizar de modo eficiente los itinerarios, y así poder lograr tanto la
eficiencia computacional como la calidad de la solución ([24], [42]). Papadimitriou [54] ha demostrado
que el problema de determinar un óptimo local con respecto a una versión del algoritmo de Lin y
Kernighan es un problema PLS-completo.
    Podemos definir los métodos de profundidad variable para el TSP mediante un procedimiento de
generalización de la heurística de Lin y Kernighan. Se trata de un procedimiento que toma como datos
de partida un itinerario factible S, aplicando a continuación la función Move más arriba. En cada
iteración, esta función crea el par (Tj, Sj), en el que el subconjunto Tj puede ser una solución factible, o
bien ser una instancia no factible de una estructura de referencia; y el subconjunto Sj es factible. A
continuación, se invoca la función Move para r iteraciones, dependiendo el valor de r de la regla
directriz adecuada. Por último, el procedimiento de búsqueda de profundidad variable da como
resultado el subconjunto factible Sk que tenga el mejor valor de función objetivo hallado en la
búsqueda.

    Procedimiento: búsqueda de profundidad variable (S);
    Inicio:

        S1 := T1 := S;
        para j := 2 a r (Tj, Sj) = Move(S j-1, Tj-1);

        seleccionar el conjunto Sk que minimice (f(Sj): 1 ≤ j ≤ r);
    Final
    Este tipo concreto de búsqueda de profundidad variables se basa en una heurística llamada “Move”,
que crea de forma sistemática un itinerario de soluciones comenzando por la solución inicial. Al tratarse
de un marco bastante flexible, existen varias formas de diseñar este procedimiento. Las características
del diseño de Move pueden suponer la diferencia entre una heurística capaz de proporcionar resultados
y otra que no lo sea tanto.

    En el procedimiento arriba descrito, hemos supuesto que Move crea en cada fase una solución
simple. En realidad, esta heurística ofrece la posibilidad de crear soluciones factibles múltiples en cada
fase ([30], [61]) o ninguna solución factible en una fase determinada ([30], [58]).

    Muchos métodos de profundidad variable requieren las soluciones intermedias Tj para poder
cumplir ciertas propiedades topológicas (o estructurales). En el algoritmo de Lin y Kernighan, por



                                                        10
ejemplo, es necesario que para cada valor impar de j, Tj sea una estructura stem and cycle, así como que,
para cada valor par de j, Tj sea un camino de Hamilton. En el siguiente apartado veremos también
ejemplos en los que Tj cumple otras propiedades que no son estructurales; como, por ejemplo, las que
dependen del orden de los índices.
        Glover [30] consideró una clase estructurada de métodos de profundidad variable llamados
ejection chains y basados en métodos de itinerarios alternativos clásicos, ampliando y generalizando las
ideas de Lin y Kernighan. En palabras de Glover: “De modo muy esquemático, una ejection chain se
inicia seleccionando un conjunto de elementos que van a experimentar un cambio de estado (e.g, ocupar
nuevas posiciones, recibir nuevos valores o ambas cosas). Este cambio tendrá por efecto identificar una
serie de conjuntos distintos, que tengan la propiedad de que los elementos de al menos uno de ellos
deben ser “eyectados” de su estado actual. Por lo general, los pasos de cambio de estado y de eyección
se alternan, y las opciones existentes para cada uno de ellos dependerán del efecto cumulativo de los
pasos previos (estando influido generalmente, aunque no siempre, por el paso inmediatamente anterior).
En algunos casos, una secuencia en cascada de operaciones indica que se ha producido un efecto
dominó. La terminología de la "ejection chain" pretende sugerir, no limitar; proporcionando un hilo
conductor que sirva para vincular una serie de procedimientos útiles para sacar el máximo partido de
la estructura sin fijar reglas de admisión que excluyan otros tipos de clasificaciones.” (La cursiva es un
añadido).


            En el presente estudio, emplearemos una definición más restrictiva de las ejection chains. Así,
nos referiremos al método de profundidad variable como una ejection chain si:

            (i)      |T1| = |T3| = |T5| =…= n, y:

            (ii)     |T 2| = |T4| = |T6| =…= n +1 (o n-1).
Para cada valor par de j, si |Tj| = |S|- 1, Tj se obtiene a partir de Tj-1 eyectando un elemento. De otro
modo, |Tj| = |S|+1, y Tj+1 se obtiene eyectando un elemento a partir de Tj. Muchos de los métodos de
profundidad variable publicados en estudios pueden contemplarse como ejection chains. Estos métodos
suelen suponer la construcción de diferentes estructuras de referencia, junto con una serie de reglas que
permitan obtener distintas soluciones factibles. Por lo que sabemos, todos los métodos de profundidad
variable aplicados al problema del viajante de comercio de los que tenemos noticia pueden
contemplarse como ejection chains.

            Podemos suponer que los nodos del grafo de vecindad referido a la vecindad de Lin y
Kernighan se hallan compuestos por caminos y estructuras de stem-and-cycle. (Recuérdese que los
itinerarios son también instancias de stem-and cycle. Los puntos finales de cada vértice del grafo de
vecindad enlazarían un camino con una estructura stem and cycle. La técnica de búsqueda sería la


                                                        11
propuesta por Lin y Kernighan [44], y el proceso de selección consistiría en elegir el mejor de los
itinerarios hallados al realizar la búsqueda. Por consiguiente, las estructuras de referencia descritas para
las ejection chains serían los nodos del grafo de vecindad de las técnicas de ejection chain. Toda técnica
en la que la siguiente solución básica sea mucho mayor que la distancia unitaria desde la solución
básica existente es un "método de profundidad variable". Una ejection chain es un método de
profundidad variable en el que los vecinos se caracterizan por ser subconjuntos los unos de los otros (y
en los que, por tanto, un elemento se eyecta al trasladarse del más grande al más pequeño).


        En el método descrito anteriormente, las técnicas de profundidad variable se basan en la función
Move. También es posible crear subconjuntos de tamaño exponencial de Nk en los que se realicen
búsquedas mediante flujos de redes. En estas vecindades, se puede también llegar a cualquier vecino
mediante una secuencia de funciones Move en un grafo de vecindad adecuadamente definido. Conviene
tener presente que, en el caso del algoritmo de Lin y Kernighan, la vecindad es de tamaño polinómico, y
que es la propia búsqueda la que lleva a obtener soluciones sustancialmente diferentes de la solución
básica. En el siguiente apartado analizaremos estas técnicas basadas en flujos de redes, algunas de las
cuales pueden también contemplarse como técnicas de ejection chain cuando existe un medio natural de
asociar una ejection chain (una secuencia alternativa de adiciones y supresiones) a elementos de la
vecindad ([30], [31], [58], [21]).

        Los algoritmos basados en la profundidad variable y en la ejection chain se han aplicado con
éxito a la obtención de soluciones válidas para diversos problemas de optimización combinatoria.
Autores como Glover [30], Rego [61], Zachariasen y Dum [83], Johnson y McGeoch [42], Mak y
Morton [51], y Pesch y Glover [55] han utilizado estos algoritmos para la resolución del problema del
viajante de comercio. El problema del enrutamiento de vehículos ha sido tratado por Rego y Roucairol
[63] y Rego [62], mientras que Dondorf y Pesch [13] han propuesto la solución a algoritmos de
clustering mediante ejection chains. Por su parte, Yagiura et al. ([80]) han considerado la aplicación de
métodos de profundidad variable al problema de las asignaciones en general, al igual que distintas
variantes de la ejection chain [79]. Asimismo, Laguna et al. [47] aplican algoritmos cortos de estructura
ejection chain al problema de las asignaciones multinivel en general. Estas técnicas se aplican también al
problema de la partición del grafo uniforme ([16], [20], [44], [53]), al problema de las asignaciones por
categorías ([3]), al problema de asignación de canal ([17]), y al de distribución de turnos de enfermería-
([14]). Por último, Sourd [70] aplica una clase muy general de procedimientos de mejora de vecindades
a muy gran escala en los que la distancia entre dos vecinos depende de las tareas programadas en
máquinas no relacionadas. El desarrollo de estas vecindades se lleva a cabo mediante la generación de
árboles de enumeración parciales, aunque de tamaño grande, basados en las soluciones existentes y



                                                    12
buscados por heurística.


4. Algoritmos de mejora basados en flujos de redes
        En este apartado estudiaremos algoritmos locales de mejora en los que la búsqueda por
vecindades se lleva a cabo mediante algoritmos basados en flujos de redes. Las técnicas de flujos de
redes empleadas para identificar vecindades de mejora pueden agruparse en tres categorías: (i) métodos
de búsqueda de ciclo de coste mínimo; (ii) métodos basados en la programación dinámica o en la técnica
del camino más corto; y (iii) métodos basados en la búsqueda de asignaciones y ajustes de coste mínimo.
Las vecindades definidas por ciclos pueden contemplarse como generalizaciones de vecindades de dos
intercambios, mientras que las basadas en asignaciones se pueden entender como generalizaciones de
vecindades a partir de inserciones. En los tres subapartados que siguen, se ofrecen definiciones generales
de estas vecindades exponenciales, describiéndose además los algoritmos de flujos de redes empleados
en la búsqueda de vecindades mejoradas. En muchos de los problemas, la vecindad de mejora se
determina aplicando un algoritmo de flujos de redes a un grafo relacionado, lo que se conoce como grafo
de mejora.




4.1 Vecindades definidas por ciclos
        En este subapartado, comenzaremos por definir un problema de partición genérica, para a
continuación pasar a definir la vecindad de dos intercambios y la vecindad de intercambio cíclico.

        Sea A = {a1, a2, a3, …, an} un conjunto formado por n elementos. El conjunto {S1, S2, S3, …, SK}
define una Kpartición de A f A cuando cada conjunto Sj es no vacío, los conjuntos no se hallan
agrupados por pares, y su punto de unión es A. Para cualquier subconjunto S de A, llamaremos d[S] al
coste de S. Por tanto, el problema de partición consiste en hallar una partición de A en tantos

subconjuntos de K como sean necesarios para minimizar Σk d[Sk].

        Sea {S1, S2, S3, …, SK} cualquier partición factible. Diremos entonces que {T1, T2, T3, …, TK}
será un 2-vecino de {S1, S2, S3, …, SK} cuando pueda obtenerse intercambiando dos elementos que se
encuentren en subconjuntos diferentes. La vecindad de dos intercambios de {S1, S2, S3, …, SK} se halla
formada por todas las vecindades-2 de {S1, S2, S3, …, SK}. De donde deducimos que {T1, T2, T3, …, TK}
es una vecindad cíclica de {S1, S2, S3, …, SK} cuando se pueda obtener transfiriendo elementos simples a
lo largo de una secuencia de subconjuntos de k ≤ K en S. Sea también (Sh1, Sm2, Sn3, …, Spk) una
secuencia de k subconjuntos tal que hace necesario que h = p, que es el último subconjunto de la
secuencia idéntico a Sh1. A esta transferencia de elementos la llamaremos intercambio cíclico, quedando



                                                   13
ilustrada en la figura 2. En el presente ejemplo, el nodo 9 pasa del subconjunto S1 al subconjunto S4; el
nodo 2 se transfiere del subconjunto S4 al subconjunto S5, el nodo 3 pasa del subconjunto S5 al S3 y,
finalmente, el intercambio se completa transfiriendo el nodo 14 del subconjunto S3 al S1. De un modo
análogo puede definirse un vecino de camino. Desde un punto de vista matemático, no resulta difícil
convertir un intercambio de camino en un intercambio cíclico añadiendo los nodos de prueba adecuados.




Por lo general, el número de vecindades cíclicas es sustancialmente mayor que el de vecindades de dos
intercambios (2-vecindades). Mientras que hay O(n2) 2-vecindades para un valor fijo de k, existen O(nK)
vecinos cíclicos. Si se permite que la variación de k sea paralela a la de n, tendremos un número
exponencial de vecinos cíclicos.
        Thompson [75], Thompson y Orlin [76], y Thompson y Psaraftis [77] han mostrado la forma de
obtener una vecindad mejorada en la vecindad de intercambio cíclico hallando un ciclo de "subconjunto
no agrupado" de coste negativo en un grafo de mejora. Expondremos a continuación cómo construir
dicho grafo. Sea A = {a1, a2,…, an} que es el conjunto de elementos que componen el problema de
partición del conjunto original, y llamemos S[i] al subconjunto en el que se encuentra el elemento ai. El
grafo de mejora es un grafo G = (V, E) en el que V = {1, 2,…, n} es un conjunto de nodos que se
corresponde con los índices de los elementos de A del problema original. Sea asimismo E = {(i, j): S[i]

≠ S[j]}, donde un arco (i, j) corresponde a la transferencia del nodo i desde S[i] a S[j] y a la supresión de

j desde S[j]. Para cada arco (i, j)   ∈   E, haremos que c[i, j] = d[{i} ∪ S[j]{j}] – d[S[j]], es decir, el
incremento en el coste de S[j] cuando se añade i al conjunto y se suprime j. Decimos que un ciclo W en



                                                      14
G no está agrupado en el subconjunto cuando, para cada par i y j de los nodos de W, S[i] ≠ S[j], es
decir, los elementos de A correspondientes a los elementos de W se encuentran todos en subconjuntos
diferentes. Existe una correspondencia entre el mantenimiento de costes uno a uno en los intercambios
cíclicos del problema de la partición y el mantenimiento en los ciclos no asignados en el subconjunto del
grafo de mejora. Concretamente existe, para cada intercambio cíclico de coste negativo, un ciclo no
asignado en el subconjunto del grafo de mejora. Desgraciadamente, el problema consistente en
determinar si hay un ciclo no asignado en el subconjunto del grafo de mejora es un problema NP-
completo, y el consistente en hallar un ciclo no asignado en el subconjunto de coste negativo es NP-
difícil. (Véase, por ejemplo, Thompson [75], Thompson y Orlin [76], y Thompson y Psaraftis [77].)

        Aun cuando este último problema sea NP-difícil, existen heurísticas que han demostrado su
eficacia en la búsqueda del grafo. (Véase, por ejemplo, Thompson y Psaraftis [77] y Ahuja et al. [2].)
        La búsqueda por vecindad de intercambio cíclico se aplica con éxito a varios problemas de
optimización combinatoria que pueden caracterizarse como problemas de partición específica.
Thompson y Psaraftis [77], Gendreau et al. [25], y Fahrion y Wrede [19] resuelven el problema del
enrutamiento de vehículos mediante este tipo de búsqueda, mientras que Frangioni et al. [23] aplican
intercambios cíclicos a la programación de máquinas en periodos mínimos. Thompson y Psaraftis [77]
han demostrado también la aplicación de este método a problemas de programación . Por su parte, Ahuja
et al. [2], empleando intercambios cíclicos, han desarrollado las mejores soluciones existentes para un
conjunto ampliamente usado de instancias de referencia en problemas de árboles de expansión mínima
capacitados.
        La idea de hallar soluciones de mejora mediante la determinación de ciclos de coste negativo en
grafos de mejoras se ha aplicado también en otros contextos. Talluri [74] identifica intercambios de
ahorro de costes de equipo entre turnos de vuelos en problemas de asignación diaria de flota aérea
hallando ciclos de coste negativo en una red relacionada. El problema de asignación de flota puede
plantearse como un problema de flujo multiservicio entero sujeto a restricciones de lado, en el que cada
servicio hace referencia a un tipo de flota. Talluri considera una solución dada restringida a dos únicos
tipos de flota, buscando a partir de ella mejoras que puedan obtenerse mediante el intercambio de un
número de vuelos entre ambos tipos de flota. Así, desarrolla un grafo de mejora asociado, demostrando
que las vecindades de mejora se corresponden con los ciclos de coste negativo del grafo de mejora.
Schneur y Orlin [68] y Rockafellar [65] resuelven el problema de flujo multiservicio lineal detectando
flujo y enviándolos iterativamente por los ciclos de coste negativo. Esta técnica se extiende, de hecho, a
la heurística de mejora basada en ciclos para el problema de flujo multiservicio entero. En [81], Wayne
ofrece un algoritmo de cancelación de ciclo para resolver el problema del flujo de coste mínimo
generalizado. Firla et al. [22] introducen un grafo de mejora para la intersección de dos programas


                                                   15
enteros cualesquiera. Los caminos y ciclos de esta red corresponden a posibilidades de mejora de
soluciones factibles. Además, esta red da lugar a una definición algorítmica del problema del b-ajuste de
peso bipartito. Los algoritmos analizados por Glover y Punnen [28] y Yeo [78] permiten construir
itinerarios del viajante de comercio que resultan mejores que un número exponencial de itinerarios.
Estos algoritmos se pueden contemplar, asimismo, como el cálculo de un ciclo de coste mínimo en una
red considerada de capas especiales implícitamente considerada. Veremos esta heurística de forma más
detallada en el apartado 5.



4.2 Vecindades definidas por caminos (o por programación dinámica)
        A continuación analizaremos tres tipos distintos de algoritmos de búsqueda por vecindad
basados en caminos más cortos o en programación dinámica, tomando como contexto el problema del
viajante de comercio. Aplicados al mismo, podemos contemplar estos enfoques de búsqueda por
vecindad como: (i) adición y supresión de vértices secuencialmente, (ii) aceptación en intercambios
paralelos múltiples, entendiendo definido cada intercambio como la permuta del orden actual de dos
ciudades en un recorrido, y (iii) cambios cíclicos en el itinerario existente. Veamos estas vecindades con
mayor detalle.




4.2.1 Creación de un nuevo vecino mediante la adición o supresión de arcos secuencialmente
    Examinaremos en primer lugar una clase de métodos basados en el camino más corto, que
consideran los vecinos obtenidos añadiendo o suprimiendo vértices alternativamente del itinerario
existente. Se trata de métodos que realizan de modo exhaustivo búsquedas en la vecindad de ejection
chain tratada en el apartado 3, con el añadido de restricciones adicionales en los vértices. Para
simplificar, damos por hecho que el itinerario S pasa por las ciudades siguiendo el orden 1, 2, 3, …, n, 1.
Empleando la terminología del apartado 3, llamaremos itinerario T a un vecino de k-intercambios de S, y
al camino que va desde S a T, la secuencia S = T1, …, TK = T. Estas vecindades corresponden a
soluciones por aproximaciones sucesivas creadas mediante los caminos pares e impares descritos en
Punnen y Glover [58] entre varias otras vecindades y soluciones por aproximaciones sucesivas
construidas a partir de diversas clases de estructuras de camino. La solución por aproximaciones
sucesivas generada por los caminos impares ya fue desarrollada de modo independiente por Firla et
al.[21]. A efectos ilustrativos de este tipo de solución generada a partir de caminos tanto pares como
impares, veamos el siguiente algoritmo:
        (i)      Se elimina el vértice (n, 1) para obtener un camino de Hamilton T2 y se añade el vértice




                                                    16
(1, i) desde el nodo 1 al nodo i (donde i > 2) para obtener una estructura stem and cycle
                T3 .
        (ii)    El actual nodo terminal del camino es el nodo i. Se elimina el vértice (i, i-1) y se añade
                el vértice (i-1, j) para i < j < n, creando primero un camino de Hamilton y a
                continuación una estructura stem and cycle.
        (iii)   Se comprueba si se ha alcanzado un criterio de terminación. Si se alcanza, se sigue al
                paso (iv). Si no, se define i = j y se vuelve al paso (ii).

        (iii)   Se elimina el vértice (j, j-1) y se añade el vértice final (j-1, n) para completar el
                recorrido.




                             Figura 3. Ilustración del intercambio de camino alternativo.


        La figura 3 ilustra este proceso en un itinerario de 9 nodos S = (1, 2,…, 9, 1). El
procedimiento de intercambio de camino se inicia con la supresión del vértice (n, 1) y la adición del
vértice (1, 4). A continuación se elimina el vértice (3, 4) y se añade el vértice (3, 7). Por último, se
crea el nuevo itinerario T suprimiendo el vértice (6, 7) y añadiendo el vértice (6, 9). En la figura
3(a) los vértices añadidos aparecen representados mediante líneas en negrita y los eliminados
mediante una raya sobre el vértice. La figura 3(b) ilustra el nuevo itinerario que se obtiene tras el
intercambio de camino.
     Firla et al.[21], Glover [30] y Punnen y Glover [58] han demostrado que se puede obtener una
solución de mejora para esta vecindad en tiempo O(n2), hallando en un grafo de mejora un camino
de longitud mínima par o impar. Describimos aquí un grafo de mejora que permite identificar la
mejor vecindad de un itinerario hallando un camino más corto con un número de nodos par o impar.
Recordemos que S = (1, 2, 3,…, n, 1) es el itinerario existente del problema del viajante de



                                                     17
comercio con n nodos. El grafo de mejora es un grafo G = (V, E) en el que V = {1, 2,…, n}, lo que
corresponde a los nodos del problema original, y donde E = {(i, j) : 1 = i < j-1 < n} es un conjunto
de arcos dirigidos. Los arcos (1, j)   ∈   E (de modo que 2 < j = n) corresponden a la supresión del
vértice (n, 1) y a la adición del vértice (1, j), y los arcos (i, j)   ∈   E (de modo que 1 < i < j-1 < n)
corresponden a la supresión del vértice (i-1, i) y la adición del vértice (i-1, j) en el recorrido original
S. Si d[i, j] es el coste de trasladarse de la ciudad i a la ciudad j cuando asociamos un coste c[1, j] =
-d[n, 1] + d[1, j].a cada arco (1, j) ∈ E de modo que 2 < j = n y un coste c[i, j] = -d[i-1, i] + d[i-1, j] a
cada arco (i, j) ∈ E tal que 1 < i < j-1 < n. Por último, hallar un camino de coste negativo G desde el
nodo 1 a n permite identificar un intercambio k provechoso.
        Por otra parte, en [58] se examinan soluciones por aproximaciones sucesivas creadas a
partir de caminos pares e impares, nuevas estructuras de caminos, como caminos cortados y
caminos inversos, que llevan a distintas soluciones por aproximaciones sucesivas, y estructuras de
referencia. El tamaño de la vecindad generada únicamente por caminos pares e impares es Ω (n2n).
Las técnicas que aceleran la búsqueda en vecindades son importantes incluso en vecindades cuyo
tamaño no sea exponencial. Así, por ejemplo, gracias al empleo de un algoritmo del camino más
corto en un grafo de mejora acíclico, Glover [31] ha obtenido una clase con los mejores
movimientos 4-opt en tiempo O(n2).




4.2.2 Creación de un nuevo vecino mediante intercambios compuestos
        La segunda clase de algoritmos de búsqueda local definidos mediante intercambios de
caminos consiste en una generalización de la vecindad de intercambio. Dado un itinerario del
problema del viajante de comercio T = (1, 2, 3,…, n, 1) con un número n de nodos, la vecindad de

intercambio generará soluciones intercambiando las posiciones de los nodos i y j por 1 ≤ i ≤ j ≤ n.
Por ejemplo, supongamos que i = 3 y que j = 6, T' = (1, 2, 6, 4, 5, 3, 7,…, n, 1) es un vecino) de T
bajo la operación de intercambio. Se dice que dos operaciones de intercambio que conecten el nodo
i con j, y el nodo k con l son independientes cuando max{i, j} < min{k, l}, ó cuando min{i, j} >
max{k, l}. Entonces, una vecindad a gran escala en el itinerario T se puede definir componiendo (es
decir, tomando en su totalidad) un número arbitrario de operaciones de intercambio individuales.
        Congram et al. [9] y Potts y van de Velde [57] aplicaron esta vecindad de intercambios
compuestos al problema de la programación de la lentitud ponderada total de una máquina y al del
viajante de comercio (TSP), respectivamente, llamando a este enfoque dynasearch. En su estudio,
Congram et al. [9] demuestran que el tamaño de la vecindad es O(2n-1) y presentan una recursión de
programación dinámica capaz de hallar la mejor vecindad en tiempo O(n3). Hurink [40] aplica un


                                                     18
supuesto especial de la vecindad de intercambio compuesto en la que sólo se permite sustituir pares
adyacentes en el contexto de problemas de funcionamiento de una única máquina, y demuestra que
es posible obtener un vecino de mejora en tiempo O(n2) hallando el camino más corto en el grafo de
mejora apropiado.
   A continuación describiremos un grafo de mejora que nos sirva de ayuda en la búsqueda de la
vecindad de intercambio compuesto. Sea T = (1, 2, 3,…, n, 1) un itinerario del viajante de comercio
de n nodos. El grafo de mejora es un grafo G = (V, E), donde (i) V = {1, 2,…, n, 1' , 2' ,…, n'} es a
un conjunto de nodos correspondiente a los nodos del problema original y una copia de éstos, y (ii)

E es un conjunto de arcos dirigidos (i, j') ∪ (j', k), en el que un arco (i, j') corresponde al
intercambio de los nodos i y j, y un arco (j', k) indica que el nodo k es el primer nodo del siguiente
intercambio. Así, por ejemplo, un camino de tres arcos (i, j'), (j', k), (k, l) ) en G representa dos
operaciones de intercambio que cambian el nodo i por el j, y el nodo k por l. Para construir el
conjunto de arcos E, se tiene en cuenta cada par de nodos (i, j') y (j', k) en V, añadiéndose el arco (i,
j') a E si, y solamente si, j > i.> 1. El arco (j', k) se añade a E si, y solamente si, j = 1 y k > j ó j > 1 y
k > j + 1. Para cada arco (i, j')     ∈   E, se asocia un coste c[i, j] equivalente al incremento neto en el
coste óptimo del itinerario del viajante de comercio tras suprimir los vértices (i-1, i), (i, i+1), (j–1, j)
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
de trasladarse del nodo i al nodo j en el problema original, y d[n, n+1] = d[n, 1], tenemos que:
         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] =

         (-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' >

         i+1.

         El coste c[j', k] de todos los vértices (j', k) se define como igual a 0.

        Vemos que hallar el mejor vecino de un itinerario en el TSP para la vecindad de intercambio
compuesto equivale a hallar el camino más corto en el grafo de mejora y, por tanto, precisa un tiempo
O(n2). Obsérvese que, al ser el TSP un problema cíclico, uno de los nodos se mantiene fijo durante el
intercambio. En la construcción más arriba expuesta del grafo de mejora, suponemos, sin pérdida de
generalidad, que no se permite mover el nodo 1, por lo que la búsqueda por vecindad se realiza hallando
el camino más corto desde el nodo 1' al nodo n o al nodo n'. La recursión de programación dinámica que
ofrecen Congram et al. [9] para realizar búsquedas en la vecindad llevará igualmente un tiempo O(n2)
cuando se aplique al problema del viajante de comercio. El algoritmo del camino más corto visto arriba
emplea un tiempo O(n3) cuando se aplica al problema de la programación del retraso ponderado total, ya
que ese tiempo O(n3) es el que se precisa para calcular los costes de los arcos.



                                                          19
4.2.3 Creación de un nuevo vecino mediante un intercambio cíclico
         La última clase de algoritmos de búsqueda local que trataremos en este apartado se basa en un
tipo de intercambio cíclico de itinerarios piramidales (Carlier y Villon [8]). Se dice que un itinerario es
piramidal cuando comienza en la ciudad 1, visita a continuación las ciudades en orden creciente hasta
llegar a la ciudad n, y termina volviendo a la ciudad 1 pasando por las restantes ciudades en orden
decreciente. Supongamos que T(i) representa la ciudad situada en la posición i-ésima del itinerario T. Un
recorrido T' es un vecino piramidal de un recorrido T cuando existe un número entero p tal que:

         (i)       0 ≤ p ≤ n,

         (ii)      T' (1) T' (2) = T(i2),…, T' (p) = T(ip) con i1 < i2 <…< ip y

         (iii)     T'(p+1) = T(j1), T'(p+2) = T(j2),…, T'(n) = T(jn-p) con j1 > j2 >…> jn-p.
Así, por ejemplo, si el itinerario T = (1, 2, 3, 4, 5, 1), el itinerario T' = (1, 3, 5, 4, 2, 1) será un vecino
piramidal. Esta vecindad presenta el inconveniente de que (1, 2) y (1, n) pertenecen a todos los
itinerarios. Para superarla, Carlier y Villon [8] consideran las rotaciones n asociadas a un itinerario dado.
El tamaño de esta vecindad es θ(n2n-1) y en ella puede realizarse una búsqueda en un tiempo O(n3)
utilizando n iteraciones de un algoritmo del camino más corto en el grafo de mejora.

        Describiremos a continuación un grafo de mejora en el que puede hallarse el mejor vecino
piramidal para el TSP resolviendo éste conforme al camino más corto de dicho grafo. Llamemos T = (1,
2, 3, …, n, 1) a un recorrido del viajante de comercio con n nodos. El grafo de mejora es un grafo G =
(V, E) donde (i) V = {1, 2, …, n, 1', 2',…, n'} corresponde a los nodos del problema original y a una

copia de los mismos, y (ii) E es un conjunto de arcos dirigidos (i, j') ∪ (j', k), donde un arco (i, j')
corresponde a que los nodos i a j se hallen en un orden consecutivo, y un arco (j', k) corresponde a omitir
los nodos j + 1 a k - 1 y añadirlos en orden inverso al final del itinerario. Para construir el conjunto de
arcos E, se tiene en cuenta cada par de nodos en V (i, j') y (j', k). El arco (i, j') se añade a E si, y

solamente si, i ≤ j, y el arco (j', k) se añade a E si, y solamente si, j < k + 1. Para cada arco (i, j')   ∈   E,
asociamos un coste c[i, j] ] que sea equivalente al incremento neto en el coste del vecino piramidal del
itinerario del TSP tras haber añadido el vértice (j+1, i-1,) cuando el itinerario pase en orden inverso por
las ciudades previamente omitidas. Para cada arco (j', k)         ∈   E, asociamos un coste c[j', k] que sea
equivalente al incremento neto en el coste óptimo del itinerario del TSP tras haber añadido el vértice (j,
k) y haber suprimido los vértices (j, j+1) y (k-1, k). Dicho de otro modo, si d[i, j] es el coste de
desplazarse de la ciudad i a la ciudad j en el problema original, entonces, para i < j y j < n-1:

         c[i, j'] = d[j+1, i-1],




                                                      20
c[j', k] = -d[j, j+1] – d[k-1, k] + d[j, k].
           Visto esto, y teniendo en cuenta que es preciso poner especial cuidado a la hora de calcular el
coste de los vértices en los que uno de sus puntos extremos sea 1, 1', n, o n', ya podemos realizar la
búsqueda en la vecindad hallando un camino más corto desde el nodo 1 al nodo n o al n'. Carlier y Villon
[8] demuestran también que, si un itinerario es el óptimo local de la vecindad arriba expuesta, será un
óptimo local para la vecindad de dos intercambios.
            Además de estas tres clases de vecindades, también se ha empleado la programación dinámica
para determinar soluciones óptimas a supuestos especiales del problema del viajante de comercio. Así,
Simonetti y Balas [69] resuelven el TSP por medio de ventanas de tiempo, aplicando ciertos tipos de
restricciones de precedencia con una técnica de programación dinámica. Burkard et al. [6], por su parte,
ponen de manifiesto que, para todo un conjunto de itinerarios de estructura especial que pueden
representarse por medio de árboles de prioridad, es posible resolver el TSP en tiempo polinómico
aplicando una técnica de programación dinámica. También demuestran que se puede representar el
conjunto de itinerarios piramidales mediante árboles de prioridad y que existe un algoritmo O(n2) para el
cálculo del itinerario piramidal más corto. Estos resultados se analizan de modo más detallado en el
apartado 5.



4.3 Vecindades definidas mediante asignaciones y ajustes
    En este apartado analizaremos una estructura de vecindad exponencial definida por la obtención de
asignaciones de costes mínimos en un grafo mejorado, ilustrando este tipo de vecindad en el contexto del
problema del viajante de comercio (TSP). Asimismo, demostraremos que la vecindad de la asignación se
puede generalizar a vecindades definidas por la obtención de ajustes de coste mínimo en un grafo de
mejora no bipartito. Para demostrar esta generalización recurriremos al problema de la partición del
conjunto.
           La vecindad de asignación en el problema del viajante de comercio se puede contemplar como
una generalización de la vecindad simple que se define retirando un nodo del itinerario y reinsertándolo
de manera óptima. Dado un itinerario T de n nodos = (1, 2, 3,…, n, 1), y siendo el coste de desplazarse
de la ciudad i a la ciudad j d[i, j], el primer paso para realizar la búsqueda en la vecindad de la
asignación será crear un grafo de mejora bipartito del siguiente modo:

           (i) Para k = ⌊n / 2⌋, se eligen los nodos k del itinerario actual T y se retiran. El conjunto de
               nodos retirados será V = {v1, v2, …, vk} y el conjunto de nodos restantes, U = {u1, u 2, …, u n-
               k}.



    (ii)       Se construye un sub-itinerario T´ = (u1, u 2, …, u n-k, u1) qi indica el vértice correspondiente a


                                                          21
cada (ui, ui+1) para i = 1 a n – k – 1, y qn-k indica el vértice (u n-k, u1)

    (iii)       A continuación se construye un grafo bipartito completo G = (N, N', E) tal que N = {qi: i =
                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] -
                d[ui, ui+1].

            Un vecino de T corresponderá a un itinerario T* obtenido mediante la inserción de los nodos de
V en el sub-itinerario T´ y que tenga como máximo un nodo insertado entre los nodos adyacentes de T´.
La asignación del coste mínimo de k arcos corresponderá al vecino de coste mínimo de T.
            Por medio de la figura 4, vamos a demostrar que la vecindad de asignación en el itinerario de 9
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
nodos en U como T' = (1, 4, 6, 7, 9, 1). La figura 4 ilustra el grafo bipartito G únicamente con los
vértices de los ajustes, a fin de simplificar. El nuevo itinerario que se obtiene será T" " = (1, 3, 4, 8, 6, 5,

7, 9, 2, 1). Obsérvese que cuando k = ⌊n / 2⌋, el tamaño de la vecindad de asignación es igual a Ω(⌊n /

2⌋!).




                                                           22
Figura 4. Ilustración de la vecindad de ajuste.




    La vecindad de asignación fue introducida por primera vez en el contexto del TSP por Sarvanov y
Doroshko [66] para el supuesto en que k = n/2 y n es un valor par. Gutin [33] ofrece una comparación
teórica entre el algoritmo de búsqueda por vecindades de asignación y los algoritmos de descenso por
gradiente local para k = n/2. Punnen [60] ha considerado la vecindad de asignación general para valores
arbitrarios de k y n. En [60] se muestra asimismo una extensión de la vecindad en la que, en vez de
nodos, se retiran y se reinsertan caminos de modo óptimo resolviendo un problema de ajuste de peso
mínimo. Gutin [34], a su vez, demuestra que, para ciertos valores de k, es posible maximizar el tamaño
de la vecindad, junto con ciertos algoritmos de baja complejidad, por medio de búsquedas en vecindades
relacionadas. Gutin y Yeo [37] han desarrollado una vecindad basada en la vecindad de asignación, con
la que demuestran que es posible trasladarse de cualquier itinerario T a otro itinerario T' a través de
dicha vecindad en un máximo de 4 pasos. Deineko y Woeginger [12] han estudiado varias vecindades
exponenciales para su aplicación al problema del viajante de comercio y al problema de asignación
cuadrática, basadas en asignaciones y ajustes en grafos bipartitos, así como vecindades basadas en


                                                  23
órdenes parciales, árboles y otras estructuras combinatorias. La heurística de vecindades basada en
ajustes se aplica también al problema de ruta de inventarios en los trabajos de Dror y Levy [15].
        Puede obtenerse otra clase de vecindades basadas en ajustes mediante el agrupamiento de sub-
itinerarios, donde éstos se generan resolviendo un problema de ajuste de peso mínimo bipartito ([43],
[59]). En este caso, la búsqueda del mejor itinerario es un problema NP-difícil. Para realizar la búsqueda
en este tipo de vecindades existen heurísticas eficaces ([27], [43], [59]), y es posible desarrollar
algoritmos de búsqueda en los mismos aplicando modificaciones de coste u otros medios de control del
ajuste generado.
        A continuación veremos una estructura de vecindad basada en ajustes no bipartitos, dentro del
contexto del problema de la partición general de conjuntos contemplado en el apartado 3. Llamemos S =
{S1, S2, S3,…, SK} a una partición del conjunto A = {a1, a2, a3,…, an}. A continuación, construyamos un
grafo completo G = (N, E) tal que cada nodo i para 1 ≤ i ≤ K represente el subconjunto Si en S. Los
pesos c[i, j] del vértice (i, j) de G se pueden construir separadamente conforme a una variedad de reglas,
una de las cuales es la siguiente:
        (i)         Sea la contribución del coste del subconjunto Si al problema de la partición d[Si].
        (ii)        Para cada vértice (i, j) en E, se combinan los elementos de Si and Sj, y se vuelven a
                    repartir óptimamente en dos subconjuntos, a los que llamaremos Si y Sj.

        (iii)       Luego c[i, j] = (d[Si'] + d[Sj']) – (d[Si] + d[Sj]).
   Obsérvese que, si se eliminan de G los vértices con pesos no negativos, cualquier ajuste de coste
negativo que se haga en este grafo definirá un coste vecino de mejora de S. Tailard ha aplicado este tipo
de ideas a una clase general de problemas de clustering ([71]), y al problema del enrutamiento de
vehículos ([72]).


5. Casos especiales resolubles y vecindades relacionadas
        Existen gran cantidad de estudios relativos a casos especiales de problemas de optimización
combinatoria NP-difíciles que pueden resolverse de forma eficiente. Particularmente interesantes para
nosotros son aquellos casos especiales que se pueden obtener a partir del problema NP-difícil original
limitando la topología del problema, o añadiendo restricciones al problema original, o por medio de una
combinación de estos dos factores. Al basar vecindades en estos supuestos especiales, a menudo se
pueden desarrollar vecindades de tamaño exponencial en las que es posible realizar búsquedas en tiempo
polinómico. Conviene señalar que la mayoría de estas técnicas no se han probado experimentalmente,
por lo que cabe esperar que produzcan óptimos locales poco satisfactorios. Obsérvese asimismo que la
vecindad de intercambio cíclico vista en el apartado 4 se basa en un algoritmo O(n2) para la obtención
del itinerario piramidal de coste mínimo.


                                                         24
La siguiente ilustración tiene que ver con los grafos de Halin. Un grafo de Halin es aquel que se
obtiene insertando en el plano un árbol que no tenga nodos de grado 2, y uniendo a continuación los
nodos hoja mediante un ciclo, de forma que el resultado sea un grafo planar. Cornuejols et al. [10] han
propuesto un algoritmo O(n) que resuelve el problema del viajante de comercio mediante un grafo de
este tipo. Hay que tener en cuenta que los grafos de Halin pueden tener un número exponencial de
itinerarios TSP, como ocurre en el ejemplo de la figura 3 (tomado de [10]).
        Vamos a demostrar cómo los grafos de Halin pueden emplearse para construir vecindades de
muy gran tamaño para su aplicación al problema del viajante de comercio. Supongamos que T es un
itinerario. Decimos que H es una extensión de Halin de T cuando H es un grafo de Halin y T es un
subgrafo de H. La figura 5 ilustra una extensión de Halin para el itinerario T = (0, 1, 2, …, 9, 0).
Imaginemos que existe un procedimiento eficiente Extensión-de-Halin(T), que permite crear una
extensión de Halin de T. Para crear la vecindad N(T), se haría que H(T) = Extensión-de-Halin(T), y que
N(T) = {T' : T' es un itinerario en H(T)}. Para hallar el mejor itinerario en esta vecindad, buscaríamos el
mejor itinerario en H(T). En principio, se podría definir una vecindad mucho mayor: N(T) = { T': existe
una extensión de Halin de T dentro de T'}. Pero, por desgracia, sería demasiado difícil realizar una
búsqueda eficiente en tal vecindad, ya que supondría optimizar simultáneamente todas las extensiones de
Halin de T. Sería posible desarrollar soluciones parecidas, basadas en el grafo de Halin, para la variante
de cuello de botella del problema del viajante de comercio y para el problema del árbol de Steiner,
aplicando el algoritmo de tiempo lineal de Philips et al [56] y el de Winter [82], respectivamente.




                                         Figura 5. Grafo de Halin
                           (a) Itinerario con 10 nodos. (b) Extensión de Halin




                                                    25
En los anteriores ejemplos hemos visto itinerarios piramidales, que pueden considerarse
como un problema del viajante de comercio con restricciones adicionales. También hemos
analizado el TSP restringido a grafos de Halin. En el siguiente ejemplo, en cambio, veremos una
vecindad ([28]) que se basa simultáneamente en una clase restringida de grafos con restricciones
adicionales de lado. Glover y Punnen [28] han identificado la siguiente clase de itinerarios, en los
que se puede hallar el mejor miembro en tiempo lineal. Sean C1, C2,..., Ck ciclos disjuntos de k
vértices, cada uno de los cuales contiene al menos tres nodos, hallándose cada nodo en uno de los
ciclos. Llamamos "itinerario de eyección de vértice único" (single edge ejection tour) al itinerario
T que presenta las siguientes características:

1. | T ∩ Ci| = |Ci| - 1 para i = 1 a k, es decir, T tiene |Ci| - 1 arcos en común con Ci.

2. Hay un arco de T dirigido desde Ci a Ci+1 para i = 1 a k-1 y desde Ck a C1.

         El número de formas de suprimir arcos de los ciclos es, como mínimo, Πi |Ci|, lo que puede
resultar un valor exponencialmente alto, al igual que el número de itinerarios de eyección únicos. Para
hallar el itinerario de eyección único que resulte óptimo, es preciso resolver un problema del camino más
corto relacionado en un grafo de mejora. El tiempo de ejecución es lineal en el número de arcos. En un
itinerario dado, se pueden suprimir k+1 arcos del mismo, crear k caminos, y a continuación transformar
éstos en la unión de k ciclos descrita más arriba. Aunque, en principio, la búsqueda por vecindad
explicada anteriormente es fácil de realizar, la calidad de la técnica de búsqueda tiende a ser sensible a
las características de la implementación. Glover y Punnen [28] han considerado asimismo vecindades
más amplias, entre ellas lo que han dado en llamar "double ejection tours" ("itinerarios de eyección
doble"). También han propuesto un algoritmo que se ha demostrado eficiente en la optimización de esta
clase de itinerarios.
         Yeo [78] ha estudiado otra vecindad para la versión asimétrica del TSP. Se trata de una
vecindad que guarda relación con la de Glover y Punnen [28] (aunque su tamaño es muchísimo mayor),
y para la que muestra que el tiempo de búsqueda es O(n3). Burkard y Deineko [7], por su parte, han
descubierto otra clase de vecindad exponencial, en la que es posible identificar al mejor miembro en
tiempo cuadrático. Cada uno de estos tres algoritmos pueden emplearse para desarrollar algoritmos de
búsqueda por vecindad a muy gran escala. Sin embargo, por lo que sabemos hasta ahora, ninguno de
ellos ha sido implementado.
         Resumiremos las conclusiones del presente apartado presentando un método general para
convertir una técnica de solución de problemas con restricciones en una técnica de búsqueda por
vecindad a muy gran escala. Sea X un tipo de problema de optimización combinatoria NP-difícil, y X'
una restricción de X resoluble en tiempo polinómico. Supongamos, además, que para una instancia



                                                       26
particular (F, f) de X, y para cada subconjunto factible S en F, existe una subrutina llamada
"CreateNeighborhood(S)" que crea una instancia bien estructurada (F ', f) de X' tal que

        1. S sea un elemento de F'

        2. F' sea un subconjunto de F

        3. (F ', f) sea una instancia de X'
        Llamaremos F' a la vecindad X'-inducida de S. El enfoque de búsqueda por vecindad consiste en
invocar la subrutina CreateNeighborhood(S) en cada iteración, para luego optimizar (F', f) mediante el
algoritmo de tiempo polinómico. A continuación se sustituye S por el óptimo de (F', f), y el algoritmo se
itera. Especial interés presenta el supuesto en el que la subrutina CreateNeighborhood se ejecuta en
tiempo polinómico y el tamaño de F' es exponencial. En este caso, la vecindad no se creará
explícitamente. Si bien estamos convencidos del enorme potencial de este enfoque en el contexto de la
búsqueda por vecindad, lo cierto es que se trata de un potencial sin explotar en su mayor parte, y, lo que
es más, que en muchos casos no se sabe bien cómo explotar. Por ejemplo, muchos problemas de
optimización combinatoria NP-difíciles son resolubles en tiempo polinómico cuando se hallan
restringidos a grafos de redes en serie-paralelo. Son ejemplos de ello el problema de la fiabilidad de
redes ([67]), el del árbol de expansión de comunicación óptima ([18]), el de cubierta de vértices ([5],
[73]), el del conjunto de vértices ([5], [73]), etc. Parecidos resultados se obtienen con problemas de
planificación de horarios comerciales con restricciones de precedencia específicas [46]. Queda en el aire
una cuestión sumamente interesante: cómo sacar el máximo partido de estos algoritmos eficientes para
aplicarlos a grafos de redes en serie-paralelo dentro del contexto de la búsqueda por vecindad.




6. Medición de vecindades
     En este apartado describiremos técnicas de medición de vecindades, que pueden servir como guía
para calibrar el rendimiento de algoritmos de búsqueda local con respecto a las vecindades. Como ya
hemos indicado, uno de los aspectos críticos del diseño de la heurística de búsqueda por vecindad
consiste en hallar el equilibrio entre el tamaño de la vecindad y el tiempo necesario para llevar a cabo la
búsqueda. De ahí que un elemento importante en la medición de vecindades sea el tamaño de la
vecindad. Desde el punto de vista del grafo de vecindad, el tamaño de ésta para una solución S puede
contemplarse como el número de arcos dirigidos que salen de S, o, lo que es lo mismo, el grado de
salida de S. Para los métodos de profundidad variable, el tamaño de la vecindad no tiene por qué ser
necesariamente exponencial, sino que es la búsqueda en sí la que lleva a hallar soluciones radicalmente
diferentes a la solución base. Por el contrario, para las técnicas basadas en redes y las que se hallan
inducidas por supuestos resolubles, el tamaño de la vecindad es generalmente exponencial.


                                                   27
La siguiente tabla (tomada en su mayor parte de [6]) muestra un resumen del tamaño de las
    vecindades anteriormente vistas para el problema del viajante de comercio:



    Vecindad                Tamaño            log(tamaño)      Tiempo búsqueda Referencia:

    2-Opt                   Ω(n2)             Θ(log n)         O(n2)                 Croes [11]

    k-Opt                   Ω (nk)            Θ (log n)        O(nk)                 Lin [49]

    Piramidal               Ω (2n)            Θ (n)            O(n2)                 Klyaus [45]

    Intercambio cíclico     Ω (n2n)           Θ (n)            O(n3)                 Carlier y Villion [8]

    Edge ejection           Ω ((12n)1/3)      Θ (n)            O(n)                  Glover y Punnen [28]

    Edge ejection basada Ω (n2n)              Ω (n)            O(n2)                 Punnen y Glover [58],
    en el camino más
                                                                                     Glover [30]
    corto
    Intercambio cíclico     Θ (nk)            Θ (log n)        O(n2)                 Ahuja et al. [2]
(subconjuntos k-fijos)

    Interc. compuestos      Θ (2n-1)          Θ (n)            O(n2)                 Potts y van de Velde [57]

Basada en ajustes1          Θ(n!/2)           Θ (n log n)      O(n3)                 Sarvanov y Doroshko [66]


    Grafos de Halin         Ω(2n)             Θ (n)            O(n)                  Cornuejols et al. [10]

    Árboles PQ              2Θ(n loglog n)    Θ (n loglog n) O(n3)                   Burkard et al. [6]




        Otra técnica de medición de vecindades que se estudia en la literatura es el grafo del diámetro de la
    vecindad. La distancia desde un nodo S a un nodo T en el grafo de vecindad es la longitud del camino
    más corto entre ambos. El diámetro del grafo de vecindad NG es el valor entero positivo más bajo d tal
    que d(S, T) = d para todos los nodos S y T de NG. Gutin y Yeo [37] han desarrollado vecindades de
    tamaño exponencial que admiten búsquedas polinómicas para el TSP, y cuyos grafos de vecindad son
    de diámetro 4; es decir, que para cualquier par de itinerarios T1 y T5, existen itinerarios T2, T3, y T4 tales

1
 Esto está suponiendo que cuando k = ⌊n/2⌋, los nodos se han suprimido. Si se suprimen menos nodos, es
posible obtener mejores cotas de tiempo, por lo que el tamaño de la vecindad disminuirá
proporcionalmente.


                                                          28
que Ti ∈ N(Ti-1) para todo i = 2, 3, 4, 5. El grafo de vecindad para la vecindad basada en intercambios
cíclicos estudiada por Carlier y Villon [8] es de diámetro θ(log n).
     Para un grafo de vecindad dado, decimos que P = i1, i2, …, iK es monótono cuando el valor objetivo
f(ij) < f(ij-1) para j = 2 a K. Sea dm(S) la longitud del camino monótono más corto desde S a una
solución óptima local. Si dm(S) es exponencialmente grande para cualquier S, se garantiza que una
técnica de búsqueda por vecindad que comience en S sea exponencialmente larga. Supongamos, en el
sentido contrario, que dmp(S, T) indica el camino monótono más largo desde S hasta T. Si se garantiza
que dmp(S, T) es polinómico, toda técnica de búsqueda por vecindad basada en esta vecindad tendrá un
número polinómico de iteraciones.
     Veamos por último el análisis de dominio de algoritmos de búsqueda por vecindad. El análisis de
dominio de un heurístico analiza el número de soluciones "dominadas" por la solución obtenida . Sea α
un algoritmo heurístico para un problema de optimización combinatoria que produce una solución S*
en F. El número de dominio de α, representado por dom(α), será la cardinalidad del conjunto F(S*),
donde F(S*) = {S ∈ F : f(S) ≥ f(S*)}. Si dom(α) = |F|, S* será una solución óptima. El análisis de
dominio de varios algoritmos para el TSP se estudia en [27], [28], [35], [36], [38], [59], y [60].




 7. Rendimiento computacional de algoritmos de búsqueda por
 vecindad a muy gran escala

    En este apartado estudiaremos brevemente el rendimiento computacional de algunos de los
algoritmos de búsqueda por vecindad a muy gran escala vistos en los apartados anteriores.
Comenzaremos por considerar el problema del viajante de comercio. El algoritmo de Lin y Kernighan y
sus variantes se consideran mayoritariamente como los mejores heurísticos para este problema. El
amplio estudio computacional llevado a cabo por Johnson y McGeoch [42] corrobora esta impresión en
el exhaustivo análisis de rendimiento comparativo que se incluye en él. Rego [61] ha implementado
experimentalmente algoritmos de ejection chain para el TSP con excelentes resultados que demuestran
las ventajas de su técnica con respecto al algoritmo original de Lin y Kernighan. Punnen y Glover [58],
por su parte, han puesto en práctica un algoritmo de ejection chain basado en el camino más corto. Las
implementaciones de Rego [61] y Punnen y Glover [58] son relativamente sencillas y emplean
estructuras de datos simples.
    Recientemente, Helsgaun [39] ha obtenido resultados computacionales más que notables a partir de




                                                   29
una implementación compleja del algoritmo de Lin y Kernighan. Aunque su algoritmo emplea los
elementos fundamentales de la búsqueda de profundidad variable de estos dos autores, se diferencia de
implementaciones anteriores en varios aspectos clave. Consigue un mejor rendimiento computacional
gracias al manejo eficiente de datos, a movimientos especiales 5-opt, a nuevos movimientos no
secuenciales, a listas de candidatos efectivos, a cálculos de costes, al uso eficiente de cotas superiores en
costes de elementos, a la aplicación de información procedente del algoritmo de un árbol de Held y Karp
y a la aplicación del análisis de sensibilidad, entre otras cosas. Helsgaun afirma que su algoritmo ha
producido soluciones óptimas en todos los problemas de prueba para los que se conoce una solución
óptima, entre ellos los de 7.397 ciudades y de 13.509 ciudades estudiados por Applegate et al.[4].
Helsgaun ha calculado que el tiempo de ejecución medio de este algoritmo es O(n2.2). Para dar una
perspectiva adecuada de lo que este logro supone, hay que tener en cuenta que, para resolver con
optimalidad el problema de 13.509 ciudades mediante un algoritmo exacto de ramificación y corte,
Applegate et al. [4] necesitaron tres meses de cálculos realizados con un clúster de tres servidores Digital
Alpha 4100 (con 12 procesadores) y otro clúster de 32 PCs con procesadores Pentium –II. Helsgaun, por
su parte, utilizó un Macintosh de 300 MHz y 3Gigas. Para el problema de 85.900 ciudades, (pla85900
del TSPLIB) consiguió obtener una solución mejorada en apenas dos semanas de cálculo en CPU.
(Obsérvese también que casi todo el tiempo empleado por Applegate et al. [4] se dedicó a probar que la
solución óptima lo era efectivamente.)
    En la tabla 1 presentamos un resumen del rendimiento del algoritmo de Rego (REGO) [61], del
algoritmo de Helsgaun-Lin-Kernighan (HLK) [39], del algoritmo de Lin y Kernighan modificado por
Mak y Morton [51] y del algoritmo del camino más corto de Punnen y Glover (SPG) [58] en instancias
pequeñas del problema del viajante de comercio. La tabla refleja el mejor caso para cada uno de ellos.




                                                     30
Tabla 1. Instancias pequeñas del TSP: mejor % de desviación del óptimo

Problema        REGO            HLK              MLK              SPG


bier127         0,12             0,00            0,42             0,10
u159            0,00             0,00            0,00             ----
ch130           -----            0,00            -----            0,23
ch150           -----            0,00            -----            0,40
d198            0,30             0,00            0,53             0,33
d493            0,97             0,00            -----            2,65
eil101          0,00             0,00            0,00             0,79
fl417           0,78             0,00            -----            0,41
gil262          0,13             0,00            1,30             1,81
kroA150         0,00             0,00            0,00             0,00
kroA200         0,27             0,00            0,41             0,68
kroB150         0,02             0,00            0,01             0,07
kroB200         0,11             0,00            0,87             0,42
kroC100         0,00             0,00            0,00             0,00
kroD100         0,00             0,00            0,00             0,00
kroE100         0,00             0,00            0,21             0,02
lin105          0,00             0,00            0,00             0,00
lin318          0,00             0,00            0,57             1,03
pcb442          0,22             0,00            1,06             2,41
pr107           0,05             0,00            0,00             0,00
pr124           0,10             0,00            0,08             0,00
pr136           0,15             0,00            0,15             0,00
pr144           0,00             0,00            0,39             0,00
pr152           0,90             0,00            4,73             0,00
pr226           0,22             0,00            0,09             0,11
pr264           0,00             0,00            0,59             0,20
pr299           0,22             0,00            0,44             1,30
pr439           0,55             0,00            0,54             1,29
rd100           0,00             0,00            -----            0,00
rd400           0,29             0,00            -----            2,45
ts225           0,25             0,00            -----            0,00
gr137           0,20             0,00            0,00             ----




                                               31
gr202              1,02            0,00             0,81              ----
gr229              0,23            0,00             0,20             ----
gr431              0,91            0,00             1,14             ----




    La tabla 2 muestra un resumen del rendimiento del algoritmo de (REGO) [61], del de Helsgaun-Lin-
Kernighan (HLK) [39], y de la implementación de Lin y Kernighan (JM-LK) de Johnson et al. [42]
(Atención al error: no se ha encontrado la fuente de referencia) para instancias grandes del problema del
viajante de comercio. La tabla refleja el % de desviación media para cada algoritmo.



        Tabla 2. Instancias grandes del TSP: % de desviación media tras varias ejecuciones

        Problema          Rego             JM-LK HLK


        dsj1000           1,10             3,08             0,035
        pr1002            0,86             2,61             0,00
        pr2392            0,79             2,85             0,00
        pcb3038           0,97             2,04             0,00
        fl3795            7,16             8,41             ----
        fl4461            1,06             1,66             0,001

        pla7397           1,57             2,19             0,001




   A continuación nos fijaremos en el problema del árbol de expansión mínima capacitado; un supuesto
especial del problema de la partición ya visto en el apartado 4. Abundando en la estructura del problema,
Ahuja et al. [2] han desarrollado un algoritmo de búsqueda por vecindad a muy gran escala basado en
vecindades de intercambios cíclicos. Se trata de un algoritmo de gran eficiencia con el que se han
obtenido soluciones mejoradas para muchos problemas patrón. Actualmente, ofrece la mejor solución
existente para cada una de las instancias que aparecen en la lista de patrones, a la que se puede acceder
en http://www.ms.ic.ac.uk/info.html.

    Finalmente, en nuestro último ejemplo nos fijaremos en algoritmos de búsqueda por vecindad a muy
gran escala para problemas de asignación generalizada (GAP). Yagiura et al. [80] han desarrollado un
algoritmo de búsqueda tabú basado en ejection chain para este tipo de problemas y afirman haber
obtenido, en un tiempo de cálculo razonable, soluciones superiores o, al menos, comparables, a las


                                                   32
obtenidas con los algoritmos ya existentes. A partir de comparaciones y experimentos computacionales,
se afirma que, en instancias patrón, las soluciones obtenidas por este algoritmo se hallan dentro de
óptimos del 16%.
    Muchas de las referencias de autores citadas a lo largo del presente estudio dan cuenta asimismo de
resultados de cálculos basados en sus algoritmos. A ellos nos remitimos para más detalles. Por otra parte,
varias vecindades de muy gran escala tratadas en este estudio no han sido probadas experimentalmente
dentro de un marco de búsqueda por vecindad a muy gran escala. Las implementaciones efectivas de
éstas y otras vecindades son temas para posteriores investigaciones.


    Agradecimientos:
    La investigación del primer autor recibió el apoyo de la beca NSF (DMI-9900087). El segundo y
tercer autor fueron apoyados parcialmente por las becas NSF (DMI-9810359 y DMI-9820998). El cuarto
autor recibió el apoyo de la beca NSERC (OPG0170381).




                                                   33
Referencias

[1] E. Aarts and J.K. Lenstra, Local Search in Combinatorial Optimization, (John Wiley & Sons, New
York, 1997).

[2] R.K. Ahuja, J.B. Orlin, and D. Sharma, New neighborhood search structures for the capacitated
minimum spanning tree problem, Research Report 99-2, Department of Industrial & Systems
Engineering, University of Florida, 1999.

[3] V. Aggarwal, V.G. Tikekar, and Lie-Fer Hsu, Bottleneck assignment problem under categorization,
Computers and Operations Research 13 (1986) 11-26.

[4] D. Applegate, R. Bixby, V. Chvatal, and W. Cook, On the solution of traveling salesman problems,
Documenta Mathematica, Extra volume ICM (1998), 645-656.

[5] S. Arnborg and A. Proskurowski, Linear time algorithms for NP-hard problems restricted to partial
k-trees, Discrete Applied Mathematics 23 (1989), 11-24.

[6] R. E. Burkard, V. G. Deineko, and G. J. Woeginger, The travelling salesman problem and the PQ-
tree, in: Proc. IPCO V, Lecture Notes in Computer Science, Vol. 1084 (Springer, 1996) 490-504.

[7] R.E. Burkard and V.G. Deineko, Polynomially solvable cases of the traveling salesman problem and
a new exponential neighborhood, Computing 54 (1995) 191-211.

[8] J. Carlier and P. Villon, A new heuristic for the traveling salesman problem, RAIRO - Operations
Research 24 (1990) 245-253.

[9] R.K. Congram, C.N. Potts, S. L. van de Velde, An iterated dynasearch algorithm for the single
machine total weighted tardiness scheduling problem, paper in preparation, 1998.

[10] G. Cornuejols, D. Naddef, and W.R. Pulleyblank, Halin graphs and the traveling salesman problem,
Mathematical Programming 26 (1983) 287-294.

[11] G. A. Croes, A method for solving traveling-salesman problems, Operations Research 6 (1958)
791-812.

[12] V. Deineko and G.J. Woeginger, A study of exponential neighborhoods for the traveling salesman
problem and the quadratic assignment problem, Report Woe-05, Technical University Graz, 1997.

[13] U. Dorndorf and E. Pesch, Fast clustering algorithms, ORSA Journal of Computing 6 (1994) 141-
153.

[14] K.A. Dowsland, Nurse scheduling with tabu search and strategic oscillation, European Journal of
Operations Research 106 (1998) 393-407.

[15] M. Dror and L. Levy, A vehicle routing improvement algorithm comparison of a “greedy” and a
“matching” implementation for inventory routing, Computers and Operations Research 13 (1986) 3345.
                                                 31

[16] A.E. Dunlop and B.W. Kernighan, A procedure for placement of standard cell VLSI circuits, IEEE
Transactions on Computer-Aided Design 4 (1985) 92-98.


                                                  34
[17] M. Duque-Anton, Constructing efficient simulated annealing algorithms, Discrete Applied
Mathematics 77 (1997) 139-159.

[18] E.S. El-Mallah and C.J. Colbourn, Optimum communication spanning trees in series parallel
networks, SIAM Journal of Computing 14 (1985) 915-925.

[19] R. Fahrion and M. Wrede, On a principle of chain exchange for vehicle routing problems (IVRP),
Journal of Operational Research Society (1990) 821-827.

[20] C.M. Fiduccia and R.M. Mattheyses, A linear time heuristic for improving network partitions, in:
ACM IEEE Nineteenth Design Automation Conference Proceedings, IEEE Computer Society, (Los
Alamitos, CA, 1982) 175-181.

[21] R.T.Firla, B.Spille and R.Weismantel, personal communication.

[22] R.T.Firla, B.Spille and R.Weismantel, A primal analogue of cutting plane algorithms, Depatment of
Mathematics, Otto-von-Guericke-University Magdeburg, 1999.

[23] A. Frangioni, E. Necciari, M.G. Scutella, Multi-exchange algorithms for the minimum makespan
machine scheduling problem, paper in preparation, Dipartimento di Informatica, University of Pisa,
2000.

[24] M.L. Fredman, D.S. Johnson, and L.A McGeoch, Data structures for traveling salesman, Journal of
Algorithms 16 (1995) 432-479.

[25] M. Gendreau, F. Guertin, J.Y. Potvin, R. Seguin, Neighborhood search heuristics for a dynamic
vehicle dispatching problem with pick-ups and deliveries, CRT-98-10, 1998.

[26] P.C. Gilmore, E.L. Lawler, and D.B. Shmoys, Well-solved special cases, in: E.L. Lawler, J.K.
Lenstra, A.H.G. Rinnooy Kan, and D.B. Shmoys, eds., The Traveling Salesman Problem (Wiley, New
York, 1985) 87-143.

[27] F. Glover, G.M. Gutin, A. Yeo, and Zverovich, Construction heuristics and domination analysis for
the asymmetric TSP, Research report, Brunel University, 1999.

[28] F. Glover and A.P. Punnen, The traveling salesman problem: New solvable cases and linkages with
the development of approximation algorithms, Journal of the Operational Research Society 48 (1997)
502-510.

[29] F. Glover and M. Laguna, Tabu Search, (Kluwer Academic Publishers, 1997).

[30] F. Glover, Ejection chains, reference structures, and alternating path algorithms for the traveling
salesman problem, Research Report, University of Colorado-Boulder, Graduate School of Business,
1992. {A short version appeared in Discrete Applied Mathematics 65 (1996) 223-253.}
                                                  32

[31] F. Glover, Finding the best traveling salesman 4-opt move in the same time as a best 2-opt move,
Journal of Heuristics 2 (1996) 169-179.

[32] G.M. Gutin, On approach to solving the traveling salesman problem, in: Theory, Methodology, and
Practice of System Research, Mathematical Methods of Systems Analysis, VNIIST (Moscow, 1984)
184-186.



                                                  35
[33] G.M. Gutin, On the efficiency of a local algorithm for solving the traveling salesman problem,
Automation and Remote Control No. 11(part 2) (1988) 1514-1519.

[34] G.M. Gutin, Exponential neighborhood local search for the traveling salesman problem, Computers
and Operations Research 26 (1999) 313-320.

[35] G.M. Gutin, and A. Yeo, Polynomial algorithms for the TSP and the QAP with a factorial
domination number, Manuscript, Brunel University, UK, 1998.

[36] G.M. Gutin, and A. Yeo, TSP heuristics with large domination number, Report 12/98, Department
of Mathematics and Statistics, Brunel University, UK, 1998.

[37] G.M. Gutin, and A. Yeo, Small diameter neighborhood graphs for the traveling salesman problem,
Computers and Operations Research 26 (1999) 321-327.

[38] G.M. Gutin, and A. Yeo, TSP tour domination and Hamiltonian cycle decomposition of regular
digraphs, Manuscript, Brunel University, UK, 1999.

[39] K. Helsgaun, An effective implementation of the Lin-Kernighan traveling salesman heuristic,
Manuscript, Roskilde University, Denmark, 1999.

[40] J. Hurink, An exponential neighborhood for a one machine batching problem, University of
Twente, Faculty of Mathematical Sciences, The Netherlands, 1998. To appear in OR-Spektrum 1999.

[41] D.S. Johnson, Local search and the traveling salesman problem, in: Proceedings of 17th
International Colloquium on Automata Languages and Programming, Lecture Notes in Computer
Science, (Springer-Verlag, Berlin, 1990) 443-460.

[42] D.S. Johnson, L.A. McGeoch, The travelling salesman problem: a case study in local optimization,
in: E.H.L Aarts and J.K. Lenstra, eds., Local Search in Combinatorial Optimization, (Wiley, N.Y., 1997)
in press.

[43] R.M. Karp, A patching algorithm for the non-symmetric traveling salesman problem, SIAM Journal
of Computing 8 (1979) 561-573.

[44] B.W. Kernighan and S. Lin, An efficient heuristic procedure for partitioning graphs, Bell System
Technical Journal 49 (1970) 291-307.

[45] P.S. Klyaus, The structure of the optimal solution of certain classes of the traveling salesman
problems, (in Russian), Vestsi Akad. Nauk BSSR, Physics and Math. Sci., Minsk, (1976) 95-98.
                                                    33

[46] S. Knust, Optimality conditions and exact neighborhoods for sequencing problems, Universitat
Osnabruck, Fachbereich Mathematik/Informatik, Osnabruck, Germany, 1997.

[47] M. Laguna, J. Kelly, J.L. Gonzales-Velarde, and F. Glover, Tabu search for multilevel generalized
assignment problem, European Journal of Operations Research 82 (1995) 176-189.

[48] E.L. Lawler, J.K. Lenstra, A.H.G. Rinnooy Kan, and D.B. Shmoys, eds., The Traveling Salesman
Problem (Wiley, New York, 1985).

[49] S. Lin, Computer solutions to the traveling salesman problem, Bell System Tech. Journal 44 (1965)



                                                    36
2245-2269.

[50] S. Lin and B. Kernighan, An effective heuristic algorithm for the traveling salesman problem,
Operations Research 21 (1973) 498-516.

[51] K. Mak and A. Morton, A modified Lin-Kernighan traveling salesman heuristic, ORSA Journal of
Computing 13 (1992) 127-132.

[52] I.I. Melamed, S.I. Sergeev, and I.K. Sigal, The traveling salesman problem: approximation
algorithms, Avtomat Telemekh 11 (1989) 3-26.

[53] C.H. Papadimitriou and K. Steiglitz, Combinatorial Optimization: Algorithms and Complexity
(Prentice-Hall, Englewood Cliffs, NJ, 1982).

[54] C.H. Papadimitriou, The complexity of Lin-Kernighan algorithm, SIAM Journal of Computing
(1992) 450-465.

  [55] E. Pesch and F. Glover, TSP ejection chains, Discrete Applied Mathematics 76 (1997) 165-181.

[56] J.M. Phillips, A.P. Punnen, and S.N. Kabadi, A linear time algorithm for the bottleneck traveling
salesman problem on a Halin graph, Information Processing Letters 67 (1998) 105-110.

[57] C.N. Potts and S.L. van de Velde, Dynasearch - Iterative local improvement by dynamic
programming: Part I, The traveling salesman problem, Techinical Report, University of Twente, The
Netherlands, 1995.

[58] A.P. Punnen and F. Glover, Ejection chains with combinatorial leverage for the TSP, Research
Report, University of Colorado-Boulder, 1996.

[59] A.P. Punnen, S.N. Kabadi, Domination analysis of heuristics for the asymmetric traveling salesman
problem, Manuscript, University of New Brunswick, 1998.

[60] A.P. Punnen, The traveling salesman problem: New polynomial approximation algorithms and
domination analysis, To Appear in Journal of Information and Optimization Sciences.

[61] C. Rego, Relaxed tours and path ejections for the traveling salesman problem, European Journal of
Operational Research 106 (1998a) 522-538.

[62] C. Rego, A subpath ejection method for the vehicle routing problem, Management Science 44
(1998b) 1447-1459.
                                                  34

[63] C. Rego, C. Roucairol, A parallel tabu search algorithm using ejection chains for the vehicle routing
problem, in: I. H. Osman, J. P. Kelly, eds., Meta-Heuristics: Theory and Applications, (Kluwer
Academic Publishers, 1996).

[64] G. Reinelt, The traveling salesman computational solutions for TSP application, Lecture Notes in
Computer Science, Vol. 840 (Springer, 1994).

[65] R.T. Rockafellar, Network Flows and Monotropic Optimization (John Wiley and Sons, New York,
1984).

[66] V.I. Sarvanov and N.N. Doroshko, Approximate solution of the traveling salesman problem by a



                                                   37
local algorithm with scanning neighborhoods of factorial cardinality in cubic time, Software: Algorithms
and Programs, Mathematics Institute of the Belorussia Academy of Science., Minsk, No. 31, (1981) 11-
13. (In Russian)

[67] A Satyanarayana and R K Wood, A linear time algorithm for computing k-terminal reliability in
series parallel networks, SIAM Journal of Computing 14 (1985) 818-832.

[68] R.R. Schneur and J.B. Orlin, A scaling algorithm for multicommodity flow problems, Operations
Research 46 (1998).

[69] N. Simonetti and E. Balas, Implementation of a linear time algorithm for certain generalized
traveling salesman problems, in: Proc. IPCO V, Lecture Notes in Computer Science, Vol. 1084
(Springer, 1996) 316-329.

[70] F. Sourd, Scheduling tasks on unrelated machines: large neighborhood improvement procedures,
submitted to Journal of Heuristics.

[71] E.D. Taillard, Heuristic methods for large centroid clustering problems, Technical report IDSIA-96-
96, Lugano, 1996.

[72] E.D. Taillard, Parallel iterative search methods for vehicle routing problems, Network 23 (1993)
661-673.

[73] T. Takamizawa, T. Nishizeki, and N. Sato, Linear time computability of combinatorial problems on
series-parallel graphs, Journal of ACM 29 (1982) 623-641.

[74] K.T. Talluri, Swapping applications in a daily airline fleet assignment, Transportation Science. 30
(1996).

[75] P.M. Thompson, Local search algorithms for vehicle routing and other combinatorial problems,
Ph.D. Thesis, Operations Research Center, MIT, 1988.

[76] P.M. Thompson and J.B. Orlin, The theory of cyclic transfers, Operations Research Center Working
Paper, MIT, August 1989.

[77] P.M. Thompson and H.N. Psaraftis, Cyclic transfer algorithms for multivehicle routing and
scheduling problems, Operations Research 41 (1993).
                                                 35

[78] A. Yeo, Large exponential neighborhoods for the traveling salesman problem, Preprint no 47,
Department of Mathematics and Computer Science, Odense University, 1997.

[79] M. Yagiura, T. Ibaraki, and F. Glover, An ejection chain approach for the generalized assignment
problem, Technical Report #99013, Department of Applied Mathematics and Physics, Kyoto University,
1999.

[80] M. Yagiura, T. Yamaguchi, and T. Ibaraki, A variable-depth search algorithm for the generalized
assignment problem, in: S. Voss, S. Martello and I.H. Osman, eds., Metaheuristics: Advances and
Trends in Local Search Paradigms for Optimization (Kluwer Academic Publishers, Boston, 1999) 459-
471.

[81] K. Wayne, A polynomial combinatorial algorithm for generalized minimum cost flow, STOC 1999.




                                                   38
[82] P. Winter, Steiner problem in Halin networks, Discrete Applied Mathematics 17 (1987) 281294.

[83] M. Zachariasen and M. Dam, Tabu search on the geometric traveling salesman problem”, in: I. H.
Osman, J. P. Kelly, eds., Meta-Heuristics: Theory and Applications, (Kluwer Academic Publishers,
1996).
                                                36




                                                39

Weitere ähnliche Inhalte

Ähnlich wie Estudio de técnicas de búsqueda por vecindad a muy gran escala

5581-Texto del artículo-5653-1-10-20141008.pdf
5581-Texto del artículo-5653-1-10-20141008.pdf5581-Texto del artículo-5653-1-10-20141008.pdf
5581-Texto del artículo-5653-1-10-20141008.pdfarturoruizlopez1
 
Algoritmo de aproximación aleatorizado para el problema de selección de k-cen...
Algoritmo de aproximación aleatorizado para el problema de selección de k-cen...Algoritmo de aproximación aleatorizado para el problema de selección de k-cen...
Algoritmo de aproximación aleatorizado para el problema de selección de k-cen...adoviov
 
Trabajo colaborativo 3
Trabajo colaborativo 3Trabajo colaborativo 3
Trabajo colaborativo 3Vivy Castro
 
Trabajo colaborativo 3
Trabajo colaborativo 3Trabajo colaborativo 3
Trabajo colaborativo 3Vivy Castro
 
Algoritmos geneticos
Algoritmos geneticosAlgoritmos geneticos
Algoritmos geneticosYAn_dy
 
Criterios de búsqueda en IA
Criterios de búsqueda en IACriterios de búsqueda en IA
Criterios de búsqueda en IAjimerson montiel
 
Statgraphics centurion
Statgraphics centurionStatgraphics centurion
Statgraphics centurionLuis Puertas
 
Luis Hernández-Cuadro Comparativo-I.pdf
Luis Hernández-Cuadro Comparativo-I.pdfLuis Hernández-Cuadro Comparativo-I.pdf
Luis Hernández-Cuadro Comparativo-I.pdfLuis12876
 
Informe difusión y acceso de información
Informe difusión y acceso de informaciónInforme difusión y acceso de información
Informe difusión y acceso de informaciónJaime Martínez Verdú
 
T026800007004 0-felvir rivas-_trabajofinaldefensa-000
T026800007004 0-felvir rivas-_trabajofinaldefensa-000T026800007004 0-felvir rivas-_trabajofinaldefensa-000
T026800007004 0-felvir rivas-_trabajofinaldefensa-000Cleto de la Torre
 
cuadro_comparativo_inteligencia.pdf
cuadro_comparativo_inteligencia.pdfcuadro_comparativo_inteligencia.pdf
cuadro_comparativo_inteligencia.pdfVictorCamacaro1
 
Clasificación de los sistemas
Clasificación de los sistemasClasificación de los sistemas
Clasificación de los sistemasArismar Riera
 
Minería de datos
Minería de datosMinería de datos
Minería de datosanag catal
 
Dialnet algoritmo deoptimizacionparaelcalculodemultiplesrai-4868997
Dialnet algoritmo deoptimizacionparaelcalculodemultiplesrai-4868997Dialnet algoritmo deoptimizacionparaelcalculodemultiplesrai-4868997
Dialnet algoritmo deoptimizacionparaelcalculodemultiplesrai-4868997José Luis Silva Manríquez
 
Requerimientos 2
Requerimientos 2Requerimientos 2
Requerimientos 2FSILSCA
 

Ähnlich wie Estudio de técnicas de búsqueda por vecindad a muy gran escala (20)

5581-Texto del artículo-5653-1-10-20141008.pdf
5581-Texto del artículo-5653-1-10-20141008.pdf5581-Texto del artículo-5653-1-10-20141008.pdf
5581-Texto del artículo-5653-1-10-20141008.pdf
 
Busqueda
BusquedaBusqueda
Busqueda
 
Algoritmo de aproximación aleatorizado para el problema de selección de k-cen...
Algoritmo de aproximación aleatorizado para el problema de selección de k-cen...Algoritmo de aproximación aleatorizado para el problema de selección de k-cen...
Algoritmo de aproximación aleatorizado para el problema de selección de k-cen...
 
Trabajo colaborativo 3
Trabajo colaborativo 3Trabajo colaborativo 3
Trabajo colaborativo 3
 
Trabajo colaborativo 3
Trabajo colaborativo 3Trabajo colaborativo 3
Trabajo colaborativo 3
 
Sis05 s simulacion
Sis05 s simulacionSis05 s simulacion
Sis05 s simulacion
 
Algoritmos geneticos
Algoritmos geneticosAlgoritmos geneticos
Algoritmos geneticos
 
Fi u3 ea2_mofs
Fi u3 ea2_mofsFi u3 ea2_mofs
Fi u3 ea2_mofs
 
Criterios de búsqueda en IA
Criterios de búsqueda en IACriterios de búsqueda en IA
Criterios de búsqueda en IA
 
Algoritmos genéticos 2 s lun 30 sep-13
Algoritmos genéticos 2 s lun 30 sep-13Algoritmos genéticos 2 s lun 30 sep-13
Algoritmos genéticos 2 s lun 30 sep-13
 
Statgraphics centurion
Statgraphics centurionStatgraphics centurion
Statgraphics centurion
 
Luis Hernández-Cuadro Comparativo-I.pdf
Luis Hernández-Cuadro Comparativo-I.pdfLuis Hernández-Cuadro Comparativo-I.pdf
Luis Hernández-Cuadro Comparativo-I.pdf
 
Informe difusión y acceso de información
Informe difusión y acceso de informaciónInforme difusión y acceso de información
Informe difusión y acceso de información
 
El estudio de factibilidad
El estudio de factibilidadEl estudio de factibilidad
El estudio de factibilidad
 
T026800007004 0-felvir rivas-_trabajofinaldefensa-000
T026800007004 0-felvir rivas-_trabajofinaldefensa-000T026800007004 0-felvir rivas-_trabajofinaldefensa-000
T026800007004 0-felvir rivas-_trabajofinaldefensa-000
 
cuadro_comparativo_inteligencia.pdf
cuadro_comparativo_inteligencia.pdfcuadro_comparativo_inteligencia.pdf
cuadro_comparativo_inteligencia.pdf
 
Clasificación de los sistemas
Clasificación de los sistemasClasificación de los sistemas
Clasificación de los sistemas
 
Minería de datos
Minería de datosMinería de datos
Minería de datos
 
Dialnet algoritmo deoptimizacionparaelcalculodemultiplesrai-4868997
Dialnet algoritmo deoptimizacionparaelcalculodemultiplesrai-4868997Dialnet algoritmo deoptimizacionparaelcalculodemultiplesrai-4868997
Dialnet algoritmo deoptimizacionparaelcalculodemultiplesrai-4868997
 
Requerimientos 2
Requerimientos 2Requerimientos 2
Requerimientos 2
 

Kürzlich hochgeladen

Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxNataliaGonzalez619348
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfsolidalilaalvaradoro
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)jlorentemartos
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docxMagalyDacostaPea
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfmiriamguevara21
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
HISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAHISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAJesus Gonzalez Losada
 
Abregú, Podestá. Directores.Líderes en Acción.
Abregú, Podestá. Directores.Líderes en Acción.Abregú, Podestá. Directores.Líderes en Acción.
Abregú, Podestá. Directores.Líderes en Acción.profandrearivero
 
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdfNUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdfEDNAMONICARUIZNIETO
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).hebegris04
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FJulio Lozano
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxRosabel UA
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.karlazoegarciagarcia
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docxMagalyDacostaPea
 
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...GIANCARLOORDINOLAORD
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectosTrishGutirrez
 

Kürzlich hochgeladen (20)

Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docxSecuencia didáctica.DOÑA CLEMENTINA.2024.docx
Secuencia didáctica.DOÑA CLEMENTINA.2024.docx
 
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdfBITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
BITÁCORA DE ESTUDIO DE PROBLEMÁTICA. TUTORÍA V. PDF 2 UNIDAD.pdf
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
TEMA 13. LOS GOBIERNOS DEMOCRÁTICOS (1982-2018)
 
Sesión ¿Amor o egoísmo? Esa es la cuestión
Sesión  ¿Amor o egoísmo? Esa es la cuestiónSesión  ¿Amor o egoísmo? Esa es la cuestión
Sesión ¿Amor o egoísmo? Esa es la cuestión
 
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE     9-4-24 (1).docx
4° SES MATE DESCOMP. ADIT. DE NUMEROS SOBRE CASOS DE DENGUE 9-4-24 (1).docx
 
Acuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdfAcuerdo 05_04_24 Lineamientos del CTE.pdf
Acuerdo 05_04_24 Lineamientos del CTE.pdf
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
HISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICAHISPANIDAD - La cultura común de la HISPANOAMERICA
HISPANIDAD - La cultura común de la HISPANOAMERICA
 
Abregú, Podestá. Directores.Líderes en Acción.
Abregú, Podestá. Directores.Líderes en Acción.Abregú, Podestá. Directores.Líderes en Acción.
Abregú, Podestá. Directores.Líderes en Acción.
 
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdfNUEVO PLAN Y PROGRAMAS DE ESTUDIO  2022.pdf
NUEVO PLAN Y PROGRAMAS DE ESTUDIO 2022.pdf
 
Unidad 2 | Teorías de la Comunicación | MCDIU
Unidad 2 | Teorías de la Comunicación | MCDIUUnidad 2 | Teorías de la Comunicación | MCDIU
Unidad 2 | Teorías de la Comunicación | MCDIU
 
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
HISTORIETA: AVENTURAS VERDES (ECOLOGÍA).
 
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/FEl PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
El PROGRAMA DE TUTORÍAS PARA EL APRENDIZAJE Y LA FORMACIÓN INTEGRAL PTA/F
 
Presentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptxPresentación Bloque 3 Actividad 2 transversal.pptx
Presentación Bloque 3 Actividad 2 transversal.pptx
 
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.ENSEÑAR ACUIDAR  EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
ENSEÑAR ACUIDAR EL MEDIO AMBIENTE ES ENSEÑAR A VALORAR LA VIDA.
 
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
4° UNIDAD 2 SALUD,ALIMENTACIÓN Y DÍA DE LA MADRE 933623393 PROF YESSENIA CN.docx
 
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
SESIÓN DE APRENDIZAJE Leemos un texto para identificar los sinónimos y los an...
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos5° Proyecto 13 Cuadernillo para proyectos
5° Proyecto 13 Cuadernillo para proyectos
 

Estudio de técnicas de búsqueda por vecindad a muy gran escala

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