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

Captulo 2

Teora de Grafos
2.1 Introduccion: grafos y digrafos
En terminos generales, un grafo consiste en un conjunto de puntos, que llamaremos vertices, y lneas que
unen los vertices, que denominaremos aristas.
Los grafos se estan convirtiendo en herramientas poderosas de m ultiples disciplinas: ingeniera electrica
y civil, redes de comunicacion, computacion, economia, sociologa, etc. Tanto por su simplicidad como
modelo de muy variadas situaciones, como secillez para dar solucion a los problemas, en muchos casos en
forma de algoritmos computables en ordenador.
Aparecen en diferentes campos bajo denominaciones distintas: redes en ingeniera electrica, es-
tructuras moleculares en qumica, mapas de carreteras, sociogramas, redes de telecomunicaciones,
etc. El modelado es simple tomando los objetos (lugares, aparatos, personas, . . . ) como vertices y las
conexiones (cables, relaciones, tratos, . . . ) como aristas.
Ejemplo 1.- En la ciudad de Konigsberg, existen siete puentes
que unen las riberas y dos islas formadas por el ro Pregel, de la
forma que indica el dibujo. Hay alguna forma de recorrer 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 situacion: cuatro puntos, que representan las partes de
tierra rme y las lneas que los unen, representando los puentes. El problema se reduce a saber si pueden
recorrerse todas las lneas sin repetir ninguna y acabar en el mismo punto.
Cuando se planteo esa pregunta a Euler ingenio la teora de grafos y probo los primeros resultados antes
de dar su respuesta: no.
Denicion 2.- Un grafo esta formado por un par de conjuntos nitos, y se denota por G = (V, A), donde
V es el conjunto de vertices y A es el conjunto de aristas.
Cada arista de a A conecta dos vertices de V , que llamaremos extremos de la arista, y escribiremos
a = {x, y} para indicar que a conecta o une los vertices 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 (mas de
una arista conectando los mismos vertices) y vertices aislados (no estan conectados a ning un otro vertice).
Pero tambien podemos hablar de grafos dirigidos donde cada arista tiene una direccion de recorrido;
modelos para una distribucion de agua por la red de tuberias de la ciudad, la red viaria con calles de sentido
unico, etc., son ejemplos de grafos dirigidos.
Denicion 3.- Un digrafo o grafo dirigido esta formado por un par de conjuntos nitos, y lo denotaremos
por D = (V, A), donde V es el conjunto de vertices y A es el conjunto de arcos o aristas dirigidas
entre los vertices.
Cada arco a A conecta dos vertices de V , que llamaremos respectivamente extremo inicial y extremo
nal del arco, y escribiremos a = (x, y) para indicar que a conecta o une el vertice x con el vertice y.
Diremos tambien que x es adyacente a y y que a incide en y.
Si los grafos se representan con puntos y lneas que los unen, los digrafos se representan con puntos y
echas entre ellos.
Matlab 6.1. 1
2.1 Introduccion: grafos y digrafos
Desgraciadamente no hay una nomenclatura estandar para designar los tipos de grafos ni los elementos
que aparecen, por lo que es preciso jarla y tenerlo presente al consultar cualquier bibliografa sobre el
tema.
Los grafos se clasican 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 generalmente con grafos
simples y los denotaremos expresamente por multigrafo (multidigrafo) cuando no lo sean.
Notacion 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 vertices.
Si D = (V, A) es un digrafo, denotaremos por (v
i
, v
j
) el arco que conecta v
i
con v
j
.
Observaciones 5.- En un grafo simple solo puede haber una arista entre los mismos dos vertices, y
en un digrafo puede haber hasta dos arcos pero de sentidos contrarios.
Si un grafo tiene n vertices, en cada vertice pueden incidir a lo mas n 1 aristas. Si es un digrafo,
de cada vertice pueden salir a lo mas n 1 arcos y pueden incidir en el n 1 arcos como mucho.
Un grafo (no dirigido) puede considerarse tambien como un digrafo, sin mas que cambiar cada arista
por dos arcos de sentidos contrarios.
En ocasiones, por comodidad y claridad en la repre-
sentacion graca, cuando en un digrafo aparece un
arco y el de sentido contrario se sustituyen ambos por
una arista.
K
U
t t
t t

-
?

=
t t
t t

-
?

