Está en la página 1de 170

GRAFOS

Representacin matricial

Representacin matricial

GRAFOS PLANOS

En un mapa de carreteras, las lneas que indican las carreteras y


autopistas se intersecan por lo general solamente en puntos de
confluencia o en poblaciones. Pero hay ocasiones en que las carreteras
parecen intersecarse cuando una se localiza sobre otra, en este caso,
las carreteras estn en diferentes niveles o planos.

Definicin Un grafo (o multigrafo) G es plano si podemos


dibujar G en el plano de modo que sus aristas se intersequen
slo en los vrtices de G. Este dibujo de G se conoce como una
inmersin de G en el plano.

EJEMPLO Los grafos de la figura son planos. El primero es un grafo 3regular, ya que cada vrtice tiene grado 3 ; es plano pues ningn par
de aristas se intersecan, excepto en los vrtices. El grafo b) parece
un grafo no plano; las aristas {x, z} y {w, y} se cruzan en un punto
distinto de un vrtice. Sin embargo, podemos trazar nuevamente
este grafo, como se muestra en la parte c) de la figura. En
consecuencia K4 es plano.

Ejemplo
Grafos planos. Un grafo plano es aqul que se puede dibujar en un solo plano
y cuyas aristas no se cruzan entre s. Ejemplo:
a
b

c
d
f

Euler establece que la ecuacin R = L V +2 es vlida para un grafo plano y conexo.


En donde R: Numero de regiones (reas), L: Nmero de lados (arcos) y V: Nmero
de vrtices (nodos).
a

c
2

b
4
e

A = L V +2
6 = 10 6 +2

d
3

6
5
f

Observar cmo la parte que rodea al


grafo tambin se cuenta como rea.

Las reas que permanecen conexas cuando las aristas son eliminadas se
denominan regiones. Todo grafo plano tiene exactamente una nica regin no
acotada llamada la regin exterior. Los vrtices y aristas incidentes con una
regin R se denominan la frontera de R.

G tiene 5 Regiones.
Observacin: V = 8
L= 11
R =5
V+R-L=2
Regin Exterior

Teorema: (Formula de Euler). Si G es un grafo conexo plano con V vrtices,


L aristas y R regiones, entonces
V - L+ R = 2

Procedemos por induccin.


Si L=0. Entonces G= K1 por lo que R =1, V = 1, L = 0 y 1+1-0 = 2 se cumple.
Suponemos que se cumple para L = k-1. Sea G un grafo de tamao V con R
regiones y se cumple que V+ R - k-1 = 2
Lo probamos para un grafo G de k aristas con V vrtices y R regiones.
Si G es un rbol se tiene que L = V - 1 y R = 1. Entonces V+1- V+1=2 y se
cumple.
Si G no es un rbol entonces tiene un ciclo. Eliminamos una arista de ese ciclo
con lo que G-e tiene orden V, tamao k-1 y R-1 regiones. Entonces como
L=k-1 sabemos que es cierto y se tiene que:
V+R-1 (k-1)=2 o lo que es lo mismo
V+R- k = 2 que es lo que queramos probar.

Definicin: Un grafo plano se dice maximal si para cualquier par de vrtices u,v
no adyacentes de G, el grafo G+uv no es planar.
Teorema: Si G es planar maximal (V,L) con V 3. Entonces L=3V-6.
Si dibujamos G de forma que sea plano con R regiones entonces cada
regin es un triangulo. Si no:

Si sumamos todas las aristas de todos los tringulos de forma independiente,


tendramos 3R. Como cada arista toca dos regiones, este numero seria 2L.
Es decir 3R =2L o R=2L/3. Por el teorema de Euler:
V L + R = 2 => V = L R + 2 => V = L 2L/3 + 2 => V = L/3 + 2
=> L = 3V - 6

Consecuencia: Si G es planar (V, L) con V 3. Entonces L 3V - 6.


Si G es maximal, entonces por el teorema anterior L = 3V - 6.
Si no es maximal, aadimos aristas hasta que sea maximal planar (V,L).
Entonces V=V L < L. Con lo que L < L = 3V 6 = 3V - 6.
Teorema: Todo grafo planar tiene un vrtice de grado 5 o menos
Sea G un grafo planar con V 7 ya que de otra forma todos los vrtices
tendran grado 5 o menos.
Por la consecuencia anterior L 3V - 6 o lo que es lo mismo 2L 6V - 12
Como v i =2L 6V - 12 . Entonces no todos los vrtices pueden tener
grado 6 ya que sino seria mayor que 6V - 12.

Definicin: Un grafo que puede ser dibujado en el plano sin que sus aristas se
intersecten se denomina planar. Un grafo que es dibujado en el plano sin que
ninguna de sus aristas se intersecten se denomina plano.

Grafo planar

Grafo plano

Teorema: Los grafos K5 y K3,3 son no planares.

Tanto K5 como K3,3 se utilizan


como patrones para demostrar
que otros grafos ms grandes
no son planos.

K5 tiene orden 5 y L=10. Entonces 3V - 6 = 9 < L.


Entonces vimos anteriormente que no puede ser planar

En este caso se cumple la formula. Se necesita una forma


diferente. (reduccin al absurdo)
Supongamos que fuese planar. Entonces se debera
cumplir la formula de Euler. Por tanto, 6 9 + R = 2
implica que R = 5.
Como es bipartito cada regin debera tener 4 aristas. Si
sumamos el numero de aristas de las regiones tenemos
que N 4R.
Por otro lado, como K3,3 no tiene puentes toda arista esta
en 2 regiones. Entonces N = 2L = 18 => 4R 18 o lo que
es lo mismo R menor que 3,5. Lo cual es absurdo y por
tanto planar.

Definicin: Una subdivisin de un grafo G es un grafo obtenido insertando vrtices


de grado 2 en las aristas de G.

Teorema de Kuratowski: Un grafo es planar si y solo si no contiene un subgrafo


