【发布时间】:2017-09-24 04:07:06
【问题描述】:
我知道 A* 比 Dijkstra 算法更好,因为它考虑了启发式值,但是从 A* 和 Jump Point search 来看,这是在有障碍物的环境中寻找最短路径的最有效算法?有什么区别?
【问题讨论】:
标签: algorithm path-finding a-star
我知道 A* 比 Dijkstra 算法更好,因为它考虑了启发式值,但是从 A* 和 Jump Point search 来看,这是在有障碍物的环境中寻找最短路径的最有效算法?有什么区别?
【问题讨论】:
标签: algorithm path-finding a-star
Jump Point Search 是基于图上某些条件的改进 A*。因此,如果您满足这些条件(主要是统一成本网格),则 JPS 严格优于 A*(相同的最优性,最好的情况可以好几个数量级,而最坏的情况可能具有相同的复杂性,但具有 稍差一点的常数),但如果不满足条件,则不能使用。
JPS 相对于 A* 的改进基本上是,如果你有一个具有统一成本函数的图(从 A 到 B 和从 B 到 C 的成本相同,方向相同),你可以跳过一些在某些情况下步骤,直接从 A 转到 C,而不在 B 中扩展节点。
JPS 是 A* 上的一种修剪技术,您可以删除不需要评估的案例,因为您知道它们将是次优的。您知道这一点是因为统一成本网格条件。
从概念上讲,这相当于在非均匀网格上使用 A*,其中相邻节点表示您可以在该方向上走多远而不会遇到障碍物,以及您执行跳跃的成本。所以如果你可以在不遇到障碍的情况下向右走 10 个节点,你可以减少这个(或直接跳转到)单个节点,成本为 10*c,其中 c 是从一个节点到的(恒定)成本另一个在右边。
原论文可以在here.找到
【讨论】: