• Tidak ada hasil yang ditemukan

ANALISA PERBANDINGAN ANTARA ALGORITMA LS

N/A
N/A
Protected

Academic year: 2018

Membagikan "ANALISA PERBANDINGAN ANTARA ALGORITMA LS"

Copied!
9
0
0

Teks penuh

(1)

ANALISA PERBANDINGAN ANTARA ALGORITMA LSD RADIX SORT YANG MENGGUNAKAN QUEUE BIASA DAN YANG MENGGUNAKAN AMORTIZED QUEUE

Dennis Pratama Kamah ( 1306464562 ), [email protected]

Program Studi Ilmu Komputer, Fakultas Ilmu Komputer, Universitas Indonesia

Mei 2015

LATAR BELAKANG

Radix Sort merupakan salah satu metode non-comparison sorting yang sangat berguna dalam hal pengurutan data dalam dunia nyata, seperti data yang bertipe string, bilangan bulat ( integer ), dan

sebagainya. Secara intuitif, proses pengurutan data, misalkan pada bilangan bulat, dilakukan dari digit

least significant dari bilangan-bilangan tersebut, kemudian urutkan secara iteratif hingga mencapai digit most significant.1 Proses dilakukan dari satu digit ke digit yang lain dibandingkan satu sama lain. Proses pengurutan berdasarkan masing-masing digit dilakukan pada metode sorting lainnya, baik itu dengan memanfaatkan comparison based sorting atau non-comparison based sorting.

Pemilihan metode pengurutan yang ada pun dapat mempengaruhi kompleksitas waktu dan memori

algoritma radix sort secara keseluruhan.

Kompleksitas pada seluruh non-comparison based sorting adalah O(n). Apabila pengurutan pada masing-masing digit dilakukan dengan memanfaatkan comparison based sorting, seperti bubble sort, insertion sort, maupun selection sort yang memiliki kompleksitas waktu sekitar O (m2), maka secara otomatis kompleksitas waktunya adalah O(n + m2). Apabila pengurutan pada masing-masing digit dilakukan dengan memanfaatkan comparison based sorting yang menggunakan prinsip divide

and conquer seperti quick sort dan merge sort yang memiliki kompleksitas waktu sekitar O (m log m), maka secara otomatis kompleksitas waktunya adalah O(n + m log m). Dan apabila pengurutan

pada masing-masing digit dilakukan dengan memanfaatkan non-comparison based sorting seperti

counting sort,maka secara otomatis kompleksitas waktunya adalah O(n + m).

Cara lain selain memanfaatkan algoritma sorting biasa adalah dengan memanfaatkan struktur

data queue yang menggunakan array. Hal ini dapat membuat proses pengurutan data berdasarkan

digit tersebut dapat berjalan secara stabil (stable). Artinya pada data dengan nilai yang sama, posisi relatif dari masing-masing data tetap. 2 Selain dengan menggunakan queue array biasa, queue yang diamortized juga dapat dimanfaatkan dalam proses pengurutan. Amortized queue ini sendiri

memanfaatkan dua buah struktur data stack dalam hal operasi pop dan stack.

Oleh karena itu, di dalam paper ini akan dibahas beberapa perbedaan mendasar mengenai

kedua teknik pengurutan digit tersebut di dalam radix sort.

(2)

TUJUAN PENELITIAN

Penelitian di dalam paper ini dilakukan dengan dasar-dasar dan argumentasi-argumentasi yang jelas

dan valid serta bertujuan untuk :

 Membandingkan kompleksitas waktu antara Radix Sort dengan Queue biasa dan Radix Sort dengan Amortized Queue;

 Membandingkan kompleksitas memori antara Radix Sort dengan Queue biasa dan Radix Sort dengan Amortized Queue;

 Mengetahui pengaruh penggunaan dua buah stack pada Amortized Queue dibandingkan dengan penggunaan array pada Queue biasa dalam pengurutan data per digit di dalam Radix

