Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado...

26
Max-Flow Jes´ us, Mager Algoritmos eficientes para el problema Max-Flow Mager, Jes´ us 1 Universidad Aut´onoma Metropolitana Unidad Azcapozalco 2015

Transcript of Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado...

Page 1: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

Algoritmos eficientes para el problemaMax-Flow

Mager, Jesus

1Universidad Autonoma MetropolitanaUnidad Azcapozalco

2015

Page 2: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerIntroduccionHay mas informacion aquı

El presente trabajo es un resumen del libro “CombinatorialOptimization. Algorithms and Complexity” escrito porChristos H. Papadimitriou y Kenneth Steiglitz.Si bien el algoritmo Simplex es muy util, pues resuelve problemasde programacion lineal generales, no es muy eficiente en sucomplejidad, que es explonencial. Para la resolucion del problemamax-flow se va a explorar el problema para mejorar esto.Los resultados para max-flow son tambien relevantes para otrosproblemas de optimizacion.

Page 3: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerFormulacion Nodo arco del problema Max-Flow

Se busca encontrar un flujo factible de un unico nodo origen (s) aun unico nodo pozo(t), este flujo es el maximo. Considerese unared N = (s, t,V ,E , b) con v = |V | nodos y m = |E | arcos; y seael flujo arc(x , y) sea denotado por f (x , y). Entonces el problemade maximo flujo (max-flow) es la siguiente formulacion deprogramacion lineal, que es pensada como un dual:

max v

Af + dv = 0

f ≤ b

f ≥ 0

donde d ∈ Rn esta definido por:

dt =

-1 si i = s;1 si i = t;0 en otro caso;

Page 4: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

A continuacion se examinara un algoritmo fundamental de grafos,llamado busqueda. Diferentes variantes del algoritmo de busquedaestan en el corazon de diversos algoritmos de graficos.

Page 5: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerBusqueda en Grafos

Un Grafo G = (V ,E ) es representado por la lista de adjacenciasA(v), v ∈ V . Como siempre se asume que |E | ≥ 1

2 |V |, como porejemplo que G no tiene nodos aislados.El algoritmo tiene la idea de que se comienza con un vertice v1 ylo marca. Posteriormente se repite este proceso con sus vertices deadjacencia, posterioremente con sus vertices de adjacencia y serepite el proceso.En el conjunto Q se mantiene un alista para todos lo vertices queson posibles para marcar. Esto es, que sean adjacentes y que no seencuentren marcados.

Page 6: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerAlgoritmo: Busqueda en grafos

Entrada: Un grafo G , representado por su lista de adjacencias, y un nodo v1.Salida: EL mismo grafo con sus nodos realcionados por caminos desde elnodo v1 marcado.Q ← {v1}while Q 6= ∅ do

sea v un elemento de Q.Remover v de QMarca vfor all v ′ ∈ A(v) do

if v ′ no esta marcado thenAgragar v ′ a Q

end ifend for

end while

Page 7: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

El algoritmo de busqueda marca todos los nodos de G conectadoscon v1 en tiempo O(|E |).

Page 8: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

Entre los usos que se le da a este algoritmo se encunetra saber siun grafo es conexo. Tambien es posible usarlo para encontrarcomponentes como subgrafos maximalment conexos.Sin embargo, aun falta definir como se toman los elementos de lalist Q. Si se tomara a Q como una cola tomando el elemento vcomo el que ha esperado mas, esto se convertirıa en ua busquedaprimero a lo ancho (BFS).

Page 9: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

La busqueda primero a profundidad (DFS) es otra version de labusqueda de grafos donde se utiliza una lista FIFO (Primero enentrar es el primero en salir). Este algoritmo hace un camino tanlargo como es posible y regresa a hacer una nueva busquedaunicamente cuando no se puede avanzar.

Page 10: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

El algoritmo de busqueda tambien puede ser aplicado a digrafos.Se puede respresentar un digrafo mediante D = (V ,A) por su listade adjacencia: A(v) como el conjunto de nodos v ′ ∈ V tales que(v , v ′) ∈ A. Desde ese punto de vista los grafos son unicamente uncaso especial de los digrafos: aquellos que son simetricos en qyeu ∈ A(v) si u ∈ A(u). Por lo tanto BFS y DFS tambien puedenser aplicados a digrafos.

Page 11: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

El algoritmo de busqueda es una plantilla para toda una clase dealgoritmos.Al variar las piesas del algoritmo en cajas se pueden crearnumersos algoritmos que hacen cosas distintas al mismo grafo. Porejemplo, podemos agregar un contador i ← i + 1; orden[v ]← i enves de usar marcas. Entonces obtendremos un algoritmo queregistra el orden en que fue visitado cada nodo.Como otro ejemplo el algoritmo Ford-Fulkerson de etiquetado paramax-flow, es en realidad una variante sofisticada de busqueda.

Page 12: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerEncontrar un caminos en digrafos

Supongamos que tenemos un digrafo D y dos conjuntos de nodos,S ,T ⊂ V que son origen y destino respectivamente. Queremosenconrar un camino en D llevando de cualquier nodo en S acualquier nodo en T . Tambien vamos a agegar etiquetas por cadav , que sera mas util a la hora de recuperar el camino, dondeetiqueta[v ′] es un arreglo con |V | entradas. El algogirtmo semuestra a continuacion.

Page 13: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerAlgoritmo: Busqueda de caminos en digrafos

Entrada: Un Digrafo D = (V ,A) y S ,T ⊂ V .Salida: Un camino en D de un nodo S a un nodo en T , si este caminoexiste.for all v ∈ S do

etiqueta[v] ← 0if v ∈ T then

return (v)end if

end forwhile Q 6= ∅ do

sea v un elemento de Q.Remover v de Qfor all v ′ ∈ A(v) do

if v ′ no esta etiquetado thenetiqueta[v ′] ← vif v ′ ∈ T then return camino(v ′)else

Agregar v ′ a Qend if

end ifend for

end whilereturn No hay camino S-T en D

Page 14: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerPero: ¿Que tiene de malo?

EL algoritmo Ford-Fulkerson para la resolucion del problemaMax-Flow usa la tecnica de etiquetado. La cuestion surge entoncesen el analisis de su complejidad. Tomando una redN = (s, t,V ,E , b) se nota que cada estado toma O(|A|), perodado la complejidad de todo el algoritmo es O(S |A|) donde S es elnumero de incrementos llevados a cabo. EL numero S tiene queser menor que |f | que es el valor del maximo flujo en la red(asumiendo enteros). ¿Puede S ser tan grande como |f |? Larespuesta es si, si se toman decisiones desafortunadas deincrementar caminos. Esto puede llevar a una complejidadexponencial.

Page 15: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

Suponga que queremos implementar una rutina a una redN = (s, t,V ,E , b) con un flujo inicial de cero. No necesitamoexaminar capacidades y flujos en este caso. Poteriormente setendra que todos los arcos seran avanzado y que no hay arcoshacia atras. Por lo tanto la tarea de etiquetar la red es muyparecida al algoritmo pasado. Una vez que se enceuntre un caminode incremento, aumentamos al flujo y continuamos.

Page 16: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

Etiquetar una red con repecto al flujo f es equivalete a labusqueda de camino en una red definida como:Dado una red N = (s, t,V ,A, b) y una flujo factible f de N,definimos la red N(f ) = (s, t,V ,A(f ), ac), donde A(f ) consiste delos sigueintes arcos:

1. Si (u, v) ∈ A y f (u, v) < b(u, v), entonces (u, v) ∈ A(f ) yac(u, v) = b(u, v)− f (u, v).

2. Si (u, v) ∈ A y f (u, v) > 0, entonces (u, v) ∈ A(f ) yac(u, v) = f (u, v).

Llamamos a ac(u, v) la capacidad de incremento de (u, v) ∈ A(f ).Si A contiene ambos arcos (v , u) y (u, v), entonces N(f ) puedetener multiples copias de estos arcos. Podemos evitar esto dediferentes maneras. Podemos remplazar tales arcos (u, v) en A pordos arcos (u,w) y (w , u) de la misma capacidad, donde w es unnodo nuevo. Debemos asumir por lo tanto que N(f ) no tienemultiples nodos.

Page 17: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

I Tomando un corte s − t, (W , W ) de N(f ), el valor de estecorte es la suma de las capacidades de incremento de todoslos arcos de N(f ) que van de W a W . Sin embargo, este acropuede ser tanto uno para adelante o uno para atras.

I En el caso de ser para adelante, ac(u, v) = b(u, v)− f (u− v);si es para tras ac(u, v) = f (u, v).

I Por lo tanto el valor de (W , W ) en N(f ) es el valor de(W , W ) en N menos el flujo para adelante por el corte, masel flujo reverso del corte.

Page 18: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

Poposicion: Si |f | es el valor del maximo flujo en N, entonces elvalor del maximo flujo en N(f ) es |f | − |f |.

Page 19: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

Para mejorar el problema del flujo hay que recordar que estamosinteresados unicamente en los pares s − t mas cortos en N(f ), porlo que podemos realizar simplificaciones.

I El camino mas corto s − t no puede pasar por un vertice enuna capa superior que t.

I Tambien podemos descartar cualquer otro vertice en la mismacapa que t excpeto t.

I Un camino mas corto parte de la capa 0, o sea donde seencuentra s, por lo que para avanzar debera ir a la siguientecapa. De esta manera avanza de capa j a j + 1. Por lo quetambien se podra descartar cualquier acro que vaya de unacapa superior a una inferior, o cualquier arco que junta nodosde una misma capa.

