多源多目标最短路径

时间:2018-12-10 12:23:56

标签: algorithm mathematical-optimization path-finding

假设我们有一个迷宫,它的宽度为W,高度为H。在这个迷宫中,有多个人和多个塔。人是来源(S),塔是(D)目的地。应该知道,我们对迷宫有无所不知的见解。我的问题是这样的:

如果我想找到任何不同SD组合之间的最短路径,该如何解决?

首先,我可以想到一个幼稚的解决方案,涉及将其分解为SD不同的OSOD操作,问题在于这非常耗时。

第二种选择是将其分解为S种不同的OSMD操作。但是我怀疑这对于我正在寻找的东西仍然太低效。

我需要一种可以在O(W H)时间执行寻路的算法。我找不到能够在O(W H)时间中为我提供最短路径且基于MSMD的东西。希望有人可以指出正确的方向。

1 个答案:

答案 0 :(得分:3)

想象一下一个图,其中包含迷宫以及迷宫外部的起点和终点顶点,从起始顶点到每个S的边以及从每个D到结束顶点的一条边。

现在进行广度优先搜索(因为没有权重)以查找从单点到单点的最短路径。

我说“想象”该图,因为您实际上不必构建它。最终,这是一个简单的广度优先搜索,并进行了少量修改-您从根级别的所有S节点开始,直到到达任何D都停止。