Tengo la capacidad de calcular la mejor ruta entre un punto inicial y final usando A *. En este momento, estoy incluyendo waypoints entre mis puntos de inicio y final aplicando A * a los pares en todas las permutaciones de mis puntos.Agregar waypoints a la búsqueda de gráfico A *
Ejemplo:
quiero ir desde el punto 1 al punto 4. Adicionalmente, quiero pasar a través de los puntos 2 y 3.
calculo las permutaciones de (1, 2, 3, 4):
1 2 3 4
1 2 4 3
1 3 2 4
1 3 4 2
1 4 2 3
1 4 3 2
2 1 3 4
2 1 4 3
2 3 1 4
2 3 4 1
2 4 1 3
2 4 3 1
3 1 2 4
3 1 4 2
3 2 1 4
3 2 4 1
3 4 1 2
3 4 2 1
4 1 2 3
4 1 3 2
4 2 1 3
4 2 3 1
4 3 1 2
4 3 2 1
entonces, para cada permutación, calculo el a * ruta desde la primera a la segunda, a continuación, anexar a la ruta de la segunda a la tercera, a continuación, la tercera a la cuarta.
Cuando tengo esto calculado para cada permutación, clasifico las rutas por distancia y devuelvo el más corto.
Obviamente, esto funciona, pero implica una gran cantidad de cálculo y totalmente colapsa cuando tengo 6 puntos de interés (8 permutaciones de los elementos es 40320 :-))
¿Hay una mejor manera de hacer esto?
¿Por qué incluye rutas que no comienzan en 1 y terminan en 4? Y, si tiene una buena razón para hacerlo, si su terreno es tal que avanzar una dirección es el mismo costo que retroceder, no tiene que calcular caminos inversos (1234 y 4321) –
Solo necesita para permutar los puntos que debes atravesar. En su caso, solo necesita probar '1 -> 2 -> 3 -> 4' y' 1 -> 3 -> 2 -> 4'. – IVlad