Tengo una serie de coordenadas de gráfico y necesito encontrar la ruta de acceso unilateral más corta a través de todas ellas. No tengo un inicio/final predeterminados, pero cada punto solo debe tocarse una vez y NO es necesario regresar al origen óptimo.Ruta más corta de una vía a través de múltiples nodos
He intentado un par de enfoques de TSP, pero todos parecen estar basados en volver al origen al final, lo que da resultados terriblemente ineficientes en este caso.
Ejemplo
1, 13
3, 0
3, 7
2, 21
2, 11
3, 12
1, 19
3, 6
se resolvería a
3, 0
3, 6
3, 7
3, 12
2, 11
1, 13
1, 19
2, 21
Notas:
Sí Probé la búsqueda función, hay una pregunta básicamente idéntica Algorithm: shortest path between all points sin embargo, la única respuesta real es un TSP, que una vez más, el circuito cerrado es ineficaz para esto.
No tiene por qué ser fiable al 100%, ya tengo un método permutaciones pero su demasiado lento, lo que necesito para manejar por lo menos ~ 25-30 puntos, estableciéndose con una buena aproximación funciona para mí
Gracias por adelantado.
Editar para aclarar, TSP tiende a resolver como en img # 1, el resultado deseado es img # 2
img 3 es la muestra anterior resuelto a través de un TSP y img # 4 es la deseada (x coords cambió de nuevo - 0,5 para la visibilidad)
par más para una buena medida # 1 = TSP, # 2 = deseado
Básicamente quiero el más corto cadena que conecta n puntos, usando el punto inicial y final más eficiente
¿Cómo se relaciona esto con PHP? ¿Tiene código para mostrar, p. estructuras que representan nodos y gráficos? – rik
Bueno, supongo que no está directamente relacionado con php, prefiero una solución de php, ya que ese es el lenguaje en el que me gustaría terminar (suponiendo que php pueda manejar el proceso en un tiempo razonable), pero un algoritmo o algún comentario decente el código en un idioma principal (C++, java, ruby, etc.) sería suficiente –
El patrón en sus gráficos indica que no desea la ruta _cambiando instrucciones_. ¿Qué tal hacer mayores los costos de los enlaces con (x2, y2) <(x1, y1)? Se sesgaría los algoritmos estándar de TSP hacia soluciones que comienzan cerca de la esquina superior izquierda, y terminan cerca de la parte inferior derecha. – Apalala