0% found this document useful (0 votes)
203 views24 pages

Minimum Spanning Trees

Prim's and Kruskal's algorithms are used to find minimum spanning trees (MST) in weighted graphs. Prim's algorithm finds the MST by growing a tree from an initial vertex, always adding the lowest weighted edge that connects the growing tree to a new vertex. Kruskal's algorithm finds the MST by sorting all the edges by weight and building up the tree by adding the lowest weighted edges that do not create cycles. Both run in O(ElogE) time for adjacency list representation and O(ElogV) time for adjacency matrix, where V is vertices and E is edges.

Uploaded by

Test
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
203 views24 pages

Minimum Spanning Trees

Prim's and Kruskal's algorithms are used to find minimum spanning trees (MST) in weighted graphs. Prim's algorithm finds the MST by growing a tree from an initial vertex, always adding the lowest weighted edge that connects the growing tree to a new vertex. Kruskal's algorithm finds the MST by sorting all the edges by weight and building up the tree by adding the lowest weighted edges that do not create cycles. Both run in O(ElogE) time for adjacency list representation and O(ElogV) time for adjacency matrix, where V is vertices and E is edges.

Uploaded by

Test
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 24

Minimum Spanning Tree:

Prims & Kruskals Algorithms

Prims Algorithm
Prim's algorithm finds a minimum spanning tree (MST) for a
connected weighted graph.
MST = subset of edges that forms a tree including every vertex,
such that total weight of all edges is minimized
Vojtch Jarnk: O jistm problmu minimlnm [About a certain
minimal problem], Prce Moravsk Prodovdeck
Spolenosti, 6, 1930, pp. 57-63. (in Czech)
Robert C. Prim: Shortest connection networks and some
generalisations. In: Bell System Technical Journal, 36 (1957),
pp. 13891401
Rediscovered by Edsger Dijkstra in 1959
aka DJP algorithm, Jarnk algorithm, Prim-Jarnk algorithm

Prims Algorithm
for each vertex in graph
set min_distance of vertex to
set parent of vertex to null
set minimum_adjacency_list of vertex to empty list
set is_in_Q of vertex to true
set distance of initial vertex to zero
add to minimum-heap Q all vertices in graph.
while latest_addition = remove minimum in Q
set is_in_Q of latest_addition to false
add latest_addition to (minimum_adjacency_list of (parent of latest_addition))
add (parent of latest_addition) to (minimum_adjacency_list of latest_addition)
for each adjacent of latest_addition
if (is_in_Q of adjacent) and (weight-function(latest_addition, adjacent) <
min_distance of adjacent)
set parent of adjacent to latest_addition
set min_distance of adjacent to weight-function(latest_addition, adjacent)
update adjacent in Q, order by min_distance

Prims Algorithm 1

Not Seen

Fringe

Solution

C, G

A, B, E, F

Prims Algorithm 2

Not Seen

Fringe

Solution

C, G

B, E, F

A, D

Prims Algorithm 3

Not Seen

Fringe

Solution

B, E, G

A, D, F

Prims Algorithm 4

Not Seen

Fringe

Solution

C, E, G

A, D, F, B

Prims Algorithm 5

Not Seen

Fringe

Solution

C, G

A, D, F, B, E

Prims Algorithm 6

Not Seen

Fringe

Solution

A, D, F, B, E, C

Prims Algorithm 7

Not Seen

Fringe

Solution

A, D, F, B, E, C, G

Prims Algorithm

Kruskals Algorithm
Kruskal's algorithm finds a minimum spanning tree
(MST) for a connected weighted graph.
MST = subset of edges that forms a tree including
every vertex, such that total weight of all edges is
minimized
If the graph is not connected, the minimum spanning
forest will be found, i.e., MST for each connected
component.
This is because all edges are examined in order of weight.

Kruskals is a greedy algorithm


Joseph. B. Kruskal: On the Shortest Spanning Subtree
of a Graph and the Traveling Salesman Problem. In:
Proceedings of the American Mathematical Society,
Vol 7, No. 1 (Feb, 1956), pp. 4850

Kruskals Algorithm
function Kruskal(G)
for each vertex v in G do
Define an elementary cluster C(v) {v}.
Initialize a priority queue Q to contain all edges in G, using the weights as keys.
Define a tree T
//T will ultimately contain the edges of the MST
// n is total number of vertices
while T has fewer than n-1 edges do
(u,v) Q.removeMin()
// prevent cycles in T. add edge u,v only if T does not already contain an edge
consisting of u and v.
// Note that the cluster contains more than one vertex only if an edge containing
a pair of the vertices has been added to the tree.
Let C(v) be the cluster containing v, and let C(u) be the cluster containing u.
if C(v) C(u) then
Add edge (v,u) to T.
Merge C(v) and C(u) into one cluster, that is, union C(v) and C(u).
return tree T

Kruskals Algorithm 1

Kruskals Algorithm 2

Kruskals Algorithm 3

Kruskals Algorithm 4

Kruskals Algorithm 5

Kruskals Algorithm 6

Kruskals Algorithm 7

Kruskals Algorithm

Prims & Kruskals Demos

Prims:
http://www.unf.edu/~wkloster/foundations/PrimApplet/PrimApplet.htm

Kruskals:
http://students.ceid.upatras.gr/~papagel/project/kruskal.htm
http://www.unf.edu/~wkloster/foundations/KruskalApplet/KruskalApplet.htm

Prims & Kruskals Running Time


{1,1}, {1,2}, {1,5}
{2,3}, {2,5}
{3,4}
{4,5}, {4,6}

Input is Adjacency List

Input is Adjacency Matrix

Prims

O(V + E (log E ))

O(V +E (log E ))

Kruskals

O(V + E (log E )+E (log V ))

O(V +E (log E )+E (log V ))

Sources
Ikeda, Kenji. http://www-b2.is.tokushima-u.ac.jp/~ikeda/
Panagiotis, Papaioannou.http://students.ceid.upatras.gr/~papagel/
B. R. Preiss. Data Structures and Algorithms with ObjectOriented Design Patterns in C#.
Cormen et al. Introduction to Algorithms.
Wikipedia

You might also like