Di dalam prakteknya hanya menghitung jumlah operasi khas tipikal yang mendasari suatu algoritma. Contoh operasi khas didalam algoritma yaitu :
1. Algoritma pencarian didalam larik Operasi khas : perbandingan elemen larik
2. Algoritma pengurutan Operasi khas : perbandingan elemen, pertukaran elemen
3. Algoritma penjumlahan 2 buah matriks Operasi khas : penjumlahan
4. Algoritma perkalian 2 buah matriks Operasi khas : perkalian dan penjumlahan
Contoh : Algoritma menghitung rata – rata sebuah larik array
sum 0 for i 1 to n do
sum sum + a[i] endfor
rata_rata sumn
Operasi yang mendasar pada algoritma di atas adalah operasi penjumlahan elemen-elemen a
i
yaitu sum sum + a[i] yang dilakukan sebanyak n kali dan mempunyai kompleksitas waktu yaitu Tn = n. Kompleksitas waktu dibedakan
atas tiga macam yaitu : 1. T
max
n yaitu kompleksitas waktu untuk kasus terburuk worst case atau kebutuhan waktu maksimum.
2. T
min
n yaitu kompleksitas waktu untuk kasus terbaik best case atau kebutuhan waktu minimum.
3. T
avg
n yaitu kompleksitas waktu untuk kasus rata-rata average case atau kebutuhan waktu secara rata
– rata.
Contoh : Algoritma sequential search
procedure PencarianBeruntuninput a1, a2, ..., an : integer, x : integer,output idx : integer
Deklarasi k : integer
ketemu : boolean
Algoritm k 1
ketemu false while k ≤ n and not ketemu do
if ak = x then ketemu true
else k k + 1
endif endwhile{ k n or ketemu }
if ketemu then { x ditemukan } idx k
else idx 0 { x tidak ditemukan }
endif
Pada algoritma diatas maka dapat dihitung kompleksitas waktunya dengan menghitung jumlah operasi perbandingan yaitu :
1. Kasus terbaik terjadi apabila a
1
= x T
min
n = 1 2.5
2. Kasus terburuk terjadi apabila a
n
= x atau x tidak ditemukan. T
max
n = n 2.6
3. Kasus rata – rata terjadi jika x ditemukan pada posisi ke-j,maka operasi
perbandingan a
k
= xakan dieksekusi sebanyak j kali. Tavgn
=
+ + + … + � �
+
� + � �
=
� +
2.7
2.7 Notasi Big O
Notasi Big O merupakan suatu notasi matematika untuk menjelaskan batas atas dari magnitude suatu fungsi dalam fungsi yang lebih sederhana [8]. Dalam
dunia ilmu komputer, notasi ini sering digunakan dalam analisis kompleksitas algoritma. Notasi Big O pertama kali diperkenalkan pakar teori bilangan Jerman,
Paul Bachman tahun 1894 dalam bukunya yang berjudul Analytische Zahlentheorie edisi kedua[8]. Notasi tersebut kemudian dipopulerkan oleh pakar teori bilangan
Jerman lainnya, Edmund Landau, dan oleh karena itu, terkadang disebut sebagai symbol Landau.
Untuk membandingkan kompleksitas algoritma yang satu dengan yang lain, dapat digunakan tabel 2.3 yaitu tabel jenis kompleksitas yang diurutkan
berdasarkan kompleksitas yang paling baik ke yang paling buruk. Sebuah masalah yang mempunyai algoritma dengan kompleksitas polinomial kasus terburuk
dianggap mempunyai algoritma yang “bagus”, artinya masalah tersebut mempunyai algoritma yang mangkus, dengan catatan polinomial tersebut
berderajat rendah. Jika polinomnya berderajat tinggi, waktu yang dibutuhkan untuk mengeksekusi algoritma tersebut panjang.
Tabel 2.3 Jenis Kompleksitas
Notasi Nama
O1 Konstan
Olog n Logaritmik
On Linier
On log n Linierithmik
On
2
Kuadratik On
3
Kubik O2
n
Eksponensial On
Faktorial, kombinatorial Penjelasan masing
– masing kelompok jenis kompleksitas algoritma adalah sebagai berikut :
1. O1 yaitu kompleksitas O1 berarti waktu pelaksanaan algoritma adalah tetap, tidak bergantung pada ukuran masukan.
Contoh prosedur tukar dibawah ini :
procedure tukarvar a:integer; var b:integer; var
temp:integer; begin
temp:=a; a:=b;
b:=temp; end;
Pada contoh kasus diatas jumlah operasi penugasan assignment ada tiga buah dan tiap operasi dilakukan satu kali. Jadi Tn = 3 = O1.
2. Olog n yaitu kompleksitas waktu logaritmik berarti laju pertumbuhan waktunya berjalan lebih lambat daripada pertumbuhan n. Algoritma yang
termasuk kelompok ini adalah algoritma yang memecahkan persoalan besar dengan mentransformasikannya menjadi beberapa persoalan yang lebih kecil
yang berukuran sama. Di sini basis algoritma tidak terlalu penting sebab bila n dinaikkan dua kali semula, misalnya, log n meningkat sebesar sejumlah tetapan.
3. On yaitu kompleksitas linier dimana waktu pelaksanaanya umumnya terdapat pada kasus yang setiap elemen masukanya dikenai proses yang sama. Bila n
dinaikan dua kali semula. 4. On log n yaitu kompleksitas loglinier dimana waktu pelaksanaan yang n log
n terdapat pada algoritma yang memecahkan persoalan menjadi beberapa persoalan yang lebih kecil, menyelesaikan tiap persoalan secara independen,
dan menggabung solusi masing-masing persoalan. Algoritma yang diselesaikan dengan teknik bagi dan gabung mempunyai kompleksitas asimptotik jenis ini.
Bila n = 1000, maka n log n mungkin 20.000. Bila n dijadikan dua kali semua, maka n log n menjadi dua kali semula tetapi tidak terlalu banyak.
5. On
2
yaitu kompleksitas kuadratik dimana waktu pelaksanaannya kuadratik hanya praktis digunakan untuk persoalan yang berukuran kecil. Umumnya
algoritma yang termasuk kelompok ini memproses setiap masukan dalam dua buah perulangan bersarang.
6. On
3
yaitu kompleksitas kubik, seperti halnya algoritma kuadratik, algoritma kubik memproses setiap masukan dalam tiga buah perulangan bersarang.
7. O2
n
yaitu kompleksitas eksponensial tergolong kelompok ini mencari solusi persoalan secara seperti algoritma Brute Force. Bila n = 20, waktu pelaksanaan
algoritma adalah 1.000.000. Bila n dijadikan dua kali semula, waktu pelaksanaan menjadi kuadrat kali semula.
8. On yaitu kompleksitas faktorial. Seperti halnya pada algoritma eksponensial, algoritma jenis ini memproses setiap masukan dan menghubungkannya dengan
n – 1. Bila n = 5, maka waktu pelaksanaan algoritma adalah 120. Bila n
dijadikan dua kali semula, maka waktu pelaksanaan algoritma menjadi faktorial dari 2n.
Gambar 2.3 Perbandingan kompleksitas algoritma
Sebagai contoh terdapat suatu program sederhana yang akan dihitung komplesitasnya dengan menggunakan Big-O seperti :
sum = 0; for i=0; in; i++
sum= sum +a[i]
Kemudian pada tabel di bawah ini dapat dilihat perhitungan kompleksitas dengan menggunakan Big-O dari contoh program sederhana diatas :
Tabel 2.4 Contoh Perhitungan Big-O dengan program sederhana Program
Notasi Big-O Keterangan