The document discusses minimum spanning tree algorithms for finding low-cost connections between nodes in a graph. It describes Kruskal's algorithm and Prim's algorithm, both greedy approaches. Kruskal's algorithm works by sorting edges by weight and sequentially adding edges that do not create cycles. Prim's algorithm starts from one node and sequentially connects the closest available node. Both algorithms run in O(ElogV) time, where E is the number of edges and V is the number of vertices. The document provides examples to illustrate the application of the algorithms.
A connected,
undirected
graph
Four ofthe spanning trees of the graph
SPANNING TREE...
Suppose you have a connected undirected graph
Connected: every node is reachable from every
other node
Undirected: edges do not have an associated
direction
...then a spanning tree of the graph is a connected
subgraph in which there are no cycles
Minimizing costs
Suppose youwant to supply a set of houses (say, in a new
subdivision) with:
electric power
water
sewage lines
telephone lines
To keep costs down, you could connect these houses with a
spanning tree (of, for example, power lines)
However, the houses are not all equal distances apart
To reduce costs even further, you could connect the houses
with a minimum-cost spanning tree
6.
A cable companywant to connect five villages to their network
which currently extends to the market town of Avonford.
What is the minimum length of cable needed?
Avonford Fingley
Brinleigh Cornwell
Donster
Edan
2
7
4
5
8 6
4
5
3
8
Example
7.
MINIMUM SPANNING TREE
LetG = (N, A) be a connected, undirected graph where
N is the set of nodes and A is the set of edges. Each
edge has a given nonnegative length. The problem is to
find a subset T of the edges of G such that all the
nodes remain connected when only the edges in T are
used, and the sum of the lengths of the edges in T is as
small as possible possible. Since G is connected, at
least one solution must exist.
8.
Finding Spanning Trees
•There are two basic algorithms for finding minimum-cost
spanning trees, and both are greedy algorithms
• Kruskal’s algorithm:
Created in 1957 by Joseph Kruskal
• Prim’s algorithm
Created by Robert C. Prim
9.
We model thesituation as a network, then the problem is
to find the minimum connector for the network
A F
B C
D
E
2
7
4
5
8 6
4
5
3
8
Select the next
shortest
edgewhich does not
create a cycle
ED 2
AB 3A
F
B
C
D
E
2
7
4
5
8 6
4
5
3
8
Kruskal’s Algorithm
13.
Select the next
shortest
edgewhich does not
create a cycle
ED 2
AB 3
CD 4 (or AE 4)
A
F
B
C
D
E
2
7
4
5
8 6
4
5
3
8
Kruskal’s Algorithm
14.
Select the next
shortestedge which
does not create a cycle
E
A
C
A
F
B
C
D
E
2
7
4
5
8 6
4
5
3
8
Kruskal’s Algorithm
15.
Select the nextshortest
edge which does not
create a cycle
ED 2
AB 3
CD 4
AE 4
BC 5 – forms a cycle
EF 5
A
F
B
C
D
E
2
7
4
5
8 6
4
5
3
8
Kruskal’s Algorithm
16.
All vertices havebeen
connected.
The solution is
ED 2
AB 3
CD 4
AE 4
EF 5
Total weight of tree:
18
A
F
B
C
D
E
2
7
4
5
8 6
4
5
3
8
Kruskal’s Algorithm
17.
Algorithm
function Kruskal (G=(N,A):graph ; length : AR+
):set of edges
{initialisation}
sort A by increasing length
N the number of nodes in N
T Ø {will contain the edges of the minimum spanning tree}
initialise n sets, each containing the different element of N
{greedy loop}
repeat
e {u , v} shortest edge not yet considered
ucomp find(u)
vcomp find(v)
if ucomp ≠ vcomp then
merge(ucomp , vcomp)
T T Ú {e}
until T contains n-1 edges
return T
Prim’s Algorithm
function Prim(G= <N,A>: graph ; length : A R+
) : set of
edges
{initialisation}
T Ø
B {an arbitrary member of N}
While B ≠ N do
find e = {u , v} of minimum length such
u € B and v € N B
T T υ {e}
B B υ {v}
Return T
Complexity:
Outer loop: n-1 times
Inner loop: n times
O(n2
)
Minimum Connector Algorithms
Kruskal’salgorithm
1. Select the shortest edge in
a network
2. Select the next shortest
edge which does not create a
cycle
3. Repeat step 2 until all
vertices have been
connected
Prim’s algorithm
1. Select any vertex
2. Select the shortest edge
connected to that vertex
3. Select the shortest edge
connected to any vertex
already connected
4. Repeat step 3 until all
vertices have been
connected