Anda di halaman 1dari 26

Analisis Algoritma

Pertemuan 14
Strategi Algoritma Divide & Conquer
Pemateri : Chrismikha Hardyanto S.Kom., M.Kom.

1
AGENDA PERKULIAHAN

 Pengantar Strategi Divide & Conquer

 Karakteristik Divide & Conquer

 Langkah Kerja Divide & Conquer

 Contoh Kasus

2
Strategi Algoritma
Berikut ini adalah beberapa contoh strategi yang dapat diterapkan dalam merancang
sebuah algoritma :

1. Strategi Solusi Langsung (Direct Solution)


 Brute-Force , Greedy

2. Strategi Solusi Atas-Bawah (Top-Down Solution)


 Divide & Conquer

3. Strategi Solusi Bawah-Atas (Bottom-Up Solution)


 Dynamic Programming

3
Strategi Algoritma :
Divide & Conquer
Definisi Divide & Conquer

Merupakan strategi algoritma yang menyelesaikan permasalahan dengan cara


membaginya menjadi sub-permasalah yang berukuran lebih kecil dari
masalah aslinya, dengan tujuan agar lebih mudah untuk diselesaikan.

“Prinsip divide & conquer saat mencari solusi adalah


Divide it! “

5
Karakteristik Strategi Divide & Conquer
1) Di setiap langkah pencarian solusi, algoritma divide & conquer akan selalu
memecah himpunan permasalahan menjadi beberapa (n-upa) permasalahan
yang lebih kecil.

2) Setiap n-upa masalah yang terbentuk akan dicarikan solusi nya. Setiap masalah
yang lebih kecil selalu memiliki masalah yang sama dengan parentnya,
sehingga cara/logika pencarian solusi pun sama.

3) Solusi yang terbentuk pada setiap n-upa masalah akan digabungkan untuk
mendapatkan solusi akhir dari permasalahan yang diselesaikan (masalah utama
pada himpunan masalah awal)

6
Gambaran Umum Divide & Conquer
Strategi algoritma divide and conquer memiliki tiga langkah/proses utama (algoritma)
untuk mencari solusi, yaitu:

1. DIVIDE : membagi permasalahan menjadi beberapa upa - masalah yang


memiliki kemiripan dengan persoalan semula namun berukuran lebih kecil
(idealnya berukuran hampir sama).

2. CONQUER : Memecahkan (menyelesaikan) masing - masing upa - masalah


yang dihasilkan pada tahap divide (secara rekursif).

3. COMBINE : Mengabungkan solusi yang dihasilkan dari masing - masing upa-


masalah sehingga dapat membentuk solusi sebenarnya dari masalah semula.

7
Gambaran umum bagaimana
5
menyelesaikan masalah menggunakan
Algoritma D & C

Obyek permasalahan yang dibagi


dapat berupa masukan (input)
sejumlah n seperti:
- tabel (larik),
- matriks,
- tree,
- dll, bergantung apa masalahnya.
Algoritma Umum Divide & Conquer

“Jika pembagian selalu menghasilkan 2


sub-masalah yang berukuran sama“

9
Permasalahan Umum pada D&C
Beberapa jenis permasalahan yang umum diselesaikan dengan strategi D&C, antara
lain :
- Summation

- Min Max Problem

- Pengurutan (Merge Sort)

- Binary Tree Traversal

- Multiplication of Large Integer

- The Closest-Pair & Convex-Hull Problem (Masalah


pasangan terdekat)

10
Untuk bisa lebih memahami algoritma
Divide & Conquer, mari kita lihat
penerapannya dalam contoh kasus
berikut…
Kasus 1:
Min Max Probem
Kasus 1 : Nilai Maksimum dan Nilai Minimum

13
Kasus 1 : Nilai Maksimum dan Nilai Minimum
Diketahui suatu array A dengan panjang sebesar n yang berisi nilai-nilai integer.
Tentukan nilai minimum dan maksimum sekaligus dalam array tersebut.

4 12 23 9 21 1 35 2 24

Bagaimana mencari nilai minimum dan maksimum


dengan menggunakan algoritma brute force ??

14
Langkah Penyelesaian (D & C)

15
Langkah Penyelesaian (D & C)

16
Langkah Penyelesaian (D & C)
Contoh Algoritma (pseudocode)
Contoh Algoritma (pseudocode)
Kasus 2:
Pengurutan Elemen
Kasus 2 : Pengurutan

Diberikan beberapa buah data dengan kondisi belum terurut/acak yang


akan diurutkan secara ascending atau descending sesuai dengan kondisi
pengurutan yang diinginkan

21
Kasus 2 : Pengurutan
Diketahui array A seukuran n elemen yang berisi nilai-nilai integer. Urutkan nilai
didalam array tersebut sehingga dapat terurut secara ascending.

8 3 2 9 7 1 5 4

Akan dirutukan dengan menggunakan algoritma Merge


Sort ?? (implementasi D&C)

22
Langkah Penyelesaian (D & C)

23
Kasus 2 23

divide

Conquer
&
Combine
Ilustrasi Langkah Dari:
Merge Sort

https://www.youtube.com/watch?v=XaqR3G_NVoo

Untuk contoh algoritma (pseudocode) /


implementasi program silahkan dieksplore secara
mandiri
Terima Kasih

26

Anda mungkin juga menyukai