SlideShare a Scribd company logo
1 of 28
Download to read offline
Divide and Conquer
• Divide and Conquer adalah strategi militer
yang dikenal dengan nama divide ut
imperes.
• Strategi tersebut menjadi strategi
2
fundamental di dalam ilmu komputer
dengan nama Divide and Conquer.
Definisi
• Divide: membagi masalah menjadi beberapa upa-
masalah yang memiliki kemiripan dengan masalah
semula namun berukuran lebih kecil (idealnya
berukuran hampir sama),
• Conquer: memecahkan (menyelesaikan) masing-
masing upa-masalah (secara rekursif), dan
3
masing upa-masalah (secara rekursif), dan
• Combine: mengabungkan solusi masing-masing upa-
masalah sehingga membentuk solusi masalah
semula.
• Obyek permasalahan yang dibagi :
masukan (input) atau instances yang berukuran n seperti:
- tabel (larik),
- matriks,
- eksponen,
- dll, bergantung pada masalahnya.
4
• Tiap-tiap upa-masalah mempunyai karakteristik yang
sama (the same type) dengan karakteristik masalah asal,
sehingga metode Divide and Conquer lebih natural
diungkapkan dalam skema rekursif.
Skema Umum Algoritma Divide and Conquer
procedure DIVIDE_and_CONQUER(input n : integer)
{ Menyelesaikan masalah dengan algoritma D-and-C.
Masukan: masukan yang berukuran n
Keluaran: solusi dari masalah semula
}
Deklarasi
r, k : integer
Algoritma
≤
5
if n ≤ n0 then {ukuran masalah sudah cukup kecil }
SOLVE upa-masalah yang berukuran n ini
else
Bagi menjadi r upa-masalah, masing-masing berukuran n/k
for masing-masing dari r upa-masalah do
DIVIDE_and_CONQUER(n/k)
endfor
COMBINE solusi dari r upa-masalah menjadi solusi masalah semula }
endif
Mencari Nilai Minimum dan Maksimum
(MinMaks)
Persoalan: Misalkan diberikan tabel A yang
Contoh Masalah
6
Persoalan: Misalkan diberikan tabel A yang
berukuran n elemen dan sudah berisi nilai
integer.
Carilah nilai minimum dan nilai maksimum di
dalam tabel tersebut.
Penyelesaian dengan Algoritma Brute Force
procedure MinMaks1(input A : TabelInt, n : integer,
output min, maks : integer)
{ Mencari nilai minimum dan maksimum di dalam tabel A yang berukuran n
elemen, secara brute force.
Masukan: tabel A yang sudah terdefinisi elemen-elemennya
Keluaran: nilai maksimum dan nilai minimum tabel
}
Deklarasi
i : integer
Algoritma:
min← A { inisialisasi nilai minimum}
7
min← A1 { inisialisasi nilai minimum}
maks←A1 { inisialisasi nilai maksimum }
for i←2 to n do
if Ai < min then
min←Ai
endif
if Ai > maks then
maks←Ai
endif
endfor
Penyelesaian dengan Divide and Conquer
Contoh 4.1. Misalkan tabel A berisi elemen-elemen sebagai berikut:
4 12 23 9 21 1 35 2 24
Ide dasar algoritma secara Divide and Conquer:
4 12 23 9 21 1 35 2 24
DIVIDE
4 12 23 9 21 1 35 2 24
8
SOLVE: tentukan min &
maks pada tiap bagian
4 12 23 9 21 1 35 2 24
min = 4 min = 1
maks = 23 maks = 35
COMBINE
4 12 23 9 21 1 35 2 24
min = 1
maks = 35
• Ukuran tabel hasil pembagian dapat dibuat
cukup kecil sehingga mencari minimum dan
maksimum dapat diselesaikan (SOLVE) secara
lebih mudah.
• Dalam hal ini, ukuran kecil yang dipilih adalah
9
• Dalam hal ini, ukuran kecil yang dipilih adalah
1 elemen atau 2 elemen.
MinMaks(A, n, min, maks)
Algoritma:
1. Untuk kasus n = 1 atau n = 2,
SOLVE: Jika n = 1, maka min = maks = A[n]
Jika n = 2, maka bandingkan kedua elemen untuk
menentukan min dan maks.
2. Untuk kasus n > 2,
(a) DIVIDE: Bagi dua tabel A menjadi dua bagian yang sama,
A1 dan A2
10
A1 dan A2
(b) CONQUER:
MinMaks(A1, n/2, min1, maks1)
MInMaks(A2, n/2, min2, maks2)
(c) COMBINE:
if min1 <min2 then min <- min1 else min <- min2
if maks1 <maks2 then maks <- maks2 else maks <- maks1
Contoh 4.2. Tinjau kembali Contoh 4.1 di atas.
DIVIDE dan CONQUER:
4 12 23 9 21 1 35 2 24
4 12 23 9 21 1 35 2 24
4 12 23 9 21 1 35 2 24
SOLVE dan COMBINE:
4 12 23 9 21 1 35 2 24
11
4 12 23 9 21 1 35 2 24
min = 4 min = 9 min = 1 min = 35 min = 2
maks = 12 maks = 23 maks = 21 maks =35 maks = 24
4 12 23 9 21 1 35 2 24
min = 4 min = 1 min = 2
maks = 23 maks = 21 maks = 35
4 12 23 9 21 1 35 2 24
min = 4 min = 1
maks = 23 maks = 35
4 12 23 9 21 1 5 2 24
min = 1
maks = 35
procedure MinMaks2(input A : TabelInt, i, j : integer,
output min, maks : integer)
{ Mencari nilai maksimum dan minimum di dalam tabel A yang berukuran n
elemen secara Divide and Conquer.
Masukan: tabel A yang sudah terdefinisi elemen-elemennya
Keluaran: nilai maksimum dan nilai minimum tabel
}
Deklarasi
min1, min2, maks1, maks2 : integer
Algoritma:
if i=j then { 1 elemen }
min←Ai
maks←Ai
else
if (i = j-1) then { 2 elemen }
if Ai < Aj then
maks←Aj
min←Ai
else
12
else
maks←Ai
min←Aj
endif
else { lebih dari 2 elemen }
k←(i+j) div 2 { bagidua tabel pada posisi k }
MinMaks2(A, i, k, min1, maks1)
MinMaks2(A, k+1, j, min2, maks2)
if min1 < min2 then
min←min1
else
min←min2
endif
if maks1<maks2 then
maks←maks2
else
maks←maks2
endif
Kompleksitas waktu asimptotik:





