Flujo en redes. Flujo máximo.

Download Report

Transcript Flujo en redes. Flujo máximo.

10
b
2
s
1
2
d
3
a
3
45
3
4
1
2
20
55
t
c
2
5
25
40
30
25
50
4
3
15
Flujo en Redes. Flujo máximo
Flujo en Redes
79
Indice








Introducción.
Flujo en redes.
El método de Ford Fulkerson. Flujo máximo.
Redes residuales.
Caminos aumentantes.
Cortes en redes de flujos.
Teorema de flujo-máximo mínimo-corte.
El algoritmo de Ford Fulkerson.
Flujo en Redes
80
Introducción


Los digrafos se pueden usar para representar
flujo en redes.
Permiten modelar todo tipo de red, en
particular las de transporte y distribución:
– flujo de fluídos en tuberías, piezas en una línea de
ensamblaje, corriente en circuitos eléctricos,
información en redes de comunicación, etc.

Problema: Maximizar la cantidad de flujo
desde un vértice fuente a otro sumidero, sin
superar las restricciones de capacidad.
– Método de Ford-Fulkerson para resolver el
problema de máximo flujo.
Flujo en Redes
81
Redes de flujo




Digrafo G=(V, E)
Los pesos de las aristas representan capacidad
(c(u, v)> 0). Si no hay aristas la capacidad es
cero.
Vértices especiales:
fuente s, vértice sin aristas de entrada.
sumidero t, vértice sin aristas de salida.
El grafo es conectado: Hay un camino entre s y t
por algún vértice intermedio del grafo.
Flujo en Redes
82
Redes de flujo

Un flujo en G es una función real f : VxV   que
satisface las siguientes propiedades:
– Restricción de capacidad: Para todo u, v  V, f (u, v) < c (u, v)
– Antisimetría: Para todo u, v  V, f (u, v) = f (v, u)
– Conservación de flujo: Para todo u  V  {s, t },

Valor del flujo: | f | =
 f (s, v) =  f (v, t )
vV
12 / 12
v2
Flujo en Redes
v3
7/7
10
s
11 / 16
vV
vV
1/4
v1
 f (u, v) = 0
t
v4
83
Método de Ford-Fulkerson


Método iterativo para resolver el problema de flujo
máximo.
Seudocódigo:
Método de Ford-Fulkerson (G, s, t)
Inicializar flujo f a 0
while exista un camino aumentante p {
aumentar flujo f a través de p
}
return f

El método depende de tres conceptos básicos:
– Redes residuales.
– Camino aumentante.
– Cortes en redes de flujo.
Flujo en Redes
84
Redes residuales
t
s
12
v1
Gf
v3
v3
7
10
s
12 / 12
v1
3
G
11

7/7

Para una red de flujo y un flujo, la red residual es el conjunto
de aristas que pueden admitir más flujo.
Sea una red de flujo G=(V, E) con fuente s y sumidero t. Sea
f un flujo en G y un par de vértices u, v  V. El flujo neto
adicional desde u a v sin exceder la capacidad c(u, v) es la
capacidad residual de (u, v), definida por:
cf(u,v) = c(u,v)  f(u,v)
La red residual de G inducida por f es Gf = (V, Ef) donde
Ef = {(u,v)  VxV: cf(u, v) > 0}
1/4

t
3
v2
Flujo en Redes
11 / 14
v4
v2
v4
11
85
Caminos aumentantes



Un camino aumentante p en una red de flujo G=(V, E) y flujo
f, es un camino simple de s a t en la red residual Gf.
Cada arista (u, v) del camino aumentante admite un flujo neto
positivo adicional de u a v sin violar la restricción de
capacidad de la arista.
Capacidad residual: es la máxima cantidad de flujo neto que
se puede enviar por las aristas de un camino aumentante. Se
calcula por:
cf(p) = min{cf(u,v)  (u,v)  p}
Cf= min{5, 4, 5} = 4
7
s
v3
3
t
12
v1
Gf
v3
11
1/4
10
s
12 / 12
v1
7/7
G
t
3
v2
Flujo en Redes
11 / 14
v4
v2
v4
11
86
Cortes en redes de flujo


Un corte (S, T) de una red de flujo G=(V, E) es una
partición del conjunto de vértices V en dos subconjuntos
S y T = VS tal que s  S y t  T.
Si f es un flujo:
– f(S, T) es el flujo neto a través del corte (S,T).
– c(S, T) es la capacidad del corte (S,T).

Flujo en una red = flujo neto a través de cualquier corte
de la red.
S
v3
7/7
1/4
10
v2
Flujo en Redes
12 / 12
v1
G
s
T
Corte = ( {s, v1, v2}, {s, v1, v2} )
t
f(s, t) = f(v1, v3) + f(v2, v3) + f(v2, v4) =
12 + (-4) + 11 = 19
11 / 14
v4
c(s, t) = c(v1, v3) + c(v2, v4) = 12 + 14 = 26
87
Teorema flujo-máximo
mínimo-corte

Si f es un flujo en una red de flujo G = (V, E) con
fuente s y sumidero t, entonces las siguientes
condiciones son equivalentes:
– f es un flujo máximo en G.
– La red residual Gf no contiene caminos
aumentantes.
– | f | = c(S, T) para algún corte (S, T) de G.
Flujo en Redes
88
Algoritmo de Ford-Fulkerson
Ford-Fulkerson (G, s, t)
for cada arista (u, v)  E[G] {
f [u, v] = 0
f [v, u] = 0
}
while exista un camino p de s a t en el grafo residual Gf {
cf(p) = min{ cf(u, v) / (u, v)  p}
for cada arista (u, v)  p
f [u, v] = f [u, v] + cf(p)
f [v, u] = f [u, v]
}
Flujo en Redes
89
Ejemplo
Flujo
Grafo Residual
v2
14
v4
v2
v3
v1
4 / 14
t
s
4 / 12
4
7
4
10
s
4
7 / 10
8
v1
7
4
s
10
t
v3
t
v4
v3
7/7
4
10
s
4 / 12
v1
v3
7
12
v1
t
10
v2
v4
4
Flujo en Redes
v2
11 / 14
v4
90
Ejemplo
Flujo
Grafo Residual
8
3
v2
v4
v2
v3
v1
11 / 14
11
s
12 / 12
1/4
7
t
10
12
3
s
11
v1
7/ 7
s
v3
t
v4
v3
7/7
t
1/ 4
7
11
3
s
4
12 / 12
v1
v3
10
v1
t
3
v2
v4
11
Flujo en Redes
v2
11 / 14
v4
91
Ejemplo y complejidad
Flujo
Grafo Residual
s
1/4
t
v3
7/7
12 / 12
v1
7
3
11
s
v3
10
12
v1
t
3
v2
v4
11



v2
11 / 14
v4
Para hallar el camino aumentante se puede usar
cualquier tipo de recorrido (BPA o BPP).
La capacidad de cada arista se puede multiplicar por un
factor de escala para conseguir que sea entera.
Bajo estas condiciones el algoritmo tiene una
complejidad de O(E| f * |), donde f *es el máximo flujo
obtenido por el algoritmo.
Flujo en Redes
92
Animación del algoritmo
flujo máximo

Aplicación GRANI para la animación del
algoritmo de flujo máximo.

Flujo en Redes
Ejecutar GRANI
93
Indice general
1. Introducción.
2. Definiciones.
3. Recorridos en grafos.
4. Algoritmos de caminos más cortos.
5. Árbol de cubrimiento de costo mínimo.
6. Flujo en redes. Flujo máximo.
Flujo en Redes
94