Dokumen tersebut membahas algoritma pengurutan dan pencarian dengan metode divide and conquer. Metode ini membagi masalah menjadi submasalah kecil, menyelesaikan submasalah tersebut secara rekursif, lalu menggabungkan hasilnya untuk menyelesaikan masalah utama. Algoritma pengurutan seperti merge sort dan algoritma pencarian seperti binary search merupakan contoh dari pendekatan ini. Dokumen ini juga menjelaskan tahapan
3. Algoritma Pengurutan dengan
Metode Divide and Conquer
Dua pendekatan (approach) pengurutan:
Mudah membagi, sulit menggabung (easy split/hard join).
Algoritma pengurutan yang termasuk jenis ini:
a. urut-gabung (Merge Sort)
b. urut-sisip (Insertion Sort)
Sulit membagi, mudah menggabung (hard split/easy join).
Algoritma pengurutan yang termasuk jenis ini:
a. urut-cepat (Quick Sort)
b. urut-seleksi (Selection Sort)
5. Hard Split/Easy Join
Tabel A dibagi dua berdasarkan nilai elemennya.
Misalkan elemen-elemen A1 elemen-elemen A2
6. Merge Sort
Untuk kasus n = 1, maka tabel A sudah terurut dengan
sendirinya (langkah SOLVE).
Untuk kasus n > 1, maka :
DIVIDE: bagi tabel A menjadi dua bagian, bagian kiri dan bagian
kanan, masing-masing bagian berukuran n/2 elemen.
CONQUER: Secara rekursif, terapkan algoritma D-and-C pada ma
sing-masing bagian.
MERGE: gabung hasil pengurutan kedua bagian sehingga
diperoleh tabel A yang terurut.
10. Kompleksitas Waktu
Asumsi: n = 2k
T(n) = jumlah perbandingan pada pengurutan dua buah upa-tabel
+ jumlah perbandingan pada prosedur Merge
1,)2/(2
1,
)(
ncnnT
na
nT
11. Kompleksitas Waktu (lanjutan)
Penyelesaian persaman rekurens: T(n) = 2T(n/2) + cn
= 2(2T(n/4) + cn/2) + cn = 4T(n/4) + 2c
n
= 4(2T(n/8) + cn/4) + 2cn = 8T(n/8) +
3cn
= ...
= 2k T(n/2k) +kcn
Berhenti jika ukuran tabel terkecil, n = 1: n/2k = 1 k = 2log n
sehingga T(n) = nT(1) + cn 2log n
= na + cn 2log n
= O(n 2log n)
12. Algoritma Pencarian dengan
Metode Divide and Conquer
Binary Search : salah satu contoh dari algoritme divide and conquer
(atau lebih khusus algoritme decrease and conquer) dan sebuah
pencarian dikotomi
Binary Search (Pencarian Biner) dapat dilakukan jika data sudah
dalam keadaan urut. Dengan kata lain, apabila data belum dalam
keadaan urut, pencarian biner tidak dapat dilakukan.
Dalam kehidupan sehari-hari, sebenarnya kita juga sering menggun
akan pencarian biner. Misalnya saat ingin mencari suatu kata dalam
kamus.
13. Prinsip Pencarian Biner
1. Mula-mula diambil posisi awal = 1 dan posisi akhir = N
2. Cari posisi data tengah dengan rumus (posisi awal + posisi akhir) /
2
3. Data yang dicari dibandingkan dengan data tengah.
4. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir diangg
apsama dengan posisi tengah – 1.
5. Jika lebih besar, proses dilakukan kembali tetapi posisi awal diangg
apsama dengan posisi tengah + 1.
6. Demikian seterusnya sampai data tengah sama dengan yang dicari.
14. Contoh Masalah
Misalkan kita ingin mencari 17 pada sekumpulan dat
a berikut :
3 9 1 1 1 2 1 5 1 7 2 3 3 1 3 5
15. Iterasi 1
1. Mula–mula dicari data tengah, dengan rumus (1+ 9) / 2 = 5.
2. Berarti data tengah adalah data ke-5, yaitu 15.
3. Data yang dicari, yaitu 17, bandingkan dengan data tengah ini.
4. Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awa
l
dianggap sama dengan posisi tengah + 1 atau 6 (data 17).
16. Iterasi 2
1. Data tengah yang baru didapat dengan rumus (6 + 9) / 2 = 7. Berar
ti data tengah yang baru adalah data ke-7, yaitu 23.
2. Data yang dicari, yaitu 17 dibandingkan dengan data tengah ini.
3. Karena 17 < 23, berarti proses dilanjutkan tetapi kali ini posisi akhi
r dianggap sama dengan posisi tengah – 1 atau 6 (data 17).
17. Iterasi 3
1. Data tengah yang baru didapat dengan rumus (6 + 6) / 2 = 6. Berar
ti data tengah yang baru adalah data ke-6, yaitu 17.
2. Data yang dicari dibandingkan dengan data tengah ini dan ternyata
sama. Jadi data ditemukan pada indeks ke-6.
18. Diskusi
Bagaimana jika data yang dicari tidak ada, misalnya 16?
Pencarian biner ini akan berakhir jika data ditemukan atau
posisi awal lebih besar dari posisi akhir. Jika posisi awal
sudah lebih besar daripada posisi akhir berarti data tidak
ditemukan.
19. Penyelesaian
Untuk lebih jelasnya perhatikan proses pencarian 16 pada data di at
as. Prosesnya hampir sama dengan pencarian 17. Tetapi setelah posi
si
awal = posisi akhir = 6, proses masih dilanjutkan lagi dengan posisi
awal = 6 dan posisi akhir = 5
Disini dapat dilihat bahwa posisi awal lebih besar daripada posisi
akhir, yang artinya data tidak ditemukan.
20. REFFERENCE
Munir, Rinaldi. Diktat Kuliah “Kompleksitas Algoritma”, Departemen T
eknik Informatika ITB
Levitin, Anany. 2012. Introduction to the Design and Analysis of A
lgorithms, 3rd Edition.Addison Wesley