isomorfo a K5 o a K3,3 o a una subdivisin de K5 o a K3,3 .

Algoritmo para ver si un grafo es planar:


1.- Encontrar un ciclo que contenga todos los vrtices del grafo
2.- Dibujar las aristas que no han sido usadas dentro y fuera del grafo
sin que se intersecten.

Ejemplo:
a

Ejemplo:
a

Ejemplo:
a

Ejemplo 2:

Planar

No Planar

Ejemplo
Solucin
Dibujar en forma plana el siguiente
grafo, o bien demostrar que no es plano
encontrando dentro de l un grafo K3,3 o
K5. En caso de ser plano probar que se
cumple la ecuacin de Euler R=L-V+2.

Por ms que se trate de dibujar el grafo en


forma plana no va a ser posible, ya que
tiene dentro de l un grafo no plano K3,3.
3
5

10

4
7

4
7

De esta forma si se eliminan las


aristas punteadas, los vrtices de
valencia dos y los nodos que
queden desconectados se
descubrir un grafo K3,3.

Ejemplo
Dibujar en forma plana el siguiente
grafo o bien demostrar que no es plano
encontrando dentro de l un grafo K3,3 o
K5. En caso de ser plano probar que se
cumple la ecuacin de Euler R=L-V+2.

3
3

8
11

10

Tampoco este grafo es plano ya que


dentro de l se puede encontrar:

8
9

Eliminando los lados de lnea punteada y los vrtices {1,


3, 5, 8, 10 y 11} se encuentra que hay un grafo K 5 y que
por lo tanto este grafo no es plano.

Ejemplo
Dibujar en forma plana el siguiente
grafo o bien demostrar que no es plano
encontrando dentro de l un grafo K3,3 o
K5. En caso de ser plano probar que se
cumple la ecuacin de Euler R=L-V+2.

Solucin
En este caso se trata de un grafo plano
como se muestra:

2
11
3

11

2
5

4
7

8
9

10

8
10

En ste se cumple la Ecuacin de Euler:


R=LV+2
11 = 19 10 + 2

Coloracin
Sea G(V,A) un grafo y sea C un conjunto de colores. La coloracin de los
vrtices V del grafo usando un color del conjunto C se encuentra dada por la
funcin.
f: VC

Si v1,v2 V adyacente entonces f(v1) f(v2)

Esto implica que cuando se lleva a cabo la coloracin en vrtices de un


grafo, cada par de vrtices adyacentes v1 y v2 del grafo debern estar
iluminados con un color diferente.
Nmero cromtico
Es el nmero mnimo de colores con que se puede colorear un grafo G
cuidando que los vrtices adyacentes no tengan el mismo color. El nmero
cromtico se indica de la siguiente manera: (G)

Coloracin
La coloracin de grafos es un problema NP-Computable, esto significa que no
hay procedimientos eficientes para llevar a cabo esta tarea, sin embargo
existen mtodos aproximados que pueden dar buenos resultados. Uno de ellos
es:
1)

Seleccionar el vrtice de mayor valencia v e iluminarlo con un color


cualquiera del conjunto C.

2)

Colorear los vrtices adyacentes al vrtice v verificando que no existan


vrtices adyacentes del mismo color. En caso de ser necesario llevar a
cabo intercambio de colores con la finalidad de usar la menor cantidad
de ellos. Si ya estn coloreados todos los vrtices del grafo finalizar, en
caso contrario continuar con el paso 3.

3)

Seleccionar el vrtice v de mayor valencia que ya est coloreado y que


todava tenga vrtices adyacentes sin colorear. Regresar a paso 2.

Se recomienda colorear del mismo color tantos vrtices como sea posible e
iluminar al mismo tiempo los vrtices que compartan nodos vecinos.

Ejemplo

f,3

Encontrar el nmero cromtico del


siguiente grafo G.
e

b
f

h,1

a
d
G

Paso 3:

j,2

d,3

c,2

Vrtice
seleccionado

h,1

Paso 1:

j,2

d,3

g,2

f,3

Paso 2:

h,1

a
c,2

g,2

Paso 2:

b,3

g,2

f,3

h,1

a,1
d,3

c,2
G

j,2

Ejemplo
Vrtice
seleccionado

Paso 3:

b,3

g,2
f,3

h,1

a,1

j,2

d,3

c,2
G

Paso 2:

b,3

g,2
f,3

h,1

a,1

j,2

El nmero cromtico es
por lo tanto:
(G) = 3

d,3

c,2
G

Caractersticas del nmero cromtico


1) Un grafo G tiene nmero cromtico (G) = 1 si y slo si no tiene aristas.

Ya que un vrtice slo puede


iluminarse de un solo color

c,1

2) El nmero cromtico para un camino o un ciclo de longitud 2 es (G) = 2


ya que siempre se podrn alternar los colores.

a,1

b,2

c,1

c,1

(G) = 2

d,2

Coloracin
Hmster

Len

Len

Conejo

Hurn
Hurn

Tigre

Hmster
Conejo

Tigre

Definicin:
Un conjunto de vrtices S en un grafo se dice independiente si ningn par de
vrtices de S son adyacentes.
Un conjunto independiente S se dice independiente maximal si S no es un
subconjunto de algn otro conjunto independiente de vrtices de S.

Conjunto Independiente

Conjunto Independiente maximal

Definicin: El nmero de vrtices del mayor conjunto independiente maximal de S


se denomina el numero de independencia de G y se representa por (G)
(G)= 4

Definicin: Un conjunto S de vrtices de un grafo G se dice que es un conjunto


dominador si todo vrtice que no esta en S es adyacente a algn vrtice de S.
El nmero de dominacin (G) es el numero de vrtices del conjunto dominador mas
pequeo.

(G)=2

Caminos y circuitos

En un grafo se puede recorrer la informacin de diferente manera, lo que


