Você está na página 1de 4

2.

3 Grafos Eulerianos

2.3 Grafos Eulerianos


Informalmente, un grafo (digrafo) euleriano es aquél en que pueden recorrerse todas sus las aristas (arcos)
de manera consecutiva y sin repetirlas. ¿Puede dibujarse cierta figura de un solo trazo?, ¿puede un cartero
efectuar su reparto sin tener que pasar dos veces por la misma calle? son ejemplos de uso de este tipo de
grafos. Y por supuesto el problema de los puentes de Königsberg que, como comentamos en la introducción,
dió inicio a la teorı́a de grafos.
Muchas de las situaciones de aplicación de estas cuestiones se plantean sobre multigrafos (multidi-
grafos), por lo que debemos recordar que en éstos pueden existir varias aristas (arcos) entre los mismos
vértices y lazos.
Puntualicemos además, que:

Definición 19.- La matriz de adyacencia o matriz de un multigrafo G = (V, A) con vértices V =


{x1 , x2 , . . . , xn }, es una la matriz cuadrada M = (mij )n×n donde mij = “n o de aristas entre xi y xj ”.
La matriz de adyacencia o matriz de un multidigrafo D = (V, A) con vértices V = {x1 , x2 , . . . , xn },
es una la matriz cuadrada M = (mij )n×n donde mij = “n o de arcos desde xi a xj ”.

Ejemplo 20.- Consideremos el multidigrafo y el multigrafo de abajo. Sus matrices de adyacencia serán
v2 0

2 0 0 0
 x1 s
t t v4 HH  
0 0 2 0 1
*
 0 0 0 0 H
t
6 HH 2

x2 s Hs x4 0 2 1
 

MD =  1 1 0 0 0 MG = 
   
v3 HH 6 6
jt t v5

0 2 0 1


 
HH 0 0 0 0 0
v1  1 1 1 0
s

0 0 0 1 1 x3 

Observaciones 21.- 1.- La matriz MG es simétrica. Si G no tiene lazos la diagonal principal es nula,
y si G es simple, MG está formada únicamente por ceros y unos.

2.- El grado de un vértice xi es la suma de los elementos dela fila (o columna)


 i-ésima más el número
n
P n
P
de lazos en ese vértice. Es decir, gr(xi ) = mik + mii = mki + mii (cada lazo cuenta 1 en
k=1 k=1
la matriz, pero cuenta 2 en el grado del vértice).

3.- El ingrado de un vértice vi es la suma de los elementos de la columna i-ésima de la matriz MD , y


n
P n
P
el exgrado la suma de los elementos de la fila: ing(vi ) = mki y exg(vi ) = mik .
k=1 k=1
Naturalmente, gr(vi ) = ing(vi ) + exg(vi ).

Definición 22.- Llamaremos cola euleriana en un multigrafo a una cola (trayectoria sin aristas repetidas)
que recorra todas las aristas del multigrafo. Si la cola euleriana es cerrada la llamaremos circuito euleriano.
A un multigrafo que contenga un circuito euleriano le llamaremos multigrafo euleriano.

Ejemplo 23.- Consideremos los grafos: C5 (los grafos ciclo, constan sólo de un ciclo, se denotan por
Cn donde n es el número de vértices), la Estrella de Mahoma y el multigrafo de los puentes de Könisberg.
xs
s s
HHH
H
@ C HH
s Hs w
s s s y
@  C 
@s 
A  Q  C  
A Q  
C
As s s QCs s
 Q 
  z
Los dos primeros son grafos eulerianos, el primero obviamente y en el segundo puede formarse un circuito
con sus aristas (de hecho, puede redibujarse como C5 ). El tercero no es euleriano puesto que no tiene un
circuito euleriano, más aún tampoco tiene una cola euleriana. 4

Matlab 6.1. 11
2.3 Grafos Eulerianos

Teorema 24.- Un multigrafo conexo tiene un circuito euleriano si, y sólo si, todos sus vértices son de
grado par.

Demostración:

=⇒c (Teorema de Euler) Como el circuito recorre todas las aristas, cada vez que se accede a un vértice
por una arista se sale por otra distinta, luego el grado de cada vértice debe ser par.

