Está en la página 1de 41

Captulo 1.

Planteamiento del Problema del Agente Viajero


Captulo 1. Planteamiento del problema del Agente Viajero (PAV)
En este captulo se define el Problema del Agente Viajero (PAV) o Traveling Salesman
Problem (TSP) a partir de distintas reas que lo han estudiado como lo es la Investigacin
de Operaciones (IO) y en especial la optimizacin combinatoria, la teora de la
complejidad computacional que definen al PAV como un problema NP-Completo, lo cual
significa que es un problema difcil de resolver y otra de las reas es la teora de grficas
o de redes que nos ayuda a analizar la estructura del problema del agente viajero como
un grafo.
1.1 Introduccin
En primera instancia uno se preguntar, qu es el problema del agente viajero? Porqu
se estudia y porque es tan famoso en varios pases? y porqu es tema de divulgacin en
este trabajo?
Pues bien, el problema del agente viajero (PAV) o bien traveling salesman problem (TSP)
como se conoce a nivel mundial. Es un problema que se estudia en investigacin de
operaciones y de manera muy especial en la optimizacin combinatoria. Se utiliza como
base para resolver una gran cantidad de problemas que se presentan en la vida real y
tambin lo utiliza otra rea como la teora de la complejidad computacional para validar
algoritmos que se van descubriendo da con da. Otras de las reas en las que se puede
observar el problema del agente viajero es la teora de grficas. En el siguiente esquema
se puede observar las tres grandes reas o enfoques que han tomado este problema para
su estudio.
Figura 1.1 Marco Conceptual del PAV
Teora de
Grficas
Teora de la
Complejidad
Computacional
NP-Completez
El PAV o TSP
Investigacin
de
Operaciones
Optimizacin
Combinatoria
Grafo
Captulo 1.Planteamiento del Problema del Agente Viajero
Para tener una idea del planteamiento de este problema pensemos en lo siguiente:
imagnate un agente viajero o bien una persona que desea visitar un conjunto n de
ciudades y que se le dan los costos, las distancias o el tiempo de viajar de una ciudad que
le podemos llamar i a una ciudad que le podemos llamar j. Y tiene dos condiciones:
regresar a la misma ciudad de la cual parti y no repetir ciudades, es decir, si ya visit la
ciudad 3 una vez ya no se puede volver a pasar por esa ciudad. Con el objetivo de
encontrar una ruta o un camino que sea el ms corto posible.


Figura 1.2
Para ayudar al agente viajero a encontrar el camino que es el ms corto dentro de varios
caminos podramos pensar en la siguiente solucin.
Supongamos que tenemos n=5 ciudades. Es decir el agente viajero tiene que visitar las
ciudades {1, 2, 3, 4, 5} y no necesariamente en este orden! Ahora bien, supongamos que
viajar de la ciudad 1 a la 2 le cuesta $3 (y el costo puede estar en funcin de la distancia o
bien el tiempo), de viajar de la ciudad 1 a la 3 me cuesta $5, viajar de la ciudad 1 a la 4
me cuesta $7 y de la ciudad 1 a la 5 me cuesta $2. Supongamos que a la inversa
tenemos el mismo costo, es decir, que viajar de la ciudad 5 a la 1 me cuesta $2. Ms
adelante explicaremos que este problema se le conoce como el problema del agente
viajero simtrico. Sabemos que viajar de la ciudad 2 a la 3 me cuesta $4, viajar de la
misma ciudad a la ciudad 4 me cuesta $6 y a la ciudad 5 tiene un costo de $3. Viajar de la
ciudad 3 a la 4 tiene un costo de $4 y viajar de la ciudad 3 a la 5 cuesta $9. Viajar de la
ciudad 4 a la 5 me cuesta $8. Y tambin sabemos que viajar de la ciudad 1 a ella misma
no tiene ningn costo, dado que no se le permite regresar a la misma ciudad, en teora de
grficas a esto se le conoce como un bucle.
Teniendo los costos de viajar de una ciudad a otra, podemos empezar a resolver nuestro
problema.
Una forma en la cual podemos transformar esta informacin es mediante matrices de
adyacencia, como se muestra a continuacin. As podremos manejar mejor nuestra
informacin.
1 2 3 4 5
1 0 3 5 7 2
2 3 0 4 6 3
3 5 4 0 7 9
4 7 6 7 0 8
5 2 3 9 8 0
_








,
Con la matriz anterior se pueden resumir los costos de viajar de una ciudad i a otra ciudad
j. Por ejemplo de la ciudad 5 a la ciudad 2 tenemos un costo de $3.
Captulo 1.Planteamiento del Problema del Agente Viajero
Una forma de ayudar al agente viajero a encontrar el camino ms corto es mostrando
todas las posibles rutas como se hace a continuacin:
Para la ruta 1, podemos imaginarnos que parta de la ciudad 1 y visite en orden sucesivo
las dems ciudades y regresando a la ciudad de la cual parti como se establece en una
de las restricciones de nuestro problema. Y acordndonos que no debe visitar una ciudad
ms de una vez. De tal manera que la ruta 1 puede establecerse as:
Ruta posible 1: {1, 2, 3, 4, 5, 1}. Lo cual quiere decir que el agente viajero partir de la
ciudad 1, enseguida visitar la ciudad 2, despus la 3, luego la 4, enseguida la 5 y por
ltimo la 1. Como podemos observar, esta solucin cumple con las dos restricciones que
tiene nuestro agente viajero, primera que regrese a la ciudad de la cual parti y segunda,
no se repiten las ciudades, lo cual significa que no pas ms de una vez por la misma
ciudad. El costo que el agente viajero tiene por elegir esta ruta es de el costo de viajar de
la ciudad 1 a la 2 que tiene un costo de $3, ms el costo de viajar de la ciudad 2 a la
ciudad 3 que es de $4 ms el costo de viajar de la ciudad 3 a la 4 que es de $7 ms el
costo de viajar de la ciudad 4 a la 5 que es de $8 y finalmente el costo de viajar de la
ciudad 5 a la ciudad 1 de la cual parti que es de $2. Esto nos da un total de $24. Pero el
objetivo es encontrar la ruta ptima, es decir, la ruta ms corta posible o bien con el
menor costo, y para pode encontrar esta ruta, es necesario, mostrar todas las rutas
posibles y enseguida comparar las soluciones y elegir la menor.
Ahora bien para ayudarnos a ver de manera grfica esta primera solucin nos
apoyaremos en una grfica 1.3 en donde los nodos representan las ciudades y los arcos o
las aristas representan el camino que une la ciudad i de la ciudad j. Esta es la primer ruta
que eligi nuestro agente viajero.
Grfica 1.3 Ruta posible 1 del agente viajero
Armemos la ruta posible 2. Para armar esta ruta, de manera arbitraria, partamos de la
ciudad 2 y que de esta ciudad se vaya a la ciudad 4 y despus a la 5, despus a la ciudad
3 y de esta a la 1 y por ltimo que regrese a la 2. Nuevamente esta ruta es una solucin
factible dado que cumple con nuestras dos restricciones. Regresar a la ciudad de la cual
partimos y no se repiten ciudades.
Esta ruta posible queda as: {2, 4, 5, 3, 1, 2} con un costo de 6+8+9+5+3=$31, con lo cual
podemos observar que de la ruta posible 1 a la ruta posible 2 el agente viajero preferira la
ruta 1 dado que el costo asociado a esta ruta es menor en $7.
1
2
1
1
5
1
3
1
4
1
3
4
3
7
4
3
8
7
4
3
2
7
4
3
Costo =$24
Captulo 1.Planteamiento del Problema del Agente Viajero
De tal manera que todo el conjunto de soluciones pueden quedar de la manera siguiente:
Ruta 3= {1, 2, 4, 3, 5, 1}= $27
Ruta 4= {1, 2, 3, 5, 4, 1}= $31
Ruta 5= {1, 2, 5, 4, 3, 1}= $26
Ruta 6= {2, 1, 3, 4, 5, 2}= $25
....
Ruta n!= {5, 4, 3, 2, 1, 5}= $24
Veamos como se van construyendo las soluciones. El agente viajero en un principio tiene
5 maneras o formas de elegir su primer ciudad y una vez que se elige una ciudad la
solucin se reduce a (n-1)=4 maneras de elegir a la siguiente ciudad de tal manera que
tengo n posibilidades de elegir la primera vez, la segunda vez tengo (n-1) la tercera tengo
(n-2) posibilidades, la cuarta tengo (n-3), la quinta tengo (n-4) y ya no tengo quinta
posibilidad ya que n es el nmero de ciudades que tengo de tal manera que si hubiera
una quinta eleccin sera (n-n=0). De tal manera que si queremos saber todo el conjunto
de posibilidades tenemos que realizar lo siguiente:
( - 1)( - 2)( - 3)( - 4) n n n n n
y de manera
general
( - 1)( - 2)...( - ( - 1)) n n n n n
lo cual implica que el conjunto de soluciones factibles es
n!. Ahora si tenemos que n=5 el conjunto de soluciones totales viene dada por n!=120
posibilidades. Imagnate construir 120 rutas posibles! Se vuelve una tarea titnica
encontrar todas las soluciones factibles y despus tendramos que comparar todas las
soluciones y elegir la ptima (la de menor costo), esto se vuelve una tarea
extremadamente ardua.
A este mtodo de solucin se le conoce enumeracin exhaustiva, porque precisamente lo
que se hace es mostrar todas las soluciones factibles y de ah se elige la solucin ptima,
pero esto requiere de muchos clculos y nos cuesta tiempo, dinero y esfuerzo. De ah que
se hayan descubierto formas ms sencillas de resolverlo basndose en la intuicin y el
conocimiento emprico, pero no encontrando la solucin si no una buena solucin.
A las tcnicas de enumeracin exhaustiva se les conoce como mtodos de solucin
exacta y a los que siguen la segunda metodologa son las tcnicas que conocemos como
mtodos heursticos, o bien metaheursticos. En los siguientes apartados se detallar en
mayor medida stas tcnicas.
1.2 El Problema del Agente Viajero en la Investigacin de Operaciones
Como sabemos la investigacin de operaciones es una herramienta muy poderosa que
utiliza modelos matemticos para ayudarnos a tomar mejores decisiones de una manera
ptima. Y dentro de la investigacin de operaciones se han planteado distintas
herramientas de anlisis como lo son: la programacin entera, la programacin dinmica,
simulacin, teora de colas, teora de redes, programacin lineal, la optimizacin
combinatoria, etc. Cada una de estas reas que se han desarrollado dentro de la
investigacin de operaciones se ha especializado y a adquirido una estructura muy
particular de los problemas que resuelve cada una de estas, han desarrollado su propia
metodologa en la forma de plantear y resolver problemas, pero el comn denominador de
todas stas herramientas es la programacin matemtica como medio para plantear y
resolver los problemas. Dentro de estas tcnicas, en especial dentro de la optimizacin
combinatoria se encuentra nuestro problema dado la estructura que tiene el problema del
Gp G
Gs
Captulo 1.Planteamiento del Problema del Agente Viajero
agente viajero, es decir, cuanta con las caractersticas de un problema combinatorio. Ms
adelante se explicarn con ms detalle las caractersticas de este tipo de problemas.
Una de las clasificaciones de la ciencia de la toma de decisiones, se realiza atendiendo al
objetivo del problema, existen modelos de optimizacin cuyo objetivo es maximizar
cierta cantidad (beneficio, eficiencia) o minimizar cierta medida (costo, tiempo), quizs
teniendo en cuenta una serie de limitaciones o requisitos que restringen la decisin
(disponibilidad de capital, personal, material, requisitos para cumplir fechas lmite, etc.)
Ejemplos clebres de modelos de optimizacin son: problemas de secuenciacin, de
localizacin, problemas de rutas (que es en donde se encuentra el problema del agente
viajero), y problemas de bsqueda.
Ahora bien si se clasifican los problemas segn la naturaleza de los datos, en donde se
atiende ms bien al tipo de modelo donde encaja el problema. En algunos casos
tendremos que ajustar al problema con un modelo determinstico, en el cual todos los
datos importantes del mismo se suponen conocidos, pero en otros, algunos de estos
datos se consideran inciertos y normalmente vienen dados por una probabilidad por lo
que ser necesario la utilizacin de un modelo probabilstico. Sin embargo, existen
modelos que conviene tratar como hbridos de estas dos categoras. Dado lo anterior el
problema del agente viajero se puede insertar dentro de los modelos determinsticos:
Como lo son los modelos de Optimizacin Lineal, Asignacin, Programacin entera,
problemas de redes, o dentro de la teora de grficas o bien dentro de los modelos
hbridos: en la programacin dinmica.
1.3 Descripcin del Problema del Agente Viajero (PAV)
El problema a tratar nos da una solucin que tiene doble interpretacin: como un circuito
hamiltoniano o como una permutacin. En este sentido, la definicin del problema estar
en funcin de la interpretacin que queramos darle.
Ahora bien qu es un problema combinatorio?, qu es una permutacin cclica
cuadrtica o lineal?, qu es un circuito hamiltoniano?
A continuacin se dar una explicacin de las caractersticas de un problema de
optimizacin combinatoria y algunos conceptos de teora de grficas para entender en
mayor medida este problema. Y definirlo de una manera formal.
Comencemos por la teora de grficas.
1.3.1 Teora de grficas y el PAV
La teora de grafos se encarga de establecer los fundamentos y bases necesarias para
resolver problemas de una determinada complejidad a travs de estructuras matemticas
cmo lo son los grafos. Los fundamentos de esta teora se basan en una serie de
conceptos que se vern a continuacin.
Una grfica G es una pareja
( , ) V E
, donde V es un conjunto finito de nodos o vrtices y
los elementos de E son subconjuntos de V de cardinalidad dos, llamados aristas. Una
grfica se denota como ( , ) G V E y se representa con puntos asociados a los vrtices y
Gp G
Gs
Captulo 1.Planteamiento del Problema del Agente Viajero
lneas asociadas con las aristas. Los vrtices de V se denotan como
1 2
, ,...,
k
v v v . Una
grfica dirigida o digrfica es una grfica con direcciones asignadas a las aristas. Es decir,
una digrfica D es una pareja
( , ) V A
donde V es un conjunto de vrtices y A es un
conjunto de parejas ordenadas de vrtices llamados arcos.
La grfica
{ } [ ] [ ] [ ] [ ] [ ] { } ( )
1 2 3 4 1 2 2 3 3 4 4 1 1 3
, , , , , , , , , , , , , G v v v v v v v v v v v v v v
y la digrfica
{ } ( ) ( ) ( ) ( ) ( ) { } ( )
1 2 3 4 1 2 2 3 3 4 4 1 1 3
, , , , , , , , , , , , , D v v v v v v v v v v v v v v
se muestra en la figura 1.2.
Figura 1.4 Grfica y digrfica
Obsrvese que se usan corchetes par denotar las aristas y parntesis para denotar los
arcos.
Si ( , ) G V E es una grfica y [ ]
1 2
, e v v
est en E , entonces se dice que
1
v es
adyacente a
2
v (y viceversa) y
e
es incidente tanto a
1
v como a
2
v . Una grfica es
completa si cada par de vrtices son adyacentes. El grado de un vrtice v en una grfica
G es el nmero de aristas incidentes a
v
. Por ejemplo; en la grfica de la figura 1.2, el
vrtice
3
v
de la grfica G tiene grado 3.
Una grfica parcial de ( , ) G V E es la grfica
( , )
p
G V E
donde p
E E
. Es decir, una
grfica constituida por todos los vrtices y algunas aristas de G. En la figura 1.5 se
muestra una grfica p
G
que es grfica parcial de G.
Figura 1.5 Representacin de una grfica G, grfica parcial Gp y una subgrfica Gs
V
4
V
3
V
1
V
2
G
V
4
V
3
V
1
V
2
DD
Gp G
Gs
Captulo 1.Planteamiento del Problema del Agente Viajero
Una subgrfica de G es una grfica
( , )
s s s
G V E
donde
s
V V
y
,
i j s
v v E 1
]
si y slo si
,
i j
v v E
. Es decir, es una grfica formada por un subconjunto de vrtices de G y todas
las aristas de G que unen los vrtices de este subconjunto. En la figura 1.5
s
G
representa
una subgrfica de G.
Una cadena, en una grfica G, es una sucesin de vrtices
[ ]
1 2
, ,...,
k
W v v v
1 k , tal que
1
,
j j
v v E
+
1
]
para
1 1,..., 1. j k
A W se le conoce como cadena de
1
v

