1
Pendahuluan
Sebuah algoritma tidak saja harus benar,
tetapi juga harus mangkus (efisien).
Algoritma yang bagus adalah algoritma yang
mangkus.
2
Algoritma yang mangkus ialah algoritma yang
meminimumkan kebutuhan waktu dan ruang.
3
Mengapa kita memerlukan algoritma yang
mangkus? Lihat grafik di bawah ini.
10-4 x 2n
Waktu komputasi (dalam detik)
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
4
Model Perhitungan Kebutuhan
Waktu/Ruang
Kita dapat mengukur waktu yang diperlukan oleh
sebuah algoritma dengan menghitung banyaknya
operasi/instruksi yang dieksekusi.
5
Contoh 1. Menghitung rerata
a1 a 2 a 3 … an
Larik bilangan bulat
Algoritma
jumlah 0
k 1
while k n do
jumlah jumlah + ak
k k+1
endwhile
{ k > n }
r jumlah/n { nilai rata-rata }
6
(i) Operasi pengisian nilai (jumlah 0, k 1,
jumlah jumlah+ak, k k+1, dan r jumlah/n)
Jumlah seluruh operasi pengisian nilai adalah
t1 = 1 + 1 + n + n + 1 = 3 + 2n
7
Model perhitungan kebutuhan waktu seperti
di atas kurang berguna, karena:
1. Dalam praktek kita tidak mempunyai
informasi berapa waktu sesungguhnya
untuk melaksanakan suatu operasi
tertentu
9
Kompleksitas waktu, T(n), diukur dari jumlah tahapan
komputasi yang dibutuhkan untuk menjalankan
algoritma sebagai fungsi dari ukuran masukan n.
10
Kompleksitas Waktu
Dalam praktek, kompleksitas waktu dihitung
berdasarkan jumlah operasi abstrak yang mendasari
suatu algoritma, dan memisahkan analisisnya dari
implementasi.
11
Contoh 3. Algoritma untuk mencari elemen terbesar di dalam
sebuah larik (array) yang berukuran n elemen.
Algoritma
maks a1
k 2
while k n do
if ak > maks then
maks ak
endif
i i+1
endwhile
{ k > n }
13
Contoh 4. Algoritma sequential search.
Algoritma:
k 1
ketemu false
while (k n) and (not ketemu) do
if ak = x then
ketemu true
else
k k + 1
endif
endwhile
{ k > n or ketemu }
14
J u m la h o p e ra s i p e rb a n d in g a n e le m e n ta b e l:
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
15
Cara lain: asumsikan bahwa P(a j = x) = 1/n. Jika a j = x maka T j
yang dibutuhkan adalah T j = j. Jumlah perbandingan elemen larik
rata-rata:
n n 1 1 n
T avg(n) = T j P ( A[ j ] X ) T j T j
j 1 j 1 n n j 1
1 n 1 n ( n 1) n 1
= j= ( )
n j 1 n 2 2
16
Contoh 5. Algoritma pencarian biner (bynary search).
Algoritma
i 1
j n
ketemu false
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 }
i mid + 1
else { cari di belahan kiri }
j mid - 1;
endif
endif
endwhile
{ketemu or i > j }
if ketemu then
idx mid
else
idx 0
endif
17
1. Kasus terbaik
Tmin(n) = 1
2. Kasus terburuk:
Tmax (n) = 2log n
18
Contoh 6. Algoritma algoritma pengurutan seleksi (selection sort).
Algoritma
for i n downto 2 do { pass sebanyak n – 1 kali }
imaks 1
for j 2 to i do
if aj > aimaks then
imaks j
endif
endfor
{ pertukarkan aimaks dengan ai }
temp ai
ai aimaks
aimaks temp
endfor
19
(i) J u m la h o p e ra s i p e rb a n d in g a n e le m e n
U n tu k s e tia p p a s s k e -i,
i = n ju m la h p e rb a n d in g a n = n – 1
i = n – 1 ju m la h p e rb a n d in g a n = n – 2
i = n – 2 ju m la h p e rb a n d in g a n = n – 3
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
i 1 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 .
20