11 我已经用Java实现了AStar,它在有障碍物可以到达所选目的地的区域也可以正常工作。 但是,当目的地不可到达时,计算出的“路径”绝不是最接近的位置(到不可到达的位置),而是某种随机路径。 有没有一种可行的方法可以调整AStar到最接近无法到达目的地的位置的路径? path-finding — 湿婆龙 source
20 跟踪具有最低EstimatedDistanceToEnd(即最低h(x))的节点,如果无法从该节点回溯,则从该节点回溯。 — BlueRaja-Danny Pflughoeft source 简单。我喜欢它! — 约翰·麦克唐纳 当我读完你的答案时,我只是拍了拍头,然后走了。谢谢! — Shivan Dragon
1 这实际上不是一个A *问题。A *就是寻找从A点到B点的路径。即使可以扩展,其结果也很容易造成混乱和不可预测。相反,您需要的是一种算法,该算法可以选择最接近的可到达目的地。 这是执行此操作的一种方法:如果A *返回有效路径(路径中的开始/结束节点与输入节点匹配),则返回路径。除此以外... 从初始节点开始搜索 遍历所有链接的节点(记住标记访问的节点以避免无限递归) 比较到目的地的距离以找到最近的节点 — 蛇5 source en.wikipedia.org/wiki/Flood_fill这样的东西似乎很合适,请注意,从起始节点到距离最小的节点仍需要A *。另请注意,这始终涉及检查所有连接的节点,因此可能会非常慢。 — 罗伊(Roy T.) 是的,可能会很慢。但是,这种缓慢很可能是由于节点分散在整个内存中所致。可以轻松修复。另外,可以通过牺牲一些准确性来加快速度-只需跳过太远的链接或指向错误的方向即可。 — snake5 2012年 1 @Roy:A *,BFS,以及所有类似的寻路算法将是缓慢的洪水填充准确,因为它们都需要检查每一个连接的节点,以确保有是到最后没有路径。但是,有一些方法可以缓解此问题;看这里。 — BlueRaja-Danny Pflughoeft 2012年