Cap´ıtulo 2
Teor´ıa de Grafos
2.1 Introducci´ on: grafos y digrafos
En t´ erminos generales, un grafo consiste en un conjunto de puntos, que llamaremos v´ ertices, y l´ıneas que unen los v´ ertices, que denominaremos aristas.
Los grafos se est´ an convirtiendo en herramientas poderosas de m´ ultiples disciplinas: ingenier´ıa electrica y civil, redes de comunicaci´ on, computaci´ on, economia, sociolog´ıa, etc. Tanto por su simpli- cidad como modelo de muy variadas situaciones, como secillez para dar soluci´ on a los problemas, en muchos casos en forma de algoritmos computables en ordenador.
Aparecen en diferentes campos bajo denominaciones distintas: “redes” en ingenier´ıa electrica,
“estructuras moleculares” en qu´ımica, “mapas de carreteras”, “sociogramas”, “redes de telecomuni- caciones”, etc. El modelado es simple tomando los objetos (lugares, aparatos, personas, . . . ) como v´ ertices y las conexiones (cables, relaciones, tratos, . . . ) como aristas.
Ejemplo 1.- En la ciudad de K¨ onigsberg, existen siete puen- tes que unen las riberas y dos islas formadas por el r´ıo Pregel, de la forma que indica el dibujo. ¿Hay alguna forma de re- correr los siete puentes y volver al punto de partida, sin cruzar dos veces por el mismo puente?
s
s s
s
%
$
El grafo que aparece sobre el dibujo modela esa situaci´ on: cuatro puntos, que representan las partes de tierra firme y las l´ıneas que los unen, representando los puentes. El problema se reduce a saber si pueden recorrerse todas las l´ıneas sin repetir ninguna y acabar en el mismo punto.
Cuando se plante´ o esa pregunta a Euler ingeni´ o la teor´ıa de grafos y prob´ o los primeros resultados antes de dar su respuesta: no.
Definici´ on 2.- Un grafo est´ a formado por un par de conjuntos finitos, y se denota por G = (V, A) , donde V es el conjunto de v´ ertices y A es el conjunto de aristas.
Cada arista de a ∈ A conecta dos v´ ertices de V , que llamaremos extremos de la arista, y escribi- remos a = {x, y} para indicar que a conecta o une los v´ ertices x e y . Diremos entonces que x e y son adyacentes por a .
En un grafo podemos encontrarnos lazos (aristas cuyos extremos coinciden), aristas m´ ultiples (m´ as de una arista conectando los mismos v´ ertices) y v´ ertices aislados (no est´ an conectados a ning´ un otro v´ ertice).
Pero tambi´ en podemos hablar de grafos dirigidos donde cada arista tiene una direcci´ on de recorrido;
modelos para una distribuci´ on de agua por la red de tuberias de la ciudad, la red viaria con calles de sentido ´ unico, etc., son ejemplos de grafos dirigidos.
Definici´ on 3.- Un digrafo o grafo dirigido est´ a formado por un par de conjuntos finitos, y lo denotaremos por D = (V, A) , donde V es el conjunto de v´ ertices y A es el conjunto de arcos o aristas dirigidas entre los v´ ertices.
Cada arco a ∈ A conecta dos v´ ertices de V , que llamaremos respectivamente extremo inicial y
extremo final del arco, y escribiremos a = (x, y) para indicar que a conecta o une el v´ ertice x con el
v´ ertice y . Diremos tambi´ en que x es adyacente a y y que a incide en y .
2.1 Introducci´on: grafos y digrafos
Si los grafos se representan con puntos y l´ıneas que los unen, los digrafos se representan con puntos y flechas entre ellos.
Desgraciadamente no hay una nomenclatura est´ andar para designar los tipos de grafos ni los ele- mentos que aparecen, por lo que es preciso fijarla y tenerlo presente al consultar cualquier bibliograf´ıa sobre el tema.
Los grafos se clasifican por ser dirigidos o no, y por tener aristas/arcos m´ ultiples y lazos. De un grafo sin aristas m´ ultiples ni lazos se suele decir que es simple. Nosotros trabajaremos siempre con grafos simples.
Notaci´ on 4.- Llamaremos grafos a los no dirigidos, sin aristas m´ ultiples ni lazos (grafos no dirigidos simples), y digrafos a los dirigidos, sin arcos m´ ultiples ni lazos dirigidos (grafos dirigidos simples).
Si G = (V, A) es un grafo, con V = {v
1, v
2, . . . , v
n}, escribiremos {v
i, v
j} ´ o {v
j, v
i} para denotar la arista que une ambos v´ ertices.
Si D = (V, A) es un digrafo, denotaremos por (v
i, v
j) el arco que conecta v
icon v
j.
Observaciones 5.- ? En un grafo s´ olo puede haber una arista entre los mismos dos v´ ertices, y en un digrafo puede haber hasta dos arcos pero de sentidos contrarios.
Si un grafo tiene n v´ ertices, en cada v´ ertice pueden incidir a lo m´ as n − 1 aristas. Si es un digrafo, de cada v´ ertice pueden salir a lo m´ as n − 1 arcos y pueden incidir en ´ el n − 1 arcos como mucho.
? Un grafo (no dirigido) puede considerarse tambien como un digrafo, sin m´ as que cambiar cada arista por dos arcos de sentidos contrarios.
En ocasiones, por comodidad y claridad en la repre- sentaci´ on gr´ afica, cuando en un digrafo aparece un arco y el de sentido contrario se sustituyen ambos por una arista.
K
Ut t
t t
-
?
=
t t
t t
-
?
Definici´ on 6.- Un subgrafo (subdigrafo) de un grafo (digrafo), es un grafo (digrafo) formado con v´ ertices y aristas (arcos) del inicial.
Es decir, se obtienen eliminando aristas y/o v´ ertices del inicial (si se elimina un v´ ertice, tambi´ en deben eliminarse todas las aristas incidentes en ´ el).
2.1.1 Matriz de adyacencia de un grafo
Un grafo o un digrafo D = (V, A) puede tambien describirse mediante una tabla o matriz que indique las conexiones:
Definici´ on 7.- Si D tiene n v´ ertices, se llama matriz de adyacencia de D a la matriz cuadrada de orden n , M = (m
ij)
n×n, donde m
ij= 1 si el arco (v
i, v
j) ∈ A , y m
ij= 0 en otro caso.
Si G es no dirigido, su matriz de adyacencia es sim´ etrica (si la arista {v
i, v
j} est´ a en A , tambi´ en est´ a {v
j, v
i}).
Si el grafo o digrafo es simple –es nuestro caso–, la diagonal est´ a formada por ceros (no tiene lazos).
6
Rs s
s s
v1 v2
v3
v4
-
?
M =
v
1v
2v
3v
4v
10 0 1 1 v
21 0 0 0 v
31 0 0 1
v
40 1 0 0
s ss s
v1 v2
v3
v4
@
@
@
@
@@
M =
0 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0
Fig. 2.1. Matrices de adyacencia
2.1 Introducci´on: grafos y digrafos
Si para formar un subgrafo eliminamos s´ olo aristas, su matriz de adyacencia se forma cambiando el 1 por un 0 en las posiciones correspondientes; pero si se elimina un v´ ertice, debemos eliminar la fila y la columna correspondientes a ese v´ ertice en la matriz.
En un grafo el n´ umero de unos en cada fila o columna es el n´ umero de aristas incidentes en el v´ ertice correspondiente a esa fila o columna; mientras que en un digrafo, el n´ umero de unos de cada fila se corresponde con el n´ umero de arcos salientes desde ese v´ ertice y el n´ umero de unos de cada columna indica el numero de arcos que llegan a ese v´ ertice.
Definici´ on 8.- En un grafo no dirigido, el n´ umero de aristas incidentes en un v´ ertice se denomina grado del v´ ertice, gr(v) .
En un digrafo, se denomina ingrado de un v´ ertice al n´ umero de arcos incidentes en un v´ ertice, ing(v) , y exgrado al n´ umero de arcos salientes del v´ ertice, exg(v) .
? Si G es un grafo con n v´ ertices y m aristas, no es dificil comprobar que
Pni=1
gr(v
i) = 2m .
? Si D es un digrafo con n v´ ertices y m arcos, se tiene que
Pni=1
ing(v
i) =
Pni=1
exg(v
i) = m .
2.1.2 Ejercicios
1.1 La zona Z-72 de gesti´ on de carreteras se ocupa de la red viaria entre las 6 ciudades del ´ area.
Hay carretera entre A y C , A y E , B y C , B y D , B y F , C y D , C y E , y entre E y D . (a) Dibujar un grafo para modelar esta situaci´ on.
(b) En una redistribuci´ on zonal, la ciudad B pasa a depender de la nueva zona Z-80, y las carreteras que la un´ıan con las ciudades de la Z-72 pasan a depender de la Interzonal 3.
¿Qu´ e grafo describir´ıa la nueva situaci´ on de la Z-72? ¿Hay alguna peculiaridad rese˜ nable?
(c) Si es C , en lugar de B , quien pasa a depender de la Z-80, ¿qu´ e grafo describir´ıa entonces la nueva situaci´ on de la Z-72? ¿Hay alguna peculiaridad rese˜ nable?
(d) Obtener la matriz M de adyacencia del grafo inicial y las matrices M
1y M
2de los subgrafos construidos en los apartados anteriores. ¿Como se reflejan en las matrices las peculiaridades observadas antes?
Introducir en el ordenador como M la matriz de adyacencia del grafo.
[i] Encuentra los v´ ertices adyacentes a B y los adyacentes a D .
[ii] Construir a partir de ella las matrices M1 y M2 de los subgrafos obtenidos en ese ejercicio.
Hacerlo de dos formas: eligiendo los elementos que las forman y eliminando los que sobran.
[iii] Calcular el grado de cada v´ ertice, calcular el n´ umero de aristas y comprobar que es cierta la igualdad
Pni=1
gr(v
i) = 2m .
1.2 La matriz M representa las direcciones de circulaci´ on de las calles entre 6 plazas A , B , C , D , E y F .
(a) El problema se modela usando un digrafo. ¿Por qu´ e?
(b) ¿Hay calles de doble direcci´ on? ¿cuales?
(c) Si se cierra la plaza B por obras, ¿habr´ıa que cambiar (o a˜ nadir) alguna direcci´ on para poder seguir circulando por las dem´ as calles?
M =
0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0
2.2 Moverse por un grafo. Conexi´on
(d) Si la respuesta al apartado anterior es afirmativa, indicar los cambios necesarios para resol- ver el problema. Estudiar todas las posibilidades de soluci´ on y resaltar las que requieran un menor n´ umero de cambios.
Introducir en el ordenador la matriz de adyacencia del digrafo como una matriz dispersa S.
[i] Construir la matriz M a partir de ella.
[ii] Hallar la traspuesta y comprobar que es distinta de M.
[iii] Implementar una bifurcaci´ on que nos diga si una matriz es o no cuadrada, y otro que nos diga si es sim´ etrica.
[iv] Construir una matriz de tres columnas que por filas tenga el v´ ertice, su ingrado y su exgrado.
[v] Obtener la matriz M1 del digrafo resultante de cerrar la plaza B al tr´ afico.
[vi] Si es el caso, obtener la matriz M2 que resuelva el problema del tr´ afico.
[vii] Construir a partir de M, mediante operaciones con matrices (y no por elementos), la matriz A correspondiente a hacer todas las calles de doble direcci´ on.
[viii] ¿Que operador relacional usar´ıas para comprobar que los arcos que figuran en M siguen estando en A?
2.2 Moverse por un grafo. Conexi´ on
La estructura de un grafo, como puntos conectados, sugiere recorridos o desplazamientos por un grafo.
Es decir, en un grafo G = (V, A) , podemos ir desde un v´ ertice v
1recorriendo aristas hasta llegar a otro v´ ertive v
k. As´ı:
Definici´ on 9.- Sea G = (V, A) un grafo. Llamaremos trayectoria en G a una sucesi´ on de v´ ertices, x
1x
2· · · x
p−1x
ptales que {x
i, x
i+1} ∈ A, para cada i = 1, 2, . . . , p − 1.
Diremos que la trayectoria conecta o une el v´ ertice x
1y el v´ ertice x
p, y del n´ umero de aristas recorridas, p − 1 , diremos que es la longitud de la trayectoria.
Si x
1= x
pse dice que la trayectoria es cerrada.
No hemos puesto ninguna restricci´ on al recorrido de la trayectoria (salvo que use aristas del grafo), podr´ıamos deambular por el grafo recorriendo siempre las mismas aristas y pasando por los mismos v´ ertices. Es usual distinguir otros dos tipos de trayectorias.
Definici´ on 10.- Llamaremos cola a una trayectoria que recorre aristas distintas y camino a una trayectoria sin v´ ertices repetidos (luego tampoco aristas).
De una cola cerrada se dice que es un circuito y de un camino cerrado que es un ciclo.
Nota: Las denominaciones de trayectoria, cola, circuito y camino difieren de unos autores a otros, mientras que la de ciclo es m´ as com´ un; en cualquier caso, y como ya comentamos, conviene comprobar c´ omo denomina cada autor estos elementos.
Los caminos y ciclos son elementos imprescindicles en la teor´ıa de grafos –tambi´ en en la parte que a nosotros nos ocupa–. Las siguientes definiciones establecen unas tipolog´ıas de grafos muy importantes:
Definici´ on 11.- Diremos que un grafo es ac´ ıclico si no tiene ciclos.
Definici´ on 12.- Un grafo es conexo si todo par de v´ ertices est´ a unido por una trayectoria (por un
camino).
2.2 Moverse por un grafo. Conexi´on
Si el grafo no es conexo, est´ a formado por varios trozos que s´ı son conexos. De cada uno de estos trozos se dice que es una componente conexa del grafo. En otras palabras, un grafo es conexo si desde un v´ ertice se puede ir a todos los dem´ as. Si el grafo no es conexo un v´ ertice s´ olo est´ a conectado con los de su misma componente conexa.
Aunque no todas las trayectorias son caminos, el siguiente resultado nos asegura que siempre podremos disponer de uno si es necesario (y explica el par´ entesis en la definici´ on de conexi´ on).
Proposici´ on 13.- Cada trayectoria que une dos v´ ertices distintos contiene un camino que une esos mismos v´ ertices.
Demostraci´ on:
Sea T una trayectoria que une el v´ ertice v
ry el v´ ertice v
s. Si T no es un camino, repite v´ ertices.
Cuando recorremos T , si pasamos por un v´ ertice v
iy este nos aparece m´ as adelante en la trayectoria, nos encontramos en el mismo punto que la primera vez que pasamos por ´ el, luego si eliminamos el “paseo” intermedio seguimos teniendo una trayectoria que une el v´ ertice v
ry el v´ ertice v
s. Si repetimos el proceso hasta que no queden v´ ertices repetidos tenemos el camino postulado.
De igual manera se tiene que:
Proposici´ on 14.- Cada circuito que empieza y acaba en un v´ ertice v
rcontiene un ciclo que empieza y acaba en ese v´ ertice v
r.
(El resultado es por supuesto v´ alido para cada v´ ertice de un circuito.) 2.2.1 Trayectorias y matrices
La matriz M , de adyacencia de un grafo, indica las aristas entre v´ ertices, que son tambi´ en las tra- yectorias 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 v
ial v´ ertice v
j.
En efecto, si M =
0 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0
es la matriz de un grafo, el elemento (1, 3) de M
2se obtiene de
operar la fila 1 de M con la columna 3 de M . Entonces (ponemos con cada elemento de la matriz su significado como arista),
6→
0 1
v1→v2
1
v1→v3
1
v1→v4
1
v1→v31
v2→v30
6→1
v4→v3
= 0 · 1
6→
+ 1 · 1
v1→v2→v3
+ 1 · 0
6→
+ 1 · 1
v1→v4→v3
= 2
luego hay dos trayectorias de longitud 2 desde el v´ ertice v
1al v´ ertice v
3: v
1v
2v
3y v
1v
4v
3. Igualmente, el elemento (2, 2) de M
2ser´ a:
v2→v
1
10
6→
1
v2→v3
0
6→
1
v1→v20
6→1
v3→v20
6→
= 1 · 1
v2→v1→v2
+ 0 · 0
6→
+ 1 · 1
v2→v3→v2
+ 0 · 0
6→
= 2 y hay dos trayectorias de longitud 2 desde el v´ ertice v
2al v´ ertice v
2: v
2v
1v
2y v
2v
3v
2.
Los valores de M
2cuentan 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 trayectorias contadas en la diagonal se forman as´ı: se sale del v´ ertice por cada arista y se vuelve por la misma arista.
De la misma forma, en M
3se tiene el n´ umero de trayectorias de longitud 3 entre cada par de
v´ ertices; en M
4se tiene el n´ umero de trayectorias de longitud 4 entre cada par de v´ ertices, etc.
2.2 Moverse por un grafo. Conexi´on
2.2.2 Algoritmos de conexi´ on de un grafo
Usando las potencias de la matriz de adyacencia puede estudiarse la conexi´ on de un grafo de manera eficaz, pero poco eficiente desde el punto de vista del c´ omputo operacional. Yendo a la definici´ 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.
2.2.2.1 El algoritmo de Warsall
Este algoritmo recrea la construcci´ on de trayectorias estre v´ ertices de la manera siguiente:
“Los v´ ertices v
iy v
jestan conectados si hay un camino entre ellos o, si para alg´ un v´ ertice v
khay un camino de v
ia v
ky un camino de v
ka v
j”
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 v
i, v
jhay alg´ un otro v
kque hace de enlace, sino al rev´ es, comprueba si cada v´ ertice v
kes puente entre cada par de v´ ertices v
iy v
j.
Warsall produce una sucesi´ on de matrices booleanas W
(1), W
(2), . . . , W
(n)(una por cada v´ ertice v
ka comprobar) que indican si dos v´ ertices dados est´ an o no conectados. Si el grafo es conexo la
´
ultima matriz constar´ a toda de unos (si hay al menos dos v´ ertices).
Inicialmente, comenzaremos usando la matriz de adyacencia M como matriz de conexi´ on inicial ( W
(0)= M , s´ olo est´ an conectados los v´ ertices extremos de las aristas). En el paso 1, y para cada v
iy v
j, se comprueba si ya est´ an conectados o si pueden conectarse a trav´ es de v
1(es decir, si v
iest´ a conectado con v
1y tambi´ en v
1est´ a conectado con v
j). Obtendremos as´ı una nueva matriz W
(1)que indicar´ a los v´ ertices conectados, bien porque lo estaban o bien porque se han conectado a trav´ es de v
1.
Y se repite lo mismo para cada uno de los v´ ertices restantes... El algoritmo, puede plantearse as´ı:
Algoritmo 1.- (de Warsall)
inicio: n; M; W(0)= M
para
k
=1
hastan
paraj
=1
hastan
para
i
=1
hastan
W
(k)(i, j) = W
(k−1)(i, j) |
W
(k−1)(i, k) & W
(k−1)(k, j)
finfin fin
Y el grafo ser´ a conexo si la matriz final, W
(n), es toda de unos.
Observaci´ on 15.- 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 puede reducirse al siguiente
inicio: n; M; W(0)
= M
parak
=1
hastan
W
(k)= W
(k−1)|
W
(k−1)( : , k) ∗ ones(1, n) & ones(n, 1) ∗ W
(k−1)(k, : )
finComo los operadores l´ ogicos sobre matrices se aplican elemento a elemento, si en un paso k, es-
cribimos en las posiciones correspondientes de una matriz todas las comparaciones “y( & )” que se
hacen, vemos que puede separarse en una comparaci´ on de dos matrices, la primera contine copias
de la columna k y la segunda copias de la fila k.
2.2 Moverse por un grafo. Conexi´on
Es evidente que si la matriz toda de unos se consigue en un paso intermedio no es necesario completar el algoritmo, por lo que puede incluirse condiciones de parada que reduzcan el timepo de c´ omputo. (De hecho, es suficiente con que en una fila o columna todos los elementos que no sean de la diagonal sean 1 para asegurar la conexi´ on.)
2.2.2.2 Algoritmo de Floyd
El algoritmo 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 modificarse ligeramente para encontrar la longitud (en el sentido de menor n´ umero de aristas) del camino m´ as corto entre dos v´ ertices conectados: “si hay un camino entre los v´ ertices v
iy v
jy se puede formar otro uniendo dos que pasen por alg´ un v´ ertice v
k, elegimos el m´ as 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 v´ ertices, de la siguiente manera:
• un v´ ertice est´ a a alcance 0 de si mismo (0 en la diagonal),
• los v´ ertices conectados por una arista est´ an a alcance 1 y
• los v´ ertices no conectados directamente est´ an a alcance ∞ .
Se trata pues de ir minorando los valores de la matriz; para ello realizamos las mismas comprobaciones que realiza Warsall con un peque˜ no cambio: en cada paso tomaremos como nuevo valor de la matriz de alcance el valor
m´ın
L
(k−1)(i, j) , L
(k−1)(i, k) + L
(k−1)(k, j)
(es decir, tomamos como longitud la del camino m´ as corto entre el que tenemos y el que se pueda formar uniendo dos caminos).
La matriz final del algoritmo contendr´ a en cada posici´ on la logitud del camino m´ as corto entre cada par de v´ ertices (y cero en la diagonal). Si dos v´ ertices no pueden conectarse figurar´ a el valor ∞ (inf en Matlab), por lo que el grafo ser´a conexo si no existe ning´ un valor ∞ en la matriz final.
2.2.3 Trayectorias y conexi´ on en un digrafo
Para los grafos dirigidos, las trayectorias, colas, caminos, circuitos y ciclos, se definen de forma an´ aloga.
La diferencia estriba en que los arcos s´ olo 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.
Definici´ on 16.- Sea D = (V, A) un digrafo. Llamaremos trayectoria (dirigida) en D a una sucesi´ on de v´ ertices, x
1x
2· · · x
p−1x
ptales que (x
i, x
i+1) ∈ A , para cada i = 1, 2, . . . , p − 1 .
Diremos que la trayectoria conecta o une el v´ ertice x
1con el v´ ertice x
p, y del n´ umero de arcos recorridos, p − 1 , diremos que es la longitud de la trayectoria. Si x
1= x
pse dice que la trayectoria es cerrada.
Llamaremos cola a una trayectoria con todos los arcos distintos y circuito a una cola cerrada.
Llamaremos camino a una trayectoria sin v´ ertices 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 an´ alogo para digrafos –sin m´ as que tener en cuenta que todos los elementos han de ser dirigidos–, excepto uno: la definici´ on de conexo.
Definici´ on 17.- Sea D un digrafo. Se llama grafo no dirigido subyacente a D , al grafo que se obtiene sustituyendo cada arco (x, y) por la arista {x, y} (si aparecen (x, y) e (y, x) se sustituyen ambos por una s´ ola arista).
Definici´ on 18.- Un digrafo es conexo si su grafo subyacente es conexo.
2.2 Moverse por un grafo. Conexi´on
En general, los resultados v´ alidos para grafos o digrafos los son tambi´ en para los otros, salvo aquellos que se basan directamente en la existencia o no existencia de direcciones (como la conexi´ on).
As´ı, el algoritmo de Floyd para calcular la menor longitud de un camino entre v´ ertices, comentado antes, funciona perfectamente con digrafos:
Algoritmo 2.- (de Floyd)
inicio: n; L; L(0)= L
parak
=1
hastan
para
j
=1
hastan
parai
=1
hastan
L
(k)(i, j) = min
L
(k−1)(i, j), L
(k−1)(i, k) + L
(k−1)(k, j)
finfin fin
Donde L se obtiene a partir de la matriz de adyacencia, poniendo para i 6= j sin arco entre ellos L(i, j) = ∞ . Si en la matriz final algunas posiciones mantienen el valor ∞ , quiere decir que no puede irse de un v´ ertice al otro (no hay camino).
Nota: En un grafo no dirigido la conexi´ on asegura que se puede ir desde cualquier v´ ertice a cualquier otro, pero en los digrafos conexos puede haber perfectamente v´ ertices no conectados por caminos dirigidos (que no haya camino de v
ia v
jni camino de v
ja v
i). En el
digrafo de la derecha, v
1s´ olo se conecta con v
2, v
2no se conecta con ning´ un otro, etc.
s -s s -s s v1 v2 v3 v4 v5
2.2.4 Ejercicios
2.1 Considerar en el grafo G de la derecha, la trayectoria de v
2a v
7, T = v
2v
1v
3v
2v
5v
4v
6v
5v
3v
4v
6v
7.
(a) ¿Es T un camino?, ¿y una cola? ¿Cu´ al es su longitud?
(b) Los caminos C
1= v
2v
4v
6v
7y C
2= v
2v
5v
6v
7, no forman parte de la trayectoria. ¿Por qu´ e?
s s s
s
@
@
@ s
@
@
@
@
@@ s
@
@
@
@
@@ s
v3 v5 v7
v1
v2 v4 v6
(c) Buscar en T un camino del v´ ertice v
2al v´ ertice v
7.
(d) Tomar los v´ ertices del grafo y dibujar T como una l´ınea continua, indicando el sentido del recorrido. Destacar el camino obtenido en el apartado anterior y las partes eliminadas.
(e) La prueba del resultado de la proposici´ on 13 da un m´ etodo para encontrar un camino contenido en una trayectoria. Reescribir el m´ etodo en la forma de un procedimiento paso a paso (algor´ıtmico) que permita obtener un camino contenido en una trayectoria.
(f) Obtener el n´ umero de trayectorias de longitud 3 de v
4a v
5y describirlas.
Introducir en el ordenador la trayectoria como un vector T y la matriz de adyacencia M.
[i] Calcular a partir de T la longitud de la trayectoria T .
[ii] Comprobar qu´ e v´ ertices de sub´ındice impar se repiten en la trayectoria y, cuando ocurra, encontrar las posiciones de las repeticiones en T.
[iii] Idear una manera de comprobar que la septima arista recorrida en T es tambi´ en una arista de G . Implementar esa idea en un bucle for que compruebe que T es una trayectoria v´ alida (que cada arista de T es un arista de G ).
[iv] Programar el mismo algoritmo, pero en un bucle while.
[v] Completar los programas anteriores, para que den como repuesta “Es una trayectoria” o
“No es una trayectoria”, seg´ un el caso.
2.2 Moverse por un grafo. Conexi´on