You are on page 1of 31

Strategi Algoritma

Kuliah 2 : Kompleksitas Algoritma


E. Haodudin Nurkifli
Teknik Informatika
Universitas Ahmad Dahlan

Jenis algoritma
Divide and conquer : menyederhanakan
problem yang besar.
Greedy methode : mencari yang optimal
pada saat itu.
Algoritma : jumlah langkah yang berhingga
(finite)
instruksinya jelas
Contoh : for i do 10 then .....

Tujuan Menganalisis algoritma
Efisiensi waktu
Efisiensi storage
Analisis algoritma
Menentukan karakteristik kinerja
(memprediksi sumber daya)
Mengapa ?
Memilih algoritma yang paling efisien dari
beberapa alternatif penyelesaian untuk
kasus yang sama
Mencari waktu yang terbaik untuk
keperluan praktis
Apakah algoritma itu optimal untuk
beberapa kasus atau ada yang lebih baik

Runing time
fungsi dari input size
Memanggil instruksi sederhana dan
mengakses ke memory word sebagai
primitive operation atau step
Jumlah step eksekusi algoritma pada
input tersebut
Dikenal juga complexity and input

Kompleksitas tergantung
Ukuran input bergantung pada
problem
Misalkan jumlah data yang diurutkan
Karakter lain dari input
Apakah data sudah terurut
Apakah ada lingkaran dalam grafik

Kompleksitas
Worst-case : kompleksitas waktu untuk
waktu terburuk (waktu tempuh bernilai
maksimum dari suatu fungsi f(n)) atau
Tmax(n)
Best-case : kompleksitas waktu untuk
waktu terbaik (kompleksitas waktu yang
bernilai minimum dari suatu fungsi f(n))
atau Tmin(n)
Average-case : kompleksitas waktu untuk
kasus rata-rata

Metode Analisis
1. Asymptotic/theoretic/mathematic
: berdasarkan pendekatan secara
teori atau atas dasar analisa secara
matematik
2. Empirical/Practical/Empiris/Praktis
: berdasarkan pendekatan praktis
yang biasanya didasarkan atas data-
data yang telah ada atau data-data
yang di-generete / dibangkitkan
Asymptotic
Menggambarkan karakteristik/perilaku
suatu algoritma pada batasan tertentu
(berupa suatu fungsi matematis)
Dituliskan dengan notasi matematis yg
dikenal dgn notasi asymptotic
Notasi asymptotic dapat dituliskan
dengan beberpa simbul berikut
- O, O, O, o, e
- O, O, O, o, e
Didefinisikan untuk fungsi diatas nilai biasa
Contoh: f(n) = O(n
2
).
Menggambarkan bagaimana fungsi f(n)
tumbuh pd pembandingan untuk n
2
.
Mendefinisikan himpunan fungsi ;
Pada prakteknya untuk membandingan 2
ukuran fungsi.
Notasi menggambarkan perbedaan rate-
of-growth hubungan antara definisi fungsi
dan definisi himpunan fungsi.

