如何通过一个强制加权停止点遍历有向加权图,但有多个停止点和多个出口

问题描述 投票:0回答:1

给定一个有向邻接矩阵,找到到出口的最短权重路径,但是,您必须首先在可能的多个(最多顶点数量)加权停靠点之一处停止,其中每个停靠点可以有不同的权重。您只需在列出了位置和重量的这些站点之一停下来,然后就可以前往任何给定的出口。所需的复杂度应该是 O(Edges*log(Verticies))

我正在努力使用最小堆和优先级队列来实现 Dijkstra 算法,因为我不确定如何在不同的停靠点之间进行评估。我收到了潜在站点及其权重的列表,以及所有出口的位置和起始顶点。找出最佳且有效的解决方案的步骤是什么?

python algorithm graph-theory dijkstra
1个回答
0
投票
  • 构造 S 一条具有“无限”长度的路径
  • 使用 Dijkstra 找到 P1 从起点到每个必经站的最便宜路径向量
  • LOOP O 越过强制停靠点
    • 使用 Dijkstra 找到 P2 从 O 到每个出口的最便宜路径向量
    • 选择从start到O(从P1)最便宜的路径
    • 在 P2 上循环 p2
      • IF 长度 so + 长度 p2 < length S
        • 设S = 长度so + 长度p2
  • 输出S
© www.soinside.com 2019 - 2024. All rights reserved.