Está en la página 1de 50

Grafos Eulerianos y Hamiltonianos

Algoritmos y Estructuras de Datos III

Grafos eulerianos
Deniciones: Un circuito C en un grafo (o multigrafo) G es un circuito euleriano si C pasa por todos las aristas de G una y slo una o vez. Un grafo euleriano es un grafo que tiene un circuito euleriano (o multigrafo).

Grafos eulerianos
Deniciones: Un circuito C en un grafo (o multigrafo) G es un circuito euleriano si C pasa por todos las aristas de G una y slo una o vez. Un grafo euleriano es un grafo que tiene un circuito euleriano (o multigrafo). Teorema (Euler 1736): Un grafo (o multigrafo) conexo es euleriano si y slo si todos sus nodos tienen grado par. o A partir de la demostracin del teorema de Euler se puede escribir o un algoritmo para construir un circuito euleriano para un grafo que tiene todos sus nodos de grado par.

Grafos eulerianos
u4 u1 u6 u3 u5

u2

u7

u8

Grafos eulerianos
u4 u1 u6 u3 u5

u2

u7

u8

Grafos eulerianos
u4 u1 u6 u3 u5

u2

u7

u8

Grafos eulerianos
u4 u1 u6 u3 u5

u2

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 Z mientras exista e X \ Z hacer elegir w tal que existe (w , u) Z y (w , z) X \ Z desde w construir un ciclo D con D Z = Z := unir Z y D por medio de w n mientras retornar Z

Cul es la complejidad de este algoritmo? a

Grafos eulerianos
Deniciones: Un camino euleriano en un grafo (o multigrafo) G es un camino que pasa por cada arista de G una y slo una vez. o Un grafo orientado o digrafo, se dice euleriano si tiene un circuito orientado que pasa por cada arco de G una y slo una o vez.

Grafos eulerianos
Deniciones: Un camino euleriano en un grafo (o multigrafo) G es un camino que pasa por cada arista de G una y slo una vez. o Un grafo orientado o digrafo, se dice euleriano si tiene un circuito orientado que pasa por cada arco de G una y slo una o vez. Teorema: Un grafo (o multigrafo) conexo tiene un camino euleriano si y slo si tiene exactamente dos nodos de grado impar. o

Grafos eulerianos
Deniciones: Un camino euleriano en un grafo (o multigrafo) G es un camino que pasa por cada arista de G una y slo una vez. o Un grafo orientado o digrafo, se dice euleriano si tiene un circuito orientado que pasa por cada arco de G una y slo una o vez. Teorema: Un grafo (o multigrafo) conexo tiene un camino euleriano si y slo si tiene exactamente dos nodos de grado impar. o Teorema: Un digrafo conexo es euleriano si y slo si para todo o nodo v de G se verca que din (v ) = dout (v ).

Problema del cartero chino (Guan, 1962)


Denicin: Dado un grafo G = (V , X ) con longitudes asignadas a o sus aristas, l : X R 0 , el problema del cartero chino consiste en encontrar un circuito que pase por cada arista de G al menos una vez de longitud m nima.

Problema del cartero chino (Guan, 1962)


Denicin: Dado un grafo G = (V , X ) con longitudes asignadas a o sus aristas, l : X R 0 , el problema del cartero chino consiste en encontrar un circuito que pase por cada arista de G al menos una vez de longitud m nima. Si G es euleriano, un circuito euleriano es la solucin del o problema del cartero chino. Hay algoritmos polinomiales para el problema del cartero chino cuando G es orientado o no orientado. Pero no se conocen algoritmos polinomiales (el problema no est computacionalmente resuelto) si el grafo es mixto a (algunas aristas orientados y otros no).

Grafos hamiltonianos
Deniciones: Un circuito en un grafo G es un circuito hamiltoniano si pasa por cada nodo de G una y slo una vez. o Un grafo se dice hamiltoniano si tiene un circuito hamiltoniano.

Grafos hamiltonianos
Deniciones: Un circuito en un grafo G es un circuito hamiltoniano si pasa por cada nodo de G una y slo una vez. o Un grafo se dice hamiltoniano si tiene un circuito hamiltoniano. No se conocen buenas caracterizaciones para grafos hamiltonianos.

