我有能力使用A*算法计算起点和终点之间的最佳路径。目前,我在我的起点和终点之间加入航点,通过对所有点对应用A*算法来实现。
例如:
我想从点1到达点4,此外,我还想通过点2和点3。
我计算(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
然后,对于每个排列,我计算从第一个到第二个的A*路线,然后将其附加到从第二个到第三个的路线,再附加到第三个到第四个的路线。
当我对每个排列都这样计算完毕后,我按距离排序路线并返回最短路线。
显然,这种方法可行,但涉及大量计算,并且在有6个航点时完全崩溃(8个项目的排列是40320:-))
有更好的方法吗?
1 -> 2 -> 3 -> 4
和1 -> 3 -> 2 -> 4
。 - IVlad