Está en la página 1de 4

1.

3 Grafos Eulerianos

1.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 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 Konigsberg que, como comentamos en la introducci
on,
dio inicio a la teora de grafos.
Muchas de las situaciones de aplicacion de estas cuestiones se plantean sobre multigrafos (multidigrafos), por lo que debemos recordar que en estos pueden existir varias aristas (arcos) entre los mismos
vertices y tambien lazos, aunque son irrelevantes para este estudio.
Puntualicemos ademas, que:
Definici
on 19.- La matriz de adyacencia o matriz de un multigrafo G = (V, A) con vertices V =
{x1 , x2 , . . . , xn }, es una la matriz cuadrada M = (mij )nn donde mij = n o de aristas entre xi y xj .
La matriz de adyacencia o matriz de un multidigrafo D = (V, A) con vertices V = {x1 , x2 , . . . , xn },
es una la matriz cuadrada M = (mij )nn donde mij = n o de arcos desde xi a xj .
Ejemplo 20.- Consideremos el multidigrafo y el multigrafo de abajo. Sus matrices de adyacencia seran

v2
t
t v4
*


6

t

v3 HH 6 6
H
jt
H
t v5
v1


0
0

MD = 1

0
0

2
0
1
0
0

0
0
0
0
0

0
0
0
0
1

0
0

0
1

x1 s
HH
H
HH
Hs x4
x2 s



s
x3 

0
2

MG =
0
1

2
0
2
1

0
2
0
1

1
1

1
0

Observaciones 21.- 1.- La matriz MG es simetrica. Si G no tiene lazos la diagonal principal es nula,
y si G es simple, MG esta formada u
nicamente por ceros y unos.
2.- El grado de un vertice xi es la suma de los elementos dela fila (o columna)
esima mas el n
umero
 i-
de lazos en ese vertice. Es decir, gr(xi ) =

n
P

n
P

mik + mii =

k=1

mki + mii

(cada lazo cuenta 1 en

k=1

la matriz, pero cuenta 2 en el grado del vertice).


3.- El ingrado de un vertice 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
P

k=1

mki y exg(vi ) =

n
P

mik .

k=1

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 solo de un ciclo, se denotan por
Cn donde n es el n
umero de vertices), la Estrella de Mahoma y el multigrafo de los puentes de Konisberg.
s
@
s
A
A
As

@
@s



s

s
C
 C
s
s
Q  C 
Q 
Q
C

s QCs

xs
H
HH
H
HH
s
Hs w
y





s
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, mas a
un tampoco tiene una cola euleriana.
4

Matlab 6.1.

10

1.3 Grafos Eulerianos

Teorema 24.- Un multigrafo conexo tiene un circuito euleriano si, y solo si, todos sus vertices son de
grado par.
Demostracion:
=c (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.
=c Sea G = (V, A) el multigrafo. Empezando en un vertice x cualquiera, se construye una cola
x a1 x1 a2 x2 xp1 ap xp lo mas larga posible. Como de xp no se puede seguir, se han recorrido
todas las aristas incidentes en xp , este vertice tiene que aparecer anteriormente en la cola construida
(gr(xp ) 2); considerando la parte de la cola desde la primera aparicion 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 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 finita de circuitos C1 , . . . , Cr 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 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 solo si, no tiene vertices de grado impar
o tiene un u
nico 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 6= 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 u
nicos 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 u
nicamente los enunciamos:
Matlab 6.1.

11

1.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 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 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.

1.3.1

Ejercicios

3.1 Sean G1 y G2 los grafos representados a la derecha


(a) Puede construirse en G1
una cola euleriana? Y un
circuito?
(b) Que vertices podemos
elegir para comenzar la
cola?

x1

x4

x5

y1

t
t2
t3
HH


@ H
@
@ HH
@ 
HH @
@
H
@
@

HH @

@

H

H@
@
HH

t 
@t
@t
x6

y2

t
BHH



 B HHHt y3
t 


Q

B
A Q

A Q
B 
Q B
A


A  Q

B
Q
QBt y5
t
y4 A

(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 descripci
on?
(d) Sea M, la matriz de G1 . Construir una cola euleriana usando u
nicamente 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 G2 modela las conexiones de fibra optica entre 5 nodos de la red. Para comprobar el
estado de las lneas se enva una u
nica se
nal, que las recorre, y que sera analizada al final del
recorrido. Si cada lnea debe recorrerse una u
nica vez, es suficiente con enviar una se
nal desde
y1 para comprobar todas las lneas? Puede recogerse la se
nal final tambien 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 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.

12

1.3 Grafos Eulerianos

[iv] Obtener los vertices a los que llegan las aristas que salen de x3 . Elegir el vertice de menor
ndice y eliminar la arista de G1 . 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.
x1

x2

x3

x4

G
t

x5

x6

x7

v1

v2
t
t
6
I
@
@
@
@
@
@

t
@t?

v4

- t3

v5

(a) Construir, si existe, una cola euleriana en G usando u


nicamente 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 u
nicamente 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] 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 funcion 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
actica 1.1.- Construir una funcion Euleriano con argumento de entrada la matriz de adyacencia de un
(multi)grafo no dirigido que nos indique si existe (1) o no existe (0) cola euleriana.
2.- Construir una funcion Euler con argumento de entrada la matriz de adyacencia de un (multi)grafo
no dirigido y salida una cola euleriana.
3.- Construir una funcion Euleriano D con argumento de entrada la matriz de adyacencia de un
(multi)grafo dirigido que nos indique si existe (1) o no existe (0) cola euleriana dirigida.
4.- Construir una funcion Euler D con argumento de entrada la matriz de adyacencia de un
(multi)digrafo y salida una cola euleriana dirigida.
5.- Construir una funcion Cola Euler con argumento de entrada la matriz de adyacencia de un
(multi)grafo o un (multi)digrafo que detecte la existencia o no de cola euleriana, y con salida una
cola euleriana, si existe, y una matriz vaca si no existe.
(Para obtener la cola euleriana, que llame a las funciones Euler o Euler D, seg
un el caso.)
Matlab 6.1.

13

También podría gustarte