Prims Algorithm: Difference between revisions
From Rice Wiki
No edit summary |
No edit summary |
||
Line 40: | Line 40: | ||
Prove that <math>A = OPT - (x, y)</math> is a MST for the subproblem | Prove that <math>A = OPT - (x, y)</math> is a MST for the subproblem | ||
<math>G - X</math> | <math>G - X</math> | ||
By contradiction, assume that <math>A</math> is not optimal. There must | |||
be <math>B</math> such that | |||
<math> | |||
w(B) < w(A) | |||
</math> | |||
Adding the edge (x, y) back to both graphs, we have | |||
<math> | |||
w(B + w(x,y)) < w(A + w(x,y)) = w(OPT) | |||
</math> | |||
Therefore, OPT is not the optimal solution. | |||
By contradiction, <math>A</math> must be optimal. | |||
[[Category:Algorithms]] | [[Category:Algorithms]] |
Revision as of 01:23, 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, we have
Therefore, OPT is not the optimal solution.
By contradiction, must be optimal.