a
k
v . Un ciclo es una cadena W donde
1 k
v v . Considrese la grfica G de la figura
1.17, [ ] [ ]
1 4 3 1 2 3
, , , , , v v v v v v
y [ ]
3 1 2 3
, , , v v v v
son ejemplos de cadenas; la ltima es un ciclo.
Una grfica es conexa si existe una cadena entre cualquier par de vrtices de la grfica.
Si la grfica es dirigida, la sucesin de vrtices W , donde ( )
1
,
j j
v v A
+
, para
1 1,..., 1, j k
se conoce como camino de
1
v
a
k
v
. Un circuito es un camino cerrado,
es decir un camino W donde
1 k
v v . El camino [ ] [ ]
1 1 3 4 1
, , , , v v v v v
de la grfica D, en la
figura 1.17, es un circuito. Un circuito hamiltoniano de una grfica G es un circuito que
incluye todos los vrtices de G.
En el contexto del problema del agente viajero a este circuito tambin se le conoce como
tour. Una grfica es hamiltoniana si contiene un circuito hamiltoniano
1 2 3 4 1
, , , , v v v v v
.
Un camino elemental es un camino en donde no se repiten los vrtices. Si los arcos del
camino no se repiten se tiene un camino simple. Anlogamente se define cadena simple
y cadena elemental.
Los conceptos tratados a continuacin se aplican tanto a grficas como a digrficas. Un
rbol ( ) ,
T T
T V E es una grfica conexa sin ciclos. En la figura 1.6, la grfica T
constituye un rbol expandido (de expansin) de G. es decir, un rbol formado con todos
los vrtices de G.

Figura 1.6 Diferencia entre grafo y rbol de expansin
Captulo 1.Planteamiento del Problema del Agente Viajero
Sea ( ) ,
T T
T V E una grfica. Las siguientes afirmaciones son equivalentes:
1. T es un rbol
2. T es conexo y tiene
1
T
V
aristas
3. T no tiene ciclos, pero si se agrega una arista a T se genera un nico ciclo
Una grfica ponderada es una grfica ( , ) G V E junto con una funcin de pesos W que
va de E a R
+
. Los pesos representan costos o distancias.
1.3.2 Definicin del problema del agente viajero como un grafo
Los conceptos presentados con anterioridad permiten enunciar el problema del agente
viajero, como un grafo. Supngase que un agente viajero necesita hacer un viaje redondo
a travs de una coleccin de
( 3) p
ciudades. Qu ruta debe elegir para minimizar la
distancia total recorrida? Supngase queG es una digrfica ponderada conexa cuyos
vrtices
(1 ) i p
representan ciudades, y ij
c
es el peso del arco
( , )
i j
v v
que representa
la distancia que hay entre las ciudades
i
v y j
v
. El problema del agente viajero pregunta
por el circuito hamiltoniano de menor peso. Si la grfica no es dirigida, es decir, la
distancia ij
c
no depende de la direccin en la que se viaje, entonces se conoce como el
problema simtrico del agente viajero mencionado en secciones anteriores. O algunas
veces la grfica no es completa, lo que significa que existen parejas de nodos que no
estn directamente conectados por arcos. No obstante, que toda grfica completa
siempre tiene circuitos de longitud n, una que no lo es puede no tener circuitos de longitud
n.
Por ejemplo la grfica en la figura 1.2 no tiene circuitos de longitud 5, en tal caso el
problema del agente viajero no tiene solucin. [Flores, 2000]
Figura 1.7 No existe solucin para el problema del agente viajero
El problema de determinar si una grfica dada con n nodos tiene un circuito de longitud n se
conoce como un problema de circuito hamiltoniano.
1
1
1
1
1
Captulo 1.Planteamiento del Problema del Agente Viajero
1.3.2.1 Circuito del agente viajero y el circuito hamiltoniano
Como se comentaba en el prrafo anterior, un circuito que incluye cada vrtice de la
grfica por lo menos una vez, es llamado el circuito del viajero. Y un circuito que incluye
cada vrtice de la grfica exactamente una vez, es llamado un circuito hamiltoniano.
1.3.2.2 Circuito del agente viajero general
El problema del agente viajero general es el problema de encontrar un circuito
hamiltoniano con una duracin total mnima.
Entonces tenemos que un circuito del agente viajero con una duracin mnima es llamado
un circuito del viajero ptimo y es una solucin ptima para el problema del viajero
general. Un circuito hamiltoniano con una duracin total mnima es llamado circuito
hamiltonaino ptimo y es una solucin ptima para el problema del agente viajero. Y un
circuito del viajero ptimo no necesariamente es un circuito hamiltoniano ptimo. Por
ejemplo, considere la grfica que se muestra en la figura 1.8. El nico circuito
hamiltoniano en esta grfica es
(a,b),(b,c),(c,a)
el cual tiene una duracin total igual a
1+ 20 +1= 22 unidades. El circuito del viajero ptimo
(a,b),(b,a),(a,c),(c,a)
que pasa a
travs de los vrtices doblemente tiene una duracin total igual a 1+1+1+1= 4 unidades.
Esto es, un circuito del viajero ptimo no necesariamente es un circuito hamiltoniano
ptimo.
Figura 1.8 Ruta ptima del agente viajero
Cundo un circuito hamiltoniano es la solucin al problema del agente viajero general?
Teorema 1.1 Si para cada par de vrtices
x, y
en la grfica G,
a(x, y) a(x, z) + a(z, y) , z x z y
(1)
entonces un circuito hamiltoniano es una solucin ptima (si la solucin existe) al
problema del agente viajero general para la grfica G.
Condicin (1): La distancia que hay de x a
y
no es nunca ms que la distancia va
cualquier otro vrtice z . La condicin (1) es llamada la desigualdad del tringulo.
Prueba: Suponga que la solucin ptima al problema del agente viajero general es
llamado un circuito hamiltoniano. Sea C cualquier circuito ptimo del agente viajero. Ya
que C no es circuito hamiltoniano, entonces algunos vrtices llmese z , aparecen al
menos dos veces en el circuito C. Suponga que la primera vez el agente viajero se
encuentra en el vrtice z y el llega del vrtice x y sale al vrtice
y
. Alterando el circuito
a
b c
1 1
20
1
1
Captulo 1.Planteamiento del Problema del Agente Viajero
C de tal manera que el viajero viaje de x directamente a
y
pasando por z . La ruta
resultante C es tambin un circuito ya que el viajero visita al menos una vez cada
vrtice. Por otra parte, por (1), la duracin total de C no excede la duracin deC.
Reemplazando C por C y repitiendo este argumento, se genera otro circuito del agente
viajero C ,etc. Eventualmente, este proceso permite un circuito ptimo que es
hamiltoniano ya que cada circuito sucesivo tiene un arco menos que su precursor. l.q.q.d.
Del teorema 1.1 se tiene que si la grfica G satisface la desigualdad del tringulo,
entonces las soluciones ptimas para el problema del agente viajero de la grfica G son
soluciones ptimas del problema del agente viajero general de la grfica G.
Hay una manera simple de ahorrarse problemas innecesarios de desarrollar dos tcnicas
de solucin, una para el problema del agente viajero general y otro para el problema del
agente viajero. Si la grfica G no satisface la desigualdad del tringulo entonces se
reemplaza la duracin de cada arco
a(x, y)
que falla la desigualdad del tringulo con la
duracin de la ruta ms corta de x a
y
. Recordando que el arco que va de x a
y

