给定无向加权连通图,s,t。找到从s到t的路径,其最大加权边缘尽可能低

时间:2017-08-02 17:42:15

标签: algorithm graph-theory breadth-first-search

给定:无向加权连通图。 s,t是顶点。

问题:找到一个尽可能高效的算法,它返回从s到t的路径。在该路径中,具有最高重量的边缘将具有尽可能最小的重量。因此,如果我们有来自s,t的5条路径,并且对于每条路径,我们都有最重的边缘,所以这5条的最小边缘。

我尝试过的事情:

  1. 使用某种算法查找s和t之间的最短路径。
  2. 删除不属于我们找到的最短路径
  3. 的所有边缘
  4. 使用BFS进行一些修改,我们根据从s到t的路径数运行BFS。每当我们找到最大边并将其存储在数组中时,我们就会找到数组的最小值。
  5. 我努力寻找可以在(1)中运行的算法,Bellman ford不会工作 - 因为它必须是有向图。 Dijkstra不会工作,因为我们不知道它是否有负圆或负边。 Prim用于寻找MST,我不知道它如何帮助我们找到最短的路径。有什么想法吗?

    除此之外,如果你有一个可以解决这个问题的算法,我将不胜感激。

3 个答案:

答案 0 :(得分:1)

您可以使用Kruskal's algorithm解决此问题。像往常一样添加边缘,只要s和t在同一个集群中就停止。

我们的想法是,在算法的每个阶段,我们都有效地将所有边缘添加到特定权重阈值以下。因此,如果s和t在同一个簇中,那么它们之间就有一条路径,完全由权重小于阈值的边组成。

答案 1 :(得分:1)

您可以通过转换为MST问题来解决它,基本上MST中从s到t的路径将是具有最小可能最大权重的路径

答案 2 :(得分:0)

  1. 找到图表中最负的边缘
  2. 将(重量+ 1)添加到每个边缘。
  3. 现在所有边缘都是正面的,因此您可以应用Dijkstra算法
  4. 您可以获得源和目的地之间的最短路径
  5. 现在计算源和目标之间的边数(比如x)
  6. 实际最短路径为:shortest_path - x *(权重+ 1)