implica seguir distintas rutas para llegar de un nodo del grafo a otro.
Camino. Es una sucesin de lados que van de un vrtice x a un vrtice
w (dichos lados se pueden repetir).
Camino simple de longitud n. Es una sucesin de lados que van de un
vrtice x a un vrtice w, en donde los lados que componen dicho camino
son distintos e iguales a n.
Circuito (Ciclo). Es un camino del vrtice w al vrtice w. Esto es, un
camino que regresa al mismo vrtice de donde sali.
Circuito simple de longitud n. Es aqul camino del vrtice w al vrtice w
que solamente tiene un ciclo en la ruta que sigue.

Ejemplo

En la tabla siguiente se
muestran distintos recorridos
del grafo que se encuentra al
lado.
Recorrido
{a,c,d,f}
{c,b,a,h,a}
{b,c,d,e,e,c,b}
{c,e,d,c}
{e,e}
{a,c,e,e,g,e,d,c,a}

h
c

Camino Camino simple

e
b

Circuito

Circuito simple

Ejemplo

En la tabla siguiente se
muestran distintos
recorridos del grafo que
se encuentra al lado.
Recorrido

h
c

e
b

Camino Camino simple

Circuito

Circuito simple

{a,c,d,f}

{c,b,a,h,a}

{b,c,d,e,e,c,b}

{c,e,d,c}

{e,e}

{a,c,e,e,g,e,d,c,a}

Camino de Euler. Es el camino que recorre todos los vrtices pasando por
todas las ramas solamente una vez.
a
c

b
d

Una caracterstica del


camino de Euler es que
el recorrido sale de un
vrtice
de
valencia
impar y termina tambin
en
un
vrtice
de
valencia impar.

Camino de Euler es {a, b, e, h, g, e, d, a, c, f, d, g, f, h}

Circuito de Euler. Es aquel ciclo que recorre todos los vrtices pasando por
todos los lados solamente una vez.
La firma del diablo es un juego que consiste en dibujar una figura sin levantar el lpiz
del papel, partiendo de un punto y regresando nuevamente a l, sin pasar dos veces por
una misma arista. Este problema se puede resolver por medio del circuito de Euler.
El algoritmo Fleury permite determinar un circuito de Euler
1) Verificar que el grafo sea conexo y que todos los vrtices tengan valencia par. Si no cumple con
estas condiciones entonces el grafo no tiene circuito de Euler y finalizar.
2) Si cumple con la condicin anterior seleccionar un vrtice arbitrario para iniciar el recorrido.
3) Escoger una arista a partir del vrtice actual. Esa arista seleccionada no debe ser Lado puente* a
menos que no exista otra alternativa.
4) Desconectar los vrtices que estn unidos por la arista seleccionada.
5) Si todos los vrtices del grafo ya estn desconectados, ya se tiene el circuito de Euler y
finalizar. De otra manera continuar con el paso 3.

Ejemplo
A partir del siguiente grafo,
determinar un circuito de
Euler
b

d
c
h

3) Escoger una arista que no 3.1) Escoger una arista que no


sea puente a partir del
sea puente a partir del
vrtice actual. {b,d,e)
vrtice
actual.
(Arista
punteada a{b,d}) b
d

4) Eliminar
la
seleccionada. El
actual ahora es (d).
1) Se observa que es conexo y
todos los vrtices tienen valencia
par, por lo tanto tiene circuito de
Euler.
2) Seleccionar un vrtice arbitrario,
por ejemplo {b} y llamarlo vrtice
actual.

d
c
h

arista 4.1) Eliminar


la
arista
vrtice
seleccionada. El vrtice
actual ahora es (e)

d
c

Usando el algoritmo de Fleury

a
e

d
c

5) Si todos los vrtices del grafo


ya fueron eliminados, ya se
tiene el circuito de Euler, en
caso contrario regresar al
paso 3.

e
f

Ejemplo
3.2) Escoger una arista que no 3.3) Escoger una arista que no
sea puente a partir del
sea puente a partir del
vrtice actual. {b,d,e,b)
vrtice actual. {b,d,e,b,c)
b

d
g

e
f

3.4) Escoger una arista que no


sea puente a partir del
vrtice actual. {b,d,e,b,c,h).
Observar cmo en este
caso no puede ser la arista
(c,a) ya que es puente y el
grafo ya no sera conexo.

d
c
h

4.2) Eliminar
la
arista
seleccionada. El vrtice
actual ahora es (b).
b

d
c
h

4.3) Eliminar
la
arista
seleccionada. El vrtice
actual ahora es (c).
b

a
e
f

d
c
h

4.4) Eliminar
la
arista
seleccionada. El vrtice
actual ahora es (h).
b

d
e
f

c
h

e
f

Continuar hasta que todos los vrtices estn


desconectados para obtener el circuito de Euler .

Definicin: Un circuito es un recorrido con el mismo origen y final.


Un circuito euleriano de un multi - grafo conexo G es un circuito que contiene
todas las aristas de G.
Un grafo G con un circuito euleriano se denomina un grafo euleriano.

u9

u8

u1 u2u8-u9-u2-u3-u4-u2-u7-u4-u5-u6-u7-u1
u1

u2
u3

u1

u4

u7

u5

u6

u7

u2

u6

u8

u5

u9

u2

u4

u3

u7

Otra posibilidad:
u1-u2-u7-u4-u2-u8-u9-u2-u3-u4-u5-u6-u7-u1

u4

u2

Definicin: Un recorrido es una cadena sin aristas repetidas (se pueden


repetir vrtices).
Un recorrido euleriano de un multi - grafo conexo G es un recorrido que
contiene todas las aristas de G.

v1
v2
v6

v5

v3

v4

v1v2-v4-v3-v2-v6-v5-v4
Otra opcin:
v1-v2-v3-v4-v2-v6-v5-v4

Teorema: Un multigrafo conexo G es euleriano si y solo si el grado de cada vrtice


