找到一条仅包含一条特殊边的路径

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

我遇到一个问题,要求我在无向图中找到一条从起始节点到目标节点的路径,沿该路径的最小权重大于或等于任何其他路径。并且有一部分边是“危险”的,我们在选择路径时不能使用多个“危险”边,我们如何在 O(mlogn) 中找到这条路径,m 是所有边的数量,n 是顶点数。假设结果总是存在。

如果没有危险路径,我可以使用Dijkstra算法的修改版本,但是,我不知道如何添加“危险”边缘。我可以删除所有“危险”边,只保留一条,这样会发现路径可能包含也可能不包含剩余的“危险”边,并对每个“危险”边重复此操作,但是时间复杂度太高。有人可以给我线索吗?

graph dijkstra greedy
1个回答
0
投票
  • 如果输入图没有危险链接,则构造一个副本
  • 通过输入图找到最便宜的路径
  • 在最便宜的路径中找到第一个危险链接
  • 在复制图中找到从第一个危险链接的目的地到最终目的地的最便宜的路径。
  • 将两条路径从起点到终点合并为一条,并包括一个到目的地的危险链接以及更多危险链接
© www.soinside.com 2019 - 2024. All rights reserved.