Kompleksitas Algoritma Quick Sort

dokumen-dokumen yang mirip
PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Kompleksitas Algoritma

TELAAH WAKTU EKSEKUSI PROGRAM TERHADAP KOMPLEKSITAS WAKTU ALGORITMA BRUTE FORCE DAN DIVIDE AND CONQUER DALAM PENYELESAIAN OPERASI LIST

Kemangkusan Algoritma Pada Beberapa Variasi Quick Sort

BAB 2 LANDASAN TEORI

Kompleksitas Algoritma

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

Algoritma Divide and Conquer (Bagian 2)

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Kompleksitas Algoritma

Analisis Algoritma Bubble Sort

Matematika Diskrit Kompleksitas Algoritma. Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

Kompleksitas Algoritma untuk Penyelesaian Persoalan Penukaran Koin dengan Algoritma Greedy

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

Algoritma Divide and Conquer. (Bagian 2)

Kompleksitas Algoritma (1)

Algoritma Heap Sort. Sekolah Teknik Elektro & Informatika Departemen Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

Decrease and Conquer

Kompleksitas Algoritma

Algoritma dan Kompleksitas Algoritma

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

Analisis Kecepatan Sorting Dengan Notasi Big O

Algoritma Divide and Conquer (Bagian 1)

Perbandingan Algoritma Pengurutan Merge Sort, Quick Sort dan Heap Sort Dilihat dari Kompleksitasnya

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

PENGGUNAAN ALGORITMA DIVIDE AND CONQUER UNTUK OPTIMASI KONVERSI BILANGAN DESIMAL KE BINER

ANALISIS ALGORITMA PEMBANGUN POHON EKSPRESI DARI NOTASI PREFIKS DAN POSTFIKS

STRATEGI DIVIDE AND CONQUER

Kompleksitas Algoritma

Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes.

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 07

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

Penerapan Relasi Rekursif dan Matriks dalam Partisi Bilangan Bulat

Penerapan Rekursif dan Analisa Kompleksitas Algoritma Pada Brute Force Login

Penerapan Pohon Dalam Heap Sort

Analisis Kompleksitas Waktu Untuk Beberapa Algoritma Pengurutan

MAKALAH ALGORITMA DIVIDE AND CONQUER

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

Kompleksitas Algoritma Euclidean dan Stein(FPB Biner)

Penerapan Algoritma Greedy untuk Memecahkan Masalah Pohon Merentang Minimum

BAB II TINJAUAN PUSTAKA

Pendahuluan. Ukuran input (input s size)

Penerapan Kompleksitas Algoritma untuk Mengetahui Keefektifan Algoritma Baca File dengan File Dummy

Studi Algoritma Optimasi dalam Graf Berbobot

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Algoritma Puzzle Pencarian Kata

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

Sieve of Eratosthenes, Algoritma Bilangan Prima

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

PENGGUNAAN ALGORITMA BRANCH AND BOUND UNTUK MENYELESAIKAN PERSOALAN PENCARIAN JALAN (PATH-FINDING)

METODE DEVIDE AND CONQUER (DANDC)

Kompleksitas Algoritma Dalam Algoritma Pengurutan

Kompleksitas Algoritma Sorting yang Populer Dipakai

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

Pohon Biner Sebagai Struktur Data Heap dan Aplikasinya

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-8 Pengurutan (Sorting) 1

PENGGUNAAN BIG O NOTATION UNTUK MENGANALISA EFISIENSI ALGORITMA

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

BAB 3 PENGEMBANGAN TEOREMA DAN PERANCANGAN PROGRAM

SORTING ARRAY FAKULTAS TEKNOLOGI INFORMASI UNISBANK SEMARANG : ANDY KRISTIANTO : Disusun Oleh :

ANALISIS PERBANDINGAN METODE ALGORITMA QUICK SORT DAN MERGE SORT DALAM PENGURUTAN DATA TERHADAP JUMLAH LANGKAH DAN WAKTU

Analisis Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore dalam Proses Pencarian String

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

PENGGUNAAN BRUTE FORCE UNTUK MERETAS PASSWORD FILE RAR

Aplikasi Graf pada Persoalan Lintasan Terpendek dengan Algoritma Dijkstra

APLIKASI ALGORITMA PENCOCOKAN STRING KNUTH-MORRIS-PRATT (KPM) DALAM PENGENALAN SIDIK JARI

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-9 Pengurutan (Sorting) 2

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Penyelesaian Permainan Pacman yang disederhanakan dengan Algoritma Backtracking

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

BAB III ANALISIS KOMPLEKSITAS ALGORITMA

Aplikasi Divide and Conquer pada Perkalian Large Integer untuk Menghitung Jumlah Rute TSP Brute Force

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

PENGGUNAAN ALGORITMA GREEDY PADA MESIN PENCARI

Kompleksitas Algoritma dalam Strategi Algoritma Sorting

Aturan Untuk Menentukan Kompleksitas Waktu Asimptotik. Penjelasannya adalah sebagai berikut: T(n) = (n + 2) log(n 2 + 1) + 5n 2

Penyelesaian Barisan Rekursif dengan Kompleksitas Logaritmik Menggunakan Pemangkatan Matriks

Algoritma Penentuan Graf Bipartit

Menghitung Ketinggian Rata-Rata Pohon Terurut

Aplikasi OBE Untuk Mengurangi Kompleksitas Algoritma Program Penghitung Determinan Matriks Persegi

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

MAKALAH STRATEGI ALGORITMIK (IF 2251) ALGORITMA RUNUT BALIK DALAM GAME LABIRIN

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Sorting. Quick Sort

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

Algoritma dan Struktur Data

Analisis Algoritma. Jimmy Tirtawangsa. Universitas Telkom 2014

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

Transkripsi:

Komleksitas Algoritma Quick Sort Fachrie Lantera NIM: 130099 Program Studi Teknik Informatika, Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung Jln. Ganesha 10, Bandung E-mail : if099@students.if.itb.ac.id Abstract Makalah ini membahas komleksitas algoritma dari Quick Sort yang meruakan algoritma engurutan. Dalam sebuah ermasalahan daat memunyai banyak algoritma enyelesaian. Algoritma enyelesaian tersebut tidak harus benar, tetai juga harus mangkus (efisien). Kemangkusan algoritma diukur dari waktu eksekusi dan kebutuhan ruang memori yang digunakan. Algoritma yang efisien adalah algoritma yang meminimumkakan waktu eksekusi dan kebutuhan ruang memori. Kata Kunci : efisien, komleksitas algoritma, komleksitas waktu asimtotik. dieksekusi dikarenakan arsitektur komuter C lebih baik dibandingkan arsitektur komuter D. Oleh karena itu kita memerlukan model abstrak engukuran waktu/ruang yang bebas dari ertimbangan arsitektur komuter dan comiler bahasa emrograman. Besaran yang diakai untuk menerangkan model abstrak engukuran waktu/ruang ini adalah komleksitas algoritma. Ada dua macam komleksitas algoritma, yaitu : komleksitas waktu dan komleksitas ruang. Komleksitas waktu disimbolkan dengan T(n) dan komleksitas ruang S(n). Komleksitas waktu, T(n), diukur dari jumlah tahaan komutasi yang dibutuhkan untuk menjalankkan algoritma sebagai fungsi dari ukuran masukan n. Komlesitas ruang, S(n), diukur dari memori yang digunakan oleh struktur data yang terdaat di dalam algoritma sebagai fungsi dari ukuran masukan n. Dengan menggunakan besaran komleksitas waktu/ruang algoritma, kita daat menentukan laju eningkatan waktu (ruang) yang dierlukan algoritma dengan meningkatnya ukuran masukan n. 1 Di dalam sebuah algoritma terdaat bermacam jenis oerasi: 1. Pendahuluan 1.1 Komleksitas Algoritma Kita sering bertanya mengenai algortima mana yang lebih baik dalam menyelesaikan masalah tertentu. Untuk menjawab masalah di atas tentunya ada hal yang harus diukur suaya kita bisa menilai aakah algoritma tersebut lebih baik atau tidak. Jika kita mencoba mengeksekusi rogram dengan algoritma A ada komuter C dan rogram ada algoritma B ada komuter D. Kita tidak daat mengatakan algoritma A lebih baik dibandingkan dengan algoritma B hanya karena rogram dengan algoritma A jauh lebih ceat dieksekusi. Komuter-komuter yang kita gunakan tidak semua memiliki arsitektur yang sama. Sehingga waktu komutasinya un juga berbeda. Comiler bahasa emrograman un juga berbeda-beda dalam menghasilkan kode mesin. Sehingga ada kasus di atas, bisa jadi rogram dengan algoritma A jauh lebih ceat - Oerasi baca/tulis, - Oerasi aritmetika (+, -, *, /) - Oerasi engisian nilai (assignment) - Oerasi engaksesan elemen larik - Oerasi emanggilan fungsi/rosedur - dll Dalam raktek, kita hanya menghitung jumlah oerasi khas (tiikal) yang mendasari suatu algoritma. 1.2 Komleksitas Waktu Asimtotik Terkadang kita tidak terlalu membutuhkan komleksitas waktu yang detil dari sebuah algoritma. Yang kita butuhkan terkadang adalah besaran komleksitas waktu yang menghamiri komleksitas waktu yang sebenarnya. Komleksitas waktu yang demikian disebut komleksitas waktu asimtotik yang dinotasikan dengan O (baca : O-Besar ). Komleksitas waktu asimtotik dieroleh dengan mengambil term yang memberikan komleksitas waktu terbesar. Misalkan T(n) = 3n 3 + 2n 2 + n + 1. Maka

