Oscar Bedoya. oscarbed@eisc.univalle.edu.co oscarbed/Estructuras/ Edificio 331, 2º piso, E.I.S.C....

Preview:

Citation preview

Oscar Bedoya.

oscarbed@eisc.univalle.edu.co

http://eisc.univalle.edu.co/~oscarbed/Estructuras/

Edificio 331, 2º piso, E.I.S.C.

Estructuras de datos y Estructuras de datos y algoritmosalgoritmos

Grafos

Clausura transitiva de un digrafo

La clausura transitiva de un digrafo, es una matriz T que resulta al convertir las entradas de S(M + M1 + M2 + . . . + Mnv-1 ) diferentes de 0 a 1

Grafos

1 2

63

4

5

Grafos

1 2

63

4

5

11 22 33 44 55 66

11 00 55 00 44 44 66

22 00 33 00 33 33 55

33 11 44 00 33 33 44

44 00 33 00 11 22 33

55 00 55 00 33 33 66

66 00 33 00 22 33 33

Matriz de caminos S

Grafos

1 2

63

4

5

11 22 33 44 55 66

11 00 11 00 11 11 11

22 00 11 00 11 11 11

33 11 11 00 11 11 11

44 00 11 00 11 11 11

55 00 11 00 11 11 11

66 00 11 00 11 11 11

Clausura transitiva

Grafos

Cómo encontrar la clausura transitiva de un digrafo

•Algoritmo ingenuo

•Algoritmo de Warshall

Grafos

1

23

4 5

6

7

9

8

Grafos

1

2 3

4 5

67

9

8

11 22 33 44 55 66 77 88 99

11 00 11 00 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 00 00 00 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 00 00 00 00 11 00 11 00

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 00 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 00 00 00 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 00 00 00 00 11 00 11 00

Ubíquese en la columna k=1, y desplácese en ella,

1:k

2:k

hasta encontrar i:k !=0

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 00 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 00 00 00 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 00 00 00 00 11 00 11 00

3:1 !=0

•Como 3:1!= esto indica que existe un camino entre 3 y 1.

•Como existe un camino entre 3 y 1, deberá existir un camino entre 3 y cada uno de los vértices a los que llega 1.

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 00 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 00 00 00 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 00 00 00 00 11 00 11 00

•Modifique los valores de 3, para indicar que existen nuevos caminos

•Camino de 3 a 2, coloque 1 en la posición[3][2]

•Camino de 3 a 4, coloque 1 en la posición [3][4]

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 00 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 11 00 11 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 00 00 00 00 11 00 11 00

•Modifique los valores de 3, para indicar que existen nuevos caminos

•Camino de 3 a 2, coloque 1 en la posición[3][2]

•Camino de 3 a 4, coloque 1 en la posición [3][4]

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 00 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 11 00 11 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 00 00 00 00 11 00 11 00

•Continúe en la búsqueda de valores diferentes de 1 en las posiciones i:k, donde k=1

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 00 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 11 00 11 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 11 00 11 00 11 00 11 00

•Actualice los valores de 9, considerando los nuevos caminos

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 00 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 11 00 11 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 11 00 11 00 11 00 11 00

•Como terminó los elementos en la columna k=1, ahora k=2

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 00 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 11 00 11 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 11 00 11 00 11 00 11 00

•1:2 !=0, actualice los valores para 1

•Si existe un camino entre 1 y 2, existe un camino entre 1 y los vértices a donde se llega desde 2

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 11 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 11 00 11 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 11 00 11 00 11 00 11 00

•1:2 !=0, actualice los valores para 1

•Si existe un camino entre 1 y 2, existe un camino entre 1 y los vértices a donde se llega desde 2

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 11 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 11 00 11 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 11 00 11 00 11 00 11 00

•3:2 !=0, actualice los valores para 3

•Si existe un camino entre 3 y 2, existe un camino entre 3 y los vértices que salen de 2

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 11 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 11 11 11 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 11 00 11 00 11 00 11 00

•3:2 !=0, actualice los valores para 3

•Si existe un camino entre 3 y 2, existe un camino entre 3 y los vértices a donde se llega desde 2

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 11 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 11 11 11 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 11 00 11 00 11 00 11 00

•9:2 !=0, actualice los valores para 9

•Si existe un camino entre 9 y 2, existe un camino entre 9 y los vértices a donde se llega desde 2

Grafos

11 22 33 44 55 66 77 88 99

11 00 11 11 11 00 00 00 00 00

22 00 00 11 11 00 00 00 00 00

33 11 11 11 11 11 00 00 00 00

44 00 00 11 00 11 00 00 00 00

55 00 00 00 00 00 00 00 00 00

66 00 00 00 11 00 00 00 00 00

77 00 00 00 00 11 11 00 00 11

88 00 00 00 00 00 00 11 00 11

99 11 11 11 11 00 11 00 11 00

•9:2 !=0, actualice los valores para 9

•Si existe un camino entre 9 y 2, existe un camino entre 9 y los vértices a donde se llega desde 2

Grafos

1 2

3

4

5

Aplicar el algoritmo de Warshall

Recommended