⇐=c Sea G = (V, A) el multigrafo. Empezando en un vértice x cualquiera, se construye una cola
x a1 x1 a2 x2 · · · xp−1 ap xp lo más larga posible. Como de xp no se puede seguir, se han recorrido
todas las aristas incidentes en xp , este vértice tiene que aparecer anteriormente en la cola construida
(gr(xp ) ≥ 2); considerando la parte de la cola desde la primera aparición de xp hasta el final,
tenemos un circuito C1 que empieza y acaba en xp .
Si el circuito C1 no recorre todas las aristas de G, eliminamos todas las aristas de C1 (y los vértices
que queden aislados) y repetimos el proceso en el subgrafo que queda (los vértices que permanecen
siguen teniendo grado par). Obtendremos ası́ una cantidad finita de circuitos C1 , . . . , Cr de manera
que cada arista de G está contenida uno de esos circuitos.
Como G es conexo los circuitos tienen que tener vértices comunes con algún otro, luego basta con
englobar todos ellos en uno sólo que, por tanto, será euleriano.

Nota: En un multidigrafo puede haber varias aristas que unan los mismos dos vértices, por lo que las
trayectorias se denotan en la forma x1 a1 x2 a2 x3 · · · xk ak xk+1 , es decir, indicando la arista que se recorre.

Corolario 25.- Un multigrafo conexo tiene una cola euleriana si, y sólo si, no tiene vértices de grado impar
o tiene un único par de vértices de grado impar.

Demostración:
Supongamos que tiene una la cola euleriana que empieza en x y termina en y , entonces:
• Si x = y , la cola es un circuito euleriano, por lo que todos los vértices tienen grado par.

• Si x 6= y , añadimos una arista que una x e y teniendo ası́ un circuito euleriano con todos los vértices
de grado par. Luego, los vértices x e y son los únicos con grado impar.
Recı́procamente, si hay dos vértices de grado impar basta añadir una arista uniendo esos vértices y
aplicar el teorema anterior.

Algoritmo de Fleury 26.- Si un multigrafo (V, A) tiene una cola euleriana C , puede construirse mediante
el siguiente algoritmo:
P1.− Empezar en un vértice x de grado impar. Si no lo hay, empezar en cualquier vértice x. Hacer
C = x.

P2.− Si gr(x) = 0 parar.

P3.− Si gr(x) = 1 con a = {x, y}, tomar (V, A) = (V − {x}, A − {a}), hacer C = Cay y continuar en
P5.

P4.− Si gr(x) > 1 elegir una arista a = {x, y}, cuya eliminación no desconecte el multigrafo. Tomar
(V, A) = (V, A − {a}) y hacer C = Cay .

P5.− Reemplazar x por y y volver a P2.

Para el caso de los multidigrafos, los resultados son análogos teniendo en cuenta que la cola debe ser
dirigida, es decir, para que exista un circuito en cada vértice al que se llegue debe haber un arco saliente.
Las pruebas de los resultados son similares, por lo que únicamente los enunciamos:

Matlab 6.1. 12
2.3 Grafos Eulerianos

Teorema 27.- Un multidigrafo conexo tiene un circuito euleriano si, y sólo si, todos sus vértices tienen el
mismo ingrado que exgrado (ing(v) = exg(v), para todo v ).

Corolario 28.- Un multidigrafo conexo tiene una cola euleriana si, y sólo si, ing(v) = exg(v) para todo v , o
si lo verifican todos menos dos, x e y , estos han de verificar que ing(x) = exg(x)+1 e ing(y) = exg(y)−1

Algoritmo de Fleury (versión dirigida) 29.- Si un multidigrafo (V, A) tiene una cola euleriana C , puede
construirse mediante el siguiente algoritmo:

P1.− Empezar en el vértice x con exg(x) = ing(x) + 1. Si no lo hay, empezar en cualquier vértice x.
Hacer C = x.

P2.− Si exg(x) = 0 parar.

P3.− Si exg(x) = 1 con a = (x, y), tomar (V, A) = (V − {x}, A − {a}), hacer C = Cay y continuar en
P5.

P4.− Si exg(x) > 1 elegir un arco a = (x, y), cuya eliminación no desconecte el multidigrafo. Tomar
(V, A) = (V, A − {a}) y hacer C = Cay .

P5.− Reemplazar x por y y volver a P2.

2.3.1 Ejercicios

3.1 Sean G1 y G2 los grafos re- x1 x x y1


presentados a la derecha t t2 t3 t
HH   BHH
@ H @  
(a) ¿Puede construirse en G1 @ HH @  y2 t 
  B HHHt y3
