pertemuan3 - WordPress.com

Download Report

Transcript pertemuan3 - WordPress.com

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
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?
3
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
4
Manfaat
• Dapat digunakan untuk membandingkan
efisiensi dari beberapa algoritme, dengan
cara mengamati pertumbuhan fungsi
yang menggambarkan perilaku masingmasing 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 n2,
g(n) = n4,
f(n)
g(n)
10,000
10,000
250,000
6,250,000
1,000,000 100,000,000
2,250,000 506,250,000
9
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
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 n0
sedemikian sehingga:
| f (x) |≤ C | g (x) | ketika x > n0
11
Cormen:
12
f(n) = 100 n2,
g(n) = n4,
n
f(n)
g(n)
10
10,000
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)
13
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)
14
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).
15
• 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.
Nilai fungsi 
Interpretasi Big-O secara grafis
cn =
31n
30n+8
n
30n+8
O(n)
n>k=8 
n menaik →
16
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 = 1
sehingga 30n+8 ≤ 38 n
untuk n ≥ 1
• Dalam hal ini: O(f) = O(g) = O(n)
17
• 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)
18
Contoh lain: Berapa kompleksitasnya?
• f(n) = ∑ i
• f(n) Є O(n2)
• g(n) = ∑ i2
• g(n) Є O(n3)
• h(n) = ∑
it
• h(n) Є O(n
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c)=O(f)
• f1O(g1)  f2O(g2) 
– f1 f2 O(g1g2)
– f1+f2 O(g1+g2)
= O(max(g1,g2))
= O(g1) jika g2O(g1)
20
•  f,g & konstanta a,bR, dengan b0,
– af = O(f);
– f+ O(f) = O(f);
(e.g. 3x 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
n0 sedemikian sehingga:
| f (x) |≥ C | g (x) | ketika x > n0
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 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
28
Kenapa o(f )O(x)(x) ?
• Contoh fungsi O(x), tapi bukan o(x)
atau (x):
29
ω (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
Contoh:
tetapi
30
Hubungan antar notasi asimtotik
RR
O( f )
( f )
•f
o( f )
( f )
( f )
31
Definisi-definisi orde pertumbuhan, g:RR
• 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 ; gO(f)}
• (g) : {f ; go(f)}
• (g) : O(g)  (g)
32
Analogi pada relasi asimtotik
33
Cara lain utk menentukan ordo fungsi:
34
Contoh:
=0
( 4x3 + 3x2 + 5 ) = o (x4 - 3x3 - 5x - 4 )
(x4 - 3x3 - 5x - 4 ) = ω ( 4x3 + 3x2 + 5 )
(4x3 + 3x2 + 5 )
35
f(x) = Θ (g(x))
f(x) = O (g(x))
36
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
2n
n log n
nn
n!
n3
n2 log n
41
Perbandingan kompleksitas algoritme
42
43
44