Você está na página 1de 24

Fundamentos de la teora de grafos.

3 I.T.I. de Sistemas

M Teresa Cceres Sansaloni

Tema 4: Redes y flujos

Redes.

Flujos y cortes.

Teorema del flujo mximo corte mnimo.

Algoritmo para calcular el mximo flujo y determinar un corte


mnimo en una red.

Complejidad del algoritmo.

1
Ejemplos:

Un partido de futbol de gran inters tendr lugar en una isla


canaria. Los aficionados del equipo visitante quieren ver el partido y
animar a su equipo. Hay varias rutas y vuelos para llegar a la isla, y
el nmero mximo de plazas de las mismas es conocido.
Cmo determinar el mximo nmero de aficionados que
pueden ir y las rutas que deben tomar?

Un producto se fabrica en A y se distribuye a varios destinos


para la venta D1,D2,,Dn . Suponiendo demanda ilimitada,
conocidas las rutas desde A a cada destino y el mximo nmero de
unidades del producto que pueden ser transportadas. Cul es el
mximo nmero de unidades que pueden servirse?

Las redes son buenos modelos para sistemas de distribucin de


oleoductos, tuberias , trfico, etc.
En las conducciones hay estaciones de bombeo. Cul es el
mximo flujo de una estacin a otra, dado que las tuberas tienen
capacidad finita?.
Cul es el flujo mximo de vehculos por una carretera?
2
Redes
Una red N es un digrafo D con dos vrtices destacados s (fuente),
y t (sumidero) , con una funcin capacidad c, asociada a los
arcos, que toma valores enteros no negativos, o el valor

D es el digrafo subyacente de la red N

Si a = (u,v) E(D) , entonces c(a)=c(u,v) es la capacidad de a

s tiene grado de entrada d+(s) = 0


t tiene grado de salida d-(s) = 0
Para determinar el mximo nmero de personas que pueden volar de
s hasta t usando distintas rutas y aeropuertos.
El modelo de red considera:
Vrtices: Fuente = origen s; Sumidero = destino t;
los dems vrtices son los aeropuertos intermedios.
Arcos: (x,y) representa un vuelo directo de x hasta y
c(x,y) = mximo nmero de asientos disponibles en un vuelo de x a y
3
Cul es el mximo nmero de unidades que pueden servirse?

Vrtices: Fuente = A; Introducimos el sumidero = t;


cada vrtice Di es adyacente a t.
Arcos: (Di , t) con capacidad ilimitada () para 1 i n.
a los otros arcos (x,y) se les asigna la capacidad igual al
mximo nmero de unidades de producto que pueden
transportarse directamente desde x hasta y en un da.

4
Sea N una red con digrafo asociado D, vrtices fuente s y
sumidero t , y sea c la funcin capacidad asociada a los
arcos.
Para x e V(D) definimos los vecinos de x :
de salida N+ (x) = {y e V(D) / (x,y) e E(D) }
de entrada N- (x) = {y e V(D) / (y,x) e E(D) }

Flujos y cortes

Un flujo f en N es una funcin entera f : E(D) Z+ que verifica:


Restriccin de capacidad: (el flujo nunca excede a la capacidad)
0 f(a) c(a) para todo a e E(D)
Principio de conservacin:

f ( x, y ) = f ( y , x ) x V ( D) {s, t}
yN + ( x ) yN ( x )

5
Flujo neto de salida de un vrtice x es :

f ( x, y ) f ( y , x )
yN + ( x ) yN ( x )

Flujo neto de entrada de un vrtice x es :

f ( y , x ) f ( x, y )
yN ( x ) yN + ( x )

Flujo en un arco a = (x,y) es denotado por f (a) = f (x,y) y puede


ser interpretado como la cantidad de material (o personas, coches,
etc...) transportado a lo largo del arco (x,y)

El principio de conservacin establece que si x s y x t


entonces su flujo neto de entrada y su flujo neto de salida
son ambos igual a 0

