Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
Dodecaedro
Hexaedro
Octaedro Tetraedro
CONDICIONES PARA QUE UN GRAFO SEA HAMILTONIANO
1. CONDICIONES SUFICIENTES PARA QUE UN GRAFO SEA HAMILTONIANO
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
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?
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)
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.
g(V1) =2 y g(v6)=4
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.
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.
G3
G3
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
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.
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.
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.
a) T-Ti-C=TTi+TiC-TC=24+23-18=29
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)
d) Vertice inicial 1
c)Vertice inicial B