Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Grafos Eulerianos Multigrafos PDF
Grafos Eulerianos Multigrafos PDF
3 Grafos Eulerianos
Ejemplo 20.- Consideremos el multidigrafo y el multigrafo de abajo. Sus matrices de adyacencia seran
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 simetrica. Si G no tiene lazos la diagonal principal es nula,
y si G es simple, MG esta formada unicamente por ceros y unos.
Definicion 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 numero de vertices), la Estrella de Mahoma y el multigrafo de los puentes de Konisberg.
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, mas aun 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.
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 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 6= y , anadimos 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 anadir 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.
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 .
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. 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 (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.
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 .
1.3.1 Ejercicios
(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 G1 . 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 G2 modela las conexiones de fibra optica entre 5 nodos de la red. Para comprobar el
estado de las lneas se enva una unica senal, que las recorre, y que sera analizada al final del
recorrido. Si cada lnea debe recorrerse una unica vez, es suficiente con enviar una senal desde
y1 para comprobar todas las lneas? Puede recogerse la senal final tambien en y1 ?
Si la respuesta es afirmativa para alguna de las preguntas, indicar un recorrido posible para
cumplirlo.
[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.
[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 unicamente su matriz de adyacencia.
Tomar, cuando haya que elegir, el vertice posible de menor ndice.
(b) Se produce algun 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 algun cambio en la forma de construir la cola por ser D dirigido?
[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 .
Practica 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, segun el caso.)
Matlab 6.1. 13