Vous êtes sur la page 1sur 16

10

2 1 2
2 b d 45 20
3
55
s 4 40 25
1 t 30
5 3
3 25
3 2
a c 50 15
4

Flujo en Redes. Flujo mximo

Flujo en Redes 79
Indice

Introduccin.
Flujo en redes.
El mtodo de Ford Fulkerson. Flujo mximo.
Redes residuales.
Caminos aumentantes.
Cortes en redes de flujos.
Teorema de flujo-mximo mnimo-corte.
El algoritmo de Ford Fulkerson.

Flujo en Redes 80
Introduccin
Los digrafos se pueden usar para representar
flujo en redes.
Permiten modelar todo tipo de red, en
particular las de transporte y distribucin:
flujo de fludos en tuberas, piezas en una lnea de
ensamblaje, corriente en circuitos elctricos,
informacin en redes de comunicacin, etc.
Problema: Maximizar la cantidad de flujo
desde un vrtice fuente a otro sumidero, sin
superar las restricciones de capacidad.
Mtodo de Ford-Fulkerson para resolver el
problema de mximo 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.
Vrtices especiales:
fuente s, vrtice sin aristas de entrada.
sumidero t, vrtice sin aristas de salida.
El grafo es conectado: Hay un camino entre s y t
por algn vrtice intermedio del grafo.

Flujo en Redes 82
Redes de flujo
Un flujo en G es una funcin real f : VxV que
satisface las siguientes propiedades:
Restriccin de capacidad: Para todo u, v V, f (u, v) < c (u, v)
Antisimetra: Para todo u, v V, f (u, v) = f (v, u)
Conservacin de flujo: Para todo u V {s, t }, f (u, v) = 0
f (s, v) = f (v, t )
vV
Valor del flujo: | f | =
vV vV

12 / 12
v1 v3
1/4

7/7
s t
10

v2 v4
11 / 16
Flujo en Redes 83
Mtodo de Ford-Fulkerson
Mtodo iterativo para resolver el problema de flujo
mximo.
Seudocdigo:
Mtodo de Ford-Fulkerson (G, s, t)
Inicializar flujo f a 0
while exista un camino aumentante p {
aumentar flujo f a travs de p
}
return f
El mtodo depende de tres conceptos bsicos:
Redes residuales.
Camino aumentante.
Cortes en redes de flujo.

Flujo en Redes 84
Redes residuales
Para una red de flujo y un flujo, la red residual es el conjunto
de aristas que pueden admitir ms 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 vrtices 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}
12 / 12 12
G v1 v3 Gf v1 v3
7/7
1/4

t s t
11
s

3
10

7
3
v2 v4 v2 v4
11 / 14 11
Flujo en Redes 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 restriccin de
capacidad de la arista.
Capacidad residual: es la mxima 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
12 / 12 12
G v1 v3 Gf v1 v3
7/7
1/4

t s t
11
s

3
10

7
3
v2 v4 v2 v4
11 / 14
Flujo en Redes 11 86
Cortes en redes de flujo
Un corte (S, T) de una red de flujo G=(V, E) es una
particin del conjunto de vrtices V en dos subconjuntos
S y T = VS tal que s S y t T.
Si f es un flujo:
f(S, T) es el flujo neto a travs del corte (S,T).
c(S, T) es la capacidad del corte (S,T).
Flujo en una red = flujo neto a travs de cualquier corte
de la red.
S T
12 / 12
G v1 v3 Corte = ( {s, v1, v2}, {s, v1, v2} )
7/7

f(s, t) = f(v1, v3) + f(v2, v3) + f(v2, v4) =


1/4

s t
10

12 + (-4) + 11 = 19

v2 v4 c(s, t) = c(v1, v3) + c(v2, v4) = 12 + 14 = 26


11 / 14
Flujo en Redes 87
Teorema flujo-mximo
mnimo-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 mximo en G.
La red residual Gf no contiene caminos
aumentantes.
| f | = c(S, T) para algn 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
Grafo Residual Flujo

12 4 / 12
v1 v3 v1 v3

t s t

10
s
10

7
4
7
4

v2 v4 v2 v4
14 4 / 14

8
4 / 12
v1 v3 v1 v3
4

7 / 10

7/7
s t s t
10

4
7

10
v2 v4 v2 v4
11 / 14
4
Flujo en Redes 90
Ejemplo
Grafo Residual Flujo
8
12 / 12
v1 v3 v1 v3
4

7/ 7
1/ 4
11

t s t

10
s
3

7
3
v2 v4 v2 v4
11 / 14
11

12 / 12
v1 v3 v1 v3
12

7/7
1/4
s t s t
11

10
3

3
v2 v4 v2 v4
11 / 14
11

Flujo en Redes 91
Ejemplo y complejidad
Grafo Residual Flujo
12 12 / 12
v1 v3 v1 v3

7/7
1/4
s t s t
11

10
3

7
3
v2 v4 v2 v4
11 / 14
11

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 mximo flujo
obtenido por el algoritmo.
Flujo en Redes 92
Animacin del algoritmo
flujo mximo
Aplicacin GRANI para la animacin del
algoritmo de flujo mximo.
Ejecutar GRANI

Flujo en Redes 93
Indice general

1. Introduccin.
2. Definiciones.
3. Recorridos en grafos.
4. Algoritmos de caminos ms cortos.
5. rbol de cubrimiento de costo mnimo.
6. Flujo en redes. Flujo mximo.

Flujo en Redes 94