es par.

Si G es euleriano entonces todos los vrtices tienen grado par.


Entonces contiene un circuito euleriano que empieza y acaba en un vrtice v.
Cada vez que aparece un vrtice u v en el circuito , se aade dos a su grado. Ya
que por una arista se accede y por otra se sale.
Lo mismo ocurre con v, excepto para la primera y ultima aparicin que aaden 1.
si todos los vrtices tienen grado par entonces G es euleriano.
Suponemos que todos los vrtices tienen grado par y construimos el circuito euleriano T.
Elegimos un vrtice v y empezamos un recorrido hasta que llegamos a un vrtice que
ya no tiene aristas que no hayamos usado. Entonces cuando esto pasa, este vrtice es
v. Por qu?
Antes de llegar a w por ultima vez, cada vez que hemos pasado por el hemos restado
dos grados: el de la arista de entra y el de la arista de salida. Cuando accedemos a w
por ultima vez, hemos usado un numero impar de aristas. Si este vrtice w no fuese v
debera tener otra arista que no hemos usado porque si no tendra grado impar.
Esto contradecira la hiptesis de que no tiene mas aristas que no han sido usadas.
Entonces, T es un circuito.

Si T ha usado todas las aristas es un circuito euleriano.


Si no se han usado todas las aristas y como G es conexo, existe algn vrtice v de T
que tiene aristas que no han sido usadas. (Si no el resto de los vrtices no usados no
estaran conectados a los de T)
Sea H el grafo que se obtiene de G eliminando las aristas del circuito T.
Por el mismo razonamiento anterior, podemos encontrar un circuito T que comience
en v. Este circuito se puede insertar en T de forma que tengamos un circuito T1 que
contiene las aristas de ambos circuitos.
Si este circuito ha usado todas las aristas de G seria un circuito euleriano.
Si no vamos repitiendo el proceso hasta que en algn momento se hayan usado todas
las aristas.

Ejemplo1:

v2

v1

v5

v3
v6

v4

-Es conexo.
-Todos los vrtices tienen grado par.
Entonces existe un circuito euleriano.

Ejemplo1:

v2

v1

v5

v1-v2

v3
v6

v4

Ejemplo1:

v2

v1

v5

v1-v2-v3

v3
v6

v4

Ejemplo1:

v2

v1

v5

v1-v2-v3-v4

v3
v6

v4

Ejemplo1:

v2

v1

v5

v1-v2-v3-v4-v5

v3
v6

v4

Ejemplo1:

v2

v1

v5

v1-v2-v3-v4-v5-v6

v3
v6

v4

Ejemplo1:

v2

v1

v5

v1-v2-v3-v4-v5

v3
v6

v4

Ejemplo1:

v2

v1

v5

v1-v2-v3-v4-v5

v3
v6

v4

v3-v5

Ejemplo1:

v2

v1

v5

v1-v2-v3-v4-v5-v6

v3
v6

v4

v3-v5-v6

Ejemplo1:

v2

v1

v5

v1-v2-v3-v4-v5-v6

v3

v3-v5-v6-v3

v6
v1-v2-v3-v5-v6-v3-v4-v5

v4

Ejemplo2:
-Es conexo.
-Todos los vrtices tienen grado par.
Entonces existe un circuito euleriano.
v2

v6

v4
v3

v7
v5

v1

Ejemplo2:

v1-v4-v6-v2-v5-v1
v2

v6

v4
v3

v7
v5

v1

Ejemplo2:

v1-v4-v6-v2-v5-v1
v2

v6

v4
v3

v7
v5

v1

Ejemplo2:

v1-v4-v6-v2-v5-v1
v2

v6

v4
v2-v7-v6-v5-v7-v3-v4-v2
v3

v7
v5

v1

v1-v4-v6-v2-v7-v6-v5-v7-v3-v4-v2- v5-v1

Teorema: Sea G un multigrafo conexo no trivial. Entonces G contiene un recorrido


euleriano si y solo si tiene dos vrtices de grado impar. Adems, el recorrido
empieza en uno de ellos y acaba en el otro.

Sea G un grafo con nicamente dos vrtices impares u y v.


Sea H el grafo que se obtiene aadiendo un vrtice z que no pertenece a G y las
aristas uz y vz. Entonces como H es conexo y todos los vrtices tienen grado par
existe un circuito euleriano:

u1

u2

u3

un-1

un

Entonces:

u1

u2

u3

Es un recorrido euleriano.

un-1

un

ANIMACION DEL
GUARDIA DE
SEGURIDAD

6.2 Euler Graphs

59

Drats!
Im Stuck
A

L
K

Start

Employee
Parking Lot

Darn!
I got all the doors, but
A

J
K
M

Start

L
N

Employee
Parking Lot

In floor plans the vertices


are

1. The rooms
2. The doors

All Clear!!

L
K

Employee
Parking Lot

Start

Caminos y ciclos
Hamiltonianos

En 1859, el matemtico irlands Sir William


Rowan Hamilton (1805-1865) desaroll un
juego que vendi a un fabricante de juguetes
de Dubln. El juego era un dodecaedro regular
de madera con 20 esquinas (vrtices) en las
que aparecan inscritos los nombres de las
ciudades ms importantes. El objetivo del juego
era encontrar un ciclo alrededor de las aristas
del slido, de modo que cada ciudad estuviera
en el ciclo (exactamente) una vez.

Grafos Hamiltonianos
Definicin: Un grafo G se dice que es Hamiltoniano si tiene un ciclo recubridor.
Es decir, un ciclo que pasa por cada vrtice una sola vez.

Ejemplo
Circuito de Hamilton. Es un problema similar al circuito de Euler, pero en lugar de
pasar por todos los lados del grafo solamente una vez como lo hace el circuito de
Euler, en el circuito de Hamilton se pasa por cada vrtice solamente una vez.
En un grafo se sabe de antemano que tiene un circuito de Euler, si es conexo y
todos sus vrtices tienen valencia par, pero no hay forma de saber con anticipacin
si tiene o no un circuito de Hamilton.
Ejemplo:

Respuesta

Encontrar (si es posible) un


circuito de Hamilton en el
siguiente grafo.

Observar como
no es
necesario que
se pase por
todas las
aristas.

a
b

c
f

g
i

g
i

Circuito de Hamilton:
{a,b,h,g,e,j,i,f,d,c,a}

El nmero de vrtices se denomina el


orden p de un grafo.
El nmero de aristas es el tamao q del
grafo.
U
Z

Orden=6
Tamao=5

Y
W
X

Observacin: q es menor o igual a p (p-1)/2.

Ningn grafo conexo con vrtices de corte es Hamiltoniano:


Teorema. Si un Grafo G es Hamiltoniano, entonces
K (G-S) | S |
Para todo subconjunto propio no vaco S de V (G).
Sea G un grafo Hamiltoniano y sea C un ciclo Hamiltoniano. Sea n el numero
de componentes de G-S: G1, G2, , G n. Sea ui el ultimo vrtice de Gi i sea vi el
vrtice que inmediatamente sigue a ui en C. Entonces vi pertenece a S y hay tantos
vrtices en S como componentes en G-S.

Observar que este teorema sirve para probar que un grafo es no Hamiltoniano. Pero
Podra habar algunos grafos no Hamiltonianos que tienen esta propiedad.!!!!!!!!

El Grafo de Petersen.

Definicin: Un camino Hamiltoniano de un grafo G es un camino recubridor de G

Definicin Si G = (V, E) es un grafo o


multigrafo tal que |V| 3, decimos que G tiene
un ciclo Hamiltoniano si existe un ciclo en G
que contenga cada vrtice de V. Un camino
Hamiltoniano es un camino simple (y no un
ciclo) de G que contiene todos los vrtices.
Dado un grafo con un ciclo hamiltoniano, la
eliminacin de cualquier arista en el ciclo
produce un camino hamiltoniano. Sin embargo,
es posible que un grafo tenga un camino
hamiltoniano
sin
que
tenga
un
ciclo
hamiltoniano.

Podra parecer que la existencia de un ciclo


(camino) Hamiltoniano y la existencia de un
circuito (recorrido) Euleriano para un grafo
son problemas similares.
El ciclo (camino) Hamiltoniano tiene como
objetivo pasar por cada vrtice de un grafo una
sola vez; el circuito (recorrido) recorre el grafo
pasando por cada arista exactamente una vez.
Por desgracia, no existe una relacin til entre
las dos ideas y, a diferencia de los circuitos
(recorridos) Eulerianos, no existen condiciones
necesarias y suficientes en un grafo G que
garanticen la existencia de un ciclo (camino)
Hamiltoniano.

EJEMPLO Si G es el grafo de la figura, las aristas


{a,b}, {b,c}, {c,f}, {f,e}, {e,d}, {d,g}, {g,h},
{h,i} forman un camino hamiltoniano para G.
Pero tiene G un ciclo Hamiltoniano?.
Como G tiene nueve vrtices, si existe un ciclo
Hamiltoniano en G, ste debe contener nueve
aristas. Comencemos en un vrtice b y
tratemos de construir un ciclo Hamiltoniano.
Con las aristas {c, f} y
{f, i} en el ciclo, no
podemos tener la arista
{e, f} en el ciclo. Una
vez
en
e,
ya
no
podemos continuar. Por
lo tanto, este grafo no
tiene
un
ciclo

Sugerencias tiles para tratar de encontrar un ciclo


Hamiltoniano en un grafo G = (V, E).
1) Si G tiene un ciclo Hamiltoniano, entonces para
vV, grad(v) 2.
2) Si aV y grad(a) = 2, entonces las dos aristas
incidentes con el vrtice a deben aparecer en
cualquier ciclo Hamiltoniano de G.
3) Si aV y grad(a) 2, cuando tratamos de construir
un ciclo Hamiltoniano, una vez que hemos pasado por
el vrtice a, dejamos de tener en cuenta las aristas
no utilizadas incidentes con a.
4) Al construir un ciclo Hamiltoniano para G, no
podemos obtener un ciclo para un subgrafo de G a
menos que contenga todos los vrtices de G.

EJEMPLO En la figura tenemos un grafo conexo G y


queremos saber si G contiene un camino
Hamiltoniano. La parte b) de la figura proporciona el
mismo grafo con un conjunto de etiquetas x, y.

Ahora, como
, si G tuviera un ciclo
V 10
Hamiltoniano
debera
haber
una
sucesin
alternativa de 5 letras x y 5 letras y. Solamente
tenemos 4 vrtices etiquetados con x. De ah que G
no tenga un camino (o ciclo) Hamiltoniano.

Porqu funciona este argumento? En la figura se ha


vuelto a dibujar el mismo grafo y vemos que es bipartito.
Un grafo bipartito no puede tener un ciclo de longitud
impar. Tambin es cierto que si el grafo no tiene un ciclo
simple de longitud impar, entonces es bipartito. En
consecuencia cuando un grafo conexo no tiene ciclo de
longitud impar (y es bipartito), el mtodo descrito
anteriormente puede ser til para determinar si el grafo
no tiene un camino Hamiltoniano.

EJEMPLO En el campamento que el profesor Alfredo ha


organizado con su grupo de antropologa, 17
estudiantes comen juntos en una mesa circular. Como
intentan conocerse mejor, tratan cada tarde de
sentarse con dos compaeros distintos. Durante
cuntas
tardes
hacer
esto? Cmo
pueden
Para
resolver
estepueden
problema,
consideremos
el grafo
Kn,
hacerlo?.
donde n 3 y n es impar. Este grafo tiene n vrtices
(uno para cada estudiante)
y
aristas.
n
n n 1 / 2
2
Un ciclo Hamiltoniano corresponde a una disposicin de
lugares. Cada uno de estos ciclos tiene n aristas, por lo
n mximo
que se tiene
como
1 / n n 1 / 2
ciclos Hamiltonianos
sin que dos
2
de ellos tengan una arista en comn.

