Está en la página 1de 14

3.

2 GRAFOS HAMILTONIANOS

UN CAMINO HAMILTONIANO:
Es un camino que visita todos los vértices del grafo, en una sucesión de aristas adyacentes, sin repetirlos.

CICLO HAMILTONIANO
Es un camino que visita todos los vértices del grafo, en una sucesión de aristas adyacentes, una sola vez,
donde el vértice inicial y el final son el mismo.

GRAFO HAMILTONIANO:
Es aquel grafo conexo que admite un CICLO HAMILTONIANO.

GRAFO SEMIHAMILTONIANO:
Es aquel grafo conexo que admite un CAMINO HAMILTONIANO.

UN DIGRAFO HAMILTONIANO:
Definición 1.
Un grafo orientado o dígrafo, se dice hamitoniano si tiene un CICLO ORIENTADO que pasa por cada
vértice de G una y solo una vez.

No se conoce ninguna condición necesaria y suficiente (teorema) que los caracterice. Esto es lamentable
porque en muchas aplicaciones es fundamental poder determinar si un grafo es hamiltoniano.

Ejemplos: Identifique si el grafo es Hamiltoniano o semihamiltoniano o ninguno:


En general:
1. Todo ciclo es un grafo Hamiltoniano.

2. Todo solido regular es Hamiltoniano.

Dodecaedro
Hexaedro

Octaedro Tetraedro
CONDICIONES PARA QUE UN GRAFO SEA HAMILTONIANO
1. CONDICIONES SUFICIENTES PARA QUE UN GRAFO SEA HAMILTONIANO

a.CONDICION: TEOREMA DE DIRAC.

La condición dice que si el vértice con grado menor del grafo es mayor o igual que la mitad de vértices
del grafo, entonces es Hamiltoniano.

Ejemplo 1.

Al verificar si el grafo G2, cumple con la condición podemos concluir que δ = 3 y n= 6 (6/2=3) entonces,
podemos decir que es Hamiltoniano, porque δ >= n/2

Ejemplo2.(Ahora vamos a usar un contraejemplo para mostrar que la reciproca no se cumple )

En este ejemplo, vemos que el vértice que tiene menor grado es 2 y que no es mayor o igual que la mitad
de los vértices, sin embargo el grafo es Hamiltoniano(porque?). Esto indica que si p -> q es verdadero,
no significa que q->p sea verdadero o también podemos decir que si la condición no se cumple, no se
puede asegurar nada del consecuente.

Ejemplo 3.
El grafo es Hamiltoniano, según la condición de
Dirac?
Al verificar si el grafo G3, cumple con la condición
podemos concluir? δ = 2 y n= 9 (9/2=4) entonces,
podemos decir que el grafo G3 es o no
Hamiltoniano? Que se debe hacer para verificar si
es o no Hamiltoniano?

b. CONDICION: SI UN GRAFO G1 NO ES HAMILTONIANO POR LA CONDICION DE DIRAC,


PERO SE PUEDE ARREGLAR PARA OBTENER EL GRAFO G2 Y ESTE LO ES, ENTONCES G1
TAMBIEN ES HAMILTONIANO.
Sean dos vértices no adyacentes u,v que pertenecen al conjunto de vértices del grafo G1, la arista(u,v) que
no pertenece al conjunto de aristas del grafo G1 y la suma de los grados de los vértices u y v es mayor o
igual que el número de vértices del grafo G1, se puede obtener otro grafo G2 que sea Hamiltoniano,
entonces G1 también lo es.

Ejemplo 1.
δ = 2 y n= 6 (6/2=3) Entonces no cumple con la
condición de Dirac. Pero podemos decir que el
grafo no es Hamiltoniano?
Vamos a aplicar entonces la condición 2.
Convertimos el grafo G en el grafo G2, agregando
una arista desde el vértice que no tiene grado 3!(el
que no deja cumplir la condición de Dirac)

Y obtenemos el grafo G2 con


δ = 3 y n= 6:(6/2=3) Entonces ahora cumple con la
condición de Dirac. Por lo tanto G2 es
Hamiltoniano y la condición dice que si G2 es
Hamiltoniano, entonces G1 también lo es!
(Ojo Revisar si G1 es hamiltoniano!.)

c. CONDICION: Un grafo G es Hamiltoniano si y solo si la clausura c(G) es hamiltoniana.

Veamos el concepto de clausura de un grafo c(G)

Definicion: Se llama clausura de G al grafo G’ que se obtiene al unir vértices no adyacentes con aristas de
forma recursiva, cuya suma de grados que sea mayor o igual que el número de vértices de G.
La clausura de un grafo es única, sin importar el vértice donde inicie.
Ejemplo, encontrar la clausura del siguiente grafo.
Se inserta la primera arista
entre 2 vértices no
adyacentes
g(v2)=4 + g(v6)=2 cuya
suma de grados sea mayor o
igual que 6.

Se inserta la segunda Se inserta la tercera arista


arista entre 2 vértices entre 2 vértices no
no adyacentes adyacentes
g(v5)=3 + g(v6)=3 g(v5)=4 + g(v3)=3 cuya
cuya suma de grados suma de grados sea mayor o
sea mayor o igual que igual que 6.
6.

Se inserta la cuarta Se inserta la quinta arista


arista entre 2 vértices entre 2 vértices no
no adyacentes adyacentes
g(v3)=4 + g(v1)=2 g(v1)=3 + g(v4)=4 cuya
cuya suma de grados suma de grados sea mayor o
sea mayor o igual que igual que 6.
6.

Se inserta la sexta arista entre 2 vértices no adyacentes


g(v1)=4 + g(v6)=4 cuya suma de grados sea mayor o igual que 6.
En este caso se obtiene el grafo completo K6, en la sexta inserción de la arista, ya
no es posible adicionar ninguna otra arista que cumpla la condición.(Ya están
todas las posibles aristas)
Siempre llegamos al grafo completo? No necesariamente, veamos el siguiente
ejemplo.

Encontrar la clausura del grafo G.


En este caso n=5 y ningún par de vértices cumple con la condición de tener la
suma de grados mayor o igual que 5, por consiguiente la clausura es el mismo
grafo.
En este caso es la mínima, en el anterior caso fue la máxima, es decir puede
haber cualquier clausura entre el grafo inicial y el grafo completo, eso depende
del grafo.

Volvemos a el caso de la tercera condición y vemos si al aplicar la clausura a un grafo, esta es


hamiltoniana, entonces el grafo será hamiltoniano.
El ejemplo antes expuesto indica entonces que el grafo es Hamiltoniano.

2. CONDICIONES NECESARIAS PARA QUE UN GRAFO SEA HAMILTONIANO.


a) Si un grafo es hamiltoniano, entonces debe cumplir que para todo vértice que pertenece al
conjunto de vértices de G, el grado debe ser mayor o igual que 2.

El reciproco es falso, es decir si los vértices del grafo tienen todos grado mayor o igual que 2 no podemos
decir que el grafo sea Hamiltoniano.
Ejemplo1. Es hamiltoniano el siguiente grafo?
El grafo tiene vértices con grados:
g(V1) = g(V3) = g(V5) =2
g(V2) =g(v4)=3 V5
Es decir todos sus vértices son de grado 2 o más
pero el grafo no es Hamiltoniano.

Ejemplo 2. Es hamiltoniano el siguiente grafo?


Grado de los vértices del grafo:
g(V2) = g(V3) = g(V4) = g(V5) =3
g(V1) =2 y g(v6)=4
Es decir todos sus vértices son de grado 2 o más
entonces el grafo es Hamiltoniano.

Ejemplo 3. Es hamiltoniano el siguiente grafo?


Al ver el grafo se observa que hay un vértice , el v6
cuyo grado es 1, por consiguiente de una vez
podemos afirmar que el grafo no es hamiltoniano,
al no cumplir con la condición de tener todos sus
vértices grado igual o mayor a 2.

