1 ANALISIS WAKTU ALGORITMA QUICKSORT DAN MERGESORT Oleh : Yahfizham,ST.,M.Cs Abstrak Sistem komputer yang terdiri dari perangkat keras, perangkat lunak dan perangkat manusia yang saling berinteraksi dan bekerja sama sehingga mencapai suatu tujuan tertentu. Tujuan yang dimaksud adalah penyelesaian suatu pekerjaan atau persoalan dan mungkin saja menganalisis suatu peluang. Peran algoritma dalam perangkat lunak atau pemograman begitu penting, sehingga perlu memahami konsep dasar algoritma. Begitu banyak logika pemograman yang telah diciptakan, untuk kasus yang umum dan juga khusus. Algoritma Quick sort dan merge sort merupakan suatu strategi pengurutan (indexing) data, yang termasuk pada metode bagi dua dan selesaikan (divide-and-conquer). Algoritma dibutuhkan agar suatu permasalahan dapat diselesaikan dengan lebih efektif dengan sedikit sumber daya yang dilibatkan dan lebih efisien dengan durasi waktu yang dibutuhkan sedikit (cepat). Key word : algoritma, divide and conquer, quick sort dan merge sort. Pendahuluan Sejarah kemunculan algoritma sejalan dengan kemunculan teknologi komputer. Analisis algoritma menjadi topik bahasan utama dalam disiplin ilmu komputer. Seorang programmer komputer telah lama menggunakan algoritma untuk diterapkan pada sistem informasi manajemen yang menjalankan fungsi-fungsi akuntansi perusahaan yang disebut sistem pemrosesan transaksi (transaction information system) atau sistem pemrosesan data secara elektronik (Electronic Data Processing/EDP), yang kemudian berkembang menjadi sistem pendukung pengambilan keputusan (Decision Support System/DSS). Algoritma adalah kumpulan instruksi yang dibuat secara jelas terhadap penyelesaian suatu masalah. Kumpulan instruksi yang dimaksud dibangun dari suatu bahasa pemograman yang dimengerti oleh komputer. Kumpulan instruksi tersebut berupa tahapan-tahapan atau langkah- langkah untuk menyelesaikan suatu pekerjaan atau penyelesaian suatu masalah secara lebih efektif dengan sedikit sumber daya yang dilibatkan dan lebih efisien dengan durasi waktu yang dibutuhkan sedikit (cepat). Secara bebas, kita menganggap algoritma kurang lebih sama dengan suatu prosedur yang sering dikerjakan atau dilakukan sehari-hari.
7
Embed
ANALISIS WAKTU ALGORITMA QUICKSORT DAN …e-dokumen.kemenag.go.id/files/7iFskaSb1342421271.pdf · Analisis algoritma menjadi topik bahasan utama dalam disiplin ilmu komputer. ...
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
1
ANALISIS WAKTU ALGORITMA QUICKSORT DANMERGESORT
Oleh : Yahfizham,ST.,M.Cs
Abstrak
Sistem komputer yang terdiri dari perangkat keras,perangkat lunak dan perangkat manusia yang salingberinteraksi dan bekerja sama sehingga mencapai suatutujuan tertentu. Tujuan yang dimaksud adalahpenyelesaian suatu pekerjaan atau persoalan dan mungkinsaja menganalisis suatu peluang. Peran algoritma dalamperangkat lunak atau pemograman begitu penting,sehingga perlu memahami konsep dasar algoritma. Begitubanyak logika pemograman yang telah diciptakan, untukkasus yang umum dan juga khusus. Algoritma Quick sortdan merge sort merupakan suatu strategi pengurutan(indexing) data, yang termasuk pada metode bagi dua danselesaikan (divide-and-conquer). Algoritma dibutuhkanagar suatu permasalahan dapat diselesaikan dengan lebihefektif dengan sedikit sumber daya yang dilibatkan danlebih efisien dengan durasi waktu yang dibutuhkan sedikit(cepat).
Key word : algoritma, divide and conquer, quick sort danmerge sort.
Pendahuluan
Sejarah kemunculan algoritmasejalan dengan kemunculan teknologikomputer. Analisis algoritma menjaditopik bahasan utama dalam disiplinilmu komputer. Seorang programmerkomputer telah lama menggunakanalgoritma untuk diterapkan pada sisteminformasi manajemen yangmenjalankan fungsi-fungsi akuntansiperusahaan yang disebut sistempemrosesan transaksi (transactioninformation system) atau sistempemrosesan data secara elektronik(Electronic Data Processing/EDP),yang kemudian berkembang menjadisistem pendukung pengambilankeputusan (Decision SupportSystem/DSS).
Algoritma adalah kumpulaninstruksi yang dibuat secara jelasterhadap penyelesaian suatu masalah.Kumpulan instruksi yang dimaksuddibangun dari suatu bahasapemograman yang dimengerti olehkomputer. Kumpulan instruksi tersebutberupa tahapan-tahapan atau langkah-langkah untuk menyelesaikan suatupekerjaan atau penyelesaian suatumasalah secara lebih efektif dengansedikit sumber daya yang dilibatkandan lebih efisien dengan durasi waktuyang dibutuhkan sedikit (cepat). Secarabebas, kita menganggap algoritmakurang lebih sama dengan suatuprosedur yang sering dikerjakan ataudilakukan sehari-hari.
2
Contohnya adalah memasakberas, langkah-langkahnya adalahsebagai berikut: ambil tempat menanaknasi, masukkan beras secukupnyakedalam tempat tadi, bersihkan danmasukkan air sesuai takaran, masukkankedalam magic jar, colokkan ke listrikdan tekan tombolnya. Contoh lainketika kita hendak mengendarai sepedamotor, tahapan-tahapan yang kitalakukan adalah memeriksa posisikendaraan, melihat ban, memeriksakunci, menghidupkan mesin dan jalan.
French,C.S. (1984) menyatakansejumlah konsep yang mempunyairelevansi dengan masalah rancanganprogram yaitu kemampuan komputer,kesulitan dan ketepatan. Penerapan darikonsep tersebut biasanya digunakandalam rancangan algoritma. Dalammerancang sebuah algoritma, Fletcher(1991) memberikan beberapa cara ataumetode yaitu kumpulan perintah,ekspresi, tabel instruksi, programkomputer, kode semu dan flow chart,sedangkan Knuth (1973) menyarankanalgoritma fundamental yaitu input,proses dan output.
Dalam analisis algoritmaterdapat bagian-bagian yang dapatdianalisis, yaitu kecepatan waktu,kapasitas biaya dan kapasitas ruang.Ketiganya menggunakan notasi O (bigO). Divide and Conquer adalahmetode pemecahan masalah yangbekerja dengan membagi masalah(problem) menjadi beberapa sub-masalah (sub-problem) yang lebihkecil, kemudian menyelesaikanmasing-masing sub-masalah secaraindependen, dan akhirnyamenggabungkannya.
Algoritma quicksort danmergesort diaplikasikan dengan caramembagi tabel menjadi bagian kiri danbagian kanan, perulangan dilakukansecara rekursif (reccurent). Kemudianmenggabungkan hasil pengurutan
masing-masing bagian menjadi tabelsemula yang sudah terurut. Prosespembagiannya mudah karena hanyamemerlukan proses pembagian biasa.Akan tetapi proses penggabungannyamenjadi sulit karena unsur-unsur padatabel kecil belum tentu terurut sehinggapada setiap tahap penggabungan, harusterus dilakukan pembandingan danpengurutan kembali.
Algoritma pengurutan (sortingalgorithm) adalah algoritma yangmenyimpan suatu list pada suatu urutantertentu, biasanya membesar ataumengecil, biasanya digunakan untukmengurutkan angka ataupun huruf.Efisiensi pada pengurutan inidiperlukan untuk mengoptimalkankecepatan pemrosesan. Semakin efisiensuatu algoritma, maka pada saatdieksekusi dan dijalankan akanmenghabiskan waktu yang lebih cepatdan bisa menerima lebih banyakmasukan dari user.
Terdapat banyak algoritmapengurutan yang sudah dibuat sepertiselection sort, shell sort, heapsort,bubble sort, insertion sort, radix sort,quicksort, dan mergesort. Yangmenjadi domain pada kesempatan iniadalah mencoba untuk menganalisiskecepatan waktu dari algoritmaquicksort dan mergesort, dengan sekaliinputan data berupa bilangan bulat(integer) dalam suatu list atau arraysecara acak (random).
Konsep Dasar Algoritma Quicksort
Algoritma quicksort pertamakali dibuat oleh C.A.R.Hoare tahun1960. Pada masalah penyortingan(sorting) data bilangan bulat (integer)secara terindeks pada suatu list atauarray dari bilangan yang paling besarsampai ke bilangan yang paling kecilatau sebaliknya. Tidak hanya dapat
3
diterapkan pada pengindeksan bilangansaja, namun juga untuk pengindeksanhuruf (abjad) dari A ke Z atausebaliknya. Algoritma ini sangat baikditerapkan pada kasus pengindeksankumpulan kata (library sort utility) ataukumpulan bilangan atau kombinasinya.
Algoritma ini mengikuti langkah– langkah sebagai berikut :1. Divide
Memilah rangkaian data menjadidua sub-rangkaian A[p…q-1] danA[q+1…r] dimana setiap unsurA[p…q-1] adalah kurang dari atausama dengan A[q] dan setiap unsurpada A[q+1…r] adalah lebih besaratau sama dengan unsur pada A[q].A[q] disebut sebagai unsur pivot.Perhitungan pada unsur qmerupakan salah satu bagian dariprosedur pemisahan.
2. ConquerMengurutkan unsur pada sub-rangkaian secara rekursif Padaalgoritma quicksort, langkah”kombinasi” tidak di lakukankarena telah terjadi pengurutanunsur – unsur pada sub-array.Quicksort termasuk padapendekatan sulit membagi, mudahmenggabung (hard split/easy join).Cara pemilihan pivot:1) Pivot = unsur pertama/unsur
terakhir/unsur tengah tabel2) Pivot dipilih secara acak dari
salah satu unsur tabel.Pivot = unsur median tabel
Kompleksitas Waktu Quicksort
Kasus terbaik (best case) terjadibila pivot adalah unsur mediansedemikian sehingga kedua tabelberukuran relatif sama setiap kalipempartisian.
Didapatkan kompleksitas waktunyaadalah
Sehingga menjadi bentuk yang lebihsederhana
Kasus terburuk (worst case) terjadi bilapada setiap partisi pivot selalu terpilihunsur maksimum atau unsurminimumnya. Kasus ini terjadi jikatabel sudah terurut menaik/menurun
Didapatkan kompleksitas waktunyaadalah
Sehingga menjadi bentuk yang lebihsederhana
Kasus rata-rata (average case) terjadijika pivot dipilih secara acak dari unsurtabel, dan peluang setiap unsur dipilihmenjadi pivot adalah sama. Rata-ratajumlah tingkatan perbandingan diatassemua permutasi urutan masukan dapatdiperkirakan dengan teliti denganpemecahan hubungan perulangan
4
atauTavg (n) = O(n n)= O(n log n)
Implementasi Quicksort
Penerapan algoritma quicksortmenggunakan antar muka bahasapemograman berbasis visual yaituvisual basic 6.0 dengan kumpulanperintah seperti dibawah ini:
Public Sub Quicksort(list() AsInteger, ByVal min As Long, ByValmax As Long)Dim med_value As LongDim hi As LongDim lo As LongDim i As Long If min >= max ThenExit Subi = Int((max - min + 1) * Rnd +min) med_value = list(i)
list(i) = list(min)lo = minhi = maxDo
Do While list(hi) >= med_valuehi = hi - 1If hi <= lo Then Exit Do
LoopIf hi <= lo Then
list(lo) = med_valueExit Do
End Iflist(lo) = list(hi)lo = lo + 1
Do While list(lo) < med_valuelo = lo + 1If lo >= hi Then Exit Do
LoopIf lo >= hi Then
lo = hilist(hi) = med_valueExit Do
End Iflist(hi) = list(lo)
LoopQuicksort list(), min, lo - 1Quicksort list(), lo + 1, maxEnd Sub
Konsep Dasar AlgoritmaMergesort
Deskripsi dari algoritma inidirumuskan dalam 3 langkah berpoladivide-and-conquer. Berikut adalahpenjelasan langkah kerja dari mergesort.1. Divide
Memilah unsur – unsur darirangkaian data menjadi dua bagian.
2. ConquerSetiap bagian dengan memanggilprosedur mergesort secara rekursif
3. KombinasiMengkombinasikan dua bagiantersebut secara rekursif untukmendapatkan rangkaian databerurutan
Proses rekursi berhenti jikamencapai unsur dasar. Hal ini terjadibilamana bagian yang akan diurutkanmenyisakan tepat satu unsur. Sisapengurutan satu unsur tersebutmenandakan bahwa bagian tersebuttelah terurut sesuai rangkaian.Mergesort termasuk pada pendekatanmudah membagi, susah menggabung(easy split/ hard join).
Kompleksitas WaktuMergesort
Kasus terbaik (best case) terjadiapabila data sudah terurut, sehinggapada saat kombinasi tidak perlumengurutkan kembali.
5
Didapatkan kompleksitas waktunyaadalah
Sehingga menjadi bentuk yang lebihsederhana
Kasus terburuk (worst case)terjadi bila data terkondisi seperti padagambar berikut.
Didapatkan kompleksitas waktunyaadalah
Sehingga menjadi bentuk yang lebihsederhana
Kasus rata-rata (average case) terjadijika pivot dipilih secara acak darielemen tabel.Tavg (n) = O(n n)= O(n log n)
ImplementasiMergesort
Penerapan algoritma mergesortmenggunakan antar muka bahasapemograman berbasis visual yaituvisual basic 6.0 dengan kumpulanperintah seperti dibawah ini:
Public Sub Merge(list() As Integer,ByVal bawah As Long, ByValtengah As Long, ByVal atas AsLong)
Dim temp_array() As IntegerDim temp As IntegerDim vektorA As LongDim vektorB As LongDim vektorUtama As LongReDim temp_array(bawah To atas)
CopyMemorytemp_array(bawah), list(bawah),(atas - bawah + 1) *Len(list(bawah))
vektorA = bawahvektorB = tengah + 1vektorUtama = bawahDo While (vektorA <= tengah)
End IfEnd SubPublic Sub MergeSort(list() AsInteger, ByVal first_index As Long,ByVal last_index As Long)Dim tengah As Long
If (last_index > first_index) Thentengah = (first_index +
last_index) \ 2MergeSort list, first_index,
tengahMergeSort list, tengah + 1,
last_indexMerge list, first_index, tengah,
last_indexEnd If
6
End SubPembahasan
Walaupun tiap algoritmapengurutan menawarkan perbedaanmetode dan sudut pandangpenyelesaian masalah yang berbeda,namun kompleksitas waktu yangdibutuhkan tetap menjadi masalahutama yang harus menjadipertimbangan untuk menentukanalgoritma mana yang lebih baik dantepat untuk digunakan. Untukmengetahui kecepatan waktu tiapalgoritma, maka digunakan perangkatlunak penghitung kecepatan algoritmadalam bahasa pemograman visualbasic. Hal ini digunakan untukmendukung analisis kecepatan sortingdata.
Dengan mengatur perangkatlunak agar banyaknya jumlah n sesuaiyang diinput secara acak, sehinggakemunculan data setiap kali programdijalankan tidak sama dan tidak dapatdiprediksi dan interval data antara 100 -– 10000. Pengujian dilakukan disebuahlaptop dengan spesifikasi : platformWindows XP™ Profesional, processorAMD™ 2.2 GHz, dan 1GB DDR2RAM.
Gambar 1. Hasil Program
Gambar 2. Grafik Hasil Program
Dari gambar hasil programdiatas bisa kita lihat perbedaan waktuyang cukup jelas di antara algoritma-algoritma tersebut. Pengurutan datadengan metode quicksort lebih cepatjika dibandingkan dengan mergesort.Hal ini dibuktikan dengan keadaangrafik waktu perbandingan quicksortdan mergesort. Dimana grafik waktumergesort perubahannya lebih besarjika dibandingkan dengan quicksort.
Penutup
Pembuatan program komputertidak terlepas dari algoritma, apalagiprogram yang dibuat sangat kompleks.Program dapat dibuat denganmengabaikan algoritma, akan tetapiprogram tersebut memiliki akses yanglambat atau bahkan sangat lambat danmemakai memori yang banyak. Dalammenguji suatu algoritma, dibutuhkanbeberapa kriteria untuk mengukurefisiensi algoritma, kriterianya adalahmemeriksa kebenaran algoritmadengan cara matematis danmenyederhanakannya.
Dari paparan yang telahdikemukakan diatas, maka dapatdikatakan bahwa algoritma quicksortsesuai dengan namanya, “lebih cepat”jika dibandingkan dengan mergesort,untuk data bilangan bulat (integer) dariinterval 100 – 10000.