Grafos hamiltonianos
Deniciones: Un circuito en un grafo G es un circuito hamiltoniano si pasa por cada nodo de G una y slo una vez. o Un grafo se dice hamiltoniano si tiene un circuito hamiltoniano. No se conocen buenas caracterizaciones para grafos hamiltonianos. Cmo intentar construir un circuito hamiltoniano? o

Grafos hamiltonianos
Deniciones: Un circuito en un grafo G es un circuito hamiltoniano si pasa por cada nodo de G una y slo una vez. o Un grafo se dice hamiltoniano si tiene un circuito hamiltoniano. No se conocen buenas caracterizaciones para grafos hamiltonianos. Cmo intentar construir un circuito hamiltoniano? o No se conocen algoritmos polinomiales para decidir si un grafo es hamiltoniano o no.

Grafos hamiltonianos

Teorema (condicin necesaria): Sea G un grafo conexo. Si o existe W V tal que G \ W tiene c componentes conexas con c > |W | entonces G no es hamiltoniano. Es cierta la rec proca de este teorema?

Grafos hamiltonianos

Teorema (condicin necesaria): Sea G un grafo conexo. Si o existe W V tal que G \ W tiene c componentes conexas con c > |W | entonces G no es hamiltoniano. Es cierta la rec proca de este teorema? Teorema (Dirac) (condicin suciente): Sea G un grafo con o n 3 y tal que para todo v V se verica que d(v ) n/2 entonces G es hamiltoniano. Es cierta la rec proca de este teorema?

Metaheur sticas
Heur sticas clsicas. a Metaheur sticas o heur sticas modernas. Cundo usarlas? a Problemas para los cuales no se conocen buenos algoritmos exactos. Problemas dif ciles de modelar. Cmo se evalan? o u Problemas test. Problemas reales. Problemas generados al azar. Cotas inferiores.

Problema del viajante de comercio (TSP)


Denicin: Dado un grafo G = (V , X ) con longitudes asignadas a o las aristas, l : X R 0 , queremos determinar un circuito hamiltoniano de longitud m nima. No se conocen algoritmos polinomiales para resolver el problema del viajante de comercio. Tampoco se conocen algoritmos -aproximados polinomiales para el TSP general (si se conocen cuando las distancias son euclideanas). Es el problema de optimizacin combinatoria ms estudiado. o a

Heur sticas y algoritmos aproximados para el TSP


Heur stica del vecino ms cercano a
elegir un nodo v orden(v ) := 0 S := {v } i := 0 mientras S = V hacer i := i + 1 elegir la arista (v , w ) ms barata con w S a / orden(w ) := i S := S {w } v := w n mientras retornar orden

Cul es la complejidad de este algoritmo? a

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de insercin o
C := un circuito de longitud 3 S := {nodos de C } mientras S = V hacer ELEGIR un nodo v S / S := S {v } INSERTAR v en C n mientras retornar C

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de insercin o
C := un circuito de longitud 3 S := {nodos de C } mientras S = V hacer ELEGIR un nodo v S / S := S {v } INSERTAR v en C n mientras retornar C

Cmo ELEGIR? o Cmo INSERTAR? o

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de insercin o
C := un circuito de longitud 3 S := {nodos de C } mientras S = V hacer ELEGIR un nodo v S / S := S {v } INSERTAR v en C n mientras retornar C

Cmo ELEGIR? o variantes de la heur stica de insercin o Cmo INSERTAR? o

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de insercin o

Para INSERTAR el nodo v elegido: Sea cvi vj es el costo o la longitud de la arista (vi , vj ). Elegimos dos nodos consecutivos en el circuito vi , vi+1 tal que cvi v + cvvi+1 cvi vi+1 sea m nimo. Insertamos v entre vi y vi+1 .

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de insercin o

Podemos ELEGIR el nuevo nodo v para agregar al circuito tal que: v sea el nodo ms prximo a un nodo que ya est en el a o a circuito.

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de insercin o

Podemos ELEGIR el nuevo nodo v para agregar al circuito tal que: v sea el nodo ms prximo a un nodo que ya est en el a o a circuito. v sea el nodo ms lejano a un nodo que ya est en el circuito. a a

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de insercin o

Podemos ELEGIR el nuevo nodo v para agregar al circuito tal que: v sea el nodo ms prximo a un nodo que ya est en el a o a circuito. v sea el nodo ms lejano a un nodo que ya est en el circuito. a a v sea el nodo ms barato, o sea el que hace crecer menos la a longitud del circuito.

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de insercin o