b) Si un grafo es hamiltoniano y es bipartito entonces el número de vértices del conjunto A debe ser
igual al número de vértices del conjunto B de G.
Ejemplo1. Es hamiltoniano el siguiente grafo?
El grafo es bipartito, se puede ver a simple vista y
el número de vértices de X es igual al número de
vértices de Y, entonces es Hamiltoniano por la
condición b, (3=3)

Ejemplo1. Es hamiltoniano el siguiente grafo?


El grafo es bipartito, se puede ver a simple vista pero el
número de vértices de X no es igual al número de
vértices de Y, entonces no es Hamiltoniano por la
condición b, (3 ≠4)

Ejercicio 1. Es hamiltoniano el siguiente grafo?


Primero debemos verificar si el grafo es bipartito,
porque no se puede ver a simple vista, para lo cual
podemos usar el teorema de etiquetas.(Es bipartito y
X = Y, es decir cumple con la condición b, pero ojo
porque hay dos vértices de grado 1 con lo cual no
cumple con la primera condición! Por lo tanto NO es
hamiltoniano!)
METODO PARA SABER SI UN GRAFO ES O NO HAMILTONIANO.
 Grafos hamiltonianos con vértice de grado 2

Es necesario aclarar que no hay un algoritmo o método general que garantice que un grafo dado, sea
hamiltoniano.
El siguiente método sirve en general para grafos que tengan vértices de grado dos(2) y no tengan un gran
número de aristas, aunque el aplicarlo o no dependerá siempre del grafo.
El método se basa en que el par de aristas que se toman, van a ser parte del ciclo hamiltoniano y siempre
vamos a suponer que dicho ciclo existe.

La estrategia se basa en 4 reglas. Si la regla 1 o la 4 no se cumplen entonces podemos afirmar que el grafo
no es hamiltoniano.

Las reglas son las siguientes:


1. Si existe un ciclo hamiltoniano en G, entonces todos los vértices tienen grado mayor o igual a 2.
2. Sea v un vértice de grado2, entonces las 2 aristas incidentes en v, pertenecen al ciclo hamiltoniano.
3. Si un vértice es de grado mayor que 2 y ya hemos incorporado al ciclo 2 de sus aristas, las demás
deben ser desechadas.
4. Si el grafo es hamiltoniano con la construcción del ciclo que se está realizando, no puede existir un
ciclo menor que el conjunto de vértices de G.

Ejemplo. Dado el siguiente grafo, determine si es hamiltoniano usando el método de vértices de grado 2.

Siempre vamos a suponer que existe un ciclo Hamiltoniano


1.Oservamos cuales son los vertices de grado 2.
En este caso el vertice v5 tiene grado 2, entonces
las aristas incidentes en el (v2,v5) y (v5,v8) deben
pertenecer al ciclo que se esta re-construyendo.

El otro vertice de grado 2 es v7, por consiguiente


sus aristas incidentes deben tambien formar parte
del ciclo.
Ya no hay mas, entonces veamos si hay que
eliminar aristas y cuales serian y porque.
Ahora obtenemos el siguiente grafo, porque
eliminamos las aristas (v1,v2), (v2,v3) (v2,v8) del
vertice v2.

Observemos que el vertice v1 y el v8 quedan con


grado 2(al eliminar las aristas que ya no se
consideran) estos verticces entonces deben formar
parte del ciclo hamiltoniano y las incorporamos a
la solucion, con lo cual obtenemos el nuevo grafo.

Ahora obtenemos el siguiente grafo, el cual es


evidentemente Hamiltoniano, ya que se recorren
todos los vertices sin que se repitan y el vertice
inicial es el mismo que el vertice final.

Ejercicio.
Muestre si el siguiente grafo es hamiltoniano, usando el método de vértices de grado 2.
1.Observamos cuales son los vertices de grado 2.
En este caso el vertice v1 tiene grado 2, entonces
las aristas incidentes en el (v1,v5) y (v1,v2) deben
pertenecer al ciclo que se esta re-construyendo.

