Optimasi Algoritma Kruskal Menggunakan Bucket Sort

9
OPTIMASI ALGORITMA KRUSKAL DENGAN MENGGUNAKAN BUCKET SORT UNTUK PENGHITUNGAN BIAYA PEMASANGAN KABEL TELEVISI BERLANGGANAN Resto Ajie Suyanto 1 , Iwang Aryadinata 2 , Priyanka Gemet A. 3 , Eva Yuliani 4 1,2,3,4 Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember (ITS), Jln. Raya ITS, Surabaya 60111 Email : [email protected] 1 , [email protected] , [email protected] , [email protected] ABSTRAKS Mendengar televisi berlangganan pastilah sudah sangat familiar di telinga kita. Tapi terkadang menjadi permasalahan bagi pengusaha di bidang ini untuk menekan biaya pemasangan kabel-kabel ke setiap rumah. Karena itulah, perlu ada suatu metode yang dapat digunakan pengusaha untuk bisa menekan biaya pengeluaran untuk pemasangan kabel. Dalam kasus ini, digunakan algoritma kruskal, dengan asumsi tiap rumah adalah vertex dan kabel adalah edge. Kemudian, agar penggunaan algoritma kruskal ini menjadi lebih optimal, digunakan bucket sorting sehingga penghubungan antar vertex bisa lebih cepat daripada menggunakan algoritma kruskal biasa. Dengan menggunakan metode-metode yang telah disebutkan, pengusaha televisi berlangganan dapat lebih mengoptimalkan biaya pemasangan kabel dengan waktu yang lebih cepat dari sebelumnya. Kata Kunci : Biaya minimal, Algoritma Kruskal, Bucket Sort 1. PENDAHULUAN Dalam kehidupan sehari- hari sudah tidak asing di telinga kita bila mendengar tentang televisi berlangganan, baik yang mnggunakan satelit maupun dengan kabel. Dalam kenyataannya, televisi berlangganan menggunakan kabel lebih banyak diminati karena harga berlangganannya yang terbilang murah juga dapat memilih chanel apa saja yang ingin dilihat. Televisi kabel atau disebut cable television sendiri memiliki pengertian sebuah sistem penyiaran acara televisi melalui sinyal frekuensi radio yang kemudian ditransmisikan melalui kabel serat optik yang tetap atau kabel coaxial. Jadi tidak melalui udara dan harus ditangkap frekuensinya dengan menggunakan antena seperti televisi pada umumnya Namun dalam keseharian ditemukanlah sebuah permasalahan yang cukup berarti bagi para pengusaha televisi kabel, yaitu biaya yang harus dikeluarkan untuk setiap pemasangan kabel ke setiap rumah. Pemasangan kabel televisi berlangganan ke setiap rumah terkadang tidak efisien dan dapat menghabiskan dana yang besar, padahal ada beberapa cara yang bisa dilakukan untuk meminimalisir biaya untuk pemasangan kabel televisi berlangganan. Masalah ini memunculkan minat untuk menemukan sebuah metode penghitungan yang dapat menghasilkan sebuah hasil penghitungan biaya seminimal mungkin

Transcript of Optimasi Algoritma Kruskal Menggunakan Bucket Sort

Page 1: Optimasi Algoritma Kruskal Menggunakan Bucket Sort

OPTIMASI ALGORITMA KRUSKAL DENGAN MENGGUNAKAN BUCKET SORT UNTUK PENGHITUNGAN BIAYA PEMASANGAN KABEL TELEVISI

BERLANGGANANResto Ajie Suyanto1, Iwang Aryadinata2, Priyanka Gemet A.3, Eva Yuliani4

1,2,3,4 Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember (ITS),Jln. Raya ITS, Surabaya 60111

Email : [email protected] 1 , [email protected], [email protected], [email protected]

