Kompleksitas Algoritma Sort
Kompleksitas Algoritma Sort
disusun secara sistematis dan logis. Sebuah algoritma tidak saja harus benar, tetapi
juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien .
Untuk dapat mengetahui seberapa efisien suatu algoritma, dipakailah teori
kompleksitas algoritma sebagai dasar kajian. Kompleksitas terbagi atas dua, yaitu
kompleksitas waktu dan kompleksitas ruang.
Kompleksitas Waktu, T(n), adalah jumlah operasi yang dilakukan untuk
melaksanakan algoritma sebagai fungsidari ukuran masukan n. Maka, dalam
mengukur kompleksitas waktu dihitunglah banyaknya operasi yang dilakukan oleh
algoritma. Idealnya, kita memang harus menghitung semua operasi yang ada dalam
suatu algoritma. Namun, untuk lasan praktis, cukup menghitung jumlah operasi
abstrak yang mendasari suatu algoritma. Operasi abstrak ini disebut Operasi Dasar.
Pada algoritma pengurutan, terutama pada pengurutan dengan perbandingan,
operasi dasar adalah operasioperasi perbandingan elemen-elemen suatu larik dan
operasi pertukaran elemen. Kedua hal itu dihitung secara terpisah, karena jumlah
keduanya tidaklah sama. Biasanya kompleksitas algoritma dinyatakan secara
asimptotik dengan notasi big-O. Jika kompleksitas waktu untuk menjalankan suatu
algoritma dinyatakan dengan T(n), dan memenuhi T(n) C(f(n)) untuk n n0, maka
kompleksitas dapat dinyatakan dengan
T(n) = O(f(n)).
1. Infinite asymptotics
2. Infinitesimal asymptotics
Perbedaan kedua jenis penggunaan notasi ini hanya pada aplikasi. Sebagai contoh,
pada infinite asymptotics dengan persamaan
T ( n ) =2 n22 n+2
Untuk n yang besar, pertumbuhan T(n) akan sebanding dengan n2 dan dengan
mengabaikan suku yang tidak mendominasi kita, maka kita tuliskan
2
T ( n ) =O(n )
Pada infinitesimal asymptotics, Big O digunakan untuk menjelaskan kesalahan dalam
aproksimasi untuk sebuah fungsi matematika, sebagai contoh
2
x x
e x =1+ + +O ( x3 ) , x 0
1 2
Kesalahannya memiliki selisih
x x2
e x (1+ + )
1 2
A. Kompleksitas Bubble Sort
Kompleksitas Algoritma Bubble Sort dapat dilihat dari beberapa jenis kasus,
yaitu worst-case, average-case, dan best-case.
1. Kondisi Best-Case
Dalam kasus ini, data yang akan disorting telah terurut sebelumnya sehingga
proses perbandingan hanya dilakukan sebanyak (n-1) kali, dengan satu kali pass.
Dari langkah pengurutan di atas, terlihat bahwa setiap kali melakukan satu
pass, data terkecil akan bergeser ke arah awal sebanyak satu step. Dengan kata lain,
untuk menggeser data terkecil dari urutan keempat menuju urutan pertama,
dibutuhkan pass sebanyak tiga kali, ditambah satu kali pass untuk memverifikasi.
Sehingga jumlah proses pada kondisi best case dapat dirumuskan sebagai berikut.
Jumlah proses = n2+n
Dalam persamaan di atas, n adalah jumlah elemen yang akan diurutkan.
Sehingga notasi Big-O yang didapat adalah O(n2). Dengan kata lain, pada kondisi
worst-case, algoritma Bubble Sort termasuk dalam kategori algoritma kuadratik.
3. Kondisi Average-Case
Pada kondisi average-case, jumlah pass ditentukan dari elemen mana yang
mengalami penggeseran ke kiri paling banyak. Hal ini dapat ditunjukkan oleh proses
pengurutan suatu array, misalkan saja (1 8 6 2). Dari (1 8 6 2), dapat dilihat bahwa
yang akan mengalami proses penggeseran paling banyak adalah elemen 2, yaitu
sebanyak dua kali.
Pass Pertama
(1 8 6 2) menjadi (1 8 6 2)
(1 8 6 2) menjadi (1 6 8 2)
(1 6 8 2) menjadi (1 6 2 8)
Pass Kedua
(1 6 2 8) menjadi (1 6 2 8)
(1 6 2 8) menjadi (1 2 6 8)
(1 2 6 8) menjadi (1 2 6 8)
Pass Ketiga
(1 2 6 8) menjadi (1 2 6 8)
(1 2 6 8) menjadi (1 2 6 8)
(1 2 6 8) menjadi (1 2 6 8)
Pass sendiri makin berkurang hingga nilainya menjadi semakin kecil. Berdasarkan
operasi perbandingan elemennya:
n1
T ( n ) =( n1 )+ ( n2 ) ++ 2+1= ni
i=1
n ( n1 )
2
=O(n )
2
model
ini
tergolong
buruk
dan
lebih
baik
dihindari
penggunaannya, terutama untuk penanganan tabel dengan lebih dari 1000 elemen.
Algoritma Insertion Sort juga terdiri dari 2 kalang bersarang. Dimana terjadi
N-1 Pass (dengan N adalah banyak elemen struktur data), dengan masing-masing
Pass terjadi i kali operasi perbandingan. i tersebut bernilai 1 untuk Pass pertama,
bernilai 2 untuk Pass kedua, begitu seterusnya hingga Pass ke N-1.
n1
T ( n ) =1+ 2+ +n1=
i=1
n ( n1 )
=O(n2)
2
W(m)
h+m1
__
__
__
Ketika besar input adalah 1, kondisi pemberhentian terpenuhi dan tak ada
penggabungan. Sehingga, W(1) adalah 0.
Solusi dari rekurens tersebut adalah Merge Sort akan selalu membagi dua tiap
sub-arraynya hingga mencapai basis, sehingga kompleksitas dari algoritma Merge
Sort, berlaku untuk semua kasus (Worst Case = Best Case = Average Case).
E. Kompleksitas Quick Sort
Kebutuhan waktu dari quicksort bergantung pada pembuatan partisi, seimbang
atau tidak, yang bergantung juga pada elemen yang digunakan sebagai pivot. Dalam
menghitung kompleksitas ini, perlu dilihat pula perhitungan recurrence, karena
terdapat fungsi rekursif untuk penyelesaian sub-masalah.
Terdapat 3 jenis kompleksitas waktu dari quicksort:
1.
Solusi
dari
rekurens
tersebut
T ( n) =
adalah
n(n1)
,
2
sehingga
n(n1)
O(n2 )
2
Kasus terbaik (best case), yaitu terjadi bila terbentuk partisi dengan dengan
komposisi seimbang, dengan ukuran masing-masing tidak lebih dari n/2.
n
n log
n=O
Sehingga didapat:
T ( n ) =2T
3.
( n2 )+ cn=na+ cn log
Kasus rata-rata (average case), yaitu terjadi dari perimbangan pivot antara
terbaik dan terburuk, yang dalam prakteknya lebih mendekati kasus terbaik
ketimbang terburuk. Waktu kompleksitas untuk kasus rata-rata dapat ditentukan
dengan menyelesaikan rekurens ini :
n
A ( n )= 1
p =1
1
[ A ( p1 ) + A (n p)] +(n1)
n
p=1
p=1
1 1n [ A ( p1 )+ A (n p) ]+(n1)=2 A( p1)
10
A ( n )=
Sehingga,
2
A ( p1 )
n p=1
n
nA ( n )=2 A ( p1)+n(n1)
p=1
( n1 ) A ( n1 )=2 A ( p1 ) +n ( n1 )( n2 )
p=1
an =an1 +
2 ( n1 )
untuk n>0
n ( n+1 )
an =0
Solusi dari rekurens tersebut adalah
2
ln
n
log
A ( n ) ( n+1 ) 2 lnn=( n+1 ) 2
11
an 2 ln n
yang mengakibatkan
n
n log
n O
1.38 ( n+1 ) log
F. Kesimpulan
Algoritma BubbleSort memiliki kelemahan, yaitu kompleksitas algoritma
O(n2) pada average case dan worst case, sehingga menjadikan algoritma ini
12
Merge Sort dan Quick Sort mempunyai batasan yang sama yaitu
n
n log ,
O
tetapi dengan basis log yang berbeda. Khusus Quick Sort memiliki
2
kompleksitas O(n ) untuk kasus terburuk.
13
DAFTAR PUSTAKA
14
15