AUGMENTING-PATHS-BOUNDS(G, s, t) Let P be a new array Let E' be a new set FORD-FULKERSON(G, s, t) for each edge (u, v) ∈ G.E if (u, v).f > 0 (u, v).c' = (u, v).f INSERT(E', (u, v)) while E' != ∅ let (u, v) be the edge s.t. (u, v).c' is minimum in E'. run BFS twice (forward and back) to get the path p from s to t through (u,v) INSERT(P, p) c' = (u, v).c' for each edge (u, v) ∈ E' (u, v).c' = (u, v).c' - c' if (u, v).c' == 0 DELETE(E', (u, v)) return E
EDGE-CONNECTIVITY(G) Let V, E be new sets V = G.V select vertex s ∈ G.V randomly for each edge (u, v) ∈ G.E Let x be a new vertex INSERT(V, x) INSERT(E, (u, v)) (u, v).c_f = 1 INSERT(E, (v, x)) (v, x).c_f = 1 INSERT(E, (x, u)) (x, u).c_f = 1 edge-connectivity = |G.V| - 1 for each vertex t ∈ G.V - {s} Let G' = (V, E) be a new flow net work FORD-FULKERSON(G', s, t) edge-connectivity = min{edge-connectivity, |f|} return edge-connectivity
SIMPLIFY-FLOAT-DFS(G, s, u) u.color = GRAY for each vertex v in G.Adj[u] if (u, v).f > 0 if v.color == WHITE v.π = u SIMPLIFY-FLOAT-DFS(G, s, v) else if v.color == GRAY and v == s and (u, s).f == 1 (u, s).f = (u, s).f - 1 z = u while z != NIL (z.p, z).f = (z.p, z).f - 1 z = z.p exit // 算法结束,从此退出。 u.color = BLACK
SIMPLIFY-FLOAT-1(G, s, t) for each vertex u ∈ G.V u.color = WHITE u.π = NIL SIMPLIFY-FLOAT-DFS(G, s, s)
MINIMIN-CUT-MINIMUM-EDGES(G, s, t) for each edge (u, v) ∈ G.E (u, v).{c'_f} = (u, v) * (|G.E| + 1) + 1 run FORD-FULKERSON(G, s, t) using c_'f as capacity. let E, S, T be a new set for each edge (u, v) ∈ G.E if (u, v).f > - INSERT(E, (u, v)) let G' = (G.V, E) be a new graph BFS(G', s) for each vertex u ∈ G.V if u.color == BLACK INSERT(S, u) else INSERT(T, u) return (S, T)