Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes...

46
Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación

Transcript of Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes...

Page 1: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Analisis y Diseño de AlgoritmosTema: Grafos

3ra Parte

Andrés Arcia

Universidad de Los AndesFacultad de Ingeniería

Postgrado en Computación

Page 2: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Caminos Cortos en Todos los Pares de Arcos

• Dado un grafo dirigido G=(V,E) con una función de peso w:ER. Se desea encontrar todos los caminos más cortos (de menor peso) entre todos los pares (u,v) V.

Page 3: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

¿Cómo resolver el problema?

En una primera instancia utilizando algún algoritmo de caminos cortos desde un solo vértice, |V| veces, una vez para cada vértice.

Si todos los arcos son positivos Dijkstra. Luego:• Utilizando arreglos para las colas de prioridad

O(V3+VE) = O(V3)• Utilizando heaps binarios O(VElgV)• Utilizando heaps fibonacci O(V2lgV+VE)

Si hay arcos negativos Bellman-Ford, una vez por vértice. O(V2E) y para grafos densos O(V4)

Page 4: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Representación

Se dispone de una matriz de entrada W de tamaño nxn, que representa los pesos de un grafo dirigido G=(V,E) de n arcos. Luego, para W=(wij)

wij

0 si i=jpeso de (i,j) si i≠j y (i,j) E si i≠j y (i,j) E

Page 5: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Salida

• Una matriz D=(dij) con las distancias mínimas entre el par (i,j).

• Una matriz =(ij), donde ij=NULL si i=j ó no hay camino de i a j, de otra forma contiene al predecesor de j en el camino mínimo.

El grafo resultante se define como:G,i= (V,i, E,i) donde

V,i={ jV : ij ≠ NULL } U { i }