ABSTRAKSMendengar televisi berlangganan pastilah sudah sangat familiar di telinga kita. Tapi terkadang menjadi permasalahan bagi pengusaha di bidang ini untuk menekan biaya pemasangan kabel-kabel ke setiap rumah. Karena itulah, perlu ada suatu metode yang dapat digunakan pengusaha untuk bisa menekan biaya pengeluaran untuk pemasangan kabel. Dalam kasus ini, digunakan algoritma kruskal, dengan asumsi tiap rumah adalah vertex dan kabel adalah edge. Kemudian, agar penggunaan algoritma kruskal ini menjadi lebih optimal, digunakan bucket sorting sehingga penghubungan antar vertex bisa lebih cepat daripada menggunakan algoritma kruskal biasa. Dengan menggunakan metode-metode yang telah disebutkan, pengusaha televisi berlangganan dapat lebih mengoptimalkan biaya pemasangan kabel dengan waktu yang lebih cepat dari sebelumnya.

Kata Kunci : Biaya minimal, Algoritma Kruskal, Bucket Sort

1. PENDAHULUANDalam kehidupan sehari-hari sudah

tidak asing di telinga kita bila mendengar tentang televisi berlangganan, baik yang mnggunakan satelit maupun dengan kabel. Dalam kenyataannya, televisi berlangganan menggunakan kabel lebih banyak diminati karena harga berlangganannya yang terbilang murah juga dapat memilih chanel apa saja yang ingin dilihat. Televisi kabel atau disebut cable television sendiri memiliki pengertian sebuah sistem penyiaran acara televisi melalui sinyal frekuensi radio yang kemudian ditransmisikan melalui kabel serat optik yang tetap atau kabel coaxial. Jadi tidak melalui udara dan harus ditangkap frekuensinya dengan menggunakan antena seperti televisi pada umumnya

Namun dalam keseharian ditemukanlah sebuah permasalahan yang cukup berarti bagi para pengusaha televisi kabel, yaitu biaya yang harus dikeluarkan untuk setiap pemasangan kabel ke setiap rumah. Pemasangan kabel televisi berlangganan ke setiap rumah terkadang tidak efisien dan dapat menghabiskan dana yang besar, padahal ada beberapa cara yang bisa dilakukan untuk meminimalisir biaya untuk pemasangan kabel televisi berlangganan.

Masalah ini memunculkan minat untuk menemukan sebuah metode penghitungan yang dapat menghasilkan sebuah hasil penghitungan biaya seminimal mungkin untuk pemasangan

kabel televisi berlangganan yang kedepannya dapat diharapkan membantu para pengusaha televisi berlangganan yang menggunakan kabel dalam menekan biaya pemasangan kabel televisi berlangganan ke setiap konsumen. Dalam paper ini kana membahas mengenai optimalisasi penghitungan biaya pemasangan kabel televisi berlangganan dengan menggunakan algoritma kruskal sebagai metode dasar penghitungan, kita dapat mengasumsikan setiap rumah sebagai tree, setiap kabel yang akan dipasang sebagai edge, dan value setiap edge sebagai biaya pemasangan, sehingga kita dapat menentukan jalur dengan biaya pemasangan terendah, selain itu ditambah dengan metode bucket sort, kita dapat lebih cepat melakukan perhitungan sehingga waktu dan biaya dapat menjadi lebih efisien..

2. ALGORITMA KRUSKALAlgoritma Kruskal merupakan salah satu

algoritma dalam teori graph yang mencari minimum spanning tree untuk menghubungkan setiap tree dalam forest. Kita dapat mengasumsikan E sebagai jumlah edges dalam graph dan V adalah jumlah vertices-nya. Algoritma Kruskal dapat dilihat saat dijalankan pada rentang waktu E log E atau E log V, dengan penggunaaan prinsip data struktur data yang sederhana. Hal ini terjadi karena :

- E merupakan V2 dan log V2=2 log V adalah O (log V)

- Bila kita mengabaikan vertices yang terisolasi, dimana masing-masing memiliki komponen

