Grafos Eulerianos y Hamiltonianos
Algoritmos y Estructuras de Datos III
Grafos eulerianos
Definiciones:
I Un circuito C en un grafo (o multigrafo) G es un circuitoeuleriano si C pasa por todos las aristas de G una y solo unavez.
I Un grafo euleriano es un grafo que tiene un circuitoeuleriano (o multigrafo).
Teorema (Euler 1736): Un grafo (o multigrafo) conexo eseuleriano si y solo si todos sus nodos tienen grado par.
A partir de la demostracion del teorema de Euler se puede escribirun algoritmo para construir un circuito euleriano para un grafo quetiene todos sus nodos de grado par.
Grafos eulerianos
Definiciones:
I Un circuito C en un grafo (o multigrafo) G es un circuitoeuleriano si C pasa por todos las aristas de G una y solo unavez.
I Un grafo euleriano es un grafo que tiene un circuitoeuleriano (o multigrafo).
Teorema (Euler 1736): Un grafo (o multigrafo) conexo eseuleriano si y solo si todos sus nodos tienen grado par.
A partir de la demostracion del teorema de Euler se puede escribirun algoritmo para construir un circuito euleriano para un grafo quetiene todos sus nodos de grado par.
Grafos eulerianos
u1
u2
u3
u4
u5
u6
u7 u8
Grafos eulerianos
u1
u2
u3
u4
u5
u6
u7 u8
Grafos eulerianos
u1
u2
u3
u4
u5
u6
u7 u8
Grafos eulerianos
u1
u2
u3
u4
u5
u6
u7 u8
Grafos eulerianos
Entrada: G = (V ,X ) conexo con todos los nodos de grado par.
comenzar por cualquier nodo v y construir un ciclo Zmientras exista e X \ Z hacer
elegir w tal que existe (w , u) Z y (w , z) X \ Zdesde w construir un ciclo D con D Z = Z := unir Z y D por medio de w
fin mientrasretornar Z
Cual es la complejidad de este algoritmo?
Grafos eulerianos
Definiciones:
I Un camino euleriano en un grafo (o multigrafo) G es uncamino que pasa por cada arista de G una y solo una vez.
I Un grafo orientado o digrafo, se dice euleriano si tiene uncircuito orientado que pasa por cada arco de G una y solo unavez.
Teorema: Un grafo (o multigrafo) conexo tiene un caminoeuleriano si y solo si tiene exactamente dos nodos de grado impar.
Teorema: Un digrafo conexo es euleriano si y solo si para todonodo v de G se verfica que din(v) = dout(v).
Grafos eulerianos
Definiciones:
I Un camino euleriano en un grafo (o multigrafo) G es uncamino que pasa por cada arista de G una y solo una vez.
I Un grafo orientado o digrafo, se dice euleriano si tiene uncircuito orientado que pasa por cada arco de G una y solo unavez.
Teorema: Un grafo (o multigrafo) conexo tiene un caminoeuleriano si y solo si tiene exactamente dos nodos de grado impar.
Teorema: Un digrafo conexo es euleriano si y solo si para todonodo v de G se verfica que din(v) = dout(v).
Grafos eulerianos
Definiciones:
I Un camino euleriano en un grafo (o multigrafo) G es uncamino que pasa por cada arista de G una y solo una vez.
I Un grafo orientado o digrafo, se dice euleriano si tiene uncircuito orientado que pasa por cada arco de G una y solo unavez.
Teorema: Un grafo (o multigrafo) conexo tiene un caminoeuleriano si y solo si tiene exactamente dos nodos de grado impar.
Teorema: Un digrafo conexo es euleriano si y solo si para todonodo v de G se verfica que din(v) = dout(v).
Problema del cartero chino (Guan, 1962)
Definicion: Dado un grafo G = (V ,X ) con longitudes asignadas asus aristas, l : X R0, el problema del cartero chino consisteen encontrar un circuito que pase por cada arista de G al menosuna vez de longitud mnima.
I Si G es euleriano, un circuito euleriano es la solucion delproblema del cartero chino.
I Hay algoritmos polinomiales para el problema del carterochino cuando G es orientado o no orientado.
I Pero no se conocen algoritmos polinomiales (el problema noesta computacionalmente resuelto) si el grafo es mixto(algunas aristas orientados y otros no).
Problema del cartero chino (Guan, 1962)
Definicion: Dado un grafo G = (V ,X ) con longitudes asignadas asus aristas, l : X R0, el problema del cartero chino consisteen encontrar un circuito que pase por cada arista de G al menosuna vez de longitud mnima.
I Si G es euleriano, un circuito euleriano es la solucion delproblema del cartero chino.
I Hay algoritmos polinomiales para el problema del carterochino cuando G es orientado o no orientado.
I Pero no se conocen algoritmos polinomiales (el problema noesta computacionalmente resuelto) si el grafo es mixto(algunas aristas orientados y otros no).
Grafos hamiltonianos
Definiciones:
I Un circuito en un grafo G es un circuito hamiltoniano sipasa por cada nodo de G una y solo una vez.
I Un grafo se dice hamiltoniano si tiene un circuitohamiltoniano.
No se conocen buenas caracterizaciones para grafos hamiltonianos.
Como intentar construir un circuito hamiltoniano?
No se conocen algoritmos polinomiales para decidir si un grafo eshamiltoniano o no.
Grafos hamiltonianos
Definiciones:
I Un circuito en un grafo G es un circuito hamiltoniano sipasa por cada nodo de G una y solo una vez.
I Un grafo se dice hamiltoniano si tiene un circuitohamiltoniano.
No se conocen buenas caracterizaciones para grafos hamiltonianos.
Como intentar construir un circuito hamiltoniano?
No se conocen algoritmos polinomiales para decidir si un grafo eshamiltoniano o no.
Grafos hamiltonianos
Definiciones:
I Un circuito en un grafo G es un circuito hamiltoniano sipasa por cada nodo de G una y solo una vez.
I Un grafo se dice hamiltoniano si tiene un circuitohamiltoniano.
No se conocen buenas caracterizaciones para grafos hamiltonianos.
Como intentar construir un circuito hamiltoniano?
No se conocen algoritmos polinomiales para decidir si un grafo eshamiltoniano o no.
Grafos hamiltonianos
Definiciones:
I Un circuito en un grafo G es un circuito hamiltoniano sipasa por cada nodo de G una y solo una vez.
I Un grafo se dice hamiltoniano si tiene un circuitohamiltoniano.
No se conocen buenas caracterizaciones para grafos hamiltonianos.
Como intentar construir un circuito hamiltoniano?
No se conocen algoritmos polinomiales para decidir si un grafo eshamiltoniano o no.
Grafos hamiltonianos
Teorema (condicion necesaria): Sea G un grafo conexo. Siexiste W V tal que G \W tiene c componentes conexas conc > |W | entonces G no es hamiltoniano.
Es cierta la recproca de este teorema?
Teorema (Dirac) (condicion suficiente): Sea G un grafo conn 3 y tal que para todo v V se verifica que d(v) n/2entonces G es hamiltoniano.
Es cierta la recproca de este teorema?
Grafos hamiltonianos
Teorema (condicion necesaria): Sea G un grafo conexo. Siexiste W V tal que G \W tiene c componentes conexas conc > |W | entonces G no es hamiltoniano.
Es cierta la recproca de este teorema?
Teorema (Dirac) (condicion suficiente): Sea G un grafo conn 3 y tal que para todo v V se verifica que d(v) n/2entonces G es hamiltoniano.
Es cierta la recproca de este teorema?
Metaheursticas
I Heursticas clasicas.I Metaheursticas o heursticas modernas.
Cuando usarlas?
I Problemas para los cuales no se conocen buenos algoritmosexactos.
I Problemas difciles de modelar.
Como se evaluan?
I Problemas test.I Problemas reales.I Problemas generados al azar.I Cotas inferiores.
Problema del viajante de comercio (TSP)
Definicion: Dado un grafo G = (V ,X ) con longitudes asignadas alas aristas, l : X R0, queremos determinar un circuitohamiltoniano de longitud mnima.
I No se conocen algoritmos polinomiales para resolver elproblema del viajante de comercio.
I Tampoco se conocen algoritmos -aproximados polinomialespara el TSP general (si se conocen cuando las distancias soneuclideanas).
I Es el problema de optimizacion combinatoria mas estudiado.
Heursticas y algoritmos aproximados para el TSPHeurstica del vecino mas cercano
elegir un nodo vorden(v) := 0S := {v}i := 0mientras S 6= V hacer
i := i + 1elegir la arista (v ,w) mas barata con w / Sorden(w) := iS := S {w}v := w
fin mientrasretornar orden
Cual es la complejidad de este algoritmo?
Heursticas y algoritmos aproximados para el TSPHeursticas de insercion
C := un circuito de longitud 3S := {nodos de C}mientras S 6= V hacer
ELEGIR un nodo v / SS := S {v}INSERTAR v en C
fin mientrasretornar C
Como ELEGIR?
variantes de la heurstica de insercion
Como INSERTAR?
Heursticas y algoritmos aproximados para el TSPHeursticas de insercion
C := un circuito de longitud 3S := {nodos de C}mientras S 6= V hacer
ELEGIR un nodo v / SS := S {v}INSERTAR v en C
fin mientrasretornar C
Como ELEGIR?
variantes de la heurstica de insercion
Como INSERTAR?
Heursticas y algoritmos aproximados para el TSPHeursticas de insercion
C := un circuito de longitud 3S := {nodos de C}mientras S 6= V hacer
ELEGIR un nodo v / SS := S {v}INSERTAR v en C
fin mientrasretornar C
Como ELEGIR? variantes de la heurstica de insercion
Como INSERTAR?
Heursticas y algoritmos aproximados para el TSPHeursticas de insercion
Para INSERTAR el nodo v elegido:
I Sea cvivj es el costo o la longitud de la arista (vi , vj).
I Elegimos dos nodos consecutivos en el circuito vi , vi+1 tal que
cviv + cvvi+1 cvivi+1sea mnimo.
I Insertamos v entre vi y vi+1.
Heursticas y algoritmos aproximados para el TSPHeursticas de insercion
Podemos ELEGIR el nuevo nodo v para agregar al circuito tal que:
I v sea el nodo mas proximo a un nodo que ya esta en elcircuito.
I v sea el nodo mas lejano a un nodo que ya esta en el circuito.I v sea el nodo mas barato, o sea el que hace crecer menos la
longitud del circuito.
I v se elige al azar.
Heursticas y algoritmos aproximados para el TSPHeursticas de insercion
Podemos ELEGIR el nuevo nodo v para agregar al circuito tal que:
I v sea el nodo mas proximo a un nodo que ya esta en elcircuito.
I v sea el nodo mas lejano a un nodo que ya esta en el circuito.
I v sea el nodo mas barato, o sea el que hace crecer menos lalongitud del circuito.
I v se elige al azar.
Heursticas y algoritmos aproximados para el TSPHeursticas de insercion
Podemos ELEGIR el nuevo nodo v para agregar al circuito tal que:
I v sea el nodo mas proximo a un nodo que ya esta en elcircuito.
I v sea el nodo mas lejano a un nodo que ya esta en el circuito.I v sea el nodo mas barato, o sea el que hace crecer menos la
longitud del circuito.
I v se elige al azar.
Heursticas y algoritmos aproximados para el TSPHeursticas de insercion
Podemos ELEGIR el nuevo nodo v para agregar al circuito tal que:
I v sea el nodo mas proximo a un nodo que ya esta en elcircuito.
I v sea el nodo mas lejano a un nodo que ya esta en el circuito.I v sea el nodo mas barato, o sea el que hace crecer menos la
longitud del circuito.
I v se elige al azar.
Heursticas y algoritmos aproximados para el TSPHeursticas de insercion
Podemos ELEGIR el nuevo nodo v para agregar al circuito tal que:
I v sea el nodo mas proximo a un nodo que ya esta en elcircuito.
I v sea el nodo mas lejano a un nodo que ya esta en el circuito.I v sea el nodo mas barato, o sea el que hace crecer menos la
longitud del circuito.
I v se elige al azar.
Heursticas y algoritmos aproximados para el TSPHeursticas de insercion
En el caso de grafos euclideanos (por ejemplo grafos en el planoR2), se puede implementar un algoritmo de insercion:
I Usando la capsula convexa de los nodos como circuito inicial.
I Insertando en cada paso un nodo v tal que el angulo formadopor las aristas (w , v) y (v , z), con w y z consecutivos en elcircuito ya construido, sea maximo.
Hay muchas variantes sobre estas ideas.
Heursticas y algoritmos aproximados para el TSPHeurstica del arbol generador
encontrar un arbol generador mnimo T de G
duplicar las aristas de T
armar un circuito euleriano E con los ejes de T ysus duplicados
recorrer E usando DFS y armar un circuitohamiltoniano de G
Cual es la complejidad de este algoritmo?
Heursticas y algoritmos aproximados para el TSPHeurstica del arbol generador
Teorema: Si las distancias del grafo G cumplen la desigualdadtriangular, la heurstica del arbol generador es un algoritmoaproximado con una perfomance en el peor caso dada por
l(CH)/l(C ) = XH(G )/X (G ) 2
O sea, si las distancias son euclideanas hay algoritmos polinomialespara el problema del TSP aproximado.
Heursticas y algoritmos aproximados para el TSPPerfomance de otros algoritmos aproximados en el peor caso
Si las distancias de G son euclideanas se puede probar que valenlas siguientes cotas para la perfomance en el peor caso:
Vecino mas proximo XH(G )/X (G ) 1/2(dlog ne+ 1)
Insercion del mas proximo XH(G )/X (G ) 2
Insercion del mas lejano XH(G )/X (G ) 2 log n + 0,16
Insercion del mas barato XH(G )/X (G ) 2
Heursticas y algoritmos aproximados para el TSPHeursticas de mejoramiento - Algoritmos de busqueda local
Como podemos mejorar la solucion obtenida por alguna heursticaconstructiva como las anteriores?
Heurstica 2-opt de Lin y Kernighan
obtener una solucion inicial Hpor ejemplo con alguna de las heursticas anteriores
mientras sea posible hacerelegir (ui , ui+1) y (uk , uk+1) H tal que
cuiui+1 + cukuk+1 > cuiuk + cui+1uk+1H := H \ {(ui , ui+1), (uk , uk+1)} {(ui , uk), (ui+1, uk+1)}
fin mientras
Cuando para este algoritmo? Se obtiene la solucion optima delTSP de este modo?
Heursticas y algoritmos aproximados para el TSPHeursticas de mejoramiento - Algoritmos de busqueda local
I En vez de elegir para sacar de H un par de aristas cualquieraque nos lleve a obtener un circuito de menor longitudpodemos elegir, entre todos los pares posibles, el par que noshace obtener el menor circuito (mas trabajo computacional).
I Esta idea se extiende en las heursticas k-opt donde se hacenintercambios de k aristas. Es decir, en vez de sacar dosaristas, sacamos k aristas de H y vemos cual es la mejorforma de reconstruir el circuito. En la practica se usa solo2-opt o 3-opt.
Algoritmos de descenso o busqueda localEsquema general
S = conjunto de solucionesN(s) = soluciones vecinasde la solucion sf (s) = valor de la solucion s
elegir una solucion inicial s Srepetir
elegir s N(s) tal que f (s) < f (s)reemplazar s por s
hasta que f (s) > f (s) para todos los s N(s)
Algoritmos de descenso o busqueda local
I Como determinar las soluciones vecinas de una solucion sdada?
I Que se obtiene con este procedimiento? Sirve?
I Optimos locales y globales
I Espacio de busqueda
Algoritmos de descenso o busqueda local
I Como determinar las soluciones vecinas de una solucion sdada?
I Que se obtiene con este procedimiento? Sirve?
I Optimos locales y globales
I Espacio de busqueda
Algoritmos de descenso o busqueda local
I Como determinar las soluciones vecinas de una solucion sdada?
I Que se obtiene con este procedimiento? Sirve?
I Optimos locales y globales
I Espacio de busqueda
Algoritmos de descenso o busqueda local
I Como determinar las soluciones vecinas de una solucion sdada?
I Que se obtiene con este procedimiento? Sirve?
I Optimos locales y globales
I Espacio de busqueda
Tabu Search
I Objetivo: minimizar una funcion f sobre un conjunto desoluciones S .
I Metaheurstica que gua una heurstica de busqueda local paraexplorar el espacio de soluciones evitando los optimos locales.
I Iterativamente se mueve de una solucion a otra hasta que secumple algun criterio de terminacion.
I Cada s S tiene asociada una vecindad N(s) S y cadasolucion s N(s) es alcanzada desde s realizandomovimientos.
Tabu Search
I Explorar todo N(s) puede ser impracticablecomputacionalmente.
I Restringe la busqueda a V N(s) con |V | |N(s)|.
I Usa memoria para definir V .
I Permite moverse de s a s aun si f (s ) > f (s) para salir de unoptimo local.
I Se pueden generar ciclos.
I Lista tabu: memoriza soluciones y vecindades consideradas eniteraciones anteriores.
Tabu Search - Lista Tabu
I Memoriza las |T | ultimas soluciones visitadas.I Memoriza movimientos reversos asocidos con los movimientos
hechos.
I Clasifica como tabu ciertos atributos de las soluciones.
I Memoria a corto plazo.I Tamano y permanencia en T .I Almacenar atributos o movimientos es mas efectivo.I Puede hacer que soluciones no visitadas sean tabu.I Funcion de aspiracion:
I cuando con un movimiento tabu se obtiene una solucion mejorque la mejor hasta ese momento, se permite elegirla.
I cuando todos los movimientos o vecinos posibles son tabu, seelige alguno de ellos (el menos tabu).
Tabu Search - Esquema general
elegir una solucion inicial s0 Sinicializar la lista tabu Tinicializar la funcion de aspiracion Amientras no se verifique el criterio de parada hacer
generar V {s N(s0) : s no es tabu o A(s) A(s)}elegir s0 V tal que f (s0) f (s) s V actualizar la funcion de aspiracion Aactualizar la lista tabu Tsi f (s0) < f (s) entonces
s := s0fin si
fin mientrasretornar s
Tabu Search
Que hay que hacer para usar este esquema?
I Determinar el conjunto de soluciones factibles S .I Determinar la funcion objetivo f .I Dar un procedimiento para generar los elementos de N(s).I Decidir el tamano del conjunto V N(s) que
sera considerado en cada iteracion.
I Definir la lista Tabu T y su tamano.I De ser posible definir una cota inferior para la funcion objetivo
f .
I Definir la funcion de aspiracion A(z) y el umbral deaceptacion.
I Definir criterios de parada.
Tabu Search
Los criterios de parada mas simples son:
I Se encontro una solucion optima (si es posible saberlo).
I {s N(s0) : s no es tabu o A(s) A(s)} = .
I Se alcanzo el numero maximo de iteraciones permitidas.
I El numero de iteraciones realizadas sin modificar s es mayorque un numero maximo determinado.
I Cualquier combinacion de los anteriores.
Tabu Search - Mejoras
Uso de la memoria a largo plazo:
I Frecuencia: guarda la frecuencia de ocurrencias de atributosen las soluciones visitadas para penalizar o premiar (segunconvenga) movimientos que usan atributos muy usados en elpasado.
I Intensificacion: intensifica la busqueda en alguna region de Sporque es considerada buena bajo algun criterio.
I Diversificacion: explora nuevas regiones de S no exploradas.I Camino de soluciones entre dos soluciones prometedoras.I Etc.
Tabu Search - Ejemplo: Viajante de comercio
Solucion inicial: dada por alguna heurstica o al azar.
Espacio de soluciones: permutaciones de (1, 2, . . . , n).
Tamano del espacio: (n 1)!/2.Movimientos: k intercambios, por ejemplo k = 2.
Cardinal de N(s), |N(s)|: n(n 1)/2.
Es facil generar vecinos al azar y actualizar el costo.
Con estas definiciones se puede usar el esquema basico.