11. Funcion Dijkstra (L[1..n,1..n]):matriz[2..n] D: matriz[2..n], P:matriz[2..n] C=2,3,...,n {S=N-C} Para i=2 hasta n D[i]=L[1,i] Fin_Para Repetir n-2 veces v=algún elemento de C que minimice D[v] C = C – {v} {S = S U {v}} Para cada w C Si D[w]>D[v]+L[v,w] entonces D[w] = D[v] + L[v,w] P[w] = v Fin_si Fin_para Fin_Repetir Devolver D 1 5 5 w={2} D[2]>D[5]+L[5,2] No w={3} D[3]>D[5]+L[5,3] No w={4} D[4]>D[5]+L[5,4] Si D[4]=D[5]+L[5,4] D[4]=20 P[4]=5 20 5 4 w={2} D[2]>D[4]+L[4,2] Si D[2]=40 P[2]=4 w={3} D[3]>D[4]+L[4,3] No 4 40 4 3 3 w={2} D[2]>D[3]+L[3,2] Si D[2]=35 P[2]=3 35 3 50 5 3 4 1 2 10 50 10 5 100 30 20 L 1 2 3 4 5 1 0 50 30 100 10 2 0 3 5 0 4 20 50 0 5 10 0 D 2 3 4 5 P 2 3 4 5 C S v
12.
13.
14. Ejemplo MATRIZ DE ADYACENCIAS A B C D E A 0 2 10 B 0 9 5 C 12 0 6 D 0 7 E 3 0 7 A B C D E 2 5 9 3 10 12 6
15. Ejemplo MATRIZ DEL CAMINO MÁS CORTO A B C D E A 0 2 10 10 7 B 20 0 8 14 5 C 12 14 0 6 13 D 22 24 10 0 7 E 15 17 3 9 0 7 A B C D E 2 5 9 3 10 12 6
16.
17.
18.
19. Ejemplo Nota : si existe un valor y la sumatoria es indefinida Se deja el valor que se encuentre, y si es superior la suma se deja el mínimo D 0 A 1 B 2 C 3 D 4 E 5 A 1 0 2 10 B 2 0 9 5 C 3 12 0 6 D 4 0 7 E 5 3 0 D 1 A 1 B 2 C 3 D 4 E 5 A 1 0 2 10 B 2 0 9 5 C 3 12 14 0 6 D 4 0 7 E 5 3 0 C-A + A-B = 12 + 2 Mínimo entre: C-D y C-A + A-D 7 A B C D E 2 5 9 3 10 12 6
20. Ejemplo D 1 A 1 B 2 C 3 D 4 E 5 A 1 0 2 10 B 2 0 9 5 C 3 12 14 0 6 D 4 0 7 E 5 3 0 D 2 A 1 B 2 C 3 D 4 E 5 A 1 0 2 11 10 7 B 2 0 9 5 C 3 12 14 0 6 19 D 4 0 7 E 5 3 0 A-B + B-C = 2 + 9 A-B + B-E = 2 + 5 Mínimo entre:C-D y C-B + B-D C-B + B-E = 14 + 5 7 A B C D E 2 5 9 3 10 12 6
21. Ejemplo D 3 A 1 B 2 C 3 D 4 E 5 A 1 0 2 11 10 7 B 2 21 0 9 15 5 C 3 12 14 0 6 19 D 4 0 7 E 5 15 17 3 9 0 D 2 A 1 B 2 C 3 D 4 E 5 A 1 0 2 11 10 7 B 2 0 9 5 C 3 12 14 0 6 19 D 4 0 7 E 5 3 0 E-C + C-A = 3 + 12 B-C + C-A = 9 + 12 Mínimo entre:A-E y A-C + C-E Mínimo entre:A-D y A-C + C-D 7 A B C D E 2 5 9 3 10 12 6
22. Ejemplo D 4 A 1 B 2 C 3 D 4 E 5 A 1 0 2 11 10 7 B 2 21 0 9 15 5 C 3 12 14 0 6 13 D 4 0 7 E 5 15 17 3 9 0 D 3 A 1 B 2 C 3 D 4 E 5 A 1 0 2 11 10 7 B 2 21 0 9 15 5 C 3 12 14 0 6 19 D 4 0 7 E 5 15 17 3 9 0 Mínimo entre:C-E y C-D + D-E Mínimo entre:A-E y A-D + D-E 7 A B C D E 2 5 9 3 10 12 6
23. Ejemplo D 4 A 1 B 2 C 3 D 4 E 5 A 1 0 2 11 10 7 B 2 21 0 9 15 5 C 3 12 14 0 6 13 D 4 0 7 E 5 15 17 3 9 0 Mínimo entre:B-A y B-E + E-A Mínimo entre:A-C y A-E + E-C D-E + E-A = 7 + 15 D 5 A 1 B 2 C 3 D 4 E 5 A 1 0 2 10 10 7 B 2 20 0 8 14 5 C 3 12 14 0 6 13 D 4 22 24 10 0 7 E 5 15 17 3 9 0 MATRIZ META 7 A B C D E 2 5 9 3 10 12 6
47. ALGORITMO DE KRUSKAL http://lear.inforg.uniovi.es/ioperativa/TutorialGrafos/minimaexp/kruskal/appletKruskal.htm
48.
49.
50. Ejercicio Dado un Grafo Conexo Ponderado No Dirigido G = (V, A, p), encontrar un Árbol de Recubrimiento de G, tal que la suma de los pesos de sus |V| − 1 aristas sea mínimo. Desarrollo Solución tomando “e” como Punto de parida