Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehMike Athallah Telah diubah "9 tahun yang lalu
1
Pertemuan-3 Laju Pertumbuhan Fungsi : Pengertian, motivasi dan manfaat
Notasi-notasi asimtotik Perbandingan kompleksitas fungsi
2
Laju pertumbuhan fungsi :
Menggambarkan perilaku fungsi pada nilai variabel bebas yang sangat besar
3
Motivasi Andaikan perlu dirancang suatu website untuk memproses data (mis, data keuangan). Bila program database A memerlukan fA(n)=30n+8 mikrodetik utk memproses sembarang n records, sementara program B perlu fB(n)=n2+1 mikrodetik utk memproses n records. Program mana yang akan kita pilih, dengan pertimbangan jutaan user yang akan mengakses website ini?
4
Motivasi (lanjutan) Pada grafik terlihat, semakin ke kanan, fungsi yang tumbuh lebih cepat pada akhirnya selalu menjadi yang terbesar fA(n)=30n+8 fB(n)=n2+1
5
Manfaat Dapat digunakan untuk membandingkan efisiensi dari beberapa algoritme, dengan cara mengamati pertumbuhan fungsi yang menggambarkan perilaku masing-masing algoritme tersebut untuk ukuran input yang sangat besar -> asymptotic analysis
6
Notasi Asimtotik Terdapat 5 simbol masing-masing untuk
kelas yang berbeda : O (Big Oh) Ω (Big OMEGA) Θ (Big THETA) o (Little Oh) ω (Little OMEGA)
7
Penemu-penemu simbol
8
O (Big Oh) Contoh berikut memberikan gambaran lebih jelas bagaimana pertumbuhan suatu fungsi lebih cepat dibandingkan pertumbuhan fungsi lainnya. Contoh ini selanjutnya digunakan untuk mengenalkan konsep big-Oh dan konsep-konsep notasi asimtotik lainnya.
9
f(n) = 100 n2, g(n) = n4, n f(n) g(n) 10 10,000 50 250,000 6,250,000
Dari tabel dan gambar terlihat bahwa g(n) tumbuh lebih cepat dibanding f(n) ketika n > 10. Dhi, dikatakan f adalah big-Oh dari g dan dituliskan f Є O(g) f(n) = 100 n2, g(n) = n4, n f(n) g(n) 10 10,000 50 250,000 6,250,000 100 1,000,000 100,000,000 150 2,250,000 506,250,000
10
f(n) = 100 n2, g(n) = n4, Dalam hal ini, dapat dikatakan bahwa fungsi g mendominasi fungsi f, atau fungsi f didominasi fungsi g f memunyai orde paling banyak g, dan ditulis f Є O(g) O(g) dibaca orde g
11
Definisi (big-oh): Andaikan f and g adalah fungsi-fungsi yang memetakan himpunan bilangan bulat ke himpunan bilangan nyata, maka: f (x) adalah O (g (x) ) , (dibaca : f (x) adalah big-oh dari g (x) ), jika hanya jika terdapat konstanta C dan n0 sedemikian sehingga: | f (x) |≤ C | g (x) | ketika x > n0
12
Cormen:
13
Ternyata f(n) ≤ g(n) untuk n ≥ 10
f(n) = 100 n2, g(n) = n4, n f(n) g(n) 10 10,000 50 250,000 6,250,000 100 1,000,000 100,000,000 150 2,250,000 506,250,000 Ternyata f(n) ≤ g(n) untuk n ≥ 10 Ambil c = 1 dan n0 = 10, sedemikian sehingga |f(n)| ≤ c |g(n)| untuk n ≥ n0 Jadi, f Є O(g)
14
f(n) = 100 n2, g(n) = n4, Tunjukkan bahwa g ≠ O(f) Gunakan metode kontradiksi. Andaikan g = O(f), berarti |g(n)| ≤ c |f(n)| untuk n ≥ n0 Sehingga n4 ≤ c n2 jjk n2 ≤ c (kontradiksi) Jadi yang benar, f Є O(g)
15
Contoh: Tunjukkan bahwa 30n+8 adalah O(n). Tunjukkan c, n0 : n > n0 sehingga 30n+8 cn. Ambil c = 31, n0 =8. Asumsikan n > n0 =8, maka cn = 31n = 30n + n > 30n+8, sehingga 30n+8 < cn. n adalah O(30n+8).
16
Interpretasi Big-O secara grafis
30n+8 tidak lebih kecil dr sembarang n (n>0). Tidak juga lebih kecil dr 31n di semua n. Tetapi lebih kecil dari 31n untuk n>8. cn = 31n n>k=8 30n+8 Nilai fungsi 30n+8 O(n) n n menaik →
17
Cara lain: Tunjukkan bahwa 30n+8 adalah O(n). f(n) = 30n+8 ; g(n) = n Jawab: 30n+8 ≤ 30n+8n = 38 n ambil c = 38 dan n0 = sehingga 30n+8 ≤ 38 n untuk n ≥ 1 Dalam hal ini: O(f) = O(g) = O(n)
18
n2 < n2 + 1 untuk n >1, sehingga n2 adalah O(n2+1)
Tunjukkan bahwa n2+1 adalah O(n2). Tunjukkan c, n0 : n >n0 sehingga n2+1 cn2. Ambil c=2, n0 =1. Asumsikan n >1, maka cn 2 = 2n 2 = n 2+n 2 > n 2+1, atau n2+1< cn2. n2 < n2 + 1 untuk n >1, sehingga n2 adalah O(n2+1)
19
Contoh lain: Berapa kompleksitasnya?
f(n) = ∑ i g(n) = ∑ i2 h(n) = ∑ it f(n) Є O(n2) g(n) Є O(n3) h(n) Є O(n t+1)
20
Big-oh, sebagai relasi bersifat transitif: fO(g) gO(h) fO(h)
Sifat-sifat Big-oh: Big-oh, sebagai relasi bersifat transitif: fO(g) gO(h) fO(h) Jika gO(f) dan hO(f), maka g+hO(f) c > 0, O(cf)=O(f+c)=O(fc)=O(f) f1O(g1) f2O(g2) f1 f2 O(g1g2) f1+f2 O(g1+g2) = O(max(g1,g2)) = O(g1) jika g2O(g1)
21
f,g & konstanta a,bR, dengan b0,
af = O(f); (e.g. 3x 2 = O(x 2)) f+ O(f) = O(f); (e.g. x 2+x = O(x 2)) Jika f=(1) (sedikitnya orde 1), maka: |f| 1-b = O(f); (e.g. x 1 = O(x)) (logb |f|) a = O(f). (e.g. log x = O(x)) g=O(fg) (e.g. x = O(x log x)) fg O(g) (e.g. x log x O(x)) a=O(f ) (e.g. 3 = O(x))
22
Definisi (big-omega):
Andaikan f and g adalah fungsi-fungsi yang memetakan himpunan bilangan bulat ke himpunan bilangan nyata, maka: f (x) adalah Ω (g (x) ) , (dibaca : f (x) adalah big-omega dari g (x)), jika hanya jika terdapat konstanta C dan n0 sedemikian sehingga: | f (x) |≥ C | g (x) | ketika x > n0
23
Cormen:
24
; untuk
25
Definisi (big-theta):
Andaikan f and g adalah fungsi-fungsi yang memetakan himpunan bilangan bulat ke himpunan bilangan nyata, maka: f (x) adalah θ (g (x) ), (dibaca : f (x) adalah big-theta dari g (x)), jika hanya jika f (x) adalah Ω (g (x) ) dan f (x) adalah O (g (x) )
26
Cormen:
28
o (Little Oh) o(g) = {f ; c>0 n0 x> n0 : |f(x)| < |cg(x)|}
o(g) O(g) (g) adalah fungsi-fungsi yang mempunyai order yang lebih kecil dari g Contoh: tetapi
29
Kenapa o(f )O(x)(x) ?
Contoh fungsi O(x), tapi bukan o(x) atau (x):
30
(g) = {f ; c>0 n0 x> n0 : |cg(x)| < |f(x)|}
ω (Little OMEGA) (g) = {f ; c>0 n0 x> n0 : |cg(x)| < |f(x)|} (g) (g) (g) adalah fungsi-fungsi yang mempunyai order yang lebih besar dari g tetapi Contoh:
31
Hubungan antar notasi asimtotik
RR O( f ) ( f ) • f o( f ) ( f ) ( f )
32
Definisi-definisi orde pertumbuhan, g:RR
O(g) : {f ; c>0, n0 x>n0 |f(x)| < |cg(x)|} o(g) : {f ; c>0 n0 x>n0 |f(x)| < |cg(x)|} (g) : {f ; gO(f)} (g) : {f ; go(f)} (g) : O(g) (g)
33
Analogi pada relasi asimtotik
34
Cara lain utk menentukan ordo fungsi:
35
Contoh: = 0 ( 4x3 + 3x2 + 5 ) = o (x4 - 3x3 - 5x - 4 )
(x4 - 3x3 - 5x - 4 ) = ω ( 4x3 + 3x2 + 5 ) (4x3 + 3x2 + 5 )
36
f(x) = Θ (g(x)) f(x) = O (g(x))
37
Teorema Stirling
38
Algoritme Sequential Search
[1] indeks := 1; [2] while indeks ≤ n and L[indeks] ≠ x do [3] indeks := indeks + 1 [4] end {while} [5] if indeks > n then indeks :=0 Berapa kompleksitasnya?
39
Berapa kompleksitasnya?
Algoritme Insertion_Sort(A) for j := 2 to length[A] do key := A[j] {memasukkan A[j] ke dalam array A[1…j-1] yang sudah diurutkan} i := j-1 while i > 0 dan A[i] > key do A[i+1] := A[i] i := i-1 A[i+1] := key Berapa kompleksitasnya?
40
Berapa kompleksitasnya?
Algoritme penggandaan matriks A dan B [1] for i := 1 to n do [2] for j := 1 to n do [3] cij := 0; [4] for k := 1 to n do cij := cij + aik bkj end [5] end [6] end Berapa kompleksitasnya?
41
Urutkan berdasar kompleksitasnya
log n √n 2n n log n nn n! n3 n2 log n
42
Perbandingan kompleksitas algoritme
44
selesai
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.