clase 13

64
PAII-13: redes de flujo y aplicaciones Dr. J.B. Hayet CENTRO DE INVESTIGACI ´ ON EN MATEMATICAS Marzo 2008 , J.B. Hayet Programacion, Marzo 2008 1 / 46

Upload: herbert-serafin-ramos-aparco

Post on 08-Jul-2016

4 views

Category:

Documents


0 download

DESCRIPTION

13

TRANSCRIPT

Page 1: Clase 13

PAII-13: redes de flujo y aplicaciones

Dr. J.B. Hayet

CENTRO DE INVESTIGACION EN MATEMATICAS

Marzo 2008

,J.B. Hayet Programacion, Marzo 2008 1 / 46

Page 2: Clase 13

Outline

1 Flujo maximo: una alternativa

2 Problemas reducibles a flujos maximos

,J.B. Hayet Programacion, Marzo 2008 2 / 46

Page 3: Clase 13

Flujo maximo: una alternativa

Outline

1 Flujo maximo: una alternativa

2 Problemas reducibles a flujos maximos

,J.B. Hayet Programacion, Marzo 2008 3 / 46

Page 4: Clase 13

Flujo maximo: una alternativa

Caminos aumentadores

La idea basica del metodo de Ford-Fulkerson es ir mejorando unflujo positivo (admisible) por iteraciones, buscando cada vez unnuevo camino aumentador que incluya arcos no saturados que sepueda aumentar o arcos de flujo no nulo que se pueda bajar

Ahora, que tal si trabajarıamos sobre flujos que no seannecesariamente admisibles, pero que se puedan hacer admisiblesempujando flujo en unos vertices?

Algoritmos basados en preflujos: idea de Goldberg y Tarjan enlos 80s

,J.B. Hayet Programacion, Marzo 2008 4 / 46

Page 5: Clase 13

Flujo maximo: una alternativa

Preflujos

Un preflujo es un conjunto de arcos con flujo positivo tales que:

el flujo en cada arco no excede la capacidad del arcoel flujo entrante en cada vertice interno es superior al flujosaliente

O sea un flujo que no verifica la restriccion de conservacion porexceso.

Un vertice es activo cuando es un vertice interno cuyo flujoentrante es superior a su flujo saliente (flujo neto positivo)

Ese flujo neto positivo en vertices internos se llama en estecontexto exceso

,J.B. Hayet Programacion, Marzo 2008 5 / 46

Page 6: Clase 13

Flujo maximo: una alternativa

Preflujos

p : V × V → R

satisfaciendo:

1 condicion de capacidad

0 ≤ p(v , w) ≤ c(v , w)

2 para todos los vertices diferentes de s y t:∑w∈V

p(v , w) <∑w∈V

p(w , v)

Se busca una solucion a partir de un problema “mas facil”

,J.B. Hayet Programacion, Marzo 2008 6 / 46

Page 7: Clase 13

Flujo maximo: una alternativa

Preflujos

2

5

1

0

6

/10

/15

/10

/10

9 8

3

Exceso en 0: 4Exceso en 5: 3Activos: 0 y 5

,J.B. Hayet Programacion, Marzo 2008 7 / 46

Page 8: Clase 13

Flujo maximo: una alternativa

Preflujos

Remarcar que:

flujo positivo admisible ⇔ no hay vertices activos

Vamos a intentar partir de una situacion con vertices activos y irapagandoles poco a poco

,J.B. Hayet Programacion, Marzo 2008 8 / 46

Page 9: Clase 13

Flujo maximo: una alternativa

Preflujos

Idea de los algoritmos basados en preflujos, iterativamente:

elegir un vertice con exceso (activo)

se supone que s y t no son de los activos

empujar este exceso, si se puede, a lo largo de un arco nosaturado

si no se puede, hacerlo regresar por arcos entrantes (si tienenflujo positivo)

cada vez, podran aparecer nuevos vertices; esos vertices estanmanejados por cola generalizada

al final te sale un flujo maximo

Poco a poco queremos llegar a un flujo admisible

,J.B. Hayet Programacion, Marzo 2008 9 / 46

Page 10: Clase 13

Flujo maximo: una alternativa

Preflujos

-2

5

1

0

6

/10

/15

/10

/10

9

2

10

1

+2

Exceso en 0: 0

Exceso en 5: 7

Activos: 5

,J.B. Hayet Programacion, Marzo 2008 10 / 46

Page 11: Clase 13

