My first Magazine pemrograman-kompetitif-dasar | Page 139
11.2 Minimum Spanning Tree
3
3
2
2
5
1
5
4
1
4
(a)
3
(b)
3
2
2
5
1
5
4
1
4
(c)
(d)
Gambar 11.10: Diberikan suatu graf seperti pada gambar (a). Gambar (b) merupakan salah satu
spanning tree dari (a), namun (c) dan (d) bukanlah spanning tree dari (a).
Perhatikan contoh pada Gambar 11.10. Kita diberikan sebuah graf seperti pada gambar
(a). Untuk membentuk spanning tree , kita akan memilih beberapa edge dari graf asli sedemikian
sehingga edge yang diambil membentuk tree yang menghubungkan semua node . Gambar (b)
merupakan contoh spanning tree yang didapat dengan mengambil edge [h1, 4i, h2, 4i, h3, 4i, h4, 5i].
Sementara itu, gambar (c) bukanlah merupakan spanning tree dari (a) karena subgraf yang
dihasilkan tidak membentuk tree . Gambar (d) juga bukanlah spanning tree dari (a) karena ada
salah satu node yang tidak terhubung, yaitu node 1.
3
6
1
1
2
5
2
5
4
4
(a)
3
3
2
6
1
1
2
5
2
5
4
4
(b)
3
3
2
6
1
1
2
5
2
3
5
4
4
2
(c)
Gambar 11.11: Diberikan suatu graf berbobot seperti pada gambar (a). Gambar (b) merupakan
contoh MST dari (a), namun (b) bukanlah MST dari (a).
Minimum Spanning Tree (MST) adalah spanning tree pada graf berbobot yang mana total
bobot dari seluruh edge pada spanning tree tersebut minimum. Perhatikan ilustrasi pada Gambar
11.11. Misalkan diberikan graf berbobot seperti pada gambar (a). Gambar (b) dan (c) merupakan
spanning tree dari (a), namun total bobot dari spanning tree (b) merupakan yang minimum dari
seluruh kemungkinan spanning tree . Maka (b) adalah MST dari (a).
Kita akan mempelajari 2 algoritma untuk mencari MST pada suatu graf berbobot, yaitu
algoritma Prim dan algoritma Kruskal. Kedua algoritma ini bekerja dengan memanfaatkan konsep
greedy .
11.2.1
Prim
Cara kerja Prim serupa dengan cara kerja Dijkstra. Mula-mula, kita asumsikan seluruh node
tidak terhubung satu sama lain. Setelah itu, kita akan memilih sembarang node sebagai node
pertama pada tree yang akan kita bentuk. Kemudian, kita akan melakukan ekspansi pada tree
129