我们有一个有向图(没有权重),G(V,E),有两个顶点s
和t
,使得s
的度数和出度t
等于0
。我们希望找到从s
到t
的最大数量的不同边路径。通过使用哪种算法我们可以做到这一点。 Bellman-Ford,Dijkestra,Huffman和Network Flow。我觉得霍夫曼如此无关紧要,但其他人怎么样?我认为Network Flow就是答案,但我不明白为什么? stackeeeers,请帮帮我!
答案 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最好的解释是增强路径:
增强路径是一条简单的路径 - 一条不包含循环的路径 - 通过图形仅使用从源到接收器的正容量边缘。所以上面的陈述是显而易见的 - 如果你找不到从源到接收器只使用正容量边的路径,那么流不能增加(顺便说明那个陈述的证明并不那么容易)。