Caminos y Flujos optimales Introducción a la Investigación de Operaciones 2007
Contenido Definiciones básicas. Conexidad. Clausura transitiva. Esqueletos y caminos optimales. Redes. Flujos. Algoritmo de flujo optimal.
Bibliografía Hillier &Lieberman, Introducción a la I.O. Mc Graw Hill,. Baase Sara, Computers Algorithms Adisson Wesley,. Tucker, A. Applied Combinatorics. J. Wiley & Sons, (1980). Otros.
Introducción GRAFO G: herramienta de modelado y análisis de sistemas, conjunto de elementos, relación(es) definida entre pares de elementos, nivel de abstracción, clara representación de relaciones de orden, precedencia, vecindad.
Introducción Sistema: organigrama de una empresa. conjunto de elementos X (empleados,gerentes, secretarias), relación definida entre pares de elementos. (x i,x k ) = x i inmediatamente superior a x k ( o inmediatamente inferior)
Introducción. Definiciones Un grafo G es una dupla G = (X, U), X : conjunto finito y no vacío de vértices, x 1, x 2, x 3,..., x n y se representan como puntos. x1 u4 x4 u1 u5 u'2 u2 u3 x2 x3 U : familia de pares de elementos tomados de X llamados aristas. u 1, u 2, u 3,..., u m se dibujan como líneas. Orden de G es el número de vértices del grafo. Es el cardinal del conjunto X de vértices. X =n.
Introducción. Definiciones Grafo orientado G*, cuando existe una relación de precedencia entre los elementos. Los elementos de X se llaman nodos, y los de U, arcos. U XxX = { u i = (x k,x j ): 1 i U, 1 j, k X, x k, x j X} Todos los grafos son orientados. x1 x2 Todo concepto no orientado en un grafo G = (X,U), deber ser considerado como aplicable de hecho, en un grafo orientado G* al que le corresponde la orientación en los dos sentidos de cada arista. x3
Introducción Problema: Puentes de Konigsberg. 1730, Euler. Modelo: Grafo G Grafo G: estructura que admitimos adecuada, en cuanto a propiedades que nos interesan. Problemas combinatorios. A B D C
Introducción El problema: dado un multigrafo, encontrar un camino que recorra el grafo pasando por cada arista exactamente una vez. Solución: G conexo y de grado par. Condición suficiente para que exista un ciclo euleriano. A B C D
Introducción Otra aplicación: buscar el camino a seguir por un cobrador. Debe pasar por todas las casas una sola vez. Se conocen las distancias entre pares de casas. Solución: encontrar Camino Hamiltoniano óptimo. Problema NP. NOTA: la búsqueda de un Ciclo Euleriano 0(n) polinomial de orden n.
Ejemplo El siguiente grafo representa una red de comunicaciones. Estamos interesados en la vulnerabilidad respecto a interrupciones accidentales. a b c d e f Problema1: Identificar líneas y centros de conexiones que deben permanecer en servicio para evitar la desconexión de la red. No existe ninguna línea que eliminada desconecte la red. El vértice d, si no comunica, desconecta la red.
Problema 2: Encontrar un conjunto minimal de aristas necesarias para conectar los 6 vértices. Hay varios conjuntos mínimos posibles. Uno de ellos es conjunto minimal: {(a,b),(b,c),(c,d),(d,e),(d,f)}. Resultado general: Sea un grafo G de n vértices, el conjunto mínimo de conexión de G (si existe) siempre tiene n-1 aristas. b e a d c f
Cadena (concepto no orientado) Es una secuencia de aristas de G, tal que cada arista de la secuencia tiene un extremo común con el arco precedente y otra con el siguiente. Largo de una cadena, es el número de aristas de la secuencia. Cadena elemental : no repite vértices. Cadena simple: no repite aristas. Introducción. Recorridos
Introducción. Recorridos Camino (concepto orientado) Es una cadena µ = {u 1, u 2,..., u q } en la que para todo u i (con i < q, que no sea el último) el extremo terminal de u i coincide con el extremo inicial de u i+1. Largo de un camino, camino elemental y simple son definiciones análogas a las de cadenas, (con la salvedad de la orientación). Sendero, es un camino elemental ( no repite nodos). Vía, es un camino cuyos arcos se pueden recorrer en su sentido directo o contrario.
Problema del camino entre dos puntos Supongamos que un hombre debe pasar a la otra orilla de un río llevando consigo una oveja, un repollo y un lobo. El inconveniente que se le plantea es que sólo puede cruzar con uno de ellos a la vez y sospecha que si deja solos a la oveja con la repollo ó con el lobo, la oveja se comerá al repollo ó el lobo se comerá a la oveja. Modelamos la estructura de este sistema mediante un grafo y solucionamos
HLRO HLR HLO HRO HO LR L R O Nadie H: Hombre. L: lobo. R: Repollo. O: Oveja. Estado inicial - HLCO Estado final - NADIE
Definiciones Grafo Conexo: para cada par de vértices de G, existe una cadena que los une. En grafos orientados se definen 2 conceptos: a) Débilmente conexo: si existe una cadena (sin tener en cuenta la orientación) que une cada par de nodos distintos. b) Fuertemente conexo: si para cada par ordenado de nodos x e y, existe un camino de x a y. Una componente conexa de G, es un subgrafo engendrado por aquellos vértices que pueden unirse a un vértice x i dado, mediante una cadena (puede ser todo G).
Conexo Fuertemente conexo Debilmente conexo
Ciclos y Circuitos Ciclo: cadena simple, cuyos dos vértices extremos, inicial y terminal, coinciden. Circuito: ciclo donde para todo arco u i (con i < q) el extremo terminal de u i coincide con la extremo inicial del u i+1, entonces, es un camino donde el extremo final del último arco coincide con el extremo inicial del primero. Se extienden los conceptos de elemental, simple.
Cadena Euleriana: cadena simple Ciclo Euleriano: ciclo simple A B C TEOREMA D Un multigrafo (no orientado) G = (X,U) posee un ciclo Euleriano s s i G es conexo y todos sus vértices tienen grado par.
a c d e f g b G conexo y vértices grado par existe ciclo euleriano k h i j l m a n b o C1= a-d-j-n-o-k-l-h-f-e-b-a. d j n k e o f l h
a b c d e f g h k i j l m n o C1= a-d-j-n-o-k-lh-f-e-b-a. C2= d-c-i-j-k-e-d C3= h-g-m-h. C = C1 U C2 UC3 d j n a k b e o f l h c d e i j k h m g
a b c d e f g k h i j l m n o a-d-c-i-j-k-e-d-j-n-o-k-l-h-g-m-h-f-e-b-a,
TEOREMA Ciclo Euleriano ==> G conexo y vértices grado par. Dem Existe cadena que visita todos los vértices por lo menos una vez (conexo). No repite aristas, por lo tanto cada vez que entra y sale de un vértice lo hace por aristas distintas, (grado par) G conexo y vértices grado par ==> existe Ciclo Euleriano. Dem. Por construcción generalizando el procedimiento anterior.
c Corolario E.2: Un multigrafo posee una cadena Euleriana, si y solo si es conexo y tiene exactamente dos vértices de grado impar. Se demuestra observando lo que sucede al agregarle una arista cuyas extremidades sean los dos vértices de grado impar. El concepto de ciclo Euleriano es utilizado en la planificación de redes de alta tensión entre varias ciudades d e b a
Arboles y Algoritmos de Búsqueda. Arbol: es un grafo finito, conexo, sin ciclos y con por lo menos 2 vértices Teorema T.1: Un árbol con n vértices tiene n-1 aristas. Arborescencia, es un árbol dirigido con un nodo llamado raiz, tal que existe un único camino desde la raiz a cualquier otro nodo del árbol.
Esqueleto de G (árbol de cubrimiento - spanning tree) es un subgrafo que es un árbol y que contiene todos los vértices de G. Procedimientos de Construcción: (en el práctico) 1- por Búsqueda Primero en Profundidad: BPP (depth -first search: DFS) 2.- por Búsqueda Primero a lo Ancho: BPA (breadth-first-search: BFS). Importante : si el grafo no es conexo, entonces NO existe esqueleto que lo recorra.
Algoritmo para verificar que un grafo es conexo (en el práctico) 1) Use BPP ( o BPA) para tratar de construir un esqueleto del grafo. 2) Si todos los vértices del árbol son alcanzados en la búsqueda, entonces se ha encontrado un esqueleto del grafo y por lo tanto el grafo es conexo. 3) Si la búsqueda no recorrió todos los vértices, entonces el grafo no es conexo.
Esqueletos: en el práctico Algoritmo de Búsqueda Primero en Profundidad Sea G = (X,U), x, v pertenecen al conjunto X DFS(x) Visite y marque x Mientras exista un vértice v no marcado adyacente a x DFS(v) fin mientras fin
Esqueletos: en el práctico Algoritmo de Búsqueda Primero a lo Ancho Sea G = (X,U), x, v, s pertenecen al conjunto X, Q es una cola o lista FIFO. BFS(x) Visite y marque x. Inserte x en Q Mientras Q no esté vacía realice Saco el primer elemento s de Q Para cada vértice v no marcado adyacente a s visite y marque v inserte v en Q fin para fin mientras fin
MEDIDA DE CONEXION DE GRAFOS Cuerda de un esqueleto en un grafo conexo G cualquier arista de G que no pertenece al esqueleto E. Afirmación: Cualquier subgrafo compuesto por el esqueleto y una cuerda contiene un ciclo cuerda esqueleto
Número ciclomático v(g) de un grafo G, número de cuerdas de cualquier esqueleto en G. Proposición: Sea un grafo G, m el número de aristas, n el número de vértices y c el número de componentes conexas, entonces v(g) = m - n + c. v(g) = 9-7 + 1= 3. Medida de conexión cuerda esqueleto
ESQUELETOS OPTIMALES (mínimo) Sea G = (X, U, W) grafo ponderado de orden n, Esqueleto mínimo es aquel de valor mínimo. Permiten, por ejemplo, calcular el costo mínimo de conexión de un grafo.
A 1 B 7 C 3 D 2 H 8 I 4 P 4 3 5 G 2 F 1 6 2 3 J 4 K 10 2 5 7 O 8 N 8 5 7 3 E L M
A 1 B 7 C 3 D 2 H 8 I 4 P 4 3 5 G 2 F 1 6 2 3 J 4 K 10 2 5 7 O 8 N 8 5 7 3 E L M
ESQUELETOS OPTIMALES (mínimo) Los algoritmos de Kruskal y Prim encuentran un esqueleto mínimo en G. Se demuestra que estos algoritmos construyen esqueletos MINIMOS.
Esqueleto Mínimo Esqueleto de G =(X,U) es un subgrafo que es un árbol y que contiene todos los vértices de G. Esqueleto Mínimo de G = (X, U, W) de orden n, es aquel esqueleto de valor mínimo.
ALGORITMO DE KRUSKAL Repita los siguientes pasos hasta que el conjunto T tenga (n-1) aristas ( T = = n-1): 1) Al comenzar T = (vacío) 2) Agregue a T las aristas de menor valor que no formen un ciclo con las aristas que ya están en T.
ALGORITMO DE PRIM Repita hasta que el árbol T tenga (n-1) aristas: 1) Al comienzo tome cualquier arista que tenga el menor valor asignado. 2) Agregue a T la arista de valor mínimo, conformada por un vértice en T y otro vértice que no pertenezca a T.
Optimalidad Se demuestra que estos algoritmo encuentran el óptimo. La validez y complejidad de los algoritmos propuestos se debe demostrar.
A 1 B 7 C 3 D 2 H 8 I 4 P 4 3 5 G 2 F 1 6 2 3 J 4 K 10 2 5 7 O 8 N 8 5 7 3 E L M Valor: 46