representa un viaje directo no ms largo, ahora representa un viaje a lo largo de una
trayectoria ms corta de x a y. Ahora
a(x, y)
satisface la desigualdad del tringulo.
Si una solucin ptima del problema del agente viajero de la grfica G contiene un arco
(x, y)
cuya duracin es ms corta como se especific en las lneas anteriores, entonces se
reemplaza el arco
(x, y)
por una ruta ms corta de x a
y
en la solucin ptima. Entonces
nicamente necesitaremos tcnicas de solucin para el problema del agente viajero.
Por ejemplo, en la figura 1.8 ,
( , ) 20 ( , ) ( , ) 1 1 a b c a b a a a c + + f
. Entonces, (1) falla para
el arco
( , ) b c
. Si la duracin del arco
( , ) b c
se reduce a 2, la duracin de la ruta ms corta
de b a
c
, entonces el nico circuito hamiltoniano en la grfica resultante es
( , ),( , ),( , ) a b b c c a
cuya duracin es 1 2 1 4 + + . Reemplazando
( , ) b c
por
( , ) b a
,
( , ) a c
nos
da el circuito
( , ),( , ),( , ),( , ) a b b a a c c a
el cual es un circuito del agente viajero ptimo de la
grfica original.
No todas las grficas contienen un circuito hamiltoniano. Por ejemplo la grfica que
contiene solamente dos vrtices x y
y
no contiene un circuito hamiltoniano.
1.3.2.3 Existencia de un circuito hamiltoniano
Como se coment en prrafos anteriores el problema del agente viajero se resuelve
encontrando un circuito hamiltoniano ptimo. Desafortunadamente no todas las grficas y
consecuentemente, antes de proceder a encontrar un circuito hamiltoniano, se debera de
tratar de establecer si la grfica posee cualquier circuito hamiltoniano.
En ste apartado se describen varias condiciones bajo las cuales una grfica posee un
circuito hamiltoniano.
Una grfica es llamada fuertemente conectada (completa) si para cualquier par de
vrtices x y
y
en la grfica siempre hay una ruta o un camino. Un subconjunto de
vrtices
i
X es llamado subconjunto de vrtices fuertemente conectado si para cualquier
Captulo 1.Planteamiento del Problema del Agente Viajero
par de vrtices
i
x X y
i
X y , hay una ruta de x a
y
en la grfica y
i
X esta contenida
en no otro conjunto con la misma propiedad. La subgrfica generada por el subconjunto e
vrtices fuertemente conectada es llamada una componente fuertemente conectada de la
grfica original.
Por ejemplo la grfica 1.8 est fuertemente conectada ya que hay una ruta de un vrtice
a cualquier otro vrtice. Ahora considere la grfica 1.9, esta grfica no esta fuertemente
conectada porque no hay una ruta del vrtice
a
al vrtice b, aunque hay una cadena del
vrtice d al vrtice b , llamado arco
( , ) d b
. Los vrtices { } , , a b c
forman una subgrfica
fuertemente conectada ya que hay una ruta de cualquier vrtice a cualquier otro vrtice.
Ms aun, no puede ser agregado otro vrtice a este conjunto sin perder esta propiedad.
Por ejemplo, el vrtice d no puede ser agregado al conjunto ya que no hay una ruta del
vrtice d al vrtice
a
. La subgrfica generada por { } , , a b c se muestra en la figura 1.8.
Esta subgrfica es una componente fuertemente conectada de la grfica original. Hay una
ruta del vrtice d al vrtice
e
y una ruta del vrtice
e
al vrtice d . Sin embargo, { } , d e
no es un subconjunto de vrtices fuertemente conectado porque el vrtice f puede ser
agregado a este conjunto sin perder la propiedad de fuertemente conectada. No se
pueden agregar otros vrtices sin perder esta propiedad. Ya que { } , , d e f es un
subconjunto de vrtices fuertemente conectados. La componente fuertemente conectada
generada por { } , , d e f tambin se muestra es la figura 1.9.
Figura 1.9 Grfica y componentes fuertemente conectadas
Si la grfica G no es fuertemente conectada, la grfica G no contiene un circuito
hamiltoniano. Ya que un circuito hamiltoniano contiene una ruta entre cada par de vrtices
en la grfica. As, una condicin necesaria para la existencia de un circuito hamiltoniano
es que la grfica G este fuertemente conectada.
a
c b
d e
f a
c b
d e
f
Captulo 1.Planteamiento del Problema del Agente Viajero
A continuacin se explica en ms detalle la Optimizacin Combinatoria (OC) que es la
rama de la investigacin de operaciones en donde se estudia fuertemente este problema
y que adems nos permite otra forma de estructurar el problema adems de cmo un
grafo.
1.4 Optimizacin Combinatoria

Una caracterstica que tiene el rea de investigacin de operaciones es que intenta
encontrar la mejor solucin, o la solucin ptima, al problema bajo consideracin. En lugar
de contentarse con slo mejorar el estado de las cosas, la meta es identificar el mejor
curso de accin posible. An cuando debe interpretarse con todo cuidado, esta bsqueda
de la optimalidad es un aspecto muy importante dentro de la investigacin de
operaciones. [www5]
1.4.1 Problemas de Optimizacin Combinatoria
Los problemas de optimizacin se dividen de manera natural en dos categoras:
problemas de optimizacin con variables continuas y problemas de optimizacin con
variables discretas. A estos ltimos se les llama problemas de optimizacin combinatoria.
[Gutirrez, 1991].
Un problema combinatorio es aqul que asigna valores numricos discretos a algn
conjunto finito de variables X, de tal forma que satisfaga un conjunto de restricciones y
minimice o maximice alguna funcin objetivo. [Flores, 2002]
Como se trata de encontrar la solucin "mejor" u "ptima" de entre un conjunto de
soluciones alternativas. Para resolver grandes problemas de este tipo podemos elegir
entre dos caminos. El primero consiste en buscar la optimalidad con el riesgo de tener
grandes, posiblemente impracticables, tiempos de computacin; el segundo consiste en
obtener soluciones con rapidez, aun con el riesgo de caer en la sub-optimalidad.
Entre los que siguen la primera opcin destacan los mtodos de enumeracin y las
tcnicas de programacin dinmica, ramificacin y acotamiento, planos de corte, etc. La
segunda opcin da lugar a los algoritmos de aproximacin, tambin llamados con
frecuencia algoritmos heursticos. [Gutirrez, 1991]
Una caracterstica recurrente en los problemas de optimizacin combinatoria es el hecho
de que son muy "fciles" de entender y de enunciar, pero generalmente son "difciles"
de resolver. Podra pensarse que la solucin de un problema de optimizacin
combinatoria se restringe nicamente a buscar de manera exhaustiva el valor mximo o
mnimo en un conjunto finito de posibilidades y que usando una computadora veloz, el
problema carecera de inters matemtico, sin pensar por un momento, en el tamao de
este conjunto.
As, por ejemplo, en el problema del agente viajero, en el cual se tiene que salir de una
ciudad y regresar a la misma despus de haber visitado (con costo mnimo de viaje) todas
las dems ciudades, si se tienen n ciudades en total que recorrer entonces existen (n-1)!
soluciones factibles, y si una computadora que pudiera ser programada para examinar
soluciones a razn de un billn de soluciones por segundo; la computadora terminara su
tarea, para n = 25 ciudades (que es un problema pequeo para muchos casos prcticos)
en alrededor de 19,674 aos.
Captulo 1.Planteamiento del Problema del Agente Viajero
No tiene sentido resolver de esa forma un problema si al interesado no le alcanza su vida
para ver la respuesta!. [Gutirrez, 1991]
1.4.1.1 Descripcin del Problema Combinatorio
El enfoque clsico para estudiar un problema de optimizacin es proceder a identificar
aquellas propiedades, cualitativas, cuantitativas, que conduzcan a uno o varios
procedimientos eficientes para implementarlos en una computadora y obtener su solucin.
Resulta importante aqu evaluar el tiempo que tardar un procedimiento para encontrar la
solucin ya que no es lo mismo esperar unos cuantos segundos que tener que esperar
horas, das o quiz ms tiempo para saber la solucin del problema. Otro aspecto
importante es conocer el comportamiento del algoritmo cuando el tamao del problema
crece, pues se puede tener un procedimiento que resulte adecuado para resolver
problemas pequeos o medianos, pero resultar impracticables cuando el tamao del
problema es grande.
Una instancia de un problema de optimizacin combinatorio puede formalizarse como una
pareja ( , ) S f , donde S denota el conjunto finito de todas las soluciones posibles y f la
funcin de costo, mapeo definido por
: f S R
En el caso de minimizacin, el problema es encontrar
opt
i S
que satisfaga
( ) ( )
opt
f i f i i S
en el caso de maximizacin, la
opt
i
que satisfaga
( ) ( )
opt
f i f i i S
A la solucin
opt
i
se le llama una solucin globalmente ptima y
( )
opt opt
fi f i
denota el
costo ptimo, mientras que
opt
S
denota el conjunto de soluciones ptimas. [Gutirrez,
1991]
Un problema de Optimizacin Combinatoria es un conjunto I de instancias de un
problema de optimizacin combinatoria.
En las definiciones anteriores se ha distinguido entre un problema y una instancia del
problema. De manera informal, una instancia esta dada, por los datos de entrada y la
informacin suficiente para obtener una solucin mientras que un problema es una
coleccin de instancias del mismo tipo.
Captulo 1.Planteamiento del Problema del Agente Viajero
1.4.1.2 Definicin del Problema del Agente Viajero como un problema combinatorio
El problema del agente viajero se describe as: Un agente viajero tiene que recorrer un
nmero n de ciudades, su objetivo es minimizar distancias, tiempo, dinero, etc; sujeto a
que el agente viajero debe visitar todas y cada una de las ciudades una sola vez y con la
condicin de regresar a la ciudad de la cual parti.
Considere
n
ciudades y una matriz
( )
pq
d
de orden
n n
, cuyos elementos denotan la
distancia entre cada par p, q de ciudades.
Se define un recorrido como una trayectoria cerrada que visita cada ciudad exactamente
una vez. El problema es encontrar el recorrido de longitud mnima.
En este problema, una solucin est dada por una permutacin cclica
( (1), (2),..., ( )) n , donde ( ) k denota la ciudad a visitar despus de la ciudad k ,
con ( ) , 1, 2,..., 1
l
k k l n y

n
k k
. Aqu ( )
l
k se entiende por la aplicacin de l
veces la permutacin

. Cada solucin corresponde a un recorrido. El espacio de


soluciones est dado por
{ } S todas las permutaciones cclicas de las n ciudades
y la funcin de costo se define por
, ( )
1
( )
n
i i
i
f d

es decir, ( ) f da la longitud del recorrido correspondiente a

. Adems, se tiene que


( 1)! S n .
Por lo cual se define as:
Instancia: Sea un conjunto C de m ciudades, la distancia
+
d(ci, cj) Z para cada par de
ciudades
,
i j
c c C
y un nmero entero positivo B .
Pregunta: Hay una ruta de C que tenga una longitud B o menor, por ejemplo una
permutacin
(1) (2) ( ) ( 1) ( )
<c , c ,..., c , c ,..., c
k k m +
> de C tal que :
( ) ( )
( )
( ) ( )
( )
i m
m-1
1 1
i=1
d c , c d c , c ?
+
_
+

