Está en la página 1de 4

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 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 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 (multidigrafos ), por lo que debemos recordar que en estos pueden existir varias aristas (arcos) entre los mismos v ertices y lazos. Puntualicemos adem as, que: Denici 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 )nn donde mij = n o 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 )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 ser an
v2 t t v4 B T t v3 rr T T r jt r 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 0 1

x1 s r rr rr rs 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 sim etrica. Si G no tiene lazos la diagonal principal es nula, y si G es simple, MG est a formada u nicamente por ceros y unos. 2.- El grado de un v ertice xi es la suma de los elementos de la la (o columna) i - esima m as el n umero
n n

de lazos en ese v ertice. Es decir, gr(xi ) =


k=1

mik + mii =
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
n n

el exgrado la suma de los elementos de la la: ing(vi ) =


k=1

mki y exg(vi ) =
k=1

mik .

Naturalmente, gr(vi ) = ing(vi ) + exg(vi ) . Denici 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.
s d d ds s e e s es s g g s s g   g  s gs xs r rr r rr s rs 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, m as 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 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 xp1 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 nal, 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 nita 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 u nico 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 u nicos 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 u nicamente los enunciamos:
Matlab 6.1.

12

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 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 (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 representados 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?

x1

x4

2 3 t t t r r d r d d rr d rr d d r d d rr rd d rd d rr t dt dt

y2

x5

x6

t rr f f rr rt y3 t  f e  e f  e  f e  f ft  t y5 y4 e

y1

(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 u nicamente 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 bra optica entre 5 nodos de la red. Para comprobar el estado de las l neas se env a una u nica se nal, que las recorre, y que ser a analizada al nal del recorrido. Si cada l nea debe recorrerse una u nica vez, es suciente con enviar una se nal desde y1 para comprobar todas las l neas? Puede recogerse la se nal nal tambi en en y1 ? Si la respuesta es armativa 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

2.3 Grafos Eulerianos

[iv] Obtener los v ertices a los que llegan las aristas que salen de x3 . Elegir el v ertice 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 on parcial del paso P4 del algoritmo de Fleury. Completar la implementaci on 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

G
x5

x6

x7

v4

E v2 v3 Et t t E T s d d d d d d c ' dt D t
v5

(a) Construir, si existe, una cola euleriana en G usando u nicamente su matriz de adyacencia. Tomar, cuando haya que elegir, el v ertice 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 v ertice 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 funci on 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 .

Pr actica 2.1.- Construir una funci on 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 on 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 on 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 vac a si no existe.

Matlab 6.1.

14

También podría gustarte