El otro vertice de grado 2 es v4, por consiguiente


sus aristas incidentes (v2,v4) y (v4,v7) deben
tambien formar parte del ciclo.

Y el otro vertice de grado 2 es v6, sus aristas


incidentes(v6,v5) y (v6,v7) deben tambien formar
parte del ciclo.
Hemos obtenido un subciclo, el cual tiene
necesariamente que hacer parte del ciclo
hamiltoniano mas grande. Entonces que podemos
concluir? El grafo G es hamiltoniano o no y
porque?

Ejercicios:
Determine si los siguientes grafos son o no hamiltonianos usando el método de los dos vértices.

G3

G3

APLICACIONES DE LOS GRAFOS HAMILTONIANOS.


El problema del viajero, de peso minimo.
En el Problema del Agente Viajero - TSP (Travelling Salesman Problem), el objetivo es encontrar un
recorrido completo que conecte todos los nodos de una red, visitándolos tan solo una vez y volviendo al
punto de partida, y que además minimice la distancia total de la ruta. 
Este tipo de problemas tiene gran aplicación en el ámbito de la logística y distribución. 
El problema del agente viajero tiene una variación importante, y esta depende de que las distancias entre
un nodo y otro sean simétricas o no, es decir, que la distancia entre A y B sea igual a la distancia entre B y
A. En la práctica es muy poco probable que así sea.

La cantidad de rutas posibles en una red(Es decir que todos los puntos están conectados) está
determinada por la ecuación:
(n-1)!
 
Es decir que en una red de 5 nodos la cantidad de rutas probables es igual a (5-1)! = 24, y a medida que el
número de nodos aumente la cantidad de rutas posibles crece factorialmente. En el caso de que el
problema sea simétrico la cantidad de rutas posibles se reduce a la mitad, es decir:
( (n-1)! ) / 2
Lo cual significa un ahorro significativo en el tiempo de procesamiento de rutas de gran tamaño.

MÉTODOS DE SOLUCIÓN

La complejidad del cálculo del problema del agente viajero ha despertado múltiples iniciativas por
mejorar la eficiencia en el cálculo de rutas. El método más básico es el conocido con el nombre de fuerza
bruta, que consiste en el cálculo de todos los posibles recorridos, lo cual se hace extremadamente
ineficiente y casi que se imposibilita en redes de gran tamaño.
También existen métodos heurísticos que se han desarrollado por la complejidad en el cálculo de
soluciones óptimas en redes robustas, es por ello que existen métodos como el vecino más cercano, la
inserción más barata y el doble sentido.

En nuestro caso se estudiara el método del vecino más cercano. Es un algoritmo voraz.

Condiciones que debe tener el problema:

1. Debe ser un grafo no dirigido completo ponderado, con mínimo 3 vértices. (Todos los vértices del
grafo deben estar conectados, para usar la ruta que sea menos costosa)
2. Debe cumplir con la desigualdad triangular(la suma de dos lados cualquiera, debe ser mayor que
el otro de los lados)