Podemos ELEGIR el nuevo nodo v para agregar al circuito tal que: v sea el nodo ms prximo a un nodo que ya est en el a o a circuito. v sea el nodo ms lejano a un nodo que ya est en el circuito. a a v sea el nodo ms barato, o sea el que hace crecer menos la a longitud del circuito. v se elige al azar.

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de insercin o

Podemos ELEGIR el nuevo nodo v para agregar al circuito tal que: v sea el nodo ms prximo a un nodo que ya est en el a o a circuito. v sea el nodo ms lejano a un nodo que ya est en el circuito. a a v sea el nodo ms barato, o sea el que hace crecer menos la a longitud del circuito. v se elige al azar.

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de insercin o

En el caso de grafos euclideanos (por ejemplo grafos en el plano o R 2 ), se puede implementar un algoritmo de insercin: Usando la cpsula convexa de los nodos como circuito inicial. a Insertando en cada paso un nodo v tal que el ngulo formado a por las aristas (w , v ) y (v , z), con w y z consecutivos en el circuito ya construido, sea mximo. a Hay muchas variantes sobre estas ideas.

Heur sticas y algoritmos aproximados para el TSP


Heur stica del rbol generador a

encontrar un rbol generador mnimo T de G a duplicar las aristas de T armar un circuito euleriano E con los ejes de T y sus duplicados recorrer E usando DFS y armar un circuito hamiltoniano de G

Cul es la complejidad de este algoritmo? a

Heur sticas y algoritmos aproximados para el TSP


Heur stica del rbol generador a

Teorema: Si las distancias del grafo G cumplen la desigualdad triangular, la heur stica del rbol generador es un algoritmo a aproximado con una perfomance en el peor caso dada por l(C H )/l(C ) = X H (G )/X (G ) 2 O sea, si las distancias son euclideanas hay algoritmos polinomiales para el problema del TSP aproximado.

Heur sticas y algoritmos aproximados para el TSP


Perfomance de otros algoritmos aproximados en el peor caso

Si las distancias de G son euclideanas se puede probar que valen las siguientes cotas para la perfomance en el peor caso:

Vecino ms prximo a o Insercin del ms prximo o a o Insercin del ms lejano o a Insercin del ms barato o a

X H (G )/X (G ) 1/2( log n + 1) X H (G )/X (G ) 2 X H (G )/X (G ) 2 log n + 0,16 X H (G )/X (G ) 2

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de mejoramiento - Algoritmos de bsqueda local u
Cmo podemos mejorar la solucin obtenida por alguna heur o o stica constructiva como las anteriores? Heur stica 2-opt de Lin y Kernighan obtener una solucin inicial H o
por ejemplo con alguna de las heursticas anteriores

mientras sea posible hacer elegir (ui , ui+1 ) y (uk , uk+1 ) H tal que cui ui+1 + cuk uk+1 > cui uk + cui+1 uk+1 H := H \ {(ui , ui+1 ), (uk , uk+1 )} {(ui , uk ), (ui+1 , uk+1 )} n mientras

Cundo para este algoritmo? Se obtiene la solucin ptima del a o o TSP de este modo?

Heur sticas y algoritmos aproximados para el TSP


Heur sticas de mejoramiento - Algoritmos de bsqueda local u

En vez de elegir para sacar de H un par de aristas cualquiera que nos lleve a obtener un circuito de menor longitud podemos elegir, entre todos los pares posibles, el par que nos hace obtener el menor circuito (ms trabajo computacional). a Esta idea se extiende en las heur sticas k-opt donde se hacen intercambios de k aristas. Es decir, en vez de sacar dos aristas, sacamos k aristas de H y vemos cual es la mejor forma de reconstruir el circuito. En la prctica se usa slo a o 2-opt o 3-opt.

Algoritmos de descenso o bsqueda local u


Esquema general

S = conjunto de soluciones N(s) = soluciones vecinasde la solucin s o f (s) = valor de la solucin s o

elegir una solucin inicial s S o repetir 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 bsqueda local u

Cmo determinar las soluciones vecinas de una solucin s o o dada?

Algoritmos de descenso o bsqueda local u

Cmo determinar las soluciones vecinas de una solucin s o o dada? Qu se obtiene con este procedimiento? Sirve? e

