El problema del viajante requiere, por fuerza bruta, verificar posibles configuraciones, siendo la cantidad de ciudades. Para grandes cantidades de ciudades, esto se vuelve insostenible. Debido a esto, se utilizan heurísticas.
Heurística del Vecino más Próximo
- Se empieza por un vértice inicial cualquiera, se puede utilizar una heurística para elegirla
- Mientras que queden ciudades sin visitar, se agrega la ciudad más cercana a la ciudad actual.
- Cuando no queden más ciudades, se une la última ciudad con la primera
Este algoritmo parece dar buenas soluciones inicialmente, pero su desempeño empeora cuantas menos ciudades queden por elegir
Heurística del Emparchamiento más Cercano
- Elegir la arista con menor costo, si hay más de uno, elegir por orden alfabético.
- Mientras que queden ciudades sin agregar al tour, elegir la arista restante con menor costo que no genere subtours y que incida en alguno de los extremos. (se debe mantener un camino)
- Cuando no queden más ciudades, se une la última ciudad con la primera.
Esta heurística es similar a la del vecino más próximo, pero permite analizar las aristas desde ambos extremos.
Heurística de la Inserción más Cercana
- Se empieza por una ciudad inicial, cualquiera.
- Mientras que queden ciudades sin agregar, y para cada una, se evalúa agregarla al final del recorrido. Se elige la alternativa de menor costo.
Heurística del Árbol Generador Mínimo
Requiere que se respete la desigualdad triangular entre las ciudades, es decir
- Se arma un árbol de costo mínimo (prim o kruskal)
- Definimos la raíz como un vértice arbitrario
- Se duplican las aristas y se halla un camino euleriano. (DFS)
- Se toman los vértices de este camino, ignorando los repetidos.
- El camino encontrando será un camino hamiltoniano.
Heurística de -intercambios
Es una heurística de mejora, parte de una solución factible inicial. Esta puede ser la trivial, dada por el orden alfabético de las ciudades. Opera bajo una propiedad importante de los grafos:
Si un ciclo hamiltoniano se cruza a sí mismo, puede ser fácilmente mejorado eliminando las aristas que se cruzan y volviendo a unir los caminos con aristas que no se unan.
- Se eliminan aristas del grafo
- Se reúnen los caminos con aristas nuevas
- Si el costo del nuevo camino es mejor al anterior, entonces se actualiza la solución óptima
Estos algoritmos no prueban todos los posibles cambios, sino que buscan alternativas durante un tiempo determinado y si no lo encuentran, finalizan.
Heurística de Lin y Kerninghan
Es una variación de la heurística de -intercambios. Busca decidir, en cada momento, el valor de apropiado. Al igual que la heurística de los intercambios, es una heurística muy costosa, por lo que no se suele realizar de forma completa.
- Se define marca como verdadero
- Mientras que marca sea verdadero
- Se define marca como falso y se etiquetan todos los nodos como no explorados
- Mientras que queden nodos sin explorar:
- Seleccionar un nodo no explorado y caminar todos los movimientos (2-opt, inserción) que incluyan la arista y a su sucesor. Luego, se marca como explorado
- Si alguno de los movimientos reduce la longitud del tour, establecer como solución actual y definir marca como uno.