download

Matakuliah
Tahun
: T0034 / Perancangan & Analisis Algoritma
: 2008
Pertemuan 3
ALGORITMA &
FUNGSI KOMPLEKSITAS
LANGKAH DASAR ALGORITMA
• Sederhanakan masalah
• Membangun rencana penyelesaian secara
matematis
• Merancang algoritma
• Menguji kebenaran algoritma
• Implementasi dengan suatu bahasa pemrograman
yang dimengerti
• Dokumentasi
• Analisis kompleksitas algoritma
Bina Nusantara
WAKTU PROSES ALGORITMA
• Waktu proses algoritma adalah lamanya waktu yang diperlukan
komputer untuk menjalankan sebuah algoritma.
• Karena kecepatan komputer yang biasa kita gunakan sangat tinggi,
maka biasanya waktu proses itu tidak terlalu kita perhatikan.
• Tidak semua algoritma dapat selesai diproses dalam waktu kurang dari
satu detik.
• Algoritma yang kompleks dapat memerlukan waktu beberapa menit
hingga berhari-hari untuk menyelesaikan prosesnya.
• Hal ini berlaku bahkan di komputer paling canggih sekalipun.
• Sejumlah algoritma dengan kompleksitas sangat tinggi bahkan ada
yang memakan waktu lebih dari satu tahun untuk mengeluarkan hasil.
• Dalam hal merancang algoritma yang cukup kompleks, sangat penting
bagi kita untuk menghitung waktu proses algoritma.
[buku utama, bab 3.1]
Bina Nusantara
VARIASI WAKTU PROSES
• Algoritma bekerja berdasarkan input yang dimasukkan user.
• Setiap input memiliki ukuran. Misalnya kita hendak mengurutkan
sejumlah bilangan, banyaknya bilangan yang perlu diurutkan
merupakan ukuran besarnya input
• Makin besar ukuran input yang dimasukkan, pada umumnya waktu
proses akan semakin lama.
• Tergantung pada isi input, waktu proses dapat bervariasi :
– Keadaan terbaik (best case)
• Dilambangkan dengan notasi (...) dibaca Theta
– Keadaan rata-rata (average case)
• Dilambangkan dengan notasi (...) dibaca Omega
– Keadaan terburuk (worst case)
• Dilambangkan dengan notasi O(...) dibaca Big-O
• Kinerja sebuah algoritma biasanya diukur dengan menggunakan
patokan keadaan terburuk (worst case) yang dinyatakan dengan Big-O
Bina Nusantara
ALGORITMA
 Definisi 1 : waktu terburuk
f n  g n iff ada dua bilangan konstanta c dan no 
f n  c g n ,  n  no
Theorema : Misal An   an n  ....  a1n  a0
m
 
adalah suatu polinom derajat n. Maka A n    nm
Bina Nusantara
ALGORITMA
 Definisi 2 : waktu tercepat
f n  g n iff ada dua konstanta c dan no 
f n  c g n , n  no
Bina Nusantara
ALGORITMA
 Definisi 3 : waktu rata-rata
f n   g n iff ada tiga konstanta positif c1, c2, dan no 
c1 g n  f n  c2 g n , n  no
Bina Nusantara
MENGHITUNG WAKTU PROSES (1)
•
Contoh : Pseudocode Selection Sort (pseudocode 3.6)
1 for i=1 to N-1 do
2
min=i
3
for j=i+1 to N do
4
if A[j]<A[min] then
5
min=j
6
end if
7
end for
8
swap(A[i],A[min])
9 end for
•
•
Hitung waktu proses algoritma yang diperlukan untuk mengurutkan deretan yang berisi 8
angka acak !
Bagaimana jika ukuran input belum diketahui?
–
–
•
Dinyatakan dengan N
Waktu proses dinyatakan dengan sebuah persamaan N, selanjutnya disebut Fungsi Kompleksitas
Fungsi Kompleksitas menyatakan seberapa kompleksnya sebuah algoritma
[buku utama, bab 3.2]
Bina Nusantara
MENGHITUNG WAKTU PROSES (2)
• Asumsi bahwa nilai N belum diketahui
• Bisa dihitung bahwa untuk setiap perulangan i
akan terjadi perulangan j sebanyak N-1, N-2, N-3,
..., 1 kali
• Misalkan nilai N adalah 5, berarti kita perlu
menghitung 5+4+3+2+1 (rumus deret hitung)
 DN 
N
(2a  ( N  1)b)
2
• Dengan nilai a dan b = 1 diperoleh :  DN
Bina Nusantara

N ( N  1)
2
GROWTH RATE
• Dengan rumus Fungsi Kompleksitas N(N+1)/2 berarti jika
N=5 maka waktu proses adalah 15.
• Jika nilai N diperbesar menjadi 8, maka waktu proses
menjadi 36.
• Nilai N dan waktu proses bisa dipetakan dalam sebuah
koordinat Cartesius dengan N di sumbu x dan waktu proses
di sumbu y.
• Terlihat bahwa waktu proses algoritma Selection Sort
bertumbuh (growth rate) secara linear.
Bina Nusantara
FUNGSI KOMPLEKSITAS
• Fungsi Kompleksitas algoritma Selection Sort di atas
f ( n) 
n(n  1)
2
• Jenis-jenis Fungsi Kompleksitas
– Big Oh
f(n) adalah O(n) jika ada c > 0 dan n0 ≥ 1 yang memenuhi f(n) ≤ c.g(n) untuk n ≥ n0
– Big Omega
f(n) adalah Ω(n) jika ada c > 0 dan n0 ≥ 1 yang memenuhi f(n) ≥ c.g(n) untuk n ≥ n0
– Big Theta
f(n) adalah θ(n) jika ada c1 > 0, c2 > 0 dan n0 ≥ 1
yang memenuhi c1.g(n) ≤ f(n) ≤ c2.g(n) untuk n ≥ n0
– Little oh
f(n) adalah ο(n) jika ada c > 0 dan n0 ≥ 0 yang memenuhi f(n) ≤ c.g(n) untuk n ≥ n0
– Little omega
f(n) adalah ω(n) jika ada c > 0 dan n0 ≥ 0 yang memenuhi f(n) ≥ c.g(n) untuk n ≥ n0
Bina Nusantara
ANALISIS KOMPLEKSITAS ALGORITMA
• Apriori analysis
– yaitu suatu analisis waktu proses (computing time) suatu
algoritma yang menyatakan dalam bentuk fungsi
f n  g n
• Aposteriori testing
– yaitu analisis dengan cara melakukan sejumlah
percobaan untuk mengetahui waktu proses eksak dari
suatu algoritma pada suatu komputer tertentu; bisa juga
dilakukan untuk memperoleh data statistik dari waktu
proses dan jumlah memori space yang digunakan
Bina Nusantara
MEMBACA BIG-OH
•
•
•
•
•
•
•
•
O(1) artinya algoritma konstan
O(n) artinya algoritma linear
O(n2) artinya algorritma quadratic
O(n3) artinya algoritma qubic
O(log n) contohnya pada full balanced Binary Search Tree
O(nm) artinya algoritma eksponensial
Notasi Big-O bisa berisi kombinasi dari contoh di atas
Penyederhanaan Big-O dilakukan pada komponen yang
“less important”
Bina Nusantara
LATIHAN
• Hitunglah Fungsi Kompleksitas untuk algoritma
bilangan Fibonacci yang terdapat di pertemuan
sebelumnya!
Bina Nusantara
REVIEW
• Apa yang sudah dipahami?
• Apa yang akan dibahas selanjutnya?
Bina Nusantara