Sort;

 Meninjau prinsip Amortized dalam penggunaan dua buah stack pada Amortized Queue.

TINJAUAN PUSTAKA

Pada bagian ini hanya akan dicantumkan tinjauan pustaka untuk sumber referensi berupa paper

(artikel) yang terdapat pada jurnal-jurnal internasional :

I. Bibliography Form

Canmei, Wei dan Yang Yahui. (2013) “On Radix and Straight Insertion Sort Programming Based on Linked List and Queue Technique”. Computer Science & Education (ICCSE), 2013 8th International Conference on. 06, 1445-1449.

Summary

Tehnik Linked List dan Tehnik Queue merupakan dua buah tehnik yang sangat berguna

dalam membantu merealisasikan berbagai macam algoritma yang ada hingga saat ini. 3

Algoritma pengurutan merupakan salah satu algoritma yang memanfaatkan dua teknik

tersebut. Paper ini membahas karakteristik dua tehnik tersebut dalam meningkatkan

efisiensi dari suatu perangkat lunak yang memanfaaatkan algoritma pengurutan tertentu.

Peer Opinion

Menurut saya, konsep mendasar yang saat manfaatkan sebagai bahan referensi paper yang

saya buat adalah mengenai tehnik queue, sedangkan saya tidak terlalu memeperhatikan

konsep mengenai tehnik linked list karena struktur data yang saya pergunakan pada radix

sort ini adalah queue berbasis array dan queue berbasis stack. Analisis yang terdapat di

dalamnya mencakup penggunaan queue pada radix sort serta perbandingannya apabila

digunakan pada tehnik pengurutan yang dilakukan secara linear. Hal ini dapat membantu

(3)

saya di dalam menganalisis penggunaan teknik queue pada radix sort berbasis queue pada

di dalam paper yang saya buat ini.

II. Bibliography Form

Nitesh, Manbir Singh, dan Rahul Yadav. (2014) “Research Paper on Stack and Queue”. International Journal of Innovative Research in Technology. 01, 584-586.

Summary

Paper ini membahas tentang konsep stack dan queue di dalam struktur data. Kedua jenis

struktur data tersebut merupakan struktur data-struktur data yang memanfaatkan list

terurut. Stack sendiri merupakan struktur data dengan ukuran terbatas, dimana elemen

data yang ditambahkan dan dikeluarkan hanya data yang terdapat pada posisi top saja. Operasi push menambahkan elemen ke top, operasi pop mengeluarkan elemen dari top. Queue memiliki mekanisme yang hampir sama dengan stack, namun operasi enqueue

(push) dilakukan ke posisi front, sedangkan operasi dequeue (pop) dilakukan pada posisi

back. 4

Peer Opinion

Menurut pandangan pribadi saya, konsep-konsep materi yang terdapat dalam paper ini,

membantu saya dalam mengembangkan struktur data queue maupun queue yang

menggunakan dua buah stack. Konsep yang ada didalamnya juga membantu saya di dalam

menganalisa komplesitas waktu dan memori dalam operasi yang dilakukan terhadap

queue dan stack, serta bagaimana pengaruhnya apabila dua buah struktur tersebut

dimanfaatkan sebagai metode pengurutan berdasarkan digit pada elemen data di dalam

radix sort. Penyampaian konsep pada paper ini cukup padat dan jelas, sehingga saya dapat

memahami secara lebih lanjut bagaimana mengimplementasikan stack dan queue secara

berkelanjutan.

III. Bibliography Form

Zhang, Yongcheng. (2008) “Radix Plus Length Based Insert Sort”. Computer and Information Science, 2008. ICIS 08. Seventh IEEE/ACIS International Conference on. 08, 61-66.

Summary

Banyak aplikasi perangkat lunak yang bergantung pada efisiensi dari algoritma

pengurutan untuk mengurutkan satu himpunan besar string keys di dalam memori. Sebagai

(4)

contoh, pengurutan records untuk basis data. Paper ini membahas algoritma radix sort yang telah dikembangkan dengan berbasis pada algoritma insert sort (R-LI), untuk