Page 2: Optimasi Algoritma Kruskal Menggunakan Bucket Sort

sendiri-sendiri dalam minimum spanning forest, V ≤ E+1, sehingga log V adalah O (log E)

Kita dapat mencapai tahap ini dengan cara : pertama, urutkan semua edge berdasarkan weight-nya dengan menggunakan perbandingan dalam rentang waktu O(E log E), setelah itu barulah kita bisa masuk ke tahap menghilangkan edge dengan weight terkecil dari forest untuk menjalankan proses dengan waktu konstan. Kemudian menggunakan struktur data disjoint untuk mencari vertices dengan komponennya masing-masing. Lalu perlu dilakukan operasi O(E) untuk menemukan operasi yang memiliki kemungkinan memiliki keterikatan dengan sisi-sisi yang lain. Meskipun struktur data disjoint seperti disjoint-set forest dengan union berdasarkan ranking dapat menunjukkan operasi O(E) dalam rentang waktu O(E log V), total waktunya adalah O(E log E)=O(E log V)

Pseudocode Algoritma Kruskal yaitu :

function Kruskal(G = <N, A>: graph; length: A → R+): set of edges * Define an elementary cluster C(v) ← {v} * Initialize a priority queue Q to contain all edges in G, using the weights as keys. * Define a forest T ← Ø //T will ultimately contain the edges of the MST * // n is total number of vertices * while T has fewer than n-1 edges do * // edge u,v is the minimum weighted route from u to v * (u,v) ← Q.removeMin() * // prevent cycles in T. add u,v only if T does not already contain a path between u and v. * // the vertices has been added to the tree.* Let C(v) be the cluster containing v, and let C(u) be the cluster containing u.* if C(v) ≠ C(u) then* Add edge (v,u) to T.

* Merge C(v) and C(u) into one cluster, that is, union C(v) and C(u).* return tree T

Contoh Penggunaan Algoritma Kruskal :

Gambar 1. Original Graph dengan edge dan masing-masing weigth nya.

Gambar 2. AD dan CE merupakn edge dengan weight terkecil, untuk menentukan yang mana yang akan digunakan berdasarkan kewenangan sendiri. Dalam kasus ini digunakan AD.

Gambar 3. Karena CE merupakan edge dengan weight terkecil setelah AD digunakan, maka kita gunakan CE.

Page 3: Optimasi Algoritma Kruskal Menggunakan Bucket Sort

Rata-Rata

170,5812 ms

Rata-Rata

58,6985 ms

Gambar 4. Edge DF merupakan edge dengan weight terkecil selanjutnya yang kita gunakan.

Gambar 5. Proses yang sama juga dilakukan sama memilih AB untuk digunakan selanjutnya. Kemudian edge BD kita hilangkan dari daftart penggunaan edge untuk menghindari terjadinya cycle (ABD).

Gambar 6. Proses yang dilakukan sama seperti sebelumnya. BE digunakan karena merupakan edge dengan weight terkecil dan DE, EF, dan BC dihilangkan dari daftar penggunaan edge untuk menghindari cycle.

Gambar 7. EG dipilih karena merupakan edge dengan weight terkecil yang ada. Sehingga terbentuklah minimun spanning tree dari forest ini.

Pembuktian untuk kebenaran algoritma kruskanl ini dapat dibagi menjadi dua, yaitu melalui spanning tree dan minimality weight. Untuk spanning tree kita lihat dari sisi tidak terbentuknya sebuah cycle dan tidak terputusnya hubungan masing-masing edge. Untuk minimality weight, dengan mangasumsikan proposisi dalam suatu forest bernilai benar, kita gunakan pinsip induksi sehingga proposisi dari sebuah forest itu benar ketika forest merupakan minimum spanning tree, dan itu hanya mungkin terjadi jika forest itu sudah berada dalam minimum spanning tree.

