MAKALAH RISET OPERASI DETERMINISTIK
PENENTUAN MINIMUM SPANNING TREE
MENGGUNAKAN ALGORITMA KRUSKAL
Anggota Kelompok 5
Nama NIM
1. Hartono M0110032
2. Marisa Ramdhayanti M0110054
3. Rachmat Okta A. M0113038
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SEBELAS MARET
SURAKARTA
2015
i
11. PENDAHULUAN
Sebuah network terdiri dari sekelompok vertex yang dihubungkan dengan
edge. Suatu edge dapat dialiri arus atau diberikan bobot dalam jumlah tertentu.
Notasi untuk menggambarkan sebuah network G adalah G = (N;A), dimana N
adalah himpunan vertex dan A adalah himpunan edge. Sebagai contoh, dalam
jaringan transportasi, kota mewakili vertex dan jalan raya mewakili edge, dengan
lalu lintas mewakili arus edge.
Arus dalam sebuah edge pada umumnya dibatasi oleh kapasitasnya yang
dapat terbatas atau tidak terbatas. Sebuah edge dikatakan terarah atau terori-
entasi jika edge tersebut memungkinkan arus positif dalam satu arah dan arus
nol dalam arah yang berlawanan. Sehingga network yang terarah adalah jaringan
dengan semua edge terarah.
Network terhubung adalah sebuah jaringan dimana setiap dua vertex di-
hubungkan dengan jalur. Jalur merupakan urutan edge tertentu yang meng-
hubungkan dua vertex tanpa bergantung pada orientasi edge tersebut secara
individual. Jalur akan membentuk sebuah loop atau siklus jika jalur tersebut
menghubungkan suatu vertex dengan dirinya sendiri. Sebuah loop yang terarah
adalah sebuah loop dimana semua edge memiliki arah atau orientasi yang sama.
Tree merupakan salah satu konsep dalam graf yang dapat diterapkan ter-
hadap network. Sebuah network terhubung yang hanya melibatkan sebagian dari
vertex disebut tree (pohon). sedangkan network terhubung yang mencakup se-
mua vertex dalam jaringan tersebut tanpa loop disebut spanning tree (pohon
perentangan). Pada beberapa situasi, diinginkan spanning tree yang mengha-
silkan jumlah terkecil dari edge penghubung. Berdasarkan hal tersebut, maka
digunakan minimum spanning tree yang mengatasi hubungan paling esien dian-
tara semua vertex dalam network.
2. PEMBAHASAN
Berikut ini akan diberikan beberapa denisi yang berkaitan dengan
minimum spanning tree.
2Denisi 2.1. Suatu graf G adalah kumpulan obyek-obyek yang terdiri dari kum-
pulan vertex yang berpasangan antara satu vertex dengan vertex lainnya yang
dihubungkan dengan sebuah edge. Himpunan vertex dan himpunan edge dalam
graf disimbolkan dengan V (G) dan E(G).[1]
Gambar 1. Graf G
Graf G pada Gambar 1 merupakan graf dengan himpunan vertex-vertex
V (G) = fv1; v2; v3; v4; v5; v6; v7g dan himpunan edge E(G) = fv1v4; v1v6; v2v3; v2v4;v2v7; v3v5; v4v5; v4v6; v5v7; v6v7g.
Denisi 2.2. Andaikan G adalah graf. Graf H adalah subgraf dari G jika
V (H) V (G) dan E(H) E(G).[1]
GrafH memuat vertex V (H) = fv1; v2; v3; v4g dan edge E(H) = fv1v4; v2v3;v2v4g.
Denisi 2.3. Directed graf (Digraf) D adalah graf yang memiliki arah pada setiap
edge.
Denisi 2.4. Path adalah barisan bergantian vertex dan edge dengan tidak meng-
ulang vertex.[2]
Gambar 3 merupakan contoh dari digraf D dan contoh dari path yang ter-
muat dalam Gambar 1 adalah v1; v4; v2; v7.
Gambar 2. Graf H
3Gambar 3. Digraf D
Denisi 2.5. Graf disebut connected jika terdapat path yang menghubungkan
setiap pasang vertex yang berbeda dari suatu graf, sedangkan graf yang tidak con-
nected disebut disconnected.[1]
Salah satu contoh dari graf connected dapat dilihat dalam Gambar 1, se-
dangkan contoh graf disconnected disajikan dalam Gambar 4.
Gambar 4. Graf disconnected
Denisi 2.6. Tree adalah graf connected tak berarah yang tidak memuat cycle.
Gambar 5 adalah salah satu contoh dari suatu tree.
Gambar 5. Tree T
Denisi 2.7. Spanning tree dari suatu graf G adalah subgraf G yang memuat
semua vertex dalam G dan merupakan tree.[4]
Denisi 2.8. Minimum spanning tree adalah spanning tree yang mempunyai jum-
lahan bobot terkecil dari setiap edge-nya.[4]
Syarat graf yang dapat dicari minimum spanning tree-nya yaitu
4(1) Graf connected
(2) Edge memiliki bobot
(3) Graf tidak berarah
Menurut Johnsonbaugh [3], untuk membentuk suatu spanning tree T digu-
nakan algoritma Depth-First Search (DFS). Adapun algoritma Depth-First Search
(DFS) adalah sebagai berikut.
Input : graf G connected dengan vertex-vertex diurutkan v1; v2; : : : ; vn.
Output : spanning tree T .
(1) [Inisialisasi] Misalkan w := v1 dan T adalah graf yang memuat vertex v1
dan sebut vertex v1 sebagai akar.
(2) [Penambahan edge] Pilih edge (w; vk), dengan nilai k yang minimum, di-
mana penambahan edge (w; vk) pada T tidak menghasilkan sebuah cycle.
Jika tidak ada edge yang memenuhi, lanjut ke langkah 3. Jika ada edge
yang memenuhi maka tambahkan edge (w; vk) pada T . Kemudian pilih
w := vk dan ulangi langkah 2.
(3) [Apakah sudah selesai?] Jika w := v1 maka STOP. (T adalah Spanning
Tree).
(4) [Backtrack ] Misal vertex x adalah parent dari vertex w pada T . Pilih
w := x dan kembali ke langkah 2.
Algoritma Kruskal digunakan untuk mencari minimum spanning tree de-
ngan cara memilih edge yang minimum secara berturut-turut dalam graf con-
nected berbobot dan tidak menghasilkan cycle ketika ditambahkan. Kemudian
berhenti setelah n1 edge dipilih. Langkah-langkah untuk menentukanminimumspanning tree dalam graf connected berbobot menurut Chartrand dan Oellermann
adalah
(1) [Menentukan himpunan S yang terdiri dari edge suatu minimum spanning
tree]
S ;(2) [Menambah himpunan S]
misal e adalah edge dengan bobot minimum dimana e =2 S dan S [ fegadalah asiklik dan S S [ feg
5(3) [Menentukan apakah minimum spanning tree telah terbentuk]
jika jSj = n 1, maka output S, jika tidak, kembali ke langkah 2.Contoh Soal:
(1) Diberikan graf G pada Gambar 6, tentukan spanning tree menggunakan
algoritma Depth-First Search (DFS)!
Gambar 6. Graf G
Urutan vertex-vertex dalam grafG adalah a; b; c; d; e; f; g; h; i; j; k; l;m; n; o; p; q,
dan r. Langkah-langkah mencari spanning tree menggunakan algoritma
Depth-First Search (DFS) adalah sebagai berikut.
(a) Misalkan w := a
maka a ditetapkan sebagai akar. Tambahkan edge (w; b) yaitu (a; b)
pada graf T seperti dalam Gambar 7.
Gambar 7. Graf T pada iterasi awal
(b) Pilih w := b
Vertex b adjacent dengan vertex c dan k. Karena vertex c adalah
vertex yang lebih awal dalam urutan vertex dalam graf G maka tam-
bahkan edge (b; c) ke dalam graf T seperti dalam Gambar 8.
6Gambar 8. Graf T pada iterasi 2
(c) Pilih w := c
Vertex c adjacent dengan vertex d dan l. Karena vertex d adalah
vertex yang lebih awal dalam urutan vertex dalam graf G maka tam-
bahkan edge (c; d) ke dalam graf T seperti dalam Gambar 9.
Gambar 9. Graf T pada iterasi 3
(d) Pilih w := d
Vertex d adjacent dengan vertex e dan n. Karena vertex e adalah
vertex yang lebih awal dalam urutan vertex dalam graf G maka tam-
bahkan edge (d; e) ke dalam graf T seperti dalam Gambar 10.
Gambar 10. Graf T pada iterasi 4
(e) Pilih w := e
Vertex e adjacent dengan vertex f maka tambahkan edge (e; f) ke
dalam graf T seperti dalam Gambar 11.
7Gambar 11. Graf T pada iterasi 5
(f) Pilih w := f
Vertex f adjacent dengan vertex g dan p. Karena vertex g ada-
lah vertex yang lebih awal dalam urutan vertex dalam graf G maka
tambahkan edge (f; g) ke dalam graf T seperti dalam Gambar 12.
Gambar 12. Graf T pada iterasi 6
(g) Pilih w := g
Vertex g adjacent dengan vertex h maka tambahkan edge (g; h) ke
dalam graf T seperti dalam Gambar 13.
(h) Pilih w := h
Vertex h adjacent dengan vertex i dan q. Karena vertex i adalah
vertex yang lebih awal dalam urutan vertex dalam graf G maka tam-
bahkan edge (h; i) ke dalam graf T seperti dalam Gambar 14.
8Gambar 13. Graf T pada iterasi 7
Gambar 14. Graf T pada iterasi 8
(i) Pilih w := i
Vertex i adjacent dengan vertex j maka tambahkan edge (i; j) ke
dalam graf T seperti dalam Gambar 15.
(j) Pilih w := j
Vertex j adjacent dengan vertex k dan r. Karena vertex k adalah
vertex yang lebih awal dalam urutan vertex dalam graf G maka tam-
bahkan edge (j; k) ke dalam graf T seperti dalam Gambar 16.
(k) Pilih w := k
Vertex k adjacent dengan vertex b dan l. Dipilih vertex l, karena jika
9Gambar 15. Graf T pada iterasi 9
Gambar 16. Graf T pada iterasi 10
dipilih vertex b maka pada T akan menghasilkan cycle. Tambahkan
edge (k; l) ke dalam graf T seperti dalam Gambar 17.
(l) Pilih w := l
Vertex l adjacent dengan vertex c dan m. Dipilih vertex m, karena
jika dipilih vertex c maka pada T akan menghasilkan cycle. Tam-
bahkan edge (l;m) ke dalam graf T seperti dalam Gambar 18.
(m) Pilih w := m
Vertex m adjacent dengan vertex n dan r. Karena vertex n ada-
lah vertex yang lebih awal dalam urutan vertex dalam graf G maka
tambahkan edge (m;n) ke dalam graf T seperti dalam Gambar 19.
10
Gambar 17. Graf T pada iterasi 11
Gambar 18. Graf T pada iterasi 12
Gambar 19. Graf T pada iterasi 13
11
(n) Pilih w := n
Vertex n adjacent dengan vertex m dan o. Dipilih vertex o, karena
jika dipilih vertex d maka pada T akan menghasilkan cycle. Tam-
bahkan edge (n; o) ke dalam graf T seperti dalam Gambar 20.
Gambar 20. Graf T pada iterasi 14
(o) Pilih w := o
Vertex o adjacent dengan vertex o maka tambahkan edge (o; p) ke
dalam graf T seperti dalam Gambar 21.
Gambar 21. Graf T pada iterasi 15
(p) Pilih w := p
Vertex p adjacent dengan vertex f dan q. Dipilih vertex q, karena jika
12
dipilih vertex f maka pada T akan menghasilkan cycle. Tambahkan
edge (p; q) ke dalam graf T seperti dalam Gambar 22.
Gambar 22. Graf T pada iterasi 16
(q) Pilih w := q
Vertex q adjacent dengan vertex p dan r. Dipilih vertex r, karena jika
dipilih vertex h maka pada T akan menghasilkan cycle. Tambahkan
edge (q; r) ke dalam graf T seperti dalam Gambar 23.
Gambar 23. Graf T pada iterasi 17
(r) Pilih w := r
Karena sudah tidak ada edge yang bisa ditambahkan dan w 6= a,maka dilakukan backtrack hingga vertex a. Kemudian pilih w := a.
13
(s) Pilih w := a
Karena sudah tidak ada edge yang bisa ditambahkan dan w:= a
maka STOP, sehingga diperoleh spanning tree T yang ditunjukkan
pada Gambar 24.
Gambar 24. Spanning tree dari graf G
(2) Sebuah pipa akan dibangun untuk menghubungkan enam kota. Biaya
(dalam ratusan juta dolar) untuk membangun setiap pipa tergantung pa-
da jarak yang ditampilkan dalam graf connected berbobot pada Gambar
25.
Gambar 25. Graf connected berbobot G
Tentukan sistem jaringan pipa untuk menghubungkan semua kota dengan
total biaya yang minimum!
Penyelesaian menggunakan algoritma Kruskal:
Langkah awal, mengurutkan edge dari bobot terkecil sampai dengan ter-
besar seperti dalam Tabel 1.
14
Tabel 1. Urutan bobot edge dari terkecil ke terbesar pada graf connected berbobot G
Edge Bobot Edge Bobot Edge Bobot
v3v2 0.8 v1v3 1.6 v3v5 2.2
v6v5 1.1 v3v6 1.7 v1v5 2.5
v5v4 1.2 v2v6 1.8 v3v4 2.9
v1v2 1.5 v1v4 1.9
Selanjutnya membentuk graf T , dimana S adalah himpunan edge dari
T dengan S=fg seperti pada Gambar 26.
Gambar 26. Inisialisasi graf T algoritma Kruskal
Setelah terbentuk graf T , pilih edge vivj dengan bobot terkecil dan tidak
membentuk cycle di T . Kemudian menambahkan edge vivj tersebut ke
dalam T , sampai dengan T memuat n 1 edge.(a) Iterasi 1
Dari Gambar 26, diperoleh n=6 dan S=fg. Pilih edge v3v2 karenamemiliki bobot 0.8 dan tidak membentuk cycle di T . Kemudian
menambahkan edge v3v2 tersebut ke dalam T seperti pada Gambar
27.
(b) Iterasi 2
Dari Gambar 27, diperoleh n=6 dan S=fv3v2g. Pilih edge v5v6 karenamemiliki bobot 1.1 dan tidak membentuk cycle di T . Kemudian
menambahkan v5v6 tersebut ke dalam T seperti pada Gambar 28.
(c) Iterasi 3
15
Gambar 27. Graf T pada iterasi 1 algoritma Kruskal
Gambar 28. Graf T pada iterasi 2 algoritma Kruskal
Dari Gambar 28, diperoleh n=6 dan S=fv3v2; v5v6g. Pilih edge v4v5karena memiliki bobot 1.2 dan tidak membentuk cycle di T . Kemu-
dian menambahkan v4v5 tersebut ke dalam T seperti pada Gambar
29.
Gambar 29. Graf T pada iterasi 3 algoritma Kruskal
(d) Iterasi 4
16
Dari Gambar 29, diperoleh n=6 dan S=fv3v2; v5v6; v4v5g. Pilih edgev1v2 karena memiliki bobot 1.5 dan tidak membentuk cycle di T . Ke-
mudian menambahkan v1v2 tersebut ke dalam T seperti pada Gambar
30.
Gambar 30. Graf T pada iterasi 4 algoritma Kruskal
(e) Iterasi 5
Dari Gambar 30, diperoleh n=6 dan S=fv3v2; v5v6; v4v5; v1v2g. Pilihedge v1v3 karena memiliki bobot 1.6 tetapi akan membentuk cycle di
T sehingga edge v1v3 tidak ditambahkan dalam T . Selanjutnya pilih
edge v3v6 karena memiliki bobot 1.7 dan tidak membentuk cycle di
T . Kemudian menambahkan v3v6 tersebut ke dalam T seperti pada
Gambar 31.
Gambar 31. Graf T pada iterasi 5 algoritma Kruskal
(f) Iterasi 6
Dari Gambar 31, diperoleh n=6 dan S=fv3v2; v5v6; v4v5; v1v2; v3v6g,maka iterasi berhenti. Diperolehminimum spanning tree seperti pada
Gambar 32 dengan bobot minimum 6.3.
17
Gambar 32. Minimum spanning tree dari graf connected berbobot G
3. Kesimpulan
Berdasarkan pembahasan diperoleh kesimpulan sebagai berikut.
(1) Minimum spanning tree adalah spanning tree yang mempunyai jumlahan
bobot terkecil dari setiap edge-nya.
(2) Cara untuk menentukan minimum spanning tree dengan algoritma Krus-
kal adalah
(a) [Menentukan himpunan S yang terdiri dari edge suatu minimum
spanning tree]
S ;(b) [Menambah himpunan S]
misal e adalah edge dengan bobotminimum dimana e =2 S dan S[fegadalah asiklik dan S S [ feg
(c) [Menentukan apakah minimum spanning tree telah terbentuk]
jika jSj = n 1, maka output S, jika tidak, kembali ke langkah 2.
DAFTAR PUSTAKA
1. Chartrand, G., Introductory of Graph Theory, Dover Publications Inc., New York, 1977.
2. Chartrand, G. and O. R. Oellermann, Applied and Algorithmic Graph Theory, McGraw-Hill,
United States of America, 1976.
3. Johnsonbaugh, R., Discrete Mathematics, Pearson Education Inc., London, 2005.
4. Susanna, S., Discrete Mathematics with Applications, 3th Edition, Thomson Learning, Uni-
ted States of America, 2004.
Top Related