450 likes | 718 Vues
Pertemuan-3. Laju Pertumbuhan Fungsi : Pengertian, motivasi dan manfaat Notasi-notasi asimtotik Perbandingan kompleksitas fungsi. Laju pertumbuhan fungsi :. Menggambarkan perilaku fungsi pada nilai variabel bebas yang sangat besar. Motivasi.
E N D
Pertemuan-3 Laju Pertumbuhan Fungsi : Pengertian, motivasi dan manfaat Notasi-notasi asimtotik Perbandingan kompleksitas fungsi
Laju pertumbuhan fungsi : • Menggambarkan perilaku fungsi pada nilai variabel bebas yang sangat besar
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 nrecords, sementara program B perlu fB(n)=n2+1 mikrodetik utk memproses nrecords. • Program mana yang akan kita pilih, dengan pertimbangan jutaan user yang akan mengakses website ini?
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
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
Notasi Asimtotik Terdapat 5 simbol masing-masing untuk kelas yang berbeda : • O (Big Oh) • Ω(BigOMEGA) • Θ (BigTHETA) • o (Little Oh) • ω(LittleOMEGA)
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.
Dari tabel dan gambar terlihat bahwa g(n) tumbuh lebih cepat dibanding f(n) ketikan > 10. Dhi, dikatakan f adalah big-Oh dari g dan dituliskan f Є O(g) f(n) = 100 n2, g(n) = n4,
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
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
f(n) = 100 n2, g(n) = n4, Ternyata f(n) ≤ g(n) untuk n ≥ 10 Ambil c = 1 dan n0 = 10, sedemikiansehingga |f(n)| ≤ c |g(n)| untuk n ≥ n0 Jadi, f Є O(g)
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)
Contoh: • Tunjukkan bahwa 30n+8 adalah O(n). • Tunjukkan c, n0: n > n0sehingga30n+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).
cn =31n n>k=8 Interpretasi Big-O secara grafis • 30n+8 tidak lebih kecil dr sembarang n(n>0). • Tidak jugalebih kecil dr 31ndi semua n. • Tetapi lebih kecil dari 31nuntuk n>8. 30n+8 Nilai fungsi 30n+8O(n) n n menaik→
Cara lain: • Tunjukkan bahwa 30n+8 adalah O(n).f(n) = 30n+8 ; g(n) = nJawab: 30n+8 ≤ 30n+8n = 38 n ambil c = 38 dan n0 = 1 sehingga 30n+8 ≤ 38 n untuk n ≥ 1 • Dalam hal ini: O(f) = O(g) = O(n)
Tunjukkan bahwa n2+1 adalah O(n2). • Tunjukkan c, n0: n >n0sehingga n2+1 cn2. • Ambil c=2, n0=1. Asumsikan n >1, makacn 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)
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)
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)
f,g & konstantaa,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))
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
; untuk
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 jikaf (x) adalah Ω(g (x) ) dan f (x) adalah O (g (x) )
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
Kenapa o(f )O(x)(x) ? • Contoh fungsi O(x), tapi bukan o(x) atau (x):
ω (LittleOMEGA) (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:
Hubungan antar notasi asimtotik RR ( f ) O( f ) • f o( f ) ( f ) ( f )
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)
Contoh: = 0 ( 4x3 + 3x2 + 5 ) = o (x4 - 3x3 - 5x - 4 ) (x4 - 3x3 - 5x - 4 ) = ω( 4x3 + 3x2 + 5 ) (4x3 + 3x2 + 5 )
f(x) = Θ (g(x)) f(x) = O (g(x))
Teorema Stirling
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?
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?
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?
Urutkan berdasar kompleksitasnya • log n • √n • 2n • n log n • nn • n! • n3 • n2 log n