Вы находитесь на странице: 1из 5

7 Laboratorio de Matem aticas : Teor a de Grafos

1.2 Moverse por un grafo. Conexi on

1.2.2

Trayectorias y matrices

La matriz M , de adyacencia de un (di)grafo, indica las aristas(arcos) entre v ertices, que son tambi en las trayectorias de longitud 1 posibles entre v ertices. As , la matriz M 2 = M M indica, en cada posici on, el n umero de trayectorias de longitud 2 entre los v ertices correspondientes, es decir, si en la posici on (i, j ) hay un 3, tenemos tres trayectorias distintas desde el v ertice vi al v ertice vj . 0 1 1 1 1 0 1 0 En efecto, si M = es la matriz de un grafo, el elemento (1, 3) de M 2 se obtiene de 1 1 0 1 1 0 1 0 operar la la 1 de M con la columna 3 de M . Entonces (ponemos con cada elemento de la matriz su signicado como arista),

v1 v2

v1 v3

v1 v4

1 1 0 1

v1 v3 v2 v3 v4 v3

= 0 1+ 1 1 +1 0+ 1 1 = 2 v1 v2 v3 v1 v4 v3

luego hay dos trayectorias de longitud 2 desde el v ertice v1 al v ertice v3 : v1 v2 v3 y v1 v4 v3 . Igualmente, el elemento (2, 2) de M 2 ser a:

v2 v1

v2 v3

1 0 1 0

v1 v2

= 1 1 +0 0+ 1 1 +0 0 = 2 v2 v1 v2 v2 v3 v2 v3 v2

y hay dos trayectorias de longitud 2 desde el v ertice v2 al v ertice v2 : v2 v1 v2 y v2 v3 v2 . Los valores de M 2 cuentan trayectorias, no caminos (aunque algunas lo sean). En el primer caso, las trayectorias son caminos, pero en el otro no son caminos (ni colas) pues se recorre la misma arista. De la misma forma, en M 3 se tiene el n umero de trayectorias de longitud 3 entre cada par de v ertices; 4 en M se tiene el n umero de trayectorias de longitud 4 entre cada par de v ertices, etc. Como las potencias proporcionan solo el n umero de trayectorias entre los v ertices, no son muy u tiles a la hora de buscar un camino concreto entre v ertices. Sin embargo, s nos informan sobre los v ertices conectados a otros v ertices y, en particular, en los grafos dirigidos nos indican si el grafo es o no ac clico.

1.2.3

Algoritmos de conexi on de un grafo

Usando las potencias de la matriz de adyacencia de un grafo no dirigido, puede estudiarse la conexi on de manera ecaz, pero poco eciente desde el punto de vista del c omputo operacional: basta con comprobar si en M junto con M 2 junto con M 3 junto con . . . , todos los v ertices est an conectados entre s . Yendo a la denici on de conexi on (existencia de caminos entre cada par de v ertices) y construyendo nuevos caminos a partir de los ya existentes se obtienen mejores algoritmos para probarlo. El m as sencillo, y que sirve como base a otros interesantes algoritmos es el algoritmo de Warsall. 1.2.3.1 El algoritmo de Warsall

Este algoritmo recrea la construcci on de trayectorias estre v ertices de la manera siguiente: Los v ertices vi y vj estan conectados si hay un camino entre ellos o, si para alg un v ertice vk hay un camino de vi a vk y tambi en un camino de vk a vj La estrategia que sigue el algortimo es de comprobaciones exhaustivas y lo hace en sentido contrario al sugerido por la frase anterior: no comprueba si para cada par de v ertices vi , vj no conectados hay alg un otro vk que hace de enlace, sino al rev es, comprueba si cada v ertice vk sirve de enlace entre cada par de v ertices vi y vj .
I.T.I. en Electricidad

Prof: Jos e Antonio Abia Vian

8 Laboratorio de Matem aticas : Teor a de Grafos

1.2 Moverse por un grafo. Conexi on

