## Graph Theory Lecture Notes16

### Minimum Spanning Trees

**Def**: A *network* (*directed network*) is a graph (digraph) where the edges (arcs) have been assigned
non-negative real numbers. The numbers that have been assigned are called *weights*.
**Def**: A *minimum spanning tree* in a network is a spanning tree of the underlying graph which has the
smallest sum of weights amongst all spanning trees.

**Example**: Suppose that the vertices of a graph represent towns and the edges of the graph are roads
between these towns. Label each edge with the distance between the towns. If, in this network, it is
desired to run telephone wires along the roads so that all the towns are connected. Where should the
wires be put to minimize the amount of wire needed to do this? To answer the question, we need to
find a minimum spanning tree in the network.

We give two *greedy* algorithms for finding minimum spanning trees.

### Kruskal's Algorithm

Let G be a network with n vertices. Sort the edges of G in increasing order by weight (ties can be in
arbitrary order). Create a list T of edges by passing through the sorted list of edges and add to T any
edge which does not create a circuit with the edges already in T. Stop when T contains n-1 edges. If
you run out of edges before reaching n-1 in T, then the graph is disconnected and no spanning tree
exists. If T contains n-1 edges, then these edges form a minimum spanning tree of G.
*Pf*: If the algorithm finishes, then T is a spanning tree (n-1 edges with no circuits in a graph with n
vertices).

Suppose that S is a minimum spanning tree of G. If S is not T, let e = {x,y} be the first edge (by
weight) in T which is not in S. Since S is a tree, there is a chain C, from x to y in S. C U e is a
circuit in G, so not all of its edges can be in T. Let f be an edge in C which is not in T.

Suppose that wt f < wt e. Since the algorithm did not put f in T, f must have formed a circuit with
earlier edges in T, but these edges are all in S as is f, so S would contain a circuit ... contradiction.
Thus we have wt f >= wt e. Let S' = (S - {f}) U {e}. S' is connected and has n-1 edges, so it is a
spanning tree of G. Since wt S' <= wt S, and S was a minimal spanning tree, we must have wt f = wt
e. Thus, S' is also a minimum spanning tree having one more edge in common with T than S does.

This argument can now be repeated with S' in place of S, and so on, until we reach T, showing
that T must have been a minimum spanning tree.

### Prim's Algorithm

Let G be a network with n vertices. Pick a vertex and place it in a list L. Amongst all the edges with
one endpoint in the list L and the other not in L, choose one with the smallest weight (arbitrarily
select amongst ties) and add it to a list T and put the second vertex in L. Continue doing this until T
has n-1 edges. If there are no more edges satisfying the condition and T does not have n-1 edges,
then G is disconnected. If T has n-1 edges, then these form a minimum spanning tree of G.