El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque...

64
Salvador Peñalva García Francisco Javier Pérez Lázaro Facultad de Ciencias, Estudios Agroalimentarios e Informática Grado en Matemáticas 2014-2015 Título Director/es Facultad Titulación Departamento TRABAJO FIN DE GRADO Curso Académico El problema del viajante. Métodos de resolución y un enfoque hacia la Teoría de la Computación Autor/es

Transcript of El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque...

Page 1: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

Salvador Peñalva García

Francisco Javier Pérez Lázaro

Facultad de Ciencias, Estudios Agroalimentarios e Informática

Grado en Matemáticas

2014-2015

Título

Director/es

Facultad

Titulación

Departamento

TRABAJO FIN DE GRADO

Curso Académico

El problema del viajante. Métodos de resolución y un enfoque hacia la Teoría de la Computación

Autor/es

Page 2: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

© El autor© Universidad de La Rioja, Servicio de Publicaciones, 2015

publicaciones.unirioja.esE-mail: [email protected]

El problema del viajante. Métodos de resolución y un enfoque hacia la Teoría de la Computación, trabajo fin de grado

de Salvador Peñalva García, dirigido por Francisco Javier Pérez Lázaro (publicado por laUniversidad de La Rioja), se difunde bajo una Licencia

Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported. Permisos que vayan más allá de lo cubierto por esta licencia pueden solicitarse a los

titulares del copyright.

Page 3: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

Facultad de Ciencias, Estudios Agroalimentarios e Informática

TRABAJO FIN DE GRADOGrado en MatemáticasEl Problema del Viajante:Métodos de resolución y un enfoque hacia la Teoría de laComputación.

Alumno:Salvador Peñalva GarcíaTutores:

Logroño, Julio,2015

Francisco Javier Pérez Lázaro

Page 4: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

Agradecimientos

En primer lugar quiero mostrar mi agradecimiento al apoyo incondicional de mi familia, enespecial a mis padres, hermano y abuela pues siempre he sabido que puedo contar con ellos antecualquier circunstancia. Quiero tambien agradecer el enorme esfuerzo y de dedicacion que mitutor Fco. Javier Perez Lazaro ha brindado a este trabajo y su paciencia infinita y por ultimome gustarıa agradecer el apoyo de mis amigos y companeros que nunca han dudado en echarmeuna mano cuando lo necesitaba.

Page 5: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

i

Resumen

En este trabajo nos dedicaremos al estudio del problema del viajante de comercio (TSPpor sus siglas en ingles). Este problema trata de determinar el camino que un comerciante quequiere visitar n ciudades debe seguir para que la distancia recorrida sea mınima, sabiendo quetiene que empezar y terminar en la misma ciudad.

Tras hacer un breve recorrido historico sobre este problema y presentar dos formulacionesmatematicas del mismo, vamos a mostrar dos metodos de resolucion exactos: uno basado enlos metodos de ramificacion y acotacion y el otro en los planos de cortes. Este ultimo metododesarrollado por Dantzig, Fulkerson y Johnson en 1954, supuso un salto en la historia delproblema del viajante pues fue el primero capaz de resolver un ejemplo con un numero altode ciudades y ademas fue precursor del metodo general de los planos de corte desarrolladopor Gomory para los problemas de programacion lineal entera. Posteriormente mostramos tresheurısticas, entre las que se encuentra la de Christofides, para obtener soluciones cercanas alresultado optimo de manera eficiente.

En el ultimo capıtulo, hacemos un enfoque del problema del viajante en la teorıa de lacomplejidad. Para ello usamos maquinas de Turing para describir los conjuntos de problemasde decision P y NP y demostramos el teorema de Cook quien probo que el problema de satis-fabilidad es NP -Completo. Con este resultado seremos capaces de ver que el problema de losciclos hamiltonianos es tambien NP -Completo, hecho imprescindible para poder concluir queel problema del viajante es NP -duro, es decir, que todo problema en NP se transforma en untiempo polinomico en el problema del viajante.

Abstract

In this work, we study the Travelling Salesman Problem (TSP). The aim of this problem, isto find the tour that a salesman, who wants to visit n cities, should follow in order to minimizethe total distance and return to the starting point.

After showing the development of this problem throughout history and explaining two dif-ferent formulations for the TSP, we will show two exact resolution methods: the first one isbased on Branch and Bound method and the other uses cutting planes. The latter, developedby Dantzig, Fulkerson and Johnson in 1945, represented a big breakthrough for the problembecause it succeeded in solving an example with a large number of cities. It was also a referenceto Gomory to introduce his cutting plane method to solve linear integer problems. Later, weshow three heuristic methods, among which is Christofides heuristic. These algorithms expectto obtain close results to the optimum solution in a short period of time.

In the last chapter, we can see the TSP from the complexity theory perspective. We useTuring Machines to describe decision problem groups P and NP and we prove Cook’s Theoremwhich supports that Satisfiability Problem is NP -Complete. This will lead to the fact thatHamiltonian circuit problem is also NP -Complete and will be essential to show that TravellingSalesman Problem is NP -Hard, i.e., each NP problem transforms in polynomial time into theTSP.

Page 6: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

ii

Page 7: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

Indice general

1. Introduccion 11.1. El problema del viajante en la historia . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Aplicaciones del TSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. TSP: modelo y metodos de resolucion 92.1. Definicion y modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.1. Otras variantes del VRP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.3. Metodos de resolucion de programacion entera . . . . . . . . . . . . . . . . . . . 13

3. Metodos de resolucion exactos 153.1. Metodo de ramificacion y acotacion . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2. Metodo de los planos de corte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4. Heurısticas para el TSP 294.1. Algoritmo codicioso o del vecino mas proximo . . . . . . . . . . . . . . . . . . . . 294.2. Algoritmo del Arbol de expansion mınimo . . . . . . . . . . . . . . . . . . . . . . 294.3. Algoritmo de Christofides . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

5. TSP es NP-Duro 355.1. Maquinas de Turing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

5.1.1. Descripcion de una maquina de Turing . . . . . . . . . . . . . . . . . . . . 375.2. Clases P y NP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

5.2.1. Transformaciones polinomicas y Completitud NP . . . . . . . . . . . . . . 415.3. El teorema de Cook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

5.3.1. 3-Satisfactibilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485.4. NP -Duro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

iii

Page 8: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

iv INDICE GENERAL

Page 9: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

Capıtulo 1

Introduccion: Los problemas derutas y el TSP

1.1. El problema del viajante en la historia

Este trabajo trata sobre el estudio del problema del viajante de comercio, en el que uncomerciante quiere visitar n ciudades empezando y terminando en la misma ciudad y debedeterminar el recorrido a seguir para que la distancia total recorrida sea mınima. Este tipo deproblema se engloba dentro de los denominados problemas de rutas.

Un problema de rutas es todo aquel problema de optimizacion donde se debe encontraruna ruta optima para satisfacer las demandas de un conjunto de clientes. La relevancia quetiene el estudio de estos problemas es, en gran medida, debido a la gran utilidad que tienen ensituaciones reales, principalmente en la logıstica y distribucion de mercancıas. En Espana porejemplo, el sector del transporte supuso entre los anos 2005 y 2009 un 4, 2 % del Valor AnadidoBruto nacional y continuo su crecimiento situandose en el ano 2011 en torno al 4, 8 % [3]. Espor esto que una distribucion eficiente de las mercancıas, influye en practicamente cualquieractividad economica. A esto debemos anadir que en los ultimos anos el transporte por carreteraha superado con una enorme ventaja a cualquier otro tipo de transporte; concretamente, segunun informe de la CEOE [3], en el ano 2009 el 57 % del VAB del sector transporte correspondio altransporte terrestre, y en el ano 2012 se contabilizaron en Espana 205.738 empresas en estesector. Por lo tanto, una aplicacion correcta de los problemas de rutas puede suponer unamejora economica en las cuentas de cualquiera de estas empresas, y por lo tanto, tambien tieneun impacto positivo en cualquier otro negocio que necesite del transporte de mercancıas.

Existen muchos problemas de rutas en funcion de las restricciones adicionales que impon-gamos (numero de comerciantes, capacidad de los vehıculos...) y hay que diferenciarlos de losproblemas de buscar el camino optimo, ya que en los de rutas, establecemos un conjunto de ar-cos o nodos que debemos visitar, y cuando buscamos el camino optimo, solo tratamos de llegar aun destino desde un origen de la forma mas eficiente, sin importar los nodos y arcos intermedios.

Dentro de los problemas de rutas, hay dos variantes: los problemas de rutas sobre nodos,y los problemas de rutas sobre arcos. En el primer caso, la ruta optima debe visitar todos losnodos establecidos y en el segundo caso, se deben recorrer todos los arcos del grafo determinadopor el problema. Podemos ver una clasificacion de los problemas de rutas en la Figura 1.1.

1

Page 10: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

2 CAPITULO 1. INTRODUCCION4 Capıtulo 1: Problemas de rutas

DemandaRestricciones

de capacidadNombre habitual del problema Otras restricciones

Nodos

NOViajante de Comercio

TSP

Recogida/distribución

Ventanas de tiempo

Otras

SÍProblema de rutas de vehículos

VRP

Arcos

NO

Una componente conexa

(Problema del Cartero Chino CPP)

Varias componentes conexas

(Problema del Cartero rural RPP)

SÍProblema de rutas con capacidades

CARP

Cuadro 1.1: Clasificacion Problemas de Ruta

Como se puede observar en el cuadro, existen dos grandes tipos de problemas

de rutas segun los clientes se encuentren sobre los nodos o sobre los arcos. En el

primero de los casos, la ruta optima a determinar debe visitar todos los nodos,

mientras que, en el segundo, se deben recorrer todos los arcos del grafo que define

el problema. En otras palabras, en los problemas sobre los nodos se entiende que

cada cliente esta representado por un nodo mientras que en los problemas sobre

los arcos se entiende que los arcos son calles que deben ser visitadas.

Los problemas de rutas sobre nodos tienen su origen en el siglo XIX cuando

el irlandes W.R. Hamilton y el britanico T. Kirkman inventaron el denominado

“Icosian Game”. Este juego consistıa en encontrar una ruta entre los 20 puntos del

juego usando solo los caminos permitidos y regresando al nodo origen (una imagen

del juego original comercializado anos mas tarde puede encontrarse en la Figura

1.1). Obviamente, este juego no se centraba en la busqueda del camino optimo,

sino en la busqueda de un camino que visitase todos los nodos una unica vez (anos

mas tarde, este tipo de caminos o ciclos recibirıan el nombre de Hamiltonianos

en honor a W.R. Hamilton).

La historia de los dos grandes problemas de rutas sobre nodos (el problema

del viajante de comercio y los problemas de rutas de vehıculos) esta ıntimamente

relacionada. De hecho, historicamente se ha entendido el VRP como una gene-

ralizacion del TSP, como se vera mas adelante. Estos dos problemas seran los

temas centrales de este primer capıtulo del trabajo, por lo que informacion mas

detallada sobre su historia, tipos y metodos de resolucion puede encontrarse en

sucesivas secciones.

Figura 1.1: Clasificacion de los Problemas de Rutas

Los problemas de rutas sobre arcos tienen su origen en el siglo XV III, cuando los habitan-tes de Koningsberg debatieron si existıa alguna ruta que cruzara una y solo una vez cada unode los siete puentes de la Figura 1.2 y volviera otra vez al punto de origen. Euler demostro pos-teriormente que esto no era posible.

Figura 1.2: Puentes de Koningsberg

El problema anterior se refiere a la busqueda de caminos pero no a la ruta mas optima. Enese sentido, el llamado Problema del Cartero Chino (CPP, Chinese Postman Problem) buscaun camino de distancia mınima que recorra todos los arcos de un grafo al menos una vez. Unmetodo de resolucion del CPP consiste en anadir arcos de coste mınimo hasta conseguir ungrafo euleriano 1. Otro problema de arcos es el llamado Problema del Cartero Rural (RPP,Rural Postman Problem), en el que se busca un camino de mınima distancia que recorra soloalguno de los arcos del grafo.

Aunque los problemas de rutas por arcos son sin duda un campo muy amplio e interesante,en este trabajo nos vamos a centrar en los problemas de rutas por nodos, en particular en elproblema del viajante de comercio (TSP, Travelling Salesman Problem). Como veremos masadelante, el TSP se entiende historicamente como un caso particular del problema de rutas de

1Los grafos eulerianos, cuyo nombre se debe al matematico Leonhard Euler, son grafos que contienen cicloseulerianos, es decir que contienen al menos un ciclo que pasa por todas las aristas una sola vez.

Page 11: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

1.1. EL PROBLEMA DEL VIAJANTE EN LA HISTORIA 3

vehıculos (V RP , Vehicle Routing Problem), en el que se trata de averiguar las rutas optimasde una flota de transporte para dar servicio a unos clientes.

Vamos a ver una definicion del problema del viajante (TSP ):Un viajante quiere visitar n ciudades, pasando una y solo una vez por cada una

de ellas, empezando por una ciudad origen en la que terminara el recorrido. Su-pongamos que conoce la distancia entre cada par de ciudades. ¿Cual es el recorridoque debe seguir, para que la distancia total que recorra sea mınima?

Para explicar este problema, vamos a necesitar una serie de conceptos basicos que mostra-remos a continuacion.

Definicion 1.1.1. Un grafo, es un par G = (V,A) donde V es un conjunto finito de elementosllamados vertices y A es un conjunto de pares de vertices al los que llamaremos aristas o arcos.

Un ciclo, es una sucesion de vertices u1, u2, . . . , up ∈ V tales que u1, u2, . . . , up−1 son distin-tos, up = u1 y (ui, ui+1) ∈ A. Si el ciclo contiene a todos los vertices de V , entonces se llamaciclo hamiltoniano2.

En realidad, el TSP se puede representar como un grafo con pesos en sus aristas y su reso-lucion se centra en encontrar un ciclo hamiltoniano de mınimo peso, entendiendo por peso a lasuma de los pesos de cada una de las aristas que pertenecen al ciclo.

Previo al analisis de Hamilton, eminencias en el campo de las matematicas como Euler yVandermonde estudiaron casos concretos de busqueda de ciclos de este estilo en grafos, aunquefue el reverendo T.P. Kirkman junto con el propio Hamilton el primero en considerar cicloshamiltonianos como tal, cuando inventaron el juego Icosean (Figura 1.3), en el que trataron deencontrar una ruta entre los 20 puntos del juego usando solo una serie de caminos y regresandoal nodo original.

Figura 1.3: Juego Icosean

El primer impreso que menciona al problema del viajante es del ano 1832, y se titula: “Elviajante de comercio: como debe ser y que debe hacer para conseguir comisiones y triunfaren el negocio. Por un viajante de comercio veterano” [21]. Impreso en Alemania, trata de laimportancia de elegir un camino optimo en una ruta de negocios aunque no menciona ningunmodelo matematico. Por otro lado, no se sabe a ciencia cierta quien fue el precursor del nombreTravelling Salesman Problem (TSP), aunque en una entrevista que le hicieron a Merril Flood(1984) [8], afirmo haberlo escuchado de A. W. Tucker, quien supuestamente lo habıa oıdoanteriormente de la boca de Hassler Whitney, de la Universidad de Princeton en el ano 1931.

Fue durante esta epoca de los anos 30, cuando se comenzo a trabajar propiamente sobre elproblema del viajante. Merril Flood, de la universidad de Harvard, quien se intereso en este

2En honor al matematico irlandes Sir William Rowan Hamilton.

Page 12: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

4 CAPITULO 1. INTRODUCCION

problema cuando le propusieron encontrar la ruta optima que debıa seguir un autobus escolar,tuvo un papel muy importante en la tarea de divulgacion de este problema. Al mismo tiempo,en Viena, Karl Menger enuncio lo que se conocıa como el problema del mensajero, que tratabade encontrar el camino mas corto que uniera un conjunto de puntos. Fue el propio Menguer [20]quien intuyo, seguramente sin ser totalmente consciente, una importante propiedad del TSP :este problema es NP-Duro, como demostraremos en un capıtulo posterior. Ademas propuso loque mas tarde llamarıan el algoritmo del vecino mas proximo.

Sin duda alguna fue entre los anos 50 y 60 cuando este problema gano la mayor popula-ridad entre los cırculos cientıficos, dando lugar a cantidad de trabajos, debido en gran partea su estrecha relacion con los dos problemas de optimizacion combinatoria conocidos hasta elmomento: el problema de asignacion y el del transporte.

El problema de asignacion, trata de asignar n puestos de trabajo a n trabajadores. Cada unotiene una puntuacion en el desempeno de cada uno de los puestos y el objetivo es maximizar lasuma de los desempenos. El problema del transporte, trata de repartir m recursos a n clientes demanera optima, y es un caso mas general del problema de asignacion. Para el ano 1947, Dantzighabıa desarrollado ya el metodo del simplex para resolver los problemas de programacion lineal,y hacia 1953, existıan adaptaciones del mismo para casos especiales del problema de transportey del de asignacion (en 1955, Harold Kuhn desarrollo el metodo hungaro para resolver problemasde asignacion [15] basandose en los trabajos de D.Konig y J.Egervary).

Durante estos anos, destacamos el estudio realizado por Danztig, Fulkerson y Johnson,quienes publicaron en el ano 1954 en la revista Journal of the Operation Research Societyof America, el artıculo “Soluciones de un problema del viajante de gran tamano”[6]. En el,calificaron el TSP como un problema de programacion lineal entera y ademas resolvieron unainstancia del problema del viajante de 49 ciudades (una por cada estado de Estados Unidos),lo que supuso un gran avance, pues consiguieron resolver un problema con un numero alto deciudades y ademas utilizaron un nuevo e innovador metodo que utilizaba las recientes tecnicasde programacion lineal, junto con la idea de que si encontraban un tour cercano al optimo,era cuestion de anadir un numero no muy grande de restricciones adicionales a este tour paraconseguir llegar al optimo.

Este metodo que se conoce como metodo de los planos de cortes evolucionarıa posteriormentehasta el metodo de Gomory [11] y posteriormente darıa lugar al actual metodo de ramificaciony acotacion, que es uno de las formas mas utilizadas de resolver problemas de programacionlineal entera. El metodo de ramificacion y acotacion resuelve el problema mediante un metodode programacion lineal y cuando una de las variables de la solucion obtenida x no es entera,se subdivide el problema en dos subproblemas en las que se anade en cada uno una nuevarestriccion en la que esa variable toma el valor entero mas cercano a x menor que x y mayorque x, respectivamente.