,
i
B
Podemos observar que el planteamiento y solucin del problema del agente viajero se
restringe a un problema de optimizacin combinatoria y a un problema de grafos cuya
solucin es una permutacin y un circuito hamiltoniano, respectivamente.
Captulo 1.Planteamiento del Problema del Agente Viajero
Existen otras reas de estudio que plantean al problema del agente viajero como un
problema de decisin y como un problema de optimizacin y en conjunto se le llama un
problema NP-Completo. En la seccin de Complejidad computacional se aborda en ms
detalle estos enfoques.
Pero que hay de la historia de este problema, dnde se origina?, Quines son quienes
ms lo han estudiado?, pues bien este tipo de preguntas se contestan en la siguiente
seccin.
1.5 Historia del problema del Agente Viajero
Si nos remitimos al PAV como un grafo (teora de grficas), ste tiene su inicio alrededor
del ao 1850, ya que este tipo de problemas (grafos) fueron tratados por dos
matemticos britnicos William Rowan Hamilton, y Thomas Penyngton Kirkman . Y es
justamente a Hamilton a quien se le debe el trmino de circuitos hamiltonianos que
justamente es la solucin del problema del agente viajero desde un punto de vista grfico,
originado en un juego inventado por este matemtico en 1859.
Trataba sobre un viaje alrededor del mundo, el cual se representaba en forma simplificada
por un dodecaedro (poliedro de 12 caras pentagonales con 20 vrtices), y se requiere que
se pase una sola vez por cada vrtice o ciudad, usando solamente las caras del
dodecaedro y se regrese al punto inicial. [Flores, 2000]
Figura 1.10 Juego propuesto por Sir William Rowan Hamilton
Sin embargo en 1832 se imprimi un libro en Alemania titulado Der
handlungsreisende,wie er sein soll und was er zu thun hat,um Aufrtrge zu erhalten und
eines glcklichen Erfols in seinen Geschften gewiss zu sein. Von einem alten
Commisvoyageur (The traveling salesman problem, how he should do to get Commissions
and to be successful in his business. By a veteran traveling salesman . Que debe hacer
el agente de viajes para obtener comisiones y ser exitoso en su negocio, escrito por un
agente de ventas veterano. Aunque el libro trata de otros problemas, en el ltimo captulo
hace nfasis en la esencia del problema de agente viajero, encontrar un camino corto
dentro de varias opciones y no visitar las ciudades ms de una vez. [Lawler, 1985]
Y no fue hasta 1920 cuando el matemtico y economista Karl Menger lo dejara entrever y
lo publicara entre sus colegas en Viena, en el cual propona el problema del mensajero.
En 1930, el problema reapareci en los crculos matemticos de Princeton. Y la primera
vez que se mencion el trmino de traveling salesman problem en los crculos
matemticos fue en 1931-1932. En 1940, ya haba sido estudiado por los estadistas
Mahalanobis (1940), Jessen (1942), Gosh (1948), Marks (1948) en conexin con una
Captulo 1.Planteamiento del Problema del Agente Viajero
aplicacin en la agricultura y el matemtico Merill Flood lo populariz entre sus colegas
en la corporacin RAND. Eventualmente el PAV iba ganando notoriedad como un
problema prototipo de problemas duros en optimizacin combinatoria: examinar los
posibles caminos uno por uno, era una cuestin que no estaba planteada para una
instancia con gran nmero de ciudades para los aos 40s.
Este problema se abri camino cuando George Dantzig, Ray Fulkerson, y Selmer
Johnson (1954) publicaron una descripcin de un mtodo de solucin del PAV titulado
Solutions of a large scale traveling salesman problem , Soluciones de gran escala para
el problema del agente viajero ya que ilustraban el poder de ese mtodo para resolver
una instancia de 49 ciudades, un impresionante nmero de ciudades para aquellos
tiempos.
Seleccionaron cada uno de los 48 estados de Estados Unidos (Alaska y Hawai formaron
parte de Estados Unidos hasta el ao de 1959) y adicionando el estado de Washington,
en este problema se definan los costos de viajar de una ciudad a otra y estaban en
funcin de la distancia de camino entre las ciudades. Ellos resolvieron el problema con 42
ciudades quitando a Baltimore, Wilmington, Philadelphia, Newark, New York, Hartford, y
Providence. Dando como resultado un viaje ptimo a travs de las 42 ciudades, usando la
unin de la ciudad de Washington a Boston; ya que la ruta ms corta entre esas dos
ciudades pasa a travs de las siete ciudades que se quitaron. Esta solucin de 42
ciudades nos da una solucin para el problema con 49 ciudades.
En la siguiente figura 1.11 se tiene la solucin de manera grfica.
Figura 1.11 Solucin del PAV de 49 ciudades en Estados Unidos
Procter and Gamble realiz un concurso en 1962. El concurso requera una solucin para
el PAV con 33 ciudades.
Groetchel en 1977 quien encontr una ruta ptima o tour ptimo de 120 ciudades en
Alemania. En la figura 1.4 se muestra la solucin de manera grfica.
En 1987 Padberg y Rinaldi, encontraron una ruta ptima de 532 ciudades en Estados
Unidos.
Padberg y Rinaldi en 1987 encontraron una ruta ptima a travs de una distribucin de
2,392 ciudades que se obtuvo de la Incorporacin Tektronics.
Groetschel y Holland en1987 encontraron una ruta ptima de 666 lugares interesantes en
todo el mundo. En 1990, la instancia del PAV de mayor tamao que haba sido resuelto
era una de 318 ciudades. Hoy en da existen mtodos basados en tcnicas de
Captulo 1.Planteamiento del Problema del Agente Viajero
ramificacin y corte/acotamiento, las cuales explotan muy efectivamente la estructura
matemtica del problema, que han sido muy exitosas.
Applegate, Bixby, Chvtal, y Cook en el ao de 1994 encontraron una ruta ptima para el
PAV con 7,397- ciudades que surgieron de una aplicacin de los laboratorios de AT&T.
Applegate, Bixby, Chvtal, y Cook (1998) encontaron un tour ptimo de 13,509 ciudades
en E.U. En 1998, se report la instancia ms grande que se haba resuelto de 13,509
ciudades, resuelto por Applegate, Bixby, Chvtal, y Cook lo cual evidencia el tremendo
progreso logrado durante la dcada de los noventa.
Figura 1.12 Solucin ptima con 13,509 ciudades de Estados Unidos
Ya para el ao 2001 se ha resuelto ya una instancia de 15,112 ciudades localizadas en
Alemania. En la figura 1.5 se tiene la solucin grfica de este problema que se ha resuelto
hasta el momento. La fecha en el que se resuelve este problema es el 21 de Abril de
2001. Y lo resuelven David Applegate, R. ,Bixby,Chavtal y Cook. El nombre con el que
se conoce a nivel mundial este problema es d15112. Los algoritmos usados para resolver
este problema fueron planos de corte y ramificacin y acotamiento. Se utilizaron 110
computadoras Instaladas en paralelo en las Universidades de Rice y Princeton. El tiempo
de solucin computacionalmente hablando fue de 22.6 aos. La solucin fue llevada a
cabo en una Compaq EV6 Alpha con un procesador de 500 MHz. El viaje ptimo es de:
66,000 kilmetros a travs de Alemania.
Figura 1.13 Solucin ptima, grfica del problema con 15,112 ciudades.
Captulo 1.Planteamiento del Problema del Agente Viajero
Actualmente se encuentran solucionando una instancia de 1, 904,711 ciudades ms
populares del mundo. Y se tiene pensado resolverse en el ao 2025.
La librera TSPLIB (http:// www.math.princeton.edu/tsp/usa) de dominio pblico contiene
un conjunto de ejemplos del TSP con la mejor solucin obtenida hasta el momento, y en
algunos casos, con la solucin ptima.
En la tabla 1.1 se tiene un resumen de resolucin del Problema del Agente Viajero, a
travs del tiempo, con respecto el tamao de la instancia (nmero de ciudades).
En la columna de la derecha se indica el nombre del Problema del Agente Viajero como
se conoce a nivel mundial.
Tabla 1.1 Resumen de resolucin del PAV segn tamao de instancia
Ao Grupo de Investigadores
Tamao de la
instancia
Nombre del PAV (TSPLIB)
1954
G. Dantzig, R. Fulkerson, y S.
Johnson
49 ciudades dantzig42
1971 M. Held y R.M. Karp 64 ciudades
dantzig42 + 22 ciudades
aleatorias
1975 P.M. Camerini, L. Fratta, y F. Maffioli 100 ciudades
hk48 + dos instancias
pequeas
1977 M. Grtschel 120 ciudades gr120
1980 H. Crowder y M.W. Padberg 318 ciudades lin318
1987 M. Padberg y G. Rinaldi 532 ciudades att532
1987 M. Grtschel y O. Holland 666 ciudades gr666
1987 M. Padberg y G. Rinaldi 2,392 ciudades pr2392
1994
D. Applegate, R. Bixby, V. Chvtal, y
W. Cook
7,397 ciudades pla7397
1998
D. Applegate, R. Bixby, V. Chvtal,
and W. Cook
13,509 ciudades usa13509
2001
D. Applegate, R. Bixby, V. Chvtal, y
W. Cook
15,112 ciudades d15112
En la figura 1.14 se muestra de manera grfica la relacin entre el ao y el tamao de la
instancia que se han ido resolviendo.
Captulo 1.Planteamiento del Problema del Agente Viajero
Figura 1.14 Relacin grfica entre el tamao de instancia resuelto con respecto al tiempo
1.6 Complejidad computacional
Prcticamente todas las reas de las ciencias computacionales tratan, en mayor o menor
grado con complejidad computacional. El tema es muy comn entre expertos del rea,
sobre todo entre aqullos relacionados con NP-completos y entre quienes buscan
algoritmos eficientes para diversos problemas de aplicacin. La importancia de la
complejidad computacional estriba en que se ha convertido en una forma de clasificar
buenos y malos algoritmos y de clasificar problemas computacionales como fciles y
difciles.
El problema del agente viajero fue uno de los primeros donde se aplic la teora de la NP-
Completez a principios de los 70s. A partir de entonces se ha usado como el ejemplo
prototipo de los problemas combinatorios NP-difciles. Adems, el PAV ha dado pie al
desarrollo de nuevos algoritmos. Por ejemplo, el mtodo de relajacin lagrangeana se
desarroll a partir del trabajo de Held y Karp para resolver el problema del agente viajero.
Una vez que se sabe que el problema es NP-difcil, y por lo tanto es improbable que
exista un algoritmo polinomial que encuentre la solucin ptima, se buscan algoritmos
aproximados eficientes. Es decir, algoritmos que encuentran una solucin cercana a la
ptima en un tiempo corto. Hasta la fecha, los mejores algoritmos de este tipo son
aqullos que se basan en una tcnica conocida como optimizacin local, en la que una
solucin se mejora continuamente al realizar cambios locales.
Se puede concluir que el PAV es un problema NP-Completo por lo que conlleva que es un
problema difcil de resolver. En captulos posteriores se hablar con ms detalle los
algoritmos de solucin que existen partiendo de las premisas anteriores.
Captulo 2. Tcnicas exactas para resolver el problema del agente viajero
En este captulo describir algunas de las tcnicas exactas que se han desarrollado para
resolver problemas de optimizacin combinatoria. Y en especial problemas de
programacin lineal entera binaria, la cual es la forma en que se plantea el problema del
agente viajero. Es decir, es necesario que el problema que se tenga que resolver cuente
con la estructura mencionada. Describo el mtodo de ramificacin y acotamiento y
algunas de sus variantes y tambin describo el mtodo de programacin dinmica ambos
acompaados de algunos ejemplos.
2.1 Introduccin
Como se podr ver el problema del agente viajero es uno de los problemas de
optimizacin combinatoria para los cuales no se conoce un algoritmo eficiente de tiempo
Captulo 1.Planteamiento del Problema del Agente Viajero
polinomial. Todos los algoritmos conocidos requieren de un tiempo de computadora
exponencial en el nmero n de ciudades. Es decir, formamos todas las posibles
combinaciones de tours, en este caso ( 1)! n , donde ! ( -1)( - 2)...(2)(1) n n n n y
calculamos la distancia total para cada tour, eligiendo aquel que tenga la mnima
distancia total. En este caso el problema ha quedado totalmente resuelto porque estamos
exhibiendo todos los tours posibles. El tiempo de ejecucin de este algoritmo es grosso
modo ( ) ( )! f n n . Y esta funcin programada en una computadora nos da un costo
exponencial.
Para salvar esta dificultad computacional hay dos formas de resolverla:
1. Usando tcnicas refinadas tales como ramificacin y acotamiento o programacin
dinmica, que reducen drsticamente el efecto que se da en enumeracin exhaustiva.
Tales tcnicas refinadas enumerativas son buenas para encontrar una solucin
ptima, pero en el peor de los casos si se tiene un problema muy grande pueden
requerir un nmero exponencial de clculos que se hacen prohibitivamente grandes.
2. Empleando mtodos de solucin aproximados pero rpidos (en tiempo polinomial),
que no producen una solucin ptima, pero si soluciones subptimas que estn
aceptablemente cercanas a la ptima.
Ambos mtodos son tiles, sin embargo para este captulo se discuten las tcnicas que se
sealan en el punto nmero uno.
2.2 Mtodo de Ramificacin y acotamiento (Branch and Bound)
A los procedimientos de enumeracin que examinan un pequeo nmero de soluciones
factibles se les llama mtodos de enumeracin parcial. Los algoritmos de ramificacin y
acotamiento son procedimientos de enumeracin parcial, ya que eliminan algunas
soluciones no prometedoras antes de ser avaluadas. [Aguirre, 1996]
La idea bsica en la que se apoya este mtodo es divide y vencers. Es demasiado
complicado resolver directamente el problema original, por esta razn se divide en
subproblemas cada vez ms pequeos hasta que se puedan resolver. La divisin
(ramificacin) se hace mediante una particin del conjunto completo de soluciones
factibles en subconjuntos ms pequeos. Se busca el ptimo al acotar la mejor solucin
en cada subconjunto y despus se descartan aquellos subconjuntos cuya cota indique
que contiene la solucin ptima para el problema original.
Los pasos de ramificacin y acotamiento permiten una gran flexibilidad al disear un
algoritmo especfico para un determinado problema y tienen un efecto importante sobre la
eficiencia computacional del algoritmo. Es decir, existen varias estrategias de ramificacin
y acotamiento dependiendo del problema en consideracin.
El algoritmo de ramificacin y acotamiento se realizan las siguientes operaciones:
a) Acotamiento
b) Ramificacin
c) Bsqueda del ptimo
Captulo 1.Planteamiento del Problema del Agente Viajero
2.2.1 Acotamiento
Se desea resolver el siguiente problema de programacin entera mixta (PEM):
min
. .