6
El valor f (N) del flujo en la red N , es el flujo neto de salida del
vrtice fuente s
f (N ) = f ( s , x ) f ( x, s )
xN + ( s ) xN ( s )

x y
Ejemplo 3,3 3,2 z
En cada arco figura 5,3 1,1 6,2
( capacidad, flujo)
s 4,2 v 4,4
u t
5,3
4,1 3,1
3,2
f(N) = ?3+2-1
w
f(y,z) = 2

c(y,z) = 3

7
Definicin: Sean D un digrafo, X e Y subconjuntos no vacos
de vrtices.
(X,Y) es el conjunto de todos los arcos dirigidos desde algn
vrtice de X a algn vrtice de Y
(X,Y) = {(x,y) e E(D) / x e X, y e Y}
su flujo y capacidad correspondientes son:

f ( X ,Y ) = f ( x, y )
( x , y )( X ,Y )
; c ( X , Y ) = ( x , y c ( x, y )
)( X ,Y )

donde f ( X , Y ) = c( X , Y ) = 0 si ( X , Y ) =

En el ejemplo anterior, si X = {x,y,u} e Y = {u,v,z,y}


x y
3,3 3,2 z
(X,Y) = {(x,y), (y,u), (y,z),(u,v)} 5,3 6,
1,1
s 4,2 v 4,4 2
u t
5,3
4, 3,1
1
3,2

w 8
Definicin: Un corte en N es un subconjunto de arcos (P, P)
en D, tal que s e P pero t P y P = V(D) P

c(P, P) es la capacidad del corte.


f(P, P) es flujo desde P hasta P
f(P, P) es flujo desde P hasta P

En el ejemplo: Calcularlo para P = {s, y, w}

Teorema 1: Sea la red N, y f un flujo en N. Si (P, P) es un


corte de N, entonces el flujo en N es

f (N ) = f ( x, y )
( x , y )( P , P )
f ( y, x) =
( y , x )( P , P )
f ( P, P ) f ( P , P )

9
1 Sea N un red y f un flujo en N , entonces
Corolario 1:

f ( N ) min { c( P, P ) }
donde el mnimo se toma para todos los cortes en N

Corolario 2:2 Sea N un red y f un flujo en N , entonces el valor


del flujo en N es igual al flujo neto en el sumidero t.

f (N ) = f ( x, t ) f (t , x)
xN ( t ) xN + ( t )

10
Teorema del flujo mximo y corte mnimo

Un flujo f en una red N es un flujo mximo si


f ( N ) f ' ( N ) para todo flujo f ' en N
Un corte (P,P) es un corte mnimo de N si

c( P, P ) c( X , X ) para todo corte ( X , X ) en N

Teorema (Ford y Fulkerson)


En cualquier red, el valor de un flujo mximo es igual a la
capacidad de un corte mnimo.

11
Ejemplo: En la figura, el dato de cada arco es su capacidad
f1 y f2 son flujos mximos
arco a f1(a) f2(a)
u x (s,u) 1 2
1
1 (s,v) 4 1
2
1 1 (s,w) 1 3
4 t (u,x) 1 1
v
s
4 (u,v) 0 1
3 5 (v,y) 4 2
2
(w,y) 1 3
w 3 y
(w,s) 0 0
(x,v) 0 0
El valor del flujo f1 y f2 para N es 6
igual al flujo neto en t. (x,t) 1 1
f(x,t) +f(y,t) = 1 + 5 (y,t) 5 5
Ningn flujo puede exceder a 6.

Sea P={s,u,v,w,y}, entonces c(P, P) = c(u,x) + c(y,t)= 1 + 5 = 6


Por tanto, es un corte mnimo
12
Demostracin del Teorema :

Sea N un red y f un flujo en N , por el Corolario 1

f ( N ) min { c( P, P ) }
El valor del mximo flujo no puede exceder de la capacidad de un
corte mnimo.
Para demostrar la igualdad, la estrategia es comprobar que el valor
de algn flujo mximo en N tiene al menos la capacidad de algn
corte mnimo en N
Vamos a considerar algunas definiciones y procedimientos (que se
utilizan en la demostracin del teorema) para establecer
posteriormente el algoritmo.

