-
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.