Consideremos el crculo de la figura a) y el subgrafo de


Kn que consta de n vrtices y n aristas {1,2}, {2,3}, ... ,
{n1, n}, {n, 1}. Mantenemos los vrtices en la
circunferencia fijos y rotamos este ciclo Hamiltoniano en
el sentido de las manecillas del reloj, hasta el ngulo [1/
(n1)](2). Esto produce el ciclo Hamiltoniano (ver b))
formado por las aristas {1,3}, {3,5},{5,2},{2,7}, ... ,
{ n, n3},{n3, n1}, {n1, 1}. Este ciclo Hamiltoniano
no tiene aristas en comn con el primer ciclo.

Si n 7 y seguimos rotando de esta manera el ciclo de la


figura a), hasta los ngulos [k/(n1)]( 2), donde 2 k
(n3)/2 obtenemos un total de (n1)/2 ciclos
Hamiltonianos, sin que haya dos aristas en comn.
Por lo tanto, los 17 estudiantes que participan en el
campamento pueden comer durante [(17-1)/2] = 8 das
antes de que tengan que sentarse junto a otro estudiante
por segunda vez. Usando la figura a) con n=17, podemos
obtener ocho de estas posibles disposiciones.

Algoritmos sobre grafos

Algoritmos de Grafos No
Dirigidos

Algoritmos de rboles abarcadores de


costo mnimo:
Algoritmo de Prim.
Algoritmo de Kruskal.

Algoritmos de determinacin de los


caminos ms cortos:
Algoritmo del camino ms corto.

Algoritmos de recorrido o bsqueda:


Algoritmo de bsqueda en anchura.
Algoritmo de bsqueda en profundidad.
Bosques abarcadores.
81

rboles de expansin:
Algoritmo de Prim
Un rbol de expansin de un grafo no
dirigido G=(V,A) y conexo, es un subgrafo
G=(V,A) no dirigido, conexo y sin ciclos.
Importante: contiene todos los vrtices de G.
El algoritmo de Prim intenta encontrar un
rbol de expansin de un grafo, cuyas aristas
sumen el peso mnimo.

Algoritmos de Grafos No Dirigidos


rboles Abarcadores de Costo
Mnimo

Sea G = (V,A) un grafo conexo en donde cada


arista (u,v) de A tiene un costo asociado
c(u,v).
Un rbol abarcador de G es un rbol libre que
conecta todos los vrtices de V, su costo es la
suma de los costos de las aristas del rbol.
Se quiere obtener el rbol abarcador de costo
mnimo para G.

Una aplicacin tpica de los rboles


abarcadores de costo mnimo tiene lugar en el
diseo de redes de comunicacin.
Un rbol abarcador de costo mnimo representa

Hay diferentes maneras de construir un


rbol abarcador de costo mnimo.
Muchos mtodos utilizan la propiedad
AAM.
Sea G = (V,A) un grafo conexo con una funcin
de costo definida en las aristas.
Sea U algn subconjunto propio del conjunto
de vrtices V.
Si (u,v) es una arista de costo mnimo tal que u
U y v V-U, existe un rbol abarcador de
costo mnimo que incluye (u,v) entre sus
aristas.

El algoritmo de Prim es un algoritmo de


la teora de los grafos para encontrar un
rbol abarcador de costo mnimo en un
grafo conexo, no dirigido y cuyas aristas
estn etiquetadas.
En otras palabras, el algoritmo encuentra
un subconjunto de aristas que forman un
rbol con todos los vrtices, donde el peso
total de todas las aristas en el rbol es el
mnimo posible.
Si el grafo no es conexo, entonces el
algoritmo encontrar el rbol abarcador de
costo
mnimo
para
uno
de
los
componentes conexos que forman dicho
grafo no conexo.

El algoritmo fue diseado en 1930 por el


matemtico Vojtech Jarnik y luego de
manera independiente por el cientfico
computacional Robert C. Prim en 1957 y
redescubierto por Dijkstra en 1959.
Por esta razn, el algoritmo es tambin
conocido
como
algoritmo
DJP
o
algoritmo de Jarnik.

86

El algoritmo comienza cuando se asigna a un


conjunto U un valor inicial (un vrtice del
grafo), en el cual crece un rbol abarcador,
arista por arista.
En cada paso localiza la arista ms corta
(u,v) que conecta los vrtices, y despus
agrega u en U. Este paso se repite hasta que
U = V.

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

Ejemplo:
Encontrar el rbol abarcador de costo
mnimo del siguiente grafo no dirigido
utilizando el algoritmo de Prim.

12 3 4 5 6
1 6 1 5
2 6 5 3
3 1 5 5 6 4

4 5 5 2
5 3 6 6

6 4 2 6

V-U

---

{1,2,3,4,5,
6}

{1}

{2,3,4,5,6
}

12 3 4 5 6
1 6 1 5
2 6 5 3
3 1 5 5 6 4

4 5 5 2
5 3 6 6

6 4 2 6
T

V-U

---

{1,2,3,4,5,
6}

{1}

{2,3,4,5,6
}

{(1,3)}

{1,2,3,4,5,
6}

{1,3}

{2,4,5,6}

12 3 4 5 6
1 6 1 5
2 6 5 3
3 1 5 5 6 4

4 5 5 2
5 3 6 6

6 4 2 6
T

V-U

---

{1,2,3,4,5,
6}

{1}

{2,3,4,5,6
}

{(1,3)}

{1,2,3,4,5,
6}

{1,3}

{2,4,5,6}

{(1,3),(3,6)}

{1,2,3,4,5,
6}

