Está en la página 1de 15

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 el tipo de grafo Hamiltoniano:


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

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

Ejemplo1.(Usaremos un contraejemplo para mostrar que si la condición se cumple, no se


garantiza que lo contrario sea verdadero! )

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. (Dicho de otra manera, seria si el grafo es Hamiltoniano, no tiene porque
cumplir con la condición de Dirac, pero si cumple la condición necesariamente es
Hamiltoniano!)
Ejemplo 2.

Al verificar si el grafo G2, cumple con la condición podemos concluir? δ = 3 y n= 6


(6/2=3) entonces, podemos decir que es Hamiltoniano, porque δ >= n/2
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= 8
(8/2=4) entonces, podemos decir que el
grafo G3 es o no Hamiltoniano?
2a CONDICION: SI UN GRAFO G1 NO ES HAMILTONIANO PERO SE PUEDE ARREGLAR
PARA OBTENER EL GRAFO G2 Y ESTE LO ES, ENTONCES G1 TAMBIEN ES HAMILTONIANO.

Sean dos vértices 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 numero de vértices del grafo G1, se puede obtener
otro grafo G2 que sea Hamiltoniano, entonces G1 tambien 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!.)

3a 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 numero 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 Se inserta la tercera


segunda arista arista entre 2 vértices
entre 2 vértices no adyacentes
no adyacentes g(v5)=4 + g(v3)=3
g(v5)=3 + cuya suma de grados
g(v6)=3 cuya sea mayor o igual que
suma de grados 6.
sea mayor o igual
que 6.
Se inserta la Se inserta la quinta
cuarta arista entre arista entre 2 vértices
2 vértices no no adyacentes
adyacentes g(v1)=3 + g(v4)=4
g(v3)=4 + cuya suma de grados
g(v1)=2 cuya sea mayor o igual que
suma de grados 6.
sea mayor o igual
que 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 o no Hamiltoniano?(Rta/???)
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
V5
g(V2) =g(v4)=3
Es decir todos sus vértices son de grado 2 o
mas 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 numero 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 numero de vértices de X es igual
al numero de vértices de Y, entonces es
Hamiltoniano por la condición b, (3=3)

Ejemplo2. Es hamiltoniano el siguiente grafo?


El grafo es bipartito, se puede ver a simple
vista pero el numero 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)

Ejemplo 3. 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 él,
(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?

Determine si los siguientes grafos son o no hamiltonianos usando el método de los


vértices de grado 2.

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, puesto que en la práctica es muy poco probable que
así sea. 
La cantidad de rutas posibles en una red 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 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.

Se estudiara el método del vecino más cercano.

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 son la desigualdad triangular(un lado debe ser menor o igual que la
suma de los otros dos 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.
El algoritmo del vecino más cercano es un algoritmo voraz.

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 ir al paso 5 sino ir 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 regrese 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 mas 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.
Encontrar la ruta con el menor costo
Use el método de fuerza bruta únicamente en los ejercicios (a) y (b)
a). Vertice Inicial A.
b)Vertice Inicial A

c)Vertice inicial B d) Vertice inicial 1

También podría gustarte