El método del vecino más cercano es un algoritmo heurístico diseñado para solucionar el problema del
agente viajero, no asegura la mejor solución óptima, sin embargo suele proporcionar buenas soluciones y
tiene un tiempo de cálculo muy eficiente.
Pasos del algoritmo:
1. Se selecciona un vértice inicial arbitrario U, que forma el ciclo de longitud 1.
2. Se elige la arista de menor peso que esté conectada al último vértice insertado y a un vértice no
visitado V. Si hay otros de igual peso, seleccione cualquiera.
3. Se inserta en el ciclo el vértice V y se obtiene el ciclo de longitud n+1
4. Si todos los vértices fueron visitados vaya al paso 5 sino vaya al paso 2, insertando en el ciclo, el
vértice elegido en el sitio con menor costo incremental.
5. Fin del algoritmo.
Observe que en cada paso se construye un ciclo cada vez mayor, porque se trata de regresar al mismo
sitio y construir así un ciclo hamiltoniano que visite todos los vértices y regresa al vértice inicial.
Suponga que hay un vendedor que desea
visitar los municipios representados en el
siguiente grafo.
1. Inicia el recorrido en el Tambo y debe
terminar el el Tambo.
2. Escogemos la población más cercana al
tambo, en este caso cajibio(18), las demás
están más lejos.
3.Formamos el ciclo Tambo-Cajibio-
Tambo.TCT=TC+CT
ciclo de longitud 2 con costo k1 de
k1=18+18=36
4. Como hay más poblaciones (Purace,
Timbio,La Sierra), debemos escoger cual
es la población mas cercana a Cajibio, que
es Purace.
Debemos insertar Purace en el ciclo, en este caso
no interesa si va antes o después de Cajibio porque
son solo dos poblaciones, con lo cual el ciclo nos asi:
Tambo- Cajibio- Purace-Tambo o asi: Tambo-
Purace- Cajibio –Tambo.
Al ciclo de longitud 2 con costo de 36, le debemos
incrementar el costo de INCLUIR entre T y C la
nueva población asi:
TPC = TP-PC-TC=30+13-18=25(k2)
o
CPT=CP+PT-CT=13+30-18=25.(k2)
Al costo k1 le sumamos el costo de k2:
K=k1+k2=36+25=61
Nuevamente debemos escoger una población mas
cercana a Purace, en este caso La sierra(15)

Debemos insertar La Sierra en el ciclo, en este caso


si nos interesa si va antes o después de alguna otra
población, con lo cual al ciclo que llevamos T-C-P-
T debemos ver donde se le inserta la nueva
población:, quedando así las posibles inserciones:

a) T-LS-C=TLS+LSC-TC=28+25-18=35

b) C-LS-P=CLS+LSP-CP=25+15-13=27

c) P-LS-T=PLS+LST-PT=15+28-30=13 (k3=menor
costo incremental-se escoge)
Al ciclo de longitud 3 con costo de 61, le debemos
incrementar el menor costo de incluir entre P y T
la nueva población asi:
Al costo k2 le sumamos el costo de k3, asi:
K=k2+k3=61+13=74
Quedando el ciclo: T-C-P-LS-T
Nuevamente debemos escoger una población mas
cercana a Purace, en este caso Timbio(11), la
ultima que queda.
Debemos ver donde insertar Timbio en el ciclo, T-
C-P-LS-T, quedando asi las posibles inserciones:

a) T-Ti-C=TTi+TiC-TC=24+23-18=29

b) C-Ti -P=CTi + TiP - CP=23+18-13=28

c) P-Ti-LS=PTi+TiLS-PLS=18+11-15=14

d) LS-Ti-T=LSTi+TiT-LSTi=11+24-28=7
(k4=menor costo incremental-se escoge)
Al ciclo de longitud 4 con costo de 74, le debemos
incrementar el costo de INCLUIR entre LS y T la
nueva población asi:
Al costo k3 le sumamos el costo de k4, asi:
K=k3+k4=74+7=81
Quedando el ciclo: T-C-P-LS-Ti-T, lo que nos da
un costo total de:
18+13+15+11+24=81, que es el mismo que
obtuvimos al calcular los costos incrementales.

Asi obtenemos finalmente el ciclo Hamiltoniano, con menor costo total, para el problema del viajero.
Es Posible que haya otra ruta de menor costo, pero esta es una buena opción.
(Verificar mediante el método de fuerza bruta,(n-1)! todos los caminos Hamiltonianos posibles para
conocer si existe una mejor solución.)

Resolver mediante el método del vecino mas cercano los siguientes ejercicios.
Use el método de fuerza bruta en los ejercicios (a) y (b)
a)Encontrar la ruta con el menor costo. Vertice
b)Vertice Inicial A
Inicial A.

d) Vertice inicial 1
c)Vertice inicial B

También podría gustarte