minimum spanning trees algorithm · algoritma minimum spanning trees algoritma kruskal and...

45
1 Minimum Spanning Trees algorithm

Upload: lediep

Post on 22-Mar-2019

301 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

1

Minimum Spanning Trees algorithm

Page 2: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

2

Algoritma Minimum Spanning Trees

algoritma Kruskal and algoritma Prim.

Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai tujuan menemukan minimum spanning •algorithm Kruskal menggunakan edge, dan •algorithm Prim menggunakan vertex yang terhubung

Page 3: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

3

Perbedaan antara algoritma prim dan kruskal

Perbedaan prinsip antara algoritma prim dan kruskal adalah,

jika pada algoritma prim sisi yang dimasukkan ke

dalam T harus bersisian dengan sebuah simpul di T, maka pada algoritma kruskal sisi yang dipilih tidak perlu bersisian dengan sebuah simpul di T. asalkan penambahan sisi tersebut tidak membentuk cycle.

Page 4: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

4

Pada algoritma kruskal, sisi (edge) dari Graph diurut terlebih dahulu berdasarkan bobotnya dari kecil ke besar.

Sisi yang dimasukkan ke dalam himpunan T adalah sisi

graph G yang sedemikian sehingga T adalah Tree (pohon). Sisi dari Graph G ditambahkan ke T jika ia tidak membentuk cycle.

1. T masih kosong 2. pilih sisi (i,j) dengan bobot minimum 3. pilih sisi (i,j) dengan bobot minimum berikutnya yang

tidak membentuk cycle di T, tambahkan (i,j) ke T 4. Ulangi langkah 3 sebanyak (n-2) kali. 5. Total langkah (n-1) kali

Kruskal's Algorithm:

Page 5: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

5

Kruskal's Algorithm:

a

e

c b

d f

10

15 13

20

12 5

11 21

16

Langkah Sisi bobot

0

1 e-c 5

2 a-b 10

3 d-e 11

4 c-f 12

5 b-e 13

Page 6: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

6

a

e

c b

d f

10

15 13

20

12 5

11 21

16

a

e

c b

d f

10

15 13

20

12 5

11 21

16

a

e

c b

d f

10

15 13

20

12 5

11 21

16

a

e

c b

d f

10

15 13

20

12 5

11 21

16

a

e

c b

d f

10

15 13

20

12 5

11 21

16

Kruskal's Algorithm:

Page 7: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

7

Contoh algoritma Kruskal

Page 8: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

8

Contoh algoritma Kruskal

Page 9: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

9

Contoh algoritma Kruskal

Langkah Sisi bobot

0

1 N1,N2 1

2 N7,N8 1

3 N2,N3 2

4 N1,N6 3

5 N3,N4 4

6 N2,N7 5

7 N4,N5 7

Page 10: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

10

Contoh algoritma Kruskal

Langkah 1

Langkah 2

Langkah 3

Page 11: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

11

Contoh algoritma Kruskal

Langkah 4

Langkah 5

Langkah 6

Langkah Sisi bobot

0

1 1,4 1

2 6,7 1

3 3,4 2

4 1,2 2

5 4,7 4

6 5,7 6

Page 12: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

12

Page 13: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4

2

2

6

1

7 11

8

The execution of Kruskal's algorithm (Moderate part)

•The edges are considered by the algorithm in sorted

order by weight.

•The edge under consideration at each step is shown

with a red weight number.

Page 14: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4 2

2

6

1

7 11

8

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4 2

2

6

1

7 11

8

Page 15: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4 2

2

6

1

7 11

8

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4 2

2

6

1

7 11

8

Page 16: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4 2

2

6

1

7 11

8

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4 2

2

6

1

7 11

8

Page 17: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4 2

2

6

1

7 11

8

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4 2

2

6

1

7 11

8

Page 18: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4 2

2

6

1

7 11

8

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4 2

2

6

1

7 11

8

Page 19: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

19

The Mathematics of Networks

What is the minimum spanning tree (MST) of the network shown in (b)?

Page 20: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

20

Pada algoritma prim, dimulai pada vertex yang mempunyai sisi (edge) dengan bobot terkecil. Sisi yang dimasukkan ke dalam himpunan T adalah sisi graph G yang bersisian dengan sebuah simpul di T, sedemikian sehingga T adalah Tree (pohon). Sisi dari Graph G ditambahkan ke T jika ia tidak membentuk cycle.

(NOTE: dua atau lebih edge kemungkinan mempunyai bobot yang sama, sehingga

terdapat pilihan vertice, dalam hal ini dapat diambil salah satunya.)

Algorithma Prim

Page 21: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

21

Algorithma Prim

1. Ambil sisi (edge) dari graph yg berbobot minimum, masukkan ke dalam T

2. Pilih sisi (edge) (i,j) yg berbobot minimum dan bersisisan dengan simpul di T, tetapi (i,j) tidak membentuk cycle di T. tambahkan (i,j) ke dalam T

3. Ulangi prosedur no 2 sebanyak (n-2) kali

Page 22: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

22

Algorithma Prim

PROCEDURE Prim (G: weighted connected undirected graph with n vertices) BEGIN T := a minimum-weight edge FOR i := 1 to n-2 DO BEGIN e := a minimum-weight edge one of whose vertices is in T, and one is not in T T := T with e added END RETURN T END