>
+
=
=
=
2
,
2
)
2
/
(
2
2
,
1
1
,
0
)
(
n
n
T
n
n
n
T
Penyelesaian:
Asumsi: n = 2k
, dengan k bilangan bulat positif, maka
13
T(n) = 2T(n/2) + 2
= 2(2T(n/4) + 2) + 2 = 4T(n/4) + 4 + 2
= 4T(2T(n/8) + 2) + 4 + 2 = 8T(n/8) + 8 + 4 + 2
= ...
= 2k – 1
T(2) + ∑
−
=
1
1
2
k
i
i
= 2k – 1
⋅ 1 + 2k
– 2
= n/2 + n – 2
= 3n/2 – 2
= O(n)
• MinMaks1 secara brute force :
T(n) = 2n – 2
• MinMaks2 secara divide and conquer:
T(n) = 3n/2 – 2
14
• Perhatikan: 3n/2 – 2 < 2n – 2 , n ≥ 2.
• Kesimpulan: algoritma MinMaks lebih
mangkus dengan metode Divide and Conquer.
Perpangkatan an
Misalkan a ∈ R dan n adalah bilangan bulat
tidak negatif:
an = a × a × … × a (n kali), jika n > 0
15
an = a × a × … × a (n kali), jika n > 0
= 1 , jika n = 0
Penyelesaian dengan Algoritma Brute Force
function Exp1(input a, n : integer)→integer
{ Menghitung an
, a > 0 dan n bilangan bulat tak-negatif
Masukan: a, n
Keluaran: nilai perpangkatan.
}
Deklarasi
k, hasil : integer
Algoritma:
hasil←1
16
hasil 1
for k←1 to n do
hasil←hasil * a
endfor
return hasil
Kompleksitas waktu algoritma:
T(n) = n = O(n)
Penyelesaian dengan Divide and Conquer
Algoritma menghitung an:
1. Untuk kasus n = 0, maka an = 1.
2. Untuk kasus n > 0, bedakan menjadi dua
17
2. Untuk kasus n > 0, bedakan menjadi dua
kasus lagi:
(i) jika n genap, maka an = an/2 ⋅ an/2
(ii) jika n ganjil, maka an = an/2 ⋅ an/2 ⋅ a
Contoh 4.6. Menghitung 316
dengan metode Divide and Conquer:
316
= 38
⋅ 38
= (38
)2
= ((34
)2
)2
= (((32
)2
)2
)2
= ((((31
)2
))2
)2
)2
= ((((30
)2
⋅ 3)2
)2
)2
)2
2
⋅ 2 2 2 2
18
= ((((1)2
⋅ 3)2
)2
)2
)2
= ((((3)2
))2
)2
)2
= (((9)2
)2
)2
= (81) 2
)2
= (6561)2
= 43046721
function Exp2(input a :real, n : integer) → real
{ mengembalikan nilai a^n, dihitung dengan metode Divide and Conquer }
Algoritma:
if n = 0 then
return 1
else
x←Exp2(a, n div 2)
if odd(n) then { fungsi odd memberikan true jika n ganjil }
19
if odd(n) then { fungsi odd memberikan true jika n ganjil }
return x * x * a
else
return x * x
endif
endif
Kompleksitas algoritma:
 



