A *(A Star)算法输出所有可能的解决方案

时间:2013-01-30 18:59:35

标签: java algorithm a-star

已知A星算法已完成。但是,我在网上搜索的所有实现似乎只返回第一个(最佳)解决方案。

例如,这个实现: A star algoritthm implementation

由于算法总是扩展具有最小f值的节点,并且当第一个节点是解决方案时实现似乎停止,如何调整上述代码以便输出所有(或第一个 n )导致目标的路径,而不考虑重复操作(即一遍又一遍地包含相同操作的路径)?

2 个答案:

答案 0 :(得分:1)

这是完整的,这意味着它会找到一个解决方案,如果存在,但算法专门只返回一个路径。广度优先搜索将找到两个节点之间的所有非循环路径,但是:http://en.wikipedia.org/wiki/Breadth-first_search

更新 - 这是k-shortest路径算法,它将按照从最短到最长的顺序返回n(或在本例中为k)最短路径的列表。 http://code.google.com/p/k-shortest-paths/

答案 1 :(得分:1)

对于所有路径,使用呼吸优先搜索可能更有意义。或者,如果要查找前n个最短路径,可以尝试Dijkstra's algorithm