Primera parte: Introducción y antecedentes
El problema TSP, también conocido como problema del viajante, es uno de los problemas más clásicos en optimización combinatoria. En resumen, dada una lista de ciudades y las distancias entre ellas, el problema del vendedor ambulante requiere encontrar la ruta más corta posible, de modo que un vendedor comience desde una ciudad, visite todas las ciudades y luego regrese a la ciudad de inicio y visite cada ciudad solamente. una vez. El problema parece simple, pero a medida que aumenta el número de ciudades, las posibles combinaciones de rutas aumentan exponencialmente, lo que hace extremadamente difícil encontrar la solución óptima.
El algoritmo heurístico de Lin-Kernighan es un método eficaz para resolver problemas de TSP. Se basa en una versión mejorada de la heurística de 2 opciones. En este artículo, presentaremos en detalle cómo funciona el algoritmo Lin-Kernighan y proporcionaremos un ejemplo de implementación en C++.
Introducción al algoritmo de Lin-Kernighan :
La idea central del algoritmo de Lin-Kernighan es la tecnología de búsqueda local, que intenta obtener una distancia total más corta intercambiando ciudades en el camino. A diferencia del algoritmo de 2 opciones, no se limita a intercambiar dos ciudades, sino que puede intercambiar varias ciudades, proporcionando así un espacio de búsqueda más amplio.
Los pasos básicos del algoritmo son los siguientes:
- Comience con una solución arbitraria (por ejemplo, una solución inicial que se pueda obtener utilizando la heurística del vecino más cercano).
- Realice un movimiento k-opt, es decir, intente mejorar la solución actual intercambiando k ciudades.
- Si encuentra una solución mejor, actualice la solución actual y continúe con el paso 2.
- El algoritmo termina cuando k alcanza un cierto valor (por ejemplo, 10) o cuando no hay más mejoras en múltiples iteraciones.
Ahora, veamos una implementación de código C++: