

















Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
This lecture is part of lecture series for Design and Analysis of Algorithms course. This course was taught by Dr. Bhaskar Sanyal at Maulana Azad National Institute of Technology. It includes: Prim, Algorithm, Running, Time, Priority, Implementation, Performance, Tree, Queue, Kruskal, Greedy
Typology: Slides
1 / 25
This page cannot be seen from the preview
Don't miss anything!
MST-Prim(G, w, r) Q = V[G]; for each u Q key[u] = ; key[r] = 0; p[r] = NULL; while (Q not empty) u = ExtractMin(Q); for each v Adj[ u ] if (v Q and w( u,v ) < key[ v ]) p[v] = u; key[v] = w(u,v);
14 10
3
6 4 5
2
9
15
8
u
Docsity.com
MST-Prim(G, w, r) Q = V[G]; for each u Q key[u] = ; key[r] = 0; p[r] = NULL; while (Q not empty) u = ExtractMin(Q); for each v Adj[ u ] if (v Q and w( u,v ) < key[ v ]) p[v] = u; key[v] = w(u,v);
14 10
3
6 4 5
2
9
15
8
u
Docsity.com
MST-Prim(G, w, r) Q = V[G]; for each u Q key[u] = ; key[r] = 0; p[r] = NULL; while (Q not empty) u = ExtractMin(Q); for each v Adj[ u ] if (v Q and w( u,v ) < key[ v ]) p[v] = u; key[v] = w(u,v);
14 10
3
6 4 5
2
9
15
8
u
Docsity.com
MST-Prim(G, w, r) Q = V[G]; for each u Q key[u] = ; key[r] = 0; p[r] = NULL; while (Q not empty) u = ExtractMin(Q); for each v Adj[ u ] if (v Q and w( u,v ) < key[ v ]) p[v] = u; key[v] = w(u,v);
14 10
3
6 4 5
2
9
15
8
u
Docsity.com
MST-Prim(G, w, r) Q = V[G]; for each u Q key[u] = ; key[r] = 0; p[r] = NULL; while (Q not empty) u = ExtractMin(Q); for each v Adj[ u ] if (v Q and w( u,v ) < key[ v ]) p[v] = u; key[v] = w(u,v);
14 10
3
6 4 5
2
9
15
8
u
Docsity.com
MST-Prim(G, w, r) Q = V[G]; for each u Q key[u] = ; key[r] = 0; p[r] = NULL; while (Q not empty) u = ExtractMin(Q); for each v Adj[ u ] if (v Q and w( u,v ) < key[ v ]) p[v] = u; key[v] = w(u,v);
14 10
3
6 4 5
2
9
15
8
u
Docsity.com
MST-Prim(G, w, r) Q = V[G]; for each u Q key[u] = ; key[r] = 0; p[r] = NULL; while (Q not empty) u = ExtractMin(Q); for each v Adj[ u ] if (v Q and w( u,v ) < key[ v ]) p[v] = u; DecreaseKey(v, w(u,v));
delete the smallest element from the min-heap
decrease an element’s value in the min-heap (outline an efficient algorithm for it) Docsity.com
MST-Prim(G, w, r) Q = V[G]; for each u Q key[u] = ; key[r] = 0; p[r] = NULL; while (Q not empty) u = ExtractMin(Q); for each v Adj[ u ] if (v Q and w( u,v ) < key[ v ]) p[v] = u; DecreaseKey(v, w(u,v));
Docsity.com
Docsity.com
» Grow a single tree by repeatedly adding the least cost edge that connects a vertex in the existing tree to a vertex not in the existing tree Intermediary solution is a subtree
» Grow a tree by repeatedly adding the least cost edge that does not introduce a cycle among the edges included so far Intermediary solution is a spanning forest
Docsity.com
Kruskal’s Algorithm
(High-Level Pseudocode)
Kruskal(G) //Input: A weighted connected graph G = <V, E> //Output: ET --- the set of edges composing MST of G Sort E in nondecreasing order of the edge weight ET = ; encounter = 0 //initialize the set of tree edges and its size k = 0 //initialize the number of processed edges while encounter < |V| - 1 k = k+ if ET {ek} is acyclic ET = ET {ek}; encounter = encounter + 1 return ET
14 10
3
6 4 5
2
9
15
(^8) Docsity.com
Kruskal() { T = ; for each v V MakeSet(v); sort E by increasing edge weight w for each (u,v) E (in sorted order) if FindSet(u) FindSet(v) T = T U {{u,v}}; Union(FindSet(u), FindSet(v)); }
Docsity.com
Kruskal() { T = ; for each v V MakeSet(v); sort E by increasing edge weight w for each (u,v) E (in sorted order) if FindSet(u) FindSet(v) T = T U {{u,v}}; Union(FindSet(u), FindSet(v)); }
Docsity.com
Kruskal() { T = ; for each v V MakeSet(v); sort E by increasing edge weight w for each (u,v) E (in sorted order) if FindSet(u) FindSet(v) T = T U {{u,v}}; Union(FindSet(u), FindSet(v)); }
Docsity.com