Pada akhirperkuliahanandamampu
◦ Menjelaskanlangkah-langkahmenyelesaikanmasalah
◦ Mendiskripsikanbagaimanamenganalisasuatualgoritma
◦ Menjelaskanbagaimanamemilihoperasi yang dihitungdanmengapa
yang lain tidak
◦ Menjelaskanbagaimanamelakukananalisa best-case, worst-case,
dan average-case
◦ Bekerjadenganlogaritma, probabilitas, danpenjumlahan
◦ Mendeskripsikan 𝑓 , 𝑓 , 𝑑𝑎𝑛 𝑂 𝑓 , 𝑙𝑎𝑗𝑢 𝑝𝑒𝑟𝑡𝑢𝑚𝑏𝑢ℎ𝑎𝑛,
𝑜𝑟𝑑𝑒𝑟 𝑠𝑢𝑎𝑡𝑢 𝑎𝑙𝑔𝑜𝑟𝑖𝑡𝑚𝑎
◦ Menggunakanpohonkeputusanuntukmenentukanbatasbawah
(lower bound) danbatasatas (upper bound) running time
darisuatualgoritma
Input:
barisan bilangan x , x , x ,..., x
1 2 3 n
Output:
sebuah bilangan yang terbesar diantara bilangan {x , x , x ,..., x }
1 2 3 n
Misalkan: Input : { 2, 4, 7, 1}
Output :7
2. Mengurutkan (sorting) barisan x , x , x ,...,,x
1 2 3 n
maka
Output: barisan bilangan terurut {y , y , y ,..., y }
1 2 3 n
Misalkan:
input : { 2, 4, 7, 1}
output : { 1, 2, 4, 7}
Output 2 1
4
1
Hardware
Input Software
Output
11
13
Menyelesaikan mencari bilangan terbesar dari Pada baris ke-5 dan ke-6, secara
sebarisan bilangan x1, x2, x3, …., xn dengan cara rekursif input dari problem dibagi
membagi barisan menjadi dua subbarisan secara menjadi dua dan algoritma MAX2
rekursif. dikerjakan pada masing-masing
subproblem.
Setelah ditemukan harga maksimum
Algoritma MAX2 dari masing-masing subproblem,
MAX2(x1, x2, x3, …, xn, max) bandingkan keduanya dan yang
lebih besar ditempatkan pada max
1. If n=1 then
(baris ke-7 dan ke-8)
2. max x1
Bilangan max inilah yang menjadi
3. return solusi dari problem.
4. Else
Correctness algoritma MAX2 dapat
5. MAX2(x1, x2, …Xn/2, a) dibuktikan dengan induksi
6. MAX2(Xn/2+1, Xn/2 + 2, …, Xn-n/2, b) matematika (exercise mandiri)
7. If a > b then max a Running timenya (n-1)
8. else max b
9. return
( algoritma rekursif)
15
Contoh:
Mencari bilangan terbesar diantara barisan
bilangan 1, 3, 4, 2
Bagi menjadi dua subproblem
1
a=3
3
max = 4
4
b=4
2
17
n-(n-1) = 1 kali
1 1 1 4 4 4 4 4 4 4 4 4
3 3 4 1 1 3 3 3 3 3 3 3
2 4 3 3 3 1 1 2 2 2 2 2
4 2 2 2 2 2 2 1 1 1 1 1
19
1
3
3
3 4
1 4
1 4
2 1
2 2
4 3
4 3
4 3
2 2
2
1
n=4 1
x1 max(x1, x2) max(x1, x2, x3, x4 )
Bubble Sort
n 4 8 16 … n
#perband. 6 28 120 … (n-1)+(n-2)+ …+ 3+2+1=
n(n-1)/2 = O(n2)
Bose-Nelson Sort
n 4 8 16 … n
#perband. 5 19 65 … O(n1.57)
21
Insertion_Sort (A)
1. For j 2 to length[A]
2. Do key A[j]
3. // sisipkan A[j] ke dalam barisan A[1…(j-1)]
4. i j-1
5. while i > 0 dan A[i] >key
6. do A[i+1] A[i]
7. i i-1
8. A[i+1] key
Langkah dalam Insertion Sort seperti pada permainan kartu
bridge.
Pada Insertion Sort bilangan-bilangan diurutkan secara “in place”
◦ Misal ke-n bilangan input diletakkan di array A, maka bilangan-bilangan
tersebut diurutkan di dalam array sendiri, dengan maksimal sebanyak
konstan buah bilangan darinya diletakkan diluar array A di setiap waktu.
Pada Insertion sort selesai dikerjakan, array A akan berisi barisan
output yang telah terurut.
Contoh:
Pada pengurutan A = <5, 2, 4, 6, 1, 3>
dengan algoritma Insertion Sort dapat
digambarkan sebagai berikut:
5 2 4 6 1 3
4 6 1 3 1 2 4 5 6 3
2 5
2 4 5 6 1 3
1 2 3 4 5 6
2 4 5 6 1 3
23
25
27
28
Boko Susilo 14
28
9/13/2022
10-4 x 2n
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
29
29
30
Boko Susilo 15
30
9/13/2022
31
31
Operasi (tugas) apa saja yang dilakukan oleh algoritma rerata di atas..?
(i) Operasi pengisian nilai ,
(ii) Operasi penjumlahan
(iii) Operasi pembagian
32
Boko Susilo 16
32
9/13/2022
33
33
34
Boko Susilo 17
34
9/13/2022
35
35
36
Boko Susilo 18
36
9/13/2022
37
37
38
Boko Susilo 19
38
9/13/2022
procedure PencarianBeruntun(input a1, a2, ..., an : integer, x: integer, output idx : integer)
Deklarasi
k : integer
ketemu : boolean {bernilai true jika x ditemukan atau false jika x tidak ditemukan }
Algoritma:
k1
ketemu false
while (k n) and (not ketemu) do
if ak = x then
ketemutrue
else
kk+1
endif
endwhile
{ k > n or ketemu }
if ketemu then { x ditemukan }
idx k
else
idx 0 { x tidak ditemukan }
endif
39
39
Tavg(n) =
40
Boko Susilo 20
40
9/13/2022
Cara lain:
asumsikan bahwa P (aj = x) = 1/n. Jika aj = x maka Tj yang
dibutuhkan adalah Tj = j. Jumlah perbandingan elemen larik
rata-rata:
n n 1 1 n
Tavg(n) = T P ( A[ j ] X ) T
j j
Tj
j 1 j 1 n n j 1
1 n 1 n ( n 1) n 1
= j = ( )
n j1 n 2 2
41
41
if ketemu then
idxmid
else
idx0
endif
42
Boko Susilo 21
42
9/13/2022
43
43
44
Boko Susilo 22
44
9/13/2022
45
45
Tinjau T(n) = 2n 2 + 6n + 1
Perbandingan pertumbuhan T(n) dengan n 2
n T(n) = 2n2 + 6n + 1 n2
10 261 100
100 2061 1000
1000 2.006.001 1.000.000
10.000 1.000.060.001 1.000.000.000
• Untuk n yang besar, pertumbuhan T(n) sebanding dengan n2. Pada kasus
ini, T(n) tumbuh seperti n2 tumbuh.
• T(n) tumbuh seperti n2, tumbuh saat n bertambah. Kita katakan bahwa
T(n) berorde n2 dan kita tuliskan T(n) = O(n2)
• Notasi “O” disebut notasi “O-Besar” (Big-O) yang merupakan notasi
kompleksitas waktu asimptotik.
46
Boko Susilo 23
46
9/13/2022
DEFINISI. T(n) = O(f(n)) (dibaca “T(n) adalah O(f(n)” yang artinya T(n) berorde
paling besar f(n) ) bila terdapat konstanta c dan n0 sedemikian sehingga T(n)
c (f (n)) untuk n n0.
f(n) adalah batas atas (upper bound) dari T(n) untuk n yang besar
47
47
TEOREMA.
Bila T(n) = am nm + am-1 nm-1 + ... + a1n + a0 adalah polinom
derajat m maka T(n) = O(nm ).
TEOREMA.
Misalkan T1(n) = O(f(n)) dan T2(n) = O(g(n)), maka
(a) T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n), g(n))
(b) T1(n)T2(n) = O(f(n))O(g(n)) = O(f(n)g(n))
(c) O(cf(n)) = O(f(n)), c adalah konstanta
(d) f(n) = O(f(n))
48
Boko Susilo 24
48
9/13/2022
Contoh 9.
Misalkan T1(n) = O(n) dan T2(n) = O(n2), maka
(a) T1(n) + T2(n) = O(max(n, n2)) = O(n2)
(b) T1(n)T2(n) = O(n.n2) = O(n3)
Contoh 10.
O(5n2) = O(n2)
n2 = O(n2)
49
49
50
Boko Susilo 25
50
9/13/2022
51
51
52
Boko Susilo 26
52
9/13/2022
53
53
Boko Susilo 27