Teorema de Flujo Máximo y
Corte Mínimo
Definición de red
• Una red de transporte es una gráfica dirigida, ponderada, simple que satisface las siguientes condiciones:
1) Un vértice designado, el origen o fuente, no tiene aristan entrantes
2) Un vértice designado, destino o sumidero, no tiene aristas salientes
3) El peso C
ijde la arista dirigida (i,j), llamado capacidad de (i,j), es un
número no negativo.
Flujo • Sea G una red de transporte. Sea 𝐶𝑖𝑗 la capacidad de la arista dirigida (i, j). Un flujo F en G asigna a cada arista dirigida (i, j) un número no negativo 𝐹
𝑖𝑗 tal que:
a) 𝐹
𝑖𝑗≤ 𝐶
𝑖𝑗b) Para cada vértice j, que no es la fuente ni el destino,
𝑖
𝐹
𝑖𝑗=
𝑖
𝐹
𝑗𝑖• 𝐹
𝑖𝑗recibe el nombre de flujo en la arista (i, j). Para cualquier vértice j,
•
𝑖𝐹
𝑖𝑗-> flujo que entra a j
•
𝑖𝐹
𝑗𝑖-> flujo que sale de j
Conservación del flujo
Modelo de un flujo
Propiedades de una red
Origen (Fuente)
Destino
(Sumidero)
Los pesos de la arista dirigida, llamada capacidad, es un número no negativo
Flujo máximo (Etiquetado de aristas)
• Sea P una trayectoria del vértice a al z en una red G que satisface las siguientes condiciones:
a) Para cada arista (i, j) con orientación apropiada en P,
𝐹
𝑖𝑗< 𝐶
𝑖𝑗.
b) Para cada arista (i, j) con orientación inadecuada en P,
0 < 𝐹
𝑖𝑗.
• Sea
∆ = 𝑚í𝑛 𝑋,
Donde X consiste en los números 𝐶
𝑖𝑗− 𝐹
𝑖𝑗, para las aristas (i, j) con orientación apropiada en P, y 𝐹
𝑖𝑗, para aristas (i, j) con orientación inapropiada en P. Defina
𝐹
𝑖𝑗∗=
𝐹
𝑖,𝑗𝐹
𝑖𝑗+ ∆ 𝐹
𝑖𝑗− ∆
• Entonces 𝐹
∗es un flujo cuyo valor es ∆ mayor que el valor de F.
Si (i, j) no está en P
Si (i, j) tiene orientación apropiada en P
Si (i, j)no tiene la orientación apropiada en P
Las aristas tienen etiquetadas “x,y”
para indicar capacidad “x” y el flujo “y”
Capacidad
Flujo
Ejemplo:
Dada la siguiente red,
encuentre el corte mínimo
y el flujo máximo
Corte
• Sea G una red y considere el flujo Fa la terminación del algoritmo de Flujo Máximo. Algunos vértices están etiquetados y otros no. Sea
𝑃 𝑃 el conjunto de vértices etiquetados(no etiquetados). Entonces el origen a está en 𝑃 y el destino z está en 𝑃.
• El conjunto S de aristas (v, w), con 𝑤 ∈ 𝑃 y 𝑤 ∈ 𝑃, se llama corte, y la suma de las capacidades de las aristas en S se llama capacidad de corte.
“Un corte 𝑷, 𝑷 en G consiste en un conjunto P de vértices y el
complemento 𝑷 de 𝑷, con 𝒂 ∈ 𝑷 y 𝐳 ∈ 𝑷 𝑷”
La línea divide los vértices en dos conjuntos:
• P = {a, b, d}
• 𝑃 = {c, e, f, z}
lo que produce el corte(𝑷, 𝑷).
Ejemplo de corte de una red
¿Qué es un flujo?
[2]Matemáticas discretas. 3ra edición.
Johnsonbaugh
Figura 1.
Flujo máximo. [2]
“Un flujo en una red asigna un flujo a
cada arista dirigida que no excede la
capacidad de esa arista” [1]
b
a
g
h e
s
d
z
¿Cómo sacar un flujo máximo?
7,0
2,0
1,0
5,0
3,0
4,0
2,0 3,0
4,0
5,0
6,0 3,0
b(a+,7) d(b+,5) g(d+,4)
s(a+,2) e(s+,2) h(e+,2)
z(h+,2) a(-,∞)
2,2
4,2 5,2
6,2
Figura 2.
Grafo dirigido.
continuación…
b
a
g
h e
s
d
z 7,0
1,0
5,0
3,0
2,0 3,0
4,0
3,0
b(a+,7) d(b+,5) g(d+,4)
s(b+,1) e(d+,2) h(e+,2)
z(g+,3) a(-,∞)
2,2
4,2 5,2
6,2 7,3
5,3 4,3
3,3
Figura 2.2 Grafo dirigido.
continuación …
b
a
g
h e
s
d
1,0 z
3,0
2,0 3,0
b(a+,4) d(b+,2) g(d+,1)
s(b+,1) e(d+,2) h(g+,1)
z(h+,1) a(-,∞)
2,2
4,2 5,2
6,2 7,3
5,3 4,3
3,3 3,1
6,3 7,4
5,4 4,4
Figura 2.3 Grafo dirigido.
continuación …
b
a
g
h e
s
d
1,0 z
3,0
2,0
b(a+,3) d(b+,1) g(h-,1)
s(b+,1) e(d+,1) h(e+,1)
z(h+,1) a(-,∞)
2,2
4,2 5,2
3,3
3,1
6,3 7,4
5,4 4,4
2,1
5,3
6,4 7,5
5,5
Figura 2.4 Grafo dirigido.
continuación …
b
a
g
h e
s
d
1,0 z
3,0
b(a+,2) d(e-,1) g(h-,1)
s(b+,1) e(s+,1) h(e+,1)
z(h+,1) a(-,∞)
2,2
4,2
3,3
3,1 4,4
2,1
5,3
6,4 7,5
5,5
1,1
4,3 5,4
6,5 7,6
Figura 2.5 Grafo dirigido.
Flujo final
b
a
g
h e
s
d
z 3,0
b(a+,2) d(e-,1) g(h-,1)
s(b+,1) e(s+,1) h(e+,1)
z(h+,1) a(-,∞)
2,2
3,3
3,1 4,4
2,1 5,5
1,1
4,3 5,4
6,5 7,6
Salen 8 unidades de a Llegan 8 unidades a z
Figura 2.5 Flujo Final.
Procedure_FlujoMax N, a, z, C, Vt, n
if (Vt < n-2) return F = Método Burbuja (C) // Condición de Red Para cada arista (i,j) F(i,j) = 0 //Inicialización
while (F==0)
{ for i=0 to n
{ predecesor(Vi)=null valor(Vi)=null
}
predecesor(a)=null valor(a)=infinito
//L lista de vértices con etiqueta no analizados L={a}
//proceso de etiquetación while (valor(z)==null)
{ if (L==0) return F //el flujo es máximo elegir un v de L
L=L-{v}
Delta=valor(v)
para cada arista de (v,w) con valor(w)==null if (F(v,w)<C(v,w))
{
predecesor(w)=v
valor(w)=min{delta,C(v,w)-F(v,w)}
L=L+{w}
para cada arista de (w,v) con valor(w)==null }
if (F(v,w)<0) {
predecesor(w)=v
valor(w)=min{delta,F(v,w)}
L=L+{w}
} }
//Encontrar una trayectoria S de a___z para revisar el flujo
w(0)=z k=0
while(w(k)!=a)
{ w(k+1)=predecesor k=K+1
}
S={w(k+1)+w(k)...w(0)}
Delta=valor(z)
for i=0 to k+1
{ e={w(i),w(i-1)}
if(e tiene orientación correcta en S) F(e)=F(e)+Delta
else
F(e)=F(e)-Delta }
}
¿Qué es un corte?
• SI N=(V,E) es una red de transporte y C es un conjunto de corte para el grafo dirigido asociado con N, entonces C es un corte, o corte a-z, Si la eliminación de los aristas de C de la red produce la separación de a y z [3]
Es decir, la eliminación de ciertos aristas que causan la separación total del vértice “a” al “z”
[3]Matemáticas discreta y combinatoria
Ralph P. Grimaldi
Ejemplo
• Tomando la figura 2.5
b
a
g
h e
s
d
z 3,0
2,2
3,3
3,1 4,4
2,1 5,5
1,1
4,3 5,4
6,5 7,6
Figura 2.5 Flujo Final.
continuación …
b
a
g
h e
s
d
z 3,0
2,2
3,3
3,1 4,4
2,1 5,5
1,1
4,3 5,4
6,5 7,6