SlideShare una empresa de Scribd logo
1 de 13
1
Flujo Máximo
Agustín J. González
ELO320: Estructura de Datos y
Algoritmos
2
Introducción
• Así como modelamos los enlaces de una red y sus nodos como un
grafo dirigido, podemos interpretar el grafo como una red de flujo de
algún material.
• Una fuente produce material en forma estacionaria y un resumidero lo
consume.
• Cada arco puede ser considerado como un conducto de cierta
capacidad.
• Como con la ley de corrientes de Kirchoff, la suma de flujos entrantes
a un vértice debe ser igual a la suma de flujos saliendo del vértice.
• Problema de flujo máximo: ¿Cuál es la tasa mayor a la cual el material
puede ser transportado de la fuente al resumidero sin violar ninguna
restricción de capacidad?
3
Redes de flujo
• Una red de flujo es un grafo dirigido G=(V,E) en donde
cada arco (u,v)E tiene una capacidad no negativa
c(u,v)0.
• Se distinguen dos vértices: la fuente s y el resumidero t.
• Se asume que cada vértice se encuentra en alguna ruta de s
a t.
• Un flujo en G es una función f: VxV----> R tal que
– Restricción de capacidad:  u,v en V, f(u,v)  c(u,v)
– Simetría: f(u,v) = - f(v,u)
– Conservación:  u en V-{s,t} v en Vf(u,v) = 0
• El valor del flujo es |f| = v en Vf(s,v)
• El problema del flujo máximo trata de maximizar este
flujo.
4
Ejemplo
s
v1
v3
t
v2 v
4
16
12
20
7
4
14
13
4
10
9
s
v1
v3
t
v2 v
4
11/16
12/12
15/20
7/7
4/4
11/14
8/13
1/4
10
4/9
f(u,v)/c(u,v)
si f(u,v)  0 no se anota
5
Método de Ford-Fulkerson
• Este método depende de tres ideas importantes: Camino de aumento y
red residual.
• Este método es iterativo. Se comienza con f(u,v) =0 para cada par de
nodos.
• En cada iteración se incrementa el valor del flujo buscando un camino
de aumento, el cual es un camino desde la fuente al resumidero que
puede conducir más flujo.
Ford-Kulkerson_method(G,s,t)
inicializar flujo f a 0;
while (exista un camino de aumento p) do
aumentar el flujo f a lo largo de p;
return f;
• Se repite el proceso previo hasta no encontrar un camino de aumento.
• Capacidad residual: es la capacidad adicional de flujo que un arco
puede llevar: cf(u,v)= c(u,v) - f(u,v)
• Dado una red de flujo G=(v,E) y un flujo f, la red residual: inducida
por f es
Gf=(V,Ef), con Ef={(u,v)  VxV: cf(u,v)>0}
6
Ejemplo: Red residual / camino de aumento
• Capacidad residual: es la capacidad adicional de flujo que un arco
puede llevar: cf(u,v)= c(u,v) - f(u,v)
• Dado una red de flujo G=(V,E) y un flujo f, la red residual: inducida
por f es
Gf=(V,Ef), con Ef={(u,v)  VxV: cf(u,v)>0}
Red previa
Red residual para a)
Capacidad residual
Flujo resultante al
aumentar capacidad
residual Red residual inducida por c)
7
Camino de aumento
• Es un camino de aumento p es un camino simple de s a t en
el grafo residual Gf
• Por definición de red residual, cada arco (u,v) sobre el
camino aumentado admite algún flujo neto positivo desde
u a v sin violar la restricción de capacidad.
• El flujo adicional máximo está dado por:
cf(p)= min{cf(u,v) : (u,v) está sobre p}
8
Algoritmo básico Ford-Fulkerson
• Ford-Fulkerson(G,s,t){
for (cada arco (u,v) de E) {
f[u,v]= 0;
f[v,u]= 0;
}
while (exista un camino p desde s a t en la red residual Gf) {
cf(p) = min{cf(u,v) : (u,v) está sobre p};
for (cada arco (u,v) en p) {
f[u,v]= f[u,v] + cf(p) ;
f[v,u]= - f[u,v];
}
}
}
9
Ejemplo: Algoritmo básico Ford-
Fulkerson
Ford-Fulkerson(G,s,t){
for (cada arco (u,v) de E) {
f[u,v]= 0;
f[v,u]= 0;
}
while (exista un camino p desde s at en la red residual Gf)
{
cf(p) = min{cf(u,v) : (u,v) está sobre p};
for (cada arco (u,v) en p) {
f[u,v]= f[u,v] + cf(p) ;
f[v,u]= - f[u,v];
}
}
}
a) a d) son las iteraciones del loop while.
Lado izquierdo están las redes residuales
con al camino de aumento
A la derecha las red resultante al agregar
el flujo fp
La última red residual no tiene camino
de aumento, luego la red de la cual
es inducida es de flujo máximo
10
Análisis de costo de Ford-Fulkerson
• Si el camino de aumento es elegido usando breadth-first search (o búsqueda por
niveles o amplitud), el algoritmo corre en tiempo polinomial.
• En este caso el método de Ford-Fulkerson es conocido como algoritmo de
Edmonds-Karp.
• El algoritmo tiene un costo inicial O(E)
• El cuerpo del loop toma un tiempo O(E) dado que en el ciclo for se procesa cada
arco del camino de aumento.
• Luego se puede demostrar que el número de aumentos de flujo está acotado por
O(VE).
• Esta cota es obtenida considerando que al aumentar el flujo al menos un arco del
camino de aumento desaparece (el que tenía capacidad residual mínima. La
eliminación de arcos hace aumentar la distancia desde el nodo de partida. El mismo
arco podría reaparecer posteriormente, pero con distancia aún mayor de la fuente.
Así, el numero de veces que un arco puede aparecer está acotado por el número de
nodos -2 (distancia máxima posible). Como hay E arcos, el número total de caminos
de aumentos es O(VE).
• Así el costo del algoritmo es O(VE2)
• Hay otros algoritmos que obtienen O(V2E) y otro O(V3).
11
Múltiples fuentes y resumideros
• Si hay múltiples fuentes y resumideros, el problema se
puede reducir al caso simple previo de una fuente y un
resumidero.
• Supongamos que se tiene {s1,s2,s3,..sm} fábricas y
{t1,t2,t3,..,tn} puntos de venta.
s2
s1
s3
s4
t1
t2
t3
t



s




12
Asociación bipartita máxima
• Dado un grafo no dirigido G=(V,E), una asociación es un subconjunto de
arcos M  E tal que para cada vértice v de V, a lo mas un arco de M es
incidente sobre v.
• La máxima asociación es la asociación de cardinalidad máxima.
• Restringiremos el problema a encontrar la asociación máxima en un grafo
bipartito. En éste se puede particionar V en V=L  R, donde L y R son
disjuntos y todos los arcos de E están entre L y R.
• L pueden ser máquinas y R tareas y se desea asociarlas para desarrollar
las tareas en paralelo.
13
Búsqueda de la Asociación bipartita máxima
• Es posible usar el método de Ford-Fulkerson.
• El truco es construir la red de flujo G’=(V’,E’) para el grafo
bipartito G=(V,E).
• V’= V  {s,t}
• E’ = {(s,u) : u  L} 
{ (u,v): u  L , v  R, y (u,v)  E } 
{(v,t): v  R}
• Se asigna capacidad unitaria a cada arco de E’
• Se aplica así el método Ford-Fulkerson y se obtiene la
asociación máxima.

Más contenido relacionado

Similar a maximumFlow.ppt

Optimizacion-Combinatoria y Grafos
Optimizacion-Combinatoria y GrafosOptimizacion-Combinatoria y Grafos
Optimizacion-Combinatoria y GrafosESPOL
 
Diferencial
Diferencial Diferencial
Diferencial siclla
 
18 simulacion de sistemas semana9 - elvis del aguila lopez
18 simulacion de sistemas   semana9 - elvis del aguila lopez18 simulacion de sistemas   semana9 - elvis del aguila lopez
18 simulacion de sistemas semana9 - elvis del aguila lopezElvis Del Aguila Lopez
 
Determinación de la línea de corriente superior
Determinación de la línea de corriente superior Determinación de la línea de corriente superior
Determinación de la línea de corriente superior Martín Luna Mercado
 
Flujo de fluidos ideales
Flujo de fluidos idealesFlujo de fluidos ideales
Flujo de fluidos idealesjaba09
 
modelo de flujo maximo unidad 4 en modelos de optimización de recursos
modelo de flujo maximo unidad 4 en modelos de optimización de recursosmodelo de flujo maximo unidad 4 en modelos de optimización de recursos
modelo de flujo maximo unidad 4 en modelos de optimización de recursosk7v476sp7t
 
Flujo permanente en sistemas de tuberías a presión
Flujo permanente en sistemas de tuberías a presiónFlujo permanente en sistemas de tuberías a presión
Flujo permanente en sistemas de tuberías a presiónAdanFonseca2
 
Presentación_T3_JoséJaén (1).pptx
Presentación_T3_JoséJaén  (1).pptxPresentación_T3_JoséJaén  (1).pptx
Presentación_T3_JoséJaén (1).pptxJoseJaen7
 

Similar a maximumFlow.ppt (20)

Flujo en redes
Flujo en redesFlujo en redes
Flujo en redes
 
Optimizacion-Combinatoria y Grafos
Optimizacion-Combinatoria y GrafosOptimizacion-Combinatoria y Grafos
Optimizacion-Combinatoria y Grafos
 
Redes abiertas
Redes abiertasRedes abiertas
Redes abiertas
 
Grafos
GrafosGrafos
Grafos
 
Cuestionario de estática y dinámica de fluidos
Cuestionario de estática y dinámica de fluidosCuestionario de estática y dinámica de fluidos
Cuestionario de estática y dinámica de fluidos
 
Controles en entubación
Controles en entubaciónControles en entubación
Controles en entubación
 
Diferencial
Diferencial Diferencial
Diferencial
 
REDES.pptx
REDES.pptxREDES.pptx
REDES.pptx
 
Cinematic de fluidos_reyes
Cinematic de fluidos_reyesCinematic de fluidos_reyes
Cinematic de fluidos_reyes
 
Deteccion de fugas
Deteccion de fugasDeteccion de fugas
Deteccion de fugas
 
18 simulacion de sistemas semana9 - elvis del aguila lopez
18 simulacion de sistemas   semana9 - elvis del aguila lopez18 simulacion de sistemas   semana9 - elvis del aguila lopez
18 simulacion de sistemas semana9 - elvis del aguila lopez
 
Determinación de la línea de corriente superior
Determinación de la línea de corriente superior Determinación de la línea de corriente superior
Determinación de la línea de corriente superior
 
Flujo de fluidos ideales
Flujo de fluidos idealesFlujo de fluidos ideales
Flujo de fluidos ideales
 
Greedy
GreedyGreedy
Greedy
 
modelo de flujo maximo unidad 4 en modelos de optimización de recursos
modelo de flujo maximo unidad 4 en modelos de optimización de recursosmodelo de flujo maximo unidad 4 en modelos de optimización de recursos
modelo de flujo maximo unidad 4 en modelos de optimización de recursos
 
Fio imprimir trabajo fluidos
Fio imprimir trabajo fluidosFio imprimir trabajo fluidos
Fio imprimir trabajo fluidos
 
Flujo permanente en sistemas de tuberías a presión
Flujo permanente en sistemas de tuberías a presiónFlujo permanente en sistemas de tuberías a presión
Flujo permanente en sistemas de tuberías a presión
 
Modelo del camino mas corto.pptx
Modelo del camino mas corto.pptxModelo del camino mas corto.pptx
Modelo del camino mas corto.pptx
 
Presentación_T3_JoséJaén (1).pptx
Presentación_T3_JoséJaén  (1).pptxPresentación_T3_JoséJaén  (1).pptx
Presentación_T3_JoséJaén (1).pptx
 
Problema 2,5
Problema 2,5Problema 2,5
Problema 2,5
 

Más de jlmansilla

LinearSortOrderSatatistics.ppt
LinearSortOrderSatatistics.pptLinearSortOrderSatatistics.ppt
LinearSortOrderSatatistics.pptjlmansilla
 
elementaryAlgorithms.ppt
elementaryAlgorithms.pptelementaryAlgorithms.ppt
elementaryAlgorithms.pptjlmansilla
 
binarySearchTree.ppt
binarySearchTree.pptbinarySearchTree.ppt
binarySearchTree.pptjlmansilla
 
NP_Completitud.ppt
NP_Completitud.pptNP_Completitud.ppt
NP_Completitud.pptjlmansilla
 
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptx
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptxPERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptx
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptxjlmansilla
 

Más de jlmansilla (11)

NTFSFS.ppt
NTFSFS.pptNTFSFS.ppt
NTFSFS.ppt
 
NTFS.ppt
NTFS.pptNTFS.ppt
NTFS.ppt
 
LinearSortOrderSatatistics.ppt
LinearSortOrderSatatistics.pptLinearSortOrderSatatistics.ppt
LinearSortOrderSatatistics.ppt
 
heapsort.ppt
heapsort.pptheapsort.ppt
heapsort.ppt
 
hashing.ppt
hashing.ppthashing.ppt
hashing.ppt
 
elementaryAlgorithms.ppt
elementaryAlgorithms.pptelementaryAlgorithms.ppt
elementaryAlgorithms.ppt
 
binarySearchTree.ppt
binarySearchTree.pptbinarySearchTree.ppt
binarySearchTree.ppt
 
greedy.ppt
greedy.pptgreedy.ppt
greedy.ppt
 
NP_Completitud.ppt
NP_Completitud.pptNP_Completitud.ppt
NP_Completitud.ppt
 
BasicC++.ppt
BasicC++.pptBasicC++.ppt
BasicC++.ppt
 
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptx
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptxPERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptx
PERDIDA_EN_UNA_RED_DE_FIBRA_OPTICA.pptx
 

maximumFlow.ppt

  • 1. 1 Flujo Máximo Agustín J. González ELO320: Estructura de Datos y Algoritmos
  • 2. 2 Introducción • Así como modelamos los enlaces de una red y sus nodos como un grafo dirigido, podemos interpretar el grafo como una red de flujo de algún material. • Una fuente produce material en forma estacionaria y un resumidero lo consume. • Cada arco puede ser considerado como un conducto de cierta capacidad. • Como con la ley de corrientes de Kirchoff, la suma de flujos entrantes a un vértice debe ser igual a la suma de flujos saliendo del vértice. • Problema de flujo máximo: ¿Cuál es la tasa mayor a la cual el material puede ser transportado de la fuente al resumidero sin violar ninguna restricción de capacidad?
  • 3. 3 Redes de flujo • Una red de flujo es un grafo dirigido G=(V,E) en donde cada arco (u,v)E tiene una capacidad no negativa c(u,v)0. • Se distinguen dos vértices: la fuente s y el resumidero t. • Se asume que cada vértice se encuentra en alguna ruta de s a t. • Un flujo en G es una función f: VxV----> R tal que – Restricción de capacidad:  u,v en V, f(u,v)  c(u,v) – Simetría: f(u,v) = - f(v,u) – Conservación:  u en V-{s,t} v en Vf(u,v) = 0 • El valor del flujo es |f| = v en Vf(s,v) • El problema del flujo máximo trata de maximizar este flujo.
  • 5. 5 Método de Ford-Fulkerson • Este método depende de tres ideas importantes: Camino de aumento y red residual. • Este método es iterativo. Se comienza con f(u,v) =0 para cada par de nodos. • En cada iteración se incrementa el valor del flujo buscando un camino de aumento, el cual es un camino desde la fuente al resumidero que puede conducir más flujo. Ford-Kulkerson_method(G,s,t) inicializar flujo f a 0; while (exista un camino de aumento p) do aumentar el flujo f a lo largo de p; return f; • Se repite el proceso previo hasta no encontrar un camino de aumento. • Capacidad residual: es la capacidad adicional de flujo que un arco puede llevar: cf(u,v)= c(u,v) - f(u,v) • Dado una red de flujo G=(v,E) y un flujo f, la red residual: inducida por f es Gf=(V,Ef), con Ef={(u,v)  VxV: cf(u,v)>0}
  • 6. 6 Ejemplo: Red residual / camino de aumento • Capacidad residual: es la capacidad adicional de flujo que un arco puede llevar: cf(u,v)= c(u,v) - f(u,v) • Dado una red de flujo G=(V,E) y un flujo f, la red residual: inducida por f es Gf=(V,Ef), con Ef={(u,v)  VxV: cf(u,v)>0} Red previa Red residual para a) Capacidad residual Flujo resultante al aumentar capacidad residual Red residual inducida por c)
  • 7. 7 Camino de aumento • Es un camino de aumento p es un camino simple de s a t en el grafo residual Gf • Por definición de red residual, cada arco (u,v) sobre el camino aumentado admite algún flujo neto positivo desde u a v sin violar la restricción de capacidad. • El flujo adicional máximo está dado por: cf(p)= min{cf(u,v) : (u,v) está sobre p}
  • 8. 8 Algoritmo básico Ford-Fulkerson • Ford-Fulkerson(G,s,t){ for (cada arco (u,v) de E) { f[u,v]= 0; f[v,u]= 0; } while (exista un camino p desde s a t en la red residual Gf) { cf(p) = min{cf(u,v) : (u,v) está sobre p}; for (cada arco (u,v) en p) { f[u,v]= f[u,v] + cf(p) ; f[v,u]= - f[u,v]; } } }
  • 9. 9 Ejemplo: Algoritmo básico Ford- Fulkerson Ford-Fulkerson(G,s,t){ for (cada arco (u,v) de E) { f[u,v]= 0; f[v,u]= 0; } while (exista un camino p desde s at en la red residual Gf) { cf(p) = min{cf(u,v) : (u,v) está sobre p}; for (cada arco (u,v) en p) { f[u,v]= f[u,v] + cf(p) ; f[v,u]= - f[u,v]; } } } a) a d) son las iteraciones del loop while. Lado izquierdo están las redes residuales con al camino de aumento A la derecha las red resultante al agregar el flujo fp La última red residual no tiene camino de aumento, luego la red de la cual es inducida es de flujo máximo
  • 10. 10 Análisis de costo de Ford-Fulkerson • Si el camino de aumento es elegido usando breadth-first search (o búsqueda por niveles o amplitud), el algoritmo corre en tiempo polinomial. • En este caso el método de Ford-Fulkerson es conocido como algoritmo de Edmonds-Karp. • El algoritmo tiene un costo inicial O(E) • El cuerpo del loop toma un tiempo O(E) dado que en el ciclo for se procesa cada arco del camino de aumento. • Luego se puede demostrar que el número de aumentos de flujo está acotado por O(VE). • Esta cota es obtenida considerando que al aumentar el flujo al menos un arco del camino de aumento desaparece (el que tenía capacidad residual mínima. La eliminación de arcos hace aumentar la distancia desde el nodo de partida. El mismo arco podría reaparecer posteriormente, pero con distancia aún mayor de la fuente. Así, el numero de veces que un arco puede aparecer está acotado por el número de nodos -2 (distancia máxima posible). Como hay E arcos, el número total de caminos de aumentos es O(VE). • Así el costo del algoritmo es O(VE2) • Hay otros algoritmos que obtienen O(V2E) y otro O(V3).
  • 11. 11 Múltiples fuentes y resumideros • Si hay múltiples fuentes y resumideros, el problema se puede reducir al caso simple previo de una fuente y un resumidero. • Supongamos que se tiene {s1,s2,s3,..sm} fábricas y {t1,t2,t3,..,tn} puntos de venta. s2 s1 s3 s4 t1 t2 t3 t    s    
  • 12. 12 Asociación bipartita máxima • Dado un grafo no dirigido G=(V,E), una asociación es un subconjunto de arcos M  E tal que para cada vértice v de V, a lo mas un arco de M es incidente sobre v. • La máxima asociación es la asociación de cardinalidad máxima. • Restringiremos el problema a encontrar la asociación máxima en un grafo bipartito. En éste se puede particionar V en V=L  R, donde L y R son disjuntos y todos los arcos de E están entre L y R. • L pueden ser máquinas y R tareas y se desea asociarlas para desarrollar las tareas en paralelo.
  • 13. 13 Búsqueda de la Asociación bipartita máxima • Es posible usar el método de Ford-Fulkerson. • El truco es construir la red de flujo G’=(V’,E’) para el grafo bipartito G=(V,E). • V’= V  {s,t} • E’ = {(s,u) : u  L}  { (u,v): u  L , v  R, y (u,v)  E }  {(v,t): v  R} • Se asigna capacidad unitaria a cada arco de E’ • Se aplica así el método Ford-Fulkerson y se obtiene la asociación máxima.