komleksitas waktu asimtotiknya adalah O(n 3 ). Karena n 3 yang memberikan komleksitas waktu terbesar. Kita tidak erlu menambahkan engali dari term dari n 3. Kelomok Algoritma O(1) O(log n) O(n) O(n log n) O(n 2 ) O(n 3 ) O(2 n ) O(n!) Nama konstan logaritmik lanjar n log n kuadratik kubik eksonensial faktorial Tabel 1. Pengelomokan Algoritma Berdasarkan Notasi O-Besar Urutan sektrum komleksitas waktu algoritma adalah : O(1) < O(log n) < O(n)< O(nlog n) < O(n 2 ) < O(n 3 ) <... < O(2 n ) < O(n!) 2 Algoritma Quick Sort Quick sort juga disebut juga dengan artition Exchange sort. Disebut Quick Sort, karena terbukti memunya average behaviour yang terbaik di antara metoda engurutan yang ada. Disebut Partition Exchange Sort karena konsenya membuat artisi-artisi, dan sort dilakukan er artisi. Teknik memartisi tabel: (ii) ilih x {a1, a2,..., an} sebagai elemen ivot, indai (scan) tabel dari kiri samai ditemukan elemen a x (iii) indai tabel dari kanan samai ditemukan elemen a x ertukarkan a <-> a (v) algortima olinominal algortima eksonensial ulangi (ii) dari osisi +1, dan (iii) dari osisi -1, samai kedua emindaian bertemu di tengah tabel. Dalam algoritma uick sort, emilihan ivot adalah hal yang menentukan aakah algoritma uick sort tersebut akan memberikan erforma terbaik atau terburuk. Berikut beberaa cara emilihan ivot : 1. = elemen ertama, elemen terakhir, atau elemen tengah tabel. Cara ini hanya bagus jika elemen tabel tersusun secara acak, tetai tidak bagus jika elemen tabel semula sudah terurut. Misalnya, jika elemen tabel semula menurun, maka semua elemen tabel akan terkumul di uatabel kana. 2. diilih secara acak dari salah satu elemen tabel. Cara ini baik, tetai mahal, sebab memerlukan biaya (cost) untuk embangkitan rosedur acak. Lagi ula, ita tidak mengurangi komleksitas waktu algoritma. 3. = elemen median tabel. Cara ini aling bagus, karena hasil artisi menghasilkan dua bagian tabel yang berukuran seimbang (masingmasing n/2 elemen). Cara ini memberkan komleksitas waktu yang minimum. Masalahnya, mencari median dari elemen tabel yang belum terurut adalah ersoalan tersendiri. Berikut Pseudo-code Quick Sort : Procedure QuickSort (inut/outut a : array [1..n] of integer, inut i,j : integer ) {mengurutkan tabel a[i..j] dengan algoritma uick sort. Masukkan: Tabel a[i..j] yang sudah terdefinisi elemen-elemennya. Keluaran: Tabel a[i..j] yang terurut menaik. } Deklarasi : k : integer; Algoritma : if (i<j) then Partisi(a,i,j,k) { Ukuran (a) > 1} QuickSort(a,i,k) QuickSort(a,k+1, j) Endif Procedure Partisi (inut/outut: a : array[1..n] of integer, inut i, j : integer, outut : integer) {Membagi tabel a[i..j] menjadi uatabel a[i..] dan a[+1..j] Keluaran uatabel a[i..] dan uatabel a[+1..j] Sedemikian sehingga elemen tabel a[i..] lebih kecil dari elemen tabel a[+1..j] } Deklarasi :, tem : integer Algoritma : <- A[(i+j) div 2] { ivot = elemen tengah } <- i <- j

reeat while a[] < ivot do <- + 1 endwhile { A >= ivot } while a[] > ivot do <- 1 endwhile { A >= ivot } 4 (<, berhenti). if ( ) then { ertukarkan a[] dengan a[]} tem <- a[] a[] <- a[] a[] <- tem { tentukan awal emindaian berikutnya} <- + 1 <- - 1 endif until > Hasil artisi ertama adalah : Kiri : (< ) 4 Kanan ( ) Misalkan tabel yang akan diurut adalah berikut : 4 Langkah-langkah emartisian tabel.. ivot ivot 4 4 4 4 Jika dilanjutkan. Maka rosesnya adalah sebagai berikut: - Rekursif untuk tabel artisi kiri a 4 Langkah-langkah emartisian tabel ivot ivot 4 ivot 4 ivot (<, berhenti). Kiri (< ) 4 4 4 4 Kanan ( ) Rekursif untuk tabel artisi kanan a.1