Page 23: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

23

Algorithma Prim

a

e

c b

d f

10

15 13

20

12 5

11 21

16

Langkah Sisi bobot

0

1 e-c 5

2 d-e 11

3 c-f 12

4 b-e 13

5 a-b 10

Page 24: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

24

Algorithm Prim

a

e

c b

d f

10

15 13

20

12 5

11 21

16

a

e

c b

d f

10

15 13

20

12 5

11 21

16

a

e

c b

d f

10

15 13

20

12 5

11 21

16

a

e

c b

d f

10

15 13

20

12 5

11 21

16

a

e

c b

d f

10

15 13

20

12 5

11 21

16

Page 25: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

25

LANGKAH SISI BOBOT

1 (H,G) 1

2 (G,F) 2

3 (F,C) 4

4 (C,I) 2

5 (C,D) 7

6 (C,B) 8

7 (B,A) 4

8 (D,E) 9

E

D

G

C B

H

A

F

I

4

8

8

11

7

2

6

1 2

7

9

14

10

4

Algorithm Prim

Page 26: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

26

GH 1

GH F1 2

G

C

H F1 2

4

G

C

H F

I

2

1 2

4

Algorithm Prim

Langkah 2 Langkah 3

Langkah 1 Langkah 3

Page 27: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

27

Algorithm Prim

E

D

G

CB

H

A

F

I

4

8

2

1 2

7

9

4

D

G

C

H F

I

2

1 2

7

4

D

G

CB

H F

I

8

2

1 2

7

4

D

G

CB

H

A

F

I

4

8

2

1 2

7

4

Langkah 4

Langkah 5

Langkah 6

Langkah 7

Page 28: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

28

Algorithm Prim

Page 29: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

Prim's algorithm(basic part)

MST_PRIM(G,w,r) 1. A={} 2. S:={r} (r is an arbitrary node in V)

3. Q=V-{r};

4. while Q is not empty do {

5 take an edge (u, v) such that (1) u S and v Q (v S ) and

(u, v) is the shortest edge satisfying (1)

6 add (u, v) to A, add v to S and delete v from Q

}

Page 30: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

Grow the minimum spanning tree from the root vertex r.

Q is a priority queue, holding all vertices that are not in the tree now.

key[v] is the minimum weight of any edge connecting v to a vertex in the tree.

parent[v] names the parent of v in the tree. When the algorithm terminates, Q is empty;

the minimum spanning tree A for G is thus A={(v,parent[v]):v∈V-{r}}.

Running time: O(|E|+|V|lg |V|). (Analysis is not required)(Fibonacci heap: decreas-key in O(1) time)

Page 31: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4

2

2

6

1

7 11

8

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4

2

2

6

1

7 11

8

The execution of Prim's algorithm(moderate part)

the root

vertex

Page 32: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4

2

2

6

1

7 11

8

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4

2

2

6

1

7 11

8

Page 33: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4

2

2

6

1

7 11

8

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4

2

2

6

1

7 11

8

Page 34: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4

2

2

6

1

7 11

8

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4

2

2

6

1

7 11

8

Page 35: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

a

b

h

c d

e

f g

i

4

8 7

9

10

14 4

2

2

6

1

7 11

8

Bottleneck spanning tree: A spanning tree of G whose

largest edge weight is minimum over all spanning trees of G.

The value of the bottleneck spanning tree is the weight of the

maximum-weight edge in T.

Theorem: A minimum spanning tree is also a bottleneck

spanning tree. (Challenge problem)

Page 36: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

36

soal

Cari minimum spanning tree dengan menggunakan algoritma prim dan kruskal !

6

5 2

4

1 3

4

9

8

11

5

2

6

1

7

Page 37: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

37

Barůvka‘s Algorithm

Page 38: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

Baruvka's Algorithm

Barůvka‘s Algorithm

1. For all vertices search the edge with the smallest weight

of this vertex and mark these edges

2. Search connected vertices (clusters) and replace them by

a “new“ vertex (cluster)

3. Remove the cycles and, if two vertices are connected by

more than one edge, delete all edges except the “cheapest“

iC

Page 39: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

Baruvka's Algorithm

C

F E

A B

D

5

6 4

3

4

2

1 2

3

2

Page 40: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

Baruvka's Algorithm

C

F E

A B

D

5

6 4

3

4

2

1 2

3

2

Page 41: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

Baruvka's Algorithm

C

F E

A B

D

5

6 4

3

4

2

1 2

3

2 iC

Page 42: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

Baruvka's Algorithm

C

F E

A B

D

5

6 4

3

4

2

1 2

3

2

Page 43: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

Baruvka's Algorithm

C

F E

A B

D

3

2

1 2

2

Page 44: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

Baruvka's Algorithm

C

F E

A B

D

3

2

1 2

2

minimum- spanning tree

Page 45: Minimum Spanning Trees algorithm · Algoritma Minimum Spanning Trees algoritma Kruskal and algoritma Prim. Kedua algoritma ini berbeda dalam metodologinya, tetapi keduanya mempunyai

45

soal

2

3 4 1

6

5 15

20

24

11

13

18

16

12

17

22

Tentukan minimum spanning tree dengan menggunakan algoritma kruskal, baruvka dan prim

7

12

11

15