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.

Slides:



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

Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Matemáticas Computacionales
Algoritmo ford- fulkerson
Propiedades de las Funciones Continuas
EC. DIFERENCIAL Def: Se llama ecuación diferencial a una relación que contiene una o varias derivadas de una función no especificada “y” con respecto.
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.
DERIVADA DE UNA FUNCION REAL
INTEGRACIÓN.
MATEMÁTICAS DISCRETAS.
Investigación de Operaciones II
Unidad académica: Ingenierías
Método de Ford-Fulkerson
Factorización (productos notables)
Conceptos Básicos ANÁLISIS DE REDES.

Lógica Temporal. Tablas semánticas.
Función Lineal.
Unidad 8 Funciones.
2- SIMPLEX.
Complejidad Problemas NP-Completos
El algoritmo primal-dual
Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte
Problemes de Viatjants
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
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.
Ciudad de Könisberg, Prusia, en XVIII:
Teoria de grafos.-clase 4
Algoritmo Simplex Dual Como sabemos, el método simplex es un algoritmo iterativo que iniciando en una solución básica factible pero no óptima, genera soluciones.
La Derivada. Ya vimos: los conceptos, métodos ó instrumentos necesarios para establecer el “comportamiento” de una función.  en un entorno de x o [ 
EL PODER DE SOLVER.
Universidad de los Andes-CODENSA
Árbol recubridor mínimo Distancias
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

Variables Aleatorias Unidimensionales
DEFINICIONES Sea (P) el siguiente problema de programación lineal:
Diseño y análisis de algoritmos
Teoría de Probabilidad
Algoritmos y Estructuras de Datos III (segunda parte) 1er cuatrimestre 2010 Min Chih Lin Irene Loiseau.
Diseño y análisis de algoritmos
M. Angélica Maulén-Yañez (1) y Eduardo González-Olivares (2)
La integral definida VBV.
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Ecuaciones diferenciales de orden superior
Parte I. Estructuras de Datos.
Sesión 3: Teoría de Grafos
Parte I. Estructuras de Datos.
1 Flujo Máximo Agustín J. González ELO320: 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
Ecuaciones Algebraicas
Instituto Tecnológico De Villahermosa Alumno: Lázaro García Hernández.
ANALISIS DE REDES UNIDAD PROCEDIMIENTO DE OPTIMIZACION
ARBOLES GENERALIZADOS
Ing. Antonio Crivillero
“Análisis y Diseño de Algoritmos” 2a Entrega, Programa 6 Centro de Investigación y Estudios Avanzados del IPN Samuel Garrido Daniel 15-Abril-2004 México,
GRAFOS HAMILTONIANOA Subtítulo.
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.
Nociones Inclusión Igualdad
Ing. Haydeli del Rosario Roa Lopez
Transcripción de la presentación:

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 grado de entrada positivo. Def: Una función de capacidades en la red es una función c(e)0 definida para todo eXN.

2 5 s 3 6 t 4 7

2 5 9 10 15 4 15 10 s 3 6 t 5 8 10 4 15 15 Capacidad 6 10 30 4 7

(ley de conservación de flujo) Def: Un flujo factible en una red N con capacidades, es una función f: XN  R+ que verifica: i) 0 f(e)c(e) para todo eje e. ii) eIn(v) f(e)=eOut(v) f(e) para todo nodo v salvo s y t, donde In(v)={eXN, e=wv con w otro nodo de N} Out(v)={eXN, e=vw con w otro nodo de N} (ley de conservación de flujo) Valor del flujo: F=eIn(t) f(e)- eOut(t) f(e)

2 5 9 4 10 15 4 4 15 10 4 4 s 3 6 t 5 8 10 4 15 15 Capacidad 6 10 30 Flujo 4 7 F = 4

Problema: determinar el flujo de máximo valor F que se puede definir en la red. Def: un corte en la red N es un subconjunto S V , tal que sS y t S. Def: SS={ejes que tienen la cola en S y la cabeza en S} SS={ejes que tienen la cola en S y la cabeza en S} donde S=V \S Proposición: Sea f un flujo definido en una red N y sea S un corte, entonces F=eSS f(e)-eSS f(e)

2 5 9 4 10 15 4 4 15 10 4 4 s 3 6 t 5 8 10 4 15 15 6 10 30 4 7 F = 4

2 5 9 4 10 15 4 4 15 10 4 4 s 3 6 t 5 8 10 4 15 15 6 10 30 4 7 F = 4

2 5 9 4 10 15 4 4 15 10 4 4 s 3 6 t 5 8 10 4 15 15 6 10 30 4 7 F = 4

