36
Minimum Spanning Trees Text Read Weiss, §9.5 Prim’s Algorithm Weiss §9.5.1 Similar to Dijkstra’s Algorithm Kruskal’s Algorithm Weiss §9.5.2 Focuses on edges, rather than nodes

Prim Algorithm and kruskal algorithm

Embed Size (px)

Citation preview

Page 1: Prim Algorithm and kruskal algorithm

Minimum Spanning TreesText• Read Weiss, §9.5

Prim’s Algorithm • Weiss §9.5.1• Similar to Dijkstra’s Algorithm

Kruskal’s Algorithm• Weiss §9.5.2• Focuses on edges, rather than nodes

Page 2: Prim Algorithm and kruskal algorithm

Definition

• A Minimum Spanning Tree (MST) is a subgraph of an undirected graph such that the subgraph spans (includes) all nodes, is connected, is acyclic, and has minimum total edge weight

Page 3: Prim Algorithm and kruskal algorithm

Algorithm Characteristics

• Both Prim’s and Kruskal’s Algorithms work with undirected graphs

• Both work with weighted and unweighted graphs but are more interesting when edges are weighted

• Both are greedy algorithms that produce optimal solutions

Page 4: Prim Algorithm and kruskal algorithm

Prim’s Algorithm

• Similar to Dijkstra’s Algorithm except that dv records edge weights, not path lengths

Page 5: Prim Algorithm and kruskal algorithm

Walk-ThroughInitialize array

K dv pv

A F

B F

C F

D F

E F

F F

G F

H F

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

2

Page 6: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Start with any node, say DK dv pv

A

B

C

D T 0

E

F

G

H

2

Page 7: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Update distances of adjacent, unselected nodes

K dv pv

A

B

C 3 D

D T 0

E 25 D

F 18 D

G 2 D

H

2

Page 8: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Select node with minimum distance

K dv pv

A

B

C 3 D

D T 0

E 25 D

F 18 D

G T 2 D

H

2

Page 9: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Update distances of adjacent, unselected nodes

K dv pv

A

B

C 3 D

D T 0

E 7 G

F 18 D

G T 2 D

H 3 G

2

Page 10: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Select node with minimum distance

K dv pv

A

B

C T 3 D

D T 0

E 7 G

F 18 D

G T 2 D

H 3 G

2

Page 11: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Update distances of adjacent, unselected nodes

K dv pv

A

B 4 C

C T 3 D

D T 0

E 7 G

F 3 C

G T 2 D

H 3 G

2

Page 12: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Select node with minimum distance

K dv pv

A

B 4 C

C T 3 D

D T 0

E 7 G

F T 3 C

G T 2 D

H 3 G

2

Page 13: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Update distances of adjacent, unselected nodes

K dv pv

A 10 F

B 4 C

C T 3 D

D T 0

E 2 F

F T 3 C

G T 2 D

H 3 G

2

Page 14: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Select node with minimum distance

K dv pv

A 10 F

B 4 C

C T 3 D

D T 0

E T 2 F

F T 3 C

G T 2 D

H 3 G

2

Page 15: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Update distances of adjacent, unselected nodes

K dv pv

A 10 F

B 4 C

C T 3 D

D T 0

E T 2 F

F T 3 C

G T 2 D

H 3 G

2

Table entries unchanged

Page 16: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Select node with minimum distance

K dv pv

A 10 F

B 4 C

C T 3 D

D T 0

E T 2 F

F T 3 C

G T 2 D

H T 3 G

2

Page 17: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Update distances of adjacent, unselected nodes

K dv pv

A 4 H

B 4 C

C T 3 D

D T 0

E T 2 F

F T 3 C

G T 2 D

H T 3 G

2

Page 18: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Select node with minimum distance

K dv pv

A T 4 H

B 4 C

C T 3 D

D T 0

E T 2 F

F T 3 C

G T 2 D

H T 3 G

2

Page 19: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Update distances of adjacent, unselected nodes

K dv pv

A T 4 H

B 4 C

C T 3 D

D T 0

E T 2 F

F T 3 C

G T 2 D

H T 3 G

2

Table entries unchanged

Page 20: Prim Algorithm and kruskal algorithm

4

25

A

HB

F

E

D

C

G 7

2

10

18

34

3

78

9

3

10

Select node with minimum distance

K dv pv

A T 4 H

B T 4 C

C T 3 D

D T 0

E T 2 F

F T 3 C

G T 2 D

H T 3 G

2

Page 21: Prim Algorithm and kruskal algorithm

4

A

HB

F

E

D

C

G2

34

3

3

Cost of Minimum Spanning Tree = dv = 21

K dv pv

A T 4 H

B T 4 C

C T 3 D

D T 0

E T 2 F

F T 3 C

G T 2 D

H T 3 G

2

Done

Page 22: Prim Algorithm and kruskal algorithm

Kruskal’s Algorithm

• Work with edges, rather than nodes• Two steps:

– Sort edges by increasing edge weight– Select the first |V| – 1 edges that do not

generate a cycle

Page 23: Prim Algorithm and kruskal algorithm

Walk-ThroughConsider an undirected, weight graph

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10

Page 24: Prim Algorithm and kruskal algorithm

Sort the edges by increasing edge weightedge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 25: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 26: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 27: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Accepting edge (E,G) would create a cycle

Page 28: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 29: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 30: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 31: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 32: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 33: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 34: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 35: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G 3

2

4

6

34

3

48

4

3

10 edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Page 36: Prim Algorithm and kruskal algorithm

Select first |V|–1 edges which do not generate a cycle

edge dv

(D,E) 1

(D,G) 2

(E,G) 3

(C,D) 3

(G,H) 3

(C,F) 3

(B,C) 4

5

1

A

HB

F

E

D

C

G2

3

3

3

edge dv

(B,E) 4

(B,F) 4

(B,H) 4

(A,H) 5

(D,F) 6

(A,B) 8

(A,F) 10

Done

Total Cost = dv = 21

4

} not considered