4.5. The Minimum Spanning Tree Problem

  • A Spanning Tree is a tree that spans all the nodes in a graph
  • Given a connected graph G = (V, E) with positive edge weights ce, a Minimum Spanning Tree is a subset of the edges T ⊆ E such that T is a spanning tree whose sum of edge weights is minimized.
Problem To be solved
  • We need to find the cheapest spanning tree of the graph, which is called the Minimum Spanning Tree as mentioned above

Designing the algorithm

Three simple algorithms that efficiently finds the Minimum Spanning Tree:

Prim's algorithm

  • Start with some root node s and greedily grow a tree T from s outward
  • At each step, add the cheapest edge e to T that has exactly one endpoint in T
  • Similar to Dijkstra’s (but simpler)
  • So, in brief:
    • Maintain a set S ⊆ V ,the set on which we have constructed the spanning tree so far
    • Initially S = {s}, s the root node
    • In each iteration:
    • Grow S by one node, adding to S a node v whose cost = min e = (u,v):u in S Ce
    • Also add the edge e =(u,v) that satisfies the above formula.

Kruskal's algorithm

  • Start with T = φ,thus T = an empty tree
  • Consider edges in ascending order of cost
  • Insert edge e in T as long as e doesn't create a cycle when added
  • if e creates a cycle, we ignore it and move on to the next node

Reverse-Delete algorithm

  • Start with T = E, E the set of all the nodes in the graph
  • Consider edges in descending order of cost
  • Delete edge e from T unless doing so would disconnect T

Analyzing the Algorithms

  • The Cut Property :
    • Assume all edge costs are distinct –> The MST is unique
    • Now, let S be any subset of nodes that is neither empty nor equal to V
    • And let edge e = (v,w) be the minimum cost edge with one end in S and the other in V-S
    • Then an spanning tree contains the edge e
    • This straight-out-of-the-book statement is the cut property of the Minimum Spanning Tree.Proof:See book
    • So, we can insert nodes in the MST as long as we don't create cycle when doing so.
  • Prim's and Kruskal's algorithms produce a Minimum spanning tree of the graph G
  • The Cycle property:
    • Let C be any cycle, and let f be the maximum cost edge belonging to C
    • Then MST does not contain f.
    • So, we can delete a node from the MST as long as we don't disconnect our MST
  • The Reverse-Delete Algorithm produces a Minimum Spanning Tree of the graph G

Implementing Prim's Algorithm

  • We need to decide which node v to add next to the set S at each time
  • We maintain the attachment costs a(v) = min e = (u,v):u in S Ce for each node v in V-S
  • Keep the nodes in a Priority Queue(PQ) with a(v), the attachment costs, as the keys
  • We use ExtractMin to extract the node v to add to S
  • We use the ChangeKey operation to update the attachment costs
  • The ExtractMin operation is performed n-1 times
  • The ChangeKey operation is done at most once for each edge
  • Thus using a PQ, we can implement Prim's algorithm in O(mlogn) time


Implementation from our class' lecture:

for each (v ∈ V) a[v] = ∞
Initialize an empty priority queue Q
for each (v ∈ V) insert v onto Q
Initialize set of explored nodes S = φ
while (Q is not empty)
u = delete min element from Q
S = S ∪ { u }
for each (edge e = (u, v) incident to u)
if (v ∉ S) and (ce < a[v])
decrease priority a[v] to ce


There are several applications of the Minimum Spanning Tree algorithms, many can be found in the book.
This was by far the most interesting reading of the chapter!I give it a 9/10.

courses/cs211/winter2012/journals/jeanpaul/chapterfour_sectionv.txt · Last modified: 2012/03/01 02:15 by mugabej
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0