Anda di halaman 1dari 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 datadata 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,

Notasi Asymptotic
, O, , o,
Didefinisikan untuk fungsi diatas nilai biasa
Contoh: f(n) = (n2).
Menggambarkan bagaimana fungsi f(n)
tumbuh pd pembandingan untuk n2.
Mendefinisikan himpunan fungsi ;
Pada prakteknya untuk membandingan 2
ukuran fungsi.
Notasi menggambarkan perbedaan rate-ofgrowth hubungan antara definisi fungsi dan
definisi himpunan fungsi.

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 n0, sedemikian
rupa n n0, sehingga 0 f(n)
cg(n) }
: ada, : untuk semua

Ada konstanta n

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) = (g(n)) f(n) = O(g(n)).
(g(n)) O(g(n)).

Lanjt

2.99 = 3 (pembulatan ke atas dalah 3)


2.50 = 3
2.0001 = 3
3n + 7 = ? (tidak bakal lebih 4n)
2n2 + 5 = ?
Big Oh O adalah merupakan
Upper bound dari suatu fungsi

Contoh
f(n) = 3n + 4 berapa / apa big oh-nya ?
n0 = 2
C =3

3n+4 <= Cn ?
3*2+4 <=3*3 10<=9 ?

Bgm dgn n0 = 2
C =4
Bgm dgn n0 = 3
C =4
Bgm dgn n0 = 4
C =4

Tidak akan pernah


terpenuhi
berapapun nilai n

3n+4 <= cn ?
3*2+4 <=4*2 ?
3n+4 <= cn ?
3*3+4 <=4*3 ?
3n+4 <= cn ?
3*4+4 <=4*4 ?

Apa
kesimp
ulannya

Lanjt
Sehingga dari f(n) = 3n+4
akan terpenuhi f(n) <= 4n untuk n >= 4
berarti f(n)=O(4n) untuk n0=4
f(n)

4n
3n+4

n=4

Contoh dan Latihan


Apa fungsi big Oh dari
4n ?
2n+7 ?
n2 ?
n2+3 ?

Notasi (big Omega)


Untuk fungsi g(n),kita
definisikan (g(n)) sbg bigOmega dari n, sbg himpunan:
(g(n)) = {f(n) : konstanta
positif c dan n0, sedemikian
hingga n n0, maka 0
cg(n) f(n)}

Lanjt
f(n) Secara intuitif : himpunan
dari semua nilai fungsi yang rate
of growth-nya adalah sama atau
lebih tinggi dari g(n).

g(n) adalah asymptotic lower


bound untuk f(n).
f(n) = (g(n)) f(n) =
(g(n)). (g(n)) (g(n)).

Lanjt

2.0001 =
2.50 =
2.99 =
3n + 7 =
2n2 + 5 =

2 (batas bawah tidak akan kurang dari 2)


2
2
?
?

Big Omega adalah merupakan


Lower bound dari suatu fungsi

Notasi (big theta)


Untuk fungsi g(n),kita definisikan
(g(n)) sbg big-theta dari n, sbg
himpunan sprt berikut
(g(n)) = {f(n) : konstanta
positif c1, c2 dan n0, sedmikian
rupa n n0, maka 0 c1g(n)
f(n) c2g(n)}

Lanjt
Big theta
adalah merupakan
tight bound dari
suatu fungsi
f(n) merupakan (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) (g(n)).
Penggunan sebelumnya,
f(n) = (g(n)).
Mana yg akan kita teima ?

f(n) dan g(n) nonnegative, untuk nilai n besar.

Contoh
(g(n)) = {f(n) : konstanta positif c1, c2, dan n0,
yg mana n n0, 0 c1g(n) f(n) c2g(n)}

10n2 - 3n = (n2)
Apa nilai konstanta n0, c1, dan c2 sehingga
akan terpenuhi fungsi tsb?
Buat c1 sedkit lebih kecil dari koefisien
utama, dan c2 sedikit lebih besar.
Untuk membandingkan tingkat
pertumbuhan, lihat term utama.
Latihan: Buktikan bahwa n2/2-3n = (n2)

Relasi antara , O,

Relasi antara , O,
Teorema
Teorema :: untuk
untuk 22 fungsi
fungsi g(n)
g(n) dan
dan f(n),
f(n),
f(n)
f(n) == (g(n))
(g(n)) jika
jika
f(n)
f(n) == O(g(n))
O(g(n)) dan
dan f(n)
f(n) == (g(n)).
(g(n)).

yakni, (g(n)) = O (g(n)) (g(n))


Dalam prakteknya, nilai (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)=n2 berarti fungsi runing time dari


sejumlah n data adalah n2

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.
(f(n)) batasan pd worst-case running time
(f(n)) batasan pd running time dari setiap
input.
Running time -nya (f(n)) (f(n)) sbg Best
case-nya

Analisis Empiris ?

Anda mungkin juga menyukai