4/18/2013 1
Minimal Spanning Trees
Chapter 9
CPTR 318 6 3 7 14 12 10 15 9 5 8 15 6 3 7 14 12 15 9 5 8 9 7 6 5 3 8 10
Prim’s Algorithm Initialization
// Initialization for ( each vertex v in V ) { v.value = ∞; // v v.prev = null; // v has no predecessor v.open = true; // v is open } Q = V; // Insert all vertices into priority queue MST = Ø; // MST empty v = RandomVertex(); // Select arbitrary vertex v.value = 0;
Prim’s Algorithm
// Initialization while ( Q ≠ Ø ) // While the priority queue is nonempty { u = Q.delete_min(); u.open = false; for ( each v adjacent to u ) { if ( v.open and weight(u,v) < v.value ) { v.value = weight(u,v); v.prev = u; Q.decrease_key(v); // value changed } } } for ( each v in V ) MST = MST.insert((v, v.prev));
Prim’s Algorithm Initialization
// Initialization for ( each vertex v in V ) { v.value = ∞; // v v.prev = null; // v has no predecessor v.open = true; // v is open } Q = V; // Insert all vertices into priority queue MST = Ø; // MST empty v = RandomVertex(); // Select arbitrary vertex v.value = 0;