Bahan Kuliah
IF2091 Struktur Disktit
104
1 jam
103 10-4 x n3
102
1 menit
10 10-6 x n3
1 detik
1
5 10 15 20 25 30 35 40
10-1 Ukuran masukan
Alasan:
1. Setiap komputer dengan arsitektur berbeda mempunyai
bahasa mesin yang berbeda waktu setiap operasi
antara satu komputer dengan komputer lain tidak sama.
Algoritma pengurutan
Operasi khas: perbandingan elemen, pertukaran
elemen
sum 0
for i 1 to n do
sum sum + a[i]
endfor
rata_rata sum/n
Algoritma
maksa1
k2
while k n do
if ak > maks then
maksak
endif
ii+1
endwhile
{ k > n }
Algoritma:
k1
ketemu false
while (k n) and (not ketemu) do
if ak = x then
ketemutrue
else
k k + 1
endif
endwhile
{ k > n or ketemu }
1 . K a s u s te r b a ik : in i te rja d i b ila a 1 = x .
T m in (n ) = 1
T m ax (n ) = n
3 . K a s u s r a ta -r a ta : J ik a x d ite m u k a n p a d a p o s is i k e -j, m a k a o p e ra s i
p e rb a n d in g a n (a k = x ) a k a n d ie k s e k u s i s e b a n y a k j k a li.
1
n (1 n )
( 1 2 3 ... n ) 2 (n 1)
T avg(n ) =
n n 2
Algoritma
i1
jn
ketemufalse
while (not ketemu) and ( i j) do
mid (i+j) div 2
if amid = x then
ketemu true
else
if amid < x then { cari di belahan kanan }
imid + 1
else { cari di belahan kiri }
jmid - 1;
endif
endif
endwhile
{ketemu or i > j }
if ketemu then
idxmid
else
idx0
endif
2. Kasus terburuk:
Tmax (n) = 2log n
Algoritma
for in downto 2 do { pass sebanyak n – 1 kali }
imaks1
for j2 to i do
if aj > aimaks then
imaksj
endif
endfor
{ pertukarkan aimaks dengan ai }
tempai
aiaimaks
aimakstemp
endfor
i = 2 ju m la h p e rb a n d in g a n = 1
J u m la h s e lu ru h o p e ra s i p e rb a n d in g a n e le m e n -e le m e n la rik a d a la h
n1
n (n 1)
T (n ) = (n – 1 ) + (n – 2 ) + … + 1 = n k
i1 2
In i a d a la h k o m p le k s ita s w a k tu u n tu k k a s u s te rb a ik d a n te rb u ru k ,
k a re n a a lg o ritm a U r u t tid a k b e rg a n tu n g p a d a b a ta s a n a p a k a h d a ta
m a s u k a n n y a s u d a h te ru ru t a ta u a c a k .
T(n) = n – 1.
Algoritma
j n
while j 1 do
for i 1 to j do
x x * i
endfor
j d div 2
endwhile
{ j > 1 }
jumlahx
n T(n) = 2n2 + 6n + 1 n2
10 261 100
100 2061 1000
1000 2.006.001 1.000.000
10.000 2.000.060.001 1.000.000.000
T(n) = O(n2)
Rinaldi M/IF2091 Strukdis 24
Notasi “O” disebut notasi “O-Besar” (Big-O) yang merupakan
notasi kompleksitas waktu asimptotik.
untuk n n0.
f(n) adalah batas lebih atas (upper bound) dari T(n) untuk n yang
besar.
T (n )
n 0
n
atau karena
Penyelesaian:
5 = O(1) karena 5 6.1 untuk n 1.
(C = 6 dan n0 = 1)
Kita juga dapat memperlihatkan bahwa
5 = O(1) karena 5 10 1 untuk n 1
Penyelesaian:
n(n – 1)/2 =O (n2) karena
n(n – 1)/2 n2/2 + n2/2 = n2
untuk semua n 1 (C = 1 dan n0 = 1).
Penyelesaian:
6*2n + 2n2 = O(2n) karena
6*2n + 2n2 6*2n + 2*2n = 8*2n
untuk semua n 1 (C = 8 dan n0 = 1).
Penyelesaian:
1 + 2 + .. + n n + n + … + n = n2 untuk n 1
Penyelesaian:
n! = 1 . 2 . … . n n . n . … . n =nn untuk n 1
Contoh:
T(n) = 5 = 5n0 = O(n0) = O(1)
T(n) = n(n – 1)/2 = n2/2 – n/2 = O(n2)
T(n) = 3n3 + 2n2 + 10 = O(n3)
Penyelesaian:
5n2 = O(n3) karena 5n2 n3 untuk semua n 5.
K e lo m p o k A lg o r i t m a N am a
O (1 ) k o n sta n
O ( lo g n ) lo g a r i t m i k
O (n ) la n j a r
O ( n lo g n ) n lo g n
O (n 2) k u a d ra tik
O (n 3) k u b ik
O (2 n) e k sp o n e n sia l
O ( n !) fa k to ria l
U r u t a n s p e k t r u m k o m p le k s i t a s w a k t u a lg o r i t m a a d a la h :
a lg o r i t m a p o li n o m i a l a lg o r i t m a e k s p o n e n s i a l
Rinaldi M/IF2091 Strukdis 38
Penjelasan masing-masing kelompok algoritma adalah sebagai
berikut:
log n n n log n n2 n3 2n n!
0 1 0 1 1 2 1
1 2 2 4 8 4 2
2 4 8 16 64 16 24
3 8 24 64 512 256 362880
4 16 64 256 4096 65536 20922789888000
5 32 160 1024 32768 4294967296 (terlalu besar )
Definisi -Besar,
2n2 + 6n + 1 = (n2)
Karena 5n3 + 6n2 log n = O(n3) dan 5n3 + 6n2 log n = (n3), maka
5n3 + 6n2 log n = (n3)
1 + 2 + … + n = (n) karena
1 + 2 + … + n 1 + 1 + … + 1 = n untuk n 1.
1 + 2 + … + n n/2 + … + (n – 1) + n
n/2 + … + n/2 + n/2
= (n + 1)/2 n/2
(n/2)(n/2)
= n2/4
1 + 2 + … + n = (n2)
1 + 2 + … + n = (n2)
Rinaldi M/IF2091 Strukdis 52
Latihan
Tentukan kompleksitas waktu dari algoritma
dibawah ini jika melihat banyaknya operasi a ←a+1
for i ← 1 to n do
for j ← 1 to i do
for k ← j to n do
a ← a + 1
endfor
endfor
endfor
Deklarasi
i, j : integer
Algoritma:
for i 1 to n do
for j 1 to n do
if Ai,j Bi,j then
return false
endif
endfor
endfor
return true