Denicion 6.- Un subgrafo ( subdigrafo) de un grafo (digrafo), es un grafo (digrafo) formado con vertices
y aristas (arcos) del inicial.
Es decir, se obtienen eliminando aristas y/o vertices del inicial (si se elimina un vertice, tambien 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) simple puede tambien describirse mediante una tabla o matriz que
indique las conexiones:
Denicion 7.- Si D tiene n vertices, se llama matriz de adyacencia de D a la matriz cuadrada de orden
n, M = (m
ij
)
nn
, 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 simetrica (si la arista {v
i
, v
j
} esta en A, tambien
esta {v
j
, v
i
}).
Si el grafo o digrafo es simple es nuestro caso, la diagonal esta formada por ceros (no tiene lazos).
6
R
s s
s s
v
1
v
2
v
3
v
4

-
?

M =
v
1
v
2
v
3
v
4
v
1
0 0 1 1
v
2
1 0 0 0
v
3
1 0 0 1
v
4
0 1 0 0
s s
s s
v
1
v
2
v
3
v
4
@
@
@
@
@
@

M =

0 1 1 1
1 0 1 0
1 1 0 0
1 0 0 0

Fig. 2.1. Matrices de adyacencia


Si para formar un subgrafo eliminamos solo aristas, su matriz de adyacencia se forma cambiando el
1 por un 0 en las posiciones correspondientes; pero si se elimina un vertice, debemos eliminar la la y la
columna correspondientes a ese vertice en la matriz.
Matlab 6.1. 2
2.1 Introduccion: grafos y digrafos
En un grafo el n umero de unos en cada la o columna es el n umero de aristas incidentes en el vertice
correspondiente a esa la o columna; mientras que en un digrafo, el n umero de unos de cada la se
corresponde con el n umero de arcos salientes desde ese vertice y el n umero de unos de cada columna indica
el numero de arcos que llegan a ese vertice.
Denicion 8.- En un grafo no dirigido, el n umero de aristas incidentes en un vertice se denomina grado
del vertice, gr(v).
En un digrafo, se denomina ingrado de un vertice al n umero de arcos incidentes en un vertice, ing(v),
y exgrado al n umero de arcos salientes del vertice, exg(v).
Si G es un grafo con n vertices y m aristas, no es dicil comprobar que
n

i=1
gr(v
i
) = 2m.
Si D es un digrafo con n vertices y m arcos, se tiene que
n

i=1
ing(v
i
) =
n

i=1
exg(v
i
) = m.
2.1.2 Ejercicios
1.1 La zona Z-72 de gestion 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 situacion.
(b) En una redistribucion zonal, la ciudad B pasa a depender de la nueva zona Z-80, y las carreteras
que la unan con las ciudades de la Z-72 pasan a depender de la Interzonal 3. Que grafo
describira la nueva situacion 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, que grafo describira entonces la
nueva situacion de la Z-72? Hay alguna peculiaridad rese nable?
(d) Obtener la matriz M de adyacencia del grafo inicial y las matrices M
1
y M
2
de los subgrafos
construidos en los apartados anteriores. Como se reejan en las matrices las peculiaridades
observadas antes?
Introducir en el ordenador como M la matriz de adyacencia del grafo.
[i] Encuentra los vertices 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 vertice, calcular el n umero de aristas y comprobar que es cierta la
igualdad
n

i=1
gr(v
i
) = 2m.
1.2 La matriz M representa las direcciones de circulacion de las calles
entre 6 plazas A, B, C, D, E y F .
(a) El problema se modela usando un digrafo. Por que?
(b) Dib ujalo. Hay calles de doble direccion? cuales?
(c) Estan conectadas todas las plazas?
(d) Si se cierra la plaza B por obras, cual sera la matriz de adya-
cencia del nuevo digrafo?
(e) Las conexiones entre las plazas restantes, se mantienen?
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

Matlab 6.1. 3
2.2 Moverse por un grafo. Conexion
Introducir en el ordenador la matriz M de adyacencia del digrafo.
[i] Introducir sparse(M) para comprobar que estan todos los arcos.
[ii] Hallar la traspuesta y comprobar que es distinta de M.
[iii] Implementar una bifurcacion que nos diga si una matriz es o no cuadrada, y otro que nos diga
si es o no simetrica.
[iv] Comprobar que es cierta la formula
n

i=1
ing(v
i
) =
n