@ HH @ Q  B 
una cola euleriana? ¿Y un @ H @
A Q
A Q B 

 HH @
circuito? 
@ H A Q B


 @ H@ A  Q B 
(b) ¿Qué vértices podemos t  @t @t t QBt y5
HH Q
 y4 A
x4 x5 x6
elegir para comenzar la
cola?

(c) Elegir un vértice y construir una cola euleriana. Escribirla como la sucesión de vértices por donde
pasa. ¿Qué longitud ha de tener la cola? ¿Cuántos vértices deben aparecer en su descripción?
(d) Sea M, la matriz de G1 . Construir una cola euleriana usándo únicamente la matriz M, aplicando
sobre ella el algoritmo de Fleury paso a paso.
Escribir de nuevo la cola como la sucesión de vértices por donde pasa.
(e) El grafo G2 modela las conexiones de fibra optica entre 5 nodos de la red. Para comprobar el
estado de las lı́neas se envı́a una única señal, que las recorre, y que será analizada al final del
recorrido. Si cada lı́nea debe recorrerse una única vez, ¿es suficiente con enviar una señal desde
y1 para comprobar todas las lı́neas? ¿Puede recogerse la señal final también en y1 ?
Si la respuesta es afirmativa para alguna de las preguntas, indicar un recorrido posible para
cumplirlo.

Introducir la matriz M del grafo G1 .

[i] Obtener el grado de cada vértice y comprobar su paridad. (Ver la función mod(m,n), resto
de la división entera de m entre n).

[ii] Construir una función que detecte si el grafo tiene o no una cola euleriana.

[iii] Detecta los vértices posibles para comenzar la cola euleriana y elige el de menor ı́ndice.

Matlab 6.1. 13
2.3 Grafos Eulerianos

[iv] Obtener los vértices a los que llegan las aristas que salen de x3 . Elegir el vértice de menor
ı́ndice y eliminar la arista de G1 . ¿El grafo resultante sigue siendo conexo?

[v] Lo realizado en el apartado [iv] supone una implementación parcial del paso P4 del algoritmo
de Fleury. Completar la implementación del paso 4.

[vi] Implementar los pasos 1 y 3 del algoritmo.

[vii] Incluir en un bucle las implementaciones de los pasos del algoritmo para obtener una cola
euleriana.

3.2 Para el multigrafo G y el multidigrafo D , representados abajo, detectar si existe cola euleriana.

x1 x2 x3 x4 v1 v2 v
t t t t t t - t3
-
-
6I
@
@
@
@
G @
@
t t t t @t? D
x5 x6 x7 v4 v5

(a) Construir, si existe, una cola euleriana en G usando únicamente su matriz de adyacencia.
Tomar, cuando haya que elegir, el vértice posible de menor ı́ndice.
(b) ¿Se produce algún cambio en la forma de construir la cola por ser G multigrafo?
(c) Construir, si existe, una cola euleriana en D usando únicamente su matriz de adyacencia.
Tomar, cuando haya que elegir, el vértice posible de menor ı́ndice.
(d) ¿Se produce algún cambio en la forma de construir la cola por ser D dirigido?

Introducir como Mg y Md las matrices respectivas de G y D .

[i] Modificar, si es necesario, el programa realizado en el apartado 3.1[iv] para obtener una cola
euleriana a partir de la matriz Mg del multigrafo G.

[ii] Construir una función que detecte si un multidigrafo tiene o no una cola euleriana.

[iii] Modificar, si es necesario, el programa realizado en el apartado anterior para obtener una cola
euleriana a partir de la matriz Md del multidigrafo D .

Práctica 2.-
1.- Construir una función Euler con argumento de entrada la matriz de adyacencia de un (multi)grafo
no dirigido y salida una cola euleriana, si existe, y una matriz vacı́a si no existe.

2.- Construir una función DiEuler con argumento de entrada la matriz de adyacencia de un
(multi)digrafo y salida una cola euleriana, si existe, y una matriz vacı́a si no existe.

3.- Construir una función Cola Euler con argumento de entrada la matriz de adyacencia de un
(multi)grafo o un (multi)digrafo que llame a las funciones Euler o DiEuler, según el caso, y
salida una cola euleriana, si existe, y una matriz vacı́a si no existe.

Matlab 6.1. 14

Você também pode gostar