经过特定顶点的有向图中最轻量级的圆

时间:2017-11-21 23:20:09

标签: algorithm graph-algorithm weighted-graph

我已经指导了具有权重函数w的图G(V,E)。所以每个(u,v)的权重是一个正值。我需要在图中找到最轻量级的圆顶k'是其中的一部分。

我还提供了一个我可以使用的算法,它可以为具有正值权重的图形找到最轻量级的路径(我只能使用它一次)。

我考虑创建子图G'其中所有顶点和边是强连接组件。找到k'是它的一部分。然后从k'找到最轻量级的相邻边缘。到一些v顶点。从那个v我可以运行给定的算法并找到轻量级路径然后添加丢失的顶点的权重((k',v))。

这看起来是否正确?我在本课程开始时就觉得我还没有。

3 个答案:

答案 0 :(得分:1)

这是一个单源最短路径问题,您可以将k->k自循环作为解决方案排除,并找到从k到k的更长路径。技巧总是扩展最短路径线程。

根据这个定义,你可以开始谷歌搜索......

答案 1 :(得分:0)

我无法想象你为什么要调用你的源顶点 k' 。总之...

添加与 k' 具有相同传出边缘的新vetrex w

然后使用Dijkstra算法找到从 w k' 的最短路径。

在路径中用 w 替换 k' ,并且您拥有最小的周期,包括 k'

答案 2 :(得分:0)

非常有趣的问题。我假设图中没有负值,否则以下解决方案需要首先对顶点进行归一化,使得负值变为至少为0.第一种方法(平凡)是检测从目标顶点开始的所有循环(k )。然后计算所有这些周期的权重并采用最小值。第二种方法是从目标节点(k)运行Dijkstra算法(再次注意负权重)。然后迭代(k)的所有传入边,并选择具有最小Dijkstra值的源节点。现在,最轻的循环包括从(k)到所选节点的单路径(由Dijkstra遍历形成)+返回到(k)的桥。我希望有帮助:)