找到边缘不相交的路径(不是数字,路径)

时间:2016-12-19 16:36:26

标签: algorithm graph flow directed-graph network-flow

给定有向图,我们可以使用edmonds-karp或ford-fulkerson算法来查找有向图中边缘不相交路径的最大数量。

假设G中存在k个边缘不相交的路径,如何在多项式时间内找到实际路径?我最好的选择是BFS,一旦找到路径就会标记这些边缘。

非常感谢!

1 个答案:

答案 0 :(得分:2)

您可以使用流分解。它是这样的:

  1. 让我们从起始节点开始深度优先搜索,并忽略具有零流量或负流量的边缘。

  2. 到达终端节点后,从流程中从开始节点到终端1的路径上的所有边缘中减去一个并打印它们(它们形成路径)。

  3. 只要终端节点可以访问,就继续这样做。

  4. 每次运行使用多项式时间量,并从图中查找并删除一条路径。不相交路径的数量显然是多项式的,因此该算法具有多项式时间复杂度。

    您也可以使用广度优先搜索(您仍然需要忽略具有非正流量的边缘)。