Algorithm 查找边不相交的路径(不是数量,而是路径)

Algorithm 查找边不相交的路径(不是数量,而是路径),algorithm,graph,flow,directed-graph,network-flow,Algorithm,Graph,Flow,Directed Graph,Network Flow,给定一个有向图,我们可以使用edmonds-karp或ford-fulkerson算法来寻找有向图中边不相交路径的最大数目 假设G中有k条边不相交的路径,如何在多项式时间内找到实际路径?我的最佳选择是BFS,一旦找到路径,就将这些边标记为已使用 非常感谢 您可以使用流分解。事情是这样的: 让我们从开始节点运行深度优先搜索,忽略具有零流或负流的边 到达终端节点后,从从开始节点到终端节点的路径上通过所有边的流中减去一,然后打印它们(它们形成一条路径) 只要可以到达终端节点,就继续这样做 每次运行使用

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

假设G中有k条边不相交的路径,如何在多项式时间内找到实际路径?我的最佳选择是BFS,一旦找到路径,就将这些边标记为已使用


非常感谢

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

  • 让我们从开始节点运行深度优先搜索,忽略具有零流或负流的边

  • 到达终端节点后,从从开始节点到终端节点的路径上通过所有边的流中减去一,然后打印它们(它们形成一条路径)

  • 只要可以到达终端节点,就继续这样做

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


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

    您是将BFS应用于原始图,还是仅应用于由具有非零流的边形成的受限图?我明白了,所以诀窍是对返回的流使用搜索算法?非常感谢@鲁本:是的。你需要使用流。@kraskevich!我试图解决这个问题,但我发现关于这个问题的所有东西都有一个我无法理解的“漏洞”。那么,我应该在哪个图表中运行DFS?最大流量的残差图还是原始图?如何治疗周期?提前谢谢。@Marco您只需使用具有正向流的边缘即可。周期并不重要,因为DFS总是找到一条简单的路径。