algorithm - 多源多目的地最短路径

标签 algorithm mathematical-optimization path-finding

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

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

起初,我能想到一个天真的解决方案,涉及将其分解为 SD 不同的 OSOD 操作,问题是这非常耗时。

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

我需要一种可以在 O(WH) 时间内执行寻路的算法。我一直没能找到任何能在 O(WH) 时间内给我最短路径的东西,而且它是基于 MSMD 的。希望有人能为我指明正确的方向。

最佳答案

想象一个图,它包括迷宫以及迷宫外的开始和结束顶点,从开始顶点到每个 S 都有一条边,从每个 D 到结束顶点都有一条边。

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

我说“想象”该图,因为您实际上不必构建它。这最终成为一个简单的广度优先搜索,稍作修改——您从根级别中的所有 S 节点开始,并在到达任何 D 时停止。

关于algorithm - 多源多目的地最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53705598/

相关文章:

python - 如何使用 Python Gekko 解决绝对值 abs() 目标?

python - 有没有办法在 Pandas DataFrame 的列中查找模式

python - 如何通过只撞墙找到二维迷宫阵列中的最短路径

java - 数字总和问题

java - 两个字符串的交错

javascript - 识别不同类型的三 Angular 形

matlab - 最速下降求解具有希尔伯特矩阵的线性系统

php - 向 A* php 实现添加非单调启发式

c++ - 查找相邻节点 A Star Path-Finding C++

c++ - 是否可以在迭代期间添加数组中的元素?