Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos...

33
Máximo Flujo (Maximum Flow) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Transcript of Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos...

Page 1: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Máximo Flujo(Maximum Flow)

DR. JESÚS A. GONZÁLEZ BERNAL

CIENCIAS COMPUTACIONALES

INAOE

Page 2: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Flujo Máximo22

También podemos utilizar un grafo dirigido para modelar una red de flujo

Se produce un material que va de una fuente a un destino

La fuente produce el material a una tasa fija

En el destino el material se consume a la misma tasa

El “flujo” del material en cualquier punto del sistema es la tasa a la cual el material se mueve

Las redes de flujo se utilizan para modelarLíquidos que fluyen a través de tubos

Partes de líneas de ensamble

Corriente sobre redes eléctricas

Información a través de redes de comunicación, etc.

Page 3: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Flujo Máximo33

Los arcos dirigidos en la red de flujo conducen el material

Cada conducto tiene una capacidadLa máxima tasa con la que el material puede fluir

200 galones de líquido por hora en un tubo

20 amperes de corriente eléctrica en un cable

Los vértices son las uniones en el conducto, diferentes de la fuente y el destino

Los vértices no recolectan el material

La tasa a la que entra el material es la misma a la que salePropiedad de conservación de flujo

Equivalente a la ley de Corriente de Kirchhoff, cuando el material es corriente eléctrica

Page 4: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Flujo Máximo44

Calcular la tasa más grande a la cual se puede trasladar el material de una fuente a un destino sin violar ninguna de las restricciones de capacidad.

Uno de los problemas más simples concernientes a redes de flujo

Se puede resolver con algoritmos eficientes

Page 5: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Redes de Flujo55

Definición basada en grafos de redes de flujo

Red de flujoG = (V, E) es un grafo dirigido en el que cada arco (u, v) ∈ E tiene una capacidad no-negativa c(u, v) ≥ 0.

Si (u, v) ∉ E, asumimos que c(u, v) = 0.

Distinguimos dos vérticesUna fuente s

Un destino t

Asumimos que cada vértice está en alguna ruta de la fuente al destino∀ v ∈ V, existe una ruta s v  tEl grafo es conectado y |E| |V| ‐ 1

Page 6: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Red de Flujo66

Page 7: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Flujo77

Sea G = (V, E) una red de flujo con una función de capacidad c

Sea s la fuente de la red y sea t el destino

Un flujo en G es una función con valores-reales f: V x V R que satisface las siguientes tres propiedades

Restricción de capacidad: Para todo u, v ∈ V, requerimos f(u, v) ≤ c(u, v)

Simetría de sesgo: Para todo u, v ∈ V, requerimos f(u, v) = -f(v, u)

Conservación de flujo: Para todo u ∈ V – {s, t}, requerimos:

A la cantidad f(u,v), que puede ser positiva, cero o negativa, la llamamos flujo del vértice u al vértice v.

∑∈

=Vv

