Algorithm 改进星型算法在迷宫中搜索多个目标

Algorithm 改进星型算法在迷宫中搜索多个目标,algorithm,a-star,maze,traveling-salesman,Algorithm,A Star,Maze,Traveling Salesman,如果我已经在迷宫中完成了A*算法的实现,以寻找到单个目标的最短路径(就像吃豆人游戏一样),那么我应该如何改进当前的启发式(到目标的曼哈顿距离+从开始到现在的旅行成本),以便我的算法能够支持迷宫中的多个目标。基本上,我想找到最短的路径来穿越迷宫中的所有目标。为了确保路径是最优的,假设我们忽略问题的一致性,启发式函数需要是可容许的 我知道这就像旅行推销员的问题,但现在我只处理相对较少的数据量,所以我想继续使用启动算法 欢迎有任何想法。谢谢 您可以使用距离尚未访问的最近目标的距离;这样,只有在访问了最

如果我已经在迷宫中完成了A*算法的实现,以寻找到单个目标的最短路径(就像吃豆人游戏一样),那么我应该如何改进当前的启发式(到目标的曼哈顿距离+从开始到现在的旅行成本),以便我的算法能够支持迷宫中的多个目标。基本上,我想找到最短的路径来穿越迷宫中的所有目标。为了确保路径是最优的,假设我们忽略问题的一致性,启发式函数需要是可容许的

我知道这就像旅行推销员的问题,但现在我只处理相对较少的数据量,所以我想继续使用启动算法


欢迎有任何想法。谢谢

您可以使用距离尚未访问的最近目标的距离;这样,只有在访问了最后一个目标后,它才会变为0。

您可以使用距离最近但尚未访问的目标的距离;这样,只有在访问了最后一个目标后,它才会变为0。

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

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


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

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

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


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

选择Dijkstra算法而不是*算法。 因为*算法不能应用于那些有许多目标节点的图。如果您有许多目标节点,但不知道哪一个最靠近主节点,那么A*不是非常理想。这是因为它需要运行多次(每个目标节点一次)才能访问所有节点

参考:

选择Dijkstra算法而不是A*。 因为*算法不能应用于那些有许多目标节点的图。如果您有许多目标节点,但不知道哪一个最靠近主节点,那么A*不是非常理想。这是因为它需要运行多次(每个目标节点一次)才能访问所有节点

参考:

你能说得更具体些吗?我想用一颗星星来计算目标之间的距离,然后应用最小生成树。但我这里有一个迷宫,而不是一个图表,这意味着在进球之间有不止一条可能的路径来应用一颗星星。。。如果你有目标
a
b
c
d
,你可以用a*来找到
(a,b)
(a,c)
(a,d)
(b,d)
(b,d)
(b,d)
。这是一张可以用来解决旅行推销员问题的图表。如果你只有几个,尝试每一个排列就足够快了。你能更具体一点吗?我想用一颗星星来计算目标之间的距离,然后应用最小生成树。但我这里有一个迷宫,而不是一个图表,这意味着在进球之间有不止一条可能的路径来应用一颗星星。。。如果你有目标
a
b
c
d
,你可以用a*来找到
(a,b)
(a,c)
(a,d)
(b,d)
(b,d)
(b,d)
。这是一张可以用来解决旅行推销员问题的图表。如果你只有几个,尝试每一个排列就足够快了。