Pada permasalahan Kruskal's Algorithm for Query Tree Optimization, penggunaan algoritma kruskal merupakan metode yang dapat digunakan untuk

mengoptimasi query tree. (Kruskal's Algorithm for Query Tree Optimization. Guttoski, P.B.;   Sunye, M.S.;   Silva, F.;   Univ. Fed. do Parana, Curitiba.2007)

Contoh permasalahan untuk Query Optimatization yaitu :

a) Results Postgresql unchanged (ms): (\ timing) average=> 58,6985 ms

b) Results of Postgresql with the Kruskal algorithm (ms): (\ timing)

170,690168,214182,832166,172174,466167,143167,287172,891170,452165,665

520,59013,5338,4105,1625,5434,9999,8714,9845,0108,883

ba

Page 4: Optimasi Algoritma Kruskal Menggunakan Bucket Sort

Pada permasalahan diatas, dapat dilihat bahwa waktu yang dibutuhkan oleh Algoritma Kruskal pada query pertama lebih lama dibandingkan dengan perhitungan biasa. Namun pada query selanjutnya waktu yang dibutuhkan dengan penggunaan algoritma Kruskal lebih sedikit daripada perhitungan biasa. Sehingga rata-rata waktu yang dibutuhkan oleh algoritma Kruskal lebih sedikit. (Kruskal's Algorithm for Query TreeOptimization.Guttoski,P.B.;  Sunye,S.;  Silva, F.; Univ.Fed.doParana, Curitiba.2007)

Efisiensi waktu antara perhitungan biasa dengan menggunakan algoritma Kruskal yaitu :58,6985 ms / 170,5812 ms * 100% = 34.41%(Kruskal's Algorithm for Query Tree Optimization.Guttoski,P.B.;   Sunye, .S.;   Silva, F.;   Univ. Fed. do Parana, Curitiba.2007)

3. BUCKET SORTBucket sort, atau bisa disebut bin sort,

merupakan sebuah algoritma pengurutan yang berkerja dengan membagi setiap array ke dalam beberapa bucket (keranjang). Setiap bucket mengurutkan sendiri-sendiri array yang ada di dalamnya dengan algoritma sorting yang lain atau secara rekursif menggunakan algoritma bucket sort. Cara kerja algoritma bucket sort dapat dijelaskan sebagai berikut :- Tentukan array yang ingin diurutkan.- Tentukan jumlah bucket dan rentang masing-

masing bucket.- Masukkan array-array tersebut ke dalam

bucket yang telah ditentukan.- Di dalam masing-masing bucket, array

tersebut di urutkan.- Setelah itu keluarkan hasil urutan dari dalam

bucket dan kembalikan ke array awal.

Gambar 8. Array yang ditentukan disebar ke masing-masing bucket.

Gambar 9. Array yang sudah diurutkan didalam bucket dikembalikan ke array awal.

(wikipedia.org)

4. OPTIMASI KRUSKAL DENGAN BUCKET SORT.

Pada algoritma kruskal, penentuan edge yang akan digunakan untuk pencarian minimum spanning tree merupakan edge dengan weight terkecil dari keseluruhan weight dari masing-masing edge dalam forest. Untuk mempercepat pencarian edge dengan weight terkecil dibutuhkan sebuah algoritma pengurutan. Jika menggunakan algoritma pengurutan biasa atau bubble sort, waktu yang digunakan untuk pencarian edge dengan weight terkecil dirasa masih belum efisien. Dengan menggunakan algoritma bucket sort sebagai metode pencarian edge dengan weight terkecil, dapat meminimalisir waktu pencarian sehingga lebih cepat dan efisien.

Untuk penerapannya dalam penghitungan biaya pemasangan kabel televisi berlangganan, kita terapkan hal yang sama seperti pada kasus setiap tree yang ada didalam forest. Kita umpamakan rumah-rumah yang akan di hubungkan sebagai tree. Kemudian kabel yang menghubungkan satu rumah ke rumah yang lain sebagai edge dengan biaya pemasangan kabel sebagai weight dari edge tersebut.

Gambar 10. Ilustrasi pemasangan kabel televisi berlangganan ke rumah-rumah.

Pembahasannya adalah :

Pada pembahasan ini kita akan membagi rumah-rumah menjadi edge, kabel sebagai vertex dan masing-masing edge memiliki weight yang merupakan panjang kabel.

Page 5: Optimasi Algoritma Kruskal Menggunakan Bucket Sort

Gambar 11. Original Graph dengan edge dan masing-masing weigth nya.

Gambar 12. AB dan AC merupakan edge dengan weight terkecil, Dalam kasus ini kita menggunakan keduanya dan menghapus AD karena merupakan edge dengan weight terbesar.

Gambar 13. Kita menggunakan AB dan AC yang akan digunakan untuk proses selanjutnya. Kemudian edge BC kita hilangkan dari daftar penggunaan edge untuk menghindari cyclic(ABC)

.Gambar 14. Kita harus memilih mana weight terkecil antara BE dan CF. Dalam kasus ini kita menggunakan BE karena merupakan weigt terkecil dan menghapus CF dari daftar penggunaan edge.

Gambar 15. Edge CG dihapus dari daftar penggunaan edge untuk menghindari cyclic.

Hasil Akhir dari penggunaan Graph Kruskal untuk proses minimalisi kabel televisi yaitu :

Sehingga panjang kabel yang digunakan setelah diminimalisasi menggunakan Algoritma Kruskal yaitu : 10 + 10 + 35 + 15 + 25 + 35 + 30 = 110.Sehingga persentase keuntungan yang kita dapatkan dengan meminimalisasi panjang kabel televisi dengan sebelum diminimalisir yaitu perbandingan dari panjang minimum spanning tree dengan total panjang kabel yang dibutuhkan : 160/420 * 100% = 38.095 %Sehingga kita dapat meminimalisir biaya sebesar 38.095% dari biaya awal. Besar kecilnya persentase keuntungan tergantung dari setiap permasalahan edge.

5. UJI COBA DAN PEMBAHASANi. Contoh Inputan Data

Pada kasus ini, yang menjadi inputan adalah jumlah rumah yang akan dipasangi kabel dan jumlah kabel yang akan dipasangkan ke rumah-rumah. Kemudian untuk biaya pemasangan masing-masing kabel juga akan menjadi inputan. .

Contoh Inputan:Jumlah Rumah : 12Jumlah Kabel : 20Biaya per kabel :

Edge BiayaAJ 25AB 14

A

B C D

E F G H

1010 6045 35

50 5550 153530 25

A

B C D

E F G H

10 10 60

45 3550 55 50 15

3530 25

A

B C D

E F G H

10 10 6045 35

50 55 50 153530 25

A

B C D

E F G H

10 10 6045 35

50 55 50 153530 25

A

B C D

E F G H

10 10 6045 35

50 55 50 153530 25

Page 6: Optimasi Algoritma Kruskal Menggunakan Bucket Sort

CL 6BL 5IL 5EI 21EH 32BF 8DF 12FK 9GK 16CJ 3AL 10CH 27HI 6EF 8EG 17AD 7DK 7BD 9

ii. Tampilan AwalUntuk tampilan awal pada program,

jumlah rumah yang telah diinputkan digambarkan dengan node-node berwarna merah dan jumlah kabel yang akan dipasang di rumah-rumah akan digambarkan dengan garis berwarna hitam dengan angka yang menunjukkan biaya pemasangan masing-masing kabel, seperti gambar dibawah ini :

Gambar 16. Ilustrasi tampilan awal dari program untuk mencari minimum spanning tree.

iii. Tampilan HasilDari data yang telah diiputkan

sebelumnya, data-data tersebut akan diurutkan secara ascending dengan menggunakan algoritma bucket sort. Kemudian setelah didapatkan hasil dari algoritma bucket sort, digunakan algoritma kruskal untuk melakukan pencarian minimum spanning tree untuk mengetahui biaya terendah pemasangan kabel. Dari gambar berikut dijelaskan

bahwa garis biru menandakan jalur yang dilewati, sedangkan garis merah menandakan jalur yang tidak dilewati.

Gambar 17. Ilustrasi tampilan akhir program yang menunjukkan jarak terdekat dan biaya terendah untuk pemasangan kabel.

iv. Hasil Running dari ProgramHasil dari program ini adalah untuk

membandingkan antara penggunaan algoritma kruskal biasa dengan algoritma kruskal yang di perkuat dengan menggunakan algoritma bucket sort. Berikut skenario dari proses running program :

Algoritma Kruskal

Gambar 18. Tampilan awal hasil running algoritma kruskal.

Gambar 19. Tampilan akhir dari hasil running program algoritma kruskal.

Page 7: Optimasi Algoritma Kruskal Menggunakan Bucket Sort

Algoritma Kruskal dengan modifikasi bucket sort.

Gambar 20. Tampilan awal hasil running program algoritma kruskal dengan modifikasi bucket sort.

Gambar 21. Tampilan akhir hasil running program algoritma kruskal dengan modifikasi bucket sort.

v. Hasil Akurasi dari ProgramDengan test case 5 kali percobaan dengan jumlah vertex 100 masing-masil kruskal biasa dan kruskal dengan bucket sort (kruskal bucket sort menggunakan 4 bucket) maka didapatkan hasil running time sebagai berikut :

No Kruskal Biasa Kruskal Modifikasi1 0,196S 0,054s2 0,191s 0,049s3 0,18s 0,052s4 0,173s 0,039s5 0,174s 0,044sRata-rata

0,3356 s 0,0476 s

Dari hasil rata-rata yang didapatkan, maka dapat disimpulkan :- Efisiensi running time dari kruskal dengan

menggunakan bucket sort dan kruskal biasa :0,0476 / 0,3356 * 100% = 14,18 %

6. KESIMPULAN DAN SARANi. Kesimpulan

Hasil dari program ini dapat membantu para pengusaha televisi berlangganan untuk bisa mengefisienkan biaya unutk pemasangan kabel televisi. Menggunakan algoritma kruskal yang diperkuat dengan algoritma bucket sort, pengusaha televisi berlangganan tidak perlu waktu lama untuk mencari dan mengimplementasikan hasil dari program ini.

ii. SaranProgram ini masih memiliki beberapa ketidak sempurnaan, yakni dalam bidang antarmuka yang dirasa pengembang masih belum memanjakan para penggunanya. Di waktu yanga akan datang, pengembang akan merevisi dan memperbaiki apa-apa saja yang kurang dari program ini.

7. DAFTAR PUSTAKA- Wikipedia(2011). Kruskal Algorithm.

From : http://en.wikipedia.org/wiki/Kruskal%27s_algorithm, 8 Juny 2011

- Wikipedia(2011). Kruskal. From : http://en.wikipedia.org/wiki/Kruskal, 8 Juny 2011.

- Wikipedia(2011). Bucket Sort. From : http://en.wikipedia.org/wiki/Bucket_sort, 9 Juny 2011.

- Wikipedia(2011). Televisi Kabel. From :http://id.wikipedia.org/wiki/Televisi_kabel, 5 Juny 2011.

- Telkom Indonesia. From : http://www.telkom.co.id/indonusa/produk-layanan/tv-kabel/, 5 Juny 2011.

- G. Paul (2010). An efficient implementation of the robust tabu search heuristic for sparse quadratic assignment problem.

- Guttoski, P.B.;   Sunye, M.S.;   Silva, F.;   Univ. Fed. do Parana, Curitiba(2007).Kruskal's Algorithm for Query Tree Optimization.