03 Divide and Conquer Indonesia

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 32

Strategi algoritma:

Divide and conquer


(merge-sort)
Armin Lawi
Matematika dan Teknik Informatika, Universitas

Divide and Conquer

Struktur rekursif

Divide: Bagi masalah kedalam beberapa


sub-masalah similar dgn masalah awal dgn
ukuran yg lebih kecil
Conquer: Selesaikan sub-masalah secara
rekursif. Jika sub-masalah sudah cukup
kecil, selesaikan secara langsung.
Combine: Gabung solusi-solusi untuk
mendapatkan solusi masalah awal
(original).

Contoh: Algoritma Merge


Sort

Sorting Problem: Mengurutkan sebuah


barisan n unsur kedalam urutan tak-turun.

Divide: Bagi barisan n-unsur yang akan


diurutkan masing-masing kedalam dua subbarisan n/2 unsur

Conquer: Urutkan dua sub-barisan secara


rekursif menggunakan merge sort.

Combine: Gabung dua sub-barisan yang


terurut untuk mendapatkan barisan terurut.

Merge Sort Contoh


18 26 32 6 43 15 9

1 22 26 19 55 37 43 99 2

18 26 32 6 43 15 9

22 26 19 55 37 43 99 2

18 26 32 6

43 15 9

22 26 19 55

18 26 32 6

43 15

22 26 19 55 37 43 99 2

18 26 32

43 15

22 26 19 55 37 43 99

37 43 99 2

Merge Sort Contoh


Barisan Awal

Barisan Terurut

18 26 32 6 43 15 9

18 26 32 6

43 15 9

6 18 26 32

18 26 32 6

43 15

18 26

15 43

18 26 32

43 15

18 26 32

43 15

18 26 32

43 15

15 18 26 32 43

6 32
6

15 43
43

Merge-Sort (A, p, r)
INPUT: Barisan n bilangan disimpan dalam larik A
OUTPUT: Barisan terurut n bilangan

MergeSort (A, p, r) // sort A[p..r] by divide & conquer


1 if p < r then
2
q (p+r)/2 ;
3
MergeSort (A, p, q);
4
MergeSort (A, q+1, r);
5
Merge (A, p, q, r); // merges A[p..q] with A[q+1..r]

Initial Call: MergeSort(A, 1, n)

Procedure Merge
Merge(A, p, q, r)
1 n1 q p + 1;
2 n2 r q;
3 for i 1 to n1
4
L[i] A[p + i 1];
5 for j 1 to n2
6
R[j] A[q + j];
7 L[n1+1] ;
8 R[n2+1] ;
9 i 1;
10 j 1;
11 for k p to r
12
if L[i] R[j] then
13
A[k] L[i];
14
i i + 1;
15
else A[k] R[j]
16
j j + 1;

Input: Larik memuat sub-larik


terurut A[p..q] dan A[q+1..r].
Output: Gabungan sub-larik terurut
dalam A[p..r].

Sentinels, untuk
menghindari keharusan
mengecek jika sub-larik
terkopi menyeluruh pada tiap
langkah.

Merge Contoh
A

6
i

61

86 26
1 32
9 42 43
8 32
9 26

k k

8 26 32

9 42 43

Correctness of Merge
Merge(A, p, q, r)
1 n1 q p + 1;
2 n2 r q;
3 for i 1 to n1
4
L[i] A[p + i 1];
5 for j 1 to n2
6
R[j] A[q + j];
7 L[n1+1] ;
8 R[n2+1] ;
9 i 1;
10 j 1;
11 for k p to r
12
if L[i] R[j] then
13
A[k] L[i];
14
i i + 1;
15
else A[k] R[j]
16
j j + 1;

Loop Invariant untuk loop for


Pada awal iterasi setiap loop:
Sublarik A[p..k 1] memuat k p
unsur-unsur terkecil dari L dan R dalam
barisan terurut.
L[i] dand R[j] adalah unsur terkecil dari
L dand R yang belum terkopi kembali
kedalam A.

Tugas03
Berikan bukti bahwa loop pada algoritma
Merge(A,p,q,r) bekerja dengan benar
dengan menunjukkan mekanisme
Inisialisasi, Maintenance, dan Terminasi
(Ref: Intro to Algorithms, MIT Press)

Analysis Merge Sort

Running time T(n) Merge Sort:


Divide: komputasi antara butuh (1)
Conquer: menyelesaikan 2 sub-masalah butuh
2T(n/2)
Combine: menggabungkan n unsur butuh (n)
Total:
T(n) = (1)
if n = 1
T(n) = 2T(n/2) + (n)
if n > 1
T(n) = (n lg n) (Ref: CLRS, Chapter 4)

Rekurensi

Relasi Rekurensi

Persamaan atau pertaksamaan dgn


karakteristik fungsi yg nilainya dinyatakan
sbg fungsi dgn nilai input yang lebih kecil.
Metode Penyelesaian (Bab 4)

Metode Substitusi.
Metode Pohon-Rekursi.
Metode Master.

Relasi rekurensi terjadi ketika analisis


running time algoritma iteratif atau
rekursif.

Contoh: Divide and Conquer.