mengurutkan sekumpulan data besar berisi string keys. 5 Algoritma ini merupakan pengembangan algoritma R-S yang dirancang oleh M.DONALD Maclaren pada tahun

1966. Secara singkat, analisis performansinya di bahas secara mendetail di dalam paper

ini. 6

Peer Opinion

Menurut pandangan pribadi saya, konsep yang terdapat di dalam paper ini, membuktikan

bahwa konsep pada radix sort, yaitu fix-length, seperti integer key, dapat dimanfaatkan

untuk dasar pengurutan algoritma pengurutan lainnya, seperti insertion sort, quick sort,

merge sort, dan shell sort. Salah satu prinsip penting yang ada di dalam paper ini adalah

Three-Way Radix Quicksort, dimana mekanismenya seperti regular quicksort, dimana di dalamnya dilakukan partisi pada inputnya, memisahkannya berdasarkan besar datanya,

lebih kecil sama dengan, atau lebih besar.

RUANG LINGKUP PENELITIAN

Untuk membatasi hal-hal (variabel) yang berkenaan dengan penelitian pada paper ini, berikut saya

paparkan beberapa hal-hal yang menjadi titik berat penelitian pada paper ini :

 Proses pengurutan digit per digit dilakukan hanya dengan menggunakan struktur data queue, baik itu berbasis array maupun berbasis stack;

 Setiap data pada pengujian, bertipe integer (bilangan bulat);

 Setiap data sudah pasti memiliki jumlah digit yang sama, baik pada satuan, puluhan, ribuan, puluh ribuan, dan seterusnya.

PEMBAHASAN

Tentu saja untuk membahas topik atau materi utama di dalamnya, kita membutuhkan mekanisme dua

algoritma radix sort yang menggunakan queue berbasis array dan queue berbasis dua stack

( amortized queue ). Implementasi queue dengan menggunakan array, saya tambahkan dengan

method tambahan, yaitu dequeueSemua(),yang saya lampirkan dan referensikan dari materi pada

courses “[REG] Struktur Data & Algoritma (A, B, C, D, E, F, Ekstensi) - Materi - Genap 2013/2014” pada folder “Contoh Implementasi Stack dan Queue”, dimana source code-nya telah saya lampirkan

5Zhang, Yongcheng. (2008) “Radix Plus Length Based Insert Sort”. Computer and Information Science, 2008. ICIS 08.

Seventh IEEE/ACIS International Conference on. 08, hal.61

(5)

bersama dengan paper ini.

Sedangkan implementasi dari queue dengan menggunakan dua struktur data stack (implementasinya

terdapat di Java Library), saya mereferensi source code dari situs forum tanya jawab dalam hal pemrograman, stackoverflow, yang sudah terlampir bersama dengan file paper ini. Secara umum algoritma (cara berpikir) dari implementasi Amortized Queue dengan menggunakan stack adalah :

1. Buat dua buah stack, misal A dan B;

2. Proses enqueue / queue (memasukkan sebuah elemen ke dalam queue) adalah dengan

memasukkan mem-push elemen ke dalam stack B;

3. Dalam proses dequeue (mengeluarkan sebuah elemen dari dalam queue), ada dua

kemungkinan :

a. Jika stack B kosong, maka selama stack A tidak kosong, pop elemen dari stack A

kemudian push setiap elemen tersebut ke stack B, lalu kemudian pop sebuah elemen

dari stack B

b. Jika stack B tidak kosong, maka langsung pop sebuah elemen dari stack B

Sedangkan untuk algoritma Radix Sort itu sendiri saya merancangnya sendiri dengan mengacu pada

konsep radix sort yang terdapat di dalam paper karangan Canmei, Wei dan Yang Yahui. (2013) yang