As , Warsall produce una sucesi on de matrices booleanas (de ceros y unos) W1 , W2 , . . . , Wn (una por cada v ertice vk que comprueba si sirve de enlace) que indican si dos v ertices dados est an o no conectados. Si el grafo es conexo la u ltima matriz constar a toda de unos (si hay al menos dos v ertices). Usaremos la matriz de adyacencia M como matriz de conexi on inicial ( W0 = M , s olo est an conectados los v ertices extremos de las aristas). En el paso 1, se contruye una nueva matriz W1 que indicar a los v ertices conectados, bien porque lo estaban o bien porque se han conectado a trav es de v1 . En el paso 2, se contruye una nueva matriz W1 que indicar a los v ertices conectados, bien porque lo estaban en W1 o bien porque se han conectado a trav es de v2 . Etc. El algoritmo, en seudoc odigo y con las operaciones l ogicas o( | ) e y( & ), puede plantearse as : Algoritmo 1.- (de Warsall) inicio: W0 = M (matriz de adyacencia); n =n o de vertices para k = 1 hasta n para j = 1 hasta n para i = 1 hasta n Wk (i, j) = Wk1 (i, j) | Wk1 (i, k) & Wk1 (k, j) fin fin fin Y el grafo ser a conexo si la matriz nal, Wn , es toda de unos. Matlab es un potent simo manejador de matrices, por lo que es mejor y m as corto hacer algoritmos para las matrices completas que para los elementos individualmente (si se puede claro). As , el algoritmo de Warsall en Matlab se reduce a: Algoritmo 2.- (de Warsall) W = M; n = size(W, 1); v = ones(1, n); for k=1 : n W = W | W( : , k v) & W(k v, : ) end Como los operadores l ogicos sobre matrices se aplican elemento a elemento y, en cada paso k, el operador y( & ) siempre se usa con un elemento de la columna k y uno de la la k , podemos describir las n n operaciones como una u nica operaci on entre dos matrices, la primera formada por copias de la columna k y la segunda por copias de la la k. 2.2 Sea D1 el digrafo que se forma al eliminar del digrafo D del ejercicio 2.1 de la p ag. 6, los v ertices v1 y v7 y el arco (v5 , v3 ) . (a) Hallar su matriz de adyacencia M1 . Obtener la matriz de adyacencia, M1, a partir de la matriz M usada en el ejercicio 2.1. (b) Renombrar los v ertices restantes con x1 , x2 , etc., para que se adec uen a los datos de M1 . Calcular M12 , M13 , M14 y M15 (producto de matrices M*M) Observa las matrices potencia obtenidas, hay alg un vertice desde el que se pueda llegar a todos 6, M7 . . . ? los dem as?, se puede ir desde cada v ertice a cualquier otro? Son necesarias M1 1 (c) Observa ahora los elementos de las diagonales de esas matrices. En el ordenador, puede usarse la orden diag(M)=matriz columna con la diagonal de M Qu e signican los valores obtenidos? Que podemos decir sobre los ciclos y la aciclicidad de D ? Por qu e paramos en la potencia 5? (d) El digrafo es conexo? Construye su grafo no dirigido subyacente. Construye la matriz N1 del grafo subyacente y comprueba con el algoritmo de Warsall dado on a usar) si hay o no conexi on (A Warsall es el nombre de la funci
I.T.I. en Electricidad

Prof: Jos e Antonio Abia Vian

9 Laboratorio de Matem aticas : Teor a de Grafos

1.3 Caminos de peso m nimo

1.3
1.3.1

Caminos de peso m nimo


Algoritmo de Floyd y grafos pesados

El algoritmo de Warsall trabaja con operaciones l ogicas para determinar la conexi on o no entre los v ertices, pero cambiando el tipo de elementos y operadores usados se ha adaptado para otras cuestiones. Por ejemplo, puede modicarse ligeramente para encontrar la longitud (en el sentido de n umero de aristas) del camino m as corto entre dos v ertices conectados: si hay un camino entre los v ertices vi y vj y se puede formar otro uniendo dos que pasen por otro v ertice vk , elegimos el m as corto de los dos: Long (vi , vj ) = m n Long (vi , vj ) , Long (vi , vk ) + Long (vk , vj )

Como buscamos minimizar valores, debemos sustituir la matriz de adyacencia M , por otra matriz L (de longitud de alcance) que almacena las longitudes de los caminos entre los v ertices, de la siguiente manera: los v ertices conectados por una arista (arco) est an a alcance 1, los v ertices no conectados directamente est an a alcance y un v ertice est a a alcance 0 de s mismo (0 en la diagonal, aunque esto es opcional). As pues, se trata de ir minorando los valores de la matriz L realizando comprobaciones an alogas a las de Warsall, pero ahora, en cada paso se toman como nuevos valores de la matriz de alcance: L(i, j ) = m n L(i, j ) , L(i, k ) + L(k, j )

es decir, tomamos como nueva longitud la del camino m as corto entre el que tenemos (o no tenemos) y el que se pueda formar uniendo dos caminos existentes. Esta variante, se denomina algoritmo de Floyd. La matriz nal del algoritmo contendr a, en cada posici on, la logitud del camino m as corto entre ese par de v ertices (con 0 en la diagonal, si partimos con esta condici on) y el valor (inf en Matlab) si los dos v ertices no pueden conectarse. La implementaci on en Matlab de este algoritmo es similar a la del algoritmo de Warsall: Algoritmo 3.- (de Floyd) L; n = size(L, 1); v = ones(1, n); for k=1 : n L = min L , L( : , k v) + L(k v, : ) end siendo L la matriz de alcance del grafo. El algoritmo de Floyd, nos es u til para: obtener la longitud del camino m as corto entre cada par de v ertices conectados (la longitud, pero no el camino), por lo que, si el grafo es no dirigido, para chequear la conexi on del grafo. Sobre un digrafo, el algoritmo no puede asegurar si es conexo o no (ver el ejemplo que aparece en la nota siguiente) salvo en algunos casos particulares. Nota: En un grafo no dirigido la conexi on asegura que se puede ir desde cualquier v ertice a cualquier otro, pero no en los digrafos, donde puede haber v ertices no conectados por caminos dirigidos aunque sea conexo (que no haya camino de vi a vj ni camino de vj a vi ). En el digrafo conexo de la derecha, no hay camino dirigido de v1 a v4 ni de v4 a v1 vr v2 v3 v4 v5 1 -r  r -r  r (de hecho, desde v1 s olo se puede ir a v2 y no se puede llegar a v1 desde ninguno de los otros v ertices). El algoritmo de Floyd mejora su utilidad cuando se aplica sobre los grafos pesados (que se introducen en el apartado siguiente) que diversican las aplicaciones.
Prof: Jos e Antonio Abia Vian

I.T.I. en Electricidad

10 Laboratorio de Matem aticas : Teor a de Grafos

1.3 Caminos de peso m nimo

1.3.1.1

Ejercicios

3.3 Considerar el digrafo D del Ejercicio 1.2 dado por su matriz de adyacencia M . (a) Comprobar que desde cada plaza se puede llegar a cualquier otra (b) Si cerramos la plaza B al tr aco, desde cada plaza restante se puede llegar a cualquier otra? (c) Proponer algunas soluciones al problema de circulaci on, cambiando y/o a nadiendo direcciones, procurando hacer pocas variaciones. Introduzcamos M, la matriz de adyacencia del digrafo D . [i] Construir una matriz de alcance L [ii] Usar el algoritmo de Floyd (A Floyd se denomina la funci on a usar) para comprobar que todas las plazas est an conectadas con las dem as, y las longitudes m nimas de los caminos entre ellas. [iii] Obtener la matriz resultante de cerrar la plaza B al tr aco (ver ejercicio 1.2 de p ag. 4). Usar el algoritmo de Floyd para comprobar que hay plazas no conectadas con otras. [iv] Usar el algoritmo de Floyd para cada una de las soluciones propuestas, y obtener las longitudes m nimas de los recorridos alternativos. C ual de ellas porporciona recorridos de menor longitud? C ual de ellas porporciona mejores recorridos en relaci on con los recorridos existentes antes de las obras? 3.4 La cadena Moto-Churro quiere establecer una tienda para dar servicio a las plazas de la zona representada por el digrafo del ejercicio anterior. (a) En qu e plaza debe ponerla si quiere que el gasto de gasolina sea lo menor posible? (b) En qu e plaza debe ponerla si quiere que el tiempo de entrega en cualquier plaza sea lo menor posible? (c) En qu e plaza debe ponerla si quiere que el tiempo que tarda en regresar a la tienda cualquier repartidor sea lo menor posible? 1.3.1.2 Grafos pesados

Cuando un grafo modela una situaci on, en general, las conexiones (aristas y arcos) tienen adem as unas caracter sticas propias. Pensemos en el ejemplo de una red viaria o una red el ectrica, no s olo se trata de dar el servicio (conexi on), sino que tambi en es interesante conocer las longitudes de las l neas a establecer (cantidad de material), las dicultades para su trazado (coste en tiempo o monetario), etc. En el grafo, estos valores se reejan asignando a cada arista un valor que represente la magnitud que queremos considerar (un peso a cada arista). Consideremos el grafo de la derecha, donde a cada arista le hemos asignado una distancia. Si buscamos ahora el camino m as corto entre el v ertice v1 v2 v4 v6 7 2 s s s y v3 no consideraremos que es el que tiene menos aristas, @ @ sino aquel que recorre en total menor distancia: C1 = v1 v3 @1 @8 3 s v 3 5 4 1 @ @ recorre s olo una arista pero una distancia de 9, C2 = v1 v2 v3 @ @ @ tiene dos aristas y una distancia total de 6 y C3 = v1 v2 v5 v3 7 9 @ @ @ 9 @s @s @ s tiene tres aristas sin embargo la distancia recorrida es s olo v3 1 v5 v7 de 5. Claramente, este u ltimo camino es m as corto. Denici on 19.- Llamaremos peso de un grafo (o digrafo) simple G = (V, A) a una funci on real positiva sobre el conjunto de aristas del grafo, es decir, a una funci on : A I R+ . El peso de cada arista (arco) lo denotaremos por ij y llamaremos peso de una trayectoria a la suma de los pesos de las aristas (arcos) que la componen.

Prof: Jos e Antonio Abia Vian

I.T.I. en Electricidad

11 Laboratorio de Matem aticas : Teor a de Grafos

1.3 Caminos de peso m nimo

En un grafo pesado, se llama matriz de pesos del grafo a la matriz = (ij )nn , donde pondremos ij = si no hay arista (arco) desde el v ertice vi al v ertice vj y ii = 0 , ceros en la diagonal. (En ocasiones puede resultar u til poner tambi en en la diagonal el valor y, de hecho, algunos autores as lo hacen.) Nota: Con la introducci on del peso, la b usqueda del camino m as corto y la matriz de alcance vistas en la secci on anterior son un caso particular: cuando el peso de cada arista es 1. Uniquemos criterios y notaci on: Denici on 20.- Llamaremos peso m nimo de vi a vj al m nimo de los pesos de los caminos de vi a vj , , y camino (de peso) m lo denotaremos por ij nimo de vi a vj a cualquier camino Cij entre ellos que ). tenga peso m nimo (es decir, (Cij ) = ij ) La matriz de pesos m nimos es la matriz = (ij nn con ij = si no hay camino de vi a vj . El siguiente resultado, conocido como el Principio de minimalidad de Bellman, y que b asicamente dice cualquier camino contenido en un camino m nimo es tambi en m nimo, garantiza que los caminos obtenidos respetando este principio son caminos m nimos. Proposici on 21.- Sea G un grafo pesado. Si x1 x2 xp1 xp es un camino m nimo, para cada i con = w + w . 1 < i < p , los caminos x1 x2 xi y xi xp1 xp son caminos m nimos y w1 p 1i ip Demostraci on: Es claro el resultado, pues si el camino C1i = x1 x2 xi1 xi no es un camino m nimo, existe otro C1i = x1 x2 xi1 xi , con w(C1i ) < w(C1i ) , con menor peso. Luego el camino x1 x2 xi1 xi xp , de sustituir C1i por C1i , tiene menor peso que x1 x2 xi1 xi xp , en contra de la hip otesis. 1.3.1.3 Pesos m nimos con el algoritmo de Floyd

Dos de los algoritmos m as usuales para la b usqueda de caminos de peso m nimo son el anteriormente comentado de Floyd y, sobre todo, el algoritmo de Dijkstra; si bien, su planteamiento y resultados dieren bastante. Mientras Floyd proporciona los pesos m nimos de todos los caminos posibles, el de Dijkstra proporciona u nicamente los caminos desde un v ertice dado. Como ya anticipabamos, el algoritmo de Floyd multiplica su utilidad si lo aplicamos a grafos pesados. Usando el algoritmo de Floyd con una matriz de pesos, se obtienen los pesos m nimos entre todos los v ertices, es decir, la matriz resultante contiene en cada posici on el peso m nimo entre los v ertices correspondientes (el mismo resultado que si usaramos Dijkstra con cada uno de los v ertices). Pero es bastante menos eciente que Dijkstra, por lo que no es conveniente usarlo en su lugar. A Floyd le introducimos la matriz de pesos y nos devuelve la de pesos m nimos, pero funciona un poco a modo de caja negra, pues no es f acil obtener otra informaci on adicional del proceso. En particular, resulta muy costoso construir a partir de el los caminos m nimos entre los v ertices. Est a indicado cuando se trata de encontrar los pesos m nimos entre todos los v ertices del grafo. Ejemplo 22 El grafo de la gura modela los costos del env o de mensajes entre las estaciones de una red. Si deseo enviar un mensaje a cada una de las otras estaciones, desde cu al debo hacerlo para que me cueste menos? Aplicamos el algoritmo de Floyd para hallar la matriz de peso m nimo del grafo: v6 0 7 2 2 0 3 4 2 4 2 s HH 7 0 4 4 1 1 3 0 3 4 1 1 2 2 1 HH 4 0 2 4 3 0 6 4 2 H 7 4 H s v3 s v1 s = = 2 4 0 2 4 6 0 5 4 @ v@ 2 @ 2@ 4 1 1 0 4 1 4 5 0 2 @s @s 2 1 2 0 2 1 2 4 2 0 v4 v5 y, la respuesta a la pregunta inicial es la respuesta a: desde cu al de los v ertices el costo del envi o a los otros v ertices es menor? Ese debe ser el elegido ( v6 no? por qu e?).
I.T.I. en Electricidad

Prof: Jos e Antonio Abia Vian

Вам также может понравиться