Tras este artıculo de Dantzig et al. [6], fueron apareciendo nuevos algoritmos aplicables cadavez a un numero mayor de ciudades, como el de M.Held y R.Karp [13], basado en programaciondinamica y de orden n22n y ya partir de los anos 80, utilizaron variantes de los metodos deplanos de cortes y ramificacion y acotacion para encontrar soluciones exactas para instanciascon hasta 2392 ciudades. En la Figura 1.4 , podemos observar la evolucion de este problemadesde 1954 hasta la decada de los 90 y en la Figura 1.5 una grafica que muestra la evoluciondel TSP en la historia.

Page 13: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

1.2. APLICACIONES DEL TSP 5

1.2. Problema del viajante de comercio 9

del viajante para 49 ciudades: una por cada estado de EEUU (Alaska y Hawai

se convirtieron en estados en 1959) y Washington. Este libro resulta de gran

importancia principalmente por 2 motivos:

Supuso un gran avance en la historia del TSP al resolver un problema con

un numero tan alto de ciudades, teniendo en cuenta la falta de programas

informaticos.

Se utilizo un algoritmo (pese a que los autores se negaron a considerarlo

un metodo de resolucion) que sirvio de inspiracion a muchos otros en las

siguientes decadas. La idea fue aplicar las recientes tecnicas de programa-

cion lineal al problema (Dantzig habıa desarrollado el algoritmo del sımplex

en 1947, lo que supuso un gran avance en las tecnicas de optimizacion del

momento) de una forma innovadora dando lugar al metodo de los cortes

de plano, que mas tarde evolucionarıa hasta el algoritmo de ramificacion

y acotacion (ambos procedimientos seran tratados con detenimiento poste-

riormente).

En lınea con el artıculo de Dantzig et al., muchos autores comenzaron a desa-

rrollar otros algoritmos que fuesen aplicables a problemas con un numero cada

vez mas grande de ciudades. Gracias a esto y al gran desarrollo de la informatica

en las ultimas decadas, ha habido grandes avances en la resolucion de los TSP.

En el Cuadro 1.2 pueden observarse los problemas mas destacables que fueron

resueltos desde 1954 hasta 1990.

1954 G. Dantzig, R. Fulkerson, S. Johnson 49 ciudades

1971 M. Held, R.M. Karp 57 ciudades

1971 M. Held, R.M. Karp 64 ciudades

1975 P.M. Camerini, L. Fratta, F. Maffioli 67 ciudades

1975 P. Miliotis 80 ciudades

1977 M. Grötschel 120 ciudades

1980 H. Crowder and M. W. Padberg 318 ciudades

1987 M. Padberg and G. Rinaldi 532 ciudades

1987 M. Grötschel and O. Holland 666 ciudades

1987 M. Padberg and G. Rinaldi 1002 ciudades

1987 M. Padberg and G. Rinaldi 2392 ciudades

Cuadro 1.2: Hitos en la resolucion del TSPFigura 1.4: Evolucion del TSP a lo largo de la historia

10 Capıtulo 1: Problemas de rutas

En 1990 se comenzo a desarrollar un programa informatico llamado Concorde

consistente en mas de 130000 lıneas de codigo en C que ha permitido resolver

problemas de hasta 85900 ciudades en el ano 2006. Matematicos y otros profesio-

nales trabajan cada dıa en la mejora de este programa compuesto por las mejores

tecnicas disponibles hasta el momento. En la Figura 1.3 se puede observar la

progresion en el numero de ciudades hasta el ano 2006.

-

10.000

20.000

30.000

40.000

50.000

60.000

70.000

80.000

90.000

100.000

Figura 1.3: Progresos en la historia del TSP

Aplicaciones

La mayor parte de las mejoras en TSP durante los primeros anos estaban mo-

tivadas por aplicaciones directas del mismo. Entre otros, Flood [21] trabajo sobre

rutas de autobuses escolares y Morton y Land [43] aplicaron el TSP a la plani-

ficacion de rutas de una empresa de lavanderıa. Hasta el dıa de hoy, el TSP se

ha aplicado sobre una gran variedad de problemas que van desde rutas de vende-

dores hasta la genetica. A continuacion, se comentan brevemente algunas de las

aplicaciones mas importantes del problema del viajante:

Logıstica.- Las aplicaciones mas directas y mas abundantes del TSP se

centran en el campo de la logıstica. El flujo de personas, mercancıas y

vehıculos en torno a una serie de ciudades o clientes se adapta perfecta-

mente a la filosofıa del TSP, como ya demostraron los primeros estudiosos

del problema. Entre las multiples aplicaciones logısticas del problema del

viajante, destacamos:

Figura 1.5: Evolucion del TSP a lo largo de la historia

En la decada de los 90, W. Cook junto con otros companeros desarrollaron el programainformatico llamado Concorde (www.math.uwaterloo.ca/tsp/concorde.html), con el que en 2006consiguieron resolver una instancia de 85900 ciudades. En la Figura 1.6, podemos ver la solucionoptima a una instancia del TSP de 532 vertices, en la que se han utilizado 302 cortes.

1.2. Aplicaciones del TSP

La mayor parte de los avances en la historia del TSP han sido motivadas por aplicacionesdel mismo en casos cotidianos. Hoy en dıa, hay multitud de campos en los que el problema delviajante de comercio juega un papel importante a la hora de tomar decisiones de eficiencia. Acontinuacion veremos varios ejemplos de ello:

Logıstica: las aplicaciones mas directas de este problema se centran en el campo de lalogıstica. La eleccion de un recorrido eficiente a la hora de transportar mercancıas, pasa-jeros y vehıculos en torno a una serie de ciudades puede suponer un ahorro significativo derecursos. Varios ejemplos en los que se utiliza la resolucion de este problema son: seleccionde rutas de vendedores o turistas para determinar un camino con el que poder visitar los

Page 14: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

6 CAPITULO 1. INTRODUCCION

Figura 1.6: Grafo y recorrido optimo de una instancia con 532 ciudades usando Concorde

lugares que deseen y volver al punto de origen, planificacion de rutas escolares o repartode correo (aunque se ajuste mas a un problema de rutas sobre arcos, existen casos comocuando las casas estan alejadas, en los que el TSP puede ser util).

Industria: Aunque no es tan comun su uso en este campo como en la logıstica, la aplicaciondel TSP ha reducido significativamente costes en determinados ambitos relacionados conla industria:

• Secuenciacion de tareas: supongamos que una maquina tiene que realizar una seriede tareas en el mınimo tiempo posible sin que el orden de las mismas sea importante.Si tij , es el tiempo que cuesta preparar a la maquina para realizar la tarea j cuandoacaba de terminar la tarea i, podemos aplicar el TSP estableciendo como nodos cadauna de las tareas.

• Produccion de circuitos electronicos: El TSP se utiliza para buscar el orden optimoen que perforar las placas que albergaran estos circuitos (se supone cada nodo delproblema, una posicion donde se debe perforar y como costes la distancia entrecada una de estas posiciones. La ciudad de origen sera el lugar donde se mantienela perforadora mientras se cambian las placas). Esta aplicacion del problema delviajante, lleva anos siendo estudiada (Lin y Kernighan en 1973 ya trataron estetema [18]) y segun estudios de IBM y Siemens permiten mejoras de hasta el 10 %en rendimiento. Al mismo tiempo, tambien se trata como instancia del problema deviajante de comercio el orden en los que posteriormente se conectaran microchipsentre si en dispositivos digitales, tratando siempre de minimizar la cantidad de cable.

Ademas de estas aplicaciones mas comunes, usos del TSP abarcan multitud de materias diver-sas, como por ejemplo: consumo de combustibles en el espacio para alcanzar cuerpos celestes,conexiones entre aeropuertos, conexiones entre cadenas de ADN, o incluso la programacion de

Page 15: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

1.2. APLICACIONES DEL TSP 7

los robots en los almacenes de Amazon que se encargan de distribuir los paquetes que ordenanlos clientes (www.academia.edu/2471485/), etc.

Tras esta introduccion historica del problema, podemos dividir el trabajo en dos grandesapartados:

En el Capıtulo 2, nos centramos en dar dos formulaciones matematicas del problema paraposteriormente, en el Capıtulo 3 explicar dos metodos exactos, uno basado en ramificacion yacotacion y otro basado en planos de corte. Ambos son variantes de los conocidos metodos deprogramacion entera aplicadas al caso del viajante de comercio. La eleccion de estos metodosse debe a su estrecha relacion con el desarrollo historico del problema y con el avance de losmetodos de resolucion de problemas generales de programacion lineal entera. Ademas en el si-guiente capıtulo mostramos diferentes heurısticas utilizadas para encontrar de manera eficientesoluciones aproximadas del problema del viajante.

La segunda parte de la memoria que se corresponde al Capıtulo 5 esta desarrollado paraintroducir al lector en la Teorıa de la Computacion y definir mediante maquinas de Turinglos dos grandes grupos de problemas en los que podemos clasificar algunos problemas de deci-sion en funcion de su complejidad: P (Determinısticos Polinomicos) y NP (No DeterminısticosPolinomicos).

En este mismo capıtulo demostramos tambien varios resultados, entre ellos el teorema deCook, el cual nos permite establecer una equivalencia entre muchos problemas de decision quellamaremos NP -Completos. Diremos que un problema P es NP -completo, si cualquier problemade NP puede transformarse en P mediante un proceso de complejidad a lo sumo polinomica.Por tanto, si encontraramos un metodo de complejidad polinomica para resolver P, podrıamosresolver todos los problemas de NP de forma polinomica realizando esta transformacion.

Todas estas nociones, estan completamente enfocadas en demostrar que el problema delviajante de comercio, del que no se conoce ningun algoritmo de resolucion que se ejecute entiempo polinomico, es un problema de optimizacion que pertenece a un grupo de problemasdenominado NP -Duro.

Page 16: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

8 CAPITULO 1. INTRODUCCION

Page 17: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

Capıtulo 2

TSP: modelo y metodos deresolucion

2.1. Definicion y modelo

Una vez hemos profundizado en la historia del problema del viajero, continuamos nuestrotrabajo, mostrando dos de las formulaciones del TSP mas comunes:

Sea G = (V,A) un grafo completo. Los vertices i = 2, . . . , n se corresponden con las ciudadesa visitar y el vertice 1, con la ciudad de origen y destino. A cada arco (i, j), se le asocia unvalor no negativo cij , que representa el coste de viajar del nodo i al j. Si G es un grafo dirigido,la matriz de costes C es asimetrica, sin embargo si cij = cji para todo (i, j) ∈ A entonces lamatriz de costes sera simetrica, y el problema recibira el nombre de TSP simetrico (STSP ).En este caso, el conjunto A se sustituye por el conjunto E de arcos no dirigidos i, j con i < j.

Vamos a definir un conjunto de variables de decision xij ∈ {0, 1} para cada (i, j) ∈ A, talque xij = 1 si el arco (i, j) forma parte de la solucion, xij = 0 en caso contrario.

Encontramos ya entonces la funcion objetivo:

mın∑i6=j

cijxij ,

sujeto a las siguientes condiciones:∑j∈δ−(i)

xij = 1 ∀i ∈ V,

∑j∈δ+(i)

xij = 1 ∀i ∈ V,

dondeδ−(i) = {a = (j, i) ∈ A},

δ+(i) = {a = (i, j) ∈ A}.

La primera restriccion nos dice, que a cada vertice, solo puede llegar un arco y la segundadetermina que de cada vertice, solo puede salir un arco. Estas restricciones, son necesarias perono suficientes, pues podrıa dar lugar a subcircuitos dentro del grafo, como vemos en la Figura2.1.

9

Page 18: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

10 CAPITULO 2. TSP: MODELO Y METODOS DE RESOLUCION

Figura 2.1: Ejemplo de subcircuitos en TSP

En este caso, las variables son x12 = x23 = x34 = x45 = x56 = x67 = 1, luego se cumplenlas restricciones arriba mencionadas, es decir, a cada vertice solo entran y salen como muchoun arco, pero sin embargo no es un camino valido para el TSP.

Necesitamos por lo tanto anadir alguna restriccion mas al problema. En el ejemplo anterior,vemos que para el subconjunto {1, 2, 3}, hay tres arcos que unen los nodos entre sı. Si limitamosel numero de arcos a dos en todos estos subconjuntos, entonces evitarıamos subcircuitos dentrodel grafo. Para modelizar estas situaciones, es necesario definir un nuevo conjunto:

∀W ( V, A(W ) = {a = (i, j) ∈ A|i, j ∈W}.

Ası, las restricciones de ruptura de subcircuito son las siguientes:∑(i,j)∈A(W )

xij ≤ |W | − 1 ∀W ⊆ V, 2 ≤ |W | ≤ n/2,

equivalente a ∑i∈W,j /∈W

xij ≥ 1 ∀W ⊆ V, 2 ≤ |W | ≤ n/2.

Estas restricciones indican, que para cada subconjunto de vertices, al menos uno de los arcosllega a un nodo que no se encuentra en ese subconjunto.

Otra forma de evitar los subcircuitos, es anadiendo un conjunto nuevo de variables enteras.Para definirlas, vamos a considerar un tour s1 = 1, s2, . . . , sn. Sea ti para cada i = 1, . . . , n elmomento del tour en el que la ciudad i es visitada, es decir, para t1 = 1, ts2 = 2, . . . , tsn = n.Podemos pensar entonces cada tj como la inversa de sj , en el que tj = ti + 1 si xij = 1.

De esta idea observamos que todo tj cumple:

tj ≥

{ti + 1− n si xij = 0,

ti + 1 si xij = 1.

Esta restriccion, puede ser escrita como:

tj ≥ ti + 1− n(1− xij), i ≥ 2, j ≥ 2, i 6= j. (2.1)

Estas restricciones se derivan de condiciones, que un camino que sea solucion debe cumplir.Veamos ahora, que no solo se cumple esto, sino que si existen subcircuitos, entonces estasrestricciones no se cumplen.

Suponemos que tenemos un camino que consiste de al menos dos subcircuitos y comprobemosque no se cumple las restricciones (2.1). Consideremos un subcircuito que no contiene a la ciudad1, sea r el numero de etapas en este subcircuito (r ≥ 2). Ahora, sumamos todas las restricciones

Page 19: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

2.1. DEFINICION Y MODELO 11

de la forma (2.1) que incluyen arcos de este subcircuito. En el lado izquierdo obtenemos la sumade las tj del circuito, y en el lado derecho, obtenemos la suma de ti+1 tales que (i, j) sea aristadel subcircuito, como es un ciclo de r arcos, obtendremos la misma suma de vertices tj mas ry simplificando obtenemos:

0 ≥ r

que es absurdo. Luego si se cumplen las restricciones de (2.1) no puede haber subcircuitos1.Veamos cuantas restricciones son necesarias en total para modelar el TSP en los dos modelos

dados: con el primer modelo, necesitamos al menos 2n−1 − n− 1 como ruptura de subcircuitosy 2n para las primeras restricciones de llegada y salida, luego en total 2n−1 + n− 1 y en totalhabra n(n − 1) variables binarias (hemos quitado las variables xii). En el segundo modelo,podemos encontrar n2 variables (las n(n− 1) de antes junto con las n variables adicionales) y2n+ (n− 1)(n− 2) restricciones en total.

Existen casos en los que una de las formulaciones sea mas recomendable que la otra, noobstante, la formulacion de ruptura de subcircuitos, suele predominar sobre el modelo con lasnuevas variables ti.

Veamos ahora el caso del STSP . La funcion objetivo a minimizar es:

mın∑i≤j

cijxij ,

con las restricciones: ∑j∈δ(i)

xij = 2 ∀i ∈ V,

∑(i,j)∈E(W )

xij ≤ |W | − 1 W ⊆ V, 3 ≤ |W | ≤ n/2,

donde

xij ∈ {0, 1} ∀(i, j) ∈ E,

siendo

δ(i) = {e ∈ E|e = (i, j) o e = (j, i))},

E(W ) = {(i, j) ∈ E|i, j ∈W},

δ(S) = {e = (i, j) ∈ E|(i ∈ S, j /∈ S) o (i /∈ S, j ∈ S)}.

Como en el caso asimetrico, la segunda restriccion puede sustituirse por:∑(i,j)∈δ(W )

xij ≥ 2.

1Si hacemos esto en el ejemplo de la Figura 2.1, con el subcircuito {4, 5, 6}, entonces la desigualdad obtenidaserıa la suma de las tres restricciones

t5 ≥ t4 + 1 arco 4-5

t6 ≥ t5 + 1 arco 5-6

t4 ≥ t5 + 1 arco 6-4

es decir, nos quedarıat5 + t6 + t4 ≥ t4 + t5 + t6 + 3⇒ 0 ≥ 3#

.

Page 20: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

12 CAPITULO 2. TSP: MODELO Y METODOS DE RESOLUCION

2.2. Ejemplo

Sea un conjunto de 5 ciudades, cuyas distancias entre ellas vienen descritas en la tabla dela Figura 2.2. Vamos a dar el modelo a resolver para obtener un tour optimo del TSP .

Desde/Hasta Alicante Barcelona Madrid Sojuela TeruelAlicante 522 424,6 682 332

Barcelona 594,4 628,7 492 377Madrid 424,1 628,7 319 302Sojuela 680 491 321 355Teruel 319 376 305 356

Figura 2.2: Distancias entre las ciudades

Vamos a representar cada ciudad con la inicial de su nombre. Ası por ejemplo, xAB repre-senta a la arista entre Alicante y Barcelona. Notar que xij tomara el valor 1, si esta aristapertenece al tour optimo, 0 en otro caso.

Ası la funcion a minimizar es:

mınZ = 522xAB+424, 6xAM +682xAS+332xAT +594, 4xBA+628, 7xBM +492xBS+377xBT+

+424, 1xMA+682, 2xMB+319xMS+302xMT +680xSA+491xSB+321xSM+355xST +319xTA+

+376xTB + 305xTM + 356xTS

y esta sujeta a las siguientes restricciones que dividiremos en tres grupos: restricciones dellegada, restricciones de salida y ruptura de subcircuitos.

Restricciones de llegada:

xBA + xMA + xSA + xTA = 1

xAB + xMB + xSB + xTB = 1

xAM + xBM + xSM + xTM = 1

xAS + xBS + xMS + xTS = 1

xAT + xBT + xMT + xST = 1

Restricciones de salida:

xAB + xAM + xAS + xAT = 1

xBA + xBM + xBS + xBT = 1

xMA + xMB + xMS + xMT = 1

xSA + xSB + xSM + xST = 1

xTA + xTB + xTM + xTS = 1

Restricciones de ruptura de subcircuitos: en un caso general, tendrıamos que escribirtantas restricciones de rupturas de subcircuitos como posibles subconjuntos de vertices existan.En este ejemplo, como solo hay 5 ciudades, nos vale con escribir solo rupturas de subcircuitos detamano 2, pues si cogemos un tour que incluya todos los vertices, la unica forma de encontrarse

Page 21: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

2.3. METODOS DE RESOLUCION DE PROGRAMACION ENTERA 13

subcircuitos es obtener uno con dos vertices y otro de tres vertices. Por ello obtenemos solo 10ecuaciones (4 + 3 + 2 + 1 = 10):

xAB + xBA ≤ 1 xBS + xSB ≤ 1

xAM + xMA ≤ 1 xBT + xTB ≤ 1

xAS + xSA ≤ 1 xMS + xSM ≤ 1

xAT + xTA ≤ 1 xMT + xTM ≤ 1

xBM + xMB ≤ 1 xST + xTS ≤ 1

2.2.1. Otras variantes del VRP

En el TSP , suponemos que hay un unico vehıculo con capacidad suficiente para visitar unavez a cada cliente. Anadiendo otras condiciones, podemos extender el TSP a otros problemasde rutas como los que nombraremos a continuacion:

Problema de rutas de vehıculos con capacidades identicas (CVRP, Capacitated VehicleRouting Problem): encontramos varios vehıculos con la misma capacidad que parten deun nodo central (almacen). A cada uno, se le asigna una ruta de manera que en ningunmomento, la carga de cada vehıculo exceda su capacidad y que la distancia recorrida portodos los vehıculos sea mınima.

Problema con recogidas (VRPB, Vehicle Routing Problem with Backhauls): Los vehıculosno solo se van vaciando a lo largo del recorrido, sino que pueden existir clientes, para losque tengamos que hacer recogidas. En este caso, aparecen tambien nuevos problemas dellenado/vaciado del vehıculo.

Problemas de vehıculos con ventanas horarias (VRPTW, Vehicle Routing Problem withTime Windows): cada cliente tiene asociado una ventana horaria en la que puede servisitado. Aparecen enormes problemas de calculos y de factibilidad de rutas.

Problemas con multiples almacenes (VRPMD, Vehicle Routing Problem with MultipleDepots): En este caso hay varios almacenes y cada ruta puede partir y terminar en unalmacen.

Todas estas variantes del problema del viajante pueden formularse anadiendo restriccionesy variables nuevas al modelo original del TSP. Explicarlas en este trabajo supondrıa invertirmucho espacio, recurso del que no disponemos.

2.3. Metodos de resolucion de programacion entera

Aunque hemos visto que el problema del viajante responde a un modelo de programacionentera, las tecnicas generales para encontrar soluciones exactas (como ramificacion y acotaciono los planos de corte) son en general muy poco eficientes si no se les anaden ideas concretaspara resolver cada problema. Sin duda, una de las maneras mas eficientes y utilizadas paraproblemas binarios, como es el TSP, son los metodos de enumeracion implıcita, como el metodoaditivo de Balas. Sin embargo, la complejidad del TSP y el gran abanico de posibles solucionesfactibles y de caminos que tenemos que analizar y descartar para llegar a una solucion optima,hace que casos simples del problema del viajante como el ejemplo que hemos modelado antes,sean poco eficientes de resolver mediante los metodos de enumeracion implıcita.

En consecuencia, la busqueda de soluciones del TSP se limita a tres estrategias: intentarbuscar casos particulares del problema que sı permitan utilizar algoritmos polinomicos [12, §11],

Page 22: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

14 CAPITULO 2. TSP: MODELO Y METODOS DE RESOLUCION

utilizar algoritmos especıficos para los casos generales que nos proporcionen soluciones exactas(basados en ramificacion y acotacion, planos de cortes, programacion dinamica, etc.) o centrarseen la busqueda de soluciones rapidas y aceptar la posibilidad de que pueda no ser la optima(metodos heurısticos).

En los dos capıtulos siguientes, analizaremos varios de los metodos de resolucion exactospara el TPS ası como varias heurısticas.

Page 23: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

Capıtulo 3

Metodos de resolucion exactos

A lo largo de la historia, se han ido desarrollando muchos metodos exactos y variantes delos mismos capaces de dar soluciones exactas a instancias grandes del TSP en relativamentepoco tiempo. Muchas de ellas estan basadas como veremos a continuacion en los metodos deramificacion y acotacion o en los de planos de corte que son metodos de programacion linealentera.

Otro de los grandes avances que en este trabajo no desarrollaremos, fue el desarrollo porHeld y Karp [13] de un metodo basado en la programacion dinamica la cual habıa sido definidaanos antes por Bellman [1]. La idea de este metodo radica en que en un circuito optimo, trashaber recorrido un conjunto de ciudades, el recorrido que queda entre el resto de ciudades debeser tambien optimo.

A continuacion mostraremos dos metodos concretos para resolver instancias del problemadel viajante.

3.1. Metodo de ramificacion y acotacion

La mayor parte de los problemas de programacion lineal entera, se resuelven mediante elmetodo de ramificacion y acotacion (Branch and Bound en ingles) ya que para muchos pro-blemas de optimizacion es la manera mas eficiente conocida para encontrar soluciones optimasexactas. Esta tecnica permite simular la enumeracion de todas las posibles soluciones, sin tenerque considerarlas una a una. El metodo general de ramificacion y acotacion fue propuesto porLand and Doig en el ano 1960 [16] y aplicado por primera vez en el TSP por Little, Murty,Sweeney, y Karel en 1963 [17].

Como bien indica su nombre, para aplicar este metodo sobre un problema de optimizacion(pensaremos en uno de minimizacion sin perdida de generalidad), tendremos que realizar dospasos:

Ramificar (Branch): Cada conjunto de soluciones del problema, puede ser subdividido enal menos dos subconjuntos no vacıos.

Acotar(Brand): tras cada ramificacion, iremos obteniendo cotas inferiores del coste decada solucion que pertenezca a cualquiera de sus ramas.

El metodo de ramificacion y acotacion siempre encuentra una solucion optima, pero la efi-ciencia y la dificultad de implementacion del metodo depende mucho del problema que estemostratando y tambien depende del proceso de eleccion del siguiente subproblema que debemos

15

Page 24: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

16 CAPITULO 3. METODOS DE RESOLUCION EXACTOS

ramificar cuando tenemos varias posibilidades (muchas veces es necesaria una buena heurısti-ca para realizar este proceso). En el caso peor, tendrıamos que enumerar todas las posiblessoluciones.

Definicion 3.1.1. Sea PE un problema de programacion lineal entero, se llama relajacionde PE , al mismo problema cuando omitimos las restricciones de que sus variables deben serenteras.

Siempre se cumple que el valor optimo para la relajacion de un problema de maximizacion(minimizacion), es mayor (menor) al valor optimo para el problema entero correspondiente.

Observar que si tenemos un problema PE entero y de la solucion de su relajacion se obtieneun resultado con todas las variables enteras, entonces esta solucion tambien lo sera de PE .

En el caso particular del TSP, este metodo ha sido aplicado con diferentes criterios de ramifi-cacion. A continuacion explicare uno de ellos. El problema raız comienza con el modelo relajadodel TSP , refiriendonos con este nombre al modelo completo pero sin incluir las restricciones deruptura de subcircuito:

mın∑i6=j

cijxij .

sujeto a las siguientes condiciones: ∑j∈δ−(i)

xij = 1 ∀i ∈ V,

∑j∈δ+(i)

xij = 1 ∀i ∈ V,

dondeδ−(i) = {a = (j, i) ∈ A},

δ+(i) = {a = (i, j) ∈ A},

con xij ∈ {0, 1}.

Este problema en realidad lo podemos interpretar como un problema de asignacion conmatriz los pesos de cada uno de los arcos. Se puede resolver por tanto con un metodo deresolucion de problemas de asignacion como es el conocido y sencillo metodo Hungaro. Podemosencontrar una explicacion del mismo en el libro de Winston [22, p. 395-397].

Una vez resolvemos este problema relajado, la solucion puede tener subcircuitos. En el casode no encontrar ningun subcircuito, esta sera la solucion optima. En otro caso, tendremos queramificar el problema en diferentes subproblemas de mayor coste para eliminar los subcircuitosy encontrar una solucion optima. Para ello, se elige un subcircuito de k arcos de la solucion quetengamos y se definen k ramas, cada una con las restricciones del problema anterior mas la queasigna a cada una de las variables asociadas a los k arcos el valor 0. Por ejemplo, si obtenemosel subcircuito x12 = x21 = 1, dividiremos el problema en dos ramas, una con x12 = 0 y la otracon x21 = 0.

Cada una de estas ramas definira otro problema de asignacion que resolveremos de la mismamanera que antes. Notar, que una vez hemos ramificado en varios subproblemas, si en ningunode ellos hemos llegado a la solucion factible tenemos que decidir por cual de ellos vamos a seguirramificando. El criterio que seguiremos consiste en ramificar siempre el subproblema cuyo costetotal sea menor de entre todas las posibles continuaciones (no tiene por que ser un subproblemade la ultima rama que hemos ramificado).

Page 25: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

3.1. METODO DE RAMIFICACION Y ACOTACION 17

Cada vez que en alguna ramificacion obtengamos un circuito completo, esa rama ya no debevolver a ser ramificada pues sera una solucion factible. Ademas si en alguna de las ramas quetenemos se obtiene una solucion con un coste superior al de la solucion factible con menor costeencontrada hasta el momento, dicha rama no se ramificara tampoco, pues cualquier otra ramaderivada tendra un coste superior y no podremos llegar a una solucion optima por ese camino.

Notar que tendremos que resolver cada uno de los subproblemas que aun tengamos en lasramas sin ramificar hasta llegar a una solucion con coste mayor que alguna de las solucionesfactibles encontradas anteriormente, o bien a una solucion factible de coste menor o igual queesta. Veamos un ejemplo de como resolver un pequeno problema del viajante mediante el metodode ramificacion y acotacion.

Ejemplo 3.1.1. Sea una instancia del TSP formada por 7 ciudades, cuyas distancias entreellas xij vienen determinadas por la Figura 3.1:

Desde/Hasta C. 1 C. 2 C. 3 C. 4 C. 5 C. 6 C. 7

Ciudad 1 3 93 13 33 9 57

Ciudad 2 4 77 42 21 16 34

Ciudad 3 45 17 36 16 28 25

Ciudad 4 39 90 80 56 7 91

Ciudad 5 28 46 88 33 25 57

Ciudad 6 3 88 18 46 92 7

Ciudad 7 44 26 33 27 84 39

Figura 3.1: Subproblema 1

Vamos a resolver el problema de asignacion correspondiente utilizando el metodo Hungaro.Aunque podrıamos resolverlo a mano sin mucha complicacion, hemos decidido resolverlo con elprograma WINQSB para no desviarnos en la explicacion. Introduciendo la matriz del problemaobtenemos la solucion:

x12 = x21, x35 = x54 = x46 = x67 = x73 = 1, Z = 103.

Como podemos observar, este recorrido contiene dos subcircuitos:

{1− 2− 1} y {3− 5− 4− 6− 7− 3}.

representados en la Figura 3.2:

Figura 3.2: subcircuitos primer subproblema

Page 26: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

18 CAPITULO 3. METODOS DE RESOLUCION EXACTOS

Por simplicidad, hemos decidido romper el subcircuito {1− 2− 1} en dos subproblemas:

Subproblema 2: restricciones del Subproblema 1 junto con x21 = 0.

Subproblema 3: restricciones del Subproblema 1 junto con x12 = 0.

Resolveremos primero el Subproblema 2 y dejaremos el Subproblema 3 para mas tarde. Paraello vamos a resolver el mismo problema de asignacion, pero pondremos que la distancia delrecorrido de la Ciudad 2 a la Ciudad 1 es ∞ (o un numero muy grande M) para que el metodode asignacion nunca escoja x21.

El subproblema 2 quedarıa por tanto como en la Figura 3.3:

De/Hasta C. 1 C. 2 C. 3 C. 4 C. 5 C. 6 C. 7

Ciudad 1 3 93 13 33 9 57

Ciudad 2 M 77 42 21 16 34

Ciudad 3 45 17 36 16 28 25

Ciudad 4 39 90 80 56 7 91

Ciudad 5 28 46 88 33 25 57

Ciudad 6 3 88 18 46 92 7

Ciudad 7 44 26 33 27 84 39

Figura 3.3: Subproblema 2

Al resolverlo, obtenemos la siguiente solucion:

x12 = x25 = x54 = x46 = x61 = 1, x37 = x73 = 1, Z = 125.

De la misma manera resolvemos el problema 3, y continuaremos ramificando (si es necesario)por el subproblema cuyo coste sea menor. Realizando de igual manera el cambio en la matrizde costes que en paso anterior obtenemos:

x14 = x46 = x67 = x73 = x35 = x52 = x21 = 1, Z = 126.

Hemos obtenido una solucion factible, pues no contiene subcircuitos, pero puede no ser laoptima, ya que el subproblema 2, tenıa un coste inferior que Z = 126, luego tenemos que seguirramificando este subproblema, o bien hasta llegar a una solucion factible de coste menor o igualque 126, o bien hasta que obtengamos ramas con coste mayor que este valor.

Seguimos por lo tanto ramificando el subproblema 2 cuya solucion tiene dos subcircuitos:

{1− 2− 5− 4− 6− 1} y {3− 7− 3}.

De nuevo decidimos romper es subcircuito corto, {3− 7− 3}, y nos vuelven a quedar otros dossubproblemas:

Subproblema 4: restricciones del subproblema 2 junto con x37 = 0.

Subproblema 5: restricciones del subproblema 2 junto con x73 = 0.

Resolvemos ahora el subproblema 4, poniendo en la matriz de costos del subproblema dos,la entrada c37 = M con M un numero muy grande. La solucion de este nuevo poblemade asignacion es:

x14 = x46 = x67 = x73 = x32 = x25 = x51 = 1, Z = 126.

Page 27: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

3.1. METODO DE RAMIFICACION Y ACOTACION 19

Esta solucion, no tiene subcircuitos, luego es una solucion factible y ademas tiene el mismovalor objetivo que la solucion factible que habıamos encotrado anteriormente. Pero todavıano podemos afirmar que Z = 126 sea el valor optimo pues aun nos queda abierta la ramadel subproblema 5.

Solucionamos mediante el Software el problema de asignacion del subproblema 5, obte-niendo la solucion:

x12 = x25 = x51 = 1, x37 = x74 = x46 = x63, Z = 129.

Como el coste total de este caso es mayor que 126, ninguna solucion continuacion de estesubproblema podra ser optima.

Como podemos observar en la Figura 3.4, si ramificamos mas cualquiera de las hojas exis-tentes, el coste total sera mayor que Z = 126, coste de una solucion factible. Concluimospor tanto, que ambos recorridos obtenidos en el subproblema 5 y en el subproblema 3, sonsoluciones optimas del TSP propuesto.

Figura 3.4: Arbol completo tras ramificacion y acotacion

En este ejemplo, hemos visto un algoritmo muy concreto para el problema del viajantebasado en el metodo de ramificacion y acotacion. Sin embargo, existen multitud de metodosdistintos e incluso mas eficientes que, como este, nos proporcionan una solucion exacta del TSPy cuya base tambien es el de ramificacion y acotacion. Por ejemplo, podemos encontrar uno enla tesis de L. Stockdale [19, p. 39–54] o tambien en el libro de Korte y Vygen [14, p. 384–386].

Page 28: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

20 CAPITULO 3. METODOS DE RESOLUCION EXACTOS

3.2. Metodo de los planos de corte

Durante los anos 1958 y 1963, Gomory, desarrollo su metodo de los planos de corte pararesolver problemas enteros de caracter general, sin embargo, no fue el primero. Gomory [11] sebaso en la forma en la que Dantzig, Fulkerson y Johnson resolvieron una instancia especial delTSP en el ano 1954 [6].

Debemos destacar, que el algoritmo desarrollado por Gomory no se ejecuta en tiempo po-linomico, es por eso que su forma original no es muy practica a la hora de afrontar problemasde optimizacion complejos aunque en la practica, la idea de los planos de corte se utiliza muyfrecuentemente de forma satisfactoria para resolver problemas concretos. En Winston [22, p.545–548], podemos encontrar una descripcion del algoritmo de Gomory original.

Definicion 3.2.1. Un plano de corte es una restriccion lineal valida en un problema de optimi-zacion, que se anade al modelo relajado del mismo, eliminando la solucion optima del problemarelajado, pero sin eliminar ninguna solucion factible del problema original.

La idea de los planos de cortes para resolver un problema, es resolver un problema relajadomediante una tecnica de programacion lineal (metodo del Simplex) e ir anadiendo planos decorte hasta conseguir la solucion del problema relajado que pertenezca a la region de factibilidadS del problema original.

En el caso concreto del TSP, S es el conjunto de todos los circuitos que unen las n ciudadesy cada ruta, es un vector de dimension n(n− 1) en el que cada componente, toma el valor 1 siel arco correspondiente pertenece al circuito, 0 en caso contrario.

Igual que en el caso de ramificacion y acotacion, el problema relajado aquı serıa el modelocompleto pero sin incluir las rupturas de subcircuitos. A continuacion, nos encargamos de lossubcircuitos. Si ponemos las restricciones de ruptura de subtours en el problema original, nosencontrarıamos ante un coste computacional altısimo e innecesario, por eso Dantzig, Fulkerson yJohnson en su artıculo [6], introdujeron la idea de ir anadiendo las rupturas de subcircuitos segunse vaya necesitando, es decir, cuando encontremos algun subcircuito lo romperemos anadiendo larestriccion de ruptura de ese subcircuito concreto tal y como hemos explicado en la formulaciondel modelo en el Capıtulo 2.

Modificaciones de estos algoritmos se han utilizado para resolver instancias del TSP conmas de 10000 ciudades. Por supuesto, muchas ideas sofisticadas que no describiremos son nece-sarias para obtener una implementacion eficiente, en particular buenas heurısticas para detectardesigualdades violadas.

A continuacion, veremos un ejemplo de resolucion de un problema del viajante, usando elmetodo que Dantzig, Johnson y Fulkerson desarrollaron. En realidad no utilizan el metodo delsimplex directamente, sino que se basan en una modificacion del mismo para resolver proble-mas de transporte. Para entender su desarrollo, aunque no es imprescincible, es aconsejabletener algunos conocimientos basicos programacion lineal, en concreto bases, costes marginalesy algoritmo de transporte[22, §4.5 y §7.3].

Ejemplo 3.2.1. Mediante este metodo, vamos a resolver un ejercicio simetrico de 7 ciudadescuyas distancias entre sı (dij) vienen determinadas en la siguiente tabla.

Page 29: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

3.2. METODO DE LOS PLANOS DE CORTE 21

De/Hasta C. 1 C. 2 C. 3 C. 4 C. 5 C. 6 C. 7

Ciudad 1 68 57 65 144 137 110

Ciudad 2 68 50 70 95 116 131

Ciudad 3 57 50 30 88 80 85

Ciudad 4 65 70 30 105 72 57

Ciudad 5 144 95 88 105 80 130

Ciudad 6 137 116 80 72 80 68

Ciudad 7 110 131 85 57 130 68

Nuestro objetivo en un principio es solucionar el problema relajado (sin subcircuitos) que con-siste en minimizar la funcion:

D(x) =∑i<j

dijxij ,

sujeto a ∑j 6=i

xij = 2, ∀i = 1, . . . , 7.

Para ello, vamos a elegir un tour completo y sin subcircuitos al azar desde el que vamos apartir para intentar llegar al optimo. Trivialmente hemos elegido el tour 1−2−3−4−5−6−7−1.Es decir, la primera solucion basica del problema es la dada por:

x12 = x23 = x34 = x45 = x56 = x67 = x71 = 1.

El resto de valores de xij toman el valor 0.Ahora, a cada vertice le vamos a asociar una variable πi que deberemos determinar. Obser-

var, que para cualquier πi se cumple:

D(x) =∑i<j

dijxij −7∑i=1

πi

(∑j 6=i

xij − 2)

=∑i≤j

xij(dij − πi − πj) + 2

7∑i=1

πi.

Por simplificar, llamaremos δij = dij −πi−πj. En terminos de programacion lineal, corres-ponden a los costes marginales.

El siguiente paso es determinar los valores de πi, para que los valores de δij correspondientesa las variables basicas sean 0, es decir, para las variables basicas: δij = dij − πi − πj = 0, luegodij = πi + πj. En el siguiente grafico podemos ver graficamente la primera solucion basica y elsistema de ecuaciones a resolver:

Page 30: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

22 CAPITULO 3. METODOS DE RESOLUCION EXACTOS

Tenemos que resolver un sistema de 7 ecuaciones con 7 incognitas. Una forma sencilla deresolverlo, es empezando por la ecuacion 68 = π1 + π2 ir sumando y restando alternativamenteel resto de ecuaciones para calcular π1, con lo que obtenemos:

2π1 = 68− 50 + 30− 105 + 80− 68 + 110 = 65→ π1 = 32,5.

π2 = 35,5, π3 = 14,5, π4 = 15,5, π5 = 89,5, π6 = 9,5, π7 = 77,5.

Ahora que ya tenemos los valores de πi, podemos calcular el resto de δij representados enla tabla que esta a continuacion. Observar, que la ecuacion a minimizar D(x) solo puede serinferior a la actual, si introducimos a la solucion basica con valor 1 una de las aristas que tengaasociado un valor de δij ≤ 0.

dij 1 2 3 4 5 6 7 πi δij 1 2 3 4 5 6 71 68 57 65 144 137 110 32,5 1 0 + + + + 02 50 70 95 116 131 35,5 2 0 + -30 + +3 30 88 80 85 14,5 3 0 -16 + -74 105 72 57 15,5 4 0 + -365 80 130 89,5 5 0 -376 88 -9,5 6 07 77,5 7πi 32,5 35,5 14,5 15,5 89,5 -9,5 77,5

El valor mas negativo es el asociado a la variable x57. Entonces tenemos que introducirx57 = θ en la base, con θ ≥ 0. Como solo puede haber 7 aristas con valor 1, si introducimosθ = 1 tenemos que restablecer el flujo como si de un problema de transporte se tratara, lo quenos crea dos ciclos de orden 2: 1− 2− 1 y 3− 4− 3 y otro de orden 3: 5− 6− 7− 5 como vemosen las siguiente figuras:

Vamos a romper un subcircuito, hemos elegido al azar romper el de la arista x34. Para ello,anadimos la restriccion x34 ≤ 1, o lo que es equivalente, x34 + y8 = 1, y8 ≥ 0. Al anadir unarestriccion nueva, tenemos que introducir nueva variable a la base y nos conviene introducir x34por lo visto anteriormente. Como si θ = 1 encontramos subcircuitos, entonces la nueva variablede la base sera x34 = θ = 0 y obtenemos el diagrama de flujos siguiente:

Page 31: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

3.2. METODO DE LOS PLANOS DE CORTE 23

Ahora D(x) lo podemos escribir como:

D(x) =∑i<j

dijxij −7∑i=1

πi

(∑j 6=i

xij − 2)− π8(x34 − y8 − 1) =

∑i<j

δijxij + 27∑i=1

πi + π8 − π8y8,

donde

δ34 = d34 − π3 − π4 − π8, δij = dij − πi − πj para el resto de i, j con i < j.

En la figura proxima podemos ver la segunda solucion basica y las ecuaciones al poner δij = 0para las variables basicas:

Realizando el mismo procedimiento que en el anterior sistema con los vertices 5 − 6 − 7,obtenemos 2π7 = 68− 80 + 130. Los valores de πi que obtenemos, son entonces:

π1 = 51, π2 = 17, π3 = 33, π4 = 34, π5 = 71, π6 = 9, π7 = 59, π8 = −37.

Las nuevas variables δij son entonces las de la tabla:

dij 1 2 3 4 5 6 7 πi δij 1 2 3 4 5 6 71 68 57 65 144 137 110 51 1 0 -27 −20 + + 02 50 70 95 116 131 17 2 0 + + + +3 30 88 80 85 33 3 0 −16 + -74 105 72 57 34 4 0 + -365 80 130 71 5 0 06 88 9 6 07 59 7πi 51 17 33 34 71 9 59

Page 32: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

24 CAPITULO 3. METODOS DE RESOLUCION EXACTOS

Como podemos ver, el valor mas negativo corresponde a la variable x47, luego metemos estavariable a la base con valor x47 = θ. Como la variable tendrıa que entrar con valor 1, si θ = 1debemos restablecer los flujos y obtenemos el diagrama y los subcircuitos de la imagen que esta acontinuacion:

Debemos por tanto romper el subcircuito, anadiendo la restriccion x56 ≤ 1 o lo que esequivalente x56 + y9 = 1, y9 ≥ 0. y la nueva solucion basica sera la anterior junto con x47 = 0.Obtenemos entonces una nueva expresion de D(x) con nuevas πi y δij:

D(x) =∑i<j

dijxij −7∑i=1

πi

(∑j 6=i

xij − 2)− π8(x34 − y8 − 1)− π9(x56 + y9 − 1),

D(x) =∑i<j

δijxij + 27∑i=1

πi + π8 + π9 − π8y8 − π9y9,

donde

δ34 = d34−π3−π4−π8, δ56 = d56−π5−π6−π9, δij = dij−πi−πj para el resto de i, j con i < j.

En la siguiente figura podemos ver el nuevo diagrama de flujos al anadir x47 = 0 y las ecuacionesque quedan al tomar δij = 0 en las variables pertenecientes a la solucion basica.

Los nuevos valores de πi son:

π1 = 69, π2 = −1, π3 = 51, π4 = 16, π5 = 89, π6 = 27, π7 = 41, π8 = −37, π9 = −36.

Calculamos de nuevo los valores de δij representados en esta tabla:

Page 33: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

3.2. METODO DE LOS PLANOS DE CORTE 25

dij 1 2 3 4 5 6 7 πi δij 1 2 3 4 5 6 71 68 57 65 144 137 110 69 1 0 -63 −20 −19 + 02 50 70 95 116 131 -1 2 0 + + + +3 30 88 80 85 51 3 0 −52 + -74 105 72 57 16 4 0 + 05 80 130 89 5 0 06 88 27 6 07 41 7πi 69 -1 51 16 89 27 41

Sigue habiendo valores negativos, luego la distancia D(x) todavıa puede ser menor. Hacemosque entre a la base el elemento con δij mas negativo luego metemos x13 = θ. Para θ = 1,volvemos a obtener subcircuitos como podemos observar a continuacion:

Anadimos al problema por tanto la restriccion de ruptura del subcircuito pequeno:

x12 + x23 + x31 + y10 = 2, y10 ≥ 0. Como habıa subtours para θ = 1 en la solucion basica sequeda junto con las variables que ya tenıamos x13 = θ = 0.

La funcion D(x) en este punto es:

∑i<j

dijxij−7∑i=1

πi

(∑j 6=i

xij − 2)−π8(x34−y8−1)−π9(x56+y9−1)−π10(x12+x23+x31+y10−2),

D(x) =∑i<j

δijxij + 27∑i=1

πi + π8 + π9 + 2π10 − π8y8 − π9y9 − π10y10,

donde

δ34 = d34−π3−π4−π8, δ56 = d56−π5−π6−π9, δ13 = d13−π1−π3−π10, δ12 = d12−π1−π2−π10,

δ23 = d23 − π2 − π3 − π10, δij = dij − πi − πj para el resto de i, j con i < j.

Nos queda por tanto el diagrama de flujos y el sistema de ecuaciones siguiente:

Page 34: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

26 CAPITULO 3. METODOS DE RESOLUCION EXACTOS

Tras resolver el sistema obtenemos los valores:

π1 = 69, π2 = 62, π3 = 51, π4 = 16, π5 = 89, π6 = 27, π7 = 41, π8 = −37, π9 = −36, π10 = −63.

y la tabla:

dij 1 2 3 4 5 6 7 πi δij 1 2 3 4 5 6 71 68 57 65 144 137 110 69 1 0 0 −20 −19 + 02 50 70 95 116 131 62 2 0 −8 −56 + +3 30 88 80 85 51 3 0 −52 + -74 105 72 57 16 4 0 + 05 80 130 89 5 0 06 88 27 6 07 41 7πi 69 62 51 16 89 27 69

Debemos meter por lo tanto x25 = θ y restablecemos flujos como vemos en la siguientefigura. Esta vez para θ = 1 no nos quedan subcircuitos luego podemos meter a la base x25 = 1,aunque para ello tendremos que quitar una de las variables que tenıamos en la base anterior.Nos vamos a deshacer de x45 pues al restablecer los flujos nos queda que su valor es 0.

Figura 3.5: Restablecer flujo y circuito de la quinta solucion basica.

El circuito descrito por el diagrama de flujos con θ = 1 que nos queda: x13 = x34 = x47 =x76 = x65 = x52 = x21 = 1, x23 = x17 = x57 = 0, es una solucion factible del problema. Vamos

Page 35: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

3.2. METODO DE LOS PLANOS DE CORTE 27

a intentar mejorarla todavıa mas. Como no hemos anadido restricciones, D(x) no cambia conrespecto al caso anterior, pero las variables basicas si que han cambiado, lo que implica quelas ecuaciones a resolver asociadas a δij = 0 para las variables basicas han cambiado. En lasiguiente figura podemos observar como nos ha quedado el diagrama de flujos y el sistema deecuaciones:

Resolvemos el sistema y obtenemos los valores: π1 = 41, π2 = 34, π3 = 23, π4 = −12, π5 =61, π6 = −1, π7 = 69, π8 = 19, π9 = 20, π10 = −7.

A continuacion, los valores δij la podemos encontrar en la tabla:

dij 1 2 3 4 5 6 7 πi δij 1 2 3 4 5 6 71 68 57 65 144 137 110 41 1 0 + + + + 02 50 70 95 116 131 34 2 0 + 0 + +3 30 88 80 85 23 3 0 + + -74 105 72 57 -12 4 + + 05 80 130 61 5 0 06 88 -1 6 07 69 7πi 41 34 23 -12 61 -1 69

Sigue habiendo un valor negativo en la tabla. Anadimos pues a la solucion basica la variablex37 = θ. Si θ = 1, entonces el diagrama de restablecer el flujo nos queda como mostramos en laproxima figura. Como hemos encontrado subcircuitos, se pone la restriccion x12 + y11 = 1 paraeliminarlo y debe entrar x37 a la base con valor 0.

Page 36: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

28 CAPITULO 3. METODOS DE RESOLUCION EXACTOS

Ahora la ecuacion de D(x) tendra un nuevo sumando tal y como ha pasado en los casosanteriores:

D(x) =∑i<j

δijxij + 27∑i=1

πi + π8 + π9 + 2π10 + π11 − π8y8 − π9y9 − π10y10 − π11y11, (3.1)

δ12 = π1 + π2 + π10 + π11. El resto de δij no varıan con respecto al caso anterior.Resolvemos entonces el sistema que nos queda al igualar a 0 las δij correspondientes a las

variables basicas representado junto con el diagrama de flujos en la figura que mostramos acontinuacion:

Calculamos los valores a πi:

π1 = 41, π2 = 34, π3 = 16, π4 = −12, π5 = 61, π6 = −1, π7 = 69, π8 = 26, π9 = 20, π10 = 0, π11 = −7.

Ahora damos los valores de δij para la sexta solucion basica en la tabla:

dij 1 2 3 4 5 6 7 πi δij 1 2 3 4 5 6 71 68 57 65 144 137 110 41 1 0 + + + + 02 50 70 95 116 131 34 2 0 + 0 + +3 30 88 80 85 16 3 0 + + -74 105 72 57 -12 4 + + 05 80 130 61 5 0 06 88 -1 6 07 69 7πi 41 34 16 -12 61 -1 69

Todos los valores de δij son positivos, luego si en (3.1) introducimos alguna variable mascon valor 1, entonces la distancia aumentara. Las variables basicas que tenemos entonces son:

x13 = x34 = x47 = x76 = x65 = x52 = x21 = 1, x17 = x37 = x23 = x57 = 0.

El tour optimo, esta representado por las variables de esa solucion con valor 1, y es exacta-mente el de la Figura 3.5 y tiene coste D(x) = 455.

Page 37: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

Capıtulo 4

Heurısticas para el TSP

Como ya hemos explicado, un metodo heurıstico es un algoritmo que trata de resolverun problema de manera eficiente, aunque pueda suponer que no nos proporcione la solucionoptima. Hay muchas heurısticas que a lo largo de los anos se han ido desarrollando para intentarsimplificar la resolucion del TSP, como son la heurıstica del vecino mas proximo, la del arbolde expansion mınimo, la de Chistophides o la de Lin y Kernighan. A continuacion mostraremosalguna de ellas.

Nota 4.0.1. Para toda heurıstica que expliquemos, vamos a considerar que se cumple la de-sigualdad triangular entre las distancias de los vertices. Esto no es un problema, ya que aunqueen cualquier grafo esto no tiene porque ser cierto, en los casos reales en los que apliquemosheurısticas siempre se cumplira.

4.1. Algoritmo codicioso o del vecino mas proximo

Definicion 4.1.1. Sea una instancia del TSP. Llamaremos tour parcial a un camino que visitatodas las ciudades a lo sumo una vez (un tour es un camino cerrado que visita todas las ciudadesexactamente una vez).

El algoritmo codicioso (conocido normalmente por su nombre en ingles como Greedy Algo-rithm) se basa en la regla del vecino mas cercano (Nearest Neighbor Rule, NNR) y realiza lossiguientes pasos para conseguir un tour partiendo de la ciudad v1:

1. Comienza buscando la ciudad mas cercana a v1 que no se encuentre en el tour y se agregaal recorrido.

2. A partir de aquı, se busca la siguiente ciudad mas cercana a la ultima anadida al tourparcial hasta que hayamos visitado todas las ciudades.

Una vez ha llegado a la ultima ciudad, vuelve a la ciudad de origen desde el ultimo nodo.

La ventaja de este metodo es su simplicidad de entender e implementar, sin embargo, aunquepara instancias pequenas del TSP pueda obtener buenas soluciones, muchas veces obtenemostours que difieren notablemente del camino optimo.

4.2. Algoritmo del Arbol de expansion mınimo

Definicion 4.2.1. Un arbol de expansion para un conjunto de n vertices, es una coleccion den− 1 ramas que unen todos ellos sin formar ciclos.

29

Page 38: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

30 CAPITULO 4. HEURISTICAS PARA EL TSP

Tanto en esta heurıstica como en la siguiente, cuando hablemos del TSP , siempre nos vamosa referir al caso simetrico que cumpla la desigualdad triangular.

Existe una amplia variedad de algoritmos que en tiempo polinomial construyen un arbolde expansion de mınima distancia, donde la distancia total es la suma de las distancias delas ramas que lo forman. Observamos, que la solucion optima de este problema es una cotainferior para el tamano del tour optimo del TSP pues si borramos cualquier arco del caminooptimo obtenemos un arbol de expansion que tendra una distancia igual o superior a la distanciadel arbol de expansion mınimo. Veamos un metodo simple para crear un arbol de expansionmınimo, conocido como Algoritmo de Kruskal: Dado un grafo de n vertices G = (V,A) dondecada arista tiene asociado un peso positivo, realizaremos los siguientes pasos:

1. Ordenamos de manera no decreciente, todos las aristas en funcion de su peso.

2. Elegimos la arista de menor peso, comprueba si se forma algun ciclo con el arbol formadohasta el momento. Si no se crean ciclos, anadelo al arbol, en caso contrario descarta esaarista.

3. Repite el paso 2 con la arista que sigue en funcion del orden establecido en el paso 1 hastaque haya n− 1 aristas en el arbol

Observar que la longitud del arbol de expansion mınimo es menor que la del TSP, ya que siquitamos una arista a cualquier tour, obtenemos un arbol de expansion.

Una vez hemos obtenido el arbol de expansion mınimo, vamos a utilizar el metodo depthfirst search para visitar todas las ciudades y volver a la de origen. Este algoritmo consiste encomenzando en una hoja del arbol, aplicar: si nos encontramos en un vertice y hay algunarama de las que se encuentren en el que todavıa no ha sido recorrida, atravesarla para llegara un nuevo vertice. Si llegamos a un vertice en el que todas sus ramas han sido ya recorridas,retroceder al vertice anterior. Tenemos que realizar este metodo, hasta volver otra vez al verticeorigen. Con este metodo se verifica que todos los vertices son visitados y cada una de las ramasdel arbol mınimo, se visita exactamente dos veces. Veamos un ejemplo del depth first search:

Sea la Figura 4.1(a) un arbol mınimo de una instancia de un TSP. Aplicamos el metododepth first search, y obtenemos la secuencia siguiente, representada en le Figura 4.1(b):

I → H → G→ E → G→ H → F → D → A→ D → F → C → F →

→ B → F → H → I.

(a) (b)

Figura 4.1: arbol de expansion mınimo y depth first search

Page 39: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

4.2. ALGORITMO DEL ARBOL DE EXPANSION MINIMO 31

La distancia recorrida en este caso es dos veces la distancia del arbol mınimo, pero elproblema es que las ciudades se visitan mas de una vez. Como hemos supuesto que la distanciaentre ciudades en el arbol mınimo cumple la desigualdad triangular, entonces podemos evitarrepeticiones de ciudades introduciendo “atajos”, es decir, realizamos el depth first search, perocada vez que retrocedamos a una ciudad que ya fue visitada, la salta y va directamente a laproxima por la que no hayamos pasado. En el recorrido anterior reemplazarıamos:

E → G→ H → F por E → F,

A→ D → F → C por A→ C,

C → F → B por C → B,

B → F → H → I por B → I

y obtendrıamos un tour, de recorrido igual o menor que la obtenida por el depth first serch, esdecir, estarıa acotada superiormente por el doble del recorrido del spaning tree mınimo. En laFigura 4.2 observamos el recorrido final.

Figura 4.2: Recorrido obtenido por el metodo del arbol de expansion mınimo

Veamos esta heurıstica aplicada a un caso concreto del TSP .

Ejemplo 4.2.1. Sea una instancia del TSP simetrico y que cumple la desigualdad triangularcuyos costes entre sus ciudades viene determinado en el Ejemplo 3.2.1.

Ahora vamos a calcular el arbol de expansion mınimo. Realizando el algoritmo de Kruskal,obtenemos el arbol de la Figura 4.3 cuyo coste total es de 342 al que tambien como se ve en lafigura hemos aplicado el metodo de Depth First Serch y por tanto se han doblado sus aristas:

Figura 4.3: Arbol de expansion mınimo

Page 40: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

32 CAPITULO 4. HEURISTICAS PARA EL TSP

Ahora vamos a utilizar la tecnica de los atajos, comenzando desde el nodo 2. El primer atajocorrespondiente es romper el ciclo: 2 → 3 → 1 → 3. Para ello como se cumple la desigualdadtriangular, podemos saltar desde 1 directamente a 4: 2→ 3→ 1→ 4. Ocurre lo mismo una vezllegamos al nodo 5 donde tendremos que usar un atajo para volver al nodo origen 2. Podemosver en la Figura 4.4 la solucion que obtenemos al finalizar esta heurıstica.

Figura 4.4: Circuito tras aplicar la heurıstica del arbol de expansion mınimo

La distancia total recorrida mediante este circuito es de 472. Vemos que efectivamente esinferior al doble del tamano del arbol mınimo. Ademas, el resultado optimo obtenido en elCapıtulo 3 es de 455 luego la solucion obtenida mediante esta heurıstica puede considerarsebuena.

4.3. Algoritmo de Christofides

Las ideas del algoritmo del arbol de expansion mınimo fueron extendidas por Christofides[4] para lograr un resultado mejor para el problema del viajante simetrico. En ella se combinanlas nociones de grafo euleriano, tour euleriano y matching.

Un grafo euleriano, es un grafo conexo, en el que todo vertice tiene grado par, es decir es ungrafo que tiene un tour euleriano (ciclo que pasa por cada rama solo una vez). Ya nos hemosreferido con anterioridad a este tipo de estructuras cuando hemos introducido el problema delos puentes de Koningsberg y los problemas de rutas por arcos.

Todo empieza por darse cuenta de que si tenemos una instancia cualquiera del TSP, calcula-mos su arbol mınimo y duplicamos sus ramas, obtendremos un grafo euleriano (esta es la razonpor la que la heurıstica del arbol de expansion mınimo funciona) que podemos convertir en uncamino del TSP usando “atajos” como hemos explicado en el metodo anterior. Esto sugiereque, si queremos encontrar mejores recorridos del problema del viajante, tenemos que buscares una mejor forma de generar grafos eulerianos que conecten todas las ciudades.

Uno de los mejores metodos para realizar esto fue ideado por Christofides y se llama matchingde mınimo peso.

Dado un numero par de ciudades, un matching es un conjunto de arcos, tal que cada ciudades extremo de exactamente uno solo de estos arcos. El de mınimo peso, es aquel cuyo peso totalde las ramas sea mınimo. Esta clase de matching pueden encontrarse en tiempo O(n3).

Page 41: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

4.3. ALGORITMO DE CHRISTOFIDES 33

El algoritmo de Christopides tiene las siguientes etapas, para un grafo G instancia del TSP :

1. Crear un arbol de expansion mınimo T de G.

2. Sea I el conjunto de vertices de grado impar del arbol T , encontrar un matching demınimo peso M en el grafo completo sobre los vertices de I.

3. Combinar las aristas de M y T para crear un grafo H. Este grafo tendra todos sus verticesde orden par, luego sera un grafo euleriano.

4. Encontrar un tour euleriano de H.

5. Utilizar el metodo de los atajos (shortcutting) para evitar repetir nodos

Podemos ver un ejemplo paso a paso en la Figura 4.5

Figura 4.5: Ejecucion del algoritmo de Cristophides

En [4] podemos encontrar una demostracion realizada por el propio Christofides de que eltour optimo que encontramos usando esta heurıstica debe ser inferior a 3/2 del coste optimo ytambien de que esta construccion tiene una complejidad de O(n3).

A continuacion, mostramos el mismo ejemplo del TSP que hemos usado para la heurısticadel arbol de expansion mınimo pero usando la heurıstica de Christofides.

Ejemplo 4.3.1. Sea la matriz de costes del Ejemplo 3.2.1. Entonces vamos a buscar un Mat-ching de mınimo peso para los vertices de orden impar del arbol de expansion mınimo (imagende la izquierda de la Figura 4.3). Como podemos ver, los vertices de grado impar son: 1, 2, 3 y 5.Vamos a necesitar por tanto dos aristas que los unan dos a dos, para encontrar el Matchingde mınimo peso. Encontramos que el mınimo se obtiene al anadir las aristas 1 − 3 y 2 − 5. Acontinuacion buscamos un tour Euleriano. En la Figura 4.6 podemos ver ambos resultados.

Figura 4.6: Matching

Page 42: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

34 CAPITULO 4. HEURISTICAS PARA EL TSP

Curiosamente, si ahora aplicamos otra vez el metodo de los atajos, nos vuelve a quedar elmismo resultado que con la heurıstica del arbol mınimo (Figura 4.4). El coste de este circuitoera de 472, que como podemos ver es inferior a 3/2 ∗ 455.

En esta memoria, solo tenemos espacio para ver estas tres heurısticas ya que hablar y explicarla gran variedad de heurısticas existentes para el problema del viajante podrıan ocuparnosotra memoria completa. Si se tiene interes por conocer otras heurısticas de mayor complejidadutilizadas para resolver instancias del TSP puede consultar la heurıstica de Lin y Kernigan [18]o las heurısticas de intercambio definidas por Flood [8] entre muchas otras.

Page 43: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

Capıtulo 5

TSP es NP-Duro

Habitualmente, cuando se habla del problema del viajante, siempre se hace referencia a sudificultad de resolucion, pero lo cierto es, que aunque todavıa no tengamos un algoritmo queresuelva toda instancia del TSP en un tiempo razonable, tampoco somos capaces de afirmar queeste algoritmo no exista. Lo que sı podemos afirmar, es que el TSP siempre tiene solucion puespodremos analizar todas las posibles alternativas y quedarnos con la mejor. El problema de estemetodo radica en que el numero de ciclos a analizar aumenta de manera estrepitosa conformeagrandamos el problema, ya que el numero de posibles rutas a analizar en un problema con nnodos asciende hasta (n− 1)!.

No fue hasta el ano 1962, cuando M. Held y R. Karp [13] descubrieron el algoritmo basadoen programacion dinamica mencionado en el Capıtulo 3 y de orden n22n, que mejoro significati-vamente la eficiencia a la hora de ejecutar un algoritmo solido para resolver cualquier instanciade tamano n del problema del viajante. No obstante, si aumentamos relativamente el numerode ciudades, este algoritmo tampoco es capaz de calcular el optimo. En estos anos, a la par queiban apareciendo estos problemas, surgio tambien la pregunta, ¿Cuando consideramos que unalgoritmo es eficiente?. Fue el matematico J. Edmonds en 1965 [7] quien razono una respuestacuando determino un propiedad para conocer la eficiencia de un algoritmo, que consiste en de-mostrar que el tiempo maximo para resolver un problema de tamano n con este algoritmo debeser Knc con K, c constantes. Generalmente se habla de algoritmos O(nc), englobados todosellos con el nombre de algoritmos de tiempo polinomico.

En este capıtulo vamos a tratar la existencia o no de uno de estos algoritmos para el pro-blema del viajante y la clasificacion de este problema en funcion de su complejidad. Para ello,veremos una de las cuestiones mas estudiadas de la teorıa de la complejidad, que consiste con-cretamente en determinar si un determinado problema pertenece alguno de los dos grupos deproblemas P (Polinomico) y NP (No-determinıstico Polinomico) en funcion de si conocemos unalgoritmo eficiente para el mismo o no (veremos con mayor detenimiento las definiciones de P yNP a lo largo del capıtulo). Este hecho que a simple vista puede no parecer tan complicado, hasido y todavıa es, una de las grandes cuestiones de la computacion y la teorıa de la complejidad.Todavıa no se sabe si en realidad P y NP coinciden, argumento que ha creado mucha contro-versia a matematicos ampliamente reconocidos y que han trabajado en este campo, muchos delos cuales se centraron en el problema del viajante pues es posiblemente el mas representativode todos estos problemas.

Esta conjetura de descubrir si P=NP ha adquirido tal relevancia que el Instituto Clayde Matematicas ofrece un millon de dolares al creador de un algoritmo en P para resolver

35

Page 44: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

36 CAPITULO 5. TSP ES NP-DURO

el problema del viajante, o al que por el contrario demuestre la no existencia del mismo(www.claymath.org/millennium-problems/p-vs-np-problem).

Otro resultado muy importante relacionado con este tema que veremos procede de un artıcu-lo publicado por S.Cook en (1971) [5], en el que prueba que muchos problemas de decision consi-derados “difıciles o no eficientes”, son computacionalmente equivalentes. A estos problemas losllamaremos NP -Completos y tienen la caracterıstica de que cualquier problema de NP puedetransformarse en un proceso de tiempo polinomico en el. Ası, cualquier metodo que resuelvaun problema NP -Completo, podra resolver mediante esta transformacion cualquier problemade NP.

Cuando ya no solo hablamos de problemas de decision sino tambien de optimizacion, apa-recera la nocion de NP -Duro y veremos que el TSP es uno de ellos.

La estructura que seguiremos es la siguiente (organizacion similar a la encontrada en loslibros de Garey y Johnson [10] y Korte y Vygen [14]). Primero usamos maquinas de Turingpara describir los conjuntos de problemas de decision P y NP y daremos definiremos tambienlos problemas NP -Completos. A continuacion, precedemos a demostrar el teorema de Cook[5] que afirma que el problema de satisfabilidad es NP -Completo. Con este resultado seremoscapaces de probar que el problema 3-SAT y el problema de los ciclos hamiltonianos son tambienNP -Completos, idea necesaria que utilizaremos para concluir que el problema del viajante esNP -Duro, es decir, que todo problema en NP se transforma en un tiempo polinomico en elproblema del viajante.

5.1. Maquinas de Turing

En esta seccion, vamos a ver un modelo de computacion simple, la maquina de Turing. Todoalgoritmo en este trabajo descrito se puede escribir mediante un proceso de tiempo polinomico,como una maquina de Turing; lo que nos va a permitir expandir los conceptos afirmados paralas maquinas de Turing a cualquiera de estos algoritmos.

Antes de definir propiamente una maquina de Turing, necesitamos una serie de conceptosprevios que presentamos a continuacion:

Definicion 5.1.1. Llamaremos alfabeto o abecedario a un conjunto A finito de al menos doselementos y que no contiene al sımbolo reservado t (que sera utilizado para los espacios enblanco).

En un alfabeto, cada elemento de An, n ∈ N ∪ {0} representa una cadena formada por nelementos del alfabeto A.

Nota 5.1.1. A0 representa la cadena vacıa.

Para cada alfabeto A, denotamos A∗ =⋃

n∈N∪{0}An al conjunto de todas las posibles cadenas

finitas formadas por los elementos del alfabeto A.

Definicion 5.1.2. A un subconjunto X ⊆ A∗ se le denomina lenguaje sobre A.A cada uno de los elementos de un lenguaje X se le llama palabra.

Nota 5.1.2. Muchas veces, trabajamos con el alfabeto binario A = {0, 1} y el conjunto {0, 1}∗de todas las posibles cadenas binarias.

Ejemplo 5.1.1. Un grafo G puede ser descrito mediante un lenguaje en el que cada verticesea una palabra del lenguaje, y cada arista entre vertices se exprese mediante parejas de losvertices que une, por ejemplo: si tenemos dos vertices(V 1, V 2) y una arista entre ellos (V 1 −V 2), podrıamos describir el grafo como: [V 1V 2V 1 − V 2] donde el alfabeto tiene que tener loselementos {V, 0, 1, . . . , 9,−}.

Page 45: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

5.1. MAQUINAS DE TURING 37

5.1.1. Descripcion de una maquina de Turing

En esta seccion nos centraremos en las maquinas de Turing de una cinta para un determinadoalfabeto A

Definicion 5.1.3. Sea A un alfabeto, y A := A ∪ {t}. Una maquina de Turing de una cintaen A se define por la funcion:

φ : {0, . . . , N} ×A→ {−1, . . . , N} ×A× {−1, 0, 1} (5.1)

Para un cierto N ∈ N ∪ {0}.

Basicamente, una maquina de Turing esta formada por una cinta de infinitas celdas en lasque podemos encontrar una secuencia de elementos de A. En esta cinta se encuentra escrita lacadena x ∈ A∗ que queremos computar la cual es completada por espacios en blanco t hacia laizquierda y hacia la derecha para garantizar que la cinta es infinita. Ademas, existe una cabezalectora/escritora (pues es capaz de leer y escribir una de estas celdas por operacion) y puedemoverse (avanzar o retroceder una celda, o quedarse en esa posicion) y por ultimo, un conjuntode instrucciones denotadas por numeros del conjunto {−1, . . . , N}.

Graficamente podemos verla ası:

Figura 5.1: Ejemplo de cinta de Turing

Ası pues, analizando estos tres elementos, podemos describir el significado de las entradasy salidas de la funcion (5.1), computando una cadena x ∈ A∗ , que se ejecutara cada vez que lacabeza lectora lea una nueva celda.

φ : {0, . . . , N} ×A→ {−1, . . . , N} ×A× {−1, 0, 1}

(I, a) 7−→ φ(I, a) = (I, a, b)

Cada Instruccion I ∈ {0, . . . , N} tiene un comportamiento en funcion del elemento a quees el valor de la celda en la que esta posicionada la cabeza lectora. Este comportamiento tienetres sencillos pasos:

La primera salida: I es el numero de la instruccion que se ejecutara en la siguiente compu-tacion.

La segunda implica sobrescribir por el elemento a, el elemento de la celda en la que seencuentra la cabecera (si queremos dejar el mismo elemento, no tenemos mas que escribireste en la celda).

b ∈ {−1, 0, 1}, manda avanzar una casilla, no cambiar de posicion o retroceder una celdarespectivamente a la cabeza lectora.

Page 46: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

38 CAPITULO 5. TSP ES NP-DURO

La instruccion I = −1 es la llamada instruccion de parada que indica el final de la secuenciade la computacion.

En un principio, la secuencia comienza en la posicion 1 de la cinta y ejecuta la instruccion0, y consiste en computar la funcion φ hasta llegar a la instruccion de parada I = −1. Lasalida de la maquina de Turing definida por la funcion φ con entrada la cadena x ∈ A se llamaOutput(φ, x) y es la cadena que queda en la cinta, despues de llegar a la instruccion de paradaempezando desde la posicion 1, hasta encontrar el primer t.

Si esta secuencia es infinita, es decir nunca llega a la instruccion de parada, decimos quetime(φ, x) :=∞ y que Output(φ, x) es indefinida.

Nota 5.1.3. Muchas veces denotamos la computacion de φ para una entrada x mediante φ(i) =(n(i), s(i), π(i))i=0,1,... donde:

n(i) es la instruccion a ejecutar en el paso i.

s(i) estado de la cinta en el paso i.

π(i) posicion de la cabeza lectora en el paso i.

Vamos a ver un ejemplo concreto de una maquina de Turing:

Ejemplo 5.1.2. Vamos a realizar la operacion que acepte por entrada un numero natural ncodificado en binario y nos devuelva el numero mas 1 (n+ 1).

Para ello, tenemos que partir de la siguiente idea: Si el numero codificado termina en 0, en-tonces ponemos en el bit menos significativo (el que esta mas a la derecha) un 1 y ya habrıamosterminado, pero si por el contrario encontramos un 1, entonces tendremos que poner 0 en esebit con la consecuencia de que obtenemos un acarreo. Tendremos que sumar este acarreo, al bitinmediatamente anterior y seguiremos teniendo acarreo igual a 1 mientras que no lleguemos aun bit que estaba a cero en la entrada original. Por ejemplo, si la entrada es 1011, el procesoserıa (denotamos al acarreo con la letra C, de Carry en ingles):

1011→ 1010 C = 1→ 1001 C = 1→ 1100 C = 0→ STOP.

Nos falta de considerar tambien el caso en el que la entrada sea todo 1 (es decir un numerode la forma 2n − 1, n ∈ Z+), pues entonces tendremos que poner todos los bits a cero exceptoel primero y anadir un bit extra a la derecha con valor 0, esto es el caso, por ejemplo deOutput(φ, 111) = 1000.

Para esto, vamos a necesitar 4 instrucciones y el lenguaje sera el binario con el sımbolo delblanco X = {0, 1,t}.

La funcion φ sera por tanto la siguiente:

φ : {0, . . . , 3} × {0, 1,t} → {−1, . . . , 3} × {0, 1,t} × {−1, 0, 1}

y las instrucciones en funcion del elemento que encontremos seran:Instruccion 0:

φ(0, 0) = (0, 0, 1) φ(0, 1) = (0, 1, 1) φ(0,t) = (1,t,−1).

Con la instruccion 0, avanzamos hasta el final del numero, nos colocamos en el ultimo bit ypasamos a la instruccion 1.

Instruccion 1:

φ(1, 0) = (−1, 1, 0) φ(1, 1) = (1, 0,−1) φ(1,t) = (2,t, 1).

Page 47: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

5.2. CLASES P Y NP 39

Aquı realizamos lo explicado anteriormente, si encontramos un 0, lo ponemos a 1 y hemosterminado. Si encontramos un 1 tendremos que ponerlo a 0 y continuar el proceso con losdıgitos de su izquierda hasta o bien encontrar un 0, entonces paramos, o hasta que llegamos alsımbolo t, lo que implica que todos los bits estaban a 1 y tenemos que realizar las instrucciones2 y 3.

Instruccion 2: coloca un 1 en el primer bit (que es en el que se encuentra la cabeza lectorasi llega a esta instruccion y en el que solo puede haber un 0, y cambia a la instruccion 3.

φ(2, 0) = (3, 1, 1).

Instruccion 3: avanza hasta el final de la cadena buscando t y cuando ha llegado a este sımbolo,pone en esa posicion un cero y termina):

φ(3, 0) = (3, 0, 1) φ(3,t) = (−1, 0, 0).

Algunos valores de φ no estan incluidos, pues en ninguna ejecucion llegaremos a ese caso.Ademas, el tiempo de ejecucion time(φ, x) ≤ 3 size(x) + 3, luego estamos ante una maquina deTuring de tiempo polinomico.

Veamos un caso concreto de la computacion de φ: para la entrada anterior x = 1011,obtenemos la secuencia φ(i) = (n(i), s(i), π(i))i=0,1,...:

i = 0 φ(0) = (0, [. . . t 1011 t . . .], 1) i = 4 φ(4) = (0, [. . . t 1011 t . . .], 5)

i = 1 φ(1) = (0, [. . . t 1011 t . . .], 2) i = 5 φ(5) = (1, [. . . t 1011 t . . .], 4)

i = 2 φ(2) = (0, [. . . t 1011 t . . .], 3) i = 6 φ(6) = (1, [. . . t 1010 t . . .], 3)

i = 3 φ(3) = (0, [. . . t 1011 t . . .], 4) i = 7 φ(7) = (1, [. . . t 1000 t . . .], 2)

El siguiente paso, ya hemos llegado a la instruccion −1:

i = 8 φ(8) = (−1, [. . . t 1100 t . . .], 2).

Luego ya hemos terminado y nos queda en la cinta la solucion, comenzando desde la posicion1 hasta el primer t: Output(Φ, x) = 1100.

Nota 5.1.4. Size(x) representa el numero de elementos que tiene la palabra x ∈ X.

Definicion 5.1.4. Sea A un alfabeto, X,Y ⊆ A∗ dos lenguajes, f : X → Y , una funcion. Seaφ una maquina de Turing con alfabeto A, entonces, se dice que φ computa f si:

time(φ, x) <∞ y Output(φ, x) = f(x) ∀x ∈ X.

Ademas si existe p polinomio tal que time(φ, x) < p(size(x)) ∀x ∈ X, entonces se dice que φes una maquina de Turing polinomica.

Nota 5.1.5. En el ejemplo anterior, podemos decir que φ computa la funcion f(n) = n+1, n ∈ N.

5.2. Clases P y NP

Vamos a utilizar lo visto con maquinas de Turing para definir conceptos de la teorıa deCompletitud-NP para los llamados problemas de decision.

Page 48: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

40 CAPITULO 5. TSP ES NP-DURO

Definicion 5.2.1. Sea X un lenguaje, Y ⊆ X, un problema de decision es un algoritmo(maquina de Turing) que computa la funcion:

f : X → [0, 1]

tal quef(x) = 1 cuando x ∈ Y

f(x) = 0 cuando x ∈ X \ Y

Con esta funcion, podremos determinar que elementos x ∈ X pertenecen al subconjuntoY ⊆ X.

Nota 5.2.1. A los elementos y ∈ Y (Y de “Yes” en ingles) se les llama sı-instancias.

Definicion 5.2.2. La clase de todos los problema de decision, para los que se conoce unalgoritmo que lo resuelve en tiempo polinomico, se denomina P.

Antes de definir formalmente un problema NP, vamos a ver de manera intuitiva un ejemplo.

Ejemplo 5.2.1. Consideramos el problema del viajante, en el que conocemos un conjunto deciudades, y las distancias entre cada una de ellas. Sea L ∈ R+. ¿Existe algun recorrido quepase por todas las ciudades, cuya longitud total sea inferior a L? No hay ningun algoritmoque resuelva este problema en tiempo polinomico, sin embargo, si suponemos en una instanciaun recorrido concreto, sı que podrıamos determinar mediante un algoritmo polinomico si estecamino es efectivamente un recorrido que pase por todas las ciudades y si la longitud total esmenor que L o no.

Definicion 5.2.3. Un problema de decision P = (X,Y ) pertenece a NP si existe un polinomiop y otro problema de decision P ′ = (X ′, Y ′) en P donde,

X ′ := {x#c | x ∈ X, c ∈ {0, 1}bp(size(x))c}

tal que

Y := {y ∈ X | ∃c ∈ {0, 1}bp(size(y))c con y#c ∈ Y ′}

Aquı, a la cadena c con y#c ∈ Y ′ se le llama certificado de y (ya que es un caso en el quey ∈ Y , es decir, es una sı-instancia del problema de decision original).

Nota 5.2.2. Con y#c nos referimos a la concatenacion de y, el sımbolo # y la cadena c.

Otra forma de definir NP, es en funcion de los llamados algoritmos no-determinısticos. Estosalgoritmos constan de dos etapas:

Etapa de conjetura: Dada una instancia (x), elegimos un certificado c (en el ejemploanterior, serıa un cierto recorrido entre los vertices). Se supone, que la etapa de conjeturaes un algoritmo “magico” que va explorando todas las posibles opciones, recorrido entrelos vertices en nuestro ejemplo, y que no consume recursos para ello.

Etapa de comprobacion: Ejecutamos un algoritmo determinıstico con entradas (x, c) quecompruebe si el certificado c verifica que x es una sı-instancia devolviendo como salida 1(en el ejemplo anterior, que pase por todas las ciudades y su longitud sea menor que lacota dada).

Definicion 5.2.4. Decimos que un algoritmo no determinıstico resuelve un problema dedecision P = (X,Y ) si ∀x ∈ X instancia, se cumple:

Page 49: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

5.2. CLASES P Y NP 41

• Si x ∈ Y : existe un certificado c para el cual la etapa de comprobacion con (x, c)devolvera 1 (sı).

• Si x /∈ Y : no existe ningun certificado c para el cual la etapa de comprobacion con(x, c) devuelva 1.

Definicion 5.2.5. Un algoritmo no-determinıstico que resuelve un problema de decision P =(X,Y ) se dice que opera en tiempo polinomico si existe un polinomio p para el cual, ∀x ∈Y , existe c certificado tal que la etapa de comprobacion devuelve 1 en un tiempo inferior ap(longitud(x)).

Nota 5.2.3. La clase NP es la clase de todos los problemas de decision P = (X,Y ) que puedenser resueltos en tiempo polinomico mediante algoritmos no determinısticos.

Veamos dos ejemplos de problemas en NP.

Proposicion 5.2.1. El problema de decidir si un grafo posee ciclos hamiltonianos o no, perte-nece a NP.

Demostracion. Sea G una sı-instancia (es decir un grafo con un ciclo hamiltoniano), entoncestomamos como certificado c uno de estos circuitos (Etapa de conjetura, consiste en encontrarcada uno de los circuitos del grafo, suponiendo como hemos dicho antes, que no consumerecursos). El problema ahora se centra en comprobar (estado de comprobacion) si un conjunto dearistas es un circuito hamiltoniano del grafo dado, lo que se puede realizar en tiempo polinomico.

Proposicion 5.2.2. P ⊆ NP

Demostracion. Sea P ∈ P, si elegimos el polinomio p = 0, entonces c ∈ {0, 1}b0c, luego unalgoritmo no determinıstico en la etapa de comprobacion para P simplemente elimina el ultimosigno (#) de la entrada x# y aplica el algoritmo determinıstico de P.

5.2.1. Transformaciones polinomicas y Completitud NP

Si P 6= NP, entonces sea un problema P ∈ NP, nos interesa deducir, si ademas P ∈ P o siP ∈ NP–P. Pero como no esta demostrado que P 6= NP, nos centraremos en demostrar si P esNP -Completo. Un problema Completo P cumple, como veremos a continuacion, que cualquierproblema de NP se puede transformar polinomicamente en P, esto implica que si encontramosun algoritmo de resolucion polinomico para un problema NP -Completo, podrıamos resolveren tiempo polinomico cualquier problema de NP a traves de su transformacion y quedarıademostrado que P=NP. O lo que es equivalente, un problema NP -Completo puede ser resueltoen tiempo polinomico si y solo si P=NP.

Los problemas NP -Completos se consideran los problemas en NP de mayor complejidad.Profundicemos un poco mas en la teorıa de la NP -Completitud a traves de los siguientes

resultados.

Definicion 5.2.6. Sean P1 = (X1, Y1), P2 = (X2, Y2) dos problemas de decision, una funcion

f : X1 → X2

se dice transformacion polinomica, si cumple:

1. Existe un algoritmo determinıstico de tiempo polinomico que computa f.

2. Para cada x ∈ X1, x ∈ Y1 si y solamente si f(x) ∈ Y2.

Page 50: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

42 CAPITULO 5. TSP ES NP-DURO

Si existe una transformacion polinomica de P1 a P2, lo denotaremos como P1 ∝ P2.

Es facil de observar de la propia definicion de transformacion polinomica el siguiente lema:

Lema 5.2.1. Si P1 ∝ P2 se verifica: si P2 ∈ P, entonces P1 ∈ P.

Definicion 5.2.7. Un problema de decision P = (X,Y ) ∈ NP se dice NP -Completo si ∀P ′ ∈NP, entonces P ′ ∝ P.

Lema 5.2.2. Si P1,P2 ∈ NP, P1 es NP-Completo y P1 ∝ P2, entonces P2 es NP-Completo.

Nota 5.2.4. Este lema previo, nos va a permitir probar que muchos problemas son NP -Completos,mediante la busqueda de transformaciones polinomicas.

5.3. El teorema de Cook

El primer problema NP Completo, fue el llamado problema de satisfactibilidad (SAT) quedescribiremos a continuacion.

Definicion 5.3.1. Sea U = {u1, u2, . . . , um} conjunto de variables booleanas. Se llama corres-pondencia de verdad para U, a una funcion T : U → {true, false}.

Si T (u) = true entonces decimos que u es verdad con respecto a T. En caso contrario,decimos que u es falsa.

Sea u ∈ U , entonces u, u son literales de U . El literal u es cierto con respecto a T si y solosi, la variable u es cierta con respecto a T (es decir, T (u) = true) y u es cierto, si y solo siT (u) = false.

Una clausula sobre U es un conjunto de literales de U tal que representa la disyuncion delos literales, es decir, es satisfecha por una correspondencia de verdad T si y solo si, al menosuno de sus miembros es cierto bajo T .

Definicion 5.3.2. Una coleccion C de clausulas sobre U es satisfactible si y solo si existealguna correspondecia de verdad para U que satisface todas y cada una de las clausulas de C.

Estos conceptos nos permiten mostrar el problema de satisfabilidad (SAT):

Sea U un conjunto de variables, y C una coleccion de clausulas sobre U . ¿Existe algunacorrespondecia de verdad que satisfaga C?

Ejemplo 5.3.1. Sea U = {u1, u2}, entonces C1 = {{u1, u2}, {u1, u2}}, es una instancia satis-factible del problema SAT, pues por ejemplo T (u1) = T (u2) = true satisface C1, sin embargopara C2 = {{u1, u2}{u1, u2}{u1}} no existe ninguna correspondencia de verdad que la satisfaga,luego C2 es no satisfactible.

Teorema 5.3.1 (Teorema de Cook).El problema de satisfabilidad (SAT) es NP-Completo.

Demostracion. Veamos primero que SAT pertenece a NP.Una sı-instancia del problema SAT, es por definicion, aquella para la que existe una co-

rrespondencia de verdad que la satisfaga, por lo tanto si tomamos esta correspondencia comocertificado para el proceso de comprobacion, podremos determinar en tiempo polinomico queefectivamente es una sı-instancia.

Page 51: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

5.3. EL TEOREMA DE COOK 43

Sea ahora P = (X,Y ) un problema generico en NP. Veamos que P se transforma polinomi-camente en SAT. Para ello, encontraremos la transformacion que cumpla la definicion (5.2.6).

Por la definicion (5.2.3) existe un polinomio p y otro problema de decision P ′ = (X ′, Y ′) enP donde,

X ′ := {x#c | x ∈ X, c ∈ {0, 1}bp(size(x))c},

Y := {y ∈ X | ∃c ∈ {0, 1}bp(size(y))c con y#c ∈ Y ′}.

Sea ahoraφ : {0, . . . , N} ×A→ {−1, . . . , N} ×A× {−1, 0, 1}

la maquina de Turing de P ′ con alfabeto A y A := A ∪ {t}. Sea q un polinomio tal quetime(φ, x#c) ≤ Q ∀x#c ∈ X ′ con Q = q(size(x#c)) y size(x#c) = size(x) + 1 + bp(size(x))c.Notar que Q es una cota superior de la longitud de cualquier computacion de φ para cualquierx#c con c ∈ {0, 1}bp(size(x))c.

Ahora construiremos una coleccion de clausulas Z(x) sobre un conjunto V(x) de variablesbooleanas para cada x ∈ X, que cumpla que Z(x) es satisfactible si y solo si x ∈ Y (posterior-mente describiremos el significado de cada una de ellas).

Construimos V(x):

- Una variable vijσ para cada 0 ≤ i ≤ Q,−Q ≤ j ≤ Q y σ ∈ A..

- Una variable wijn para cada 0 ≤ i ≤ Q,−Q ≤ j ≤ Q y − 1 ≤ n ≤ N.

Construimos ahora Z(x), que va a contener las siguientes clausulas:

- Vij := {vijσ | σ ∈ A} para cada 0 ≤ i ≤ Q,−Q ≤ j ≤ Q.

- Vijστ := {vijσ, vijτ} para cada 0 ≤ i ≤ Q,−Q ≤ j ≤ Q y σ, τ ∈ A con σ 6= τ.

- Wi := {wijn | −Q ≤ j ≤ Q,−1 ≤ n ≤ N} para 0 ≤ i ≤ Q.

- Wijnj′n′ := {wijn, wij′n′} para 0 ≤ i ≤ Q,−Q ≤ j, j′ ≤ Q y −1 ≤ n, n′ ≤ N con(j, n) 6= (j′, n′).

A partir de aquı, las clausulas de Z(x) las distinguiremos en funcion de la ejecucion delalgoritmo φ, computacion que explicaremos mas adelante:

Clausulas de comienzo de algoritmo:

- {v0,j,xj} para 1 ≤ j ≤ size(x);

- {v0,size(x)+1,#};

- {v0,size(x)+1+j,0, v0,size(x)+1+j,1} para 1 ≤ j ≤ bp(size(x))c

- {v0,j,t} para −Q ≤ j ≤ 0 y size(x) + 2 + bp(size(x))c ≤ Q.

- {w010}

Clausulas en un paso intermedio:

Page 52: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

44 CAPITULO 5. TSP ES NP-DURO

- {vijσ, wijn, vi+1,j,τ} para 0 ≤ i ≤ Q, σ ∈ A,−Q ≤ j ≤ Q, 0 ≤ n ≤ N ;

- {vijσ, wijn, wi+1,j+δ,m} para 0 ≤ i ≤ Q, σ ∈ A,−Q ≤ j ≤ Q, 0 ≤ n ≤ N ; donde τ,m y δse obtienen en funcion de n y de σ como φ(n, σ) = (m, τ, δ).

Clausulas al alcanzar n = −1.

- {wi,j,−1, wi+1,j,−1} para 0 ≤ i ≤ Q, σ ∈ A,−Q ≤ j ≤ Q.

- {wi,j,−1, vi,j,σ, vi+1,j,σ} para 0 ≤ i ≤ Q, σ ∈ A,−Q ≤ j ≤ Q.

Clausulas para posiciones que nunca son escaneadas y que no cambian de valor.

- {vijσ, wij′n, vi+1,j,σ} para 0 ≤ i ≤ Q, σ ∈ A,−1 ≤ n ≤ N y −Q ≤ j, j′ ≤ Q con j 6= j′

Clausulas que indican la salida (Output) del algoritmo.

- {vQ,1,1}, {vQ,2,t}

Como podemos observar, la longitud de codificacion de Z(x) es de orden O(Q3 logQ), puesel numero de literales de Z(x) es una O(Q3) 1, cuyos ındices requieren O(logQ) de espacio.

Ahora, lo que tenemos que demostrar para nuestro conjunto Z(x) es que se cumple:

Z(x) satisfactible⇔ x ∈ Y.

Veamos ⇐c:Supongamos que x ∈ Y , entonces sea c un certificado para x que cumpleOutput(φ, x#c) = 1.

Lo que debemos demostrar es que existe una correspondencia de verdad que satisfaga todas lasclausulas de Z(x). Sea φ(i) = (n(i), s(i), π(i))i=0,1,...,m: la computacion de φ con entrada x#c.

Vamos a definir la correspondencia de verdad T siguiendo la idea que hemos utilizado paraconstruir Z(x) desde los valores de φ(i):

T (vijσ) = true si y solo si s(i)j = σ

T (wijn) = true si y solo si π(i) = j y n(i) = n

T (vijσ) = T (vi−1,j,σ), T (wijn) = T (wi−1jn) para i = m+ 1, . . . , Q. ∀j, n, σ

La primera nos dice que vijσ es cierta, si en el tiempo i (despues de i computaciones), en laposicion j de la cinta, encontramos el sımbolo σ.

La segunda implica que wijn es cierta, solo si en el tiempo i, se escanea la posicion j de lacinta y se computa la instruccion n.

La tercera nos muestra, que una vez llegada a la instruccion de parada, la cinta no cambia,y la cabeza se queda en la posicion en la que se encontraba.

Veamos ahora que esta correspondencia de verdad definida, satisface todas y cada una delas clausulas definidas en Z(x).

Los primeros dos conjuntos de clausulas Vij y Vijστ condicionan que en cada posicion de lacadena puede haber uno y solamente un sımbolo. Comprobemos que son ciertos bajo T .

1Para obtener este valor, hay que coger cada uno de los conjuntos definidos arriba y ver en cada caso, cuantosconjuntos de literales se crean, por ejemplo, en el caso: Wijnj′n′ , podemos encontrar O(Q3) valores distintos yaque 1 ≤ i ≤ Q, −Q ≤ j, j′ ≤ Q. Notar, que Q es un polinomio del tamano de x y el numero de elementos deA y N (numero de instrucciones) es una cantidad finita que depende del algoritmo φ pero es independiente dela entrada x.

Page 53: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

5.3. EL TEOREMA DE COOK 45

Vij contiene para cada i, j todas las posibles σ ∈ A. Como en cada posicion j de la cintapara cada instante, siempre va a haber un elemento σ ∈ A, luego entonces uno de loselementos de ese conjunto sera true para T , y por tanto el conjunto es satisfactible.

Vijστ es siempre verdadera pues al menos una de las dos variables vijσ o vijτ es siemprefalsa bajo T .

Los siguientes dos conjuntos de clausulas: Wi y Wijnj′n′ indican que en cada instante seejecuta una y solamente una instruccion y se escanea solo una posicion. Veamos que tambiense satisfacen:

En cada conjunto Wi habra por tanto un elemento verdadero.

En el conjunto Wijnj′n′ , una de las dos siempre sera falsa bajo T pues no podemos teneren un mismo instante la cabeza en dos posiciones distintas j, j′, y si j = j′ entonces nopodemos ejecutar en un mismo instante dos instrucciones diferentes.

Las clausulas de comienzo del algoritmo tambien se satisfacen todas para T , ya que estanmodelizando que en un primer instante, solo introducimos x#c en la cinta, empezando desde laposicion j = 1 hasta j = size(x) + 1 + bp(size(x))c tamano de x#c. Las dos ultimas clausulasindican que en el resto de espacios libres entre [−Q,Q], cotas del tamano maximo de la compu-tacion, introducimos t y que la instruccion que ejecutaremos en el paso 1 sera la instruccionn = 0, estando en la posicion j = 1.

Las clausulas que modelan un paso intermedio, tambien son ciertas con esta correspondenciay estan basadas en la idea de que en un instante i, en una posicion j en la que encontramos elelemento σ, ejecutamos φ(n, σ) = (m, τ, δ). Es decir, obtenemos una nueva instruccion m, unelemento τ a introducir en la posicion j y δ ∈ {−1, 0, 1} nos indica la posicion j + δ siguiente.A continuacion mostramos como en cada una de las clausulas aquı definidas hay un elementoverdadero.

- {vijσ, wijn, vi+1,j,τ} para 0 ≤ i ≤ Q, σ ∈ A,−Q ≤ j ≤ Q, 0 ≤ n ≤ N .

Una de las tres es siempre verdadera: para demostrarlo, supondremos que los dos prime-ros literales son falsos y deduciremos que el tercero tiene que ser verdadero. Veamoslo:supongamos que los dos primeros literales son falsos, entonces se cumple que vijσ = truey wijn = true luego, como φ(n, σ) = (m, τ, δ), se cumple vi+1,j,τ = true y la clausula essatisfactible.

- {vijσ, wijn, wi+1,j+δ,m} para 0 ≤ i ≤ Q, σ ∈ A,−Q ≤ j ≤ Q, 0 ≤ n ≤ N .

Equivalentemente al caso anterior, supongamos que los dos primeros literales son falsos,entonces vijσ = true y wijn = true. Entonces wi+1,j+δ,m = true y la clausula es satisfac-tible, pues φ(n, σ) = (m, τ, δ), es decir, en el paso siguiente, estaremos en la posicion j+ δy ejecutaremos la instruccion m.

Las clausulas que modelizan la parada, son tambien verdad bajo T :

- {wi,j,−1, wi+1,j,−1} para 0 ≤ i ≤ Q, σ ∈ A,−Q ≤ j ≤ Q.

Una de las dos siempre es verdadera, para ello veremos que si el primer literal es falso, elsegundo es cierto. Es decir, si wi,j,−1 = false, entonces wi,j,−1 = true, luego estamos enla instruccion −1, y en el instante siguiente i+ 1 seguiremos en la misma posicion con lainstruccion −1, luego wi+1,j,−1 = true.

Page 54: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

46 CAPITULO 5. TSP ES NP-DURO

- {wi,j,−1, vi,j,σ, vi+1,j,σ} para 0 ≤ i ≤ Q, σ ∈ A,−Q ≤ j ≤ Q. Una de las tres es siempreverdadera: para demostrarlo, supondremos que los dos primeros literales son falsos ydeduciremos que el tercero tiene que ser verdadero. Veamoslo:

Si wi,j,−1 = false y vi,j,σ = false entonces wi,j,−1 = true y vi,j,σ = true. Por tanto, paratiempo i la instruccion es n = −1 y en la posicion j encontramos σ. En consecuencia, enel tiempo i+ 1 sigue estando σ en esta posicion, es decir, vi+1,j,σ = true.

Nos quedan de ver que las clausulas que modelizan las posiciones que nunca son escaneadasson tambien verdaderas bajo T :

- {vijσ, wij′n, vi+1,j,σ} para 0 ≤ i ≤ Q, σ ∈ A,−1 ≤ n ≤ N y −Q ≤ j, j′ ≤ Q con j 6= j′.

Veamos que si los dos primeros literales son falsos, el tercero es verdadero:

Si vijσ = false, wij′n = false entonces vijσ = true, luego en la posicion j en el instante iesta σ y como la cabecera esta en la posicion j′ pues wij′n = true, entonces en j seguira σen el siguiente paso, es decir, vi+1,j,σ = true

Para terminar, nos queda ver que {vQ,1,1}, {vQ,2,t} son siempre verdaderas. Esto se cumpleporque estamos modelando una sı-instancia, luego la salida tiene que ser 1.

Hemos encontrado por lo tanto una correspondencia de verdad T para la cual Z(x) se sa-tisface.

Veamos ⇒c:Sea ahora Z(x) satisfactible, entonces existe T correspondencia de verdad, que satisface

todas sus clausulas. Tenemos que ver por tanto que existe un certificado c ∈ {0, 1}bp(size(x))ctal que Output(φ, x#c) = 1 y vamos a definirlo usando esa correspondencia T . Notemos que Tsatisface en concreto las clausulas:

{v0,size(x)+1+j,0, v0,size(x)+1+j,1} para 1 ≤ j ≤ bp(size(x))c.

luego o bien T (v0,size(x)+1+j,1) = true, en este caso definiremos cj = 1 o bien T (v0,size(x)+1+j,0) =true, entonces pondremos cj = 0.

Por la construccion de Z(x), cada una de las clausulas de Z(x), todas ciertas bajo T , reflejanla computacion de φ con entrada x#c.

En efecto, que T satisfaga las primeras clausulas (Vij ,Vijστ ) implica que para cada i, paracada j, existe uno y solamente un elemento σ ∈ A tal que T (vijσ) = true. En el futuro nosreferiremos a ella como condicion (A).

Analogamente, que T (Wi) = true, T (Wijnj′n′) = true implica que para cada i, existen uni-cos valores j ∈ [−Q,Q] y n ∈ [−1, N ] tal que wijn = true. Esta sera la denominada condicion(B).

Con estas condiciones y el significado del resto de clausulas, vamos a intentar ver que enrealidad la correspondencia T que satisface Z(x) significa que:

I) T (vijσ) = true ⇔ al ejecutar φ(x#c): en el tiempo i, en la posicion j de la cinta, encon-traremos el sımbolo σ.

II) T (wijn) = true ⇔ en el paso i de la ejecucion de φ(x#c), la cabeza lectora esta en laposicion j y ejecutara la instruccion n.

Notemos que si se cumple la implicacion a izquierda ⇐c en I), entonces tambien se cumplesu implicacion a derecha ⇒c. En efecto, si no se cumple la parte derecha, es decir, al ejecutar

Page 55: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

5.3. EL TEOREMA DE COOK 47

φ(x#c), en el tiempo i, en la posicion j de la cinta encontramos un elemento α 6= τ , entoncespor la implicacion a izquierda obtenemos que T (vijα) = true y por la condicion (A): T (vijτ ) =false.

Ocurre lo mismo para II), ya que si no se cumple la parte derecha, es decir, en la computacionde φ(x#c), en el paso i o bien la cabeza lectora esta en j′ 6= j o bien la cabeza esta en j peroejecuta una instruccion n′ 6= n. Veamos entonces la parte de la izquierda tampoco se cumple;en el primer caso existira una instruccion n′ tal que por la implicacion a izquierda obtenemosque T (wij′n′) = true, luego por la condicion (B), T (wijn) = false y en el segundo caso por laimplicacion a izquierda deducimos que T (wijn′) = true y entonces T (wijn) = false.

Visto esto sera suficiente demostrar para I) y II) las implicaciones ⇐c en los tres casos enlos que puede encontrarse la ejecucion del algoritmo: En el comienzo, cuando esta en ejecuciony cuando ha llegado a la instruccion de parada.

En el comienzo del algoritmo, es decir, cuando i = 0: por la condicion (A) y la clausula{v0,j,xj} se concluye que T (vo,j,σ) = true solamente si σ = xj para 1 ≤ j ≤ size(x). Como alcomenzar la ejecucion en la cinta de una maquina de Turing nos encontramos siempre la entradax#c, entonces deducimos que T (vo,j,xj

) = true implica que en la posicion j, encontramos elelemento xj . Llegamos a la misma definicion de T para el resto de elementos al notar queT (vo,size(x)+1,#) = true y que en la posicion size(x) + 1 esta el elemento # y a continuacionc ya definida anteriormente usando T . Otra clausula corrobora la definicion de T para el restode posiciones de la cinta donde encontremos el elemento t.

Por la condicion (B), como T (w0jn) = true solo puede darse para un valor de (j, n) y sabe-mos que se cumple para j = 1, n = 0, entonces determinamos que T (w010) = true implica quese comienza ejecutando la instruccion n = 0 en la posicion j = 1.

Ahora suponemos que I) y II) son ciertos para un paso i distinto del de parada y veamosque se cumple I) en el paso i+ 1. La hipotesis ahora consiste en suponer que al ejecutar φ(x#c)en el paso i+ 1, en la posicion j encontramos la letra σ. Distinguimos dos casos:

1. En el paso i, la cabeza no estaba en la posicion j (estaba en otra posicion j′ 6= j): estoimplica que no se ha cambiado la letra que habıa en la posicion j, es decir, en el paso i,en la posicion j se encontraba σ y por hipotesis T (vijσ) = true y existira n instrucciontal que T (wij′n) = true. Ası, como la clausula {vijσ, wij′n, vi+1,j,σ} es cierta bajo T y losdos primeros literales son falsos, se debe cumplir que T (vi+1,j,σ) = true.

2. En el paso i, la cabeza estaba en la posicion j: entonces, sea α la letra que estaba en la po-sicion j para tiempo i y n la instruccion que se ejecuto, sabemos que φ(n, α) = (m,σ, δ).Por hipotesis, T (vijα) = true y T (wijn) = true, luego los dos primeros literales de laclausula {vijα, wijn, vi+1,j,σ} son falsos y como la clausula se satisface bajo T , forzosa-mente T (vi+1,j,σ) = true.

Ahora con la misma suposicion para un paso i distinto del de parada, veamos que se cumpleII) en el paso i + 1. Suponemos entonces que en el paso i + 1 la cabeza esta en la posicion jejecutando la instruccion n. Tenemos que demostrar que wi+1,j,n = true.

Supongamos que en el paso i la computacion ha sido φ(m,α) = (n, σ, δ). Ası, T (vi,j−δ,α) =true y T (wi,j−δ,m) = true. Entonces por la clausula de paso intermedio {vi,j−δ,α, wi,j−δ,m, wi+1,j,n}tenemos que wi+1,j,n = true.

Para terminar, nos queda ver que se cumplen I) y II) cuando en el paso i se ejecuta la ins-truccion de parada. Esta demostracion es analoga al caso anterior tomando para I) las clausu-las {vijσ, wi,j′,−1, vi+1,j,σ} (correspondiente o bien a una clausula del segundo conjunto de las

Page 56: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

48 CAPITULO 5. TSP ES NP-DURO

clausulas de parada o bien a una clausula de posiciones nunca escaneadas) y para II) una delas clausulas de parada de la forma {wi,j,−1, wi+1,j,−1}.

Una vez probado I) y II), ya sabemos como interpretar T en el desarrollo de la ejecucionde φ y podemos dar significado a las ultimas dos clausulas que se cumplen: {vQ,1,1}, {vQ,2,t}.Esto nos indica por tanto, que en el paso i = Q, en la posicion j = 1, encontramos el elemento1, y en la posicion siguiente t. Luego Output(φ, x#c) = 1 que es lo que querıamos ver y nospermite concluir que x es una sı-instancia del problema original (x ∈ Y ).

A partir de aquı, como ya hemos encontrado un problema NP -Completo, es mucho massencillo demostrar la NP -Completitud de otro problema P, puesto que solo debemos comprobarque P ∈ NP y que SAT ∝ P.

5.3.1. 3-Satisfactibilidad

El problema de la 3-Satisfactibilidad(3-SAT ), es una restriccion del problema SAT dondetoda instancia tiene que tener exactamente 3 literales en cada clausula. Su simplicidad conrespecto al problema SAT lo hace ser muy util a la hora de comprobar la NP -Completitud deotros problemas.

Teorema 5.3.2.El problema de la 3-Satisfactibilidad(3-SAT) es NP-Completo.

Demostracion. Veamos primero que es NP: Es facil ver que en el caso de encontrarnos ante unası-instancia del 3-SAT, podremos comprobarlo facilmente encontrando una correspondencia deverdad que satisfaga cada una de las clausulas de tres literales del problema.

Ahora realizaremos la transformacion SAT ∝ 3-SAT.

Sea U = {u1, u2, . . . , un} un conjunto de variables y C = {c1, c2, . . . , cm} un conjunto declausulas instancia arbitraria de SAT . Vamos a construir un conjunto de clausulas de tresliterales C ′ sobre un conjunto de variables U ′ tal que C ′ sea satisfactible sı y solo si C lo es.

Sea cj ∈ C, construiremos un conjunto de clausulas de tres literales C ′j , basada en las varia-bles originales U y en un conjunto de variables adicionales U ′j , cuyos literales solo apareceranen las clausulas de C ′j . Juntando todos estos conjuntos, obtendremos:

U ′ = U ∪( m⋃j=1

U ′j

)y

C ′ =m⋃j=1

C ′j .

Construccion de C ′j, U′j:

Sea cj = {z1, z2, . . . , zk} clausula, con zi literales sobre U . Distinguimos varios casos enfuncion del valor k:

Caso 1. k = 1

U ′j = {y1j , y2j }

C ′j = {{z1, y1j , y2j }, {z1, y1j , y2j }, {z1, y1j , y2j }, {z1, y1j , y2j }}

Page 57: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

5.3. EL TEOREMA DE COOK 49

Caso 2. k = 2

U ′j = {y1j }

C ′j = {{z1, z2, y1j }{z1, z2, y1j }}

Caso 3. k = 3

U ′j = ∅, C ′j = {cj}

Caso 4. k > 3

U ′j = {yij | 1 ≤ i ≤ k − 3}

C ′j = {{z1, z2, y1j }} ∪ {{yij , zi+2, yi+1j | 1 ≤ i ≤ k − 4}} ∪ {{yk−3j , zk−1, zk}}

Veamos ahora para terminar que efectivamente:

C ′ es satisfactible ⇔ C es satisfactible

⇐c Sea T : U → {true, false} una correspondencia de verdad que satisface C. Vamos aextender T a T ′ : U ′ → {true, false} tal que satisfaga C ′. Como U ′ − U esta dividida enconjuntos U ′j , y ademas las variables de cada uno de estos conjuntos, solo aparecen en surespectivo C ′j , vamos a extender T a cada uno de los conjuntos U ′j tal que se verifiquen lasclausulas en su correspondiente C ′j . Distinguimos 3 casos en funcion de como fue construido U ′j :

1. U ′j construido segun Caso 1 o Caso 2: Como T (z1) = T (z2) = true, y toda clausulacontiene a z1 o a z2, podemos definir T ′ de cualquier modo para literales en U ′ − U . Sinperdida de generalidad, podemos entonces asumir T ′(y) = true, ∀y ∈ U ′j

2. U ′j construido segun Caso 3: La clausula ya es satisfecha por T y U ′j = ∅.

3. U ′j construido segun Caso 4: Aquı cj = {z1, z2, . . . , zk} con k > 3. Como es sastisfactible,entonces existe l ∈ {1, . . . , k} tal que T (zl) = true.

l ∈ {1, 2}, entonces T ′(yij) = false ∀1 ≤ i ≤ k − 3.

l ∈ {k − 1, k}, entonces T ′(yik) = true ∀1 ≤ i ≤ k − 3.

Resto de casos, entonces T ′(yij) = true ∀1 ≤ i ≤ l − 2 y T ′(yij) = false ∀l − 1 ≤i ≤ k − 3.

Es sencillo observar, que con esta definicion de T ′, se satisfacen todas las clausulas de Cj ‘encualquiera de los tres casos.

⇒cPor otro lado, si T ′ es una correspondencia de verdad de C ′, se verifica que T = T ′|U satis-

face C.

Veamos por ultimo que se puede realizar en tiempo polinomico:Para ello, es necesario observar, que el numero de clausulas de 3 literales en C ′, esta acotado

por mn,es decir, el numero de clausulas de C ′ es proporcional al numero de clausulas y literalesde C, por ello,la transformacion desde C hasta C ′,va a ser un proceso que se podra realizaren tiempo polinomico, luego el algoritmo visto anteriormente transforma polinomicamente unainstancia SAT en una 3− SAT .

Page 58: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

50 CAPITULO 5. TSP ES NP-DURO

Vamos a utilizar el problema 3 − SAT , para demostrar que el problema de los circuitoshamiltonianos es tambien NP -Completo.

Nota 5.3.1. Recordemos que el problema de los circuitos hamiltonianos trata de decidir sipodemos encontrar algun circuito hamiltoniano en un grafo no dirigido.

Teorema 5.3.3.El problema del circuito hamiltoniano es NP-Completo.2

Demostracion. Ya hemos visto en la Proposicion 5.2.1 anteriormente, que el problema del cir-cuito hamiltoniano es NP. Ahora vamos a ver que 3-SAT se transforma polinomicamente eneste problema.

Dada una coleccion de clausulas de tres literales Z = {Z1, . . . , Zm} sobre un conjunto devariables U = {u1, . . . , un}, vamos a construir un grafo G que cumpla que: G contiene uncircuito hamiltoniano si y solo si Z es satisfactible.

Para ello vamos a definir dos estructuras que nos permitiran crear el grafo.Consideramos el grafo de la Figura 5.2(a). Suponemos que es un subgrafo de G al que

llamaremos A y ningun vertice de A excepto u, u′, v, v′ incide con otra arista de G. Entonces,cualquier circuito hamiltoniano de G debe atravesar A de una de las dos formas que vemos enla Figura 5.2 (b),(c).

(a) (b) (c) (d)

Figura 5.2: Estructura A.

Sean ahora dos aristas u− u′, v − v′, diremos que las unimos mediante A, cuando creamosentre ellas la estructura de la Figura 5.2(a) (es decir anadimos todos los puntos intermedios ylos unimos de esta forma).

Por simplificar el resultado final, vamos a describir la union de dos aristas mediante A comoen la Figura 5.2(d). La importancia de estas estructuras, es que si en un grafo encontramos unaestructura de tipo A, cualquier ciclo hamiltoniano del grafo debe contener exactamente una delas aristas u− u′ o v − v′.

Ahora consideramos tambien el grafo B de la Figura 5.3(a). Asumimos que es tambien unsubgrafo de G y que los unicos vertices incidentes con otras aristas de G son u, u′. Entonces,ningun circuito hamiltoniano de G atraviesa a las tres aristas {e1, e2, e3}, es mas, se observa quepara cualquier S ⊂ {e1, e2, e3}, hay un camino hamiltoniano desde u a u′ en B, que contiene aS pero no a {e1, e2, e3} \ S. Vamos a representar B, con el sımbolo de la Figura 5.3(b).

2Richard M. Karp fue el primero que mostro en 1972 que el Problema del Ciclo de Hamilton era un problemaNP-Completo, lo cual, como veremos mas adelante implica que el TSP sea un problema NP-Duro.

Page 59: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

5.3. EL TEOREMA DE COOK 51

(a)

15.5 Some Basic NP -Complete Problems 361

We first define two gadgets which will appear several times in G. Consider thegraph shown in Figure 15.2(a), which we call A. We assume that it is a subgraphof G and no vertex of A except u, u′, v, v′ is incident to any other edge of G.Then any Hamiltonian circuit of G must traverse A in one of the ways shownin Figure 15.3(a) and (b). So we can replace A by two edges with the additionalrestriction that any Hamiltonian circuit of G must contain exactly one of them(Figure 15.2(b)).

u

u ′

e1

e2

e3

u

u ′

B

(a) (b)

Fig. 15.4.

Now consider the graph B shown in Figure 15.4(a). We assume that it is asubgraph of G, and no vertex of B except u and u′ is incident to any other edgeof G. Then no Hamiltonian circuit of G traverses all of e1, e2, e3. Moreover, oneeasily checks that for any S ⊂ {e1, e2, e3} there is a Hamiltonian path from u tou′ in B that contains S but none of {e1, e2, e3} \ S. We represent B by the symbolshown in Figure 15.4(b).

We are now able to construct G. For each clause, we introduce a copy ofB, joined one after another. Between the first and the last copy of B, we inserttwo vertices for each variable, all joined one after another. We then double theedges between the two vertices of each variable x ; these two edges will cor-respond to x and x , respectively. The edges e1, e2, e3 in each copy of B arenow connected via a copy of A to the first, second, third literal of the corre-sponding clause. This construction is illustrated by Figure 15.5 with the example{{x1, x2, x3}, {x1, x2, x3}, {x1, x2, x3}}. Note that an edge representing a literal cantake part in more than one copy of A; these are then arranged in series.

Now we claim that G is Hamiltonian if and only if Z is satisfiable. Let C bea Hamiltonian circuit. We define a truth assignment by setting a literal true iff Ccontains the corresponding edge. By the properties of the gadgets A and B eachclause contains a literal that is true.

(b)

15.5 Some Basic NP -Complete Problems 361

We first define two gadgets which will appear several times in G. Consider thegraph shown in Figure 15.2(a), which we call A. We assume that it is a subgraphof G and no vertex of A except u, u′, v, v′ is incident to any other edge of G.Then any Hamiltonian circuit of G must traverse A in one of the ways shownin Figure 15.3(a) and (b). So we can replace A by two edges with the additionalrestriction that any Hamiltonian circuit of G must contain exactly one of them(Figure 15.2(b)).

u

u ′

e1

e2

e3

u

u ′

B

(a) (b)

Fig. 15.4.

Now consider the graph B shown in Figure 15.4(a). We assume that it is asubgraph of G, and no vertex of B except u and u′ is incident to any other edgeof G. Then no Hamiltonian circuit of G traverses all of e1, e2, e3. Moreover, oneeasily checks that for any S ⊂ {e1, e2, e3} there is a Hamiltonian path from u tou′ in B that contains S but none of {e1, e2, e3} \ S. We represent B by the symbolshown in Figure 15.4(b).

We are now able to construct G. For each clause, we introduce a copy ofB, joined one after another. Between the first and the last copy of B, we inserttwo vertices for each variable, all joined one after another. We then double theedges between the two vertices of each variable x ; these two edges will cor-respond to x and x , respectively. The edges e1, e2, e3 in each copy of B arenow connected via a copy of A to the first, second, third literal of the corre-sponding clause. This construction is illustrated by Figure 15.5 with the example{{x1, x2, x3}, {x1, x2, x3}, {x1, x2, x3}}. Note that an edge representing a literal cantake part in more than one copy of A; these are then arranged in series.

Now we claim that G is Hamiltonian if and only if Z is satisfiable. Let C bea Hamiltonian circuit. We define a truth assignment by setting a literal true iff Ccontains the corresponding edge. By the properties of the gadgets A and B eachclause contains a literal that is true.

Figura 5.3:

Con estas dos estructuras ya podemos construir G desde Z. Para cada clausula Zi, i =1, . . . ,m, pondremos una copia de B tras otra en una misma columna, y en una columnaparalela, uniremos con la primera y ultima copia de B,una sucesion de vertices, dos por cadavariable uj(j = 1, . . . , n) que existan en las clausulas. Estos vertices estan a su vez unidos entreellos. La arista que une los dos vertices que corresponden a cada variable uj , la vamos a doblar,para representar a uj y a uj . Ahora en cada copia de B, unimos mediante copias de A, las aristase1, e2, e3 con el primer, segundo y tercer literal de la clausula correspondiente, representadosmediante las aristas desdobladas descritas anteriormente para cada variable (notar que entoncescualquier ciclo hamiltoniano de G, debe de contener o bien a ei o bien al literal relacionadomediante A con esa arista). Se observa ademas que la arista correspondiente a un literal puedeformar parte de mas de una copia de A.

Antes de continuar, vamos a ver un ejemplo ilustrativo de construccion de este grafo a partirde un conjunto de clausulas concreto. Sea U = {{x1, x2, x3}, {x1, x2, x3}, {x1, x2, x3}}, entoncesel grafo de la figura 5.4(a), es el correspondiente para U .

(a)

362 15. NP -Completeness

A

A

A

A

A

A

A

A

AB

B

B

Fig. 15.5.

Conversely, any satisfying truth assignment defines a set of edges correspond-ing to literals that are true. Since each clause contains a literal that is true this setof edges can be completed to a tour in G. �

This proof is essentially due to Papadimitriou and Steiglitz [1982]. The problemof deciding whether a given graph contains a Hamiltonian path is also NP-complete(Exercise 14(a)). Moreover, one can easily transform the undirected versions tothe directed Hamiltonian circuit or Hamiltonian path problem by replacing eachundirected edge by a pair of oppositely directed edges. Thus the directed versionsare also NP-complete.

There is another fundamental NP-complete problem:

(b)

Figura 5.4: Grafo del ejemplo completo

Page 60: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

52 CAPITULO 5. TSP ES NP-DURO

En la Figura 5.4(b) podemos ver expandida la primera estructura de tipo B y A que apareceen el ejemplo anterior, para entender mejor lo que estamos intentando representar.

Cada una de las estructuras de tipo A de la Figura 5.4(a) se representarıa de esta manera,teniendo en cuenta que si hay dos clausulas que contienen el mismo literal, en la arista corres-pondiente a ese literal, apareceran puntos intermedios independientes para cada una de las dosestructuras A.

Veamos ahora que:

G es hamiltoniano ⇔ Z es satisfactible

⇒cSea C un circuito hamiltoniano, definimos una correspondencia de verdad T que verifıque

que T (x) = true, x literal sı y solo si C contiene a la arista correspondiente. Por la propiedad deB, un ciclo hamiltoniano no puede tener a la vez a las aristas e1, e2, e3 correspondientes a unamisma clausula y por la propiedad de A, si el ciclo hamiltoniano no contiene a uno de esas tresaristas, entonces contiene a la arista correspondiente al literal unido mediante A, luego todaclausula contiene un literal tal que la arista correspondiente a ese literal, pertenece al ciclo.⇐cPor otro lado, si Z es satisfactible, entonces cualquier correspondencia de verdad que satis-

faga Z, define un conjunto de aristas que corresponden a los literales que son verdad. Comocada clausula, contiene al menos un literal cierto (pues Z es satisfactible), entonces este con-junto de aristas, puede ser completado hasta un ciclo en G, usando la construccion explicadaanteriormente.

5.4. NP-Duro

Ahora vamos a extender los resultados obtenidos para los problemas de decision a los lla-mados problemas de optimizacion.

Definicion 5.4.1. Un problema de optimizacion discreto es un cuadruple P = (X, (Sx)x∈X , c,m)donde:

X es un lenguaje sobre {0, 1} decidible en tiempo polinomico. 3

Sx es un subconjunto de {0, 1}∗ para cada x ∈ X: existe un polinomio p con size(y) ≤p(size(x)) para todo y ∈ Sx, x ∈ x. Ademas los lenguajes {(x, y) | x ∈ X, y ∈ Sx} y{x ∈ X | Sx = ∅} son decisibles en tiempo polinomico.

c : {(x, y) | x ∈ X, y ∈ Sx} → Q es computable en tiempo polinomico.

m ∈ {mın,max}.

Los elementos de X, se conocen como instancias de P, y para cada instancia x ∈ X, Sx sonlas llamadas soluciones factibles de X. OPT (x) := m{c(x, y) | y ∈ Sx}. Una solucion optima dex, es una solucion factible y ∈ Sx con c(x, y) = OPT (x).

Un algoritmo para un problema de optimizacion P = (X, (Sx)x∈X , c,m), es un algoritmoA, que para cada x ∈ X con Sx 6= ∅, computa una solucion factible y ∈ Sx. A veces escribimosA(x) := c(x, y). Si A(x) = OPT (x) para todo x ∈ X con Sx 6= ∅, entonces A es un algoritmoexacto.

3Decimos que un lenguaje X es decisible en tiempo polinomico, si para toda f : X → {0, 1}, existe unamaquina de Turing polinomica que la compute.

Page 61: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

5.4. NP-DURO 53

Definicion 5.4.2. Un problema de optimizacion, o un problema de decision P se llama NP -Duro, si todos los problemas en NP, reducen polinomialmente a P.

Nota 5.4.1. En este caso, no hemos obligado, a que el problema sea un problema NP, como enel caso de NP -Completo, ademas incluye no solo a los problemas de decision, sino tambien alos de optimizacion. Muchas veces, cuando hablamos de un problema NP -Duro se suele decirinformalmente, que es al menos tan difıcil como cualquier problema de decision NP -Completo.

Teorema 5.4.1.El problema del viajante de comercio (TSP ), es NP-Duro.

Demostracion. Para ello, vamos a demostrar que el problema de decision de circuitos Hami-litotianos (HCP) se transforma polinomicamente en el (TSP). Para ello, debemos encontraruna funcion f que a cada instancia de HCP le corresponda una del TSP y que satisfaga laspropiedades de transformacion polinomica.

Sea G = (V,E) instancia del HCP con |V | = m. Su instancia correspondiente en el TSPtiene un conjunto C de ciudades identico a V y para cada dos ciudades vi, vj ∈ C definimos

d(vi, vj) = 1 si vi, vj ∈ E

d(vi, vj) = 2 en otro caso

La longitud maxima de recorrido entre ciudades es B = m. Veamos ahora que f es computableen tiempo polinomico: En efecto, ya que para cada una de las m(m− 1)/2 distancias d(vi, vj),solamente es necesario examinar G para ver si vi, vj ∈ E. La segunda condicion se reduce ademostrar:

G contiene un ciclo hamiltoniano ⇔ hay un tour que pasa por todas las ciudades de f(G)cuyo recorrido no es mayor que B.

Veamos primero ⇒cSea 〈v1, v2, . . . , vm〉 un circuito hamiltoniano de G. Entonces v1, v2, . . . , vm es tambien un

tour en f(G) de longitud m = B pues cada una de las aristas visitadas, es un elemento de E ypor eso tienen longitud 1.

Veamos ahora ⇐cSea ahora 〈v1, v2, . . . , vm〉 tour en f(G) con longitud total menor que B. Como las distanciasentre las ciudades son o bien 1, o bien 2, y se recorren en total m ciudades (m sumandos),entonces la distancia entre las ciudades visitas es exactamente 1, es decir, por definicion de f ,{vi, vi+1}, {vm, v1} ∈ E ∀ i = 1, . . . ,m − 1, luego < v1, v2, . . . , vm > un circuito hamiltotianode G.

Page 62: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

54 CAPITULO 5. TSP ES NP-DURO

Page 63: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

Bibliografıa

[1] R. Bellman, Dynamic Programming. Princeton University Press, Princeton, New Jersey,USA (1957).

[2] A. Calvo, Cooperacion en los problemas del viajante (TSP) y de rutas de vehıculos (VRP):una panoramica. Universidad de Vigo (2011).

[3] CEOE, Confederacion Espanola de Organizaciones Empresariales, Memorandum: El sectordel transporte y la logıstica en Espana (2013).

[4] N. Christofides, Worst-Case Analysis of a New Heuristic for the Travelling Salesman Pro-blem, Carnegie-Mellon University Management Sciences Research Report 388, Pittsburgh,Pa., February 1976.

[5] S.A. Cook, The complexity of theorem-proving procedures. ACM Press, New York, USA.151–158 (1971).

[6] G.B. Dantzig, D.R. Fulkerson, S.M. Johnson, Solution of a Large-Scale Traveling-SalesmanProblem, Operations Research 2 (1954) 393–410.

[7] J. Edmonds, Paths, trees and flowers. Canadian Journal of Mathematics 17, 449–467(1965).

[8] M.M. Flood, Merrill Flood (with Albert Tucker), Interview of Merrill Flood in San Fran-cisco on 14 May 1984., The princeton Mathematics Community in the 1930s, Transcriptnumber 11 (PMC11).

[9] M.M. Flood, The traveling-salesman problem. Operations Research (1956).

[10] M.R. Garey, D.S. Johnson, Computers and Intractability. A Guide to the Theory of NP-Completeness. W.H. Freeman and Company (1979).

[11] R.E. Gomory, Outline of an Algorithm for Integer Solutions to Linear Programs, BulletinOf the American Mathematical Society 64, 275—278 (1958).

[12] G. Gutin, A.P. Punnen (Eds.), The Traveling Salesman Problem and its Variations., Sprin-ger, Combinatorial Optimization, Vol. 12 (2007).

[13] M.Held, R.M. Karp, A dynamic programming approach to sequencing problems. Journal ofthe Society of Industrial an Applied Mathematics b10, 196–210 (1962).

[14] B. Korte, J. Vygen, Combinatorial Optimization. Theory and Algorithms. Fifth edition,Springer (2011).

55

Page 64: El problema del viajante. Métodos de resolución y un ... · PDF fileenfoque hacia la Teoría de la Computación Autor/es ... Los problemas de rutas sobre arcos tienen su origen en

56 BIBLIOGRAFIA

[15] H.W. Kuhn, The Hungarian Method for the assignment problem, Naval Research LogisticQuarterly, 2:83-97, (1955).

[16] A.H. Land, A.G. Doig, An Automatic Method of Solving Discrete Programming Problems.Econometrica, Vol. 28, No. 3. pp. 497–520 (1960).

[17] J.D.C. Little, K.G. Murty, D.W. Sweeney, and C. Karel, An algorithm for the travelingsalesman problem, Operations Research 11, 972–989 (1963).

[18] S.Lin, B.W. Kernighan, An effective heuristic algorithm for the traveling-salesman problem.Operation Research 21, 498–516 (1973).

[19] M.L. Stockdale, El problema del viajante: un algoritmo heurıstico y una aplicacion. Uni-versidad de Buenos Aires (2011).

[20] K. Menger, Bericht uber ein mathematisches Kolloquium. Monats-hefte fur Mathematikund Physik 38, 17–38 (1931).

[21] B.Fr. Voigt, Der Handlungsreisende – wie er sein soll und was er zu thun hat, um Auftragezu erhalten und eines glucklichen Erfolgs in seinen Geschaften gewiß zu sein – von einemalten Commis-Voyageur, Ilmenau (1832)

[22] W.L. Winston, Investigacion de Operaciones. Aplicaciones y algoritmos. Cuarta edicion,Thomson (2005).