berjudul “On Radix and Straight Insertion Sort Programming Based on Linked List and Queue Technique” serta pada paper karangan Zhang, Yongcheng. yang berjudul “Radix Plus Length Based Insert Sort”. Implementasi pada radix sort yang menggunakan queue berbasis array dan queue yang berbasis stack kurang lebih sama dan hanya berbeda pada penggunaan queue yang ada. Kira-kira

pseudocode (cara berpikir) dari radix sort tersebut, antara lain :

1. Lakukan iterasi sebanyak jumlah digit pada data yang diurutkan;

2. Selama iterasi, lakukan pengurutan data dengan berdasarkan pada digit ke berapa

dari masing-masing data;

3. Ketika dilakukan pemeriksaan, apabila suatu digit sama dengan beberapa angka-angka

yang dimaksud maka push suatu data yang bersangkutan ke dalam queue untuk digit

tertentu (queue untuk digit 0, queue untuk digit 1, queue untuk digit 2, queue

untuk digit 3, dan seterusnya) berdasarkan nominal digit yang sedang diperiksa 7;

4. Setiap hasil pengurutan dari masing-masing digit, dimasukkan ke dalam suatu

struktur data array list of array list. Isi dari array list tersebut adalah juga

array list yang merupakan hasil pengurutan data berdasarkan digit satu ke digit

yang lain. Data dari suatu array list digunakan untuk pengurutan digit berikutnya;

5. Ketika semua digit telah diperiksa selama iterasi, maka hasil akhir data yang

terurut berada di dalam elemen terakhir arraylist.

(6)

Atau secara umum, bentuk pseudocode dari radix sort yang terdapat di dalam buku karangan Cormen,

Thomas H. pada 2009 yang berjudul Introduction to Algorithms, yaitu :

RADIX-SORT(A,d)

For i = 1 to d

Use a stable sort to sort array A on digit i

Tak lupa juga bahwa, saya mereferensikan pseudocode dari implementasi operasi enqueue dan

dequeue pada queue yang menggunakan array, yaitu :

ENQUEUE(Q,x)

Q[Q.tail] = x

if Q.tail == Q.length

Q.tail = 1

else Q.tail = Q.tail + 1

DEQUEUE(Q,x)

X = Q[Q.head]

if Q.head == Q.length

Q.head = 1

else Q.head = Q.head + 1

Return x

Sumber : Nitesh, Manbir Singh, dan Rahul Yadav. (2014) “Research Paper on Stack and Queue”.

International Journal of Innovative Research in Technology. 01, hal 585.

Apabila melihat dari konsep amortized pada queue yang memanfaatkan dua buah stack, konsep ini

sendiri mengarah ke kompleksitas proses yang dilakukan secara bertahap dan sedikit demi sedikit,

tidak dilakukan secara keseluruhan, melainkan dilakukan secara parsial (mengangsur). Komputasi

yang dilakukan pada saat tersebut bukan berarti dilakukan terpisah-pisah secara eksplisit, melainkan

kompleksitasnya yang tidak bertambah secara signifikan. 8 Secara umum, konsep amortized dapat mengurangi kompleksitas waktu operasi selanjutnya yang ingin dilakukan dikarenakan telah terlebih

dahulu dilakukan secara parsial pada operasi sebelumnya. Hal ini jelas terlihat bahwa penggunaan

dua stack pada Amortized Queue.

Salah satu stack, dalam dunia nyata, diibaratkan sebagai kotak masuk sedangkan stack lainnya

sebagai kotak keluar. Selama kotak keluar belum penuh, maka data-data yang ada akan tetap

(7)

dimasukkan ke dalam kotak masuk. Hal ini sesuai dengan fungsi kotak masuk yang hanya menerima

data saja, tanpa memikirkan masalah pengeluaran data. Prinsip amortized terjadi ketika kotak keluar

penuh, dimana secara otomatis kotak keluar mem-pop keluar isi data teratasnya (top), lalu kemudian kotak masuk memasukkan data (push) ke dalam kotak keluar. Hal ini memperlihatkan kedua operasi

yang meskipun memiliki kompleksitas O(n) dan O(m), namun seolah-olah keduanya memiliki