{1,3,6}

{2,4,5}

12 3 4 5 6
1 6 1 5
2 6 5 3
3 1 5 5 6 4

4 5 5 2
5 3 6 6

6 4 2 6
T

V-U

---

{1,2,3,4,5,
6}

{1}

{2,3,4,5,6
}

{(1,3)}

{1,2,3,4,5,
6}

{1,3}

{2,4,5,6}

{(1,3),(3,6)}

{1,2,3,4,5,
6}

{1,3,6}

{2,4,5}

{(1,3),(3,6),(6,4)}

{1,2,3,4,5,
6}

{1,3,4,6}

{2,5}

12 3 4 5 6
1 6 1 5
2 6 5 3
3 1 5 5 6 4

4 5 5 2
5 3 6 6

6 4 2 6

102

V-U

---

{1,2,3,4,5,6}

{1}

{2,3,4,5,6}

{(1,3)}

{1,2,3,4,5,6}

{1,3}

{2,4,5,6}

{(1,3),(3,6)}

{1,2,3,4,5,6}

{1,3,6}

{2,4,5}

{(1,3),(3,6),(6,4)}

{1,2,3,4,5,6}

{1,3,4,6}

{2,5}

{(1,3),(3,6),(6,4),(3,2)}

{1,2,3,4,5,6}

{1,2.3,4,6}

{5}

12 3 4 5 6
1 6 1 5
2 6 5 3
3 1 5 5 6 4

4 5 5 2
5 3 6 6

6 4 2 6

103

V-U

---

{1,2,3,4,5,6}

{1}

{2,3,4,5,6}

{(1,3)}

{1,2,3,4,5,6}

{1,3}

{2,4,5,6}

{(1,3),(3,6)}

{1,2,3,4,5,6}

{1,3,6}

{2,4,5}

{(1,3),(3,6),(6,4)}

{1,2,3,4,5,6}

{1,3,4,6}

{2,5}

{(1,3),(3,6),(6,4),(3,2)}

{1,2,3,4,5,6}

{1,2.3,4,6}

{5}

{(1,3),(3,6),(6,4),(3,2),(2,5)}

{1,2,3,4,5,6}

{1,2,3,4,5,6}

{}

12 3 4 5 6
1 6 1 5
2 6 5 3
3 1 5 5 6 4

4 5 5 2
5 3 6 6

6 4 2 6

104

V-U

---

{1,2,3,4,5,6}

{1}

{2,3,4,5,6}

{(1,3)}

{1,2,3,4,5,6}

{1,3}

{2,4,5,6}

{(1,3),(3,6)}

{1,2,3,4,5,6}

{1,3,6}

{2,4,5}

{(1,3),(3,6),(6,4)}

{1,2,3,4,5,6}

{1,3,4,6}

{2,5}

{(1,3),(3,6),(6,4),(3,2)}

{1,2,3,4,5,6}

{1,2.3,4,6}

{5}

{(1,3),(3,6),(6,4),(3,2),(2,5)}

{1,2,3,4,5,6}

{1,2,3,4,5,6}

{}

Pseudocdigo del algoritmo:

Algoritmo de Kruskal
El algoritmo de Kruskal es un algoritmo
de la teora de grafos para encontrar un
rbol abarcador de costo mnimo en un
grafo conexo y ponderado.
Es decir, busca un subconjunto de aristas
que, formando un rbol, incluyen todos los
vrtices y donde el valor total de todas las
aristas del rbol es el mnimo.
Si el grafo no es conexo, entonces busca
un bosque abarcador de costo mnimo (un
rbol abarcador de costo mnimo para
cada componente conexa).

Funciona de la siguiente manera:


Se crea un bosque B (un conjunto de
rboles), donde cada vrtice del grafo es
un rbol separado.
Se crea un conjunto C que contenga a
todas las aristas del grafo.
Mientras C es sea vaco:
Eliminar una arista de peso mnimo de C.
Si esa arista conecta dos rboles diferentes
se aade al bosque, combinando los dos
rboles en un solo rbol.
En caso contrario, se desecha la arista.

Al acabar el algoritmo, el bosque tiene


una sola componente, la cual forma un

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

12
5
7

3
6

5
4

11

7
9

10

5
5
3
6

Ejemplo:
Encontrar el rbol abarcador de costo
mnimo del siguiente grafo no dirigido
utilizando el algoritmo de Kruskal.

Costo

Aristas

(1,3)

(4,6)

(2,5)

(3,6)

(1,4) (2,3)
(3,4)

(3,5) (5,6)

Costo

Aristas

(1,3)

(4,6)

(2,5)

(3,6)

(1,4) (2,3)
(3,4)

(3,5) (5,6)

Algoritmo del Camino Ms


Corto

Este algoritmo busca el camino ms corto entre dos


vrtices.
Recibe como entrada el grafo no dirigido G, el
vrtice inicial y el vrtice final.
El algoritmo es el siguiente:
1. D[a] = 0, si x a D[x] = . Se tiene el conjunto de
vrtices T.
2. Si z T terminar y D[z] es la distancia ms corta entre
a y z.
3. Escoja v T donde D[v] es el valor mnimo. T = T {v}.
4. Si x T y es adyacente a v D[x] = min{D[x],D[v]
+c(v,x)}.
5. Pase al paso 2.

10

y
v

10

10

10

u
2

10

10

9
7

u
3

ALGORITMO DE DIJKSTRA
1.- Seleccionar la ciudad origen (a).
2.- Usar una matriz que tenga como columnas el nmero de iteracin, una columna
para cada nodo (a,b,c,d,.), la columna actual que se utilizar para indicar el
vrtice que se seleccione en cada iteracin y una columna seleccionados para
registrar a los vrtices que se van seleccionado en el proceso, como se muestra
en la siguiente tabla.
Iteracin

actual

seleccionados

