You are on page 1of 40

CAP ITULO 5 FLUJO EN REDES

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.

Denicin: o Un rbol es un grafo conexo y sin circuitos. a

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

Conceptos Bsicos de Flujo en Redes a


Denicin: o Dado un grafo G = [N, A] conexo se denomina ujo a la funcin que hace corresponder o a cada arco (i, j) del grafo un valor real fij . Denicin: o Una red es un sistema formado por un grafo G = [N, A] y una funcin de ujos. o Denicin: o Un ujo exgeno corresponde a un ujo que proviene o trmina en el exterior del o e grafo.

En adelante se asume que G es un grafo conexo, salvo que se indique lo contrario.


Flujo en Redes 13

in34a - Optimizacin o

Restricciones del Problema de Flujo en Redes


1. Flujos Limitados por Capacidad: Sea uij la cantidad mxima de ujo que puede transportar el arco (i, j). Entonces a se tiene que: fij uij Si adems el ujo no puede ser negativo se agrega la restriccin: a o fij 0 Por otra parte, si el tambin hay requerimientos de ujo se agrega la siguiente e restriccin: o fij lij Con lij el valor del ujo minimo entre los nodos i y j. 2. Conservacin de Flujo en los Nodos: o Lo que entra a un nodo debe ser igual a lo que sale fij
j:(i,j)A
Flujo en Redes

fki = 0
k:(k,i)A
14

in34a - Optimizacin o

Restricciones del Problema de Flujo en Redes


En esta ecuacin se utiliza la convencin de que los ujos salientes de un nodo se o o suman y los que entran se restan. Si existiera un ujo exgeno, la convencin se mantiene, pero como los ujos o o exgenos son generalmente conocidos al pasarlos al lado derecho de la igualdad o cambian de signo. La conservacin de ujo cuando existe ujo exgeno ser o o a: fij
j:(i,j)A k:(k,i)A

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

Restricciones del Problema de Flujo en Redes


Denicin: o Un ujo f que satisface las condiciones relativas a las capacidades inferiores y superiores y las condiciones de conservacin en los nodos se dice que es un ujo factible. o La notacin matricial de la restriccin de conservacin de ujo es: o o o Ef = q Con E la matriz de incidencia nodo-arco, f el vector de ujos entre los nodos ordenado de acuerdo a las columnas de E y q el vector de ujos exgenos. o

Flujo en Redes

16

in34a - Optimizacin o

Problema del Flujo Mximo a


Este problema consiste en llevar la mxima cantidad de ujo a travs de una red dada a e G = [N, A]. Se tiene en cada arco (i, j) una capacidad mxima uij (y eventualmente una m a nima lij ) y dos nodos con ujo exgeno, uno donde entra y otro por donde sale. o Generalmente se identica al nodo origen (donde entra el ujo) como el nodo 1 y el nodo destino (donde sale el ujo) como el nodo n y el ujo exgeno se denota por F . o Modelamiento del Problema: mx F a s.a. k:(k,1)A fk1 F = 0 i = 2, . . . , n 1 j:(i,j)A f1j k:(k,i)A fk1 = 0 j:(n,j)A fnj k:(k,n)A fkn + F = 0 fij uij (i, j) A fij lij (i, j) A
j:(1,j)A f1j

Flujo en Redes

17

in34a - Optimizacin o

Corte m nimo = Flujo mximo a


Dado un conjunto de nodos S, donde el nodo 1 pertenece a S y el nodo n no pertenece a S, se dene la capacidad del corte c(S) como la suma de las capacidades de los arcos que van de S a S (donde S son los nodos de la red que no estn en S). a Propiedad importante: En cualquier red se verica que el ujo mximo es igual a la capacidad del corte de a capacidad m nima. Ejemplo:

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

El grafo auxiliar G ser a:

Tomemos C = 1 2 5 6, vemos que lo mximo que puede aumentar el ujo es a = 2.


Flujo en Redes 25

in34a - Optimizacin o

Ford y Fulkerson
Iteracin 2: o El nuevo ujo queda:

El grafo auxiliar queda:

Tomemos C = 1 3 5 4 6, vemos que = 1.


Flujo en Redes 26

in34a - Optimizacin o

Ford y Fulkerson
Iteracin 3: o El nuevo ujo queda:

El grafo auxiliar queda:

Tomemos C = 1 3 4 6, vemos que = 1.


Flujo en Redes 27

in34a - Optimizacin o

Ford y Fulkerson
Iteracin 4: o El nuevo ujo queda:

El grafo auxiliar 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

Flujo Factible Inicial


Cuando existen arcos con capacidades inferiores no nulas, F = 0 no es un ujo factible. Para establecer un ujo inicial factible se resuelve un problema de ujo mximo derivaa do del original, cuyo grafo se construye de la siguiente forma:

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

Flujo Factible Inicial


Las capacidades inferiores lij de todos los arcos A se denen iguales a 0 y las capacidades superiores se denen de la siguiente manera:

u = uij lij ij u = kN lki ai u = kN lik ib u = + n1

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 Factible Inicial


Ej: Sea la siguiente red

Se desea determinar una solucin factible inicial. o Construyamos el grafo G

Flujo en Redes

31

in34a - Optimizacin o

Flujo Factible Inicial


La solucin ptima de G es: o 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

=1+2=3 =0+2=2 =0+1=1 =2+0=2 =0+3=3

y F = f41 = 5 es un ujo factible en G.


Flujo en Redes 32

in34a - Optimizacin o

Problema de la Ruta ms Corta a


Se tiene una red donde cada arco tiene un costo cij de recorrerlo (tiempo, distancia, dinero, etc) El problema consiste en llegar desde un nodo denominado origen (nodo s) a un nodo denominado destino (nodo t) al menor costo posible. Modelamiento del Problema: m n
(i,j)A

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

Problema de la Ruta ms Corta a


Gracias a que la matriz de incidencia de este problema es totalmente unimodular, se puede relajar la condicin de binariedad de las variables (porque los vrtices del o e poliedro factible son enteros), resultando el siguiente modelo lineal continuo: m n
(i,j)A

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

Resolvamoslo por Dijkstra: Inicializacin: o S = , (1) = 0, (i) = + i = 1.

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

You might also like