Grafos
-
Upload
vicente-garcia-diaz -
Category
Documents
-
view
782 -
download
1
description
Transcript of Grafos
![Page 2: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/2.jpg)
2
Tabla de contenidos
1. Algoritmos de búsqueda del camino mínimo1. Algoritmo Breadth first search2. Algoritmo de Dijkstra3. Algoritmo de Bellman-Ford4. Algoritmo de Floyd-Warshall
2. Algoritmos de búsqueda del árbol de recubrimiento mínimo
1. Algoritmo de Prim3. Trabajo en equipo4. Bibliografía
![Page 3: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/3.jpg)
3
Algoritmos de búsqueda del camino mínimo
![Page 4: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/4.jpg)
4
Algoritmo Breadth-first search
•Objetivo:
•Ejemplo de uso:
Encontrar el camino mínimo desde un nodo inicial a todos los demás nodos de un grafo sin tener en cuenta los pesos de los nodos
Saber el número de escalas que hay que hacer desde un aeropuerto para llegar a otro
![Page 5: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/5.jpg)
5
método breadth_first_search(grafo, origen)inicializarcrear cola Qagregar origen a cola Qmientras Q no esté vacia:
sacar elemento v de la cola Qmarcar como visitado vpara cada nodo adyacente w a v en el grafo:
si w no ha sido visitado y no está en la cola:actualizar el contador de w (ahora es v+1)actualizar el predecesor de w (ahora es v)insertar w dentro de la cola Q:
Algoritmo Breadth-first search
Pseudocódigo
![Page 6: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/6.jpg)
6
Ejemplo
Algoritmo Breadth-first search
VO V1
V2 V3 V4
V5 V6
![Page 7: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/7.jpg)
7
Proceso
Algoritmo Breadth-first search
VO V1
V2 V3 V4
V5 V6
Nodo inicial
0
Paso 1
V2
COLA DE PROCESO
![Page 8: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/8.jpg)
8
Proceso
Algoritmo Breadth-first search
VO V1
V2 V3 V4
V5 V6
0
Paso 2
V2,1
V2,1
V2
COLA DE PROCESO
V0V5
![Page 9: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/9.jpg)
9
Proceso
Algoritmo Breadth-first search
VO V1
V2 V3 V4
V5 V6
0
Paso 3
V2,1
V2,1
V0,2
V0,2
V2
COLA DE PROCESO
V0V5V1V3
![Page 10: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/10.jpg)
10
Proceso
Algoritmo Breadth-first search
VO V1
V2 V3 V4
V5 V6
0
Paso 4
V2,1
V2,1
V2
COLA DE PROCESO
V0V5V1V3
V0,2
V0,2
![Page 11: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/11.jpg)
11
Proceso
Algoritmo Breadth-first search
VO V1
V2 V3 V4
V5 V6
0
Paso 5
V1,3
V2
COLA DE PROCESO
V0V5V1V3V4
V2,1
V2,1
V0,2
V0,2
![Page 12: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/12.jpg)
12
Proceso
Algoritmo Breadth-first search
VO V1
V2 V3 V4
V5 V6
0
Paso 6
V3,3
V2
COLA DE PROCESO
V0V5V1V3V4 V2V0V5V1V6
V2,1
V2,1
V0,2
V0,2
V1,3
![Page 13: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/13.jpg)
13
Proceso
Algoritmo Breadth-first search
VO V1
V2 V3 V4
V5 V6
0
Paso 7
V2
COLA DE PROCESO
V0V5V1V3V4 V2V0V5V1V6
V2,1
V2,1
V0,2
V0,2
V1,3
V3,3
![Page 14: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/14.jpg)
14
Proceso
Algoritmo Breadth-first search
VO V1
V2 V3 V4
V5 V6
0
Paso 8
V2
COLA DE PROCESO
V0V5V1V3V4 V2V0V5V1V6
V2,1
V2,1
V0,2
V0,2
V1,3
V3,3
![Page 15: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/15.jpg)
15
Ejercicio 1Algoritmo Breadth-first search
• Dada la siguiente organización de objetos, especificar el orden en el que se han recorrido los objetos antes de llegar a encontrar el objeto M desde A
A
B
D
E
F
M
C
G
L
K
H
J
I
![Page 16: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/16.jpg)
16
Algoritmo de Dijkstra
•Objetivo:
•Ejemplo de uso:
Encontrar el camino mínimo desde un nodo inicial a todos los demás nodos de un grafo con pesos positivos
Averiguar la ruta más corta entre dos poblaciones a través de una red de carreteras
![Page 17: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/17.jpg)
17
método dijkstra(grafo, origen)inicializarcrear cola de prioridades Q ordenada de menor a mayor pesoagregar origen a cola Qmientras Q no esté vacia:
sacar elemento v de la cola Qmarcar como visitado vpara cada nodo adyacente w a v en el grafo:
si (peso de w) > (peso de v + peso entre v y w):actualizar el peso de w (disminuye)actualizar el predecesor de w (ahora es v)si w no ha sido visitado:
si w está en la cola Q: actualizar prioridad de w
y si w no está en la cola: insertar w dentro de la cola Q:
Algoritmo de Dijkstra
Pseudocódigo
![Page 18: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/18.jpg)
18
Proceso
Algoritmo de Dijkstra
VO V1
V2 V3 V4
V5 V6
4
2
1 3
2 2
10
84
1
5 6
Paso 1
V0,0
COLA DE PROCESO
Nodo inicial
0
![Page 19: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/19.jpg)
19
Proceso
Algoritmo de Dijkstra
VO V1
V2 V3 V4
V5 V6
4
2
1 3
2 2
10
84
1
5 6
Paso 2
V0,0
COLA DE PROCESO
0V0,2
V0,1
V1,2V3,1
![Page 20: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/20.jpg)
20
Proceso
Algoritmo de Dijkstra
VO V1
V2 V3 V4
V5 V6
4
2
1 3
2 2
10
84
1
5 6
Paso 3
V0,0
COLA DE PROCESO
0
V1,2V3,1
V3,3
V2,3
V3,9
V5,9
V3,5
V6,5
V3,3
V4,3
V0,1
V0,2
![Page 21: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/21.jpg)
21
Proceso
Algoritmo de Dijkstra
VO V1
V2 V3 V4
V5 V6
4
2
1 3
2 2
10
84
1
5 6
Paso 4
V0,0
COLA DE PROCESO
0
V1,2V3,1V2,3V5,9V6,5V4,3
V0,1
V0,2
V3,3
V3,9 V3,5
V3,3
![Page 22: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/22.jpg)
22
Proceso
Algoritmo de Dijkstra
VO V1
V2 V3 V4
V5 V6
4
2
1 3
2 2
10
84
1
5 6
Paso 5
V0,0
COLA DE PROCESO
0
V1,2V3,1V2,3V5,9V6,5V4,3
V0,1
V0,2
V3,3
V3,9 V3,5
V3,3
![Page 23: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/23.jpg)
23
Proceso
Algoritmo de Dijkstra
VO V1
V2 V3 V4
V5 V6
4
2
1 3
2 2
10
84
1
5 6
Paso 6
V0,0
COLA DE PROCESO
0
V1,2V3,1V2,3V5,9V6,5V4,3
V0,1
V0,2
V3,3
V3,5
V3,3
V3,9V2,8
V5,8
![Page 24: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/24.jpg)
24
Proceso
Algoritmo de Dijkstra
VO V1
V2 V3 V4
V5 V6
4
2
1 3
2 2
10
84
1
5 6
Paso 7
V0,0
COLA DE PROCESO
02
V1,2V3,1V2,3V5,8V6,5V4,3
V0,1
V0,2
V3,3V3,3
V3,5V2,8V6,6
V5,6
![Page 25: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/25.jpg)
25
Proceso
Algoritmo de Dijkstra
VO V1
V2 V3 V4
V5 V6
4
2
1 3
2 2
10
84
1
5 6
Paso 8
V0,0
COLA DE PROCESO
0
V1,2V3,1V2,3V5,6V6,5V4,3
8
V0,1
V0,2
V3,3
V6,6 V3,5
V3,3
![Page 26: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/26.jpg)
26
Ejercicio 1Algoritmo de Dijkstra
• Desde la población S hay 18 kilómetros a la población A y 15 Km a la población C
• Desde la población A hay 9 Km a la población B y 6 Km a la población C
• Desde la población C hay 7 Km a la población D• Desde la población B hay 28 Km a la población T y 10 Km a la
población D• Desde la población D hay 36 Km la población T
• Calcula las rutas mínimas desde la población S al resto de poblaciones teniendo en cuenta que todas las carreteras tienen sentido de ida y vuelta
![Page 27: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/27.jpg)
27
Ejercicio 2Algoritmo de Dijkstra
• Dado el siguiente sistema, encontrar el camino mínimo desde A a todos los demás nodos
A
G
D
C
B
F
E H
2
6
4
6
4
1
2
1
110
5
3
3
2
![Page 28: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/28.jpg)
28
Algoritmo de Bellman-Ford
•Objetivo:
•Ejemplo de uso:
Encontrar el camino mínimo desde un nodo inicial a todos los demás nodos de un grafo con pesos positivos y negativos
Protocolos de encaminamiento de información
![Page 29: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/29.jpg)
29
método bellman_ford(grafo, origen)inicializarcrear cola Qagregar origen a cola Qmientras Q no esté vacia:
sacar elemento v de la cola Qsi hay bucle negativo
“bucle negativo”y si no, para cada nodo adyacente w a v en el grafo:
si (peso de w) > (peso de v + peso entre v y w):actualizar el peso de w (disminuye)actualizar el predecesor de w (ahora es v)si w no está en la cola:
insertar w dentro de la cola Q:
Algoritmo de Bellman-Ford
Pseudocódigo
![Page 30: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/30.jpg)
30
Proceso
Algoritmo de Bellman-Ford
VO
V1
V2 V3
V4
3
4
2
2
1
Paso 1
V0
COLA DE PROCESO
Nodo inicial
0
-3
-1
![Page 31: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/31.jpg)
31
Proceso
Algoritmo de Bellman-Ford
VO
V1
V2 V3
V4
-1
3
4
2
2
1
Paso 2
V0
COLA DE PROCESO
Nodo inicial
0
-3
V0,-1
V1
V0,4
V2
![Page 32: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/32.jpg)
32
Proceso
Algoritmo de Bellman-Ford
VO
V1
V2 V3
V4
-1
3
4
2
2
1
Paso 3
V0
COLA DE PROCESO
Nodo inicial
0
-3
V0,-1
V1
V0,4
V2
V1,1
V3
V1,1
V4
V1,2
![Page 33: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/33.jpg)
33
Proceso
Algoritmo de Bellman-Ford
VO
V1
V2 V3
V4
-1
3
4
2
2
1
Paso 4
V0
COLA DE PROCESO
Nodo inicial
0
-3
V0,-1
V1
V1,2
V2
V1,1
V3
V1,1
V4
![Page 34: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/34.jpg)
34
Proceso
Algoritmo de Bellman-Ford
VO
V1
V2 V3
V4
-1
3
4
2
2
1
Paso 5
V0
COLA DE PROCESO
Nodo inicial
0
-3
V0,-1
V1
V1,2
V2
V1,1
V3
V1,1
V4
![Page 35: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/35.jpg)
35
Proceso
Algoritmo de Bellman-Ford
VO
V1
V2 V3
V4
-1
3
4
2
2
1
Paso 6
V0
COLA DE PROCESO
Nodo inicial
0
-3
V0,-1
V1
V1,2
V2
V1,1
V3
V1,1
V4
V4,-2
V3
![Page 36: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/36.jpg)
36
Proceso
Algoritmo de Bellman-Ford
VO
V1
V2 V3
V4
-1
3
4
2
2
1
Paso 7
V0
COLA DE PROCESO
Nodo inicial
0
-3
V0,-1
V1
V1,2
V2
V1,1
V3
V1,1
V4
V4,-2
V3
V3,-1
V2
![Page 37: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/37.jpg)
37
Proceso
Algoritmo de Bellman-Ford
VO
V1
V2 V3
V4
-1
3
4
2
2
1
Paso 8
V0
COLA DE PROCESO
Nodo inicial
0
-3
V0,-1
V1
V1,2
V2
V1,1
V3
V1,1
V4
V4,-2
V3
V3,-1
V2
![Page 38: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/38.jpg)
38
Ejercicio 1Algoritmo de Bellman-Ford
• Dado el siguiente sistema basado en las penalizaciones que tiene un jugador en función de las acciones que realiza en un videojuego, encontrar las secuencias de acciones cuya penalización sea mínima desde el inicio del juego (nodo A)
A
DC
B E6
7
5
-2
7
9
-382
-4
![Page 39: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/39.jpg)
39
Ejercicio 2Algoritmo de Bellman-Ford
• En base a la tabla, calcular el camino mínimo desde V2 al resto de nodos:
V0 V1 V2 V3 V4 V5 V6
V0 0 4 2
V1 0 2
V2 2 0 3
V3 6 0 6 5 8
V4 -10 0 6
V5 0
V6 1 0
![Page 40: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/40.jpg)
40
Algoritmo de Floyd-Warshall
•Objetivo:
•Ejemplo de uso:
Encontrar el camino mínimo entre todos los pares de nodos de un grafo
Averiguar la ruta más corta entre TODAS las poblaciones a través de una red de carreteras
![Page 41: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/41.jpg)
41
método floyd-warshall(grafo)M[i, j] := ∞ i != j∀M[i, j] := p(i, j) (i, j) en el grafo ∀ ∈M[i, i] := 0 i∀
for k := 1 to n dofor i := 1 to n do
for j := 1 to n dosi M[i, j] > M[i, k] + M[k, j]
M[i, j] = M[i, k] + M[k, j]for i := 1 to n do
si M[i, i] < 0 “bucle negativo”
Algoritmo de Floyd-Warshall
Pseudocódigo
![Page 42: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/42.jpg)
42
Proceso
Algoritmo de Floyd-Warshall
V2
V1 V3
V4V5
3 4
8
-4
6
-5
17
2
Matriz de adyacencia W
V1 V2 V3 V4 V5
V1 0 3 8 INF -4
V2 INF 0 INF 1 7
V3 INF 4 0 INF INF
V4 2 INF -5 0 INF
V5 INF INF INF 6 0
Paso 1
0 si i=j Wij = ∞ si los vértices i,j no son adyacentes
El peso de la arista si los vértices i,j si son adyacentes
![Page 43: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/43.jpg)
43
ProcesoAlgoritmo de Floyd-Warshall
Matriz de adyacencia D(0)
V1 V2 V3 V4 V5
V1 0 3 8 INF -4
V2 INF 0 INF 1 7
V3 INF 4 0 INF INF
V4 2 INF -5 0 INF
V5 INF INF INF 6 0
Paso 2
V1 V2 V3 V4 V5
V1 NIL 1 1 NIL 1
V2 NIL NIL NIL 2 2
V3 NIL 3 NIL NIL NIL
V4 4 NIL 4 NIL NIL
V5 NIL NIL NIL 5 NIL
Matriz de predecesores P(0)
NIL si i=j o si Dij = INF
i el resto
Pij
K=0 Wij si k=0
min(D(k-1)ij, D(k-1)ik+ D(k-1)kj) si k > 0 D(k)ij
![Page 44: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/44.jpg)
44
ProcesoAlgoritmo de Floyd-Warshall
Matriz de adyacencia D(0)
V1 V2 V3 V4 V5
V1 0 3 8 INF -4
V2 INF 0 INF 1 7
V3 INF 4 0 INF INF
V4 2 INF -5 0 INF
V5 INF INF INF 6 0
Paso 3
Wij si k=0
min(D(k-1)ij, D(k-1)ik+ D(k-1)kj) si k > 0 D(k)ij
V1 V2 V3 V4 V5
V1 0 3 8 INF -4
V2 INF 0
V3 INF 0
V4 2 0
V5 INF 0
Matriz de adyacencia D(1)
K=1
V1 V2 V3 V4 V5
V1 NIL 1 1 NIL 1
V2 NIL NIL
V3 NIL NIL
V4 4 NIL
V5 NIL NIL
Matriz de predecesores P(1)
![Page 45: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/45.jpg)
45
ProcesoAlgoritmo de Floyd-Warshall
Matriz de adyacencia D(0)
V1 V2 V3 V4 V5
V1 0 3 8 INF -4
V2 INF 0 INF 1 7
V3 INF 4 0 INF INF
V4 2 INF -5 0 INF
V5 INF INF INF 6 0
Paso 4
Wij si k=0
min(D(k-1)ij, D(k-1)ik+ D(k-1)kj) si k > 0 D(k)ij
V1 V2 V3 V4 V5
V1 0 3 8 INF -4
V2 INF 0 INF
V3 INF 0
V4 2 0
V5 INF 0
Matriz de adyacencia D(1)
K=1 Para i = 2, j = 3:
D(k)23 = min(D(k-1)23, D(k-1)21 + D(k-1)13) => D(1)23 = min(D(0)23, D(0)21 + D(0)13) =>D(1)23 = min(D(0)23, D(0)21 + D(0)13) =>D(1)23 = min(INF, INF + 8) = INF
Estamos mirando si hay algún camino para llegar D23 que pase por D21 y por D13 y que haga más corto al camino actual
V1 V2 V3 V4 V5
V1 NIL 1 1 NIL 1
V2 NIL NIL NIL
V3 NIL NIL
V4 4 NIL
V5 NIL NIL
Matriz de predecesores P(1)
![Page 46: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/46.jpg)
46
ProcesoAlgoritmo de Floyd-Warshall
Matriz de adyacencia D(0)
V1 V2 V3 V4 V5
V1 0 3 8 INF -4
V2 INF 0 INF 1 7
V3 INF 4 0 INF INF
V4 2 INF -5 0 INF
V5 INF INF INF 6 0
Paso 5
Wij si k=0
min(D(k-1)ij, D(k-1)ik+ D(k-1)kj) si k > 0 D(k)ij
V1 V2 V3 V4 V5
V1 0 3 8 INF -4
V2 INF 0 INF 1 7
V3 INF 4 0 INF INF
V4 2 5 0
V5 INF 0
Matriz de adyacencia D(1)
K=1
Estamos mirando si hay algún camino para llegar D42 que pase por D41 y por D12 y que haga más corto al camino actual
Para i = 4, j = 2:
D(k)42 = min(D(k-1)42, D(k-1)41 + D(k-1)12) => D(1)42 = min(D(0)42, D(0)41 + D(0)12) =>D(1)42 = min(D(0)42, D(0)41 + D(0)12) =>D(1)42 = min(INF, 2 + 3) = 5
V1 V2 V3 V4 V5
V1 NIL 1 1 NIL 1
V2 NIL NIL NIL 2 2
V3 NIL 3 NIL NIL NIL
V4 4 1 NIL
V5 NIL NIL
Matriz de predecesores P(1)
Cambios
![Page 47: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/47.jpg)
47
ProcesoAlgoritmo de Floyd-Warshall
Matriz de adyacencia D(1)
V1 V2 V3 V4 V5
V1 0 3 8 INF -4
V2 INF 0 INF 1 7
V3 INF 4 0 INF INF
V4 2 5 -5 0 -2
V5 INF INF INF 6 0
Paso 6
V1 V2 V3 V4 V5
V1 NIL 1 1 NIL 1
V2 NIL NIL NIL 2 2
V3 NIL 3 NIL NIL NIL
V4 4 1 4 NIL 1
V5 NIL NIL NIL 5 NIL
Matriz de predecesores P(1)
K=1
![Page 48: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/48.jpg)
48
ProcesoAlgoritmo de Floyd-Warshall
Matriz de adyacencia D(2)
V1 V2 V3 V4 V5
V1 0 3 8 4 -4
V2 INF 0 INF 1 7
V3 INF 4 0 5 11
V4 2 5 -5 0 -2
V5 INF INF INF 6 0
Paso 7
V1 V2 V3 V4 V5
V1 NIL 1 1 2 1
V2 NIL NIL NIL 2 2
V3 NIL 3 NIL 2 2
V4 4 1 4 NIL 1
V5 NIL NIL NIL 5 NIL
Matriz de predecesores P(2)
K=2
![Page 49: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/49.jpg)
49
ProcesoAlgoritmo de Floyd-Warshall
Matriz de adyacencia D(5)
V1 V2 V3 V4 V5
V1 0 1 -3 2 -4
V2 3 0 -4 1 -1
V3 7 4 0 5 3
V4 2 -1 -5 0 -2
V5 8 5 1 6 0
Paso 8
V1 V2 V3 V4 V5
V1 NIL 3 4 5 1
V2 4 NIL 4 2 1
V3 4 3 NIL 2 1
V4 4 3 4 NIL 1
V5 4 3 4 5 NIL
Matriz de predecesores P(5)
V2
V1 V3
V4V5
3 4
8
-4
6
-5
17
2
![Page 50: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/50.jpg)
50
¿Camino y coste desde V3 a V5?Algoritmo de Floyd-Warshall
Matriz de adyacencia D(5)
V1 V2 V3 V4 V5
V1 0 1 -3 2 -4
V2 3 0 -4 1 -1
V3 7 4 0 5 3
V4 2 -1 -5 0 -2
V5 8 5 1 6 0
V1 V2 V3 V4 V5
V1 NIL 3 4 5 1
V2 4 NIL 4 2 1
V3 4 3 NIL 2 1
V4 4 3 4 NIL 1
V5 4 3 4 5 NIL
Matriz de predecesores P(5)
V2
V1 V3
V4V5
3 4
8
-4
6
-5
17
2
![Page 51: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/51.jpg)
51
Ejercicio 1Algoritmo de Floyd-Warshall
• Calcular la distancia mínima entre todos los pares de nodos
V2V1
V5
V4V3
3
4
16
2
2
1
3
![Page 52: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/52.jpg)
52
Ejercicio 2Algoritmo de Floyd-Warshall
• Busca un ejemplo en el que al aplicar Floyd-Warshall aparezca un bucle infinito y aplica el algoritmo para visualizar la matriz de adyacencia y la matriz de predecesores
V2V1
V3V4
1
1
-3
1
1
![Page 53: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/53.jpg)
53
Algoritmos de búsqueda del árbol de recubrimiento mínimo
![Page 54: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/54.jpg)
54
Algoritmo de Prim
•Objetivo:
•Ejemplo de uso:
Encontrar el árbol de recubrimiento mínimo en un grafo conexo, no dirigido
Trazar la mínima cantidad de cable posible para cubrir las necesidades de una nueva urbanización
Un grafo es conexo si cada par de vértices está conectado por un camino
![Page 55: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/55.jpg)
55
método prim(grafo, origen)1- marcar un nodo dentro del grafo, el cual será el nodo de partida
2- seleccionar la arista de menor valor que salga del nodo marcado
3- marcar el nodo al que llega la arista seleccionada en el paso previo
4- repetir los pasos 2 y 3 de tal modo que se vayan obteniendo aristas entre nodos marcados y otros que no lo están
5- el algoritmo termina cuando están todos los nodos marcados
Algoritmo de Prim
Pseudocódigo
![Page 56: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/56.jpg)
56
Proceso
Algoritmo de Prim
VO V1
V3 V4
V2
59
87
Paso 1
Nodo inicial
7
V5
V6
5
15
6 8
11
9
![Page 57: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/57.jpg)
57
Proceso
Algoritmo de Prim
VO V1
V3 V4
V2
59
87
Paso 2
7
V5
V6
5
15
6 8
11
9
Árbol Opciones Grafo
{V3} {V3, V0} = 5{V3, V1} = 9{V3, V4} = 15{V3, V5} = 6
{V0, V1, V2, V4, V5, V6}
![Page 58: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/58.jpg)
58
Proceso
Algoritmo de Prim
VO V1
V3 V4
V2
59
87
Paso 3
7
V5
V6
5
15
6 8
11
9
Árbol Opciones Grafo
{V0, V3} {V3, V1} = 9{V3, V4} = 15{V3, V5} = 6{V0, V1} = 7
{V1, V2, V4, V5, V6}
![Page 59: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/59.jpg)
59
Proceso
Algoritmo de Prim
VO V1
V3 V4
V2
59
87
Paso 4
7
V5
V6
5
15
6 8
11
9
Árbol Opciones Grafo
{V0, V3, V5} {V3, V1} = 9{V3, V4} = 15{V0, V1} = 7 {V5, V4} = 8{V5, V6} = 11
{V1, V2, V4, V6}
![Page 60: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/60.jpg)
60
Proceso
Algoritmo de Prim
VO V1
V3 V4
V2
59
87
Paso 5
7
V5
V6
5
15
6 8
11
9
Árbol Opciones Grafo
{V0, V1, V3, V5}
{V3, V1} = C{V3, V4} = 15{V5, V4} = 8{V5, V6} = 11{V1, V2} = 8{V1, V4} = 7
{V2, V4, V6}
![Page 61: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/61.jpg)
61
Proceso
Algoritmo de Prim
VO V1
V3 V4
V2
59
87
Paso 6
7
V5
V6
5
15
6 8
11
9
Árbol Opciones Grafo
{V0, V1, V3, V4, V5}
{V3, V1} = C{V3, V4} = C{V5, V4} = C{V5, V6} = 11{V1, V2} = 8{V4, V2} = 5{V4, V6} = 9
{V2, V6}
![Page 62: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/62.jpg)
62
Proceso
Algoritmo de Prim
VO V1
V3 V4
V2
59
87
Paso 7
7
V5
V6
5
15
6 8
11
9
Árbol Opciones Grafo
{V0, V1, V2, V3, V4, V5}
{V3, V1} = C{V3, V4} = C{V5, V4} = C{V5, V6} = 11{V1, V2} = C{V4, V6} = 9
{V6}
![Page 63: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/63.jpg)
63
Proceso
Algoritmo de Prim
VO V1
V3 V4
V2
59
87
Paso 8
7
V5
V6
5
15
6 8
11
9
Árbol Opciones Grafo
{V0, V1, V2, V3, V4, V5, V6}
{V3, V1} = C{V3, V4} = C{V5, V4} = C{V5, V6} = C{V1, V2} = C
{}
![Page 64: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/64.jpg)
64
•Realizar trabajos en grupo para presentarlos y defenderlos en clase
•El trabajo de grafos puede consistir en:▫Escoger un algoritmo y aplicarlo en un caso real▫Comparar dos o más algoritmos
•Se entregará en formato Power Point en el campus virtual
Trabajo en equipo
![Page 65: Grafos](https://reader038.fdocuments.net/reader038/viewer/2022102902/557b5645d8b42a8b078b4992/html5/thumbnails/65.jpg)
65
Bibliografía
• WEISS, Mark Allen; (2000) Data Estructures & Problem Solving Using Java. Addison Wesley. ISBN 03-2154-140-5.
• JAIME SISA, Alberto; (2002) Estructuras de Datos y Algoritmos con énfasis en programación orientada a objetos. Pearson Educación. ISBN 958-699-044-3.
• JOYANES AGUILAR, LUIS (2007) Estructuras de Datos en Java. McGraw Hill. ISBN: 9788448156312.
• STANDISH, Thomas A (1998). Data structures in Java. Addison Wesley ISBN 0-201-30564-X.
• WEISS, Mark Allen; (2000) Estructuras de Datos en Java. Addison Wesley. ISBN 84-7829-035-4.
• WIRTH, Niklaus (1992). Algoritmos + Estructuras de Datos = Programas. Prentice-Hall. ISBN: 84-219-0172-9.