0 1,2,...,
1,2,..., ( )
j
j
Z cx
s a
Ax b
x
x
j n
Z j I I n



El valor mnimo se obtiene al resolver el problema original PEM. Pero ste puede ser muy
difcil de resolver. Por esta razn se acota inferiormente el valor ptimo. Las cotas se usan
para seleccionar subconjuntos prometedores en la bsqueda del ptimo. Tambin se
usan para descartar algunos subconjuntos que no pueden contener la solucin ptima del
problema.
Una buena estrategia de acotamiento es aqulla que:
1. Sea fcil de implementar y
2. Proporciones una buena cota inferior, es decir, que la cota est muy cerca del valor
ptimo.
Generalmente estos son objetivos contrapuestos y los mritos de cada regla dependen de
preferencias.
Una estrategia de acotamiento muy usada consiste en relajar aqullas restricciones que
dificulten la solucin del problema, es decir, calcular el valor ptimo sujeto a las
restricciones restantes. El problema PEM se puede relajar al eliminar las restricciones de
integralidad sobre las variables, dando como resultado el siguiente problema de
programacin lineal (PL):
Una buena estrategia de acotamiento es aqulla que:
1. Sea fcil de implementar y
2. Proporciones una buena cota inferior, es decir, que la cota est muy cerca del valor
ptimo.
Generalmente estos son objetivos contrapuestos y los mritos de cada regla dependen de
preferencias.
Una estrategia de acotamiento muy usada consiste en relajar aqullas restricciones que
dificulten la solucin del problema, es decir, calcular el valor ptimo sujeto a las
restricciones restantes. El problema PEM se puede relajar al eliminar las restricciones de
integralidad sobre las variables, dando como resultado el siguiente problema de
programacin lineal (PL):
Captulo 1.Planteamiento del Problema del Agente Viajero
min
. .

0 1,2,...,
j
Z cx
s a
Ax b
x j n


El valor ptimo del problema relajado PL constituye una cota inferior para el valor ptimo
del problema original, puesto que la regin factible de este problema est contenida en la
regin factible del problema relajado. Es decir, siempre se tiene la desigualdad:
Valor ptimo del problema PL valor ptimo del problema PEM
Sea
*
x
la solucin ptima del problema relajado PL. La desigualdad se da cuando
*
1,2,...,
j
x Z j I
. En este caso
*
x es factible para el problema PEM y por lo tanto
este problema est resuelto. Si no se da la igualdad entonces
*
j
x Z para alguna
1,2,..., j I
. [Aguirre, 1996]
2.2.2 Ramificacin
Se aplica la estrategia de ramificacin cuando las variables con restricciones enteras no
toman un valor entero en la solucin ptima del problema relajado PL. Es decir, cuando
*
j
x Z
para alguna
1,2,..., j I
.
La operacin de ramificacin consiste en particionar el conjunto de soluciones factibles del
problema relajado PEM con el propsito de localizar fcilmente el ptimo. De esta
manera se generan dos ms subproblemas.
Sea
{ ( ) }
0 1, 2,..., S Ax b x I I n
j j

el conjunto de soluciones factibles del
problema PEM. Sea una particin de S en subconjuntos
1 2
, ,..., .
k
S S S Cada subconjunto
i
S
es el conjunto de soluciones factibles que se obtiene agregando restricciones
adicionales al problema PEM.
Las nicas variables que se toman en cuenta para ramificarlas son las variables con
restricciones enteras que tienen un valor no entero en la solucin ptima del problema PL.
La variable que se elige para ramificar se conoce como variable de ramificacin.
Cuando se usan algoritmos de ramificacin y acotamiento el principal objetivo es generar
el menor nmero posible de subproblemas. Entonces, una buena regla de ramificacin es
aqulla que:
1. Genera pocos subproblemas y
2. Genera subproblemas con muchas restricciones, es decir, excluye muchas
soluciones de cada subproblema.
En este caso los criterios tambin entran en conflicto y uno tiene que ponderar las
ventajas de cada uno.
Se describir la estrategia de ramificacin para problemas binarios. Considere el siguiente
problema binario, PEB:
Captulo 1.Planteamiento del Problema del Agente Viajero
min
. .

0,1 1,2,...,
j
Z cx
s a
Ax b
x j n


A este problema se le conoce como subproblema 1. El problema relajado, PL, es el
siguiente:


min
. .

0 1, 2,...,
j
Z cx
s a
Ax b
x j n
Supngase que la solucin ptima de este problema no es factible para el problema
original PEB, es decir, { }
*
0,1
j
x
para alguna
1, 2,..., j n
. Entonces, se ramifica el
subproblema 1 al agregar las siguientes restricciones
0
j
x
y
=1
j
x
. De esta manera se
generan dos subproblemas:
2 1 ( 0)
3 1 ( 1)
j
j
subproblema subproblema x
subproblema subproblema x
+
+
Por otro lado, si se tiene un problema PEM, la variable de ramificacin puede tomar un
gran nmero de valores enteros positivos. Por lo tanto es ineficiente crear y analizar todos
los subproblemas que se generan al fijar la variable de ramificacin en cada uno de estos
valores. Por esta razn se especifican dos intervalos de valores para la variable de
ramificacin. Por ejemplo, sea j
x
para alguna
1, 2,..., j I
la variable de ramificacin; y sea
*
j
x
su valor (no entero) en la solucin ptima del problema relajado.
Entonces, en cualquier punto de la regin factible del problema PEM se tiene que:
* *
1 x x o x x
j j j j
+
Ya que el intervalo
* *
, 1 x x
j j
_ 1 1
+

1 1
] ] ,
no hay ningn punto entero. De esta forma se
ramifica sobre la variable
x
j
y se generan dos subproblemas:
*
*
2 1 ( )
3 1 ( 1)
j j
j j
subproblema subproblema x x
subproblema subproblema x x
1 +
]
1 + +
]
Un subproblema es insondable si no es necesario ramificarlo. Esto puede suceder por las
siguientes razones:
Captulo 1.Planteamiento del Problema del Agente Viajero
1. El subproblema no es factible. En este caso se elimina de consideracin puesto que
no contiene la solucin ptima del problema original.
2. Al acotar un subproblema se obtiene una solucin factible para el problema original, la
cual es la solucin ptima de este subproblema. En este caso se tiene una solucin
candidata que se compara con otras que se obtengan posteriormente para determinar
cul es la solucin ptima.
Supngase que el valor ptimo de esta solucin es
1
Z . Si
*
Z es el valor ptimo del
problema original se tiene la siguiente propiedad:
*
1
Z Z
En cada iteracin se debe actualizar esta cota. La solucin del subproblema que contenga
la menor cota superior es la solucin candidata hasta el momento. Al actualizar la cota
superior se eliminan todos aquellos subproblemas cuya cota inferior sea mayor que la
actual cota superior del problema PEM.
3. La cota inferior del subproblema es mayor que la actual cota superior para el valortimo
del problema original PEM. En este caso el nodo no es prometedor y se elimina de
consideracin.
2.2.3. Bsqueda de la solucin ptima
Los problemas generados se pueden representar mediante un rbol, donde los nodos del
rbol son los subproblemas. Por ejemplo
Figura 2.15
A los nodos que no contienen sucesores se les llama nodos terminales, los cuales tienen
asociados subproblemas insondables. En el rbol de la figura 2.4, hay dos nodos
terminales: los subproblemas 2 y 3. Las restricciones asociadas con los arcos que van del
subproblema 1 a ese nodo. [Aguirre, 1996]
La operacin de bsqueda indica la secuencia en la que los nodos generados se
examinan. Esto es importante porque los rboles generados con las diferentes
alternativas pueden variar mucho en su tamao y por lo tanto en tiempo requerido para
encontrar el ptimo.
Existen varios criterios de bsqueda, como la estrategia de prioridad y la regla de la cota
ms reciente. En la estrategia de prioridad se acotan todos los subproblemas que se
generan al ramificar un nodo. Se examina el nodo (es decir, se ramifica el nodo) con la
menor cota inferior de todos los subproblemas de la lista en una etapa determinada.
Donde la lista es una coleccin de nodos terminales.
Subproblema 1
Subproblema 2 Subproblema 3
*
x x
j j