3.- Colocar en la matriz la distancia que existe de la ciudad origen a ella misma. (Cuando
se trata de encontrar la distancia de una ciudad a ella misma considerar que es 0). A
todas las dems columnas se les coloca como distancia.
Iteracin

actual

seleccionados

4.- Colocar en la columna actual el vrtice que tenga la distancia ms corta de entre
todos los nodos. (Es obvio que en esta primera iteracin es el nodo origen.) En la
columna seleccionados registrar dicho nodo escogido para ya no volverlo a
elegir. (En nuestro caso le colocamos a esta distancia en negrita y subrayado.)

Iteracin

actual

seleccionados

5.- Registrar en la columna de cada uno de los nodos la distancia ms corta que resulta
de sumar la distancia registrada en el nodo actual + distancia a los vrtices
adyacentes a l y seleccionar la distancia ms corta cuyo nodo an no est
seleccionado de esa fila de la matriz. Suponer que d1 > d2, por lo tanto la matriz
ser:

Iteracin

d1

d2

actual
a

seleccionad
os
a

Si el nodo seleccionado tiene una distancia diferente de que es menor o igual a la


que se obtiene de sumar la distancia registrada en la columna del nodo actual + la
distancia de ese nodo actual a los nodos adyacentes a l dejarla tal como est, en caso
contrario cambiarla por la nueva suma.
6.- Registrar en la columna actual el vrtice que tenga la distancia ms corta de entre
todos los nodos y que no haya sido seleccionado hasta ahora. Adems de anotar en
la columna seleccionados dicho nodo para ya no volverlo a elegir.

Iteracin

actual

seleccionado
s

d1

d2

a,c

7.- Si ya estn todos los vrtices seleccionados finalizar. En caso contrario regresar
al paso 5.

Ejemplo:
Encontrar los caminos ms cortos entre
el vrtice 1 y todos los dems del
siguiente grafo dirigido.

Iteraci
n

D[2]

D[3]

D[4]

D[5]

Inicial

{1}

---

10

30

100

Iteraci
n

D[2]

D[3]

D[4]

D[5]

Inicial

{1}

---

10

30

100

{1,2}

10

60

30

100

Iteraci
n

D[2]

D[3]

D[4]

D[5]

Inicial

{1}

---

10

30

100

1
2

{1,2}
{1,2,4}

2
4

10
10

60
50

30
30

100
90

Iteraci
n

D[2]

D[3]

D[4]

D[5]

Inicial

{1}

---

10

30

100

1
2
3

{1,2}
{1,2,4}
{1,2,4,3}

2
4
3

10
10
10

60
50
50

30
30
30

100
90
60

Iteraci
n

D[2]

D[3]

D[4]

D[5]

Inicial

{1}

---

10

30

100

1
2
3

{1,2}
{1,2,4}
{1,2,4,3}
{1,2,4,3,

2
4
3

10
10
10

60
50
50

30
30
30

100
90
60

10

50

30

60

Ejemplo:
Encontrar el camino ms corto entre los
vrtices a y h.

T {a, b, c, d , e, f , g , h}
D[a] 0
D[b]
D[c]
D[d ]
D[e]
D[ f ]
D[ g ]
D[h]

T {b, c, d , e, f , g , h}
D[a ] 0
D[b] 2
D[c]
D[d ]
D[e]
D[ f ] 1
D[b] min{ ,0 2} 2
Adyacente a a
D[ f ] min{ ,0 1} 1

D[ g ]
D[h]

T {b, c, d , e, g , h}
D[a ] 0
D[b] 2
D[c]
D[d ] 4
D[e]
D[ f ] 1
D[d ] min{ ,1 3} 4
Adyacente a f
D[ g ] min{ ,1 5} 6

D[ g ] 6
D[h]

T {c, d , e, g , h}
D[a] 0
D[b] 2
D[c] 4
D[d ] 4
D[e] 6
D[c] min{ ,2 2} 4

Adyacente a b D[d ] min{ 4,2 2} 4


D[e] min{ ,2 4} 6

D[ f ] 1
D[ g ] 6
D[h]

T {d , e, g , h}
D[a ] 0
D[b] 2
D[c] 4
D[d ] 4
D[e] 6
D[ f ] 1
D[e] min{ 6,4 3} 6
Adyacente a c
D[h] min{ ,4 1} 5

D[ g ] 6
D[h] 5

T {e, g , h}
D[a] 0
D[b] 2
D[c] 4
D[d ] 4
D[e] 6
D[ f ] 1
Adyacente a d D[e] min{ 6,4 4} 6

D[ g ] 6
D[h] 5

T {e, g}
D[a ] 0
D[b] 2
D[c] 4
D[d ] 4
D[e] 6
D[ f ] 1
Adyacente a h D[ g ] min{ 6,5 6} 6

D[ g ] 6
D[h] 5

T {e, g}
D[a ] 0
D[b] 2
D[c] 4
D[d ] 4
D[e] 6
D[ f ] 1
D[ g ] 6
D[h] 5

Ejemplo
Encontrar la ruta ms corta para ir de la
ciudad origen (a) a las ciudades restantes.
b
4
a

3
g

3
e

4
2

1
h

3
k

1
2

4
i

Ejemplo
Encontrar la ruta ms corta para ir de la
ciudad origen (a) a las ciudades restantes.
b

c
2
1
3
4
2
d
2 e 4
2
1
f
3
a
2
2
2 1
3
4 k
1
4 j
g
h 2 i

Ite

act

seleccionados

a,e

a,e,b

a,e,b,g

a,e,b,g,h

Ejemplo:

a,e,b,g,h,c

Para ir de a a j la
distancia mnima es 6.
Para ir de a a k la
distancia es 8.

a,e,b,g,h,c,f

a,e,b,g,h,c,f,d

a,e,b,g,h,c,f,d,i

a,e,b,g,h,c,f,d,i,j

10

a,e,b,g,h,c,f,d,i,j,k