Pertemuan3 Laju Pertumbuhan Fungsi Pengertian motivasi dan manfaat
Pertemuan-3 Laju Pertumbuhan Fungsi : • Pengertian, motivasi dan manfaat • Notasi-notasi asimtotik • Perbandingan kompleksitas fungsi 1
Laju pertumbuhan fungsi : • Menggambarkan perilaku fungsi pada nilai variabel bebas yang sangat besar 2
Motivasi • Andaikan perlu dirancang suatu website untuk memproses data (mis, data keuangan). • Bila program database A memerlukan f. A(n)=30 n+8 mikrodetik utk memproses sembarang n records, sementara program B perlu f. B(n)=n 2+1 mikrodetik utk memproses n records. • Program mana yang akan kita pilih, dengan pertimbangan jutaan user yang akan mengakses website ini? 3
Motivasi (lanjutan) Pada grafik terlihat, semakin ke kanan, fungsi yang tumbuh lebih cepat pada akhirnya selalu menjadi yang terbesar f. A(n)=30 n+8 f. B(n)=n 2+1 4
Manfaat • Dapat digunakan untuk membandingkan efisiensi dari beberapa algoritme, dengan cara mengamati pertumbuhan fungsi yang menggambarkan perilaku masing algoritme tersebut untuk ukuran input yang sangat besar -> asymptotic analysis 5
Notasi Asimtotik Terdapat 5 simbol masing-masing untuk kelas yang berbeda : • O (Big Oh) • Ω (Big OMEGA) • Θ (Big THETA) • o (Little Oh) • ω (Little OMEGA) 6
Penemu-penemu simbol 7
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. 8
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) n 10 50 100 150 f(n) = 100 n 2, g(n) = n 4, f(n) g(n) 10, 000 250, 000 6, 250, 000 1, 000 100, 000 2, 250, 000 506, 250, 000 9
f(n) = 100 n 2, g(n) = n 4, • 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 10
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 n 0 sedemikian sehingga: | f (x) |≤ C | g (x) | ketika x > n 0 11
Cormen: 12
f(n) = 100 n 2, g(n) = n 4, n f(n) g(n) 10 10, 000 50 250, 000 6, 250, 000 1, 000 100, 000 150 2, 250, 000 506, 250, 000 Ternyata f(n) ≤ g(n) untuk n ≥ 10 Ambil c = 1 dan n 0 = 10, sedemikian sehingga |f(n)| ≤ c |g(n)| untuk n ≥ n 0 Jadi, f Є O(g) 13
f(n) = 100 n 2, g(n) = n 4, Tunjukkan bahwa g ≠ O(f) Gunakan metode kontradiksi. Andaikan g = O(f), berarti |g(n)| ≤ c |f(n)| untuk n ≥ n 0 Sehingga n 4 ≤ c n 2 jjk n 2 ≤ c (kontradiksi) Jadi yang benar, f Є O(g) 14
Contoh: • Tunjukkan bahwa 30 n+8 adalah O(n). – Tunjukkan c, n 0 : n > n 0 sehingga 30 n+8 cn. • Ambil c = 31, n 0 =8. Asumsikan n > n 0 =8, maka cn = 31 n = 30 n + n > 30 n+8, sehingga 30 n+8 < cn. – n adalah O(30 n+8). 15
• 30 n+8 tidak lebih kecil dr sembarang n (n>0). • Tidak juga lebih kecil dr 31 n di semua n. • Tetapi lebih kecil dari 31 n untuk n>8. Nilai fungsi Interpretasi Big-O secara grafis cn = 31 n 30 n+8 O(n) n>k=8 n menaik → 16
Cara lain: • Tunjukkan bahwa 30 n+8 adalah O(n). f(n) = 30 n+8 ; g(n) = n Jawab: 30 n+8 ≤ 30 n+8 n = 38 n ambil c = 38 dan n 0 = 1 sehingga 30 n+8 ≤ 38 n untuk n ≥ 1 • Dalam hal ini: O(f) = O(g) = O(n) 17
• Tunjukkan bahwa n 2+1 adalah O(n 2). – Tunjukkan c, n 0 : n >n 0 sehingga n 2+1 cn 2. • Ambil c=2, n 0 =1. Asumsikan n >1, maka cn 2 = 2 n 2 = n 2+n 2 > n 2+1, atau n 2+1< cn 2. – n 2 < n 2 + 1 untuk n >1, sehingga n 2 adalah O(n 2+1) 18
Contoh lain: Berapa kompleksitasnya? • f(n) = ∑ i • f(n) Є O(n 2) • g(n) = ∑ i 2 • g(n) Є O(n 3) • h(n) = ∑ • h(n) Є O(n it t+1) 19
Sifat-sifat Big-oh: • Big-oh, sebagai relasi bersifat transitif: f O(g) g O(h) f O(h) • Jika g O(f) dan h O(f), maka g+h O(f) • c > 0, O(cf)=O(f+c)=O(f) • f 1 O(g 1) f 2 O(g 2) – f 1 f 2 O(g 1 g 2) – f 1+f 2 O(g 1+g 2) = O(max(g 1, g 2)) = O(g 1) jika g 2 O(g 1) 20
• f, g & konstanta a, b R, dengan b 0, – af = O(f); – f+ O(f) = O(f); (e. g. 3 x 2 = O(x 2)) (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)) 21
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 n 0 sedemikian sehingga: | f (x) |≥ C | g (x) | ketika x > n 0 22
Cormen: 23
untuk ; 24
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) ) 25
Cormen: 26
27
o (Little Oh) o(g) = {f ; c>0 n 0 x> n 0 : |f(x)| < |cg(x)|} o(g) O(g) adalah fungsi-fungsi yang mempunyai order yang lebih kecil dari g Contoh: tetapi 28
Kenapa o(f ) O(x) ? • Contoh fungsi O(x), tapi bukan o(x) atau (x): 29
ω (Little OMEGA) (g) = {f ; c>0 n 0 x> n 0 : |cg(x)| < |f(x)|} (g) adalah fungsi-fungsi yang mempunyai order yang lebih besar dari g Contoh: tetapi 30
Hubungan antar notasi asimtotik O( f ) R R ( f ) • f o( f ) 31
Definisi-definisi orde pertumbuhan, g: R R • O(g) : {f ; c>0, n 0 x>n 0 |f(x)| < |cg(x)|} • o(g) : {f ; c>0 n 0 x>n 0 |f(x)| < |cg(x)|} • (g) : {f ; g O(f)} • (g) : {f ; g o(f)} • (g) : O(g) 32
Analogi pada relasi asimtotik 33
Cara lain utk menentukan ordo fungsi: 34
Contoh: =0 ( 4 x 3 + 3 x 2 + 5 ) = o (x 4 - 3 x 3 - 5 x - 4 ) = ω ( 4 x 3 + 3 x 2 + 5 ) (4 x 3 + 3 x 2 + 5 ) 35
Teorema Stirling 37
Algoritme Sequential Search [1] [2] do [3] [4] [5] indeks : = 1; while indeks ≤ n and L[indeks] ≠ x indeks : = indeks + 1 end {while} if indeks > n then indeks : =0 Berapa kompleksitasnya? 38
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? 39
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? 40
Urutkan berdasar kompleksitasnya • • log n √n 2 n n log n nn n! n 3 n 2 log n 41
Perbandingan kompleksitas algoritme 42
43
44
- Slides: 44