通常认为A *是解决寻路问题的最佳算法。
当A * 找到解决方案的最佳算法时,是否存在任何情况?
A *与BFS,DFS,UCS等相比有多好?
答案 0 :(得分:73)
简短的回答是肯定的,有些情况下A *不是解决问题的最佳算法。但是,有很多方法可以评估构成最佳算法的内容,以便找到解决方案。
如果您在从单一来源到多个目的地的多次搜索的性能方面考虑最佳,那么您应该考虑使用更合适的方法({{3 }})。
如果您在性能方面考虑最佳,那么在某些特殊情况下,DFS和BFS将明显优于A *。根据过去的经验,这种情况适用于非常小的,几乎无关紧要的图表,但需要仔细测试和分析才能做出更强有力的陈述。
如果您在路径长度方面考虑 best ,那么算法产生的最终路径是多长时间,则A *等同于任何其他路径最优搜索算法。
如果您在完整性方面考虑 best ,也就是说,如果存在此类路径,算法是否始终会找到目标路径。如果是这样,则A *等同于任何其他完整算法(例如,广度优先搜索)。
如果您在图中某些权重为负的情况下考虑 best ,那么您需要使用特殊算法来解决这些问题(对于例如Dijkstra's algorithm)
如果您在没有启发式的情况下考虑最佳,那么您必须回到h(x,y)=0 forall states x and y
。在这种情况下,A *相当于最佳的第一次搜索。
如果您在连续配置空间中与运动规划相关的案例中考虑最佳,那么A *可能在低维度中充分发挥作用,但搜索图形的存储开始在高维度上变得不切实际,并且需要使用概率上完整的算法(例如bellman-ford,Bi-RRT,RDT)
如果您在图形部分可观察的情况下考虑最佳,则您只能随时知道图表中所有可能顶点和边的子集,你需要改变状态来观察更多的图形,然后你需要一个为此设计的替代算法(例如,Keonig的Lifelong Planning A *,LPA *,就是这样)。
如果您在图表随时间变化的情况下考虑最佳(当您合并移动障碍物时机器人中经常出现这种情况>那么您需要一个设计的算法为此(例如Stentz的RRT或Koenig& Likhachev的D * -Lite)。
答案 1 :(得分:8)
A *是特殊的,因为它可以通过播放它如何评估节点及其使用的启发式方法,变成其他路径寻找算法。你可以这样做来模拟Djikstra的,最好的第一搜索,广度优先搜索和深度优先搜索。
此外,通常很容易加快速度。例如,如果将可允许的启发式乘以常量c,则可以保证结果节点序列的成本不超过最优结果的c倍。
例如,请参阅Ian Davis撰写的awesome paper(为Star Trek Armada撰写)。 A *与一组分层的航路点一起使用,这导致粗略的路径。然后,为了平滑路径,他们再次在包含路径上的节点和附近的节点的新生成图上运行A *,以获得更合理的路径。最后,他们运行橡皮筋来删除冗余节点。
所以,A *并不是解决所有问题的方法,但它是一种非常通用的工具。
答案 2 :(得分:4)
一个非常简单的替代方案(没有与启发式争论)是Collaborative Diffusion。当您需要定位 一个目标 或 某个组的任何成员时,它会非常有效,无差别 ,并且case可以比A *快。它模仿游戏“你变得更暖/更冷”。
协作扩散为您希望定位的每个“组”创建一个热图...如果您想跟踪特定目标,请通过为该目标创建热图来将其视为自己的组; Collaborative Diffusion的领域是像足球这样的游戏(两个代理队都专门跟踪球和球门柱,导致只有3个影响力图)或Pacman(类似的,多个代理跟踪Pac)或军队游戏,其中有一个组合热图代表身体(从军队中的每个特工确定的每支军队的总和),以便一支军队可以接近“另一支军队”,而不是“另一支军队中的特定部队”。这种普遍性可以提高性能。
步行包括爬山(从当前的小区到较暖的邻居小区),直到我们到达目的地(最热点)。该方法隐含地涉及移动障碍,即其他代理。
最适合在地图相当密集的许多移动单元的情况下,从而证明在每次更新时必须在整个搜索空间中进行的广泛扩散。很明显,如果在一个大的稀疏地图中,一个经过良好调整的A *方法可以便宜一个数量级,我们只有一个单位只针对另一个单位,因为在这种情况下你只使用A *寻求者和目标之间的地图图块;而使用Collaborative Diffusion,你只是在整个地图上进行扩散,只是为了做同样的事情,这使得成本更高。
答案 3 :(得分:0)
我看到问题已经过时了,但这个实用的解决方案可能会对某些人有用。 最近我找到了very nice open source code written in python
代码包含下一个寻路算法:
更改矩阵大小和值可以感觉到不同路径查找算法之间的差异。正如Wikipedia中提到的那样:“A *已经完成,如果存在,将始终找到解决方案”