Algoritma
Jumlah 0
i1
while i ≤ n do
jumlah jumlah + ai
ii+1
endwhile
{i > n}
r jumlah/n {nilai rata-rata}
Cara Perhitungan ( )
• Jenis-jenis operasi yang terdapat di dalam Algoritma HitungRerata adalah:
(1) Operasi pengisian nilai/assignment (dengan operator “”)
(2) Operasi penjumlahan (dengan operator “+”)
(3) Operasi pembagian (dengan operator “/”)
• Operasi penjumlahan
Jumlah + ak, n kali
k+1, n kali
Jumlah seluruh operasi penjumlahan adalah = + =2
• Operasi pembagian
Jumlah seluruh operasi pembagian adalah
Jumlah/n 1 kali
• Dengan demikian, kompleksitas waktu algoritma dihitung berdasarkan jumlah operasi aritmatika
dan operasi pengisian nilai adalah:
= + + =3+2 +2 +1=4 +4
Macam-macam Kompleksitas Waktu (1)
• Hal lain yang harus diperhatikan dalam menghitung kompleksitas waktu suatu
algoritma adalah parameter yang mencirikan ukuran input. Contoh pada algoritma
pencarian, waktu yang dibutuhkan untuk melakukan pencarian tidak hanya
bergantung pada ukuran larik ( ) saja, tetapi juga bergantung pada nilai elemen ( )
yang dicari.
• Misalkan:
(i) Terdapat sebuah larik dengan panjang elemen 130 dimulai dari , , …
(ii) Asumsikan elemen-elemen larik sudah terurut. Jika = , maka waktu
pencariannya lebih cepat 130 kali dari pada = atau tidak ada di dalam
larik.
(iii) Demikian pula, jika = , maka waktu pencariannya ½ kali lebih cepat
daripada =
Macam-macam Kompleksitas Waktu (2)
• ( ) : kompleksitas waktu untuk kasus terbaik (best case)
merupakan kebutuhan waktu minimum yang diperlukan algoritma
sebagai fungsi dari .
( )
=∑ [ ]= =∑ = ∑ = ∑ = =
Biasanya kita berkonsentrasi untuk
menemukan worst-case running time.
Mengapa?
Alasan perhitungan worst-case
• Worst-case running time merupakan upper bound (batas atas) dari
running time untuk input apapun. Hal ini memberikan jaminan bahwa
algoritma yang kita jalankan tidak akan lebih lama lagi dari worst-case
• Untuk beberapa algoritma, worst-case cukup sering terjadi. Dalam
beberapa aplikasi pencarian, pencarian info yang tidak ada mungkin
sering dilakukan.
• Pada kasus average-case umumnya lebih sering seperti worst-case.
Contoh: misalkan kita secara random memilih angka dan
mengimplementasikan insertion sort, average-case = worst-case yaitu
fungsi kuadratic dari .
Seringkali kita tidak tertarik dengan kompleksitas waktu yang presisi
untuk suatu algoritma, kita lebih tertarik pada bagaimana best-case dan
worst-case tumbuh bersamaan dengan meningkatnya ukuran input
Perhatikan Terciptanya Big-O Notation
= 2 +6 +1
Untuk yang besar, pertumbuhan ( ) sebanding dengan
≤ . ( )
Untuk ≥
Jika dibuat semakin besar, waktu yang dibutuhkan tidak akan melebihi
konstanta dikalikan dengan ( ), ( ) adalah upper bound
Ilustrasi Big-O Notation
Contoh:
= +5 ,
2 +6 +1≤ ( ), ≥1
=2 +6 +1=
Contoh Soal 2
Tunjukkan bahwa: = 5 = (1)
Penyelesaian:
≤ . ( )
Penyelesaian:
3 + 2 = ( ) karena 3 + 2 ≤ C , untuk semua ≥1
C=5, =1
Contoh-contoh menentukan kompleksitas
waktu asimptotik
Big-O Notation dari Polinomial Berderajat m
• Polinomial berderajat dapat digunakan untuk memperkirakan
kompleksitas waktu asimptotik dengan mengabaikan suku berorde
rendah
TEOREMA 1
Bila = + + + adalah polinom berderajat
m maka = ( )
Big-O dari Polinomial Berderajat m (2)
Bukti Teorema 1:
Teorema Big-O Notation
TEOREMA 2
Misalkan = = ,
(a)(i) + = (max( , )
(ii) + = +
(b) . = ) ( = .
(c) = , ℎ
(d) =
Contoh Soal 1
Misalkan, = = , dan = ( ),
dengan m sebagai peubah, maka
Contoh:
Pada algoritma cariMax, ( ) = −1= ( )
Aturan Menentukan Kompleksitas Waktu Asimptotik
• Cara II
Kita bisa langsung menggunakan notasi Big-O, dengan cara:
Pengisian nilai (assignment), perbandingan, operasi aritmatika (+,-,/,*,
div, mod), read, write, pengaksesan elemen larik, memilih field
tertentu dari sebuah record, dan pemanggilan function/void
membutuhkan waktu O(1)
Contoh:
Tinjau potongan algoritma berikut:
read(x) O(1)
xx+1 O(1) + O(1)=O(1)
write(x) O(1)
Kompleksitas waktu asimptotik algoritmanya (1) + (1) + (1) = (1)
Penjelasan:
(1) + (1) + (1) = (max(1,1)) + (1) Teorema 2(a)(i)
= (1) + (1)
= (max(1,1)) Teorema 2(a)(ii)
= (1)
3. A Survey of Common Running Times
• Pengelompokkan berdasarkan Big-O Notation
Contoh:
Tentukan Big-Ω dan Big-θ Notation untuk =2 +6 +1
Penyelesaian:
Karena 2 + 6 + 1 ≥ 2 untuk ≥ 1, dengan mengambil C=2, kita memperoleh
2 +6 +1=
Karena 2 +6 +1= dan 2 + 6 + 1 = , maka 2 + 6 + 1= θ( )
Sesi Materi Berakhir
TERIMA KASIH