调整AStar以找到最接近无法到达目的地的位置


11

我已经用Java实现了AStar,它在有障碍物可以到达所选目的地的区域也可以正常工作。

但是,当目的地不可到达时,计算出的“路径”绝不是最接近的位置(到不可到达的位置),而是某种随机路径。

有没有一种可行的方法可以调整AStar到最接近无法到达目的地的位置的路径?

Answers:



1

这实际上不是一个A *问题。A *就是寻找从A点到B点的路径。即使可以扩展,其结果也很容易造成混乱和不可预测。相反,您需要的是一种算法,该算法可以选择最接近的可到达目的地。

这是执行此操作的一种方法:如果A *返回有效路径(路径中的开始/结束节点与输入节点匹配),则返回路径。除此以外...

  • 从初始节点开始搜索
  • 遍历所有链接的节点(记住标记访问的节点以避免无限递归)
  • 比较到目的地的距离以找到最近的节点

en.wikipedia.org/wiki/Flood_fill这样的东西似乎很合适,请注意,从起始节点到距离最小的节点仍需要A *。另请注意,这始终涉及检查所有连接的节点,因此可能会非常慢。
罗伊(Roy T.)

是的,可能会很慢。但是,这种缓慢很可能是由于节点分散在整个内存中所致。可以轻松修复。另外,可以通过牺牲一些准确性来加快速度-只需跳过太远的链接或指向错误的方向即可。
snake5 2012年

1
@Roy:A *,BFS,以及所有类似的寻路算法将是缓慢的洪水填充准确,因为它们都需要检查每一个连接的节点,以确保有到最后没有路径。但是,有一些方法可以缓解此问题;看这里
BlueRaja-Danny Pflughoeft 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.