2 5 9 4 10 15 4 4 15 10 4 4 s 3 6 t 5 8 10 4 15 15 6 10 30 4 7 F = 4

Def: la capacidad de un corte S se define como c(S)=eSS c(e) Lema: si f es una función de flujo con valor F y S es un corte en N, entonces Fc(S). Corolario (certificado de optimalidad): Si F es el valor de un flujo y S un corte en N tal que F=c(S) entonces F es un flujo máximo y S es un corte de capacidad mínima.

2 5 9 10 15 4 15 10 s 3 6 t 5 8 10 4 15 15 6 10 30 4 7 C(S) = 30

2 5 9 10 15 4 15 10 s 3 6 t 5 8 10 4 15 15 6 10 30 4 7 C(S) = 62

2 5 9 10 15 4 15 10 s 3 6 t 5 8 10 4 15 15 6 10 30 4 7 C(S) = 28

6 2 5 9 10 6 10 15 4 4 15 10 8 8 s 3 6 t 5 4 8 10 10 4 15 15 6 10 10 30 4 7 10 F = 24 C(S) = 28

9 2 5 9 10 1 9 10 15 4 15 10 8 9 s 3 6 t 5 3 8 10 5 10 4 15 15 6 10 15 30 4 7 15 F = 28 C(S) = 28

Algoritmo de Ford y Fulkerson Def: Dado un camino no orientado en N P=s=v0,e1,v1...vk-1,ek,vk=t, a) ei es un eje “hacia delante” si está orientado desde vi-1 hasta vi, es decir ei=(vi-1,vi) b) ei es un eje “hacia atrás” si está orientado desde vi hasta vi-1, es decir ei=(vi,vi-1) Def: Un camino de aumento en N es un camino P entre s y t tal que el flujo en un eje “hacia delante” puede crecer y en un eje “hacia atrás” puede decrecer, o sea para todo eje e de P se verifica que: f(e)<c(e) si e es “hacia delante” o f(e)>0 si e es “hacia atrás”

Algoritmo de camino de aumento Input: una red N y una función de flujo definida en ella. Inicialización: S = {s}. Poner a s el label 0. Poner i = 1. Mientras sea posible y S no contenga al sumidero t hacer si existe . un eje e=vw tal que v está marcado y w no está marcado y tal que f(e )<c(e) o . un eje e=wv tal que v está marcado y w no está marcado y tal que f(e )>0 entonces poner ant(w)=v marcar a w con el label i poner S=S{w}, i = i+1 Fin “mientras” Si S no contiene a t Return S corte de V Sino Reconstruir el único camino de aumento marcado P entre s y t usando los valores de ant a partir de t. Return P camino aumentado. Fin

Proposición: El algoritmo de camino de aumento es correcto, o sea determina un camino de aumento si lo hay, y si no llega a marcar t es porque no hay camino de aumento. (el algoritmo de camino de aumento no dice en que orden deben marcarse los nodos)

Algoritmo de Ford y Fulkerson Input: una red N con capacidades en los ejes. Inicialización: Definir un flujo inicial en N. Por ejemplo poner f(e)=0 para todo eXN . Mientras exista un camino de aumento en N hacer .Encontrar un camino de aumento P. . Poner M=mineP {(e)} donde (e)=c(e)-f(e) si e es “hacia delante” en P f(e) si e es “hacia atrás” en P .Para cada eje e de P poner f(e)=f(e)+M si e es “hacia delante” en P f(e)-M si e es “hacia atrás” en P Fin (el flujo final es máximo)

4 2 5 1 3 1 1 2 2 s 4 t 3 2 1 3

4 2 5 1 3 1 1 2 2 s 4 t 3 2 1 3

4 2 5 1 3 1 1 2 1 2 s 4 t 1 2 3 2 1 1 1 3

4 2 5 1 3 1 1 2 1 2 s 4 t 1 2 3 2 1 1 1 3

4 2 5 1 3 1 1 2 1 1 1 s 4 t 1 1 2 3 2 1 2 1 1 1 1 3

4 2 5 1 3 1 1 2 1 1 1 s 4 t 1 1 2 3 2 1 2 1 1 1 1 3

4 2 5 1 3 1 1 1 1 1 s 4 t 2 1 1 2 3 2 1 1 1 1 1 3

4 2 5 1 3 1 1 1 2 1 1 s 4 t 2 1 2 1 3 2 1 1 1 1 1 3

4 2 5 1 3 1 1 2 1 1 1 s 4 t 2 1 1 2 1 2 1 1 1 2 1 1 2 3

4 2 5 1 3 1 1 2 1 1 1 s 4 t 1 2 2 1 2 1 1 1 2 1 2 1 3

