Grafos_2008-2.pdf

download Grafos_2008-2.pdf

of 4

Transcript of Grafos_2008-2.pdf

  • 1.2 Moverse por un grafo. Conexion

    1.2.1 Trayectorias y matrices

    La matriz M , de adyacencia de un grafo, indica las aristas entre vertices, que son tambien las trayectoriasde longitud 1 posibles entre vertices. As, la matriz M2 = MM indica, en cada posicion, el numero detrayectorias de longitud 2 entre los vertices correspondientes, es decir, si en la posicion (i, j) hay un 3,tenemos tres trayectorias distintas desde el vertice vi al vertice vj .

    En efecto, si M =

    0 1 1 11 0 1 01 1 0 11 0 1 0

    es la matriz de un grafo, el elemento (1, 3) de M2 se obtiene deoperar la fila 1 de M con la columna 3 de M . Entonces (ponemos con cada elemento de la matriz susignificado como arista),

    (06

    1v1v2

    1v1v3

    1v1v4

    )1 v1v31 v2v30 61 v4v3

    = 0 16 + 1 1v1v2v3+1 06 + 1 1v1v4v3 = 2luego hay dos trayectorias de longitud 2 desde el vertice v1 al vertice v3 : v1 v2 v3 y v1 v4 v3 .

    Igualmente, el elemento (2, 2) de M2 sera:

    (1

    v2v106

    1v2v3

    06

    )1 v1v20 61 v3v20 6

    = 1 1v2v1v2+0 06 + 1 1v2v3v2+0 06 = 2y hay dos trayectorias de longitud 2 desde el vertice v2 al vertice v2 : v2 v1 v2 y v2 v3 v2 .

    Los valores de M2 cuentan trayectorias, no caminos. En el primer caso, las trayectorias son caminos,pero en el otro no son caminos (ni colas) pues se recorre la misma arista. De hecho todas las trayectoriascontadas en la diagonal se forman as: se sale del vertice por cada arista y se vuelve por la misma arista.

    De la misma forma, en M3 se tiene el numero de trayectorias de longitud 3 entre cada par de vertices;en M4 se tiene el numero de trayectorias de longitud 4 entre cada par de vertices, etc.

    1.2.2 Algoritmos de conexion de un grafo

    Usando las potencias de la matriz de adyacencia puede estudiarse la conexion de un grafo de maneraeficaz, pero poco eficiente desde el punto de vista del computo operacional. Yendo a la definicion deconexion (existencia de caminos entre cada par de vertices) y construyendo nuevos caminos a partir de losya existentes se obtienen mejores algoritmos para probarlo. El mas sencillo, y que sirve como base a otrosinteresantes algoritmos es el algoritmo de Warsall.

    1.2.2.1 El algoritmo de Warsall

    Este algoritmo recrea la construccion de trayectorias estre vertices de la manera siguiente:Los vertices vi y vj estan conectados si hay un camino entre ellos o, si para algun vertice vk hay un

    camino de vi a vk y 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 vertices vi , vj hay algun otro vk quehace de enlace, sino al reves, comprueba si cada vertice vk es puente entre cada par de vertices vi y vj .

    Warsall produce una sucesion de matrices booleanas W1 , W2 , . . . , Wn (una por cada vertice vk acomprobar) que indican si dos vertices dados estan o no conectados. Si el grafo es conexo la ultima matrizconstara toda de unos (si hay al menos dos vertices).

    Inicialmente, comenzaremos usando la matriz de adyacencia M como matriz de conexion inicial (W0 =M , solo estan conectados los vertices extremos de las aristas). En el paso 1, y para cada vi y vj , se

    Matlab 6.1. 6

  • 1.2 Moverse por un grafo. Conexion

    comprueba si ya estan conectados o si pueden conectarse a traves de v1 (es decir, si vi esta conectado conv1 y tambien v1 esta conectado con vj ). Obtendremos as una nueva matriz W1 que indicara los verticesconectados, bien porque lo estaban o bien porque se han conectado a traves de v1 .

    Y se repite lo mismo para cada uno de los vertices restantes... El algoritmo, puede plantearse as:

    Algoritmo 1.- (de Warsall)

    inicio: n ; M ; W0 = Mpara k = 1 hasta n

    para j = 1 hasta npara i = 1 hasta n

    Wk(i, j) = Wk1(i, j) |(Wk1(i, k)& Wk1(k, j)

    )fin

    finfin

    Y el grafo sera conexo si la matriz final, Wn , es toda de unos.

    Observacion 15.- Matlab es un potentsimo manejador de matrices, por lo que es mejor y mas cortohacer algoritmos para las matrices completas que para los elementos individualmente (si se puede claro).As, el algoritmo de Warsall en Matlab se reduce a:

    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 logicos sobre matrices se aplican elemento a elemento, si en un paso k, escribimosen las posiciones correspondientes de una matriz todas las comparaciones y(&) que se hacen, vemosque puede separarse en una comparacion de dos matrices, la primera contiene copias de la columna k yla segunda copias de la fila k.

    Es evidente que si la matriz toda de unos se consigue en un paso intermedio no es necesario completarel algoritmo, por lo que puede incluirse condiciones de parada que reduzcan el tiempo de computo. (Dehecho, es suficiente con que en una fila o columna todos los elementos que no sean de la diagonal sean 1para asegurar la conexion.)

    2.2 Sea G1 el grafo que se forma al eliminar del grafo G del ejercicio 2.1 de la pag. 5, los vertices v1y v7 y la arista {v2, v4} .(a) Hallar su matriz de adyacencia N .

    (b) Contruir las matrices N , N +N2 , N +N2+N3 , etc. Que significan estas matrices? Comopueden usarse para probar la conexion de un grafo?

    (c) Aplicar el algoritmo de Warsall dado en Algoritmo 1 de la pagina 7 para comprobar que esconexo. En que valor de k se obtiene ya la matriz toda de unos?

    (d) Si la condicion de parada es que todos los elementos de una fila o columna son uno (que nosean de la diagonal principal), para que valores de k y j se consigue?

    (e) Aplicar el algoritmo de Warsall dado en Observacion 15 para comprobar que es conexo.

    Obtener la matriz de adyacencia, N, a partir de la matriz M usada en el ejercicio 2.1.

    [i] Implementar en Matlab el algoritmo de Warsall de Observacion 15. El grafo es conexo?

    [ii] Anadir una condicion de parada cuando se consiga una matriz toda de unos.

    [iii] Modificarlo para que la condicion de parada sea una fila (o columna) toda de unos.

    Matlab 6.1. 7

  • 1.2 Moverse por un grafo. Conexion

    1.2.2.2 Algoritmo de Floyd

    El algoritmo de Warsall trabaja con operaciones logicas para determinar la conexion o no entre los vertices,pero cambiando el tipo de elementos y operadores usados se ha adaptado para otras cuestiones. Porejemplo, puede modificarse ligeramente para encontrar la longitud (en el sentido de numero de aristas) delcamino mas corto entre dos vertices conectados: si hay un camino entre los vertices vi y vj y se puedeformar otro uniendo dos que pasen por algun vertice vk , elegimos el mas corto de los dos.

    Para ello hay que sustituir la matriz de adyacencia M , por otra matriz L (de longitud de alcance)que almacena las longitudes de los caminos entre los vertices, de la siguiente manera:

    un vertice esta a alcance 0 de si mismo (0 en la diagonal), los vertices conectados por una arista estan a alcance 1 y los vertices no conectados directamente estan a alcance .

    Se trata de ir minorando los valores de la matriz realizando las mismas comprobaciones que hace Warsall,con un pequeno cambio: en cada paso se toma como nuevo valor de la matriz de alcance

    Lk(i, j) = mn(Lk1(i, j) , Lk1(i, k) + Lk1(k, j)

    )(es decir, tomamos como longitud la del camino mas corto entre el que tenemos y el que se pueda formaruniendo dos caminos existentes). Esta variante, se denomina algoritmo de Floyd.

    La matriz final del algoritmo contendra en cada posicion la logitud del camino mas corto entre cadapar de vertices (y cero en la diagonal). Si dos vertices no pueden conectarse figurara el valor (inf enMatlab), por lo que el grafo sera conexo si no existe ningun valor en la matriz final.

    [iv] Mediante manipulacion de las matrices, construir a partir de N su matriz de alcance L.

    [v] Modificar el algoritmo de Warsall para implementar el algoritmo de Floyd.

    1.2.3 Trayectorias y conexion en un digrafo

    Para los grafos dirigidos, las trayectorias, colas, caminos, circuitos y ciclos, se definen de forma analoga. Ladiferencia estriba en que los arcos solo se pueden recorrer en un sentido, por lo que las trayectorias (colas,ciclos, etc.) son siempre trayectorias dirigidas que se recorren en el sentido que indica la flecha.

    Definicion 16.- Sea D = (V,A) un digrafo. Llamaremos trayectoria (dirigida) en D a una sucesion devertices, x1 x2 xp1 xp tales que (xi, xi+1) A , para cada i = 1, 2, . . . , p 1 .

    Diremos que la trayectoria conecta o une el vertice x1 con el vertice xp , y del numero de arcosrecorridos, p 1 , diremos que es la longitud de la trayectoria. Si x1 = xp se dice que la trayectoria escerrada.

    Llamaremos cola a una trayectoria con todos los arcos distintos y circuito a una cola cerrada.Llamaremos camino a una trayectoria sin vertices repetidos y ciclo a un camino cerrado.

    Todas las definiciones y resultados vistos en el apartado anterior (aciclicidad, matrices y su significado,etc.) tienen su analogo para digrafos sin mas que tener en cuenta que todos los elementos han de serdirigidos; todas excepto una: la definicion de conexo.

    Definicion 17.- Sea D un digrafo. Se llama grafo no dirigido subyacente a D , al grafo que se obtienesustituyendo cada arco (x, y) por la arista {x, y} (si aparecen (x, y) e (y, x) se sustituyen ambos por unasola arista).

    Definicion 18.- Un digrafo es conexo si su grafo subyacente es conexo.

    Matlab 6.1. 8

  • 1.2 Moverse por un grafo. Conexion

    En general, los resultados validos para grafos o digrafos los son tambien para los otros, salvo aquellosque se basan directamente en la existencia o no existencia de direcciones (como la conexion).

    As, el algoritmo de Floyd para calcular la menor longitud de un camino entre vertices, comentadoantes, funciona perfectamente con digrafos:

    Algoritmo 2.- (de Floyd) inicio: n ; L ; L0 = Lpara k = 1 hasta n

    Lk = min(Lk1 , Lk1( : , k v) + Lk1(k v, : )

    )fin

    Donde L se obtiene a partir de la matriz de adyacencia, poniendo para i 6= j sin arco entre ellosL(i, j) = . Si en la matriz final algunas posiciones mantienen el valor , quiere decir que no puede irsede un vertice al otro (no hay camino entre ellos).

    Nota: En un grafo no dirigido la conexion asegura que se puede ir desde cualquier vertice a cualquier otro,pero en los digrafos conexos puede haber perfectamente vertices no conectados por caminos

    dirigidos (que no haya camino de vi a vj ni camino de vj a vi ). En eldigrafo conexo de la derecha, no hay camino dirigido de v1 a v4 ni de v4a v1 y ocurre lo mismo entre mas vertices.

    r r r r r- - v1 v2 v3 v4 v51.2.4 Ejercicios

    2.3 Considerar el digrafo D del Ejercicio 1.2 dado por su matriz de adyacencia M .

    (a) Si es posible, encontrar en D un camino, una cola que no sea camino y una trayectoria que nosea cola, del vertice B al vertice D .

    (b) Comprobar cual de las trayectorias T1 = BAC E C DF DF y T2 = BAC EDC F DF esvalida y obtener en ella un camino de B a F .

    (c) Es un digrafo conexo?

    (d) Las matrices M2 , M3 , etc. representan lo mismo que en el caso de los grafos no dirigidos,pero referido a trayectorias dirigidas. Si en la diagonal de todas potencias solo hay ceros, eldigrafo es acclico, por que?.

    Introducir la matriz M y las trayectorias como los vectores respectivos T1 y T2.

    [i] Decidir la trayectoria valida usando el metodo construido en el ejercicio 2.1[ii].

    [ii] Como comprobaras si la trayectoria es un camino? Vale el metodo usado en los no dirigidos?

    [iii] Comprobar si es una cola, un ciclo o un circuito, es igual que en el caso no dirigido?

    [iv] Construir A, la matriz del grafo no dirigido subyacente a D , y comprobar que el digrafo esconexo usando alguno de los algoritmos de Warsall construidos anteriormente.

    2.4 Consideremos M, la matriz de adyacencia del digrafo D del ejercicio anterior.

    [i] Construir una matriz de alcance L, ver ejercicio 2.2[iv].

    [ii] Usar el algoritmo de Floyd para comprobar que todas las plazas estan conectadas con lasdemas.

    [iii] Obtener la matriz resultante de cerrar la plaza B al trafico (ver ejercicio 1.2 de pag. 3). Usarel algoritmo de Floyd para comprobar que hay plazas no conectadas con otras.

    [iv] Resuelve este problema de circulacion, cambiando y/o anadiendo direcciones.

    [v] Usando el algoritmo de Floyd, elegir de entre las soluciones propuestas, aquella que permitalos recorridos de menor longitud.

    Matlab 6.1. 9