Upload
awadhesh786
View
239
Download
0
Tags:
Embed Size (px)
DESCRIPTION
DS and Algo
Citation preview
Minimum Spanning TreesText Read Weiss, 9.5Prims Algorithm Weiss 9.5.1 Similar to Dijkstras Algorithm Kruskals AlgorithmWeiss 9.5.2 Focuses on edges, rather than nodes
DefinitionA Minimum Spanning Tree (MST) is a subgraph of an undirected graph such that the subgraph spans (includes) all nodes, is connected, is acyclic, and has minimum total edge weight
Algorithm CharacteristicsBoth Prims and Kruskals Algorithms work with undirected graphsBoth work with weighted and unweighted graphs but are more interesting when edges are weightedBoth are greedy algorithms that produce optimal solutions
Prims Algorithm
Similar to Dijkstras Algorithm except that dv records edge weights, not path lengths
Walk-ThroughInitialize array425AHBFEDCG7210183437893102
KdvpvAFBFCFDFEFFFGFHF
425AHBFEDCG721018343789310Start with any node, say D2
KdvpvABC DT0EFGH
425AHBFEDCG721018343789310Update distances of adjacent, unselected nodes2
KdvpvABC 3DDT0E25DF18DG2DH
425AHBFEDCG721018343789310Select node with minimum distance2
KdvpvABC 3DDT0E25DF18DGT2DH
425AHBFEDCG721018343789310Update distances of adjacent, unselected nodes2
KdvpvABC 3DDT0E7GF18DGT2DH3G
425AHBFEDCG721018343789310Select node with minimum distance2
KdvpvABCT 3DDT0E7GF18DGT2DH3G
425AHBFEDCG721018343789310Update distances of adjacent, unselected nodes2
KdvpvAB4CCT 3DDT0E7GF3CGT2DH3G
425AHBFEDCG721018343789310Select node with minimum distance2
KdvpvAB4CCT 3DDT0E7GFT3CGT2DH3G
425AHBFEDCG721018343789310Update distances of adjacent, unselected nodes2
KdvpvA10FB4CCT 3DDT0E2FFT3CGT2DH3G
425AHBFEDCG721018343789310Select node with minimum distance2
KdvpvA10FB4CCT 3DDT0ET2FFT3CGT2DH3G
425AHBFEDCG721018343789310Update distances of adjacent, unselected nodes2Table entries unchanged
KdvpvA10FB4CCT 3DDT0ET2FFT3CGT2DH3G
425AHBFEDCG721018343789310Select node with minimum distance2
KdvpvA10FB4CCT 3DDT0ET2FFT3CGT2DHT3G
425AHBFEDCG721018343789310Update distances of adjacent, unselected nodes2
KdvpvA4HB4CCT 3DDT0ET2FFT3CGT2DHT3G
425AHBFEDCG721018343789310Select node with minimum distance2
KdvpvAT4HB4CCT 3DDT0ET2FFT3CGT2DHT3G
425AHBFEDCG721018343789310Update distances of adjacent, unselected nodes2Table entries unchanged
KdvpvAT4HB4CCT 3DDT0ET2FFT3CGT2DHT3G
425AHBFEDCG721018343789310Select node with minimum distance2
KdvpvAT4HBT4CCT 3DDT0ET2FFT3CGT2DHT3G
4AHBFEDCG23433Cost of Minimum Spanning Tree = dv = 212Done
KdvpvAT4HBT4CCT 3DDT0ET2FFT3CGT2DHT3G
Kruskals Algorithm
Work with edges, rather than nodesTwo steps:Sort edges by increasing edge weightSelect the first |V| 1 edges that do not generate a cycle
Walk-ThroughConsider an undirected, weight graph51AHBFEDCG3246343484310
Sort the edges by increasing edge weight51AHBFEDCG3246343484310
edgedv(D,E)1 (D,G)2 (E,G)3 (C,D)3 (G,H)3 (C,F)3 (B,C)4
edgedv(B,E)4 (B,F)4 (B,H)4 (A,H)5 (D,F)6 (A,B)8 (A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310Accepting edge (E,G) would create a cycle
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG3246343484310
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Select first |V|1 edges which do not generate a cycle51AHBFEDCG2333DoneTotal Cost = dv = 21
4}not considered
edgedv(D,E)1(D,G)2(E,G)3(C,D)3(G,H)3 (C,F)3(B,C)4
edgedv(B,E)4(B,F)4(B,H)4(A,H)5(D,F)6(A,B)8(A,F)10
Detecting CyclesUse Disjoint Sets (Chapter 8)