analisis y diseño de algoritmos tema: grafos andrés arcia universidad de los andes facultad de...
TRANSCRIPT
![Page 1: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/1.jpg)
Analisis y Diseño de AlgoritmosTema: Grafos
Andrés Arcia
Universidad de Los AndesFacultad de Ingeniería
Postgrado en Computación
![Page 2: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/2.jpg)
Arboles de Expansión Mínima
• Usos de los AEM:– Circuiteria electrónica: se desea unir n pines con n-1
cables.– Cableado de la compañía telefónica, cable, etc.– Identificación de grupos en un conjunto de puntos.– Crear grafos esparcidos que dan bastante
información del grafo original.
• Soluciones posibles: O(ElgV)– Algoritmo de Kruskal.– Algoritmo de Prim.
heaps fibonacci ^ (|V| << |E|) => O(E + VlgV)
![Page 3: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/3.jpg)
Definición
• Un árbol de expansión mínima de un grafo con pesos es el árbol de expansión cuyos arcos suman el peso mínimo.
![Page 4: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/4.jpg)
¿Cómo funciona?
• Estrategia:– Dado un grafo no dirigido, w : E -> R.– MST = Σ 1 arco seguro por vez.– Existe A AEM.
• ¿(u,v) A? si, entonces es seguro.
![Page 5: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/5.jpg)
Algoritmo
1 A = Ф
2 while A does not form a MST
3 do find an edge (u,v) safe for A
4 A<-A U {(u,v)}
5 return A
![Page 6: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/6.jpg)
Arcos Seguros
• Corte: (S, V-S) es una partición de V.
Blancos: parte del MST.Negros: aún por ser considerados.
Debe encontrarse un Arco Liviano del corte para incluirlo en la solución.
Respeta A
corte
A
![Page 7: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/7.jpg)
Noción de Corte
Teorema:
Sea G = (V,E) un grafo conexo, con
w : ER. Sea A un subgrafo de E que se incluye en algún MST G. Sea (S, V-S) cualquier corte de G que respeta A y sea (u,v) un Arco Ligero que cruza (S,V-S). Luego (u,v) es seguro para A.
![Page 8: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/8.jpg)
Noción de Corte
Prueba:Sea T un MST y A un subgrafo de T. Sea (u,v) T.
Deberiamos construir T´ que es el MST buscado.Se plantea T y un corte que respeta A. Hay un camino p de
u a v. Dado que u y v son opuestos, hay al menos otro arco (x,y) T que cruza el corte. Al cambiar (x,y) por (u,v) tenemos T’ que es un MST.
w(T’) = w(T) – w(x,y) + w(u,v)w(T’) <= w(T)Pero se supone que T es MST, por lo que w(T)<=w(T’), se
trata entonces del mismo arbol. T’ es un MST.A T’, pues A T y (x,y) A => A U {(u,v)} T’. Luego, como T’=T es un MST y (u,v) es seguro.
![Page 9: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/9.jpg)
Análisis
• El loop 2-4 se ejecuta |V|-1 veces => O(V).
Tarea:
Hacer 24.1-4 y 24.1-7.
![Page 10: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/10.jpg)
Algoritmo de Kruskal
KRUSKAL(G,w)1 A Ф2 for each vertex v V[G]3 do MAKE-SET(V)4 sort the edges E by nondecreasing weight w.5 for each edge (u,v) E in order6 do if FIND-SET(u) ≠FIND-SET(v)7 then AA U {(u,v)}8 UNION(u,v)
O(V)
O(ElgE)
O(ElgE)
Total: O(ElgE)
![Page 11: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/11.jpg)
Ejemplo
a
b
h
i
c
g
d
f
e4
7
8
11
7
2
8
4
6
1 2
14
9
10
![Page 12: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/12.jpg)
Algoritmo de Prim
PRIM(G,w,r)1 Q V[G]2 for each u Q3 do key[u] 4 key[r] 05 [r] NIL6 while Q≠Ф7 do EXTRACT-MIN(Q) 8 for each v Adj[u]9 do if v Q and w(u,v) < key[v]10 then [v]u11 key[v] w(u,v) O(lgV)
O(ElgV)
O(lgV)
O(V)
O(VlgV)
Total: O(Vlg V + Elg V) = O(E lg V)
heap binario
![Page 13: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/13.jpg)
Ejemplo
• Para un ejemplo de implantación vea: http://students.ceid.upatras.gr/~papagel/project/adjoin.htm
![Page 14: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/14.jpg)
Problema del Camino más Corto
Definición:
Dado un grafo dirigido G=(V,E) con una función de pesos w: ER, el peso de un camino p=<v0, v1, …, vk> es la suma de los pesos de los arcos:
w(p) = Σ(i=1, k, w(vi-1,vi))
y el camino mínimo sera:
(u,v) = min {w(p): u ~> v}, si hay camino de u a v, en otro caso será .
![Page 15: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/15.jpg)
Variantes del Problema
Se requiere averiguar el camino más corto desde un nodo s V a cada uno v V-S.
• Problema de todos los caminos cortos a un destino simple (común). Solución: invertir la salida.
• Problema del camino más corto entre un par de nodos.
• Problema del camino más corto de todos los pares. Solución: Ejecutar el algoritmo para todos los pares desde cada nodo.
![Page 16: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/16.jpg)
Arcos Negativos
Los caminos más cortos están bien definidos ssi no existen ciclos negativos. De otra manera no estará bien definido, pues cada vez que demos vuelta a ciclo el camino será más corto.
a b
-4
3
(a,b) = -
![Page 17: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/17.jpg)
Caminos Cortos y Relajación
Para hacer más entendibles los algoritmos de caminos más cortos, es esencial comprender la técnica de relajación.
La Relajación es el método mediante el cual se hace decrecer la cota superior en el peso actual del camino más corto hasta que iguale a la cota del camino más corto.
![Page 18: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/18.jpg)
RelajaciónINITIALIZATION(G,s)1 for each vertex v V[G]2 do d[v] 3 [v] NIL4 d[s] 0
Relajar es mejorar la distancia de un nodo a otro. Dado (u,v) se pregunta si el camino calculado hasta ahora hasta v es mejor que el camino hasta u y luego w(u,v).
RELAX(u,v,w)1 if d[v] > d[u] + w(u,v)2 then d[v] d[u] + w(u,v)3 [v] u
5 9
5 7
5 6
5 6
2
2
2
2
![Page 19: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/19.jpg)
Propiedades de la Relajación
• Una vez relajado (u,v), d[v] d[u] + w(u,v)
• Luego de la inicialización d[v] (s,v) vV.
• Si no hay camino entre sV y vV, luego de inicializar el grafo, d[v]=(s,v)=.
• Dado un camino s~>uv es un camino corto (s,v) si, d[u]=(s,u) antes de la llamada a RELAX y luego sera d[v]=(s,v).
![Page 20: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/20.jpg)
Algoritmo de Dijkstra
Resuelve el camino mínimo para aquellos grafos dirigidos, con peso no negativo. Entonces se asume w(u,v)0 (u,v) E.
Al final del algoritmo se tiene que para todos los vértices d[v] = (s,v).
![Page 21: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/21.jpg)
Algoritmo de Dijkstra
DIJKSTRA (G,w,s)1 INITIALIZE(G,s)2 SФ3 QV[G]4 while Q≠Ф5 do u EXTRACT-MIN(Q)6 S S U {u}7 for each vertex v Adj[u]8 do RELAX(u,v,w)
![Page 22: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/22.jpg)
Ejemplo
10
1
5
2
2 39
7
4 6s
u v
x y
![Page 23: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/23.jpg)
Análisis
Si EXTRACT-MIN es un arreglo lineal O(V). Como hay O(V) operaciones de ese tipo O(V2).Hay (E) operaciones con arcos.TOTAL: O(V2 + E) = O(V2).
Si utilizamos un heap binario, la operación DECREASE-KEY en RELAX y EXTRACT-MIN sería O(lgV).
TOTAL: O((V+E)lgV) = O(ElgV), si todos los nodos son alcanzables desde el origen.
Se puede mejorar aún más si Q se implanta con heaps de fibonacci. El costo amortizado de los |V| EXTRACT-MIN es O(lgV) y los |E| DECREASE-KEY serán O(1).
![Page 24: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/24.jpg)
Algoritmo de Bellman - Ford
Resuelve caminos cortos desde un nodo en el caso general, aún con pesos negativos.
BELLMAN-FORD(G,w,s)1 INITIALIZE(G,s)2 for i1 to |V[G]| - 13 do for each edge (u,v) E[G]4 do RELAX(u,v,w)5 for each vertex (u,v) E[G]6 do if d[v] > d[u] + w(u,v)7 then return false8 return true
(V)
(V)
(E)
TOTAL: (VE)
![Page 25: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/25.jpg)
Ejemplo
6-2
7
9
8-3
2
-4
7z
u v
x y
5
Orden de relajación: (u,v), (u,x), (u,y), (v,u), (x,v), (x,y), (y,v), (y,z), (z,u), (z,x).
0
![Page 26: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/26.jpg)
FuncionamientoLema:
Sea G(V,E) un grafo con peso w: ER, dirigido. Sea sV el vertice origen y sea s~>uv un camino corto en G para algun par de vertices u, v V. Suponga que G se inicia con INITIALIZE(G,s) y luego existe una secuencia de pasos de relajación RELAX(u,v,w). Si d[u]=(s,u) en cualquier momento previo de la llamada con (u,v), entonces d[v]= (s,v) todo el tiempo despues de la llamada.
Prueba:Sabiendo que d[u]= (s,u) en algún momento antes de relajar (u,v), y que esto se mantiene al dejar el arco (u,v):d[v] d[u] + w(u,v) = (s,u) + w(u,v) = (s,v)
![Page 27: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/27.jpg)
FuncionamientoLema:
Sea G(V,E) un grafo con peso y dirigido con origen s y función peso w:ER. Asuma que G no contiene ciclos negativos alcanzables desde s. Al terminar BELLMAN-FORD, se tiene d[v]= (s,v) vV y s~>v.
Prueba:Por inducción. Sea v un nodo alcanzable desde s, y p=<v0, v1, …, vk> un camino corto desde s a v, donde v0=s y vk=v. Como hay |V|-1 pasadas es suficiente probar por inducción.Base: d[v0]= (s,v0)=0, y se mantiene…Paso inductivo: d[vi-1]= (s,vi-1) luego de la (i-1)esima pasada, el arco (vi-1,vi) se relaja en la i-esima pasada. Por el lema anterior se concluye que d[vi]= (s,vi) y se mantiene…
![Page 28: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/28.jpg)
Caminos Cortos en DAGs.
Si se relajan los arcos de un DAG con peso G(V,E) y de acuerdo con su orden topológico, se puede computar los caminos más cortos en (V+E). En los DAGs los caminos cortos siempre estan bien definidos pues no hay ciclos.
![Page 29: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/29.jpg)
Caminos Cortos en DAGs.
DAG-SHORTEST-PATHS
1 Topologically sort the vertex of G
2 INITIALIZE(G,s)
3 for each vertex u taken in topollogically sorted order
4 do RELAX(u,v,w)
(V+E)
(E)
TOTAL: (V+E)
![Page 30: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/30.jpg)
Ejemplo
0
r s tu
vx
5 2 7 -1 -2
6 1
3 42
![Page 31: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/31.jpg)
Funcionamiento
Teorema:Si un grafo G=(V,E) tiene como origen s y no hay ciclos, al terminar el algoritmo DAG-SHORTEST-PATHS, d[v]=(s,v) v V y G es un árbol de caminos más cortos.
Prueba:1) d[v] = (s,v) v V. Si (s~>v) d[v]=(s,v)=.2) Suponga s~>v y el camino es p=<v0, v1, …, vk>, v0=s y vk=v. Como esta en orden topológico, p=(v0,v1), (v1,v2)…(vk-1,vk), y por inducción se puede demostrar que d[vi]=(s,vi) y al finalizar G es un árbol de caminos más cortos.
![Page 32: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/32.jpg)
Restricciones Diferenciales y Caminos Cortos
Programación Lineal:En el problema general de la programación lineal se tiene una matriz mxn llamada A, un vector b de tamaño m y un vector x de n elementos que maximiza la función objetivo (i=1, n, cixi) dado las m restricciones de la forma Axb.
![Page 33: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/33.jpg)
Restricciones Diferenciales
En la matriz, cada fila contiene 1, -1 y el resto 0.
Se plantea entonces: xi-xJbk.
donde: 1i,jn y 1km
Ejemplo:
1 0 -1
1 -1 0
-1 1 0
x1
x2
x3
4
1
-2
![Page 34: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/34.jpg)
Funcionamiento
Lema:
Sea x=(x1, x2, …, xk) una solución de un sistema Axb y sea d una constante cualquiera. Luego x=(x1+d, x2+d, …, xk+d) tambien es una solución.
Prueba:
(xj+d) – (xi+d) = xj-xi
![Page 35: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/35.jpg)
Grafos de Restricciones
Desde el punto de vista de los grafos, A puede ser interpretada como una matriz de incidencia dada por un grafo de n nodos y m arcos. Cada nodo vi corresponde a una de las n variables desconocidas. Cada arco corresponde a una de las m desigualdades que implica a dos variables.
V = {v0, v1, …, vn}
E = {(vi,vj): xj-xibk es una restricción} U {(v0,v1), (v0,v2),…,(v0,vn)}
w(vi,vj) = bk
w(v0,vi) = 0
![Page 36: Analisis y Diseño de Algoritmos Tema: Grafos Andrés Arcia Universidad de Los Andes Facultad de Ingeniería Postgrado en Computación](https://reader030.vdocuments.pub/reader030/viewer/2022032612/5665b4591a28abb57c90c3a4/html5/thumbnails/36.jpg)
Análisis
Observese que en la solución xi0.La solución será:x=((v0,v1), (v0,v1), …, (v0,vn)), si G no tiene
ciclos negativos, de lo contrario la solución no existe.
Esto sugiere usar BELLMAN-FORD. Dado que hay n+1 nodos y n+m arcos, se puede
resolver el sistema en O((n+1)(n+m)) = O(n2+nm).
Tarea:Hacer 25.5-1, 25.5-2 y 25-2.
¿Por qué funciona?
Porque se trata de distancias mínimas y estas cumplen una restricción de cota.