我正在制作一个使用A *算法寻找路线的路由应用程序。 我想提供的不仅仅是一条路线,还有一些替代路线。例如,路线比最佳路线略长一点。
由于A *(和许多其他人)只找到一条路线,我该如何搜索这些替代路线?我应该使用其他算法吗?
答案 0 :(得分:3)
您可能希望研究K shortest paths问题,这是在两个节点之间找到k个最短路径的问题。维基百科页面上描述的算法是Dijkstra's algorithm的推广。
要找到最短路径,可以使用最短路径算法 作为Dijkstra的算法或Bellman Ford算法并将它们扩展到 找到多条路径。 K最短路径路由算法是 最短路径问题的推广。该算法不仅 找到最短路径,但也按其他方式增加K路径 成本。 K是要找到的最短路径的数量。问题可能是 限制为没有循环的K最短路径(无环K 最短路径)或循环。
一些关键论文和概念:
答案 1 :(得分:1)
一种可能的解决方案是随着epsilon值的增加运行A*-epsilon。
随着每次迭代,随着epsilon的增长,找到的路径预计会更长 - 找到它的时间会更短。