E,i={(ij,j) : j V,i y ij≠NULL

Page 6: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Impresión del Camino

PRINT-ALL-PAIRS-SP(,i,j) 1 if i=j2 then print i

3 else if (ij=NULL)4 then print “no path from” i “to” j5 else

6 PRINT-ALL-PAIRS-SP(,i,ij)7 print j

Page 7: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Multiplicación de Matrices y Caminos Cortos

• Se presenta un algoritmo basado en programación dinámica para resolver todos los caminos más cortos en todos los pares de nodos del grafo G=(V,E).

• El método es similar a la multiplicación de matrices.

• Recapitulando la programación dinámica:1. Caracterizar la estructura de la solución óptima.2. Definir recursivamente el valor de la solución

óptima.3. Computar el valor de la solución óptima de abajo

hacia arriba.

Page 8: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Estructura del Camino más Corto

Sabemos que todos los subcaminos de los caminos más cortos son también caminos más cortos. Supongamos W=(wij), asumamos que no hay ciclos negativos y que el camino p tiene m arcos que van de i a j y, p es un camino corto.

si i=j p0

si i≠j pi ~p’> kj tiene m-1 nodos

(i,j) = (i,k) + w(k,j)

Page 9: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Solución Recursiva

• Sea dij(m) el peso mínimo para algún

camino de i a j con m arcos:si m=0 no hay arcos

dij(0) = 0 si i=j

si i≠j

Si m1 dij(m) = min (1kn, dik

(m-1) + wkj)

• ¿Cuál es el límite de m?(i,j) = dij

(n-1)=dij(n)=dij

(n+1)=…

Page 10: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Cálculo de la Solución de Abajo hacia Arriba

• Entrada: W=(wij), luego se calcula una serie de matrices

D(1), D(2), …, D(n-1) | D(m)=(dij(m)).

D(n-1) contiene los caminos más cortos.

Page 11: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Cálculo de la Solución de Abajo hacia Arriba

• En esencia el siguiente algoritmo extiende la solución del camino más corto, un arco a la vez.

EXTEND-SHORTEST-PATHS (D,W)1 n rows[D]2 let D’=(d’ij) be a nxn matrix.3 for i 1 to n4 do for j 1 to n5 do d’ij 6 for k 1 to n7 do d’ij = min(d’ij, dik + wkj)8 return D’Este algoritmo es O(n3). Observe los tres for anidados.

Page 12: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Relación con la Multiplicación de Matrices.

• Suponga C=A.B; donde A,B y C son matrices nxn.La multiplicación de matrices se define:

cij = (k=1, n, aik.bkj) dij(m)=min(1kn, dik

(m-1) + wkj)

d(m-1)awbd(m)cmin++ .

Page 13: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

AlgoritmoSea AB un producto matricial retornado por EXTEND-SHORTEST-PATHS(A,B)

D(1) = D(0).W = WD(2) = D(1).W = W2

D(3) = D(2).W = W3

…D(n-1) = D(n-2).W = Wn-1

SLOW-ALL-PAIRS-SHORTEST-PATHS(W)1 n rows[w]2 D(1) W3 for m 2 to n-14 do D(m) EXTEND-SHORTEST-PATHS(D(m-1),w)5 return D(n-1) O(n4)

Page 14: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Mejora del Tiempo de Ejecución

¿Cuál es el objetivo? R: D(n-1)

Recordemos que si no hay ciclos negativos, D(m)=D(n-1) m n-1Así, podemos computar D(n-1) en solo lg(n-1), haciendoD(1) = WD(2) = W2 = W.WD(4) = W4 = W2. W2 D(8) = W8 = W4. W4 …D(2^ln(n-1)) = W(2^ln(n-1)) = W(2^(ln(n-1)-1)) . W(2^(ln(n-1)-1))

La técnica se denomina “repetición cuadrática”.

Page 15: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Algoritmo

FASTER-ALL-PAIRS-SHORTEST-PATHS(W)1 nrows[w]2 D(1)W3 m 14 while n-1 > m5 do D(2m)EXTEND-SHORTEST-PATH(D(m), D(m))6 m 2m7 return D(m)

• n-12m2n-2• O(n3lgn)

Page 16: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Algoritmo Floyd-Warshall

• Estructura del camino más corto– Se consideran los vértices intermedios (v.i.) de un camino

simple p=<v1, v2,…, vl>, es decir, cualquier vertice que no sea v1 y vl.

– El algoritmo se basa en la siguiente observación: Sean los nodos de G, V={1,2,…n} y considere el subconjunto {1,2,…,k} para algún k. Para cualquier par de vertices i,j V considere todos los caminos de i a j cuyos vertices son todos obtenidos de {1,2,…,k} y sea p el camino de minimo peso entre ellos.

– El algoritmo explota la relación entre el camino p y los caminos cortos de i a j con vértices intermedios en el conjunto {1,2, …, k-1}.

– Si tenemos que p se divide en i~p1~>k~p2~>j. p1 y p2 son caminos cortos con vértices intermedios en {1,2,...,k}.

Page 17: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Solución Recursiva

Sea dij(k) el peso del camino más corto de i

a j con v.i. en {1,2,…,k}. Cuando k=0 el camino de i a j no tiene un v.i. numerado más alto que 0 y de hecho no tiene v.i.

dij(k) =

Wij si k=0min(dij

(k-1) , dik(k-1) + dkj

(k-1) ) si k1

Page 18: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Computo de Abajo hacia Arriba

FLOYD-WARSHALL(W)1 nrows[n]2 D(0) w3 for k 1 to n4 do for i 1 to n5 do for j 1 to n

6 dij(k) min(dij

(k-1), dik(k-1)+ dkj

(k-1))7 return D(n)

(n3)

Page 19: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

EjemploNIL 1 1 NIL 1

NIL NIL NIL 2 2

NIL 3 NIL NIL NIL

4 NIL 4 NIL NIL

NIL NIL NIL 5 NIL

0 3 8 -4

0 1 7

4 0

2 5 -5 0 -2

6 0

NIL 1 1 NIL 1

NIL NIL NIL 2 2

NIL 3 NIL NIL NIL

4 1 4 NIL 1

NIL NIL NIL 5 NIL

0 3 8 -4

0 1 7

4 0

2 -5 0

6 0

0 3 8 4 -4

0 1 7

4 0 5 11

2 5 -5 0 -2

6 0

NIL 1 1 2 1

NIL NIL NIL 2 2

NIL 3 NIL 2 2

4 1 4 NIL 1

NIL NIL NIL 5 NIL

D(0) =

D(1) =

D(2) =

(0) =

(1) =

(2) =

Valores iniciales

Page 20: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Construcción del camino más corto

Se selecciona el mismo predecesor que en camino más corto, pero queda atado por apuntadores a los padres en una cadena.

ij(k) ij

(k-1) si dij(k-1) dik

(k-1)+ dkj(k-1)

kj(k-1) si dij

(k-1) > dik(k-1)+ dkj

(k-1)

Page 21: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Clausura transitiva de un grafo dirigido

Dado un grafo dirigido G=(V,E) con un conjunto de nodos V = {1,2,…,n} se quiere averiguar si hay un camino de i a j i,j V.

La clausura transitiva se define:

G*=(V,E*) donde

E*={(i,j): hay camino de i a j en G}.

Page 22: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

¿Cómo se calcula?

• Asignar peso 1 a todos los arcos en E y ejecutar Floyd-Warshall O(n3).– Si hay camino dij<n– Si no hay camino dij=

• Otra manera es utilizando los operadores lógicos y en vez de los operadores min y + en FLOYD-WARSHALL.– tij

(0) = 0 si i≠j y (i,j) E. = 1 si i=j o (i,j) E.

– Para k1: tij(k) = tij

(k-1) (tik(k-1) tkj

(k-1)).(n3).

Page 23: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Algoritmo de Jhonson para grafos esparcidos

• Encuentra los caminos más cortos en O(V2lgV + VE), que es asintóticamente mejor que los otros dos métodos.

• Usa Dijkstra y Bellman-Ford.• Usa la técnica de reasignación de pesos.

– Si todos los pesos son positivos, entonces se utiliza Dijkstra en c/u de los nodos y con heap fibonacci se tiene O(V2lgV + VE), de lo contrario se recalculan los pesos para que queden todos positivos y se aplica la misma técnica.

Page 24: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Reasignación de Pesos

Sea el nuevo peso asignado. debe cumplir con:

1. (u,v) E, (u,v) con w:ER es también (u,v) con :ER.

2. (u,v) E, (u,v)0.

se determina en O(VE).

Page 25: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Reasignación de Pesos

Lema:

La reasignación de pesos no cambia los caminos más cortos.

Sea G=(V,F) con w:ER y h:VR cualquier función que mapea VR. Luego (u,v)E:

(u,v) = w(u,v) + h(u) – h(v).

Sea p = <v0, v1, … vk> un camino de v0 a vk.

w(p)=(v0,vk) (p)=(v0,vk)

G tiene ciclo negativo G´ tiene ciclo negativo

Page 26: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Reasignación de PesosPrueba:(p) = w(p) + h(v0) – h(vk)Se tiene(p) = (i=1, k, (vi-1, vi)) = (i=1, k, w(vi-1, vi) + h(vi-1) - h(vi)) = (i=1, k, w(vi-1, vi)) + h(v0) – h(vk)

= w(p) + h(v0) – h(vk)Suponga que hay un camino más corto p’ desde v0 a vk usando . Entonces

(p’)< (p).w(p’) + h(v0) – h(vk) = (p’)

< w(p) = w(p)+h(v0)+h(vk)

Que implica que w(p’) < w(p) que contradice que p es el camino más corto.Suponga que hay un ciclo negativo c = <v0, v1, …, vk>

Luego, (c)=w(c) + h(v0) – h(vk) =w(c) si hay ciclo negativo en (c) tambien lo hay en w(c).

Page 27: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

AlgoritmoJHONSON1 compute G’, V[G’]=V[G] U {s}, E[G’]=E[G]U{(s,v) : v V[G]}2 if BELLMAN-FORD(G’,w,s) = false3 then print “there is a negative weight cycle”4 else for each vertex v V[G]5 do set h(v) to the value computed by the BELLMAN-

FORD algorithm.6 for each edge (u,v) E[G’]7 do (u,v)w(u,v) + h(u) – h(v)8 for each vertex u V[G]9 do run Dijkstra(G, , u) to compute ’(u,v) u V[G]10 for each vertex v V[G]11 do duv ’(u,v) + h(v) – h(u)12 return D

Page 28: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Ejemplo

-1

0 -5

-4 0

4

-5

6

8

2

173

-4

0

0

0

0

0

0

-1

0 -5

-4 0

0

0

2

13

2

0104

0

0

0

4

0

0

5

Page 29: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Ejemplo

2/1

0/0 2/-3

0/-4 2/2

0

0

2

13

2

0104

0

0/0

2/3 0/-4

2/-1 0/1

0

0

2

13

2

0104

0

Page 30: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Flujo Máximo

• Imaginemos algún flujo que va desde un sitio s, donde es producido, hasta un sitio t donde es consumido a la misma tasa de producción.

• Intuitivamente, el flujo en cualquier punto de la red es la tasa a la que se mueve el material.

• Usos: modelado de flujo en tuberías, líneas de ensamblado, corrientes eléctricas, información en redes de comunicación, etc.

Page 31: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Flujo Máximo

• Cada arco dirigido puede ser visto como un conducto por donde pasa el material, según las siguientes restricciones:– Cada conducto tiene una capacidad máxima finita.

– Se cumple la conservación de flujo. fi = fo (por nodo).

Problema del Flujo Máximo:

¿Cuál es la mayor tasa a la que se puede llevar material sin violar ninguna restricción?

Page 32: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Redes de Flujo

• Una red de flujo G=(V,E) es un grafo dirigido tal que cada arco (u,v)E posee una capacidad c(u,v)0. Si (u,v)E, c(u,v)=0.– Se distinguen 2 vertices, el fuente “s” y el

destino “t”. Cada vertice vV esta en algun s~>v~>t.

– El grafo es conexo |E||V|-1

Page 33: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Flujo

• El flujo está dado por una función con imagen en los reales. f:VxVR que satisface:– Restricción de capacidad: u,v V, f(u,v)c(u,v).– Simetría distorsionada: u,v V, f(u,v)=-f(v,u).– Conservación de flujo: u,v V-{s,t} se requiere que

vV f(u,v) = 0

Sea f(u,v) el flujo desde u hasta v, el valor de ese flujo se define como |f|= f(s,v) vV

Page 34: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Relación entre 2 nodos

v1

v2

5/10

4

v1

v2

10 4

v1

v2

8/10

4

v1

v28/

10

3/4

v1

v2

10

2/4

8 de v1 a v2 3 de v2 a v1 cancelación 7 más de v2 a v1

Page 35: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Redes de múltiples entradas y múltiples salidas

S’

s1

s2

s3

s4

s5

t2

t1

T’

Page 36: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Metodo Ford-Fulkerson

• El método iterativo depende de tres ideas importantes:– Red residual– Aumento de camino– Cortes

Para ello usaremos el teorema max-flow min-cut que caracteriza el flujo máximo en terminos de cortes de la red de flujo.

Page 37: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Iteración

• En cada iteración se va consiguiendo un valor de flujo que aumenta el camino, es decir, podemos aumentar el flujo en un camino de s a t. Este proceso se repite hasta que no haya más posibilidad de aumentar.

FORD-FULKERSON-METHOD(G,s,t)1 initialize flow f to 02 while there exists an augmenting path p. 3 do augment flow f along p4 return f.

Page 38: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Red Residual

La red residual consiste en arcos que admiten más flujo.Dada una red de flujo G=(V,E) con fuente s y destino t. Sea f el flujo en G, y considere un par de vertices u,v V. La cantidad de flujo adicional que se puede verter sobre u,v es la capacidad residual.cf(u,v) = c(u,v) – f(u,v)Ejemplo:c(u,v)=16, f(u,v)=-4 cf(u,v)=20c(u,v)=16, f(u,v)=10 cf(u,v)=6

La red residual se define como:Ef – {(u,v) VxV: cf(u,v) > 0}

Page 39: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Aumento de Caminos

Dada una red de flujo G=(V,E), un camino aumentado p es un camino simple de s a t en la red residual Gf. Este camino solo admite flujo positivo.

La cantidad máxima de flujo que puede llevarse por los arcos en un aumento de p se denomina capacidad residual de p, y está dado por:

cf(p) = min {cf(u,v): (u,v) p}

Page 40: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Corte de la red de flujo

• El método aumenta repetidamente el flujo a través de los caminos de aumento hasta alcanzar el máximo.

• Un corte (S,T) de la red de flujo G=(V,E) esuna partición de V en S y T=V-S tal que sS y tT. Si f es el flujo, entonces el flujo de red a través del corte (S,T) se define f(S,T). La capacidad del corte (S,T) es C(S,T).

Page 41: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Teorema max-flow min-cut

Teorema: El máximo valor de entre todos los flujos en una red es igual a la capacidad mínima de entre todos los cortes.

Prueba: Es suficiente con mostrar un flujo y un corte tal que sean iguales en valor. Luego, el flujo ha de ser máximo pues no puede rebasar la capacidad del corte y el corte ha de ser mínimo porque ninguna otra capacidad puede ser menor que el valor actual del flujo.

Page 42: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Algoritmo de Ford-Fulkerson

FORD-FULKERSON(G,s,t)1 for each edge (u,v) E[G] 2 do f[u,v]03 f[v,u]04 while there exists a path p from s to t in the

residual network Gf

5 do cf(p)=min {cf(u,v) : (u,v)p}6 for each edge (u,v) in p7 do f[u,v] f[u,v] + cf(p)8 f[v,u] -f[u,v]

Page 43: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Ejemplo

0

1

3

2

5

4

2

2

3

1 1

3

1

3

0

1

3

2

5

4

2

2

1

1 1

3

1

3

Cmin = 2

2

Cmin = 1

0

1

3

2

5

4

2

2

1

1 1

2

1

2

2

1

1

Cmin = 1

s

t t t

s s

Page 44: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Ejemplo

0

1

3

2

5

4

2

2

1 1

1

1

1

1

2

2

2

1 2

Flujo Máximo

Dire

cció

n de

l Flu

jo

S

Tt

s

Page 45: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Análisis

• El algoritmo está acotado por O(|f*|) donde f* es el flujo máximo.

s

u

v

t

1.000.000

1.000.000

1.000.000

1.000.000

1s

u

v

t

999.999

999.999

1.000.000

1.000.000

111

s

u

v

t

999.999

999.999

999.999

999.999

111

Page 46: Analisis y Diseño de Algoritmos Tema: Grafos 3ra Parte Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación.

Mejora

• Si hallamos el camino mínimo de s a t en la red residual donde cada arco tiene peso 1, se puede mejorar Ford-Fulkerson. Este método es llamado Edmonds-Karp y esta acotado por O(VE).