>
+
=
=
0
,
)
2
/
(
1
0
,
0
)
(
n
n
T
n
n
T
Penyelesaian:
20
T(n) = 1 + T( n/2 )
= 1 + (1 + T( n/4 ) = 2 + T( n/4 )
= 2 + (1 + T( n/8 ) = 3 + T( n/8 )
= ...
= k + T(n/2k
 )
Persamaan terakhir diselesaikan dengan membuat n/2k
=1,
(n/2k
) = 1 → log (n/2k
) = log 1
log n – log 2k
= 0
log n – k log 2 = 0
log n = k log 2
k = log n / log 2 = 2
log n
sehingga
21
T(n) = 2
log n + T(1)
= 2
log n + 1 + T(0)
= 2
log n + 1 + 0
= 2
log n + 1
= O (2
log n)
Merge Sort
Algoritma:
1. Untuk kasus n = 1, maka tabel A sudah terurut dengan
sendirinya (langkah SOLVE).
2. Untuk kasus n > 1, maka
(a) DIVIDE: bagi tabel A menjadi dua bagian,
bagian kiri dan bagian kanan, masing-masing
22
bagian kiri dan bagian kanan, masing-masing
bagian berukuran n/2 elemen.
(b) CONQUER: Secara rekursif, terapkan
algoritma D-and-C pada masing-masing
bagian.
(c) MERGE: gabung hasil pengurutan kedua
bagian sehingga diperoleh tabel A yang terurut.
Contoh 4.3. Misalkan tabel A berisi elemen-elemen berikut:
4 12 23 9 21 1 5 2
DIVIDE, CONQUER, dan SOLVE:
4 12 23 9 21 1 5 2
4 12 23 9 21 1 5 2
4 12 23 9 21 1 5 2
23
4 12 23 9 21 1 5 2
4 12 23 9 21 1 5 2
MERGE: 4 12 9 23 1 21 2 5
4 9 12 23 1 2 5 21
1 2 4 5 9 12 21 23
Contoh Merge:
A1 A2 B
1 13 24 2 15 27 1 < 2 → 1 1
1 13 24 2 15 27 2 <13 → 2 1 2
1 13 24 2 15 27 13<15→13 1 2 13
24
1 13 24 2 15 27 15<24→15 1 2 13 15
1 13 24 2 15 27 24<27→24 1 2 13 15 24
1 13 24 2 15 27 27 → 1 2 13 15 24 27
procedure MergeSort(input/output A : TabelInt, input i, j : integer)
{ Mengurutkan tabel A[i..j] dengan algoritma Merge Sort
Masukan: Tabel A dengan n elemen
Keluaran: Tabel A yang terurut
}
Deklarasi:
k : integer
Algoritma:
25
Algoritma:
if i < j then { Ukuran(A)> 1}
k←(i+j) div 2
MergeSort(A, i, k)
MergeSort(A, k+1, j)
Merge(A, i, k, j)
endif
Prosedur Merge:
procedure Merge(input/output A : TabelInt, input kiri,tengah,kanan :
integer)
{ Menggabung tabel A[kiri..tengah] dan tabel A[tengah+1..kanan]
menjadi tabel A[kiri..kanan] yang terurut menaik.
Masukan: A[kiri..tengah] dan tabel A[tengah+1..kanan] yang sudah
terurut menaik.
Keluaran: A[kiri..kanan] yang terurut menaik.
}
Deklarasi
B : TabelInt
i, kidal1, kidal2 : integer
Algoritma:
kidal1←kiri { A[kiri .. tengah] }
kidal2←tengah + 1 { A[tengah+1 .. kanan] }
i←kiri
while (kidal1 ≤ tengah) and (kidal2 ≤ kanan) do
if Akidal1 ≤ Akidal2 then
Bi←Akidal1
kidal1←kidal1 + 1
else
Bi←Akidal2
kidal2←kidal2 + 1
endif
26
endif
i←i + 1
endwhile
{ kidal1 > tengah or kidal2 > kanan }
{ salin sisa A bagian kiri ke B, jika ada }
while (kidal1 ≤ tengah) do
Bi←Akidal1
kidal1←kidal1 + 1
i←i + 1
endwhile
{ kidal1 > tengah }
{ salin sisa A bagian kanan ke B, jika ada }
while (kidal2 ≤ kanan) do
Bi←Akidal2
kidal2←kidal2 + 1
i←i + 1
endwhile
{ kidal2 > kanan }
{ salin kembali elemen-elemen tabel B ke A }
for i←kiri to kanan do
Ai←Bi
endfor
{ diperoleh tabel A yang terurut membesar }
• Kompleksitas waktu:
Asumsi: n = 2k
T(n) = jumlah perbandingan pada pengurutan dua buah
upatabel + jumlah perbandingan pada prosedur Merge
27



>
+
=
=
1
,
)
2
/
(
2
1
,
)
(
n
cn
n
T
n
a
n
T
Penyelesaian:
T(n) = 2T(n/2) + cn
= 2(2T(n/4) + cn/2) + cn = 4T(n/4) + 2cn
= 4(2T(n/8) + cn/4) + 2cn = 8T(n/8) + 3cn
= ...
= 2k
T(n/2k
) +kcn
Berhenti jika ukuran tabel terkecil, n = 1:
k 2
28
n/2k
= 1 → k = 2
log n
sehingga
T(n) = nT(1) + cn 2
log n
= na + cn 2
log n
= O(n 2
log n)

More Related Content

What's hot

Penggunaan persamaan dan pertidaksamaan kuadrat
Penggunaan persamaan dan pertidaksamaan kuadratPenggunaan persamaan dan pertidaksamaan kuadrat
Penggunaan persamaan dan pertidaksamaan kuadratRossiana Fazri
 
Laporan Aplikasi Persamaan Kuadrat
Laporan Aplikasi Persamaan KuadratLaporan Aplikasi Persamaan Kuadrat
Laporan Aplikasi Persamaan KuadratKurnia Kim
 
Pertidaksamaan non linear
Pertidaksamaan non linearPertidaksamaan non linear
Pertidaksamaan non linearMonich Rhd
 
Matematika 2 - Slide week 5 Integral Lipat Tiga
Matematika 2 - Slide week 5 Integral Lipat TigaMatematika 2 - Slide week 5 Integral Lipat Tiga
Matematika 2 - Slide week 5 Integral Lipat TigaBeny Nugraha
 
Splkdv (Sistem Persamaan Linear dan kuadrat Dua Variabel)
Splkdv (Sistem Persamaan Linear dan kuadrat Dua Variabel)Splkdv (Sistem Persamaan Linear dan kuadrat Dua Variabel)
Splkdv (Sistem Persamaan Linear dan kuadrat Dua Variabel)MiraRaudhotulJannah
 
Bab 3 persamaan dan pertidaksamaan
Bab 3 persamaan dan pertidaksamaanBab 3 persamaan dan pertidaksamaan
Bab 3 persamaan dan pertidaksamaanEko Supriyadi
 
Sistem Persamaan Linear
Sistem Persamaan LinearSistem Persamaan Linear
Sistem Persamaan LinearAna Safrida
 
Linier simultan bridon
Linier simultan bridonLinier simultan bridon
Linier simultan bridonMuhammad Ridho
 
Presentasi pertidaksamaan linear
Presentasi pertidaksamaan linearPresentasi pertidaksamaan linear
Presentasi pertidaksamaan linearINURROHMAH
 
Sistem Persamaan Linear Dua Variabel dan Fungsi Kuadrat
Sistem Persamaan Linear Dua Variabel dan Fungsi KuadratSistem Persamaan Linear Dua Variabel dan Fungsi Kuadrat
Sistem Persamaan Linear Dua Variabel dan Fungsi KuadratSAINSFREAK
 
Media Pembelajaran SPLDV Metode Eliminasi
Media Pembelajaran SPLDV Metode EliminasiMedia Pembelajaran SPLDV Metode Eliminasi
Media Pembelajaran SPLDV Metode EliminasiSadim Mulyana
 
Kisi kisi peminatan kelas x
Kisi kisi peminatan kelas xKisi kisi peminatan kelas x
Kisi kisi peminatan kelas xLuvia P
 
Materi Aljabar Fungsi Pecahan Rasional
Materi Aljabar Fungsi Pecahan RasionalMateri Aljabar Fungsi Pecahan Rasional
Materi Aljabar Fungsi Pecahan RasionalSriwijaya University
 
Sistem persamaan linear dan kuadrat
Sistem persamaan linear dan kuadratSistem persamaan linear dan kuadrat
Sistem persamaan linear dan kuadratNisa Hakiki
 
Regresi Kuadrat Terkecil
Regresi Kuadrat TerkecilRegresi Kuadrat Terkecil
Regresi Kuadrat Terkecilindra herlangga
 

What's hot (20)

Fungsi rasional (2)
Fungsi rasional (2)Fungsi rasional (2)
Fungsi rasional (2)
 
Penggunaan persamaan dan pertidaksamaan kuadrat
Penggunaan persamaan dan pertidaksamaan kuadratPenggunaan persamaan dan pertidaksamaan kuadrat
Penggunaan persamaan dan pertidaksamaan kuadrat
 
Laporan Aplikasi Persamaan Kuadrat
Laporan Aplikasi Persamaan KuadratLaporan Aplikasi Persamaan Kuadrat
Laporan Aplikasi Persamaan Kuadrat
 
Pertidaksamaan non linear
Pertidaksamaan non linearPertidaksamaan non linear
Pertidaksamaan non linear
 
Matematika 2 - Slide week 5 Integral Lipat Tiga
Matematika 2 - Slide week 5 Integral Lipat TigaMatematika 2 - Slide week 5 Integral Lipat Tiga
Matematika 2 - Slide week 5 Integral Lipat Tiga
 
Pertidaksamaan kuadrat
Pertidaksamaan kuadratPertidaksamaan kuadrat
Pertidaksamaan kuadrat
 
Splkdv (Sistem Persamaan Linear dan kuadrat Dua Variabel)
Splkdv (Sistem Persamaan Linear dan kuadrat Dua Variabel)Splkdv (Sistem Persamaan Linear dan kuadrat Dua Variabel)
Splkdv (Sistem Persamaan Linear dan kuadrat Dua Variabel)
 
Bab 3 persamaan dan pertidaksamaan
Bab 3 persamaan dan pertidaksamaanBab 3 persamaan dan pertidaksamaan
Bab 3 persamaan dan pertidaksamaan
 
Sistem Persamaan Linear
Sistem Persamaan LinearSistem Persamaan Linear
Sistem Persamaan Linear
 
Linier simultan bridon
Linier simultan bridonLinier simultan bridon
Linier simultan bridon
 
Powerpoint SPtLDV
Powerpoint SPtLDVPowerpoint SPtLDV
Powerpoint SPtLDV
 
ketaksamaan
ketaksamaanketaksamaan
ketaksamaan
 
Presentasi pertidaksamaan linear
Presentasi pertidaksamaan linearPresentasi pertidaksamaan linear
Presentasi pertidaksamaan linear
 
Sistem Persamaan Linear Dua Variabel dan Fungsi Kuadrat
Sistem Persamaan Linear Dua Variabel dan Fungsi KuadratSistem Persamaan Linear Dua Variabel dan Fungsi Kuadrat
Sistem Persamaan Linear Dua Variabel dan Fungsi Kuadrat
 
Matematika Peminatan Kelas X
Matematika Peminatan Kelas XMatematika Peminatan Kelas X
Matematika Peminatan Kelas X
 
Media Pembelajaran SPLDV Metode Eliminasi
Media Pembelajaran SPLDV Metode EliminasiMedia Pembelajaran SPLDV Metode Eliminasi
Media Pembelajaran SPLDV Metode Eliminasi
 
Kisi kisi peminatan kelas x
Kisi kisi peminatan kelas xKisi kisi peminatan kelas x
Kisi kisi peminatan kelas x
 
Materi Aljabar Fungsi Pecahan Rasional
Materi Aljabar Fungsi Pecahan RasionalMateri Aljabar Fungsi Pecahan Rasional
Materi Aljabar Fungsi Pecahan Rasional
 
Sistem persamaan linear dan kuadrat
Sistem persamaan linear dan kuadratSistem persamaan linear dan kuadrat
Sistem persamaan linear dan kuadrat
 
Regresi Kuadrat Terkecil
Regresi Kuadrat TerkecilRegresi Kuadrat Terkecil
Regresi Kuadrat Terkecil
 

Similar to 4 jna jgnodh5lp0cdaaykzgqjvmqseyyopejhq62g

Algoritma divide and conquer (lanjutan)
Algoritma divide and conquer (lanjutan)Algoritma divide and conquer (lanjutan)
Algoritma divide and conquer (lanjutan)Edho Pratama
 
Algoritma Devide and Conquer
Algoritma Devide and ConquerAlgoritma Devide and Conquer
Algoritma Devide and ConquerAjeng Savitri
 
Kisi-kisi UN Matematika kelas 9 SMP
Kisi-kisi UN Matematika kelas 9 SMPKisi-kisi UN Matematika kelas 9 SMP
Kisi-kisi UN Matematika kelas 9 SMPNisriinaaf
 
Referensi Materi Algoritma Brute Force Bagian 1
Referensi Materi Algoritma Brute Force Bagian 1Referensi Materi Algoritma Brute Force Bagian 1
Referensi Materi Algoritma Brute Force Bagian 1DEDEALAMSYAHSPd
 
Decrease and Conquer in analysis of algorithms.pptx
Decrease and Conquer in analysis of algorithms.pptxDecrease and Conquer in analysis of algorithms.pptx
Decrease and Conquer in analysis of algorithms.pptxArunachalamSelva
 
Algoritma Brute Force 12345678901112.ppt
Algoritma Brute Force 12345678901112.pptAlgoritma Brute Force 12345678901112.ppt
Algoritma Brute Force 12345678901112.pptELDONIMOSUL1
 
MATRIKS_ppt.ppt
MATRIKS_ppt.pptMATRIKS_ppt.ppt
MATRIKS_ppt.pptzamzham
 
Smart solution un matematika sma 2013 (skl 2.16 deret aritmetika)
Smart solution un matematika sma 2013 (skl 2.16 deret aritmetika)Smart solution un matematika sma 2013 (skl 2.16 deret aritmetika)
Smart solution un matematika sma 2013 (skl 2.16 deret aritmetika)Catur Prasetyo
 
Analisis Algoritma - Strategi Algoritma Divide and Conquer
Analisis Algoritma - Strategi Algoritma Divide and ConquerAnalisis Algoritma - Strategi Algoritma Divide and Conquer
Analisis Algoritma - Strategi Algoritma Divide and ConquerAdam Mukharil Bachtiar
 
Modul+OR+-+Simpleks+Minimum.pdf
Modul+OR+-+Simpleks+Minimum.pdfModul+OR+-+Simpleks+Minimum.pdf
Modul+OR+-+Simpleks+Minimum.pdfwiwinastuti1
 
Matematika Diskrit - 11 kompleksitas algoritma - 04
Matematika Diskrit - 11 kompleksitas algoritma - 04Matematika Diskrit - 11 kompleksitas algoritma - 04
Matematika Diskrit - 11 kompleksitas algoritma - 04KuliahKita
 

Similar to 4 jna jgnodh5lp0cdaaykzgqjvmqseyyopejhq62g (20)

Algoritma divide and conquer (lanjutan)
Algoritma divide and conquer (lanjutan)Algoritma divide and conquer (lanjutan)
Algoritma divide and conquer (lanjutan)
 
BAB 5.pptx
BAB 5.pptxBAB 5.pptx
BAB 5.pptx
 
Algoritma Devide and Conquer
Algoritma Devide and ConquerAlgoritma Devide and Conquer
Algoritma Devide and Conquer
 
Kisi-kisi UN Matematika kelas 9 SMP
Kisi-kisi UN Matematika kelas 9 SMPKisi-kisi UN Matematika kelas 9 SMP
Kisi-kisi UN Matematika kelas 9 SMP
 
Referensi Materi Algoritma Brute Force Bagian 1
Referensi Materi Algoritma Brute Force Bagian 1Referensi Materi Algoritma Brute Force Bagian 1
Referensi Materi Algoritma Brute Force Bagian 1
 
Decrease and Conquer in analysis of algorithms.pptx
Decrease and Conquer in analysis of algorithms.pptxDecrease and Conquer in analysis of algorithms.pptx
Decrease and Conquer in analysis of algorithms.pptx
 
Algoritma Brute Force 12345678901112.ppt
Algoritma Brute Force 12345678901112.pptAlgoritma Brute Force 12345678901112.ppt
Algoritma Brute Force 12345678901112.ppt
 
MATRIKS_ppt.ppt
MATRIKS_ppt.pptMATRIKS_ppt.ppt
MATRIKS_ppt.ppt
 
MPL ITS
MPL ITSMPL ITS
MPL ITS
 
Smart solution un matematika sma 2013 (skl 2.16 deret aritmetika)
Smart solution un matematika sma 2013 (skl 2.16 deret aritmetika)Smart solution un matematika sma 2013 (skl 2.16 deret aritmetika)
Smart solution un matematika sma 2013 (skl 2.16 deret aritmetika)
 
Analisis Algoritma - Strategi Algoritma Divide and Conquer
Analisis Algoritma - Strategi Algoritma Divide and ConquerAnalisis Algoritma - Strategi Algoritma Divide and Conquer
Analisis Algoritma - Strategi Algoritma Divide and Conquer
 
Sistem Persamaan Linear
Sistem Persamaan LinearSistem Persamaan Linear
Sistem Persamaan Linear
 
Pertemuan 2
Pertemuan 2Pertemuan 2
Pertemuan 2
 
1 matriks.pptx
1 matriks.pptx1 matriks.pptx
1 matriks.pptx
 
deret kuasa
deret kuasaderet kuasa
deret kuasa
 
Modul+OR+-+Simpleks+Minimum.pdf
Modul+OR+-+Simpleks+Minimum.pdfModul+OR+-+Simpleks+Minimum.pdf
Modul+OR+-+Simpleks+Minimum.pdf
 
Determinan es
Determinan esDeterminan es
Determinan es
 
Matematika Diskrit - 11 kompleksitas algoritma - 04
Matematika Diskrit - 11 kompleksitas algoritma - 04Matematika Diskrit - 11 kompleksitas algoritma - 04
Matematika Diskrit - 11 kompleksitas algoritma - 04
 
Algoritma brute force
Algoritma brute forceAlgoritma brute force
Algoritma brute force
 
INISIASI 4 - PDGK 4108.pptx
INISIASI 4 - PDGK 4108.pptxINISIASI 4 - PDGK 4108.pptx
INISIASI 4 - PDGK 4108.pptx
 

4 jna jgnodh5lp0cdaaykzgqjvmqseyyopejhq62g

  • 2. • Divide and Conquer adalah strategi militer yang dikenal dengan nama divide ut imperes. • Strategi tersebut menjadi strategi 2 fundamental di dalam ilmu komputer dengan nama Divide and Conquer.
  • 3. Definisi • Divide: membagi masalah menjadi beberapa upa- masalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil (idealnya berukuran hampir sama), • Conquer: memecahkan (menyelesaikan) masing- masing upa-masalah (secara rekursif), dan 3 masing upa-masalah (secara rekursif), dan • Combine: mengabungkan solusi masing-masing upa- masalah sehingga membentuk solusi masalah semula.
  • 4. • Obyek permasalahan yang dibagi : masukan (input) atau instances yang berukuran n seperti: - tabel (larik), - matriks, - eksponen, - dll, bergantung pada masalahnya. 4 • Tiap-tiap upa-masalah mempunyai karakteristik yang sama (the same type) dengan karakteristik masalah asal, sehingga metode Divide and Conquer lebih natural diungkapkan dalam skema rekursif.
  • 5. Skema Umum Algoritma Divide and Conquer procedure DIVIDE_and_CONQUER(input n : integer) { Menyelesaikan masalah dengan algoritma D-and-C. Masukan: masukan yang berukuran n Keluaran: solusi dari masalah semula } Deklarasi r, k : integer Algoritma ≤ 5 if n ≤ n0 then {ukuran masalah sudah cukup kecil } SOLVE upa-masalah yang berukuran n ini else Bagi menjadi r upa-masalah, masing-masing berukuran n/k for masing-masing dari r upa-masalah do DIVIDE_and_CONQUER(n/k) endfor COMBINE solusi dari r upa-masalah menjadi solusi masalah semula } endif
  • 6. Mencari Nilai Minimum dan Maksimum (MinMaks) Persoalan: Misalkan diberikan tabel A yang Contoh Masalah 6 Persoalan: Misalkan diberikan tabel A yang berukuran n elemen dan sudah berisi nilai integer. Carilah nilai minimum dan nilai maksimum di dalam tabel tersebut.
  • 7. Penyelesaian dengan Algoritma Brute Force procedure MinMaks1(input A : TabelInt, n : integer, output min, maks : integer) { Mencari nilai minimum dan maksimum di dalam tabel A yang berukuran n elemen, secara brute force. Masukan: tabel A yang sudah terdefinisi elemen-elemennya Keluaran: nilai maksimum dan nilai minimum tabel } Deklarasi i : integer Algoritma: min← A { inisialisasi nilai minimum} 7 min← A1 { inisialisasi nilai minimum} maks←A1 { inisialisasi nilai maksimum } for i←2 to n do if Ai < min then min←Ai endif if Ai > maks then maks←Ai endif endfor
  • 8. Penyelesaian dengan Divide and Conquer Contoh 4.1. Misalkan tabel A berisi elemen-elemen sebagai berikut: 4 12 23 9 21 1 35 2 24 Ide dasar algoritma secara Divide and Conquer: 4 12 23 9 21 1 35 2 24 DIVIDE 4 12 23 9 21 1 35 2 24 8 SOLVE: tentukan min & maks pada tiap bagian 4 12 23 9 21 1 35 2 24 min = 4 min = 1 maks = 23 maks = 35 COMBINE 4 12 23 9 21 1 35 2 24 min = 1 maks = 35
  • 9. • Ukuran tabel hasil pembagian dapat dibuat cukup kecil sehingga mencari minimum dan maksimum dapat diselesaikan (SOLVE) secara lebih mudah. • Dalam hal ini, ukuran kecil yang dipilih adalah 9 • Dalam hal ini, ukuran kecil yang dipilih adalah 1 elemen atau 2 elemen.
  • 10. MinMaks(A, n, min, maks) Algoritma: 1. Untuk kasus n = 1 atau n = 2, SOLVE: Jika n = 1, maka min = maks = A[n] Jika n = 2, maka bandingkan kedua elemen untuk menentukan min dan maks. 2. Untuk kasus n > 2, (a) DIVIDE: Bagi dua tabel A menjadi dua bagian yang sama, A1 dan A2 10 A1 dan A2 (b) CONQUER: MinMaks(A1, n/2, min1, maks1) MInMaks(A2, n/2, min2, maks2) (c) COMBINE: if min1 <min2 then min <- min1 else min <- min2 if maks1 <maks2 then maks <- maks2 else maks <- maks1
  • 11. Contoh 4.2. Tinjau kembali Contoh 4.1 di atas. DIVIDE dan CONQUER: 4 12 23 9 21 1 35 2 24 4 12 23 9 21 1 35 2 24 4 12 23 9 21 1 35 2 24 SOLVE dan COMBINE: 4 12 23 9 21 1 35 2 24 11 4 12 23 9 21 1 35 2 24 min = 4 min = 9 min = 1 min = 35 min = 2 maks = 12 maks = 23 maks = 21 maks =35 maks = 24 4 12 23 9 21 1 35 2 24 min = 4 min = 1 min = 2 maks = 23 maks = 21 maks = 35 4 12 23 9 21 1 35 2 24 min = 4 min = 1 maks = 23 maks = 35 4 12 23 9 21 1 5 2 24 min = 1 maks = 35
  • 12. procedure MinMaks2(input A : TabelInt, i, j : integer, output min, maks : integer) { Mencari nilai maksimum dan minimum di dalam tabel A yang berukuran n elemen secara Divide and Conquer. Masukan: tabel A yang sudah terdefinisi elemen-elemennya Keluaran: nilai maksimum dan nilai minimum tabel } Deklarasi min1, min2, maks1, maks2 : integer Algoritma: if i=j then { 1 elemen } min←Ai maks←Ai else if (i = j-1) then { 2 elemen } if Ai < Aj then maks←Aj min←Ai else 12 else maks←Ai min←Aj endif else { lebih dari 2 elemen } k←(i+j) div 2 { bagidua tabel pada posisi k } MinMaks2(A, i, k, min1, maks1) MinMaks2(A, k+1, j, min2, maks2) if min1 < min2 then min←min1 else min←min2 endif if maks1<maks2 then maks←maks2 else maks←maks2 endif
  • 13. Kompleksitas waktu asimptotik:      > + = = = 2 , 2 ) 2 / ( 2 2 , 1 1 , 0 ) ( n n T n n n T Penyelesaian: Asumsi: n = 2k , dengan k bilangan bulat positif, maka 13 T(n) = 2T(n/2) + 2 = 2(2T(n/4) + 2) + 2 = 4T(n/4) + 4 + 2 = 4T(2T(n/8) + 2) + 4 + 2 = 8T(n/8) + 8 + 4 + 2 = ... = 2k – 1 T(2) + ∑ − = 1 1 2 k i i = 2k – 1 ⋅ 1 + 2k – 2 = n/2 + n – 2 = 3n/2 – 2 = O(n)
  • 14. • MinMaks1 secara brute force : T(n) = 2n – 2 • MinMaks2 secara divide and conquer: T(n) = 3n/2 – 2 14 • Perhatikan: 3n/2 – 2 < 2n – 2 , n ≥ 2. • Kesimpulan: algoritma MinMaks lebih mangkus dengan metode Divide and Conquer.
  • 15. Perpangkatan an Misalkan a ∈ R dan n adalah bilangan bulat tidak negatif: an = a × a × … × a (n kali), jika n > 0 15 an = a × a × … × a (n kali), jika n > 0 = 1 , jika n = 0
  • 16. Penyelesaian dengan Algoritma Brute Force function Exp1(input a, n : integer)→integer { Menghitung an , a > 0 dan n bilangan bulat tak-negatif Masukan: a, n Keluaran: nilai perpangkatan. } Deklarasi k, hasil : integer Algoritma: hasil←1 16 hasil 1 for k←1 to n do hasil←hasil * a endfor return hasil Kompleksitas waktu algoritma: T(n) = n = O(n)
  • 17. Penyelesaian dengan Divide and Conquer Algoritma menghitung an: 1. Untuk kasus n = 0, maka an = 1. 2. Untuk kasus n > 0, bedakan menjadi dua 17 2. Untuk kasus n > 0, bedakan menjadi dua kasus lagi: (i) jika n genap, maka an = an/2 ⋅ an/2 (ii) jika n ganjil, maka an = an/2 ⋅ an/2 ⋅ a
  • 18. Contoh 4.6. Menghitung 316 dengan metode Divide and Conquer: 316 = 38 ⋅ 38 = (38 )2 = ((34 )2 )2 = (((32 )2 )2 )2 = ((((31 )2 ))2 )2 )2 = ((((30 )2 ⋅ 3)2 )2 )2 )2 2 ⋅ 2 2 2 2 18 = ((((1)2 ⋅ 3)2 )2 )2 )2 = ((((3)2 ))2 )2 )2 = (((9)2 )2 )2 = (81) 2 )2 = (6561)2 = 43046721
  • 19. function Exp2(input a :real, n : integer) → real { mengembalikan nilai a^n, dihitung dengan metode Divide and Conquer } Algoritma: if n = 0 then return 1 else x←Exp2(a, n div 2) if odd(n) then { fungsi odd memberikan true jika n ganjil } 19 if odd(n) then { fungsi odd memberikan true jika n ganjil } return x * x * a else return x * x endif endif
  • 20. Kompleksitas algoritma:      > + = = 0 , ) 2 / ( 1 0 , 0 ) ( n n T n n T Penyelesaian: 20 T(n) = 1 + T( n/2 ) = 1 + (1 + T( n/4 ) = 2 + T( n/4 ) = 2 + (1 + T( n/8 ) = 3 + T( n/8 ) = ... = k + T(n/2k  )
  • 21. Persamaan terakhir diselesaikan dengan membuat n/2k =1, (n/2k ) = 1 → log (n/2k ) = log 1 log n – log 2k = 0 log n – k log 2 = 0 log n = k log 2 k = log n / log 2 = 2 log n sehingga 21 T(n) = 2 log n + T(1) = 2 log n + 1 + T(0) = 2 log n + 1 + 0 = 2 log n + 1 = O (2 log n)
  • 22. Merge Sort Algoritma: 1. Untuk kasus n = 1, maka tabel A sudah terurut dengan sendirinya (langkah SOLVE). 2. Untuk kasus n > 1, maka (a) DIVIDE: bagi tabel A menjadi dua bagian, bagian kiri dan bagian kanan, masing-masing 22 bagian kiri dan bagian kanan, masing-masing bagian berukuran n/2 elemen. (b) CONQUER: Secara rekursif, terapkan algoritma D-and-C pada masing-masing bagian. (c) MERGE: gabung hasil pengurutan kedua bagian sehingga diperoleh tabel A yang terurut.
  • 23. Contoh 4.3. Misalkan tabel A berisi elemen-elemen berikut: 4 12 23 9 21 1 5 2 DIVIDE, CONQUER, dan SOLVE: 4 12 23 9 21 1 5 2 4 12 23 9 21 1 5 2 4 12 23 9 21 1 5 2 23 4 12 23 9 21 1 5 2 4 12 23 9 21 1 5 2 MERGE: 4 12 9 23 1 21 2 5 4 9 12 23 1 2 5 21 1 2 4 5 9 12 21 23
  • 24. Contoh Merge: A1 A2 B 1 13 24 2 15 27 1 < 2 → 1 1 1 13 24 2 15 27 2 <13 → 2 1 2 1 13 24 2 15 27 13<15→13 1 2 13 24 1 13 24 2 15 27 15<24→15 1 2 13 15 1 13 24 2 15 27 24<27→24 1 2 13 15 24 1 13 24 2 15 27 27 → 1 2 13 15 24 27
  • 25. procedure MergeSort(input/output A : TabelInt, input i, j : integer) { Mengurutkan tabel A[i..j] dengan algoritma Merge Sort Masukan: Tabel A dengan n elemen Keluaran: Tabel A yang terurut } Deklarasi: k : integer Algoritma: 25 Algoritma: if i < j then { Ukuran(A)> 1} k←(i+j) div 2 MergeSort(A, i, k) MergeSort(A, k+1, j) Merge(A, i, k, j) endif
  • 26. Prosedur Merge: procedure Merge(input/output A : TabelInt, input kiri,tengah,kanan : integer) { Menggabung tabel A[kiri..tengah] dan tabel A[tengah+1..kanan] menjadi tabel A[kiri..kanan] yang terurut menaik. Masukan: A[kiri..tengah] dan tabel A[tengah+1..kanan] yang sudah terurut menaik. Keluaran: A[kiri..kanan] yang terurut menaik. } Deklarasi B : TabelInt i, kidal1, kidal2 : integer Algoritma: kidal1←kiri { A[kiri .. tengah] } kidal2←tengah + 1 { A[tengah+1 .. kanan] } i←kiri while (kidal1 ≤ tengah) and (kidal2 ≤ kanan) do if Akidal1 ≤ Akidal2 then Bi←Akidal1 kidal1←kidal1 + 1 else Bi←Akidal2 kidal2←kidal2 + 1 endif 26 endif i←i + 1 endwhile { kidal1 > tengah or kidal2 > kanan } { salin sisa A bagian kiri ke B, jika ada } while (kidal1 ≤ tengah) do Bi←Akidal1 kidal1←kidal1 + 1 i←i + 1 endwhile { kidal1 > tengah } { salin sisa A bagian kanan ke B, jika ada } while (kidal2 ≤ kanan) do Bi←Akidal2 kidal2←kidal2 + 1 i←i + 1 endwhile { kidal2 > kanan } { salin kembali elemen-elemen tabel B ke A } for i←kiri to kanan do Ai←Bi endfor { diperoleh tabel A yang terurut membesar }
  • 27. • Kompleksitas waktu: Asumsi: n = 2k T(n) = jumlah perbandingan pada pengurutan dua buah upatabel + jumlah perbandingan pada prosedur Merge 27    > + = = 1 , ) 2 / ( 2 1 , ) ( n cn n T n a n T
  • 28. Penyelesaian: T(n) = 2T(n/2) + cn = 2(2T(n/4) + cn/2) + cn = 4T(n/4) + 2cn = 4(2T(n/8) + cn/4) + 2cn = 8T(n/8) + 3cn = ... = 2k T(n/2k ) +kcn Berhenti jika ukuran tabel terkecil, n = 1: k 2 28 n/2k = 1 → k = 2 log n sehingga T(n) = nT(1) + cn 2 log n = na + cn 2 log n = O(n 2 log n)