170 likes | 184 Views
Chu-Liu/Edmonds’ Algorithm an introduction. Qingxia Liu. A Quick Glance. Chu-Liu/Edmonds’ Algorithm input a weighted directed graph G(V,E) root r (reachable to every vertex of G) output a minimum spanning tree of G rooted at r Contributors Yoeng-jin Chu and Tseng-hong Liu (1965)
E N D
Chu-Liu/Edmonds’ Algorithman introduction Qingxia Liu yjydfnhc@126.com
A Quick Glance • Chu-Liu/Edmonds’ Algorithm • input • a weighted directed graph G(V,E) • root r (reachable to every vertex of G) • output • a minimum spanning tree of G rooted at r • Contributors • Yoeng-jin Chu and Tseng-hong Liu (1965) • Edmonds(1967) • Bock(1971) • Tarjan(1977): O(ElogV), O(V2) • Gabow(1986): O(E+VlogV) • ……
Basic Concepts • Minimum Spanning Tees in directed graphs • a spanning tree rooted at r • a set of n-1 edges containing paths from r to every vertex • of minimum total edge cost • MINT∑(u,v)∈T c(u,v)
Chu-Liu/Edmonds Algorithm • Construct original S • discard entering edges of r • For i∈V\{r}, select the edge (k,i) of mink c(k,i) • Let the selected n-1 edges be the set S. • If no cycle formed, G(N,S) is a MST. • Otherwise, deal with cycle.
Chu-Liu/Edmonds Algorithm • Deal with Cycle • For each cycle formed • contract the cycle into a pseudo-node (k) • for each edge(i,j) (i∈V\cycle, j∈cycle) modify the cost: c(i,k)=c(i,j)-(c(x(j),j)-min_{j}(c(x(j),j)) • for each pseudo-node • select the entering arc which has the smallest modified cost • replace the arc which enters the same real node in S by the new selected arc. • If no cycle formed, G(N,S) is a MST. • else deal with cycle O(E) time
Example • Construct original S 1 1 10 8 2 3 1 5 6 4 1 7 5 3 4 2 3 11 5 6 9 4 2 6 5 4 3 6
Example • Cycle Contract 1 1 1 1 10 10 8 8 2 2 3 1 5 5 3 6 6 4 4 1 7 7 5 5 3 3 4 4 2 k 11 11 5 3 6 9 4 2 2 9 6 6 5 4 3 6
Example • (5,4): min_{j}(c(x(j),j)=3 • modify cost: • c(i,k) = c(i,3)-(c(4,3)-3) • or c(i,4)-(c(5,4)-3) • or c(i,5)-(c(3,4)-3) • Edge Replacing 1 1 10 8 2 3 1 1 5 6 4 1 7 1 9 5 3 4 2 2 7 5 11 5 3 3 6 6 9 4 7 2 6 5 5 4 4 3 3 8 2 9 6 6
Example • Minimum Spanning Tree 1 1 ∑(u,v)∈T c(u,v)=23 1 1 10 10 8 8 2 2 3 5 5 3 6 6 4 4 7 7 5 5 3 3 4 4 11 11 9 9 2 2 6 6
Implementation • Tarjan (1977) • O(mlogn) • Camerini et.al.(1979) repaired an error
Implementation • Tarjan (1977) • First step: of any vertex v, choose the edge (u,v) of largest value among its entering edges, add to set H • General step: • for each root component S in G(H) • find the largest unexamined entering edge (u,v) (v∈S) • if u∈S, discard the edge; • else, let W be the weakly connected component of G(H) that v∈W. if u∈W, add (u,v) to H;
Implementation • Tarjan (1977) else u∉S, u∈W, find the cycle c(between S1……Sk) formed by (u,v), let (i,j) be the minimum edge on the cycle, modify unexamined edge (x,y) y∈Si as c(x,y)=c(x,y)-c(a,y’)+c(i,j) add (u,v) to H • Disjoint Set • record weakly/strongly connected component • Priority Queue • keep track of entering edges of each strongly connected compnent
Implementation • Gabow (1986) • O(nlogn+m) • improvement on the first phase: • depth-first strategy: growth path
References • Tarjan, Robert Endre. "Finding optimum branchings." Networks 7.1 (1977): 25-35. • H. N. Gabow, Z. Galil, T. Spencer, and R. E. Tarjan, “Efficient algorithms for finding minimum spanning trees in undirected and directed graphs,” Combinatorica 6 (1986), 109-122. • Camerini, Paolo M., Luigi Fratta, and Francesco Maffioli. "A note on finding optimum branchings." Networks 9.4 (1979): 309-312. • http://www.ce.rit.edu/~sjyeec/dmst.html
Thank You ~ Any questions?
Basic Concepts • Branching • a branching B of G is a set of edges such that • each vertex has at most one in-degree • if (x1,y1),(x2,y2) are distinct edges of B, then y1 != y2 • no cycle • Optimum Branching • a branching that ∑(u,v)∈B c(u,v) is maximum/minimum
Example • Minimum Spanning Tree 1 1 ∑(u,v)∈T c(u,v)=23 1 5 1 10 10 2 8 2 3 6 2 5 6 4 8 7 5 7 11 3 4 3 4 11 6 9 2 6 5 9 3 4