Está en la página 1de 4

2.

3 Grafos Eulerianos
2.3 Grafos Eulerianos
Informalmente, un grafo (digrafo) euleriano es aquel en que pueden recorrerse todas sus las aristas (arcos)
de manera consecutiva y sin repetirlas. Puede dibujarse cierta gura 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 Konigsberg que, como comentamos en la introduccion,
dio inicio a la teora de grafos.
Muchas de las situaciones de aplicacion 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
vertices y lazos.
Puntualicemos ademas, que:
Denicion 19.- La matriz de adyacencia o matriz de un multigrafo G = (V, A) con vertices V =
{x
1
, x
2
, . . . , x
n
}, es una la matriz cuadrada M = (m
ij
)
nn
donde m
ij
= n
o
de aristas entre x
i
y x
j
.
La matriz de adyacencia o matriz de un multidigrafo D = (V, A) con vertices V = {x
1
, x
2
, . . . , x
n
},
es una la matriz cuadrada M = (m
ij
)
nn
donde m
ij
= n
o
de arcos desde x
i
a x
j
.
Ejemplo 20.- Consideremos el multidigrafo y el multigrafo de abajo. Sus matrices de adyacencia seran
t
H
H
HHj

*
t
t t
6
6 6
t

v
3
v
1
v
2
v
5
v
4
M
D
=

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

s
x
3
s
x
2
s x
1
s x
4

H
H
H
H
H
H
M
G
=

0 2 0 1
2 0 2 1
0 2 0 1
1 1 1 0

Observaciones 21.- 1.- La matriz M


G
es simetrica. Si G no tiene lazos la diagonal principal es nula,
y si G es simple, M
G
esta formada unicamente por ceros y unos.
2.- El grado de un vertice x
i
es la suma de los elementos de la la (o columna) i-esima mas el n umero
de lazos en ese vertice. Es decir, gr(x
i
) =
n

k=1
m
ik
+m
ii

=
n

k=1
m
ki
+m
ii

(cada lazo cuenta 1 en


la matriz, pero cuenta 2 en el grado del vertice).
3.- El ingrado de un vertice v
i
es la suma de los elementos de la columna i-esima de la matriz M
D
, y
el exgrado la suma de los elementos de la la: ing(v
i
) =
n

k=1
m
ki
y exg(v
i
) =
n

k=1
m
ik
.
Naturalmente, gr(v
i
) = ing(v
i
) + exg(v
i
).
Denicion 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: C
5
(los grafos ciclo, constan solo de un ciclo, se denotan por
C
n
donde n es el n umero de vertices), la Estrella de Mahoma y el multigrafo de los puentes de Konisberg.
s A
A
A
s

s
@
@
@s

s s

s C
C
C
C
C
C
Q
Q
Q
Q
s
s
s
s
z
s
y
s x
s w

H
H
H
H
H
H
H
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 C
5
). El tercero no es euleriano puesto que no tiene un
circuito euleriano, mas a un tampoco tiene una cola euleriana.

Matlab 6.1. 11
2.3 Grafos Eulerianos
Teorema 24.- Un multigrafo conexo tiene un circuito euleriano si, y solo si, todos sus vertices son de
grado par.
Demostracion:
= (Teorema de Euler) Como el circuito recorre todas las aristas, cada vez que se accede a un vertice
por una arista se sale por otra distinta, luego el grado de cada vertice debe ser par.
= Sea G = (V, A) el multigrafo. Empezando en un vertice x cualquiera, se construye una cola
xa
1
x
1
a
2
x
2
x
p1
a
p
x
p
lo mas larga posible. Como de x
p
no se puede seguir, se han recorrido
todas las aristas incidentes en x
p
, este vertice tiene que aparecer anteriormente en la cola construida
(gr(x
p
) 2); considerando la parte de la cola desde la primera aparicion de x
p
hasta el nal,
tenemos un circuito C
1
que empieza y acaba en x
p
.
Si el circuito C
1
no recorre todas las aristas de G, eliminamos todas las aristas de C
1
(y los vertices
que queden aislados) y repetimos el proceso en el subgrafo que queda (los vertices que permanecen
siguen teniendo grado par). Obtendremos as una cantidad nita de circuitos C
1
, . . . , C
r
de manera
que cada arista de G esta contenida uno de esos circuitos.
Como G es conexo los circuitos tienen que tener vertices comunes con alg un otro, luego basta con
englobar todos ellos en uno solo que, por tanto, sera euleriano.
Nota: En un multidigrafo puede haber varias aristas que unan los mismos dos vertices, por lo que las
trayectorias se denotan en la forma x
1
a
1
x
2
a
2
x
3
x
k
a
k
x
k+1
, es decir, indicando la arista que se recorre.
Corolario 25.- Un multigrafo conexo tiene una cola euleriana si, y solo si, no tiene vertices de grado impar
o tiene un unico par de vertices de grado impar.
Demostracion:
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 vertices tienen grado par.
Si x = y, a nadimos una arista que una x e y teniendo as un circuito euleriano con todos los vertices
de grado par. Luego, los vertices x e y son los unicos con grado impar.
Recprocamente, si hay dos vertices de grado impar basta a nadir una arista uniendo esos vertices 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 vertice x de grado impar. Si no lo hay, empezar en cualquier vertice 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 eliminacion 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 analogos teniendo en cuenta que la cola debe ser
dirigida, es decir, para que exista un circuito en cada vertice 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
2.3 Grafos Eulerianos
Teorema 27.- Un multidigrafo conexo tiene un circuito euleriano si, y solo si, todos sus vertices tienen el
mismo ingrado que exgrado (ing(v) = exg(v), para todo v).
Corolario 28.- Un multidigrafo conexo tiene una cola euleriana si, y solo si, ing(v) = exg(v) para todo v, o
si lo verican todos menos dos, x e y, estos han de vericar que ing(x) = exg(x)+1 e ing(y) = exg(y)1
Algoritmo de Fleury (version dirigida) 29.- Si un multidigrafo (V, A) tiene una cola euleriana C, puede
construirse mediante el siguiente algoritmo:
P1. Empezar en el vertice x con exg(x) = ing(x) + 1. Si no lo hay, empezar en cualquier vertice 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 eliminacion 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 G
1
y G
2
los grafos re-
presentados a la derecha
(a) Puede construirse en G
1
una cola euleriana? Y un
circuito?
(b) Que vertices podemos
elegir para comenzar la
cola?
t t t
t t t

