改进星形算法以在迷宫中搜索多个目标

时间:2016-09-21 02:08:59

标签: algorithm a-star maze traveling-salesman

如果我已经在迷宫中完成了A *算法的实现,找到了通往单个目标的最短路径(就像pacman游戏一样),我应该如何改进目前的启发式算法(曼哈顿到目标的距离+到目前为止的旅行费用)从一开始)这样我的算法就可以在迷宫中支持多个目标。基本上,我想找到通过迷宫中所有目标的最短路径。为了确保路径是最优的,假设我们忽略问题的一致性,则需要允许启发式函数。

我知道这就像旅行商问题,但是现在我只处理相对少量的数据,所以我想继续使用A start算法。

欢迎任何想法。谢谢!

3 个答案:

答案 0 :(得分:2)

A *找到从一个点到另一个点的最短路径。

您不能将约束添加到允许的路径(例如,必须沿途访问所有这些节点)到A *并期望它仍然产生最短路径。

您可以使用A *查找目标之间的距离(和路径),然后解决目标之间的旅行商问题(使用这些距离),以确定访问目标的顺序,从而获得最短的整体路径。

答案 1 :(得分:0)

您可以使用距离未访问过的最近目标的距离;这样,当最后一个目标被访问时,它才会变为0。

答案 2 :(得分:0)

在A *上选择Dijkstra的算法。 因为A *算法无法应用于具有许多目标节点的图。如果您有许多目标节点,但又不知道哪个节点最接近主节点,则A *不是最佳选择。这是因为它需要运行几次(每个目标节点一次)才能访问所有目标。

参考: How does Dijkstra's Algorithm and A-Star compare? - Intellipaat Community