Professional Documents
Culture Documents
Flujo en Redes
in34a - Optimizacin o
Flujo en Redes
Flujo en redes corresponde al problema de pasar un ujo por una red de nodos interconectados. Los problemas de Flujos en Redes son comunes en el rea de transporte, comunicaa ciones, electricidad e informtica. a Para resolver el problema de ujo en redes se utiliza la teor de Grafos, cuyo pionero a fue Leonhard Euler (1736). En este cap tulo veremos el problema del ujo mximo y de la ruta ms corta, a partir a a de los cuales se puede obtener solucin a otros problemas de ujo en redes. o
Flujo en Redes
in34a - Optimizacin o
Conceptos Bsicos a
Un Grafo es una estructura matemtica compuesta de un conjunto de puntos denoa minados nodos o vrtices y un conjunto de trazos que unen los nodos denominados e arcos o aristas. Si los arcos son echas el grafo es orientado, si corresponde solo a lineas es un grafo no orientado. En este cap tulo trabajaremos con grafos orientados. Veamos formalmente como se dene un grafo orientado: Denicin: o Un grafo orientado G = [N, A] es un sistema formado por un conjunto nito no vac N = {1, 2, . . . , n} cuyos elementos se llaman nodos y un conjunto A de pares o ordenados de elementos de N llamados arcos. Observacin: Se denota |N | = n y |A| = m. o
Flujo en Redes
in34a - Optimizacin o
Conceptos Bsicos a
Ej: G = [N, A] con N = {1, 2, 3, 4, 5} y A = {(1, 2), (1, 3), (2, 3), (2, 4), (3, 3), (3, 4), (3, 5), (4, 5)}
Observacin: El arco (i, j) denota un arco que va desde el nodo i al nodo j. Este o arco se denomina incidente en los nodos i y j. Adems i y j se denominan nodos a adyacentes dado que existe un arco entre ellos. Denicin: o Dado un grafo G = [N, A], un subgrafo es un grafo G = [N , A ] donde N N y A A.
Flujo en Redes 3
in34a - Optimizacin o
Conceptos Bsicos a
Denicin: o Un camino entre dos nodos i y j, en un grafo orientado G, es una secuencia de nodos y arcos de G que comunica los 2 nodos. Observacin: Si los nodos l y k pertenecen al camino denido anteriormente y son o consecutivos en la secuencia, entonces el arco (l, k) o el (k, l) pertenece al camino. Si el arco (l, k) pertenece al camino, se dice que es un arco hacia adelante y si el arco (k, l) pertenece al camino, se dice que es un arco hacia atrs o en reversa. Estrictamente a una secuencia que solo contenga arcos hacia adelante se denomina camino y una secuencia que contiene arcos hacia adelante y hacia atrs se denomina cadena, sin a embargo, en este cap tulo se hablar indistintamente de camino en ambos casos. a
Flujo en Redes 4
in34a - Optimizacin o
Conceptos Bsicos a
Denicin: o Un circuito en un grafo orientado es un camino donde el nodo inicial y el nodo nal coinciden. Observacin: Un circuito elemental es aquel circuito que slo posee un nodo. Por lo o o tanto, posee solo un arco que comienza y termina en el mismo nodo. Ej:
En la gura, los arcos (1, 2) y (1, 3) corresponden a un camino entre los nodos 1 y 3, mientras que los arcos (1, 2), (2, 4), (3, 4) y (1, 3) forman un circuito.
Flujo en Redes 5
in34a - Optimizacin o
Conceptos Bsicos a
Denicin: o Un grafo es conexo si existe un camino entre cada par de nodos.
Flujo en Redes
in34a - Optimizacin o
Conceptos Bsicos a
Denicin: o Se denomina rbol generador de G = [N, A] a un subgrafo G = [N, A ] de G tal a que G es un rbol. a
Observacin: Notar que el conjunto de nodos de G y del rbol generador de G debe o a ser el mismo. Propiedades de un Arbol: 1. Contiene n 1 arcos. 2. Existe un unico camino entre cada par de nodos.
Flujo en Redes 7
in34a - Optimizacin o
Conceptos Bsicos a
3. Si se elimina un arco, se obtiene un grafo no conexo compuesto por 2 rboles. a 4. Si se agrega un arco cualquiera, se forma un circuito unico, obteniendose un grafo que no es un rbol. a 5. Existe al menos un nodo cuyo grado (cantidad de arcos que inciden en un nodo) es igual a 1. Denicin: o Grafo Completo es quel en que cada par de nodos est conectado por un arco. a a Denicin: o Un grafo es bipartito si el conjunto N de nodos se puede particionar en 2 conjuntos N1 y N2, es decir, N = N1 N2, N1 N2 = , de modo que cada arco del grafo tenga un nodo en N1 y otro en N2 Observacin: En un grafo bipartito no existen arcos con nodo inicial y nal en el o mismo conjunto de la particin. o
Flujo en Redes 8
in34a - Optimizacin o
Conceptos Bsicos a
Flujo en Redes
in34a - Optimizacin o
Representacin de un Grafo o
Al tener un grafo con muchos nodos se vuelve inmanejable su representacin grca. o a Adems existen muchas formas grcas de representar un grafo, algunas entregan a a soluciones ms claras que otras. a Se mostrar una forma de representar un grafo prescindiendo de su representacin a o grca. a Denicin: o Una matriz de incidencia E de un grafo es una matriz que reeja cmo inciden los o arcos en los nodos, conteniendo en cada la un nodo y en cada columna un arco del grafo que representan. Sus valores se construyen de la siguiente forma: Sea a un arco del grafo G, entonces se dene: 1 si el arco a comienza en el nodo k 1 si el arco a termina en el nodo k E = (eka) = 0 en otro caso
Flujo en Redes
10
in34a - Optimizacin o
Matriz de Incidencia
Ej:
1 2 3 4
(1,2) 1 -1 0 0
(1,3) 1 0 -1 0
(2,3) 0 1 -1 0
(2,4) 0 1 0 -1
(3,4) 0 0 1 -1
Flujo en Redes
11
in34a - Optimizacin o
Matriz de Incidencia
Teorema: Si E es la matriz de incidencia nodo-arco de un grafo conexo de n nodos, entonces el rango de E es n 1. Denicin: o Una matriz A es totalmente unimodular si cada subdeterminante de es 0, 1 o -1. Teorema: La matriz de incidencia nodo-arco de un grafo dirigido E es totalmente unimodular.
Flujo en Redes
12
in34a - Optimizacin o
in34a - Optimizacin o
fki = 0
k:(k,i)A
14
in34a - Optimizacin o
fki = qi
i N
Donde qi = 0 si no hay ujo exgeno asociado al nodo, qi con signo + si el ujo o exgeno entra al nodo y qi con signo si el ujo exgeno sale del nodo. o o
Flujo en Redes
15
in34a - Optimizacin o
Flujo en Redes
16
in34a - Optimizacin o
Flujo en Redes
17
in34a - Optimizacin o
Flujo en Redes
18
in34a - Optimizacin o
Ford y Fulkerson
Para resolver el problema anteriormente planteado se usa el algoritmo Ford y Fulkerson: Supongamos que se tiene un ujo factible en el grafo G = [N, A]. Si todas las cotas inferiores son cero, entonces el ujo factible inicial es F = 0, con fij = 0 (i, j). Denicin: o Dado un ujo factible f , un camino C desde el origen al nodo destino es un camino de aumento con respecto a f si: fij < uij fij > lij arco (i, j) hacia adelante en C, o arco (i, j) hacia atrs en C a
Observacin: C en realidad es una cadena en G. o Luego, dado un ujo factible f en G, con ujo exgeno F , si no existe camino de o aumento de ujo con respecto a f , entre el nodo origen y el destino, entonces F es mximo. a
Flujo en Redes 19
in34a - Optimizacin o
Ford y Fulkerson
La idea del algoritmo es construir iterativamente el ujo mximo, a partir de un ujo a factible, determinando en cada iteracin un camino de aumento de ujo con respecto al o ujo existente. De esta forma, se puede incrementar el ujo existente en una cantidad determinada por las capacidades residuales de los arcos pertenecientes al camino. Esto se repite hasta que no exista ningn camino de aumento de ujo entre el nodo u de origen y el destino. Cada iteracin del algoritmo consta de 2 partes: o Bsqueda de un camino de aumento de ujo con respecto al ujo existente. u Determinacin de la cantidad de ujo adicional mxima que puede transportar el o a camino determinado en la primera parte. Para determinar un camino de aumento de ujo se utiliza un grafo auxiliar G , denominado grafo incremental o residual, donde los nodos son los mismos de G, pero los arcos se determinan de la siguiente forma:
Flujo en Redes 20
in34a - Optimizacin o
Ford y Fulkerson
Si fij < uij en G, entonces el arco (i, j) se incorpora a G con capacidad residual o incremental ij = uij fij . Si fij > lij en G, entonces el arco (j, i) se incorpora a G con capacidad residual o incremental ij = fij lij . Observacin: Si lij < fij < uij en G, se generan 2 arcos en G . o Una vez construido el grafo auxiliar se procede a buscar un camino entre el nodo inicial y el nal en G . Si este camino no existe nos encontramos en el ptimo y naliza el o algoritmo. En caso contrario se determina la cantidad mxima de ujo adicional que a el camino encontrado admite, para lo cual se hace lo siguiente: Sea C el camino encontrado en G desde el nodo inicial al nal, sea C la cadena correspondiente a C en G y sea B1 el conjunto de arcos hacia adelante en C y B2 el conjunto de arcos en reversa de C. Entonces: = m n{
(i,j)CB1
m n
(uij fij ),
(i,j)CB2
m n
(fij lij )}
Flujo en Redes
21
in34a - Optimizacin o
Ford y Fulkerson
Luego, se determina un nuevo ujo factible en G de la siguiente forma: Arcos hacia adelante en C: se suma al ujo existente en G. Arcos hacia atrs en C: se resta al ujo existente en G. a Flujo exgeno: F = F + . o Ms formalmente, el algoritmo Ford y Fulkerson es el siguiente: a 0. Inicializacin: determinar un ujo factible f . o 1. Construir el grafo auxiliar G = [N , A ], donde N = N y denir B1 = , B2 = . Para determinar A se examinan todos los arcos (i, j) de G: si fij < uij , entonces el arco (i, j) se incorpora a A y B1 = B1 {(i, j)} y ij = uij fij , si fij > lij , entonces el arco (j, i) se incorpora a A y B2 = B2 {(j, i)} y ij = fij lij .
Flujo en Redes
22
in34a - Optimizacin o
Ford y Fulkerson
2. Determinar un camino C en G desde el nodo 1 al n. Si no existe ningn camino en G , parar. La solucin es ptima. u o o De lo contrario, determinar a partir de la cadena C en G de la siguiente forma: = m n{ m n (uij fij ), m n (fij lij )}
(i,j)CB1
(i,j)CB2
3. Nuevo ujo: F F + fij fij + si (i, j) C B1 fij fij si (i, j) C B2 Volver a (1). Observacin: En el paso (2) se pueden construir caminos de muchas formas distintas. o Dependiendo de la eleccin, se obtendrn variantes del algoritmo bsico de Ford y o a a Fulkerson.
Flujo en Redes
23
in34a - Optimizacin o
Ford y Fulkerson
Ej: Sea el siguiente grafo:
Donde lij = 0, (i, j) y se desea determinar el ujo mximo F que admite la red. a El ujo factible viene dado por f = 0, ya que lij = 0. Luego la solucin inicial es: o
Flujo en Redes
24
in34a - Optimizacin o
Ford y Fulkerson
Iteracin 1: o
in34a - Optimizacin o
Ford y Fulkerson
Iteracin 2: o El nuevo ujo queda:
in34a - Optimizacin o
Ford y Fulkerson
Iteracin 3: o El nuevo ujo queda:
in34a - Optimizacin o
Ford y Fulkerson
Iteracin 4: o El nuevo ujo queda:
En este caso no existe C por lo que llegamos al ptimo, siendo 4 el ujo mximo. o a
Flujo en Redes 28
in34a - Optimizacin o
1. Se agrega un nuevo arco que vaya desde el nodo destino al inicial (arco (n, 1)). 2. Se agrega un nodo articial origen a y un nodo articial destino b. 3. Por cada nodo i N se agregan 2 arcos articiales: (a, i) y (i, b) As queda el grafo G = [N , A], con N = N {a, b} y A = A (n, 1) {(a, i), (i, b)i N }.
Flujo en Redes
29
in34a - Optimizacin o
para (i, j) tal que (i, j) A para (a, i) tal que i N para (i, b) tal que i N
Si {(i, k), k N } = o {(k, i), k N } = , entonces u = 0 o u = 0, ai ib respectivamente. Luego se procede a determinar el ujo mximo F en G a travs de Ford y Fulkerson. a e Sea el vector f la solucin ptima del problema de ujo mximo en G. Se tiene que o o a si F < (i,j)A lij entonces la red original G no admite ujo factible. En cambio, si F = (i,j)A lij entonces el vector de ujos fij = fij + lij (i, j) A, es un vector de ujo factible para la red original.
Flujo en Redes 30
in34a - Optimizacin o
Flujo en Redes
31
in34a - Optimizacin o
Vemos que F = 8 y la suma de las capacidades inferiores de todos los arcos de G tambin es 8, por lo que la red original tiene solucin factible inicial igual a: e o f12 f13 f23 f24 f34
= f12 + l12 = f13 + l13 = f23 + l23 = f24 + l24 = f34 + l34
in34a - Optimizacin o
cij xij
Donde xij
k:(k,s)A xks = 1 j:(i,j)A xij k:(k,i)A xki = 0 j:(t,j)A xtj k:(k,t)A xkt = 1 xij {0, 1} (i, j) A vale 1 si se recorre el nodo (i, j) y cero si no.
s.a.
j:(s,j)A xsj
i = s, t
Flujo en Redes
33
in34a - Optimizacin o
cij xij
k:(k,s)A xks = 1 i = s, t j:(i,j)A xij k:(k,i)A xki = 0 j:(t,j)A xtj k:(k,t)A xkt = 1 0 xij 1 (i, j) A Este problema es un ujo de costo m nimo donde el ujo exgeno tanto en el nodo o origen como en el destino es 1 y la capacidad en cada arco es 1 tambin. e Observacin: Si el problema se modela en una red cuyo grafo es no dirigido, cada o arco orientado puede sustituirse por dos arcos dirigidos de sentido opuesto.
s.a.
j:(s,j)A xsj
Flujo en Redes
34
in34a - Optimizacin o
Algoritmo Dijkstra
Un algoritmo existente para resolver el problema de la ruta ms corta es el algoritmo a Dijkstra. El algoritmo necesita un grafo orientado y el valor de los costos positivo para entregar un rbol de caminos m a nimos de modo de ir el nodo inicial a cualquier otro nodo.
Flujo en Redes
35
in34a - Optimizacin o
Algoritmo Dijkstra
Algoritmo: Sea el grafo orientado G = [N, A] y la funcin de costos l : A R+ o 1. Se dene el conjunto S = , junto con (1) = 0, (i) = + i = 1 y P (1) = 1. 2. Repetir hasta que S = N : Encontrar j no perteneciente a S tal que (j) = m {(k)} n
kT
. Luego S = S {j}. Para cada i tal que existe un arco de j a i, con i no perteneciente a S, hacer: Si (i) > (j) + l(j, i) entonces (i) = (j) + l(j, i) y P (i) = j
Flujo en Redes
36
in34a - Optimizacin o
Algoritmo Dijkstra
A partir de los P (i) se puede saber que nodo antecede al nodo i en la ruta ms corta. a Ej: Se tiene el grafo
Flujo en Redes
37
in34a - Optimizacin o
Algoritmo Dijkstra
Iteracin 1: o j = 1 S = {1} (2) = 5, P (2) = 1 (3) = 4, P (3) = 1 Iteracin 2: o j = 3 S = {1, 3} (5) = 7, P (5) = 3 Iteracin 3: o j = 2 S = {1, 3, 2} (4) = 7, P (4) = 2 (5) = 6, P (5) = 2 Iteracin 4: o j = 5 S = {1, 3, 2, 5} (6) = 9, P (6) = 5 Iteracin 5: o j = 4 S = {1, 3, 2, 5, 4}
Flujo en Redes 38
in34a - Optimizacin o
Algoritmo Dijkstra
Iteracin 6: o j = 5 S = {1, 3, 2, 5, 4, 6} As el rbol de la solucin queda: a o
Observacin 1: El orden del algoritmo es O(n2) o Observacin 2: Notar que pedimos que todos los costos sean positivos. o Ejercicio: Por qu el algoritmo no se puede aplicar si hay costos negativos? Buscar un ejemplo e donde Dijkstra no funcione con algn costo negativo. u
Flujo en Redes 39