Anda di halaman 1dari 44

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
f
A
(n)=30n+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?
4
Motivasi (lanjutan)
f
A
(n)=30n+8
f
B
(n)=n
2
+1
Pada grafik
terlihat,
semakin ke
kanan, fungsi
yang tumbuh
lebih cepat pada
akhirnya selalu
menjadi yang
terbesar
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
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
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 n
2
,
g(n) = n
4
,
10
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
f(n) = 100 n
2
,
g(n) = n
4
,
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 n
0

sedemikian sehingga:
| f (x) | C | g (x) | ketika x > n
0

12
Cormen:
13
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
f(n) = 100 n
2
,
g(n) = n
4
,
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)
14
f(n) = 100 n
2
,
g(n) = n
4
,
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)
Tunjukkan bahwa g O(f)
15
Tunjukkan bahwa 30n+8 adalah O(n).
Tunjukkan - c, n
0
: n > n
0

sehingga 30n+8 s cn.
Ambil c = 31, n
0
=8.
Asumsikan n > n
0
=8,
maka cn = 31n =
30n + n > 30n+8, sehingga
30n+8 < cn.
n adalah O(30n+8).
Contoh:
16
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.
n>k=8
Interpretasi Big-O secara grafis
n menaik
N
i
l
a
i

f
u
n
g
s
i


n
30n+8
cn =
31n
30n+8
eO(n)
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 n
0
= 1
sehingga 30n+8 38 n
untuk n 1
Dalam hal ini: O(f) = O(g) = O(n)
18

Tunjukkan bahwa n
2
+1 adalah O(n
2
).
Tunjukkan -c, n
0
: n >n
0

sehingga n
2
+1 s cn
2
.
Ambil c=2, n
0
=1.
Asumsikan n >1, maka
cn
2
= 2n
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)

19
Contoh lain: Berapa kompleksitasnya?
f(n) = i

g(n) = i
2

h(n) = i
t

f(n) O(n
2
)

g(n) O(n
3
)

h(n) O(n
t+1
)

20
Sifat-sifat Big-oh:
Big-oh, sebagai relasi bersifat transitif:
feO(g) . geO(h) feO(h)
Jika geO(f) dan heO(f), maka
g+heO(f)
c > 0, O(cf)=O(f+c)=O(fc)=O(f)
f
1
eO(g
1
) . f
2
eO(g
2
)
f
1
f
2
eO(g
1
g
2
)
f
1
+f
2
eO(g
1
+g
2
)
= O(max(g
1
,g
2
))
= O(g
1
) jika g
2
eO(g
1
)
21
f,g & konstanta a,beR, dengan b>0,
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=O(1) (sedikitnya orde 1), maka:
|f|
1-b
= O(f); (e.g. x
1
= O(x))
(log
b
|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
n
0
sedemikian sehingga:

| f (x) | C | g (x) | ketika x > n
0

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:
27
28
tetapi
Contoh:
o (Little Oh)
o(g) = {f ; c>0 -n
0
x> n
0
: |f(x)| < |cg(x)|}
o(g) c O(g) O(g)
adalah fungsi-fungsi yang mempunyai order yang
lebih kecil dari g
29
Kenapa o(f )cO(x)O(x) ?
Contoh fungsi O(x), tapi bukan o(x)
atau O(x):
30
Contoh:
tetapi
(Little OMEGA)
e(g) = {f ; c>0 -n
0
x> n
0
: |cg(x)| < |f(x)|}
e(g) c O(g) O(g)
adalah fungsi-fungsi yang mempunyai order yang
lebih besar dari g
31
Hubungan antar notasi asimtotik
RR
O( f ) O( f )
O( f ) e( f ) o( f )
f
32
Definisi-definisi orde pertumbuhan, g:RR
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)|}
O(g) : {f ; geO(f)}
e(g) : {f ; geo(f)}
O(g) : O(g) O(g)
33
Analogi pada relasi asimtotik
34
Cara lain utk menentukan ordo fungsi:
35
Contoh:
= 0
( 4x
3
+ 3x
2
+ 5 ) = o (x
4
- 3x
3
- 5x - 4 )
(4x
3
+ 3x
2
+ 5 ) (x
4
- 3x
3
- 5x - 4 ) = ( 4x
3
+ 3x
2
+ 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
Algoritme Insertion_Sort(A)

for j := 2 to length[A] do
key := A[j]
{memasukkan A[j] ke dalam array A[1j-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
Algoritme penggandaan matriks A dan B

[1] for i := 1 to n do
[2] for j := 1 to n do
[3] c
ij
:= 0;
[4] for k := 1 to n do
c
ij
:= c
ij
+ a
ik
b
kj
end
[5] end
[6] end
Berapa kompleksitasnya?
41
Urutkan berdasar kompleksitasnya
log n
n
2
n
n log n
n
n
n!
n
3
n
2
log n

42
Perbandingan kompleksitas algoritme
43
44