*
1 x x
j j
+
Captulo 1.Planteamiento del Problema del Agente Viajero
Supngase que se tienen los subproblemas dos y tres en la lista y sus cotas inferiores y
sus cotas inferiores son
2
L y
3
L respectivamente, donde
2 3
L L f es probable que el valor
ptimo del subproblema dos sea menor que el de
3
L . Es decir, el subrpoblema con la
menor cota es el ms prometedor en cuanto a contener la solucin ptima del problema
PEM. Si la solucin obtenida es factible para el problema original sta es la solucin
ptima del problema PEM y el algoritmo termina aqu. De lo contrario se ramifica el
subproblema dos, el cual tiene asociada la menor cota inferior.
Con la regla de la cota ms reciente se acota un subproblema solamente si se eligi de la
lista. Los subproblemas no insondables de la lista se meten a una pila conforme se van
generando con la estrategia de ramificacin. Cuando se tenga que seleccionar un
subproblema para examinarlo, (es decir, para acotarlo), se elige el ltimo subproblema
incluido en la pila. Por esta razn, a este criterio se le conoce como regla de la cota ms
reciente. Al acotar un nodo se resuelve el subproblema correspondiente con el mtodo
simplex. La ventaja de esta regla es que en lugar de iniciar el mtodo simplex desde el
principio, cada vez que se acota un nodo, se puede resolver el subproblema
correspondiente por reoptimizacin utilizando anlisis de sensibilidad.
En ambos criterios de bsqueda, el algoritmo termina cuando se tiene que elegir un
subproblema de la lista (o de la pila) y sta se encuentra vaca. Si en este momento hay
una solucin candidata, el problema original PEM es factible, de lo contrario se dice que
no es factible.
2.4 Algoritmo de ramificacin y acotamiento para el agente viajero
Un mtodo de ramificacin y acotamiento para un problema en particular queda definido
al especificar sus operaciones de Ramificacin y acotamiento (R-A). En el caso del
problema del viajero, existen tres mtodos de ramificacin y acotamiento. La diferencia
principal entre estos algoritmos es la estrategia de acotamiento que usan.
1. Construccin del circuito segn la matriz reducida.
2. Eliminacin de subcircuitos a partir de la solucin de problemas de asignacin.
3. Construir la trayectoria basndose en el rbol de expansin mnima.
A continuacin se estudiarn tres algoritmos exactos que usan el mtodo de ramificacin
y acotamiento para obtener la solucin ptima. El primer mtodo que se describir se
basa en la construccin del circuito hamiltoniano segn la matriz reducida, el segundo se
basa en la eliminacin de subcircuitos a partir de la solucin de problemas de asignacin
y el tercer mtodo emplea relajacin Lagrangeana, que se basa en construir la trayectoria
basndose en el rbol de expansin mnima. Existen muchos mas algoritmos que utilizan
la tcnica de ramificacin y acotamiento, pero para fines de este trabajo nicamente se
considerar el algoritmo little-murty.
2.4.1 Algoritmo little-murty
Propsito: Determinar el circuito hamiltoniano de costo mnimo dada una matriz de
costos. El mtodo utiliza la propiedad de la matriz de costos reducida para probar la
inclusin o exclusin de un arco en el circuito.
Descripcin
Captulo 1.Planteamiento del Problema del Agente Viajero
Paso 1: Dada la matriz de costos D, se efectan sustracciones en los renglones y las
columnas de la matriz D, sin permitir que aparezcan valores negativos. Con esto
obtenemos una cota inferior del problema del viajero al sumar los elementos que se
restaron a los renglones y a las columnas. La matriz D' es la matriz reducida de D.
Paso 2: Sea S un nodo del rbol y ( ) ev S la cota inferior de este nodo S, con cada arco
( , ) i j
con
' 0
ij
d
, debemos usar algn arco comenzando en i y penalizarlo por
i
.
Tambin debemos usar algn arco en j, y podramos penalizarlo por j

con lo cual
ij i j
+
es la penalizacin de no escoger (i,j). Se selecciona el arco que tiene el
mximo de los ij

Paso 3 :Si el arco (i, j) no se selecciona,


( )
ij
ev S +
es una cota inferior. Si el arco (i, j) se
seleccion, entonces la matriz se reduce omitiendo el rengln i y la columna j. Buscar la
condicin adicional sobre ' D para excluir subcircuitos posibles.
Paso 4: Seleccione el vrtice que tiene menor costo y vaya al paso 1.
En el ejemplo siguiente se ilustra este algoritmo. [Flores, 2002]
Ejemplo
Sea la matriz de tiempos D que se presenta en la tabla 2.2, entonces teniendo el tiempo
de duracin de cada uno de los viajes entre las distintas paradas, se desea encontrar el
circuito hamiltoniano de menor duracin.
Tabla 2.2
Paso 1
Si T es la duracin de un recorrido hamiltoniano asociado a la matriz de tiempos de la
tabla 2.1 entonces la duracin de ese mismo circuito con la matriz de tiempos obtenida de
restar un escalar
i
h al rengln i est dado por -
i
T h porque cada circuito contiene uno y
solo un elemento de este rengln. Lo mismo sucede si restamos un escalar
j
h de una
columna ( , , , , , ). j j A B C D E F Una cota inferior del circuito hamiltoniano ptimo es
sencilla de obtener si restamos de cada rengln de la matriz de tiempos D, el mnimo
elemento correspondiente. O bien
1
min 0
j
j ij
h d
A B C D E F
A

27 43 16 30 26
B 7

16 1 30 25
C 20 13

35 5 0
D 21 16 25

18 18
E 12 46 27 28

5
F 23 5 5 9 5

Captulo 1.Planteamiento del Problema del Agente Viajero
Tabla 2.3
Y entonces, en la
matriz ' D asi reducida,
restamos de cada
columna j la constante
1
min 0
j
j ij
h d
La nueva matriz
1
D
tiene elementos no-
negativos y contiene al menos un elemento cero en cada rengln y cada columna. Como
se muestra en la tabla 2.4
Tabla 2.4
Tomamos:
i j
i j
h h h +

La duracin
( ) z t
de un circuito hamiltoniano t de la matriz D es entonces igual a
( ) '( ) z t h z t +
, donde
'( ) z t
es la duracin del circuito t de la matrz ' D . Ya que
'( ) z t

(porque
1
0
ij
d
), entonces tenemos
( ) z t h
donde h es una evaluacin por cota inferior
del conjunto de circuitos hamiltonianos y se denota
( ) ev
.
De la matriz dada
1
D obtenemos:
1 2 3 4 5 6
1 2 3 4 5 6
16 , 1, 0, 16, 5, 5
5, 0
h h h h h h
h h h h h h


A B C D E F
A

11 27 0 14 10
B 6

15 0 29 24
C 20 13

35 5 0
D 5 0 9

2 2
E 7 41 22 23

0
F 18 0 0 4 0

A B C D E F
A

11 27 0 14 10
B 6

15 0 29 24
C 20 13

35 5 0
D 5 0 9

2 2
E 7 41 22 23

0
F 18 0 0 4 0

Captulo 1.Planteamiento del Problema del Agente Viajero
Un aspecto importante es que cada circuito hamiltoniano asociado a la tabla 2.3 tiene una
duracin no negativa y que difiere en tiempo del circuito original en 48 unidades de
tiempo. De donde una cota inferior de la duracin del circuito mnimo es 48 o bien:
( )
j
i
ev h h +

Paso 2
Considerando todas las entradas de la matriz de la tabla 2.4 iguales a cero, calculamos
los retardos o penalizaciones por no usar alguno de esos arcos que prometen un circuito
de menor costo, ya que fueron los que al restar los mnimos en renglones y columnas
quedaron igual a cero.
Calculamos el retardo ij

correspondiente a
' 0
ij
d
10 0 10
1 0 1
5 0 5
0 1 1
0 0 0
2 0 2
0 0 0
0 9 9

AD A D
BD B D
CF C F
DA D A
DB D B
EF E F
FB F B
FC F C
FE

+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
0 2 2 F E + +
En general un arco (i,j) con
' 0
ij
d
no se escoge. Ya que debemos dejar el punto i,
debemos usar algn arco comenzando en i y penalizarlo por i . Tambin debemos usar
algn arco en j, y podramos penalizarlo por j, con lo cual ij
i j +
es la penalizacin
de no escoger (i, j). Dicha penalizacin ij

se puede interpretar en este caso como un


retardo.
Si ( ) ev S es la evaluacin obtenida reduciendo la matriz por el nodo S, entonces
( )
ij
ev S +
es una primera evaluacin por cota inferior del nodo ij, obtenido de S por no
escoger el arco (i, j).
Paso 3
Separamos la pareja (i, j) que maximiza el retardo ij

para garantizar una mayor cota


inferior de la duracin de los circuitos hamiltonianos 10 AD .
Entonces el nodo AD tiene una evaluacin por cota inferior igual a 48+10=58
Una manera de proceder a la determinacin del circuito hamiltoniano de mnima duracin
consiste en particionar el conjunto de circuitos hamiltonianos como sigue:
a) Circuitos hamiltonianos que usan el arco AD
b) Circuitos hamiltonianos que no usan el arco AD
Captulo 1.Planteamiento del Problema del Agente Viajero
En el primer caso la matriz de tiempos entre localidades se reduce a una nueva matriz en
donde se elimina el rengln A y la columna D. Asimismo, el tiempo entre la localidad D a
la A se hace igual a infinito o a un nmero muy grande para evitar usar el arco DA; pues
sabemos que no forma parte del circuito hamiltoniano mnimo. Si no hacemos este tiempo
infinito, existe la posibilidad de la aparicin de subcircuitos. La tabla 2.5 muestra la matriz
reducida donde se han eliminado el rengln A y la columna D, el arco DA se hace igual a
infinito.
A B C E F
B 1 15 29 24
C 15 13 5 0
D 0 9 2 2
E 2 41 22 0
F 13 0 0 0
Tabla 2.5
Una cota inferior de la duracin de los circuitos hamiltonianos asociados con esta tabla es
sencilla de obtener si restamos una unidad a cada elemento del rengln uno como se
muestra en la tabla 2.6
Tabla 2.6
Paso 4
Cabe hacer notar que como resultado de las manipulaciones anteriores podemos decir
que los circuitos hamiltonianos asociados a la tabla 2.2, que usen el arco AD tienen una
duracin no menor de 49 unidades de tiempo, 48 acumuladas hasta la obtencin de la
tabla 2.4 y una unidad de tiempo al pasar de la tabla 2.5 a la tabla 2.6, por lo que 49
unidades representan una cota inferior de la duracin de los circuitos hamiltonianos que
usan el arco AD.
Paso 2
El siguiente paso consiste en calcular los retardos correspondientes a la tabla 2.5
A B C E F
B 0

14 28 23
C 15 13

5 0
D

0 9 2 2
E 2 41 22

0
F 13 0 0 0

Captulo 1.Planteamiento del Problema del Agente Viajero
BA = B + A = 14 + 2 = 16
CF = C + F = 5 + 0 = 5
DB = D + B = 2 + 0 = 2
EF = E + F = 2 + 0 = 2
FB = F + B = 0 + 0 = 0
FC = F + C = 0 + 9 = 9
FE = F + E = 0 + 2 = 2

Se escoge el arco BA para efectuar la ramificacin como sigue:


a) Circuitos hamiltonianos que usan el arco BA
b) Circuitos hamiltonianos que no usan el arco BA
Paso 3
En el primer caso partimos de la tabla 2.5 eliminando el rengln B y la columna A y
haciendo el tiempo de A a B igual a infinito para evitar circuitos innecesarios. En ste
momento, como AD y BA se han seleccionado para formar el circuito hamiltoniano
hacemos que el tiempo de DB sea infinito, la tabla 2.7 exhibe esta situacin
B C E F
C 13

5 0
D

9 2 2
E 41 22

0
F 0 0 0

Tabla 2.7
Con el propsito de tener un elemento cero en cada rengln y columna as como mejorar
la cota inferior de los circuitos hamiltonianos procedemos a restar dos unidades del
rengln dos en la tabla 2.6 para obtener (tabla 2.8)
B C E F
C 13

5 0
D 0 7 0 2
E 41 22

0
F 0 0 0

Tabla 2.8
Y se puede observar que una cota inferior de los circuitos hamiltonianos que usan BA es
51 unidades de tiempo.
Paso 2
Captulo 1.Planteamiento del Problema del Agente Viajero
Nuevamente calculamos las penalizaciones para saber qu arco es el que se va a usar:
CF = C + F = 5 + 0 = 5
DE = D + E = 0 + 0 = 0
DF = D + F = 0 + 0 = 0
EF = E + F = 22 + 0 = 22
FB = F + B = 0 +13 = 13
FC = F + C = 0 + 9 = 9
FE = F + E = 0 + 2 = 2

