Anda di halaman 1dari 18

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

1. 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 terorientasi 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 dihubungkan dengan jalur. Jalur merupakan urutan edge tertentu yang menghubungkan 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 terhadap network. Sebuah network terhubung yang hanya melibatkan sebagian dari
vertex disebut tree (pohon). sedangkan network terhubung yang mencakup semua vertex dalam jaringan tersebut tanpa loop disebut spanning tree (pohon
perentangan). Pada beberapa situasi, diinginkan spanning tree yang menghasilkan jumlah terkecil dari edge penghubung. Berdasarkan hal tersebut, maka
digunakan minimum spanning tree yang mengatasi hubungan paling efisien diantara semua vertex dalam network.

2. PEMBAHASAN
Berikut ini akan diberikan beberapa definisi yang berkaitan dengan
minimum spanning tree.

Definisi 2.1. Suatu graf G adalah kumpulan obyek-obyek yang terdiri dari kumpulan 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) = {v1 , v2 , v3 , v4 , v5 , v6 , v7 } dan himpunan edge E(G) = {v1 v4 , v1 v6 , v2 v3 , v2 v4 ,
v2 v7 , v3 v5 , v4 v5 , v4 v6 , v5 v7 , v6 v7 }.
Definisi 2.2. Andaikan G adalah graf. Graf H adalah subgraf dari G jika
V (H) V (G) dan E(H) E(G).[1]
Graf H memuat vertex V (H) = {v1 , v2 , v3 , v4 } dan edge E(H) = {v1 v4 , v2 v3 ,
v2 v4 }.
Definisi 2.3. Directed graf (Digraf ) D adalah graf yang memiliki arah pada setiap
edge.
Definisi 2.4. Path adalah barisan bergantian vertex dan edge dengan tidak mengulang vertex.[2]
Gambar 3 merupakan contoh dari digraf D dan contoh dari path yang termuat dalam Gambar 1 adalah v1 , v4 , v2 , v7 .

Gambar 2. Graf H

Gambar 3. Digraf D

Definisi 2.5. Graf disebut connected jika terdapat path yang menghubungkan
setiap pasang vertex yang berbeda dari suatu graf, sedangkan graf yang tidak connected disebut disconnected.[1]
Salah satu contoh dari graf connected dapat dilihat dalam Gambar 1, sedangkan contoh graf disconnected disajikan dalam Gambar 4.

Gambar 4. Graf disconnected

Definisi 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

Definisi 2.7. Spanning tree dari suatu graf G adalah subgraf G yang memuat
semua vertex dalam G dan merupakan tree.[4]
Definisi 2.8. Minimum spanning tree adalah spanning tree yang mempunyai jumlahan bobot terkecil dari setiap edge-nya.[4]
Syarat graf yang dapat dicari minimum spanning tree-nya yaitu

(1) Graf connected


(2) Edge memiliki bobot
(3) Graf tidak berarah
Menurut Johnsonbaugh [3], untuk membentuk suatu spanning tree T digunakan 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, dimana 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 dengan cara memilih edge yang minimum secara berturut-turut dalam graf connected berbobot dan tidak menghasilkan cycle ketika ditambahkan. Kemudian
berhenti setelah n1 edge dipilih. Langkah-langkah untuk menentukan minimum
spanning 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
/ S dan S {e}
adalah asiklik dan S S {e}

(3) [Menentukan apakah minimum spanning tree telah terbentuk]


jika |S| = 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 graf G 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 tambahkan edge (b, c) ke dalam graf T seperti dalam Gambar 8.

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

Gambar 11. Graf T pada iterasi 5

(f) Pilih w := f
Vertex f adjacent dengan vertex g dan p. Karena vertex g adalah 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 tambahkan edge (h, i) ke dalam graf T seperti dalam Gambar 14.

Gambar 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 tambahkan 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

Gambar 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. Tambahkan 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 adalah 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. Tambahkan 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 = 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 pada 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 terbesar 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


v3 v2

0.8

v1 v3

1.6

v3 v5

2.2

v6 v5

1.1

v3 v6

1.7

v1 v5

2.5

v5 v4

1.2

v2 v6

1.8

v3 v4

2.9

v1 v2

1.5

v1 v4

1.9

Selanjutnya membentuk graf T , dimana S adalah himpunan edge dari


T dengan S={} seperti pada Gambar 26.

Gambar 26. Inisialisasi graf T algoritma Kruskal

Setelah terbentuk graf T , pilih edge vi vj dengan bobot terkecil dan tidak
membentuk cycle di T . Kemudian menambahkan edge vi vj tersebut ke
dalam T , sampai dengan T memuat n 1 edge.
(a) Iterasi 1
Dari Gambar 26, diperoleh n=6 dan S={}. Pilih edge v3 v2 karena
memiliki bobot 0.8 dan tidak membentuk cycle di T . Kemudian
menambahkan edge v3 v2 tersebut ke dalam T seperti pada Gambar
27.
(b) Iterasi 2
Dari Gambar 27, diperoleh n=6 dan S={v3 v2 }. Pilih edge v5 v6 karena
memiliki bobot 1.1 dan tidak membentuk cycle di T . Kemudian
menambahkan v5 v6 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={v3 v2 , v5 v6 }. Pilih edge v4 v5


karena memiliki bobot 1.2 dan tidak membentuk cycle di T . Kemudian menambahkan v4 v5 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={v3 v2 , v5 v6 , v4 v5 }. Pilih edge


v1 v2 karena memiliki bobot 1.5 dan tidak membentuk cycle di T . Kemudian menambahkan v1 v2 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={v3 v2 , v5 v6 , v4 v5 , v1 v2 }. Pilih
edge v1 v3 karena memiliki bobot 1.6 tetapi akan membentuk cycle di
T sehingga edge v1 v3 tidak ditambahkan dalam T . Selanjutnya pilih
edge v3 v6 karena memiliki bobot 1.7 dan tidak membentuk cycle di
T . Kemudian menambahkan v3 v6 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={v3 v2 , v5 v6 , v4 v5 , v1 v2 , v3 v6 },
maka iterasi berhenti. Diperoleh minimum 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 Kruskal adalah
(a) [Menentukan himpunan S yang terdiri dari edge suatu minimum
spanning tree]
S
(b) [Menambah himpunan S]
misal e adalah edge dengan bobot minimum dimana e
/ S dan S{e}
adalah asiklik dan S S {e}
(c) [Menentukan apakah minimum spanning tree telah terbentuk]
jika |S| = 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, United States of America, 2004.