1. 2.3 Grafos Eulerianos
2.3 Grafos Eulerianos
Informalmente, un grafo (digrafo) euleriano es aqu´el 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¨onigsberg que, como comentamos en la introducci´on,
di´o inicio a la teor´ıa de grafos.
Muchas de las situaciones de aplicaci´on de estas cuestiones se plantean sobre multigrafos (multidi-
grafos), por lo que debemos recordar que en ´estos pueden existir varias aristas (arcos) entre los mismos
v´ertices y lazos.
Puntualicemos adem´as, que:
Definici´on 19.- La matriz de adyacencia o matriz de un multigrafo G = (V, A) con v´ertices V =
{x1, x2, . . . , xn}, es una la matriz cuadrada M = (mij)n×n donde mij = “no de aristas entre xi y xj ”.
La matriz de adyacencia o matriz de un multidigrafo D = (V, A) con v´ertices V = {x1, x2, . . . , xn},
es una la matriz cuadrada M = (mij)n×n donde mij = “no de arcos desde xi a xj ”.
Ejemplo 20.- Consideremos el multidigrafo y el multigrafo de abajo. Sus matrices de adyacencia ser´an
t
rrrrj
¨¨¨¨B
t
t t
T
T T
t
!
v3
v1
v2
v5
v4
MD =
0 2 0 0 0
0 0 0 0 0
1 1 0 0 0
0 0 0 0 0
0 0 0 1 1
sx3
sx2
sx1
s x4
¨¨¨
¨¨¨
rrr
rrr
MG =
0 2 0 1
2 0 2 1
0 2 0 1
1 1 1 0
Observaciones 21.- 1.- La matriz MG es sim´etrica. Si G no tiene lazos la diagonal principal es nula,
y si G es simple, MG est´a formada ´unicamente por ceros y unos.
2.- El grado de un v´ertice xi es la suma de los elementos de la fila (o columna) i-´esima m´as el n´umero
de lazos en ese v´ertice. Es decir, gr(xi) =
n
k=1
mik + mii =
n
k=1
mki + mii (cada lazo cuenta 1 en
la matriz, pero cuenta 2 en el grado del v´ertice).
3.- El ingrado de un v´ertice vi es la suma de los elementos de la columna i-´esima de la matriz MD , y
el exgrado la suma de los elementos de la fila: ing(vi) =
n
k=1
mki y exg(vi) =
n
k=1
mik .
Naturalmente, gr(vi) = ing(vi) + exg(vi).
Definici´on 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´olo de un ciclo, se denotan por
Cn donde n es el n´umero de v´ertices), la Estrella de Mahoma y el multigrafo de los puentes de K¨onisberg.
se
e
e
s
s
d
d
ds
¡
¡
¡s s£
£
£
£
££
sg
g
g
g
gg
s
s
s
sz
sy
sx
s w
¨¨¨
¨¨¨¨
rrr
rrrr
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´as a´un tampoco tiene una cola euleriana.
Matlab 6.1. 11
2. 2.3 Grafos Eulerianos
Teorema 24.- Un multigrafo conexo tiene un circuito euleriano si, y s´olo si, todos sus v´ertices son de
grado par.
Demostraci´on:
=⇒ (Teorema de Euler) Como el circuito recorre todas las aristas, cada vez que se accede a un v´ertice
por una arista se sale por otra distinta, luego el grado de cada v´ertice debe ser par.
⇐= Sea G = (V, A) el multigrafo. Empezando en un v´ertice x cualquiera, se construye una cola
x a1 x1 a2 x2 · · · xp−1 ap xp lo m´as larga posible. Como de xp no se puede seguir, se han recorrido
todas las aristas incidentes en xp , este v´ertice tiene que aparecer anteriormente en la cola construida
(gr(xp) ≥ 2); considerando la parte de la cola desde la primera aparici´on 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´ertices
que queden aislados) y repetimos el proceso en el subgrafo que queda (los v´ertices que permanecen
siguen teniendo grado par). Obtendremos as´ı una cantidad finita de circuitos C1 , . . . , Cr de manera
que cada arista de G est´a contenida uno de esos circuitos.
Como G es conexo los circuitos tienen que tener v´ertices comunes con alg´un otro, luego basta con
englobar todos ellos en uno s´olo que, por tanto, ser´a euleriano.
Nota: En un multidigrafo puede haber varias aristas que unan los mismos dos v´ertices, 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´olo si, no tiene v´ertices de grado impar
o tiene un ´unico par de v´ertices de grado impar.
Demostraci´on:
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´ertices tienen grado par.
• Si x = y, a˜nadimos una arista que una x e y teniendo as´ı un circuito euleriano con todos los v´ertices
de grado par. Luego, los v´ertices x e y son los ´unicos con grado impar.
Rec´ıprocamente, si hay dos v´ertices de grado impar basta a˜nadir una arista uniendo esos v´ertices 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´ertice x de grado impar. Si no lo hay, empezar en cualquier v´ertice 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´on 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´alogos teniendo en cuenta que la cola debe ser
dirigida, es decir, para que exista un circuito en cada v´ertice al que se llegue debe haber un arco saliente.
Las pruebas de los resultados son similares, por lo que ´unicamente los enunciamos:
Matlab 6.1. 12
3. 2.3 Grafos Eulerianos
Teorema 27.- Un multidigrafo conexo tiene un circuito euleriano si, y s´olo si, todos sus v´ertices 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´olo 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´on dirigida) 29.- Si un multidigrafo (V, A) tiene una cola euleriana C , puede
construirse mediante el siguiente algoritmo:
P1.− Empezar en el v´ertice x con exg(x) = ing(x) + 1. Si no lo hay, empezar en cualquier v´ertice 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´on 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-
presentados a la derecha
(a) ¿Puede construirse en G1
una cola euleriana? ¿Y un
circuito?
(b) ¿Qu´e v´ertices podemos
elegir para comenzar la
cola?
t t t
t t t
¨¨¨
¨¨¨
¨¨¨
¨¨¨
¨¨
d
d
d
d
d
d
d
rrr
rrr
rrr
rrr
rr
d
d
d
d
d
d
d
x1 x2 x3
x4 x5 x6
t
t t
t t
y1
y2 y3
y4 y5
e
e
e
e
e
¢
¢
¢
¢
¢
¢
¢
¨¨
¨¨¨
f
f
f
f
f
f
f
rr
rrr
¡
¡
¡
¡
¡
(c) Elegir un v´ertice y construir una cola euleriana. Escribirla como la sucesi´on de v´ertices por donde
pasa. ¿Qu´e longitud ha de tener la cola? ¿Cu´antos v´ertices deben aparecer en su descripci´on?
(d) Sea M, la matriz de G1 . Construir una cola euleriana us´ando ´unicamente la matriz M, aplicando
sobre ella el algoritmo de Fleury paso a paso.
Escribir de nuevo la cola como la sucesi´on de v´ertices 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 ´unica se˜nal, que las recorre, y que ser´a analizada al final del
recorrido. Si cada l´ınea debe recorrerse una ´unica vez, ¿es suficiente con enviar una se˜nal desde
y1 para comprobar todas las l´ıneas? ¿Puede recogerse la se˜nal final tambi´en 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´ertice y comprobar su paridad. (Ver la funci´on mod(m,n), resto
de la divisi´on entera de m entre n).
[ii] Construir una funci´on que detecte si el grafo tiene o no una cola euleriana.
[iii] Detecta los v´ertices posibles para comenzar la cola euleriana y elige el de menor ´ındice.
Matlab 6.1. 13