明星:找到最接近多个目标

时间:2013-03-10 20:06:27

标签: a-star

我正在开发项目,我需要找到2D网格中最近(很多)目标节点的路径(任何节点中的8个连接:N,S,W,E,NW,NE,SW,SE) 。路上可能有挡墙路径。找到一个目标节点的路径没有问题,但我怎样才能在合理的时间内找到哪个目标最近?我不认为为每个目标节点运行A *并且获得比较的每条路径的长度是合理的方式,还有什么可以做呢?

A *是否能够以某种方式找到最近节点的路径,或者必须以其他方式找到最近的目标,然后将其作为唯一目标传递给A *?

enter image description here

图例:

白色 - 可步行

灰色墙壁

蓝色 - 我自己

绿色 - 目标

红色 - 敌人(我计划在X SQM与敌人保持距离)

2 个答案:

答案 0 :(得分:2)

是的,只需将EstimatedDistanceToEnd(又名h(x))设置为所有终端节点的最低估计值。然后在点击结束节点时停止搜索。

答案 1 :(得分:1)

A *用于知情搜索,其中我们有一些数据而不仅仅是目标状态...根据您的问题,似乎没有相关数据,我们只知道我们的目标状态是什么。如果是这种情况,那么您只需应用BFS即可。