Notasi Asymptotic
Notasi O (big Oh)
Untuk fungsi g(n),kita definisikan
O(g(n)) sbg big-Oh dari n, sbg
himpunan:
O(g(n)) = {f(n) : - konstanta
positif c dan n
0,
sedemikian
rupa n > n
0
, sehingga 0 s f(n)
s cg(n) }
Ada konstanta n
- : ada, : untuk semua
Lanjt
f(n) Secara intuitif : himpunan
seluruh fungsi yg rate of growth
nya adalah sama atau lebih kecil
dari g(n).
g(n) adalah asymptotic upper
bound untuk f(n).
f(n) = O(g(n)) f(n) = O(g(n)).
O(g(n)) c O(g(n)).
Lanjt
2.99( =
2.50( =
2.0001( =
3n + 7( = ? (tidak bakal lebih 4n)
2n
2
+ 5( = ?
Big Oh O adalah merupakan
Upper bound dari suatu fungsi
3 (pembulatan ke atas dalah 3)
3
3
Contoh
f(n) = 3n + 4 berapa / apa big oh-nya ?
3n+4 <= Cn ?
3*2+4 <=3*3 10<=9 ?
Bgm dgn n
0
= 2
C =4
3n+4 <= cn ?
3*2+4 <=4*2 ?
Bgm dgn n
0
= 3
C =4
3n+4 <= cn ?
3*3+4 <=4*3 ?
Tidak akan pernah
terpenuhi
berapapun nilai n
Bgm dgn n
0
= 4
C =4
3n+4 <= cn ?
3*4+4 <=4*4 ?
Apa
kesimp
ulannya
n
0
= 2
C =3
?
Lanjt
Sehingga dari f(n) = 3n+4
akan terpenuhi f(n) <= 4n untuk n >= 4
berarti f(n)=O(4n) untuk n
0
=4
n
4n
3n+4
n=4
f(n)
Contoh dan Latihan
Apa fungsi big Oh dari

4n ?
2n+7 ?

n
2
?
n
2
+3 ?
Notasi O (big Omega)
O(g(n)) = {f(n) : - konstanta
positif c dan n
0,
sedemikian
hingga n > n
0
, maka 0 s cg(n)
s f(n)}
Untuk fungsi g(n),kita
definisikan O(g(n)) sbg big-
Omega dari n, sbg himpunan:
Lanjt
g(n) adalah asymptotic lower
bound untuk f(n).
f(n) = O(g(n)) f(n) =
O(g(n)). O(g(n)) c O(g(n)).
f(n) Secara intuitif : himpunan
dari semua nilai fungsi yang rate
of growth-nya adalah sama atau
lebih tinggi dari g(n).
Lanjt
2.0001 =
2.50 =
2.99 =
3n + 7 =
2n
2
+ 5 =
Big Omega O adalah merupakan
Lower bound dari suatu fungsi
2 (batas bawah tidak akan kurang dari 2)
2
2
?
?
Notasi O (big theta)
Untuk fungsi g(n),kita definisikan
O(g(n)) sbg big-theta dari n, sbg
himpunan sprt berikut
O(g(n)) = {f(n) : - konstanta
positif c
1
, c
2
dan n
0,
sedmikian
rupa n > n
0
, maka 0 s c
1
g(n)
s f(n) s c
2
g(n)}
Lanjt
Big theta O
adalah merupakan
tight bound dari
suatu fungsi
f(n) merupakan O(g(n))
pada nilai antara c1 smp
c2
g(n) adalah asymptotically tight bound untuk f(n).
Lanjt
Secara intuitif : himpunan
seluruh fungsi yang
rate of growth-nya sama
dengan g(n).
Secara teknik, f(n) e O(g(n)).
Penggunan sebelumnya,
f(n) = O(g(n)).
Mana yg akan kita teima ?
f(n) dan g(n) nonnegative, untuk nilai n besar.
Contoh
O(g(n)) = {f(n) : - konstanta positif c
1
, c
2
, dan n
0
,
yg mana n > n
0
, 0 s c
1
g(n) s f(n) s c
2
g(n)}
10n
2
- 3n = O(n
2
)
Apa nilai konstanta n
0
, c
1
, dan c
2
sehingga
akan terpenuhi fungsi tsb?
Buat c
1
sedkit lebih kecil dari koefisien
utama, dan c
2
sedikit lebih besar.
Untuk membandingkan tingkat
pertumbuhan, lihat term utama.
Latihan: Buktikan bahwa n
2
/2-3n = O(n
2
)

Relasi antara O, O, O
Relasi antara O, O, O
Teorema : untuk 2 fungsi g(n) dan f(n),
f(n) = O(g(n)) jika
f(n) = O(g(n)) dan f(n) = O(g(n)).
yakni, O(g(n)) = O (g(n)) O (g(n))
Dalam prakteknya, nilai O (atau tight
bounds) didapat dari asymptotic upper
bound dan lower bound.
Running Time
Running time dari suatu algoritma, secara
matematis adalah suatu fungsi input n
untuk sejumlah n data
Misal f(n)=n
2
berarti fungsi runing time dari
sejumlah n data adalah n
2


Running time merupakan fungsi kebutuhan
sumberdaya yang diperlukan suatu
algoritma (atau implementasinya) untuk
memproses sejumlah data n
Lanjt
Running time-nya O(f(n)) O(f(n)) adalah
sbgWorst case-nya
O(f(n)) batasan pd worst-case running time
O(f(n)) batasan pada running time dari setiap
input.
. O(f(n)) batasan pd worst-case running time
O(f(n)) batasan pd running time dari setiap
input.
Running time -nya O (f(n)) O(f(n)) sbg Best
case-nya
Analisis Empiris ?

You might also like