Paso 3
Como se tiene 22 para EF entonces se incluye al arco EF y si no se incluye se tiene una
penalizacin de 51 + 22 = 73 y la tabla 2.8 exhibe el resultado
B C E
C 13

5
D

7 0
F 0 0 0
Tabla 29
Nos fijamos en el primer rengln y restamos 5 para tener cero quedando
B C E
C 8

0
D

7 0
F 0 0 0
Tabla 2.10
Paso 2
Lo que nos da un costo de 56 unidades nuevamente calculamos las penalizaciones:
CE = C + E = 8 + 0 = 8
DE = D + E = 7 + 0 = 7
FB = F + B = 0 + 8 = 8
FC = F + C = 0 + 7 = 7

Paso 3
De acuerdo con esto podemos elegir como arco a usar el CE o el FB, escogemos FB y
obtenemos la tabla 2.11
C E
C

0
D 7 0
Captulo 1.Planteamiento del Problema del Agente Viajero
Tabla 2.11
Restamos siete en el rengln de D lo que nos da un costo de 63 unidades por usar el
arco FB y obtenemos:
C E
C

0
D 0 0
Tabla 2.12
De donde los nicos arcos que quedan que se pueden usar son CE, DC y DE de donde
escogemos CE y DC y asignamos infinito a DE para evitar posibles subcircuitos con lo
que nos queda la tabla 2.13
C E
C

0
D 0