Flujo maximo: una alternativa

Preflujos

9

5

1

0

6

/10

/15

/10

/10

9 10

1

+7

Exceso en 0: 0Exceso en 5: 0Activos: ya no hay

Casi el flujo maximo. . . Que hubieramos hecho para tener el maximo ?,

J.B. Hayet Programacion, Marzo 2008 11 / 46

Page 12: Clase 13

Flujo maximo: una alternativa

Preflujos

Observaciones a partir del ejemplo:

Se va a necesitar empezar por rellenar los arcos saliendo de lafuente a plena capacidad

Empujar necesita definir una polıtica para determinar cuales sonlos arcos en los que empuja

Se usa otra vez la capacidad residual para saber si un arco esaceptable como arco donde empujar flujo: flujo que aumentarpara saturar un arco o flujo que disminuir para aprovechar deuna desviacion favorable

,J.B. Hayet Programacion, Marzo 2008 12 / 46

Page 13: Clase 13

Flujo maximo: una alternativa

Preflujos

Observaciones a partir del ejemplo:

Se usa otro criterio para elegir cual(es) arco(s) considerar: unafuncion de altura (que va a encodificar la polıtica elegida)

Este criterio tiene que hacer en particular que la opcion deregresar flujo por atras venga en “ultimo recurso”

,J.B. Hayet Programacion, Marzo 2008 13 / 46

Page 14: Clase 13

Flujo maximo: una alternativa

Funcion de altura

Una funcion de altura h, para un flujo dado en una red de flujo,es un conjunto de valores h(i) para 1 ≤ i ≤ |V | asociadas acada vertice, tal que:

{h(t) = 0h(u) ≤ h(v) + 1 si u-v es un arco del grafo residual

Un arco es elegible ssi h(u) = h(v) + 1.

Ejemplo: h(i) = 0 para 1 ≤ i ≤ |V | y h(s) = 1, los arcoselegibles son los arcos conectados a la fuente

,J.B. Hayet Programacion, Marzo 2008 14 / 46

Page 15: Clase 13

Flujo maximo: una alternativa

Funcion de altura

Una funcion mas interesante:

h(i) = di donde di es la distancia mınima en arcos hasta t

Verificamos que:

h(t) = 0

si u y v estan en el grafo residual, tenemos o h(u) = h(v), oh(u) = h(v)− 1, o h(u) = h(v) + 1, o sea

h(u) ≤ h(v) + 1

Es otra funcion “extrema”: la altura de cada vertice es la maximaque se puede definir

,J.B. Hayet Programacion, Marzo 2008 15 / 46

Page 16: Clase 13

Flujo maximo: una alternativa

Funcion de altura

Propiedad: para todo flujo y una funcion de altura asociada, la alturade cualquier vertice es inferior al tamano del camino mas corto deeste vertice al pozo en la red residual

La prueba es inmediata: para todo vertice u, se puede seguir elcamino mas corto de u a t

h(u) = h(u1) ≤ h(u2) + 1≤ h(u3) + 2. . .≤ h(ud) + d − 1

Como h(ud) = h(t) = 0, sacamos la propiedad

,J.B. Hayet Programacion, Marzo 2008 16 / 46

Page 17: Clase 13

Flujo maximo: una alternativa

Funcion de altura

Funcion “extrema”:

t es de altura 0

luego, los vertices v conectados por arcos v − t en el graforesidual podrıan ser de altura 0 o 1 y estan con la alturamaxima, 1

luego, los vertices v conectados a vertices conectados a tpodrıan ser de altura 1 o 2 y estan con la altura maxima, 2

O sea, los vertices estan ubicados por la funcion de altura lo maslejos posible

,J.B. Hayet Programacion, Marzo 2008 17 / 46

Page 18: Clase 13

Flujo maximo: una alternativa

Funcion de altura

Propiedad: si la altura de un vertice es superior a |V |, entonces noexiste camino desde este vertice hasta el pozo en la red residual

Si hay un camino (simple) del vertice hasta t, la propiedad previa diceque este camino es de tamano superior a |V |, lo que no serıa posible

Por que funciones de altura? Si la altura de un vertice activo esta

inferior a la altura de la fuente, es posible que podamos empujarflujo de este vertice al pozo

superior a la altura de la fuente, el exceso de este vertice tieneque estar empujado de regreso

,J.B. Hayet Programacion, Marzo 2008 18 / 46

Page 19: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

De aquı el algoritmo preflow-push:

Inicializar con flujo cero, cualquier funcion de altura

Rellenar a plena capacidad los arcos conectados a la fuente

Luego iterar, mientras hay vertices activos:

elegir un vertice activo

empujar flujo adentro de un arco elegible (por la funcion dealtura)

si no hay de esos arcos, aumentar la altura de 1

,J.B. Hayet Programacion, Marzo 2008 19 / 46

Page 20: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Como en el caso de Ford-Fulkerson, es un algoritmo generico, quetiene luego variantes que van a diferir de:

la funcion de altura inicial

la manera de elegir cual vertice activo

la manera de elegir el arco elegible

las cantidades de flujo que empujar en los arcos elegibles

O sea puede haber muchas variaciones alrededor de este cuadro!

Idea: empujar lo maximo de flujo a partir de la fuente hacia el pozo;cuando no se puede, regresarlo a la fuente

,J.B. Hayet Programacion, Marzo 2008 20 / 46

Page 21: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Propiedad: el algoritmo generico conserva la funcion de altura comotal (o sea sigue siendo funcion de altura)

La funcion se modifica solo si no hay arco u elegible. O sea, en elvertice elegido, para todos los arcos u − v presentes en la redresidual, tenemos h(u) < h(v) + 1. Ya que aumentamos h(u) de solo1, tenemos al final para todos esos arcos u − v , h(u) ≤ h(v) + 1.Para los arcos entrantes, es obvio que se mantiene. Ninguna otradesigualdad esta involucrada.

,J.B. Hayet Programacion, Marzo 2008 21 / 46

Page 22: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Propiedad: durante la ejecucion de ese algoritmo, existe en la redresidual un camino dirigido desde cada vertice activo hacia la fuente,y no existe camino dirigido de la fuente hacia el pozo

Por recurrencia: inicialmente, los unicos vertices activos son losvertices u destinaciones de los arcos salientes de s. Para cada uno deesos, hay un arco en la red residual hacia s (por tener flujo s − upositivo). Ademas no hay arcos s − v . Luego, la fuente se puedealcanzar desde los vertices activos porque esos vertices activos soncreados por anadir flujo positivo en arcos elegibles: se crea un arco enla red residual de este nuevo vertice hacia el inicial. Para estaralcanzado desde s, se necesita empujar flujo positivo por un arco deregreso a s, u − s. Eso implica h(u) > h(s). De la misma manera, sepuede mostrar que todo vertice alcanzable desde s tiene que verificarh(u) > h(s), pero h(t) = 0. . .

,J.B. Hayet Programacion, Marzo 2008 22 / 46

Page 23: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Propiedad: durante la ejecucion de ese algoritmo, las alturas sonsiempre abajo de 2|V |

Considerar los vertices activos u. Por la propiedad precedente, hay uncamino dirigido de este vertice hacia la fuente. Entonces:

h(u) ≤ h(s) + dus ≤ h(s) + |V | − 2

La altura h(s) queda constante y h(s) ≤ |V | entonces

h(u) ≤ 2|V | − 2

Los no-activos son en el peor caso 1 unidad mas que cuando estabanactivos

,J.B. Hayet Programacion, Marzo 2008 23 / 46

Page 24: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Propiedad: el algoritmo de preflow-push sı encuentra un flujo maximo.Por que se acaba? Remarcar que cuando un vertice u esta activo, seempuja su exceso hacia arcos elegibles, haciendole inactivo. Si sereactiva, tiene que reenviar de regreso una parte del flujo empujado.Eso implica que la altura de ese vertice haya aumentado, y esollevarıa a una contradiccion si la secuencia de vertices activosseleccionados no es cotada. Entonces, se acaba en un numero finitode iteraciones; cuando se acaba, tenemos un flujo positivo (ya que nohay vertices activos); ademas, como no hay camino dirigido de lafuente al pozo en la red residual, tenemos el flujo maximo.

,J.B. Hayet Programacion, Marzo 2008 24 / 46

Page 25: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ford-Fulkerson: buscar entre los flujos positivos posibles y llegara uno sin camino aumentador

Goldberg-Tarjan: buscar entre los flujos sin caminosaumentadores posibles y llegar a un flujo positivo

,J.B. Hayet Programacion, Marzo 2008 25 / 46

Page 26: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo de funcion de alturas inicial: usar un BFS sobre el graforeverso del inicial:

/6

5

1

0

6

4

2

/10

/15

/3

/11

/9

0

1

1

3

/8

/4

2

2

,J.B. Hayet Programacion, Marzo 2008 26 / 46

Page 27: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Una version mas especifica del algoritmo:

elegir un vertice activo

aumentar el flujo dentro de un arco saliente, hasta rellenarlo sise puede, hasta que el vertice se haga inactivo o que ya no hayaarco elegible

cuando no hay arco elegible, incrementar la altura

La especificidad es que terminamos aquı de procesar un vertice,empujando la cantidad mas grande de flujo que se pueda.

,J.B. Hayet Programacion, Marzo 2008 27 / 46

Page 28: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

La implementacion de esta version requiere:

una funcion de inicializacion de las alturas, que genere alturasconsistentes (usar el BFS por ejemplo)

una manera de sacar vertices activos en cada iteracion: porejemplo usando una cola generalizada (puede ser pila, cola. . . )

resuelve la eleccion de los arcos procesandoles todos con respetoa un vertice dado

,J.B. Hayet Programacion, Marzo 2008 28 / 46

Page 29: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 30: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 31: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-5

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 32: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 33: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

7

5-4

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 34: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

7

5-4

8

2

4-5

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 35: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

7

5-4

8

2

4-5

4

5-4

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 36: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

7

5-4

8

2

4-5

4

5-44-5

3

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 37: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

7

5-4

8

2

4-5

4

5-44-5

3

5

10

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 38: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

7

5-4

8

2

4-5

4

5-44-5

3

5

10

0

4

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 39: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

7

5-4

8

2

4-5

4

5-44-5

3

5

10

0

4

3

2-0

3

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 40: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

7

5-4

8

2

4-5

4

5-44-5

3

5

10

0

4

3

2-0

3

09

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 41: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

7

5-4

8

2

4-5

4

5-44-5

3

5

10

0

4

3

2-0

3

09 0

4

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 42: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Ejemplo:

1

0

6

4

2

1

3

/4

/8

/10

/15

/3

/11

/9

0

1

5

/6

2

2

0

0

10

FIFO:

0

0

0

0

11

0-4

9

1

4-2-52-5-4

4

3

6

7

5-4

8

2

4-5

4

5-44-5

3

5

10

0

4

3

2-0

3

09 0

4

7

,J.B. Hayet Programacion, Marzo 2008 29 / 46

Page 43: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Con cola generalizada (que evita duplicados de vertices)

t emp la t e <c l a s s Graph , c l a s s Edge> c l a s s MAXFLOW{ const Graph &G;

i n t s , t ;v e c to r <int> h , wt ; // He ights , e x c e s s e svoid i n i t h e i g h t s ( ) ;

p u b l i c :MAXFLOW( const Graph &G, i n t s , i n t t ) : G(G) ,

s ( s ) , t ( t ) , h (G .V( ) ) , wt (G .V( ) , 0){i n i t h e i g h t s ( ) ;GQ gQ(G.V ( ) ) ;gQ . put ( s ) ; wt [ t ] = −(wt [ s ] = M∗G.V ( ) ) ;whi le ( ! gQ . empty ( ) ) {

i n t v = gQ . ge t ( ) ;typename Graph : : a d j I t e r a t o r A(G, v ) ;

,J.B. Hayet Programacion, Marzo 2008 30 / 46

Page 44: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

f o r ( Edge∗ e = A. beg ( ) ; !A . end ( ) ; e = A. nxt ( ) ) {i n t w = e−>o th e r ( v ) ;i n t cap = e−>capRto (w) ;i n t P = cap < wt [ v ] ? cap : wt [ v ] ;i f (P > 0 && v == s | | h [ v ] == h [w]+1){ e−>addf lowRto (w, P ) ;

wt [ v ] −= P; wt [w] += P;i f ( (w != s ) && (w != t ) ) gQ . put (w) ; }

}i f ( v != s && v != t && wt [ v ] > 0){ h [ v ]++; gQ . put ( v ) ; }

}}

} ;

,J.B. Hayet Programacion, Marzo 2008 31 / 46

Page 45: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Complejidad:

En el peor caso, O(|V |2|A|) para la version mas generica

En el caso de cola FIFO, ese resultado es mas facilmenteestablecido

Suponemos que requerimos checar si un arco esta o no en elgrafo residual, con una representacion explıcita del grafo residualpodrıamos ir hasta O(|V |3)

,J.B. Hayet Programacion, Marzo 2008 32 / 46

Page 46: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Complejidad, caso FIFO:

remarcar la subdivision en fase del procesamiento de la FIFO

considerar φ = 0 si no hay vertices activos, o igual a la alturamaxima sino. Sea tambien h0(s) la altura de la fuente:φ = h0(s) inicialmente, se cancela al final.

Fases en que un vertice aumenta de altura: ≤ 2|V |2 − h0(s)

En las otras fases, φ baja de al menos uno (empujamos flujohacia vertices de altura inferior)

Entonces en el peor caso, tendremos 2|V |2 − h0(s) incrementos,a partir de h0(s), y 2|V |2 decrementos, o sea 4|V |2 fases

,J.B. Hayet Programacion, Marzo 2008 33 / 46

Page 47: Clase 13

Flujo maximo: una alternativa

Algoritmo de preflow-push

Unos mejoramientos:

como evitar de reiterar varias veces como en el ejemplo pasajesde incrementacion?

otros esquemas que FIFO, en particular estrategia tomando elvertice activo mas alto (necesita cola de prioridad): probado enpeor caso O(|V |2

√|A|)

,J.B. Hayet Programacion, Marzo 2008 34 / 46

Page 48: Clase 13

Problemas reducibles a flujos maximos

Outline

1 Flujo maximo: una alternativa

2 Problemas reducibles a flujos maximos

,J.B. Hayet Programacion, Marzo 2008 35 / 46

Page 49: Clase 13

Problemas reducibles a flujos maximos

Flujo maximo, un problema de referencia

El problema de busqueda de flujo maximo esta planteado comoproblema estandard, y se puede mostrar que varios otrosproblemas son equivalentes o se pueden reducir a este

Ahora, el mismo problema se reduce el mismo a otros problemas:

programacion linear, y su resolucion esta mas facilproblemas de flujo de costo mınimo (mincost-flow)

,J.B. Hayet Programacion, Marzo 2008 36 / 46

Page 50: Clase 13

Problemas reducibles a flujos maximos

Redes generalizadas

Una red generalizada contiene multiples fuentes y multiples pozos. Laequivalencia es trivial:

/0.2

5

6

3

0

/0.6

/0.3

/0.7/0.4

/0.8

/0.3

/0.2

/0.2/0.5 /0.3

/0.3

/0.2

9

1

2

4

,J.B. Hayet Programacion, Marzo 2008 37 / 46

Page 51: Clase 13

Problemas reducibles a flujos maximos

Redes generalizadas

Una red generalizada contiene multiples fuentes y multiples pozos. Laequivalencia es trivial:

/0.2

5

6

3

0

/0.6

/0.3

/0.7/0.4

/0.8

/0.3

/0.2

/0.2/0.5 /0.3

/0.3

/0.2

9

1

2

4

/0.5s

/0.8

/1.9

/0.5

t,

J.B. Hayet Programacion, Marzo 2008 37 / 46

Page 52: Clase 13

Problemas reducibles a flujos maximos

Vertices con capacidades

Otro problema clasico, es el de maximizacion de un flujo en una redde flujo donde los vertices tambien tienen capacidades. Laequivalencia es trivial:

1

5

26

3

/0.5

/0.2

/.8

/0.6

/.8

/.6

/.4

/.7

/0.3

/0.7

/0.4

,J.B. Hayet Programacion, Marzo 2008 38 / 46

Page 53: Clase 13

Problemas reducibles a flujos maximos

Vertices con capacidades

Otro problema clasico, es el de maximizacion de un flujo en una redde flujo donde los vertices tambien tienen capacidades. Laequivalencia es trivial:

1

5

26

3

/0.5

/0.2

/.8

/0.6

/.8

/.6

/.4

/.7

/0.3

/0.7

/0.4

6bis

5bis3bis

1bis

2bis

,J.B. Hayet Programacion, Marzo 2008 38 / 46

Page 54: Clase 13

Problemas reducibles a flujos maximos

Redes aciclicas

Un problema interesante es encontrar un flujo maximo en una redaciclica. La ausencia de ciclo hara el problema mas facil?

Es menos evidente, pero otra vez los problemas son equivalentes! Nosolo el caso aciclico se reduce al caso general, la reciproca es verdad!

/3

0

3

2

/8

/6/4

/3

1

,J.B. Hayet Programacion, Marzo 2008 39 / 46

Page 55: Clase 13

Problemas reducibles a flujos maximos

Redes aciclicas

2

4 7

8

/4

/6

/3

/3/8

9

0 3

/6

1

65

/24

/24 /24 /24

/0/4

6

/14

/14/0

/4

,J.B. Hayet Programacion, Marzo 2008 40 / 46

Page 56: Clase 13

Problemas reducibles a flujos maximos

Redes aciclicas

⇒Considerar un corte en la red inicial: (S , T ). En la redtransformada, hacer un corte con S , S∗ y s ′ de un lado, T , T ∗ yt de otro lado

Para todo u, o s − u o u∗ − t esta en el corte, u − u∗ no yu − v ∗ esta en el corte ssi u − v esta en el corte inicial

En total: C + X donde X es la suma de las capacidades detodos los arcos

En particular eso vale para un corte mınimo

,J.B. Hayet Programacion, Marzo 2008 41 / 46

Page 57: Clase 13

Problemas reducibles a flujos maximos

Redes aciclicas

⇐Sea un corte mınimo en la red transformada (S ′, T ′) con s ′ ∈ S ′

y t ′ ∈ T ′

u − u∗ no puede ser un arco del corte: si consideras otro corteformado por s ′ de un lado, los otros del otro tienes un corteinferior

Para todo corte C + X en la red transformada, le puedes asociarde manera unica un corte en la red original tomando los arcoscentrales

Los cortes mınimos corresponden en los dos casos!

,J.B. Hayet Programacion, Marzo 2008 42 / 46

Page 58: Clase 13

Problemas reducibles a flujos maximos

Redes no-dirigidas

Tenemos en este caso una reduccion relativamente simple, quepermite expresar un problema de busqueda de circulacion maxima enun grafo no dirigido en terminos de circulacion maxima dirigida.Problemas tal vez mas “naturales”

/4

/8

3

2

1

0

/3

/3/6

/6

,J.B. Hayet Programacion, Marzo 2008 43 / 46

Page 59: Clase 13

Problemas reducibles a flujos maximos

Redes no-dirigidas

Tenemos en este caso una reduccion relativamente simple, quepermite expresar un problema de busqueda de circulacion maxima enun grafo no dirigido en terminos de circulacion maxima dirigida.Problemas tal vez mas “naturales”

/4

/8

3

2

1

0

/3

/3/6

/6

,J.B. Hayet Programacion, Marzo 2008 43 / 46

Page 60: Clase 13

Problemas reducibles a flujos maximos

Flujos realizables

Problema en que se asigna una ponderacion a cada vertice: positiva(vertice “proveedor”) o negativa (vertice “consumidor”). Un flujo esrealizable ssi la diferencia entre su flujo saliente y su flujo entrante esigual a esta ponderacion. Se supone que la suma de lasponderaciones es nula (globalmente la demanda y la oferta seequilibran) Existe o no tal flujo en un grafo dirigido (y siempre conlas restricciones de capacidad)? Este problema se puede reducir alproblema de flujo maximo. Es un problema clasico de logıstica: pesospositivos son almacenes, pesos negativos los puntos de venta;queremos que todos los vertices sean satisfechos.

,J.B. Hayet Programacion, Marzo 2008 44 / 46

Page 61: Clase 13

Problemas reducibles a flujos maximos

Flujos realizables

/8

/4/3

/3

(-8)

(-1)

3

(7)

(2)

2

1

0

/6

,J.B. Hayet Programacion, Marzo 2008 45 / 46

Page 62: Clase 13

Problemas reducibles a flujos maximos

Flujos realizables

/8

/4/3

/3

(-8)

(-1)

3

(7)

(2)

2

1

0

/6

2

s

t

1

8

7

,J.B. Hayet Programacion, Marzo 2008 45 / 46

Page 63: Clase 13

Problemas reducibles a flujos maximos

Emparejamiento bipartito

Como ya vimos, el problema de emparejamiento bipartito se reduce alproblema de flujo maximo:

2

5

6

1

3

0

Que complejidad podemos esperar para resolver el problema?

O(|V ||A|)!

,J.B. Hayet Programacion, Marzo 2008 46 / 46

Page 64: Clase 13

Problemas reducibles a flujos maximos

Emparejamiento bipartito

Como ya vimos, el problema de emparejamiento bipartito se reduce alproblema de flujo maximo:

2

5

6

1

3

0

/1 /1

/1

/1/1

/1

/1

/1

/1

/1s t

/1

Que complejidad podemos esperar para resolver el problema?O(|V ||A|)!

,J.B. Hayet Programacion, Marzo 2008 46 / 46