kompleksitas O(n) saja dikarenakan pencegahan penuhnya data pada salah satu data. Hal ini berlaku

pada proses array doubling maupun stack doubling ketika data hampir penuh.

PENGUJIAN DAN HASIL

Spesisfikasi dari tools yang saya gunakan dalam pengujian algoritma radix sort berbasis queue dan algoritma berbasis radix sort berbasis dua stack, antara lain :

Sistem Operasi : Windows 8.1 Pro

Processor : Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz

Installed memory (RAM) : 8.00 GB (7,90 GB usable)

IDE Editor dan Kompiler : NetBeans IDE 8.0

Tools Bahasa : Java 8 Update 45

Pengujian akan dilakukan dengan beberapa kondisi yaitu dengan menggunakan jumlah data yang

berbeda-beda serta jumlah digit setiap data yang berbeda-beda. Untuk menghitung besar runtime pada masing-masing algoritma, saya meletakkan kode berikut pada awal dimulai dijalankan algoritma

radix sort (setelah proses penginputan data selesai) :

final float startTime = System.nanoTime();

Dan juga, saya meletakkan kode lainnya pada akhir proses algoritma radix sort (setelah proses

pencetakan hasil akhir pada arraylist terakhir) :

final float duration = System.nanoTime() - startTime;

System.out.println(duration / 1000000000);

Durasi akhir di atas dibagi dengan bilangan 1000000000 untuk mengkonversinya ke dalam bentuk

detik. Setiap perbedaan kondisi yang ada, dikombinasikan satu sama lain agar diperoleh hasil yang

lebih valid. Berikut adalah hasil runtime (dalam satuan detik atau second) terhadap pengujian algoritma radix sort dengan queue berbasis array terhadap data dengan kondisi tertentu :

Banyak Data /

Banyak Digit

6 12 18 25 32

10 0.006291456 0.006291456 0.009437184 0.006291456 0.007340032

20 0.008388608 0.009437184 0.007340032 0.013631488 0.01048576

(8)

40 0.012582912 0.013631488 0.016777216 0.016777216 0.023068672

50 0.014680064 Infinite Time Infinite Time Infinite Time Infinite Time

Dan berikut adalah hasil runtime (dalam satuan detik atau second)terhadap pengujian algoritma radix

sort dengan queue berbasis stack terhadap data dengan kondisi tertentu :

Banyak Data /

Banyak Digit

6 12 18 25 32

10 0.006291456 0.009437184 0.009437184 0.007340032 0.01048576

20 0.007340032 0.008388608 0.009437184 0.008388608 0.016777216

30 0.01048576 0.017825792 0.01048576 0.012582912 0.017825792

40 0.019922944 0.013631488 0.011534336 0.018874368 0.017825792

50 0.013631488 Infinite Time 0.022020096 Infinite Time Infinite Time

Apabila diperhatikan pada hasil pengujian pada kedua kotak di atas, terdapat persamaan bahwa ada

waktu pada saat program tidak dapat langsung mengeluarkan output yang diinginkan dikarenakan

jumlah data maupun jumlah digit yang terlalu besar. Hal ini memperlihatkan bahwa terjadi penuhnya

data yang terdapat di dalam queue itu sendiri, meskipun memang nantinya isi dari queue dari itu

sendiri akan di-dequeue keluar dari queue. Akan tetapi, dikarenakan intensitas penggunaan memori yang cukup tinggi, hal ini menyebabkan operasi-operasi yang dilakukan secara terus-menerus pada

memori menyebabkan suatu overflow pada memori. 9

KESIMPULAN

Berdasarkan atas hasil dari pengujian terhadap data dengan karakteristik yang berbeda-beda pada

kedua cara pendekatan algoritma radix sort berdasarkan cara pengurutan digit-digit nya, maka dapat

ditarik beberapa kesimpulan penting yang nantinya dapat membantu terwujudnya tujuan penelitian