Tabla 2.13
Figura 2.16 Solucin grfica por medio del algoritmo little-murty
De donde se concluye que el circuito hamiltoniano ptimo es A-D-C-E-F-B-A con una
duracin de 63 unidades de tiempo.
Captulo 1.Planteamiento del Problema del Agente Viajero
Para verificar que esta solucin es ptima, debemos examinar el vrtice AD cuya
evaluacin por cota inferior es 58 (< 63). La separacin del vrtice AD produce: usando
FC una cota de 63 y sin usar FC una cota de 67, por lo cual el circuito propuesto es
ptimo.
2.4 Programacin Dinmica
La programacin dinmica, desarrollada por Richard E. Bellman en la dcada de los 50,
est considerada como una potente herramienta de optimizacin de carcter muy general.
Constituye una disciplina muy importante de las matemticas aplicadas y la investigacin
de operaciones, y su mtodo estndar se aplica en reas tan dispares como ingeniera,
inteligencia artificial, economa, gestin, etc.
2.4.1 Planteamiento de la solucin del PAV como un problema de programacin
dinmica.
A continuacin se plantea la solucin del problema del agente viajero mediante
programacin dinmica.
Sea ( ) 2,3,..., 1, 1,...,
j
N j j N +
y sea S un subconjunto de j
N
que contiene i miembros.
Se define el valor ptimo de la funcin ( , )
i
f j S como:
( , ) La longitud de la trayectoria mas corta de la ciudad 1 a la ciudad a
traves de un conjunto S de ciudades intermedias (la etapa representa
el numero de ciudades
i
f j S j
i
i

en ) S
(1)
La formulacin de las ecuaciones recursivas es la siguiente:
{ } { }
1
( , ) min ( , 1, 2,..., - 2; 1; S N (2)
i i kj
k S
f j S f k S k d i N j

+
Condiciones de frontera:
0 1
( , ) (3)
j
f j d
La trayectoria ms corta va a estar dada por:
( ) { } 2 1
2,3,...,
min , (4)
N j j
j N
f j N d

+
Podemos justificar intituivamente la relacin de recurrencia. Supongamos que queremos
calcular ( , )
i
f j S . Consideramos las trayectorias ms cortas de la ciudad 1 a la ciudad j va
S que tiene a la ciudad k como predecesora inmediata de la ciudad j. Ya que las ciudades
en { } S k deben visitarse en un orden ptimo, la longitud de esta trayectoria es
Captulo 1.Planteamiento del Problema del Agente Viajero
{ }
1
( , )
i kj
f k S k d

+
. Ms an, ya que somos libres de seleccionar la ciudad k ptimamente,
es claro que ( , )
i
f j S est definido correctamente.
Entonces para calcular la longitud de la trayectoria ms corta, comenzamos por calcular
1
( , ) f j S (para todo par j , S) a partir de los valores de
0
f
. Entonces calculamos
2
( , ) f j S (para
todo par j , S) a partir de los valores de
i
f . Continuamos de la misma manera hasta
2
( , )
N j
f j N
para cada ciudad .j.
La longitud de la trayectoria ms corta esta dada por (4). Ya que alguna j debe ser la
ltima visitada antes de regresar a la ciudad 1. El recorrido de trayectoria ms corta se
puede obtener guardando en cada etapa y cada estado la ciudad k que minimiza la
ecuacin recursiva.
Esto lo ilustramos con el siguiente ejemplo.
A continuacin se da la matriz de distancias de la red que consiste de 5 ciudades:
1 2 3 4 5
1 0 3 1 5 4
2 1 0 5 4 3
3 5 4 0 2 1
4 3 1 3 0 3
5 5 2 4 1 0
Tabla 2.14
Los clculos son los siguientes, la poltica ptima se da entre parntesis:
Condiciones de frontera:
0 12
0 13
0 14
0 12
(2, ) =3(1)
(3, ) =1(1)
(4, ) =5(1)
(5, ) =4(1)
f d
f d
f d
f d




Etapa 1
Captulo 1.Planteamiento del Problema del Agente Viajero
{ }
{ }
{ }
{ }
{ }
{ }
{ }
+
+ +
+ +
+ +
+ +
+ +
+ +
1 0 32
1 0 42
1 0 52
1 0 23
1 0 43
1 0 53
1 0 24
1
(2, 3 ) (3, ) =1+4=5(3)
(2, 4 ) (4, ) 5 1 6(4)
(2, 5 ) (5, ) 4 2 6(4)
(3, 2 ) (3, ) 3 5 8(2)
(3, 4 ) (4, ) 5 3 8(4)
(3, 5 ) (5, ) 4 4 8(5)
(4, 2 ) (2, ) 3 4 7(2)
(4
f f d
f f d
f f d
f f d
f f d
f f d
f f d
f { }
{ }
{ }
{ }
{ }
+ +
+ +
+ +
+ +
+ +
0 34
1 0 54
1 0 25
1 0 35
1 0 45
, 3 ) (3, ) 1 2 3(3)
(4, 5 ) (5, ) 4 1 5(5)
(5, 2 ) (2, ) 3 3 6(2)
(5, 3 ) (3, ) 1 1 2(3)
(5, 4 ) (4, ) 5 3 8(4)
f d
f f d
f f d
f f d
f f d
Etapa 2
{ } { } { } { } { }
{ } { } { } { } { }
{ } { } { } { } { }
{ } { } { } { }
+ + + +
+ + + +
+ + + +
+ + +
2 1 32 1 42
2 1 32 1 52
2 1 42 1 52
2 1 23 1 43
(2, 3, 4 ) min (3, 4 ) , (4, 3 ) min 8 4,3 1 4(4)
(2, 3,5 ) min (3, 5 ) , (5, 3 ) min 8 4, 2 2 4(5)
(2, 4,5 ) min (4, 5 ) , (5, 4 ) min 5 1,8 2 6(4)
(3, 2, 4 ) min (2, 4 ) , (4, 2 ) min 6 5,
f f d f d
f f d f d
f f d f d
f f d f d { }
{ } { } { } { } { }
{ } { } { } { } { }
{ } { } { } { } { }
{ } { } { }
+
+ + + +
+ + + +
+ + + +
+ +
2 1 23 1 53
2 1 43 1 53
2 1 24 1 34
2 1 24 1
7 3 10(4)
(3, 2,5 ) min (2, 5 ) , (5, 2 ) min 6 5, 6 4 10(5)
(3, 4,5 ) min (4, 5 ) , (5, 4 ) min 5 3,8 4 8(4)
(4, 2,3 ) min (2, 3 ) , (3, 2 ) min 5 4,8 2 9(2)
(4, 2,5 ) min (2, 5 ) , (5, 2 )
f f d f d
f f d f d
f f d f d
f f d f d
{ } { }
{ } { } { } { } { }
{ } { } { } { } { }
{ } { } { } { } { }
{ } { }
+ +
+ + + +
+ + + +
+ + + +
+
54
2 1 34 1 54
2 1 25 1 35
2 1 25 1 45
2 1 35
min 6 4,6 1 7(5)
(4, 3,5 ) min (3, 5 ) , (5, 3 ) min 8 2, 2 1 3(5)
(5, 2,3 ) min (2, 3 ) , (3, 2 ) min 5 3,8 1 8(2)
(5, 2, 4 ) min (2, 4 ) , (4, 2 ) min 6 3,7 3 9(2)
(5, 3, 4 ) min (3, 4 ) ,
f f d f d
f f d f d
f f d f d
f f d f { } { } { } + + +
1 45
(4, 3 ) min 8 1,3 3 6(4) d
Etapa 3
{ } { } { } { } { } { }
{ }
{ } { }
{ } { }
{ } { }
+ + + +
+ + +
+ + +
+ + +
+ + +
3 2 32 2 42 2 1 52
3
3
3
(2, 3, 4,5 ) min (3, 4,5 ) , (4, 3,5 ) , (5, 3, 4 ) (4, 3 )
min 8 4,3 1, 6 2 4(4)
(3, 2, 4,5 ) min 6 5,7 3,9 4 10(4)
(4, 2,3,5 ) min 4 4,10 2,8 1 8(2)
(5, 2,3, 4 ) min 4 3,10 1,9 3 7(2)
f f d f d f f d
f
f
f
Entonces se tiene que:
Captulo 1.Planteamiento del Problema del Agente Viajero
{ } { } { } + + + + +
3 1
( ,(2,3, 4,5) min 4 1,10 5,8 3,7 5 5(2)
j
Min f j j d
El circuito hamiltoniano de menor longitud es 5 con las ciudades:
1 3 5 4 2 1
Captulo 3. Tcnicas Heursticas para resolver el problema del agente viajero
En este captulo, se describen las principales tcnicas heursticas de solucin de
problemas combinatorios entre los que figuran el problema del agente viajero. Realizo una
clasificacin de algunos de las tcnicas heursticas y metaheursticos que son los ms
utilizados y reconocidos en la optimizacin combinatoria. Cabe mencionar que las
tcnicas heursticas estn exclusivamente diseadas para un problema en especfico con
caractersticas muy especiales mientras que las tcnicas metaheursticas son tcnicas
que ayudan a resolver una clase de problemas y en este sentido estas tcnicas tambin
se tienen que adecuar al problema que se quiere resolver.
3.1 Introduccin
Algunas clases de problemas de optimizacin son relativamente fciles de resolver. Este
es el caso, por ejemplo, de los problemas lineales, en los que tanto la funcin objetivo
como las restricciones son expresiones lineales. Estos problemas pueden ser resueltos
con el conocido mtodo Simplex; sin embargo, muchos otros tipos de problemas de
optimizacin son muy difciles de resolver. De hecho, la mayor parte de los que podemos
encontrar en la prctica entran dentro de esta categora.
La idea intuitiva de problema difcil de resolver queda reflejada en el trmino cientfico
NP-hard utilizado en el contexto de la complejidad algortmica. En trminos coloquiales
podemos decir que un problema de optimizacin difcil es aquel para el que no podemos
garantizar el encontrar la mejor solucin posible en un tiempo razonable. La existencia de
una gran cantidad y variedad de problemas difciles, que aparecen en la prctica y que
necesitan ser resueltos de forma eficiente, impuls el desarrollo de procedimientos
eficientes para encontrar buenas soluciones aunque no fueran ptimas. Estos mtodos,
en los que la rapidez del proceso es tan importante como la calidad de la solucin
obtenida, se denominan heursticos o aproximados. En [Daz, 1996] y otros se recogen
hasta ocho definiciones diferentes de algoritmo heurstico, entre las que se destaca la
siguiente:
Un mtodo heurstico es un procedimiento para resolver un problema de optimizacin
bien definido mediante una aproximacin intuitiva, en la que la estructura del problema se
utiliza de forma inteligente para obtener una buena solucin.
En contraposicin a los mtodos exactos que proporcionan una solucin ptima del
problema, como la programacin dinmica y los algoritmos de Ramificacin y Acotamiento
(Branch and Bound) que para encontrar soluciones ptimas requieren tiempo
superpolinomial a pesar de que estos algoritmos son ms eficientes que la bsqueda
exhaustiva pura, su tiempo de corrida es an exponencial. Por esa razn es entonces
natural buscar otra alternativa de solucin como son los algoritmos de aproximacin que
Captulo 1.Planteamiento del Problema del Agente Viajero
trabajan en tiempo polinomial los mtodos heursticos se limitan a proporcionar una buena
solucin no necesariamente ptima. [Adenso, 1996]
En la actualidad, la investigacin se ha dirigido hacia el diseo de buenas heursticas, es
decir, algoritmos eficientes con respecto al tiempo de cmputo y al espacio de memoria, y
con cierta verosimilitud de entregar una solucin "buena" esto es, relativamente cercana a
la ptima mediante el examen de slo un pequeo subconjunto de soluciones del nmero
total.
Existen varias razones para utilizar mtodos heursticos, entre las que podemos destacar:
[Adenso, 1996]
El problema es de una naturaleza tal que no se conoce ningn mtodo exacto para
su resolucin. Ofrecer entonces una solucin que slo sea aceptablemente buena
resulta de inters frente a la alternativa de no tener ninguna solucin en absoluto.
Aunque existe un mtodo exacto para resolver el problema, su uso es
computacionalmente muy costoso.
El mtodo heurstico es ms flexible que un mtodo exacto, permitiendo, por
ejemplo, la incorporacin de condiciones de difcil modelizacin.
El mtodo heurstico se utiliza como parte de un procedimiento global que
garantiza el ptimo de un problema.
Existen dos posibilidades:
El mtodo heurstico proporciona una buena solucin inicial de partida.
El mtodo heurstico participa en un paso intermedio del procedimiento, como por
ejemplo las reglas de seleccin de la variable a entrar en la base en el mtodo
Simplex.
3.2 Clasificacin de Algoritmos Heursticos
El siguiente esquema trata de dar unas categoras amplias, no excluyentes, en donde
ubicar a los heursticos ms conocidos: [Adenso, 1996]
3.2.1. Mtodos de descomposicin: El problema original se descompone en
subproblemas ms sencillos de resolver, teniendo en cuenta, aunque sea de manera
general, que ambos pertenecen al mismo problema. Algunos autores [Ball,Magazine,
1981] diferencian entre mtodos de descomposicin (los problemas se resuelven en
cascada) y mtodos de particin (cuando los subproblemas son independientes entre s)
3.2.2. Mtodos Inductivos: La idea de estos mtodos es generalizar de versiones
pequeas o ms sencillas al caso completo. Propiedades o tcnicas identificadas en estos
casos ms fciles de analizar pueden ser aplicadas al problema completo.
3.2.3. Mtodos de Reduccin: Consiste en identificar propiedades que se cumplen
mayoritariamente por las buenas soluciones e introducirlas como restricciones del
problema. El objeto es restringir el espacio de soluciones simplificando el problema. El
riesgo obvio es dejar fuera las soluciones ptimas del problema original.
Captulo 1.Planteamiento del Problema del Agente Viajero
3.2.4. Mtodos Constructivos: Consisten en construir literalmente paso a paso una
solucin del problema. Usualmente son mtodos deterministas y suelen estar basados en
la mejor eleccin en cada iteracin. Estos mtodos han sido los ms utilizados en el PAV.
3.2.5 Mtodos de bsqueda local: A diferencia de los mtodos anteriores, los
procedimientos de bsqueda o mejora local comienzan con una solucin del problema y la
mejoran progresivamente. El procedimiento realiza en cada paso un movimiento de una
solucin a otra con mejor valor. El mtodo finaliza cuando, para una solucin, no existe
ninguna solucin accesible que la mejore.
Si bien todos estos mtodos han contribuido a ampliar nuestro conocimiento para la
resolucin de problemas reales, los mtodos constructivos y los de bsqueda local
constituyen la base de los procedimientos metaheursticos.
3.3 Mtodos constructivos en el problema del viajante
Los mtodos constructivos son procedimientos iterativos que, en cada paso, aaden un
elemento hasta completar una solucin. Usualmente son mtodos deterministas y estn
basados en seleccionar, en cada iteracin, el elemento con mejor evaluacin. Estos
mtodos son muy dependientes del problema que resuelven. En esta seccin se describe
la tcnica del vecino ms cercano.
3.3.1 Heursticos del vecino ms prximo o ms cercano
Uno de los heursticos ms sencillos para el PAV es el llamado del vecino ms cercano,
que trata de construir un ciclo Hamiltoniano de bajo costo basndose en el vrtice cercano
a uno dado. Este algoritmo es debido a Rosenkrantz, Stearns y Lewis (1977) y su cdigo,
en una versin estndar, es el siguiente:
Algoritmo del vecino ms Prximo o ms cercano
Inicializacin
Seleccionar un vrtice
j
al azar.
Hacer
t j
y { } \ W V j
Mientras
( 0) W
Tomar { } / min /
tj t
j W c c i W
Conectar t a
j
Hacer { } \ W W j t j
Figura 3.17 Algoritmo del vecino ms Prximo o ms cercano
Este procedimiento realiza un nmero de operaciones de orden
2
( ) O n . Si seguimos la
evolucin del algoritmo al construir la solucin de un ejemplo dado, veremos que
comienza muy bien, seleccionando aristas de bajo costo.
[Jnger, Reinelt , Rinaldi ,1995]
Sin embargo, al final del proceso probablemente quedaran vrtices cuya conexin
obligara a introducir aristas de costo elevado. Esto es lo que se conoce como miopa del
procedimiento, ya que, en una iteracin escoge la mejor opcin disponible sinver que
esto puede obligar a realizar malas elecciones en iteraciones posteriores. [Mart, 2001]
Captulo 1.Planteamiento del Problema del Agente Viajero
El algoritmo tal y como aparece puede ser programado en unas pocas lneas de cdigo.
Sin embargo una implementacin directa seria muy lenta al ejecutarse sobre ejemplos de
gran tamao (10000 vrtices). As pues, incluso para un heurstico tan sencillo como este,
es importante pensar en la eficiencia y velocidad de su cdigo.
Dentro de la categora de mtodos constructivos, se encuentran los heursticos de
insercin, los basados en rboles generadores o rboles de expansin y los mtodos
basados en ahorros. Para saber mas acerca de stos mtodos heursticos se recomienda
ver la tesis de maestra Anlisis del problema del agente viajero de Esther Segura Prez
de la DEPFI, UNAM.2004.
3.4 Bsqueda Local en el Problema del Agente Viajero
Los procedimientos de bsqueda local, tambin llamados de mejora, se basan en explorar
el entorno o vecindad de una solucin. Utilizan una operacin bsica llamada movimiento
que, aplicada sobre los diferentes elementos de una solucin, proporciona las soluciones
de su entorno. Dentro de los mtodos de bsqueda local se encuentra la tcnica
heurstica 2-OPT que es una de las ms representativas.
3.4.1 Procedimientos de 2- intercambio
Este procedimiento est basado en la siguiente observacin para grafos con distancias
eucldeas (o en general con costos cumpliendo la desigualdad triangular).
Un movimiento 2-opt consiste en eliminar dos aristas y reconectar los dos caminos
resultantes de una manera diferente para obtener un nuevo ciclo.
Las figuras 3.18 y 3.19 ilustran este movimiento en el que las aristas ( , ) i j y ( , ) l k son
reemplazadas por ( , ) l j y ( , ) i k . Notar que slo hay una manera de reconectar los dos
caminos formando un nico tour.
Figura 3.18 Solucin original Figura 3.19 Solucin mejorada
El siguiente cdigo recoge el algoritmo heurstico de mejora 2-ptimo. Consiste en
examinar todos los vrtices, realizando, en cada paso, el mejor movimiento 2-opt
asociado a cada vrtice.
Algoritmo 2-ptimo
Inicializacin
Captulo 1.Planteamiento del Problema del Agente Viajero
Considerar un ciclo Hamiltoniano inicial
Para cada vrtice i definir un conjunto de vrtices ( ) N i
1 move
Etiquetar todos los vrtices como no explorados
Mientras (queden vrtices por explorar)
Seleccionar un vrtice i no explorado.
Examinar todos los movimientos 3-opt que eliminen 3 aristas teniendo cada
una, al menos un vrtice ( ) N i .
Si alguno de los movimientos examinados reduce la longitud del ciclo,
realizar el mejor de todos y hacer 1 move . En otro caso etiquetar i como
explorado.
Figura 3.20 Algoritmo 2-ptimo
La variable
move
vale 0 si no se ha realizado ningn movimiento al examinar todos los
vrtices, y 1 en otro caso. El algoritmo finaliza cuando 0 move , con lo que queda
garantizado que no existe ningn movimiento 2-opt que pueda mejorar la solucin.
El orden en el que el algoritmo examina los nodos incide de manera notable en su
funcionamiento. En una implementacin sencilla podemos considerar el orden natural
1, 2,...., n
. Sin embargo, es fcil comprobar que cuando se realiza un movimiento hay
muchas posibilidades de encontrar movimientos de mejora asociados a los vrtices que
han intervenido en el movimiento recin realizado. Por ello, una implementacin ms
eficiente consiste en considerar una lista de vrtices candidatos a examinar. El orden
inicial es el de los vrtices en el ciclo comenzando por uno arbitrario y en cada iteracin
se examina el primero de la lista. Cada vez que se examina un vrtice i , ste se coloca al
final de la lista y, los vrtices involucrados en el movimiento (vrtices
j
, k y l de la figura
3.19) se insertan en primer lugar.
Dado que el proceso de examinar todos los movimientos 2-opt asociados a cada vrtice
es muy costoso computacionalmente, se pueden introducir las siguientes mejoras para
acelerar el algoritmo:
Exigir que al menos una de las dos aristas aadidas en cada movimiento, para
formar la nueva solucin, pertenezca al subgrafo candidato.
Observando el funcionamiento del algoritmo se puede ver que en las primeras
iteraciones la funcin objetivo decrece substancialmente, mientras que en las
ltimas apenas se modifica. De hecho la ltima nicamente verifica que es un
ptimo local al no realizar ningn movimiento. Por ello, si interrumpimos el
algoritmo antes de su finalizacin, ahorraremos bastante tiempo y no perderemos
mucha calidad.
Es evidente que ambas mejoras reducen el tiempo de computacin a expensas de perder
la garanta de que la solucin final es un ptimo local. As pues, dependiendo del tamao
del ejemplo a resolver, as como de lo critico que sea el tiempo de ejecucin, se deben
implementar o no.
El comprobar si existe, o no, un movimiento 2-opt de mejora utiliza un tiempo de orden
2
( ) O n , ya que hay que examinar todos los pares de aristas en el ciclo. Podemos
Captulo 1.Planteamiento del Problema del Agente Viajero
encontrar clases de problemas para los que el tiempo de ejecucin del algoritmo no est
acotado polinmicamente.
Usando el algoritmo anterior, se realiza una descripcin ms detallada del 2-Opt para un
PAV Simtrico de 5 ciudades. Se muestra el PAV en la figura 4.6a con su respectiva
matriz de adyacencia