Upload
jacobo-valles
View
7
Download
2
Embed Size (px)
Citation preview
Oscar Bedoya.
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