i=1
exg(v
i
) = m.
[v] Construir, a partir de M, una matriz de tres columnas que por las tenga el vertice, su ingrado
y su exgrado.
[vi] Obtener la matriz M1 del digrafo resultante de cerrar la plaza B al traco.
[vii] Construir, a partir de M y mediante operaciones matriciales, la matriz A correspondiente a
hacer todas las calles de doble direccion.
[viii] Que operador relacional usaras para comprobar que los arcos que guran en M siguen estando
en A?
2.2 Moverse por un grafo. Conexion
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 vertice v
1
recorriendo aristas hasta llegar a otro
vertive v
k
. As:
Denicion 9.- Sea G = (V, A) un grafo. Llamaremos trayectoria en G a una sucesion de vertices,
x
1
x
2
x
p1
x
p
tales que {x
i
, x
i+1
} A, para cada i = 1, 2, . . . , p 1.
Diremos que la trayectoria conecta o une el vertice x
1
y el vertice x
p
, y del n umero de aristas
recorridas, p 1, diremos que es la longitud de la trayectoria.
Si x
1
= x
p
se dice que la trayectoria es cerrada.
No hemos puesto ninguna restriccion al recorrido de la trayectoria (salvo que use aristas del grafo),
podramos deambular por el grafo recorriendo siempre las mismas aristas y pasando por los mismos vertices.
Es usual distinguir otros dos tipos de trayectorias.
Denicion 10.- Llamaremos cola a una trayectoria que recorre aristas distintas y camino a una trayectoria
sin vertices 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 dieren de unos autores a otros, mientras
que la de ciclo es mas com un; en cualquier caso, y como ya comentamos, conviene comprobar como
denomina cada autor estos elementos.
Los caminos y ciclos son elementos imprescindibles en la teora de grafos tambien en la parte que a
nosotros nos ocupa. Las siguientes deniciones establecen unas tipologas de grafos muy importantes:
Denicion 11.- Diremos que un grafo es acclico si no tiene ciclos.
Denicion 12.- Un grafo es conexo si todo par de vertices esta unido por una trayectoria (por un camino).
Si el grafo no es conexo, esta 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 vertice
se puede ir a todos los demas. Si el grafo no es conexo un vertice solo esta conectado con los de su misma
componente conexa.
Matlab 6.1. 4
2.2 Moverse por un grafo. Conexion
Aunque no todas las trayectorias son caminos, el siguiente resultado nos asegura que siempre podremos
disponer de uno si es necesario (y explica el parentesis en la denicion de conexion).
Proposicion 13.- Cada trayectoria que une dos vertices distintos contiene un camino que une esos mismos
vertices.
Demostracion:
Sea T una trayectoria que une el vertice v
r
y el vertice v
s
. Si T no es un camino, repite vertices.
Cuando recorremos T , si pasamos por un vertice v
i
y este nos aparece mas 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 vertice v
r
y el vertice v
s
. Si repetimos el proceso
hasta que no queden vertices repetidos tenemos el camino postulado.
De igual manera se tiene que:
Proposicion 14.- Cada circuito que empieza y acaba en un vertice v
r
contiene un ciclo que empieza y
acaba en ese vertice v
r
.
(El resultado es por supuesto valido para cada vertice de un circuito.)
2.1 Considerar en el grafo G de la derecha, la trayectoria
de v
2
a v
7
, T = v
2
v
1
v
3
v
2
v
5
v
4
v
6
v
5
v
3
v
4
v
6
v
7
.
(a) Es T un camino?, y una cola? Es cerrada?
Cual es su longitud?
(b) Dibujar T sobre el grafo como una lnea continua,
indicando el sentido del recorrido.
s

s
s
@
@
@

s
@
@
@
@
@
@
s
@
@
@
@
@
@
s
v
3
v
5
v
7
v
1
v
2
v
4
v
6
(c) Los caminos C
1
= v
2
v
4
v
6
v
7
y C
2
= v
2
v
5
v
6
v
7
, no forman parte de T . Por que?
(d) Buscar en T un camino del vertice v
2
al vertice v
7
. En el dibujo de T , destacar el camino
obtenido y las partes eliminadas.
(e) La prueba del resultado de la proposicion 13 da un metodo para encontrar un camino conte-
nido en una trayectoria. Reescribir el metodo en la forma de un procedimiento paso a paso
(algortmico) que permita obtener un camino contenido en una trayectoria.
(f) Obtener el n umero de trayectorias de longitud 3 de v
4
a v
5
y 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 . Es cerrada?
[ii] Idear una manera de comprobar que la segunda, quinta y septima aristas recorridas en T son
tambien aristas de G.
[iii] Comprobar que los caminos C
1
y C
2
no forman parte de T .
[iv] Como comprobaras si T es un camino?
[v] Como comprobaras si T es una cola?
[vi] Como comprobaras si T contiene un ciclo?
[vii] Como comprobaras si T contiene un circuito?
[viii] Implementar la idea de 2.1[ii] en un bucle for que compruebe que T es una trayectoria valida
(es decir, que cada arista de T es un arista de G).
[ix] Programar el mismo algoritmo, pero en un bucle while.
Matlab 6.1. 5

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