Algorithm 路径查找算法:A*Vs跳点搜索

Algorithm 路径查找算法:A*Vs跳点搜索,algorithm,path-finding,a-star,Algorithm,Path Finding,A Star,我知道A*比Dijkstra的算法好,因为它考虑了启发式值,但是从A*和跳点搜索来看,在有障碍的环境中,哪一种算法是最有效的寻找最短路径的算法?有什么区别吗?跳点搜索是一种基于图中某些条件的改进的A*。因此,如果您满足这些条件(主要是统一成本网格),JPS严格优于A*(相同的最优性,最好的情况可以是数量级更好,最坏的情况可能是相同的复杂性,但具有 稍差的常数),但如果不满足条件,则不能使用它 JPS对A*的改进基本上是,如果您有一个具有统一成本函数的图(从A到B和从B到C的成本相同,方向相同),

我知道A*比Dijkstra的算法好,因为它考虑了启发式值,但是从A*和跳点搜索来看,在有障碍的环境中,哪一种算法是最有效的寻找最短路径的算法?有什么区别吗?

跳点搜索是一种基于图中某些条件的改进的A*。因此,如果您满足这些条件(主要是统一成本网格),JPS严格优于A*(相同的最优性,最好的情况可以是数量级更好,最坏的情况可能是相同的复杂性,但具有 稍差的常数),但如果不满足条件,则不能使用它

JPS对A*的改进基本上是,如果您有一个具有统一成本函数的图(从A到B和从B到C的成本相同,方向相同),您可以在某些情况下跳过一些步骤,直接从A到C,而无需扩展B中的节点

JPS是一种针对a*的修剪技术,您可以删除不需要评估的案例,因为您知道它们将是次优的。您之所以知道这一点,是因为统一的成本网格条件。
从概念上讲,这相当于在非均匀网格上使用*,其中相邻节点表示您可以在该方向上走多远而不会遇到障碍物,并以您执行的跳跃为代价。因此,如果您可以在右侧移动10个节点而不会遇到障碍物,您可以减少(或直接跳到)单个节点,成本为10*c,其中c是从一个节点移动到右侧另一个节点的(恒定)成本


原稿可以找到

@Thilan.L你到底遗漏了什么?也许我可以更新我的答案来更好地回答你。