Sei sulla pagina 1di 16

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


segunda arista entre arista entre 2 vértices no
2 vértices no adyacentes
adyacentes g(v5)=4 + g(v3)=3 cuya
g(v5)=3 + g(v6)=3 suma de grados sea
cuya suma de mayor o igual que 6.
grados sea mayor o
igual que 6.
Se inserta la cuarta Se inserta la quinta arista
arista entre 2 entre 2 vértices no
vértices no adyacentes
adyacentes g(v1)=3 + g(v4)=4 cuya
g(v3)=4 + g(v1)=2 suma de grados sea
cuya suma de mayor o igual que 6.
grados 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 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


V5
g(V2) =g(v4)=3

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

Potrebbero piacerti anche