在这里。有关详细解决方案,请参阅
my blog
1: CRITICAL-EDGE(G, s, t)
2: if |E(G)| == 1
3: return the only edge
4: else
5: x = median of all edge weights
6: X = E - (v, w) s.t. weight(v, w) > x
7: G' = G(V, X)
8: exists = is there a path from s to t in G'
9: if (exists == FALSE)
10: C = {Câ, Câ, ..., Câ} s.t. Cáµ¢ is a connected component of G
11: G' = G(V, E - X)
12: for i = 1 to |C|
13: G' = SHRINK(G', C, i)
14: else if X == E // no edges were deleted
15: X = {(v, w)} s.t. weight(v, w) = x
16: G' = G(V, X)
17: return CRITICAL-EDGE(G', s, t)
18: SHRINK(G, C, i)
19: leaderáµ¢ = leader vertex of C[i]
20: V* = {V(G) - C[i]} ⪠{leaderᵢ}
21: E* = {}
22: for each (v, w) â E(G)
23: if v â C[i], w â C[j]
24: E* = E* ⪠{(leaderáµ¢, leaderâ±¼, min(weight(u, w)))} â u â C[i]
25: else if v, w â C[i]
E * = E* ⪠{(v, w, weight(v, w))}
26: return G*(V*, E*)