analisis y diseño de algoritmos tema: grafos 3ra parte andrés arcia universidad de los andes...
TRANSCRIPT
![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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/1.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/2.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/3.jpg)
¿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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/8.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/10.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/12.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/13.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/14.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/17.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/20.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/21.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/22.jpg)
¿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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/23.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/24.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/25.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/26.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/27.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/28.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/29.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/30.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/31.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/32.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/33.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/34.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/35.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/36.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/37.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/38.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/39.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/40.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/41.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/42.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/43.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/44.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/45.jpg)
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](https://reader036.vdocuments.co/reader036/viewer/2022070416/5665b4281a28abb57c8f9e44/html5/thumbnails/46.jpg)
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).