Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014
-
Upload
nicolas-mattone -
Category
Engineering
-
view
204 -
download
1
description
Transcript of Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014
![Page 1: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/1.jpg)
Algoritmos Algoritmos y y
Estructuras de DatosEstructuras de DatosCursada 2014
Prof. Catalina MostaccioProf. Alejandra Schiavoni
Facultad de Informática - UNLP
![Page 2: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/2.jpg)
GRAFOS
Algoritmos y Estructuras de Datos
![Page 3: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/3.jpg)
Algoritmos y Estructuras de Datos 3
Agenda - Grafos
• Caminos de costo mínimo
• Árbol de expansión mínimo
![Page 4: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/4.jpg)
Algoritmos y Estructuras de Datos 4
Agenda - Grafos
• Caminos de costo mínimo
• Árbol de expansión mínimo
![Page 5: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/5.jpg)
Algoritmos y Estructuras de Datos 5
Agenda – Grafos Caminos de costo mínimoCaminos de costo mínimo
Definición Definición
Algoritmos para el cálculo del camino mínimo desde un origen Algoritmos para el cálculo del camino mínimo desde un origen
en:en: Grafos sin pesoGrafos sin peso Grafos con pesos positivosGrafos con pesos positivos
• Algortimo de Dijkstra: dos implementacionesAlgortimo de Dijkstra: dos implementaciones Grafos con pesos positivos y negativosGrafos con pesos positivos y negativos Grafos acíclicosGrafos acíclicos
Algoritmo para el cálculo de los caminos mínimos entre todos los Algoritmo para el cálculo de los caminos mínimos entre todos los
pares de vérticespares de vértices
![Page 6: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/6.jpg)
Algoritmos y Estructuras de Datos 6
Camino de costo mínimoDefinición
Sea G=(V,A) un grafo dirigido y pesado, el costo c(i,j)
está asociado a la arista v(i,j).Dado un camino: v1, v2, v3,…….vN
El costo del camino es:
Este valor también se llama longitud del camino pesado.La longitud del camino no pesado es la cantidad de aristas
∑−
=
+=1
1
)1,(N
i
iicC
![Page 7: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/7.jpg)
Algoritmos y Estructuras de Datos 7
Camino de costo mínimoDefinición (cont.)
El camino de costo mínimo desde un vértice vi a otro
vértice vj es aquel en que la suma de los costos de las aristas es mínima.
Esto significa que:
es mínima∑−
=
+=1
1
)1,(N
i
iicC
![Page 8: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/8.jpg)
Algoritmos y Estructuras de Datos 8
Camino de costo mínimoDefinición (cont.)
Ejemplo:1 2
50
1 330
25
1 330
220
450
1 4100
220
1 510
220
410
50
35
100
120
40
![Page 9: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/9.jpg)
Algoritmos y Estructuras de Datos 9
Algoritmos de Caminos mínimos
Grafos sin peso
Grafos con pesos positivos
Grafos con pesos positivos y negativos
Grafos dirigidos acíclicos
![Page 10: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/10.jpg)
Algoritmos y Estructuras de Datos 10
Algoritmos de Caminos mínimos
Los algoritmos calculan los caminos
mínimos desde un vértice origen s a
todos los restantes vértices del grafo
![Page 11: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/11.jpg)
Algoritmos y Estructuras de Datos 11
Algoritmos de Caminos mínimosGrafos sin peso
Estrategia: Recorrido en amplitud (BFS)Pasos:
Avanzar por niveles a partir del origen, asignando distancias según se avanza (se utiliza una cola)
Inicialmente, es Dw=∞. Al inspeccionar w se reduce al valor correcto Dw=Dv+1
Desde cada v, visitamos a todos los nodos adyacentes a v
![Page 12: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/12.jpg)
Algoritmos y Estructuras de Datos 12
Algoritmos de Caminos mínimosGrafos sin peso (cont.)
![Page 13: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/13.jpg)
1313
Vi Dv PvConoc
V0 ∞ 0 0
V1 ∞ 0 0
V2 0 0 0
V3 ∞ 0 0
V4 ∞ 0 0
V5 ∞ 0 0
V6 ∞ 0 0Valores iniciales de la tabla
Algoritmos de Caminos mínimosGrafos sin peso (cont.)
∞
∞ ∞
∞
∞ ∞
![Page 14: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/14.jpg)
1414
Algoritmo Caminos mínimos basado en BFS
Camino_min_GrafoNoPesadoG,s) {(1) para cada vértice v Є V hacer
(2) Dv = ∞; Pv = 0; Conocv= 0;(3) fin para(4) Ds = 0; Encolar (Q,s); Conocv= 1;
(5) Mientras (not esVacio(Q)) hacer(6) Desencolar (Q,u); (7) Marcar u como conocido;(8) para c/vértice w Є V adyacente a u hacer(9) si w no es conocido entonces(10) Dw = Du + 1;(11) Pw = u; (12) Encolar(Q,w); Conocv= 1;(13) fin si(14) fin para(15) fin mientras }
![Page 15: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/15.jpg)
1515
Algoritmo Caminos mínimos basado en BFS
Camino_min_GrafoNoPesadoG,s) {(1) para cada vértice v Є V hacer
(2) Dv = ∞; Pv = 0; Conocv= 0;(3) fin para(4) Ds = 0; Encolar (Q,s); Conocv= 1;
(5) Mientras (not esVacio(Q)) hacer(6) Desencolar (Q,u); (7) Marcar u como conocido;(8) para c/vértice w Є V adyacente a u hacer(9) si w no es conocido entonces(10) Dw = Du + 1;(11) Pw = u; (12) Encolar(Q,w); Conocw= 1;(13) fin si(14) fin para(15) fin mientras }
![Page 16: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/16.jpg)
1616
Vi Dv PvConoc
V0 ∞ 0 0
V1 ∞ 0 0
V2 0 0 0
V3 ∞ 0 0
V4 ∞ 0 0
V5 ∞ 0 0
V6 ∞ 0 0Valores iniciales de la tabla
Algoritmos de Caminos mínimosGrafos sin peso (cont.)
![Page 17: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/17.jpg)
1717
Vi Dv Pv
V0 ∞ 0
V1 ∞ 0
V2 0 0
V3 ∞ 0
V4 ∞ 0
V5 ∞ 0
V6 ∞ 0Valores iniciales de la tabla
Programación 3
Algoritmos de Caminos mínimosGrafos sin peso (cont.)
∞
∞ ∞
∞
∞ ∞
![Page 18: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/18.jpg)
1818
Algoritmo Caminos mínimos basado en BFS
Camino_min_GrafoNoPesadoG,s) {(1) para cada vértice v Є V hacer
(2) Dv = ∞; Pv = 0;(3) fin para(4) Ds = 0; Encolar (Q,s);
(5) Mientras (not esVacio(Q)) hacer(6) Desencolar(Q,u); (7) para c/vértice w Є V adyacente a u hacer
(8) si Dw = ∞ entonces(9) Dw = Du + 1;(10) Pw = u; (11) Encolar(Q,w);(12) fin si(13) fin para(14) fin mientras }
![Page 19: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/19.jpg)
Algoritmos y Estructuras de Datos 19
Algoritmos de Caminos mínimos Grafos con pesos positivos – Algoritmo de Dijkstra
Estrategia: Algoritmo de Dijkstra
Pasos: Dado un vértice origen s , elegir el vértice v que
esté a la menor distancia de s , dentro de los vértices no procesados
Marcar v como procesado
Actualizar la distancia de w adyacente a v
![Page 20: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/20.jpg)
Algoritmos y Estructuras de Datos 20
Algoritmo de Dijkstra (cont.)
Para cada vértice v mantiene la siguiente información:
Dv : distancia mínima desde el origen (inicialmente ∞ para
todos lo vértices excepto el origen con valor 0)
Pv : vértice por donde paso para llegar
Conocido : dato booleano que me indica si está procesado
(inicialmente todos en 0)
![Page 21: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/21.jpg)
Algoritmos y Estructuras de Datos 21
Algoritmo de Dijkstra (cont.)
La actualización de la distancia de los adyacentes w se realiza con el siguiente criterio:
Se compara Dw con Dv + c(v,w)
Se actualiza si Dw > Dv + c(v,w)
Distancia de s a w
(sin pasar por v)Distancia de s a w,
pasando por v
![Page 22: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/22.jpg)
Algoritmos y Estructuras de Datos 22
Algoritmo de DijkstraEjemplo
V Dv PvConoc.
1 0 0 0
2 ∞ 0 0
3 ∞ 0 0
4 ∞ 0 0
5 ∞ 0 0
6 ∞ 0 0
s
Valores iniciales de la tabla
![Page 23: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/23.jpg)
Algoritmos y Estructuras de Datos 23
Algoritmo de DijkstraEjemplo (cont.)
V Dv PvConoc.
1 0 0 1
2 ∞ 0 0
3 40 1 0
4 ∞ 0 0
5 10 1 0
6 5 1 0•Valores al seleccionar el vértice 1
•Actualiza la distancia de 3, 5 y 6
s
![Page 24: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/24.jpg)
Algoritmos y Estructuras de Datos 24
Algoritmo de DijkstraEjemplo (cont.)
V Dv PvConoc.
1 0 0 1
2 ∞ 0 0
3 40 1 0
4 ∞ 0 0
5 10 1 0
6 5 1 0
s
![Page 25: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/25.jpg)
Algoritmos y Estructuras de Datos 25
Algoritmo de DijkstraEjemplo (cont.)
V Dv PvConoc.
1 0 0 1
2 25 6 0
3 40 1 0
4 ∞ 0 0
5 10 1 0
6 5 1 1
s
•Valores al seleccionar el vértice 6
•Actualiza la distancia de 2
![Page 26: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/26.jpg)
2626
Algoritmo de DijkstraEjemplo (cont.)
V Dv PvConoc.
1 0 0 1
2 25 6 0
3 40 1 0
4 ∞ 0 0
5 10 1 0
6 5 1 1
s
![Page 27: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/27.jpg)
Algoritmos y Estructuras de Datos 27
Algoritmo de DijkstraEjemplo (cont.)
V Dv PvConoc.
1 0 0 1
2 25 6 0
3 40 1 0
4 30 5 0
5 10 1 1
6 5 1 1
s
•Valores al seleccionar el vértice 5
•Actualiza la distancia de 4
![Page 28: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/28.jpg)
Algoritmos y Estructuras de Datos 28
Algoritmo de DijkstraEjemplo (cont.)
Los próximos vértices a elegir son: 2, 4 y 3 en ese orden.
V Dv PvConoc.
1 0 0 1
2 25 6 1
3 35 4 1
4 30 5 1
5 10 1 1
6 5 1 1El resultado final es:
![Page 29: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/29.jpg)
Algoritmos y Estructuras de Datos 29
Algoritmo de Dijkstra Dijkstra(G,w, s){(1) para cada vértice v Є V hacer
(2) Dv = ∞; Pv = 0;(3) fin para(4) Ds = 0; (5) para cada vértice v Є V hacer(6) u = vérticeDesconocidoMenor Dist; (7) Marcar u como conocido;(8) para cada vértice w Є V adyacente a u hacer(9) si w no está conocido entonces(10) si Dw > Du + c(u,w) entonces(11) Dw = Du + c(u,w);(12) Pw = u;(13) fin si(14) fin si(15) fin para(16) fin para }
![Page 30: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/30.jpg)
Algoritmos y Estructuras de Datos 30
Algoritmo de DijkstraTiempo de ejecución (I)
El bucle para de la línea (5) se ejecuta para todos los vértices |V| iteraciones
La operación vérticeDesconocidoMenorDist es O(|V|) y dado que se realiza |V| veces el costo total de vérticeDesconocidoMenorDist es O(|V|2)
El bucle para de la línea (8) se ejecuta para los vértices adyacentes de cada vértice. El número total de iteraciones será la cantidad de aristas del grafo. |E| iteraciones
El costo total del algoritmo es (|V|2 + |E| ) es O(|V|2)
![Page 31: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/31.jpg)
Algoritmos y Estructuras de Datos 31
Algoritmo de DijkstraTiempo de ejecución (II)
Optimización: la operación vérticeDesconocidoMenorDist es más eficiente si almacenamos las distancias en una heap.
La operación vérticeDesconocidoMenorDist es O(log|V|) y dado que se realiza |V| veces
el costo total de vérticeDesconocidoMenorDist es O(|V| log |V|)
El bucle para de la línea (8) supone modificar la prioridad (distancia) y reorganizar la heap. Cada iteración es O(log|V|)
realiza|E| iteraciones, O(|E| log|V|)
El costo total del algoritmo es (|V| log|V|+ |E| log|V|) es O(|E| log|V|)
![Page 32: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/32.jpg)
Algoritmos y Estructuras de Datos 32
Algoritmo de DijkstraTiempo de ejecución (III)
Variante: usando heap la actualización de la línea (11) se puede resolver insertando w y su nuevo valor Dw cada vez que éste se
modifica.
El tamaño de la heap puede crecer hasta |E|. Dado que |E| ≤ |V|2, log |E| ≤ 2 log |V|, el costo total del algoritmo no varía
El costo total del algoritmo es O(|E| log|V|)
![Page 33: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/33.jpg)
Algoritmos y Estructuras de Datos 33
Algoritmos de Caminos mínimosGrafos con pesos positivos y negativos
Estrategia: Encolar los vérticesSi el grafo tiene aristas negativas, el algoritmo de Dijkstra puede dar un resultado erróneo.
s
uv
-5
-10
2
V Dv Pv Conoc.
s 0 0 1
u -5 s 1
v 2 s 1Error !!La distancia mínima de s a u es -8
![Page 34: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/34.jpg)
Algoritmos y Estructuras de Datos 34
Algoritmos de Caminos mínimosGrafos con pesos positivos y negativos (cont.)
Pasos: Encolar el vértice origen s . Procesar la cola:
Desencolar un vértice. Actualizar la distancia de los adyacentes Dw siguiendo
el mismo criterio de Dijkstra. Si w no está en la cola, encolarlo.
El costo total del algoritmo es O(|V| |E|)
![Page 35: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/35.jpg)
Algoritmos y Estructuras de Datos 35
Algoritmos de Caminos mínimosGrafos acíclicos
Estrategia: Orden Topológico Optimización del algoritmo de Dijkstra La selección de cada vértice se realiza siguiendo el orden
topológico Esta estrategia funciona correctamente, dado que al
seleccionar un vértice v, no se va a encontrar una distancia dv menor, porque ya se procesaron todos los caminos que llegan a él
El costo total del algoritmo es O(|V| + |E|)
![Page 36: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/36.jpg)
Algoritmos y Estructuras de Datos 36
Algoritmos de Caminos mínimosGrafos acíclicos
Camino_min_GrafoDirigidoAcíclico(G,s)
Ordenar topológicamente los vértices de G;
Inicializar Tabla de Distancias(G, s);
para c/vértice u del orden topológico hacer para c/vértice w Є V adyacente a u hacer si Dw > Du + c(u,w) entonces
Dw = Du + c(u,w);
Pw = u;
![Page 37: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/37.jpg)
Algoritmos y Estructuras de Datos 37
Algoritmos de Caminos mínimosGrafos acíclicos
Camino_min_GrafoDirigidoAcíclico(G,s) {Calcular el grado_in de todos los vérticesEncolar en Q los vértices con grado_in = 0para cada vértice v Є V hacer
Dv = ∞; Pv = 0;fin paraDs = 0;Mientras (!esVacio(Q)) hacer Desencolar(Q,u);
para c/vértice w Є V adyacente a u hacer Decrementar grado de entrada de w si grado_in[w] = 0 entonces Encolar(Q,w);
si Du != ∞ entonces si Dw > Du + c(u,w) entonces
Dw = Du + c(u,w); Pw = u; fin si fin parafin mientras
}
![Page 38: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/38.jpg)
Algoritmos y Estructuras de Datos 38
Caminos mínimos entre todos los pares de vértices
Estrategia: Algoritmo de Floyd
Lleva dos matrices D y P, ambas de |V| x |V|
Matriz de costos Matriz de vértices mínimos intermedios
El costo total del algoritmo es O(|V|3)
![Page 39: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/39.jpg)
Algoritmos y Estructuras de Datos 39
Algoritmo de Floyd
para k=1 hasta cant_Vértices(G) hacer para i=1 hasta cant_Vértices(G) hacer
para j=1 hasta cant_Vértices(G) hacer si D[i,j] > D[i,k] + D[k,j] entonces
D[i,j] = D[i,k] + D[k,j]; P[i,j] = k; fin si fin para fin parafin para
Toma cada vértice como intermedio, para calcular los caminos
Distancia entre los vértices i y j , pasando por k
![Page 40: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/40.jpg)
Algoritmos y Estructuras de Datos 40
Agenda - Grafos
• Caminos de costo mínimo
• Árbol de expansión mínimo
![Page 41: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/41.jpg)
Algoritmos y Estructuras de Datos 41
Agenda – Grafos
Árbol de expansión mínimo
Definición
Algoritmo de Prim
Algoritmo de Kruskal
![Page 42: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/42.jpg)
Algoritmos y Estructuras de Datos 42
Árbol de expansión mínimaDefinición
Dado un grafo G=(V , E) no dirigido y conexo
El árbol de expansión mínima es un árbol formado por las aristas de G que conectan todos los vértices con un
costo total mínimo.
![Page 43: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/43.jpg)
Algoritmos y Estructuras de Datos 43
Árbol de expansión mínimaAlgoritmo de Prim
Construye el árbol haciéndolo crecer por etapas
En cada etapa:- elige un vértice como raíz
- le agrega al árbol una arista y un vértice asociado
Selecciona la arista (u ,v) de mínimo costo que cumpla: u ∈ árbol y v ∉ árbol
![Page 44: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/44.jpg)
Algoritmos y Estructuras de Datos 44
Árbol de expansión mínimaAlgoritmo de Prim (cont.)
Construye el árbol haciéndolo crecer por etapas
Ejemplo:
Nodo raíz
Se agrega la arista (1,3) y el vértice 3
1° Paso
![Page 45: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/45.jpg)
Algoritmos y Estructuras de Datos 45
Árbol de expansión mínimaAlgoritmo de Prim (cont.)
Se agrega la arista (3,6) y el vértice 6
2° Paso 3° Paso
Se agrega la arista (6,4) y el vértice 4
4° y 5° Pasos
- Se agrega la arista (3,2) y el vértice 2
- Se agrega la arista (2,5) y el vértice 5
![Page 46: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/46.jpg)
Algoritmos y Estructuras de Datos 46
Algoritmo de PrimImplementación
La implementación es muy similar al algoritmo de Dijkstra
Se modifica la forma de actualizar la distancia de los adyacentes:
Se compara Dw con c(v,w)
Se actualiza si Dw > c(v,w)
Distancia mínima a w (sin
tener en cuenta v)Distancia de v a w
![Page 47: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/47.jpg)
Algoritmos y Estructuras de Datos 47
Algoritmo de PrimTiempo de Ejecución
Se hacen las mismas consideraciones que para el algoritmo de Dijkstra
Si se implementa con una tabla secuencial:
El costo total del algoritmo es O(|V|2)
Si se implementa con heap:
El costo total del algoritmo es O(|E| log|V|)
![Page 48: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/48.jpg)
Algoritmos y Estructuras de Datos 48
Árbol de expansión mínimaAlgoritmo de Kruskal
Selecciona las aristas en orden creciente según su peso y las acepta si no originan un ciclo
El invariante que usa me indica que en cada punto del proceso, dos vértices pertenecen al mismo conjunto si y sólo sí están conectados
Si dos vértices u y v están en el mismo conjunto, la arista (u ,v) es rechazada porque al aceptarla forma un ciclo
![Page 49: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/49.jpg)
Algoritmos y Estructuras de Datos 49
Árbol de expansión mínimaAlgoritmo de Kruskal (cont.)
Inicialmente cada vértice pertenece a su propio conjunto
|V| conjuntos con un único elemento
Al aceptar una arista se realiza la Unión de dos conjuntos
Las aristas se organizan en una heap, para ir recuperando la de mínimo costo en cada paso
![Page 50: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/50.jpg)
Algoritmos y Estructuras de Datos 50
Árbol de expansión mínimaAlgoritmo de Kruskal (cont.)
Ejemplo:
![Page 51: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/51.jpg)
Algoritmos y Estructuras de Datos 51
Árbol de expansión mínimaAlgoritmo de Kruskal (cont.)
Inicialmente cada vértice está en su propio conjunto
Se agrega la arista (1,2)
Se agrega la arista (3,6)
Se agrega la arista (4,6)
![Page 52: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/52.jpg)
Algoritmos y Estructuras de Datos 52
Árbol de expansión mínimaAlgoritmo de Kruskal (cont.)
Se agrega la arista (2,6) Se agrega la arista (3,5)
![Page 53: Clase 9 grafos parte iii (cam min - arbol min)-ay_ed-2014](https://reader036.fdocuments.us/reader036/viewer/2022081401/5593bba31a28abdf6c8b45e4/html5/thumbnails/53.jpg)
Algoritmos y Estructuras de Datos 53
Algoritmo de KruskalTiempo de Ejecución
Se organizan las aristas en una heap, para optimizar la recuperación de la arista de mínimo costo
El tamaño de la heap es |E|, y extraer cada arista lleva O(log |E|)
El tiempo de ejecución es O(|E |log|E|)
Dado que |E| ≤ |V|2, log |E| ≤ 2 log |V|,
el costo total del algoritmo es O(|E |log|V|)