Resume 3 Dan Tugas
Resume 3 Dan Tugas
A. Definisi
Divide and Conquer adalah teknik desain algoritma umum yang paling terkenal.
Beberapa algoritma yang sangat efisien adalah implementasi spesifik dari strategi
umum ini. Divide and Conquer adalah algoritma yang bekerja sesuai dengan tahap
berikut:
1. Divide : Masalah dibagi menjadi beberapa masalah yang lebih kecil (sub-masalah)
dan berukuran sama.
2. Conquer : Masalah yang lebih kecil diselesaikan (biasanya secara rekursif,
meskipun kadang-kadang algoritma yang berbeda digunakan ketika kasus menjadi
cukup kecil).
3. Combine : Solusi yang diperoleh untuk masalah yang lebih kecil digabungkan
untuk mendapatkan solusi untuk masalah awal (original).
Gambar di bawah ini menggambarkan tahap penyelesaian divide and conquer.
problem
of size n
subproblem 1
of size n/2
subproblem 2
of size n/2
solution to
subproblem 1
solution to
subproblem 2
solution to
the original
problem
Divide : Bagi barisan bilangan yang berjumlah n unsur menjadi dua subbarisan yang masing-masing berjumlah n/2 unsur
Contoh:
Input : Barisan bilangan A(25, 6, 32, 15, 22, 19, 2, 43) berjumlah 8 yang tidak
terurut.
Output : Barisan bilangan terurut A(2, 6, 5, 32, 15, 19, 22, 25, 32, 43).
Langkah penyelesaian masalah di atas adalah sebagai berikut:
25
25
32
32
15
15
22
19
43
22
19
43
Divide
25
32
15
22
19
43
25
32
15
22
19
43
25
15
32
19
22
43
6
6
15
25
15
25
32
32
19
19
22
22
Conquer
43
43
Combine
2
32
15
22
19
43
2|Tugas 03 Algoritma
15
25
32
32
15
25
15
15
25
32
15
25
15
22
32
15
15
19
22
22
32
19
22
19
43
19
22
19
43
19
22
19
43
19
22
43
43
43
43
Combine
15
25
15
25
15
25
15
19
22
32
15
19
22
32
15
19
22
32
15
19
22
19
43
19
22
25
43
19
22
25
32
43
19
22
25
32
43
43
43
43
3|Tugas 03 Algoritma
if p < r
q = [(p + r)/2]
MERGE-SORT (A,p,q)
MERGE-SORT (A,q+1,r)
MERGE (A,p,q,r)
Sentinels
4|Tugas 03 Algoritma
Pada baris 3 kita membuat array L dan R (left dan right), dengan n1
+ 1 dan n2 + 1; posisi tambahan di tiap array yang memiliki sentinel.
Setiap iterasi loop for pada baris 12 17, subarray A[p .. k 1] berisi
elemen terkecil k p dari barisan terurut L[1 .. n1 + 1] dan R[1 .. n2 + 1].
L[i] dan R[j] adalah elemen terkecil dari array mereka yang belum
disalin kembali ke A.
Metode Substitusi,
Metode pohon-rekursi
Metode Master
1. Metode Substitusi
a. Ide penyelesaiannya :
b. Dapat digunakan untuk membuktikan kedua batas atas O() dan bataas bawah
().
c. Contoh Fungsi Exact :
Tentukan solusi berikut dengan menggunakan metode substitusi
1 = 1
()
> 1
5|Tugas 03 Algoritma
Solusi :
Tebak : = log +
Induksi :
Basis : = 1 log + = 1 =
Hipotesis : = log + untuk semua k < n
Langkah Induktif :
= 2
+
2
= 2 ( 2 log 2 + 2 ) +
= log 2 + +
= (log log 2) + 2 (karena log 2 = 1)
= log + 2
= log +
2. Metode Pohon-Rekursi
a. Penggunaan :
1) Pohon rekursi digunakan untuk menentukan batas asimtotik yang baik
pada rekurensi T (n) = ...
b. Langkah-langkah :
1) Gambar
pohon
berdasarkan
perulangan
rekurensi
6|Tugas 03 Algoritma
+ 2
n2
n2
T(n)
T(n/4)
(n/4)2
T(n/2)
T(n/16)
(n/2)2
T(n/8)
T(n/8)
T(n/4)
7|Tugas 03 Algoritma
n2
n2
(n/4)2
(n/16)2
T(1)
(n/8)2
T(1) T(1)
5 2
16
(n/2)2
(n/8)2
T(1)T(1)
25 2
256
(n/4)2
T(1) T(1)
T(1)
5
= 2 (1 + 16 +
16
5
16
+ )= 2 )
3. Metode Master
Metode master menyediakan semacam cookbook untuk menyelesaikan
persamaan rekursif dalam bentuk:
=
+ ()
f(n) adalah secara asimtotik lebih kecil atau lebih besar dari log dengan
factor polynomial
Dalam teorema master ada tiga kasus yang perlu diingat untuk memudahkan
menyelesaikan persamaan rekursif:
a. Jika = log , untuk beberapa > 0, maka = (log )
b. Jika = log log k , maka = (log log k+1 )
c. Jika = log + , maka untuk beberapa > 0, dan jika
8|Tugas 03 Algoritma
+ 2
Contoh :
1) = 4
= 4, = 2 log = 2 ; =
: = (2 ) untuk = 1
= (2 )
2) = 2
+ log
= 2, = 2 log = ; = log
: = (log log k )
= ( 2 )
3) = 4
+ 3
= 4, = 2 log = 2 ; = 3
9|Tugas 03 Algoritma
Tugas 03
1. Jelaskan dengan simulasi cara kerja Algoritma Merge Sort!
Jawab:
MERGE-SORT (A,p,q,r)
5
43
30
19
45
r =9
p =1
1.
10
if p < r
1 < 9 = True
2.
q = [(p + r)/2]
q = (1 + 9)/2 = 5
5
43
19
45
10
q=5
p =1
3.
30
r =9
MERGE-SORT (A,p,q)
5
43
30
43
43
30
43
30
30
43
30
43
A
2
p
Baris di atas adalah baris A.
30
43
10 | T u g a s 0 3 A l g o r i t m a
4.
MERGE-SORT (A,q+1,r)
19
10
19
45
10
19
45
10
19
10
45
10
q +1
5.
45
19
45
MERGE (A,p,q,r)
1) n1 = q p + 1
n1 = 5 1 + 1 = 5
n1 menyatakan jumlah bilangan yang ada pada larik (A,p,q) yaitu 5
2) n2 = r q
n2 = 9 5 = 4
n2 menyatakan jumlah bilangan yang ada pada larik (A,q+1,r) yaitu 4
4) for i = 1 to n1
i=15
5)
L[i] = A[p + i 1 ]
5).a. for i = 1
L[1] = A[1 + 1 1 ]
L[1] = A[1]
11 | T u g a s 0 3 A l g o r i t m a
5).b. for i = 2
L[2] = A[1 + 2 1 ]
L[2] = A[2]
5).c. for i = 3
L[3] = A[1 + 3 1 ]
L[3] = A[3]
5).d. for i = 4
L[4] = A[1 + 4 1 ]
L[4] = A[4]
5).e. for i = 5
L[5] = A[1 + 5 1 ]
L[5] = A[5]
L
30
43
6) for j = 1 to n2
j=14
7)
R[j] = A[q + j]
7).a. for i = 1
R[1] = A[1 + 1 1 ]
R[1] = A[1]
7).b. for i = 2
R[2] = A[1 + 2 1 ]
R[2] = A[2]
7).c. for i = 3
R[3] = A[1 + 3 1 ]
R[3] = A[3]
7).d. for i = 4
R[4] = A[1 + 4 1 ]
R[4] = A[4]
R
10
19
45
8) L[n1 + 1] =
L
30
43
9) R [n2 + 1] =
R
10
19
45
43
30
19
10) i = 1
11) j = 1
12) for k = p to r
A
45
10
k
Index pada Larik A yang index awalnya adalah p dan index akhirnya r
digantikan dengan k. Semuanya k mulai awal hingga akhir.
if L[i] R[j]
13)
if L[1] R[1]
L
30
43
10
19
45
45
<
14)
A[k] = L[i]
A[1] = L[1]
A
43
30
19
45
10
k
15)
i=i+1
i=1+1=2
if L[2] R[1]
30
43
10
19
<
13 | T u g a s 0 3 A l g o r i t m a
A[2] = L[2]
A
43
30
19
45
10
k
i=i+1
i=2+1=3
if L[3] R[1]
L
30
43
10
19
45
>
16)
30
19
45
10
k
17)
j=j+1
j=1+1=2
if L[3] R[2]
30
43
10
19
45
<
A[4] = L[3]
A
30
19
45
10
k
i=i+1
i=3+1=4
if L[4] R[2]
L
30
43
10
19
45
>
14 | T u g a s 0 3 A l g o r i t m a
10
19
45
10
k
j=j+1
j=2+1=3
if L[4] R[3]
L
30
43
10
19
45
45
>
10
19
45
10
k
j=j+1
j=3+1=4
if L[4] R[4]
L
30
43
10
19
<
A[7] = L[4]
A
10
19
30
45
10
30
43
10
k
i=i+1
i=4+1=5
if L[5] R[4]
L
30
43
19
45
<
A[8] = L[5]
A
10
19
10
15 | T u g a s 0 3 A l g o r i t m a
i=i+1
i=5+1=6
if L[6] R[4]
L
30
43
10
19
45
>
A[9] = R[4]
A
10
19
30
43
45
k
Hasil akhirnya diperoleh larik A yang telah terurut.
2. Berikan bukti bahwa loop pada algoritma Merge(A,p,q,r) bekerja dengan benar
dengan
menunjukkan
mekanisme
Inisialisasi,
Maintenance,
dan
Terminasi
yang
tepat
untuk
mempertahankan
loop
invarian.
16 | T u g a s 0 3 A l g o r i t m a
3. Gunakan metode master untuk menentukan solusi dari fungsi rekurensi berikut, lalu
tunjukkan pohon rekursi dari masing-masin rekurens dan berikan bukti secara induksi
matematika.
a. = 9
+ 3
Jawab:
Metode Master
= 9, = 3, log = 2 , = 3
= (2+ ), = 1
2
9( )3 3 , =
3
3
Kasus 3 : = (3 )
(n/3)3
(n/9)3
(n/3)3 (n/3)3
1 3
(n/9)3 (n/9)3
(1)
1 1
= 3 (1 + + + )
3 9
= (3 )
Metode Substitusi
= (3 ), dibuktikan dengan
1) = (3 )
= 9
+ 3
3
Induksi Matematika :
a) Basis : T(1) = 13 = 1
b) Hipotesis : 3 , untuk setiap k n
c) Substitusi :
= 9
1 3
+ 3
17 | T u g a s 0 3 A l g o r i t m a
+ 3 =
2 3
+ 3
3
= ( 3 + 1)3 3 jika 3
= 9
+ 3
3
Induksi Matematika :
a) Basis : T(1) = 13 = 1
b) Hipotesis : 3 , untuk setiap k n
c) Substitusi :
9
3
+ 3
= 9
2
3
=(
+ 3
2 3
=
+ 3
3
+ 1)3 3 jika 3
dapat
disimpulkan bahwa = ( )
b. =
+1
Metode Master
= 1, = 2, log = 0 , = 0 = 1
Kasus 2 : = (log )
18 | T u g a s 0 3 A l g o r i t m a
(1)
Total = 1 + 1 +
log
Metode Substitusi
= log , dibuktikan dengan
Induksi Matematika:
a) Basis : T(1) = log 1 = 0
b) Hipotesis : T(k) = log k, untuk setiap k n
c) Substitusi :
= (2) + 1
= (2) + 1
= log log 2 + 1
= log
Dari ketiga metode tersebut disimpulkan bahwa =
c. = 2
+ log
Metode Master
= 2, = 2, log = , = log
Kasus 1 : >
= (log )
19 | T u g a s 0 3 A l g o r i t m a
log
log
T(1)
log n
log
log
T(1) T(1)
log
T(1)T(1)
log
T(1) T(1)
4 log
T(1)
2 log
log
1log
2
4
= log )
Metode Substitusi
= (log ), dibuktikan dengan
+ log
Induksi Matematika :
a) Basis : T(1) = log 1 = 0
b) Hipotesis : log , untuk setiap k n
c) Substitusi :
= 2
2 log
+ log
+ log
+ log
Induksi Matematika :
a) Basis : T(1) = log 1 = 0
20 | T u g a s 0 3 A l g o r i t m a
2 log
+ log
+ log
Misal A
Jawab :
1
26
32
42
43
Divide
1
SOLVE :
Mencari total
nilai dari 2
submasalah
Total 1 = 24
26
32
42
43
26
32
42
43
Total 2 = 143
COMBINE
1
26
32
42
43
Total = 167
DIVIDE : Bagi dua table A secara rekursif menjadi dua bagian yang berukuran sama,
yaitu bagian kiri dan bagian kanan.
21 | T u g a s 0 3 A l g o r i t m a
COMBINE : Jumlahkan nilai pada Total 1 dan nilai pada Total 2 untuk mendapatkan
Total nilai secara keseluruhan
22 | T u g a s 0 3 A l g o r i t m a
REFERENSI
23 | T u g a s 0 3 A l g o r i t m a