algorithm - 寻路 : Jump Point Search - Straight Moves vs Diagonal Moves

标签 algorithm point path-finding a-star

计划制作 2D RTS,我试图了解 Astar 的工作原理。 事实上,我找到了解释如何将 Astar 与二进制堆耦合进行优化的文章,以及利用路径对称性的算法,如 Jump Poin Search algorithm . 我试过implement跳跃点搜索,它运行良好。我什至用 MovingAI 的 map 做了一些基准测试。

但是有一个问题。允许对角线移动时一切正常。禁用时,不返回任何路径...

它可能与我实现它的方式有关,然后我都在问......一般来说,你将如何强制算法(JPS)搜索仅涉及直线移动(而不是对角线移动)的路径以达到一个目标?

最佳答案

跳跃点搜索需要启用对角线才能工作。在状态算法中,这是它的局限性之一。此外,您将无法区分您的地形(泥土 = 对移动的惩罚等),因为这会破坏对称性。我建议你坚持 A* 并尝试通过地形呈现(网格、航路点)获得性能。或者检查 HPA*。

关于algorithm - 寻路 : Jump Point Search - Straight Moves vs Diagonal Moves,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10772742/

相关文章:

java - 在图中使用循环寻路(每条边使用一次)

php - PHP下从右起2个字符加一个小数点

java - Java 中二维 int 数组优化的洪水填充

java - 检查嵌套在字符串中的括号

python - 我的分割序列代码有什么问题

android - 如何判断两个地理点的方向

c# - 从 C# 中的字符串解析 PointF?

algorithm - 用 A* 找到最长的路径

algorithm - 运行 Neo4j 图形算法 Louvain 时出现 ArrayIndexOutOfBoundsException

algorithm - 如何构建特定的语料库 - 算法说明