Algoritmos de descenso o bsqueda local u

Cmo determinar las soluciones vecinas de una solucin s o o dada? Qu se obtiene con este procedimiento? Sirve? e Optimos locales y globales

Algoritmos de descenso o bsqueda local u

Cmo determinar las soluciones vecinas de una solucin s o o dada? Qu se obtiene con este procedimiento? Sirve? e Optimos locales y globales Espacio de bsqueda u

Tabu Search

Objetivo: minimizar una funcin f sobre un conjunto de o soluciones S. Metaheur stica que gu una heur a stica de bsqueda local para u explorar el espacio de soluciones evitando los ptimos locales. o Iterativamente se mueve de una solucin a otra hasta que se o cumple algn criterio de terminacin. u o Cada s S tiene asociada una vecindad N(s) S y cada solucin s N(s) es alcanzada desde s realizando o movimientos.

Tabu Search
Explorar todo N(s) puede ser impracticable computacionalmente. Restringe la bsqueda a V N(s) con |V | u Usa memoria para denir V . Permite moverse de s a s aun si f (s ) > f (s) para salir de un o ptimo local. Se pueden generar ciclos. Lista tab: memoriza soluciones y vecindades consideradas en u iteraciones anteriores. |N(s)|.

Tabu Search - Lista Tab u


Memoriza las |T | ultimas soluciones visitadas. Memoriza movimientos reversos asocidos con los movimientos hechos. Clasica como tab ciertos atributos de las soluciones. u

Memoria a corto plazo. Tamao y permanencia en T . n Almacenar atributos o movimientos es ms efectivo. a Puede hacer que soluciones no visitadas sean tab. u Funcin de aspiracin: o o
cuando con un movimiento tab se obtiene una solucin mejor u o que la mejor hasta ese momento, se permite elegirla. cuando todos los movimientos o vecinos posibles son tab, se u elige alguno de ellos (el menos tabu).

Tabu Search - Esquema general


elegir una solucin inicial s0 S o inicializar la lista tab T u inicializar la funcin de aspiracin A o o mientras no se verifique el criterio de generar V {s N(s0 ) : s no es tabu elegir s0 V tal que f (s0 ) f (s) s actualizar la funcin de aspiracin o o actualizar la lista tab T u si f (s0 ) < f (s ) entonces s := s0 n si n mientras retornar s

parada hacer o A(s) A(s )} V A

Tabu Search
Qu hay que hacer para usar este esquema? e Determinar el conjunto de soluciones factibles S. Determinar la funcin objetivo f . o Dar un procedimiento para generar los elementos de N(s). Decidir el tamao del conjunto V N(s) que n ser considerado en cada iteracin. a o Denir la lista Tab T y su tamao. u n De ser posible denir una cota inferior para la funcin objetivo o f. Denir la funcin de aspiracin A(z) y el umbral de o o aceptacin. o Denir criterios de parada.

Tabu Search
Los criterios de parada ms simples son: a Se encontr una solucin ptima (si es posible saberlo). o o o {s N(s0 ) : s no es tabu o A(s) A(s )} = . Se alcanz el nmero mximo de iteraciones permitidas. o u a El nmero de iteraciones realizadas sin modicar s es mayor u que un nmero mximo determinado. u a Cualquier combinacin de los anteriores. o

Tabu Search - Mejoras

Uso de la memoria a largo plazo: Frecuencia: guarda la frecuencia de ocurrencias de atributos en las soluciones visitadas para penalizar o premiar (segn u convenga) movimientos que usan atributos muy usados en el pasado. Intensicacin: intensica la bsqueda en alguna regin de S o u o porque es considerada buena bajo algn criterio. u Diversicacin: explora nuevas regiones de S no exploradas. o Camino de soluciones entre dos soluciones prometedoras. Etc.

Tabu Search - Ejemplo: Viajante de comercio

Solucin inicial: dada por alguna heur o stica o al azar. Espacio de soluciones: permutaciones de (1, 2, . . . , n). Tamao del espacio: (n 1)!/2. n Movimientos: k intercambios, por ejemplo k = 2. Cardinal de N(s), |N(s)|: n(n 1)/2. Es fcil generar vecinos al azar y actualizar el costo. a Con estas deniciones se puede usar el esquema bsico. a

También podría gustarte