Prims Algorithm: Difference between revisions
From Rice Wiki
No edit summary |
No edit summary |
||
Line 48: | Line 48: | ||
</math> | </math> | ||
Adding the edge (x, y) back to both graphs, | Adding the edge (x, y) back to both graphs | ||
<math>B + (x, y)</math> is a viable tree. | |||
<math> | <math> |
Revision as of 01:24, 8 March 2024
Approach: Greedy
Implementation
for each u in V: key[u] = infinity // cost array pi[u] = infinity // from array Q = new PriorityQueue(V) key[root] = 0 while Q is not empty: u = extractMin(Q) # Reduce nodes for v in adj[u]: if v in Q and w[u,v] < key[v]: key[v] = w[u,v]
Analysis
Priority queue is slower than array when the graph is dense, so sometimes it's better to use Dijsktra's algorithm.
Proof: Greedy
Suboptimality
Given MST tree for the graph G
where the number of edges is , the weight of edges is minimum, and the tree is spanning.
Consider , where X is a leaf node.
Prove that is a MST for the subproblem
By contradiction, assume that is not optimal. There must be such that
Adding the edge (x, y) back to both graphs
is a viable tree.
Therefore, OPT is not the optimal solution.
By contradiction, must be optimal.