转自:http://www.cnblogs.com/lotus3x/archive/2008/07/21/1247270.html
算法名称 | 复杂度 | 概要 |
增广路方法 Augmenting path method (Ford Fulkerson method) | ||
一般增广路算法 Labeling algorithm | O(nmU) | 在残留网络中,每次任意找一条增广路径增广。 |
容量缩放增广路算法 Capacity scaling algorithm | O(nm logU) | 在残留网络中,每次找一条有最大可增广容量和的增广路径增广,即残留网络中源到汇的最长路。 |
最短增广路算法 Shortest augmenting path algorithm (Edmonds Karp algorithm) | O(nm2) | 在残留网络中,每次找一条含结点数最少的增广路增广,即残留网络中源到汇的BFS 路径。 |
连续最短增广路算法 Successive shortest augmenting path algorithm (Dinic algorithm) | O(n2m) | 在 Edmonds Karp 的基础上改造。在每次BFS找增广路时,记录每个点的距离标号。在距离标号的所构成的最短路图上,不断地 DFS找增广路。即一次标号多次增广,以提高速度。 |
预流推进方法 Preflow-push method | ||
一般预流推进算法 Generic preflow-push algorithm | O(n2m) | 维护一个预流,不断地对活跃结点执行push操作或relabel操作来调整这个预流,直到不能操作。 |
先进先出预流推进算法 FIFO preflow-push algorithm | O(n3) | 以先进先出队列维护活跃结点。 |
最高标号预流推进算法 Highest-label preflow-push algorithm (Relabel-to-Front algorithm) | O(n2m1/2) | 每次检查具有最高标号的活跃结点。 |