vuf 0),(

Page 8: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Flujo88

El valor de un flujo f se define como:

El total de flujo que sale de la fuente

La notación | | de nota valor de flujo, no valor absoluto ni cardinalidad

Problema de flujo máximoSe nos da una red de flujo G con fuente s y destino t y queremosencontrar un valor de flujo máximo

∑∈

=Vv

vsff ),(||

Page 9: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Restricción de Capacidad99

El flujo desde un vértice a otro no debe exceder la capacidad dada

Page 10: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Simetría de Sesgo1010

Convención de notación que nos dice:

El flujo desde un vértice u a un vértice v es el negativo del flujo en dirección contraria

Page 11: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Conservación de Flujo1111

El total de flujo que sale de un vértice distinto de la fuente o destino es 0

Page 12: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Ejemplo de Flujo1212

Page 13: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Redes con Múltiples Fuentes y Destinos13

Puede haber varias fuentes y destinos{s1, s2, …, sm}

{t1, t2, …, tn}

Este problema no es más difícil que el anteriorSe puede reducir a un problema ordinario de máximo flujo

Super-fuente

Super-destino

Page 14: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Ejemplo con Múltiples Fuentes y Destinos1414

Page 15: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Trabajando con Flujos15

Notación de sumatoria implícita

La restricción de conservación de flujo se puede expresar como

f(u,V) = 0 para todo u ∈ V – {s, t}.

En f(s, V – s) = f(s, V), el término V – s se refiere al conjunto V – {s}.

∑∑∈ ∈

=Xx Yy

yxfYXf ).,(),(

Page 16: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

El Método Ford-Fulkerson1616

Tres ideas importantes, relevantes para muchos algoritmos y problemas de flujo

Redes residuales

Rutas de aumentación

Cortes

Diferentes implementaciones del algoritmo con diferentes tiempos de ejecución

Page 17: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

El Método Ford-Fulkerson1717

Método iterativoInicia con f(u,v) = 0 para todo u, v ∈ V, con valor de flujo inicial de 0

Cada iteración incrementamos el valor de flujo al encontrar una “ruta de aumentación”

Una ruta desde la fuente s al destino t por la cual podemos enviar más flujo

Repetimos este proceso hasta que no podamos encontrar una ruta de aumentación

El teorema de máximo-flujo mínimo-corte muestra que al terminar, el proceso lleva a máximo flujo

Page 18: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

El Método Ford-Fulkerson1818

Page 19: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Redes Residuales19

Intuitivamente:Dado una red de flujo y un flujo, la red residual consiste de arcos que pueden admitir más flujo

FormalmenteDada la red de flujo G = (V, E) con fuente s y destino t.

Sea f un flujo en G, y considerando un par de vértices u, v ∈ V.

La cantidad de flujo adicional que podemos llevar de u a v sin exceder la capacidad c(u, v) es la capacidad residual de (u, v) dada por cf(u, v) = c(u, v) – f(u, v).

Dada una red de flujo G = (V, E) y un flujo f, la red residual de G inducida por f es Gf = (V, Ef), donde

Ef = {(u,v) ∈ V x V : cf(u, v) > 0}

Page 20: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Ejemplo de Redes Residuales20

Page 21: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Rutas de Aumentación21

Dada una red de flujo G = (V, E) y un flujo fUna ruta de aumentación p es una ruta de s a t en la red residual Gf.Figura 26.3bPodemos aumentar el flujo en 4 unidades, cf(v2,v3) = 4

La capacidad residual de la ruta es 4 sin violar la restricción de capacidad, la menor capacidad residual es 4

cf(p) = min{cf(u,v) : (u, v) esta en p}

Page 22: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Lema 26.3Rutas de Aumentación

22

Sea G = (V, E) una red de flujo

Sea f un flujo en G

Sea p una ruta de aumentación en Gf.

Defina el flujo fp en Gf como la función fp : V x V R por

Entonces fp es un flujo en Gf con valor |fp| = cf(p) > 0.

⎪⎩

⎪⎨

⎧=

manera. otra de 0p,en esta u) (v, si )(c-p,en esta v)(u, si )(

),( f ppc

vuff

p

Page 23: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Corolario 26.423

El corolario 26.4 nos dice que si añadimos fp a f, obtenemos otro flujo en G con valor más cercano al máximo

Sea G = (V, E) una red de flujo

Sea f un flujo en G

Sea p una ruta de aumentación en Gf

Sea fp como se definió anteriormente (lámina anterior)

Definimos una función f ’ : V x V R por f ’ = f + fp.

Entonces f ’ es un flujo en G con valor |f ’| = |f| + |fp| > |f|.

Page 24: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Cortes de Redes de Flujo24

El flujo es máximo si y sólo si su red residual no contiene ruta de aumentación.

Para probar esto, necesitamos la noción de corte.

Un corte (S, T) de una red de flujo G = (V, E) es una partición de V en S y T = V – S tal que s ∈ S y t ∈ T.

Flujo neto a través del corte(S, T) se define como f(S,T).

Capacidad del corte(S, T) es c(S, T)

Un corte mínimo de una red es un corte cuya capacidad es mínima sobre todos los cortes de la red

Page 25: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Ejemplo de Corte25

Flujo neto:

Capacidad

Page 26: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Lema 26.526

El flujo neto a través de cualquier corte es el mismo y es igual al valor del flujo

Sea f el flujo en una red de flujo G con fuente s y destino t, y sea (S, T) un corte de G.

Entonces el flujo neto a través de (S, T) es f(S, T) = |f|.

Page 27: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Corolario 26.627

El valor de cualquier flujo f en una red de flujo G esta acotado por encima por la capacidad de cualquier corte de G

Page 28: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Teorema de Máximo-Flujo Mínimo-Corte28

El valor de un flujo máximo es igual a la capacidad de un corte mínimo.

Si f es un flujo en una red de flujo G = (V, E) con fuente s y destino t, entonces las siguientes condiciones son equivalentes:

f es un máximo flujo en G

La red residual Gf no contiene rutas de aumentación

|f| = c(S,T) para algún corte (S, T) de G.

Page 29: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Algoritmo Ford-Fulkerson Básico29

Page 30: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Ejemplo30

Page 31: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Ejemplo31

Page 32: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Ejemplo32

Page 33: Máximo Flujo (Maximum Flow) - ccc.inaoep.mxjagonzalez/ADA/MF.pdf · Flujo Máximo 3 yLos arcos dirigidos en la red de flujo conducen el material yCada conducto tiene una capacidad

Análisis de Ford-Fulkerson33

Depende de método para encontrar ruta de aumentación

Utilizar búsqueda primero-a-lo-anchoAlgoritmo Edmonds-Karp

La ruta de aumentación es la más corta de s a t

Teorema 26.9El número total de aumentaciones es O(VE), O(E) por aumentación. Entonces el algoritmo tiene un tiempo de ejecución de O(VE2)

Otros métodos para calcular máximo flujoMétodo Generic-Push-Relabel lleva O(V2E)

Método Relabel-to-Front lleva O(V3)