Un u0 un semicamino en un digrafo D es una secuencia Q


alternada finita de vrtices y arcos,
Q : u0 , a1 , u1 , a2 , u2 , . . . , un-1 , an , un
de modo que no se repiten vrtices y ai = (ui , ui-1) o ai = (ui-1 , ui)
13
x y
3,3 3,2 z
5,3 1,1 6,2
s 4,2 v 4,4
u t
5,3
4,1 3,1
3,2

w
u, (y,u), y, (y,z), z, (z,t), t es un u t semicamino

Sea f un flujo en la red N , con digrafo subyacente D y


capacidad c, un semicamino u0 , a1 , u1 , a2 , u2 ,. . ., un-1 , an , un
en D se dice que es f-insaturado si, para cada i, 1 i n
(a) ai = (ui-1 , ui) y f(ai) < c(ai) , o
(b) ai = (ui , ui-1) y f(ai) > 0

(a) Establece que se puede aumentar el flujo desde ui-1 hasta ui


(b) Establece que se puede disminuir el flujo de retroceso desde ui hacia ui-1

14
Si Q es un s-t semicamino f -insaturado , donde s y t son los vrtices
fuente y sumidero de N, entonces Q es llamado un f-semicamino
aumentante
x y
3,3 3,2 z
5,3 1,1 6,2
s 4,2 v 4,4
u t
5,3
4,1 3,1
3,2

w
Q : s,(s,u),(y,u),y,(y,z),z,(z,t),t es un f-semicamino aumentante

Condicin (a) a1 = (s,u) f(a1) < c(a1) 1 = c(a1) -f(a1) = 4 - 2 =2


a3 = (y,z) f(a3) < c(a3) 3 = c(a3) -f(a3) = 3 - 2 =1
a4 = (z,t) f(a4) < c(a4) 4 = c(a4) -f(a4) = 6 - 2 =4

Condicin (b) a2 = (y,u) f(a2) > 0 2 = f(a2) = 1

= min { i , 1 i 4 } = 1
15
Definicin: Sean s y t los vrtices fuente y sumidero de N . Si D
contiene un f-semicamino aumentante , se define el flujo f * sobre el
conjunto de arcos de D del siguiente modo:

f (a ) + si a = (ui 1 , ui ) para algun i, 1 i n



f * (a ) = f (a ) si a = (ui , ui 1 ) para algun i, 1 i n ,
f (a ) si a E (Q)

x y
Resulta 3,3 3,3 z
5,3 1,0 6,3
s 4,3 v 4,4
u t
5,3
4,1 3,1
3,2

f * es un flujo para la red N que verifica


f * (N) = f (N) + > f (N)
16
Teorema 2:
Sea N una red con dgrafo subyacente D. Un flujo f en N es un
flujo mximo si y solo si no hay ningn f-semicamino
aumentante en D.

Este resultado establecer la regla de salida y fin del algoritmo.

17
Algoritmo para calcular el mximo flujo y
determinar un corte mnimo en una red. (Edmonds)

Proporciona un mtodo sistemtico para encontrar un


f-semicamino aumentante en la red N, con flujo dado f.

Teorema 3:
Sea N una red con digrafo subyacente D, fuente s, sumidero t,
capacidad c y flujo f. Sea D el digrafo con V(D) =V(D) y conjunto
de arcos
E(D) = {(x,y) / (x,y) E(D) c(x,y)>f(x,y) o (y,x) E(D) f(y,x)>0}
Entonces, D contiene un s-t camino dirigido si y solo si D contiene
un semicamino aumentante.
Adems, un s-t camino ms corto en D tiene la misma longitud que
un f-semicamino aumentante mas corto en D.

18
Sea N una red con digrafo subyacente D, capacidad c y flujo f.

Si f no es un flujo mximo de N, entonces D tiene un


f-semicamino aumentante.