dari pembuatan paper ini sendiri, sebagai berikut :

 Kompleksitas waktu antara radix sort yang menggunakan array dengan radix sort yang menggunakan Amortized array yang menggunakan dua buah stack, tidak terlalu jauh berbeda.

Keduanya sama-sama memiliki kesamaan dalam hal keterbatasan banyak data yang dapat

diurutkan berdasarkan jumlah digitnya;

9Canmei, Wei dan Yang Yahui. (2013) “On Radix and Straight Insertion Sort Programming Based on Linked List and

(9)

 Kompleksitas dari radix sort yang menggunakan dua buah stack jauh lebih tinggi ketimbang kompleksitas memori dari radix sort yang menggunakan array biasa dikarenakan

pengalokasian memori yang cukup banyak terlalu dalam hal perancangan struktur data array

untuk dua stack sekaligus, pada masing-masing digit. Dapat dikatakan bahwa kompleksitas

radix sort dengan dua stack dua kali lebih tinggi ketimbang radix sort dengan array biasa;  Prinsip amortized tidak terlalu berpengaruh secara signifikan pada pembuatan queue,

terutama dikarenakan tidak terlalu terlihat jelas pada running time program, meskipun memang tetap dibutuhkan dalam hal perancangan algoritma-algoritma yang lain;

 Penggunaan dua buah stack hanya dapat membuat praktis pembuatan dari queue itu sendiri, meskipun nantinya membutuhkan kompleksitas memori yang cukup besar.

DAFTAR PUSTAKA

Canmei, Wei dan Yang Yahui. (2013) “On Radix and Straight Insertion Sort Programming Based on Linked List and Queue Technique”. Computer Science & Education (ICCSE), 2013 8th International Conference on. 06, 1445-1449.

Cormen, Thomas H. (2009). Introduction to Algorithms. London: The MIT Press.

Nitesh, Manbir Singh, dan Rahul Yadav. (2014) “Research Paper on Stack and Queue”. International Journal of Innovative Research in Technology. 01, 584-586.

Zhang, Yongcheng. (2008) “Radix Plus Length Based Insert Sort”. Computer and Information

Science, 2008. ICIS 08. Seventh IEEE/ACIS International Conference on. 08, 61-66.

http://www.cs.cmu.edu/afs/cs/academic/class/15750-s01/www/notes/lect0123 (diakses pada 29 Mei

Referensi

Dokumen terkait

Skripsi, Jurusan Biologi, Fakultas Sains dan Teknologi, Universitas Islam Negeri (UIN) Maulana Malik Ibrahim Malang. Pembimbing II:

Perancangan futsal akademi dengan penerapan arsitektur kontemporer di kota Tangerang ini memiliki fungsi sebagai tempat pelatihan olahraga futsal yang memberikan pengajaran dan

Pada umumnya belt conveyor terdiri dari : kerangka (frame), dua buah pulley yaitu pulley penggerak (driving pulley) pada head end dan pulley pembalik ( take-up pulley) pada

 Peserta didik membuka link untuk mempelajari materi bidang miring yang telah dibagikan digrup WA kelas dan bagi yang tidak memiliki HP dapat melihat ditayangan yang

Berdasarkan kesimpulan, diajukan saran sebagai berikut: 1) Untuk meningkatkan kepuasan kerja guru SMA Parulian 2 Medan, perlu ditingkatkan komunikasi interpersonal

Adapun tujuan penelitian yang dilakukan dalam penyusunan ini adalah untuk menganalisis bahwa audit manajemen atas fungsi keuangan dapat dipergunakan dalam

KODE 1 2 5 6 URAIAN NILAI 7 4 NILAI NILAI MUTASI NILAI BERTAMBAH BERKURANG SALDO PER 30 JUNI 2019 SALDO PER 1 JANUARI 2019 SAT.. KUANTITAS KUANTITAS

Kenyataan ini barangkali cukup sebagai pertimbangan untuk menyatakan bahwa praktik kawin lari Sasak tersebut dari perspektif hukum Islam berpotensi tidak baik dan