@
@
@
@
@
@
@
H
H
H
H
H
H
H
H
H
H
H
H
H
H
@
@
@
@
@
@
@

x
1
x
2
x
3
x
4
x
5
x
6
t
t t
t t
y
1
y
2
y
3
y
4
y
5
A
A
A
A
A

Q
Q
Q
Q
Q
Q
Q
B
B
B
B
B
B
B
H
H
H
H
H

(c) Elegir un vertice y construir una cola euleriana. Escribirla como la sucesion de vertices por donde
pasa. Que longitud ha de tener la cola? Cuantos vertices deben aparecer en su descripcion?
(d) Sea M, la matriz de G
1
. Construir una cola euleriana usando unicamente la matriz M, aplicando
sobre ella el algoritmo de Fleury paso a paso.
Escribir de nuevo la cola como la sucesion de vertices por donde pasa.
(e) El grafo G
2
modela las conexiones de bra optica entre 5 nodos de la red. Para comprobar el
estado de las lneas se enva una unica se nal, que las recorre, y que sera analizada al nal del
recorrido. Si cada lnea debe recorrerse una unica vez, es suciente con enviar una se nal desde
y
1
para comprobar todas las lneas? Puede recogerse la se nal nal tambien en y
1
?
Si la respuesta es armativa para alguna de las preguntas, indicar un recorrido posible para
cumplirlo.
Introducir la matriz M del grafo G
1
.
[i] Obtener el grado de cada vertice y comprobar su paridad. (Ver la funcion mod(m,n), resto
de la division entera de m entre n).
[ii] Construir una funcion que detecte si el grafo tiene o no una cola euleriana.
[iii] Detecta los vertices posibles para comenzar la cola euleriana y elige el de menor ndice.
Matlab 6.1. 13
2.3 Grafos Eulerianos
[iv] Obtener los vertices a los que llegan las aristas que salen de x
3
. Elegir el vertice de menor
ndice y eliminar la arista de G
1
. El grafo resultante sigue siendo conexo?
[v] Lo realizado en el apartado [iv] supone una implementacion parcial del paso P4 del algoritmo
de Fleury. Completar la implementacion 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.
t t t
t t t t

x
1
x
2
x
3
x
4
x
5
x
6
x
7
G
t t
t t t
6
@
@
@
@
@
@
@I
?
-

-
-
v
1
v
2
v
3
v
4
v
5
D
(a) Construir, si existe, una cola euleriana en G usando unicamente su matriz de adyacencia.
Tomar, cuando haya que elegir, el vertice posible de menor ndice.
(b) Se produce alg un cambio en la forma de construir la cola por ser G multigrafo?
(c) Construir, si existe, una cola euleriana en D usando unicamente su matriz de adyacencia.
Tomar, cuando haya que elegir, el vertice posible de menor ndice.
(d) Se produce alg un 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] Modicar, 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 funcion que detecte si un multidigrafo tiene o no una cola euleriana.
[iii] Modicar, si es necesario, el programa realizado en el apartado anterior para obtener una cola
euleriana a partir de la matriz Md del multidigrafo D.
Practica 2.-
1.- Construir una funcion 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 vaca si no existe.
2.- Construir una funcion DiEuler con argumento de entrada la matriz de adyacencia de un
(multi)digrafo y salida una cola euleriana, si existe, y una matriz vaca si no existe.
3.- Construir una funcion 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 un el caso, y
salida una cola euleriana, si existe, y una matriz vaca si no existe.
Matlab 6.1. 14

También podría gustarte