T(n) = (1) jika n c
T(n) = a T(n/b) + D(n) + C(n)
hal lain

Metode Substitusi

Tebak bentuk solusi, kemudian


gunakan induksi matematika untuk
membuktikan.

Subsitusi tebakan jawaban untuk fungsi jika


hipotesis induktif dilaksanakan untuk nilai
yang lebih kecil.

Metode cocok untuk solusi yg gampang


ditebak.

Tidak ada cara umum bagaimana


menebak solusi dengan benar.

Contoh Exact Function


Rekurensi: T(n) = 1
T(n) = 2T(n/2) + n

jika n = 1
jika n > 1

Tebak: T(n) = n lg n + n.
Induksi:
Basis: n = 1 n lgn + n = 1 = T(n).
Hipotesis: T(k) = k lg k + k for all k < n.
Langkah Induktif: T(n) = 2 T(n/2) + n
= 2 ((n/2)lg(n/2) + (n/2)) + n
= n (lg(n/2)) + 2n
= n lg n n + 2n
= n lg n + n

Metode Pohon-Rekursi

Membuat tebakan baik seringkali sulit


dengan metode subsitusi.
Gunakan pohon rekursi mengarahakn
tebakan.
Pohon rekursi

Tampilkan perluasan rekurensi submasalah


menggunakan graf pohon.
Lacak waktu yang dibutuhkan pada submasalah
dengan algoritma divide and conquer.
Membantu dalam menata solusi aljabar yang
dibutuhkan untuk menyelesaikan rekurensi

Pohon Rekursi Contoh

Running time Merge Sort:


T(n) = (1)
jika n = 1
T(n) = 2T(n/2) + (n)
jika n > 1
Ditulis dalam bentuk rekurens
T(n) = c
jika n = 1
T(n) = 2T(n/2) + cn jika n > 1
c > 0: Running time untuk basis dan waktu
unsur per-larik pada langkah divide and
combine.

Pohon Rekursi untuk Merge


Sort

Untuk masalah awal, cost


adalah cn, ditambah dua
submasalah masing2
berukuran (n/2) dengan
running time T(n/2).
cn

Setiap masalah ukuran n/2


mempunyai cost cn/2 ditambah
dua submasalah dengan cost
masing-masingT(n/4).
cn

Cost of divide and


merge.

cn/2
T(n/2)

cn/2

T(n/2)
T(n/4) T(n/4) T(n/4) T(n/4)
Cost of sorting
subproblems.

Pohon Rekursi untuk Merge


Sort
Lanjutkan mereduksi masalah hingga berukuran 1.
cn

cn/2

cn
cn

cn/2

lg n + 1
cn/4 cn/4

cn/4

cn/4

c c

cn

c
Total

cn
: cn lg n + cn

Pohon Rekursi untuk Merge


Sort

Lanjutkan mereduksi masalah hingga berukuran 1.


cn
Total cost setiap level: cn.
Setiap turun satu level ke bawah,
banyak submasalah dua kali
namun cost setengahnya
cn/2
cn/2
cost per level menjadi sama.
Terdapat lg n + 1 level, tinggi
pohon lg n. (Asumsi n
cn/4
cn/4 cn/4
cn/4
perpangkatan dari 2.)
Dengan induksi dapt dibutkikan:
Total cost = jumlah cost tiap level
= (lg n + 1)cn
= cn lg n + cn
c c c
c c c
= (n lgn).

Contoh Lain Tugas03

Gunakan metode pohon rekursi untuk


menetukan tebakan dari fungsi rekurensi

T(n) = 3T( n/4 ) + (n2)

Pohon Rekursi Catatan


Penting

Pohon rekursi hanya menyajikan


tebakan.

Verifikasi tebakan menggunakan metode


subsitusi.

Kesalahan kecil masih dapat ditoleransi


Jika hati-hati menggambarkan pohon
rekursi dan menjumlahkan cost, dapat
digunakan sebagai bukti langsung.

Metode Master

Berdasarkan the Master theorem.


Pendekatan Buku resep untuk
menyelesaikan rekurensi berbentuk
T(n) = aT(n/b) + f(n)
1, b > 1 adalah konstanta.
f(n) adalah fungsi positif asimptotik.
n/b dapat saja bukan bilangan asli, sehingga
pembulatan floor dan ceiling.
a

Butuh untuk mengingat tiga kasus berikut.

The Master Theorem


