Flujo en redes Def: una red N es un grafo orientado conexo que tiene dos nodos distinguidos una...

45
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 eX N .

Transcript of Flujo en redes Def: una red N es un grafo orientado conexo que tiene dos nodos distinguidos una...

Page 1: 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.

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 eXN.

Page 2: 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.

s

2

3

4

5

6

7

t

Page 3: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4Capacidad

Page 4: 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.

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) eIn(v) f(e)=eOut(v) f(e) para todo nodo v salvo s y t, donde

In(v)={eXN, e=wv con w otro nodo de N}

Out(v)={eXN, e=vw con w otro nodo de N}

(ley de conservación de flujo)

Valor del flujo: F=eIn(t) f(e)- eOut(t) f(e)

Page 5: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4

4

0

0

0

0

0 0

0

4 4

0

40

00Capacidad

Flujo

F = 4

Page 6: 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.

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 sS 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=eSS f(e)-eSS f(e)

Page 7: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4

4

0

0

0

0

0 0

0

4 4

0

40

00

F = 4

Page 8: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4

4

0

0

0

0

0 0

0

4 4

0

40

00

F = 4

Page 9: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4

4

0

0

0

0

0 0

0

4 4

0

40

00

F = 4

Page 10: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4

4

0

0

0

0

0 0

0

4 4

0

40

00

F = 4

Page 11: 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.

Def: la capacidad de un corte S se define como

c(S)=eSS c(e)

Lema: si f es una función de flujo con valor F y S es un corte en N, entonces Fc(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.

Page 12: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4

C(S) = 30

Page 13: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4

C(S) = 62

Page 14: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4

C(S) = 28

Page 15: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4

10

6

6

10

10

0 10

4

8 8

0

40

00

C(S) = 28F = 24

Page 16: 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.

s

2

3

4

5

6

7

t

15

5

30

15

10

8

15

9

6 10

10

10 15

4

4

10

9

9

15

15

5 10

3

8 9

1

00

00

C(S) = 28F = 28

Page 17: 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.

Algoritmo de Ford y FulkersonDef: 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”

Page 18: 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.

Algoritmo de camino de aumentoInput: 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=vw tal que v está marcado y w no está marcado y tal que f(e )<c(e) o . un eje e=wv 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+1Fin “mientras”Si S no contiene a t Return S corte de VSino 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

Page 19: 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.

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)

Page 20: 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.

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 eXN .

Mientras exista un camino de aumento en N hacer

.Encontrar un camino de aumento P.

. Poner M=mineP {(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)

Page 21: 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.

4

11

2

21

2

3

3

1

s

2

4

5

3

t

Page 22: 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.

4

11

2

21

2

3

3

1

s

2

4

5

3

t

Page 23: 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.

4

1

1

2

13

11

1

21

2

3

2

1

s

2

4

5

3

t

Page 24: 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.

4

1

1

2

13

11

1

21

2

3

2

1

s

2

4

5

3

t

Page 25: 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.

4

2

1

1

1

12

2

1

1

1

13

11

1

1

3

2

1

s

2

4

5

3

t

Page 26: 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.

4

2

1

1

1

12

2

1

1

1

13

11

1

1

3

2

1

s

2

4

5

3

t

Page 27: 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.

11 1

11

4

1

2

1

12

11

3

113

2

1

s

2

4

5

3

t

Page 28: 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.

11 1

11

4

1

2

1

1

2

2

11

3

113

2

1

s

2

4

5

3

t

Page 29: 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.

1

11

2 1 1

11

4

2

2

1

1

2

21

113

1

1

s

2

4

5

3

t

2

Page 30: 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.

11

2 1 1

11

4

2

2

1

1

2

21

113

1

1

s

2

4

5

3

t

2

Page 31: 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.

111

11

4

13

11

2 1 1

3

2

21

21

2

1s

2

4

5

3

t

2

Page 32: 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.

111

11

4

13

11

2 1 1

3

2

21

21

2

1s

2

4

5

3

t

2

Page 33: 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.

111

11

4

13

11

2 1 1

3

2

21

21

2

1s

2

4

5

3

t

2

s

2

4

5

3

Page 34: 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.

1

1

2

2

2

1

2s

2

4

5

3

t

Page 35: 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.

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)

Page 36: 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.

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.

Page 37: 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.

para todopara todoVale queVale que

salvo 3 arcos: salvo 3 arcos: En la siguiente red todos los arcos tienen capacidadEn la siguiente red todos los arcos tienen capacidad

Sea Sea

Page 38: 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.

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.

Page 39: 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.

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).

Page 40: 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.

Formulación del problema de flujo como un problema de programación lineal

max F

sujeto a eint(t) xe - eout(t) xe = F

eout(v)xe - ein(v) xe = 0 para todo v t,s

0 xe c(e) para todo eX.

(Esta formulación nos permite usar otros métodos para resolver los problemas de flujo que escapan a la temática de

este curso.)

Page 41: 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.

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 .

Page 42: 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.

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.

Page 43: 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.

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

Page 44: 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.

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|.

Page 45: 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.

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.