4 3 2 5 1 1 2 3 1 1 1 1 s 4 t 2 1 1 2 2 1 1 1 2 1 2 1 3

4 3 2 5 1 1 2 3 1 1 1 1 s 4 t 2 1 1 2 2 1 1 1 2 1 2 1 3

3 4 2 2 5 5 1 1 3 2 1 1 1 1 s s 4 4 t 2 1 1 2 2 1 1 1 2 1 1 2 3 3

1 2 s 4 5 3 t

Teorema: Si los valores del flujo inicial y las capacidades de los ejes son enteras el método de Ford y Fulkerson termina en un número finito de pasos (i.e. es un algoritmo!!) y determina un flujo máximo en N. Corolario: El valor del flujo máximo en una red N es igual a la capacidad de un corte mínimo. (problemas duales)

Qué pasa si las capacidades o los valores del flujo son números irracionales?. En este caso el método de Ford y Fulkerson puede no parar, o sea realizar un número infinito de pasos. A continuación mostramos un ejemplo, donde el método no para si el camino de aumento se elige en cada iteración de acuerdo a lo que se indica en la tabla.

Sea para todo Vale que En la siguiente red todos los arcos tienen capacidad salvo 3 arcos:

Complejidad de Ford y Fulkerson Cuál es el número máximo de iteraciones que requiere Ford y Fulkerson cuando las capacidades y los flujos iniciales son enteros?. Si no se especifica el orden en el que se eligen los ejes y nodos a marcar en al algoritmo de camino de aumento, el número de iteraciones puede ser no ser polinomial respecto del tamaño del problema.

Modificación de Edmonds y Karp: Usar BFS en el algoritmo de camino de aumento para marcar nodos y ejes. En este caso se puede demostrar que la complejidad del algoritmo queda O(m2 n). (ejercicio) Hay otros algoritmos más eficientes (más complicados). (Esto es suficiente para ver que el problema de flujo tal cual lo definimos esta computacionalmente bien resuelto, sin embargo hay otros algoritmos más eficientes).

eout(v)xe - ein(v) xe = 0 para todo v t,s Formulación del problema de flujo como un problema de programación lineal max F sujeto a eint(t) xe - eout(t) xe = F eout(v)xe - ein(v) xe = 0 para todo v t,s 0  xe  c(e) para todo eX. (Esta formulación nos permite usar otros métodos para resolver los problemas de flujo que escapan a la temática de este curso.)

Como usar flujo para determinar un matching máximo en un grafo bipartito G?, Sea V = V1 U V2 una partición según la definición de grafo bipartito. Armar una red Nst agregando a G una fuente s y un sumidero t y un eje entre s y cada nodo de V1, y entre cada nodo de V2 y t. Asignar capacidad 1 a todos los ejes del nuevo grafo Nst .

Teorema de Hall: Si G es un grafo bipartito con partición (V1, V2) entonces G tiene un matching que satura a V1 si y sólo si para todo W  V1, |W|  |(W)|, donde (W) es el conjunto de vecinos de los nodos de W.

Dem: (resumen) < = Si existe un matching que satura a V, cada nodo de W es vecino de un nodo distinto de V2, y por lo tanto |W|  |(W)|. = > Un matching que satura a V1 corresponde a un flujo máximo en Nst con valor | V1 | , entonces es suficiente mostrar que un corte mínimo tiene capacidad | V1|. El corte definido por {s} tiene capacidad |V1|. Hay que ver que cualquier otro corte tiene capacidad mayor. Sea <S, S > el conjunto de ejes de un corte cualquiera y W = S  V1 . Se puede escribir <S, S > = <{s}, S  V1 >  <W, S  V2 >  < S  V2 , {t}>

Usando esto y la hipótesis del teorema para W, y mirando un gráfico de Nst se puede demostrar que cap(S) = | < |{s}, S  V1 > | + | <W, S  V2 > | + | < S  V2 , {t}> | = (todas las capacidades son 1) = | V1 -W | + | <W, S  V2 > | + | S  V2 | ≥ (por construcción de Nst) ≥ | V1 -W | + | V2  (W)| + | S  V2 | = ( por definición de (W)) = | V1 -W | + | (W)| - | S  (W)| + | S  V2 | ≥ ≥ | V1 -W | + | (W)| - |S  V2 | + | S  V2 | = (porque (W)  V2) = | V1 -W | + | (W)| ≥ ≥ | V1 -W | + | W| ≥ (por hipótesis) ≥ | V1|.

Problema del matrimonio: Dado un conjunto de mujeres, cada una de las cuales conoce a un subconjunto de los hombres, bajo que condiciones es posible que cada mujer se case con uno de los hombres que conoce? Usar teorema de Hall.