Minimum Spanning Tree: Difference between revisions

From Rice Wiki
No edit summary
No edit summary
Line 23: Line 23:
</math>
</math>


== Implementation ==
<pre>
MST(G):
    mst_nodes = start_node
    mst = adjacency list with no edges
    # candidate_edges is a min heap
    candidate_edges = (start_node, G[start_node])
    while mst_nodes is not spanning:
        new_edge = candidate_edges.pop()
</pre>


[[Category:Algorithms]]
[[Category:Algorithms]]

Revision as of 01:37, 6 March 2024

A minimum spanning tree is

  • a tree, meaning it has no cycle
  • minimum, meaning it has minimum weight
  • spanning, meaning it connects all nodes

MST Problem

The MST problem takes a connected graph and outputs an MST for that graph.

Approach: Greedy

The approach is to try to add the smallest edges as long as they do not create a cycle; add an edge to the tree that is minimum across the cut of vs.

Given the MST of , the MST of should be that of plus the edge that connects to that is the shortest.


Implementation

MST(G):
    mst_nodes = start_node
    mst = adjacency list with no edges
    # candidate_edges is a min heap
    candidate_edges = (start_node, G[start_node])
    while mst_nodes is not spanning:
        new_edge = candidate_edges.pop()