【问题标题】:Multiple Source Multiple Destination shortest path多源多目的地最短路径
【发布时间】:2018-12-10 12:23:56
【问题描述】:

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

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

起初,我可以想到一个简单的解决方案,将其分解为 SD 不同的 OSOD 操作,问题是这非常耗时。

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

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

【问题讨论】:

    标签: algorithm mathematical-optimization path-finding


    【解决方案1】:

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

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

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

    【讨论】:

    • 您没有精确,但我想您在 D 被 S 消耗时将其取下(组合问题)。但是这怎么能保证你有最好的组合呢?
    • @Vince 我认为您没有正确阅读问题。只需要从任意 S 到任意 D 的单一最短路径。此处的 BFS 查找距离任何 S 1 步的所有节点,然后找到距离任何 S 2 步的所有节点,依此类推,直到到达 D。
    • 哦,你是对的......我不知道我是否首先错过了一些英文功能,或者我是否真的希望问题更复杂。很抱歉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多