C#中的并行A*搜索-不同的路径



我正在研究一些双向A*算法。我从头到尾都在寻找。当第一个线程遇到来自其他线程(来自打开或关闭列表)的节点时,它会停止并绘制返回路径。

但我有一个问题,当线程走不同的路,他们没有在应该的地方相遇。

示例:https://i.stack.imgur.com/4hsCA.png

这是一个常见的问题,阻碍了双向搜索的研究,直到Kaindl&Kainz在1997年证明了这是不必要的。PNBA*的第2.3节:并行双向启发式搜索算法提供了额外的历史背景,以及克服这一问题的(并行)双向算法。

您可能希望先阅读《最短路径的另一个双向算法》,因为它所描述的(串行)NBA*算法被第一篇论文广泛引用。

我刚刚成功地将我在这里找到的开源Hexgrid PathFinding实用程序调整为使用PNBA*的串行版本。(实际上是NBA和PNBA之间的一半)这将在一两天内上传。

让最短路径更快概述了使用带预处理的双向A*开发Bing地图路径查找器。有关预处理工作和相关算法的使用的详细说明,请参阅Reach for A*and Better Landmarks Within Reach

最新更新