Grafos

65
Grafos Vicente García Díaz – [email protected] Universidad de Oviedo, 2011 Estructuras de Datos

description

Estructuras de datos: Grafos - Breadth first search, Dijkstra, Bellman-Ford, Floyd-Warshall, Prim

Transcript of Grafos

Page 1: Grafos

Grafos

Vicente García Díaz – [email protected] Universidad de Oviedo, 2011

Estructuras de Datos

Page 2: Grafos

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

3

Algoritmos de búsqueda del camino mínimo

Page 4: Grafos

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

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

6

Ejemplo

Algoritmo Breadth-first search

VO V1

V2 V3 V4

V5 V6

Page 7: Grafos

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

53

Algoritmos de búsqueda del árbol de recubrimiento mínimo

Page 54: Grafos

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

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

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

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

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

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

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

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

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

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

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

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.