Upload
duongxuyen
View
231
Download
0
Embed Size (px)
Citation preview
Máximo Flujo(Maximum Flow)
DR. JESÚS A. GONZÁLEZ BERNAL
CIENCIAS COMPUTACIONALES
INAOE
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.
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
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
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
Red de Flujo66
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),(
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 ),(||
Restricción de Capacidad99
El flujo desde un vértice a otro no debe exceder la capacidad dada
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
Conservación de Flujo1111
El total de flujo que sale de un vértice distinto de la fuente o destino es 0
Ejemplo de Flujo1212
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
Ejemplo con Múltiples Fuentes y Destinos1414
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 ).,(),(
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
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
El Método Ford-Fulkerson1818
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}
Ejemplo de Redes Residuales20
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}
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
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|.
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
Ejemplo de Corte25
Flujo neto:
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|.
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
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.
Algoritmo Ford-Fulkerson Básico29
Ejemplo30
Ejemplo31
Ejemplo32
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)