我正在开发项目,我需要找到2D网格中最近(很多)目标节点的路径(任何节点中的8个连接:N,S,W,E,NW,NE,SW,SE) 。路上可能有挡墙路径。找到一个目标节点的路径没有问题,但我怎样才能在合理的时间内找到哪个目标最近?我不认为为每个目标节点运行A *并且获得比较的每条路径的长度是合理的方式,还有什么可以做呢?
A *是否能够以某种方式找到最近节点的路径,或者必须以其他方式找到最近的目标,然后将其作为唯一目标传递给A *?
图例:
白色 - 可步行
灰色墙壁
蓝色 - 我自己
绿色 - 目标
红色 - 敌人(我计划在X SQM与敌人保持距离)
答案 0 :(得分:2)
是的,只需将EstimatedDistanceToEnd
(又名h(x)
)设置为所有终端节点的最低估计值。然后在点击结束节点时停止搜索。
答案 1 :(得分:1)
A *用于知情搜索,其中我们有一些数据而不仅仅是目标状态...根据您的问题,似乎没有相关数据,我们只知道我们的目标状态是什么。如果是这种情况,那么您只需应用BFS即可。