algorithm - A-Star算法(重构路径)

标签 algorithm a-star

我已经设法实现了 a* 并且我得到了正确的路径。

问题是我如何重建从头到尾的路径,因为每个节点(从头到尾)都有一个父链接,但不是第一个,所以我的角色不知道先去哪里。

我正在做的是返回封闭列表并从索引 0 开始到 x 直到我到达结尾。这通常很有效,但我知道必须有另一种方法。


此外,检查相邻节点的最佳方法是什么?

我已经让每个节点创建一个矩形并查看它是否相交,这就是我知道它们已连接的方式。我还对播放器使用这种技术来了解何时到达节点。

谢谢!!

最佳答案

你有你的目标节点(一旦找到你可以简单地缓存它)。

沿着树往上走(使用parent字段)直到你找到一个没有它的节点,这个节点就是你的根。您通过向上链接找到的路径是倒序的最短路径。

我曾经解决过 similar question , 关于 BFS 而不是 A*

编辑:将堆栈反转回原始状态的一种简单方法是在从目标转到源时将节点放入堆栈中,并且当您找到源时 - 开始弹出元素堆栈。

关于algorithm - A-Star算法(重构路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12401481/

相关文章:

algorithm - 算法的不变量

algorithm - 从 map 集合中删除另一个 map 中包含的任何 map 的高效算法

python - 在 numpy 或 python 中进行 A-star 搜索

python - 理解 A-star 算法在 Python 中的实现

algorithm - 最长路径 A*、可采纳启发式算法和最优性

algorithm - 单位立方体的边长,给定一个需要使用N个单位立方体来平铺/填充给定尺寸的3D空间

c# - 对循环缓冲区进行排序的最有效方法

algorithm - 对我网站排名算法选项的反馈

c++ - 对象和静态位置之间的堆比较

python - 为什么我的 A* 实现比 floodfill 慢?