Page 20: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

Esto resultara en una subred llamada AN(f ) de A(f ), llamada redauxiliar respecto a f.Proposicion: Una red de capas L = (s, t,U,A, b) es una red conun conjunto de vertices U igual a la union disjunta de losconjuntos U0, . . . ,Ud tal que U0 = {s},Ud = {t} y

L ⊂d⋃

j=1

(Uj−1 × Uj).

Page 21: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

AN(f ) puede construirse mientras se lleva acabao una busquedaprimero a lo ancho sobre N(f ) dejano unicamente nodos que nosllevas a nuevos nodos, y unicamente nodos que sean inferiores quet. Por lo tanto, crear una red auxiliar puede ser creada enO(|A(f )|) = O(|A|).Esto nos ayudara a encontrar fasilmente el camino mas corto deincremento con respecto al flujo actual y mas aun, mejorar elalgoritmo de etiquetado: llevar acabo tantos incrementos en elmismo estado como se posible.

Page 22: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, Mager

Definicion: Sea N = (s, t,V ,A, b) una red de capas, un caminode incremento en N con respecto a cierto flujo g es llamado paraadelante si no utiliza arcos hacia atras. Un flujo g en N es llamadomaximal si no existe un camino de incrementeo ahcia adlenate conrespecto a g .Bajo esta definicion, todos los flujos maximos son maximales, unflujo maximal g , sin embargo, puede no ser el maximo.Encontrar el flujo maximo en la red auxiliar con respecto al flujoactual corresponde a encontrar tantos caminos mas cortos deincrementeo como se pueda en un estado.

Page 23: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerUn algoritmo Max-Flow O(|V |3)

Max-Flow, como cualquier otro algoritmo combinatorio opera enestados. En cada estado construimos una red N(f ), donde f es elflujo actual, y del cual encontraremos la red auxiliar AN(f ).Despues de eso encontraremos un flujo maximo g en AN(f ),agregamos g a f y repetimos. Agregar g a f y repetir. Agregarconlleva agregar g(u, v) a f (u, v) para todos los aros haciaadelante (u, v) en AN(f ), y sacar de g(u, v) de f (v , u) de todoslos arcos hacia atras (u, v) en AN(f ). Se termina cuando s y t sedeconectan de N(f ), un signo de que f es optimo.El algoritmo no aumenta a traves de caminos unitarios, sino estavez se intentara hacer un flujo push por nodos a traves de varioscaminos al mismo tiempo.

Page 24: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerMax-Flow Algorithm

Entrada: Una red N = (s, t,V ,A, b).Salida: El maximo flujo de f en N.f ← 1; listo ← nowhile listo = no do

g ← 0sea v un elemento de Q.Construir la red auxiliar AN(f ) = (s, t,U,B, ac)if t no se puede alcanzar desde s en AN(f ) then

listo = sielse

while Mientras exista un nodo v con throughput[v ] = 0 doif v = s o t then

go to intrelse

Eleminar v y todos los arcos incidentes de AN(f )end ifsea v el nodo en AN(f )throughput[v ] es el menorpush(()v, throughput[v ])pull(()v, throughput[v ])

end whileend if

end while

Page 25: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerMax-Flow Algorithm: Continuacion...

function push(y ,h)Q ← [y ] donde Q es una colafor all dou ∈ U − [y ]

req[u]← 0end forreq[y ] = h

. req[u] define cuantos elementos del flujo deben ser sacados por uend functionwhile Q 6= ∅ do

Sea v un elemento de QEleminar v de Qfor all v ′ tales que (v , v ′) ∈ B do

repeatm← mın(ac[v , v ′], req[v ])ac[v , v ′]← ac[v , v ′]−mif ac[v , v ′] = 0 then

eleminar (v , v ′) de Bend ifreq[v ]← req[v ]−mreq[v ′]← req[v ] + mAgregar v ′ a Qg [v , v ′]← g [v , v ′] + m

until req[v ] = 0end for

end while

Page 26: Algoritmos e cientes para el problema Max-FloBusqueda en Grafos Un Grafo G = (V;E) es representado por la lista de adjacencias A(v);v 2V. Como siempre se asume que jEj 1 2 jVj, como

Max-Flow

Jesus, MagerConsideraciones

Lema Un arco de AN(f ) se remueve de B en algun estadounicamente si no hay un camino de aumento hacia adelanteresoecto al flujo g en AN(f ) que paso por a.Lema Al final de cada estado, g es un flujo maximal en AN(f ).Lema La distancia s − t en AN(f + g) algun estado esestrictamente superior que s − t en AN(f ) en el estado previo.Teorema El algoritmo resuleve correctamente el porblema demax-flow para una red N = (s, t,V ,A, b), en O(|V |3) operacionesaritmeticas.