Q : s=u0 , a1 , u1 , a2 , u2 , . . . , un-1 , an , un=t

c(ai) - f(ai) si ai = (ui-1 , ui)


Sea ( ai ) =
f(ai) si ai = (ui , ui-1)

Sea = min {(ai) : 1 i n}

Incrementar el flujo f f *

f (a) + si a = (ui-1 , ui) para algn i , 1 i n


f * (a) = f (a) si a = (ui , ui-1) para algn i , 1 i n
f (a) si a E(Q)
19
Algoritmo
(para determinar un flujo mximo y un corte mnimo en una red N con
dgrafo subyacente D, fuente s, sumidero t, capacidad c y flujo inicial f
(puede ser flujo cero).

P1.- Construir D con V(D) = V(D)


E(D) = {(x,y) / (x,y) E(D) c(x,y)>f(x,y) o
(y,x) E(D) f(y,x)>0 }

P2.- (Determina si D tiene un s-t camino y por tanto si D tiene un


f- semicamino aumentante)

Aplicar el algoritmo BFS de Moore a D para determinar


un s-t camino ms corto.
Si D no contiene ningn s-t camino, entonces ir al paso P5
en otro caso, sea Q : s = u0 , u1 , u2 , . . . , un= t
un s-t camino ms corto en D y continuar.

20
P3.- ( Se realiza un incremento del flujo por el semicamino aumentante)
Sea Q : s=u0 , a1 , u1 , a2 , u2 , . . . , un-1 , an , un=t
donde ai E(D) tal que ai = (ui-1 , ui) y f(ai) < c(ai) , o
ai = (ui , ui-1) y f(ai) > 0
Para i=1,2,,n
c(ai) - f(ai) si ai = (ui-1 , ui)
i =
f(ai) si ai = (ui , ui-1)
= min {(ai) : 1 i n}
Para i=1,2,,n ,
si ai = (ui-1 , ui) , entonces f (ai) f (ai) +
si ai = (ui , ui-1) , entonces f (ai) f (ai) -

P4.- Ir al paso P1

21
P5.- (Devuelve un mximo flujo y determina un mnimo corte para N)
Retorna f(a) para todos los arcos a de D.
Retorna P (conjunto de vrtices de D con etiqueta finita
obtenida en el paso P2 despus de aplicar el algoritmo
de moore a D)
(P,P) es un corte mnimo.

Complejidad del algoritmo O(pq2)

22
Ejemplo:
Hay tres proveedores A,B,C de un determinado producto, y un
agente D que acta de intermediario para los minoristas L y M.
El intermediario tiene limitado el nmero de pedidos que puede servir
por da a 70.
L consigue que el proveedor A le sirva directamente hasta un
mximo de 30 unidades, y M lo consigue del proveedor C, que le
sirva directamente hasta un mximo de 20 unidades.
Calcular el mximo nmero de pedidos que llegan a L y M, si para el
agente D, la oferta de A es de 40 unidades, la de C es de 80 y la de
B es de 30; y si las demandas son, en L de 60 unidades y en M de
50 unidades.
3
Solucin: A L
4 6
Lo planteamos como un
B 3 D
problema de flujo mximo
8 5
con el siguiente digrafo
C 2
M

23
Como el agente intermediario tiene limitado el nmero de pedidos
por da, para limitar el paso de pedidos debemos crear un arco de la
forma ( D1, D2) con capacidad mxima 70.

Para resolver el problema como flujo mximo, adems debemos


considerar los vrtices ficticios S, T, y los arcos (S,A), (S,B), (S,C),
(L,T) y (M,T) con las capacidades correspondientes.

3
A L
4 4 6
6
3 3
S B D1 7 D2 T
8 5 5
8
C 2
M

3, 3
A L
4,4 4, 1 6,6
Al aplicar el algoritmo 6, 3
3,3 3, 3 D1 7, D2
el resultado es : S B T
6 5, 3
8, 2 5,5
8, 4
C 2, 2
M
24

Você também pode gostar