(<, berhenti). (<, berhenti). Kiri (< ) ivot 1 3 3 Kiri (<) Kanan ( ) Kanan ( ) Rekursif untuk tabel artisi kanan a.1.1 (<, berhenti). Rekursif Untuk Tabel Partisi Kanan b.1 Rekursif untuk tabel artisi kanan a.1.1 (<, berhenti). 4 Tabel telah terurut menaik. - Rekursif untuk tabel artisi kanan b ivot 2.1 Komleksitas Algoritma Quick Sort Terdaat 3 kemungkinan kasus dari erforma algoritma uick sort ini yaitu terbaik (best case), terburuk (worst case), dan rata-rata (average case). 2.1.1 Kasus Terbaik (Best Case) Kasus terbaik terjadi bila ivot adalah elemen median sedemikian sehingga kedua ua-tabel berukuran relatif sama setia kali emartisian. Menentukan median tabel adalah ersoalan tersendiri, sebab kita harus menentukan median dari tabel yang belum terurut. (ii) & (iii)

Pohon berikut menggambarkan ua-tabel kiri dan uatabel kanan setia kali emartisian samai menghasilkan tabel terurut : n n/2 n/2 n/4 n/4 n/4 n/4 n/8 n/8 n/8 n/8 n/8 n/8 n/8 n/8........................ 1 1 1 1...1 1 1... 1 1 1... 1 1...1 111 111 Komleksitas waktu engurutan dihitung dari jumlah erbandingan elemen-elemen tabel : T min (n) = waktu artisi + waktu emanggilan rekurens (Quick Sort untuk dua bagian tabel hasil artisi) Kasus ini terjadi bila ada setia artisi ivot selalu elemen masksimum (atau elemen minimum) tabel. Hal ini menyebabkan embagian menghasilkan uatabel kiri (atau kanan) berukuran satu elemen dan uatabel kanan (atau kiri) berukuran n 1 elemen. Keadaan kedua ua tabel ini digambarkan sebagai ohon berikut: n 1 n-1 1 n-2 1 n-3... 2 1 1 Komleksitas rosedur artisi adalah t(n) = cn = O(n), sehingga komleksitas algoritma uick sort menjadi (dalam bentuk relasi rekurens) : T(n) =,, Penyelesaian ersamaan rekurens : T(n) = 2T(n/2) + cn = 2(2T(n/4) + cn/2) + cn = 4(T(n/4) + 2cn = 4(2(T(n/8) + cn/4) + 2cn = 8T(n/8) + 3cn =.. = 2 k (T(n/2 k ) + kcn Persamaan terakhir daat diselesaikan karena basis rekursif adalah ketika ukuran tabel = 1, n/2 k = 1 k = 2 log n sehingga T(n) = nt(1) + cn 2 log n = na + c n 2 log n = O(n 2 log n) 2.1.2 Kasus Terburuk (Worst Case) Komleksitas waktu engurutan : T(n) = T(n) = cn + T(n-1),, = bn + { b.(n-1) + T(n-2) } = bn + b(n-1) + {b(n-2) + T(n-3)} =... = b(n+(n-1)+(n-2)..+2) +a =b{(n-1)(n+2)/2} + a = bn 2 /2 + bn/2 + ((a-b) = O(n 2 ) 2.1.3 Kasus Rata-Rata Kasus ini terjadi jika ivot diilih secara acak dari elemen tabel, dan eluang setia elemen diilih menjadi ivot adalah sama. Komleksitas waktunya adalah T avg (n) = O(n 2 log n). Pembuktiannya lebih rumit. 3 Kesimulan Algoritma Quick Sort daat kita ketahui sebagai algoritma yang handal dalam melakukan engurutannya dari besarnya waktu asimtotik yang dierlukan aabila diberikan n buah masukan. Dimana komleksitas algoritma dari algoritma ini memiliki 3 kasus yaitu O(n 2 log n) untuk kasus terbaik, O(n 2 ) untuk kasus terburuk, dan O(n 2 log n) untuk kasus

rata-rata. Komleksitas tersebut diengaruhi karena emilihan ivot. Oleh karena itu roses emilihan ivot erlu diertimbangkan. yang terkadang digunakan yaitu elemen tengah dari tabel yang akan diurut. DAFTAR PUSTAKA [1] Munir, Rinaldi. (200). Diktat Kuliah IF213 Matematika Diskrit Edisi Keemat. Deartemen Teknik Informatika, Institut Teknologi Bandung. [2] Munir, Rinaldi. (2007). Diktat Kuliah IF221 Strategi Algoritmik, Deartemen Teknik Informatika, Institut Teknologi Bandung. [3] Moh. Sjukani. (2007). Struktur Data (Algoritma & Struktur Data 2) dengan C, C++,Mitra Wacana Media. Jakarta