Tema 4: Redes y flujos - ma1.eii.us.esma1.eii.us.es/Material/FTG_itis_Tema4.pdf · 3 Redes Una red...
Transcript of Tema 4: Redes y flujos - ma1.eii.us.esma1.eii.us.es/Material/FTG_itis_Tema4.pdf · 3 Redes Una red...
1
Tema 4: Redes y flujosRedes y flujos
• Redes.
• Flujos y cortes.
• Teorema del flujo máximo – corte mínimo.
• Algoritmo para calcular el máximo flujo y determinar un corte mínimo en una red.
• Complejidad del algoritmo.
Fundamentos de la teoría de grafos.3º I.T.I. de Sistemas
Mª Teresa Cáceres Sansaloni
2
∏ Un partido de futbol de gran interés 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 número máximo de plazas de las mismas es conocido.
¿Cómo determinar el máximo número 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 máximo número de unidades del producto que pueden ser transportadas. ¿Cuál es el máximo número de unidades que pueden servirse?
∏ Las redes son buenos modelos para sistemas de distribución de oleoductos, tuberias , tráfico, etc.En las conducciones hay estaciones de bombeo. ¿Cuál es el máximo flujo de una estación a otra, dado que las tuberías tienen capacidad finita?. ¿Cuál es el flujo máximo de vehículos por una carretera?
EjemplosEjemplos::
3
RedesUna red N es un digrafo D con dos vértices destacados s (fuente), y t (sumidero) , con una función 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 máximo número de personas que pueden volar de s hasta t usando distintas rutas y aeropuertos.El modelo de red considera:Vértices: Fuente = origen s; Sumidero = destino t;
los demás vértices son los aeropuertos intermedios.Arcos: (x,y) representa un vuelo directo de x hasta yc(x,y) = máximo número de asientos disponibles en un vuelo de x a y
4
¿Cuál es el máximo número de unidades que pueden servirse?
Vértices: Fuente = A; Introducimos el sumidero = t; cada vértice 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 máximo número de unidades de producto que pueden transportarse directamente desde x hasta y en un día.
5
Sea N una red con digrafo asociado D, vértices fuente s y sumidero t , y sea c la función 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) }
{ }tsDVxxyfyxfxNyxNy
,)(),(),()()(
−∈∀= ∑∑−+ ∈∈
Flujos y cortes
Un flujo f en N es una función entera f : E(D) ö Z+ que verifica:
Restricción de capacidad: (el flujo nunca excede a la capacidad)
0 § f(a) § c(a) para todo a e E(D)
Principio de conservación:
6
Flujo neto de salida de un vértice x es :
∑∑−+ ∈∈
−)()(
),(),(xNyxNy
xyfyxf
∑∑+− ∈∈
−)()(
),(),(xNyxNy
yxfxyf
Flujo neto de entrada de un vértice x es :
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 conservación 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
7
El valor f (N) del flujo en la red N , es el flujo neto de salida del vértice fuente s
∑∑−+ ∈∈
−=)()(
),(),()(sNxsNx
sxfxsfNf
Ejemplo x yz
s tuv
w
5,3
3,3 3,2
6,2
4,1
1,14,2
5,34,4
3,1 3,2
En cada arco figura( capacidad, flujo)
f(N) = ?3+2-1
f(y,z) =
c(y,z) =
2
3
8
Definición: Sean D un digrafo, X e Y subconjuntos no vacíos de vértices. (X,Y) es el conjunto de todos los arcos dirigidos desde algún vértice de X a algún vértice de Y
(X,Y) = {(x,y) e E(D) / x e X, y e Y}
su flujo y capacidad correspondientes son:
;
En el ejemplo anterior, si X = {x,y,u} e Y = {u,v,z,y}
(X,Y) =
∑∈
=),(),(
),(),(YXyx
yxfYXf ∑∈
=),(),(
),(),(YXyx
yxcYXc
φ=== ),(0),(),( YX siYXcYXfdonde
{(x,y), (y,u), (y,z),(u,v)}x y
z
s tuv
w
5,33,3 3,2
6,2
4,1
1,14,2
5,34,4
3,1 3,2
9
Definición: 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
),(),(),(),()(),(),(),(),(
PPfPPfxyfyxfNfPPxyPPyx
−=−= ∑∑∈∈
10
Corolario 1Corolario 1: Sea N un red y f un flujo en N , entonces
}),({min)( PPcNf ≤
donde el mínimo se toma para todos los cortes en N
Corolario 2Corolario 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.
∑∑+− ∈∈
−=)()(
),(),()(tNxtNx
xtftxfNf
11
Teorema del flujo máximo y corte mínimo
Un flujo f en una red N es un flujo máximo si
NfNfNf en o flujo para tod ')(')( ≥
Un corte (P,P) es un corte mínimo de N si
NXXXXcPPc en do corte para to ),(),(),( ≤
Teorema (Ford y Fulkerson)En cualquier red, el valor de un flujo máximo es igual a la capacidad de un corte mínimo.
12
Ejemplo: En la figura, el dato de cada arco es su capacidad
f1 y f2 son flujos máximos
55(y,t)11(x,t)00(x,v)00(w,s)31(w,y)24(v,y)10(u,v)11(u,x)31(s,w)14(s,v)21(s,u)
f2(a)f1(a)arco a
El valor del flujo f1 y f2 para N es 6 igual al flujo neto en t.
f(x,t) +f(y,t) = 1 + 5Ningún flujo puede exceder a 6.
Sea P={s,u,v,w,y}, entonces c(P, P) = c(u,x) + c(y,t)= 1 + 5 = 6Por tanto, es un corte mínimo
u
s
w y
t
x
v
2
2
1
11
1
3
3
4
4 5
13
Demostración del Teorema :
Sea N un red y f un flujo en N , por el Corolario 1
}),({min)( PPcNf ≤
• El valor del máximo flujo no puede exceder de la capacidad de un corte mínimo.
• Para demostrar la igualdad, la estrategia es comprobar que el valor de algún flujo máximo en N tiene al menos la capacidad de algún corte mínimo en NVamos a considerar algunas definiciones y procedimientos (que seutilizan en la demostración del teorema) para establecer posteriormente el algoritmo.
Un u0 – un semicamino en un digrafo D es una secuencia Q alternada finita de vértices y arcos,
Q : u0 , a1 , u1 , a2 , u2 , . . . , un-1 , an , unde modo que no se repiten vértices y ai = (ui , ui-1) o ai = (ui-1 , ui)
14
x yz
s tuv
w
5,3
3,3 3,2
6,2
4,1
1,14,2
5,34,4
3,1 3,2
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 , unen 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
15
Si Q es un s-t semicamino f -insaturado , donde s y t son los vértices fuente y sumidero de N, entonces Q es llamado un f-semicaminoaumentante
x yz
s tuv
w
5,3
3,3 3,2
6,2
4,1
1,14,2
5,34,4
3,1 3,2
Q : s,(s,u),(y,u),y,(y,z),z,(z,t),t es un f-semicamino aumentante
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
Condición (a)
Condición (b) a2 = (y,u) f(a2) > 0 ∆2 = f(a2) = 1
∆ = min { ∆i , 1 § i § 4 } = 1
16
DefiniciDefinicióón: n: Sean s y t los vértices 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:
,)()(
1,),()(1,),()(
)( 1
1*
⎪⎩
⎪⎨
⎧
∉≤≤=∆−≤≤=∆+
= −
−
QEaafniiuuaafniiuuaaf
af ii
ii
si
para algunsi
para algunsi
x yz
s tuv
w
5,3
3,3 3,3
6,3
4,1
1,04,3
5,34,4
3,1 3,2
Resulta
f * es un flujo para la red N que verificaf * (N) = f (N) + ∆ > f (N)
17
Teorema 2:Sea N una red con dígrafo subyacente D. Un flujo f en N es un flujo máximo si y solo si no hay ningún f-semicaminoaumentante en D.
Este resultado establecerá la regla de salida y fin del algoritmo.
18
Algoritmo para calcular el máximo flujo y determinar un corte mínimo en una red. (Edmonds)
Proporciona un método sistemático 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. Además, un s-t camino más corto en D’ tiene la misma longitud que un f-semicamino aumentante mas corto en D.
19
Sea N una red con digrafo subyacente D, capacidad c y flujo f.
Si f no es un flujo máximo de N, entonces D tiene unf-semicamino aumentante.
Q : s=u0 , a1 , u1 , a2 , u2 , . . . , un-1 , an , un=t
Sea ∆ = min {∆(ai) : 1 § i §n}
Incrementar el flujo f Ø f *
f (a) + ∆ si a = (ui-1 , ui) para algún i , 1§ i § nf * (a) = f (a) – ∆ si a = (ui , ui-1) para algún i , 1§ i § n
f (a) si a – E(Q)
c(ai) - f(ai) si ai = (ui-1 , ui) Sea ∆( ai ) =
f(ai) si ai = (ui , ui-1)
20
Algoritmo(para determinar un flujo máximo y un corte mínimo en una red N con dígrafo 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 unf- semicamino aumentante)
Aplicar el algoritmo BFS de Moore a D’ para determinarun s-t camino más corto.
Si D’ no contiene ningún s-t camino, entonces ir al paso P5en otro caso, sea Q’ : s = u0 , u1 , u2 , . . . , un= tun s-t camino más corto en D’ y continuar.
21
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) , oai = (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
22
P5.- (Devuelve un máximo flujo y determina un mínimo corte para N)
Retorna f(a) para todos los arcos a de D.
Retorna P (conjunto de vértices de D’ con etiqueta finita obtenida en el paso P2 después de aplicar el algoritmode moore a D’)
(P,P) es un corte mínimo.
Complejidad del algoritmo O(pq2)
23
Ejemplo:
Hay tres proveedores A,B,C de un determinado producto, y un agente D que actúa de intermediario para los minoristas L y M.El intermediario tiene limitado el número de pedidos que puede servir por día a 70.L consigue que el proveedor A le sirva directamente hasta un máximo de 30 unidades, y M lo consigue del proveedor C, que le sirva directamente hasta un máximo de 20 unidades.Calcular el máximo número 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 de50 unidades.
Solución: Lo planteamos como un problema de flujo máximo con el siguiente digrafo
B
A L
M
D
C
3
4
3
8
2
5
6
24
Como el agente intermediario tiene limitado el número de pedidos por día, para limitar el paso de pedidos debemos crear un arco de la forma ( D1, D2) con capacidad máxima 70.
Para resolver el problema como flujo máximo, además debemos considerar los vértices ficticios S, T, y los arcos (S,A), (S,B), (S,C), (L,T) y (M,T) con las capacidades correspondientes.
B
A L
M
D1
C
3
4
3
8
2
5
6S TD27
43
8
6
5
Al aplicar el algoritmo el resultado es : B
A L
M
D1
C
3, 34, 1
3, 3
8, 2
2, 2
5, 3
6, 3S TD27,
6
4,43,3
8, 4
6,6
5,5