Theorem
Theorem4.1
4.1
Let
Letaa 11 and
and bb >> 11be
beconstants,
constants,let
letf(n)
f(n)be
beaafunction,
function,and
and
Let
LetT(n)
T(n)be
bedefined
definedon
onnonnegative
nonnegativeintegers
integersby
bythe
therecurrence
recurrence
T(n)
T(n)==aT(n/b)
aT(n/b)++f(n),
f(n),where
wherewe
wecan
canreplace
replacen/b
n/bby
by n/b
n/b or
or n/b
n/b ..
T(n)
T(n)can
canbe
bebounded
boundedasymptotically
asymptoticallyin
inthree
threecases:
cases:
log
IfIf f(n)
loga
a) for some constant > 0, then T(n) = (nlog
logaa).
=
O(n
f(n) = O(n
) for some constant > 0, then T(n) = (n ).
log a
IfIf f(n)
f(n)==
(n
(nlog a),),then
thenT(n)
T(n)==(
(nnloglogaalglgn).
n).
log a+
IfIf f(n)
f(n)==(n
(nlog a+)) for
forsome
someconstant
constant>>0,
0,
and
andif,
if,for
forsome
someconstant
constantcc<<11and
andall
allsufficiently
sufficientlylarge
largen,n,
we
wehave
haveaf(n/b)
af(n/b)ccf(n),
f(n),then
thenT(n)
T(n)==
(f(n)).
(f(n)).
b

Well return to recurrences as we need them

Master Method,
Example 1
c

The form: T (n )

aT ( n / b) f ( n )

if n d
if n d

The Master Theorem:

1. if f (n) is O (n logb a ), then T (n) is (n logb a )


2. if f (n) is (n logb a log k n), then T (n) is (n logb a log k 1 n)
3. if f (n) is (n logb a ), then T (n) is ( f (n)),
provided af (n / b) f (n) for some 1.

T ( n)
Example:

4T (n / 2) n

Solution: logba=2, so case 1 says T(n) is O(n2).

Master Method,
Example 2
c

The form: T (n )

aT ( n / b) f ( n )

if n d
if n d

The Master Theorem:

1. if f (n) is O (n logb a ), then T (n) is (n logb a )


2. if f (n) is (n logb a log k n), then T (n) is (n logb a log k 1 n)
3. if f (n) is (n logb a ), then T (n) is ( f (n)),
provided af (n / b) f (n) for some 1.

T ( n)
Example:

2T (n / 2) n log n

Solution: logba=1, so case 2 says T(n) is O(n log2 n).

Master Method,
Example 3
c

The form: T (n )

aT ( n / b) f ( n )

if n d
if n d

The Master Theorem:

1. if f (n) is O (n logb a ), then T (n) is (n logb a )


2. if f (n) is (n logb a log k n), then T (n) is (n logb a log k 1 n)
3. if f (n) is (n logb a ), then T (n) is ( f (n)),
provided af (n / b) f (n) for some 1.

T ( n)
Example:

T (n / 3) n log n

Solution: logba=0, so case 3 says T(n) is O(n log n).

Master Method,
Example 4
c

The form: T (n )

aT ( n / b) f ( n )

if n d
if n d

The Master Theorem:

1. if f (n) is O (n logb a ), then T (n) is (n logb a )


2. if f (n) is (n logb a log k n), then T (n) is (n logb a log k 1 n)
3. if f (n) is (n logb a ), then T (n) is ( f (n)),
provided af (n / b) f (n) for some 1.

T ( n)
Example:

8T (n / 2) n

Solution: logba=3, so case 1 says T(n) is O(n3).

Master Method,
Example 5
c

The form: T (n )

aT ( n / b) f ( n )

if n d
if n d

The Master Theorem:

1. if f (n) is O (n logb a ), then T (n) is (n logb a )


2. if f (n) is (n logb a log k n), then T (n) is (n logb a log k 1 n)
3. if f (n) is (n logb a ), then T (n) is ( f (n)),
provided af (n / b) f (n) for some 1.

T ( n)
Example:

9T (n / 3) n

Solution: logba=2, so case 3 says T(n) is O(n3).

Master Method,
Example 6
c

The form: T (n )

aT ( n / b) f ( n )

if n d
if n d

The Master Theorem:

1. if f (n) is O (n logb a ), then T (n) is (n logb a )


2. if f (n) is (n logb a log k n), then T (n) is (n logb a log k 1 n)
3. if f (n) is (n logb a ), then T (n) is ( f (n)),
provided af (n / b) f (n) for some 1.

T ( n)
Example:

T (n / 2) 1

(binary search)

Solution: logba=0, so case 2 says T(n) is O(log n).

Master Method,
Example 7
c

The form: T (n )

aT ( n / b) f ( n )

if n d
if n d

The Master Theorem:

1. if f (n) is O (n logb a ), then T (n) is (n logb a )


2. if f (n) is (n logb a log k n), then T (n) is (n logb a log k 1 n)
3. if f (n) is (n logb a ), then T (n) is ( f (n)),
provided af (n / b) f (n) for some 1.

Example:T(n) 2T(n/ 2) log n (heap construction)


Solution: logba=1, so case 1 says T(n) is O(n).

Tugas03
1. Jelaskan dengan simulasi cara kerja Algoritma Merge Sort
2. Berikan bukti bahwa loop pada algoritma Merge(A,p,q,r)
bekerja dengan benar dengan menunjukkan mekanisme
Inisialisasi, Maintenance, dan Terminasi
(Ref: Intro to Algorithms, MIT Press)
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

T(n) 2T(n/ 2) log n


T(n) T(n/ 2) 1
T(n) 9T(n/ 3) n3

Tugas03
4. Menggunakan metode Divide-and-Conquer,
rancang algoritma sederhana untuk menghitung
jumlah data dalam sbuah larik A.
Misal, A =
maka total = 167

You might also like