Método de Ford-Fulkerson

Slides:



Advertisements
Presentaciones similares
UNIVERSIDAD NACIONAL EXPERIMENTAL POLITÉCNICA DE LA FUERZA ARMADA
Advertisements

Inteligencia Artificial
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
GRAFOS Presentado por: Oscar Leonardo Ramírez John Freddy Sandoval
Algoritmo ford- fulkerson
GRAFOS: ALGORITMOS FUNDAMENTALES
Teoría de Grafos I semestre 2009 UNIVERSIDAD NACIONAL DE INGENIERIA
Pulso de onda Ecuación de ondas v Movimiento sentido positivo de x
NUMERO DE CONTROL: NOMBRE DEL TRABAJO: MAPA CONCEPTUAL
INSTITUTO TECNOLOGICO de Villahermosa
Grupo 4 Matías Melgar Pablo Carbonell
OPTIMIZACIÓN EN REDES EN ALGUNOS PROBLEMAS DE OPTIMIZACIÓN PUEDE SER ÚTIL REPRESENTAR EL PROBLEMA A TRAVÉS DE UNA GRÁFICA: ruteo de vehículos, distribución.
MATEMÁTICAS DISCRETAS.
INSTITUTO TECNOLOGICO DE VILLAHERMOSA
Instituto Tecnológico De Villahermosa
Investigación de Operaciones II
Investigación de Operaciones II
Investigación Algorítmica
Conceptos Básicos ANÁLISIS DE REDES.
Investigación Operativa


Lógica Temporal. Tablas semánticas.

V.Álvarez M.D. Frau J.R. Narro P. Reyes Matemática Discreta Tema 5: Coloración 1/24 Capítulo 5: Coloración Introducción. Coloración de vértices. Coloración.
Tema 3. Optimización de Código
Definiciones: conjuntos, grafos, y árboles
Recurrencia Programación II 3-4 de febrero de 2009.
Teoría de Grafos.
Derivación de Contraejemplos para Model Checking Cuantitativo
Análisis de nodos y mallas
Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte
Problemes de Viatjants
Cecilia Laborde González
GRAFOS HUGO ARAYA CARRASCO.
Teoría de Grafos.
1 Algoritmos Elementales de Grafos Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem
Programación entera y grafos
PROGRAMACIÓN PARALELA EN ALGORITMOS SOBRE GRAFOS
Modelos Cuantitativos
Ejemplos de Grafos: Red de tráfico con caminos y cruces.
Grafos. Un Grafo G es un par de conjuntos (V, E), donde V es un conjunto no vacío de elementos llamados vértices o nodos y E es un conjunto formado por.
Teoria de grafos.-clase 4
Definiciones: conjuntos, grafos, y árboles
Universidad de los Andes-CODENSA
I n s t i t u t o T e c n o l ó g i c o d e T e c n o l ó g i c o d e V i l l a h e r m o s a ING. EN SISTEMAS CATEDRATICO: I.I. Zinath Javier Gerónimo.
Single-Source Shortest Paths “Camino más corto desde/hacia una fuente”
Matemáticas Discretas
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos

Agustín J. González ELO320: Estructura de Datos y Algoritmos
Matemáticas Discretas
Dikjstra – Shortest Path. Algoritmo Dijkstra Inicio: Asignar un nivel temporal igual a 0 en el nodo de inicio e infinito al resto de los nodos Iteración.
Sesión 3: Teoría de Grafos
1 Single-Source Shortest Paths “Camino más corto desde/hacia una fuente” Agustín J. González ELO320: Estructura de Datos y Algoritmos 1.er. Sem
Definiciones: conjuntos, grafos, y árboles
1 Flujo Máximo Agustín J. González ELO320: Estructura de Datos y Algoritmos.
Agustín J. González ELO-320: Estructura de Datos Y Algoritmos
Agustín J. González ELO320: Estructura de Datos y Algoritmos
TEMA 5: El problema del flujo con costo mínimo
Flujo en redes Def: una red N es un grafo orientado conexo que tiene dos nodos distinguidos una fuente s con grado de salida positivo y un sumidero t con.
Cecilia Laborde González
ANALISIS DE REDES UNIDAD PROCEDIMIENTO DE OPTIMIZACION
UNIDAD 2 Grafos Árboles abarcadores mínimos Caminos más cortos.
GRAFOS.
Matemáticas Discretas MISTI
Recorridos de grafos Segunda Parte M.C. Meliza Contreras González.
Guillermo Baquerizo 2009 – I Término. Elaborado por: Guillermo Baquerizo Introducción Los problemas de flujo son caracterizados por la conservación de.
Transcripción de la presentación:

Método de Ford-Fulkerson Flujo Máximo Método de Ford-Fulkerson

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?

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.

Ejemplo s v1 v3 t v2 v4 16 12 20 7 4 14 13 10 9 s v1 v3 t v2 v4 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

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}

Ejemplo: Red residual / camino de aumento Red residual para a) Red previa Capacidad residual Flujo resultante al aumentar capacidad residual Red residual inducida por c) 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}

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}

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]; } } }

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 el 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 Ejemplo: Algoritmo básico Ford-Fulkerson

Análisis de costo de Ford-Fulkerson Si el camino de aumento es elegido usando breadth-first search (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 número 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).

Algoritmo básico Ford-Fulkerson Ford-Fulkerson(G,s,t){ for (cada arco (u,v) de E) { ==> O(|E|) f[u,v]= 0; f[v,u]= 0; } while (exista un camino p desde s a t en la red residual Gf) {=>O(|V|) cf(p) = min{cf(u,v) : (u,v) está sobre p}; for (cada arco (u,v) en p) { ==> O(|E|) f[u,v]= f[u,v] + cf(p) ; f[v,u]= - f[u,v]; } } } Cada vez que aumentamos el flujo, un arco desaparece en la red residual.

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 s  t 

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 puede ser máquinas y R tareas y se desea asociarlas para desarrollar las tareas en paralelo.

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.

Búsqueda de la Asociación bipartita máxima: Ejemplo