Bellman-Ford或Network Flow可以找到最大数量的不同路径?

时间:2015-03-17 14:10:39

标签: algorithm graph graph-theory bellman-ford network-flow

我们有一个有向图(没有权重),G(V,E),有两个顶点st,使得s的度数和出度t等于0。我们希望找到从st的最大数量的不同边路径。通过使用哪种算法我们可以做到这一点。 Bellman-Ford,Dijkestra,Huffman和Network Flow。我觉得霍夫曼如此无关紧要,但其他人怎么样?我认为Network Flow就是答案,但我不明白为什么? stackeeeers,请帮帮我!

1 个答案:

答案 0 :(得分:0)

您可以使用Network Flow执行此操作。它甚至tells you how on wikipedia

  

最大边缘不相交路径

     

给定有向图G =(V,E)和两个顶点s和t,我们将找到从s到t的最大边缘不相交路径数。这个问题可以通过从G构造网络N =(V,E)来转换为最大流问题,其中s和t分别是N的源和宿,并为每个边分配单位容量。

这背后的直觉是最大流算法基本上解决了你的问题,同时找到了增强路径。 this SO question我认为Ivaylo Strandjev最好的解释是增强路径:

  

增强路径是一条简单的路径 - 一条不包含循环的路径 - 通过图形仅使用从源到接收器的正容量边缘。所以上面的陈述是显而易见的 - 如果你找不到从源到接收器只使用正容量边的路径,那么流不能增加(顺便说明那个陈述的证明并不那么容易)。