• Tidak ada hasil yang ditemukan

Algoritma Divide and Conquer (DandC) Dr. D. L. Crispina Pardede, D.E.A. Dr. Ricky Agus Tjiptanata, S.T., S.Si., M.M.

N/A
N/A
Protected

Academic year: 2022

Membagikan "Algoritma Divide and Conquer (DandC) Dr. D. L. Crispina Pardede, D.E.A. Dr. Ricky Agus Tjiptanata, S.T., S.Si., M.M."

Copied!
24
0
0

Teks penuh

(1)

Algoritma Divide and Conquer (DandC)

Dr. D. L. Crispina Pardede, D.E.A.

Dr. Ricky Agus Tjiptanata, S.T., S.Si., M.M.

(2)

Masalah Pencarian:

Bilangan Max dan Min

3

Algoritma DANDC secara umum

2

Pengertian DANC

1

4

Penerapan DANDC

5

pada masalah Pengurutan:

Merge Sort

6

LINGKUP MATERI

Penerapan DANDC pada masalah

Pengurutan:

Quick Sort

Penerapan DANDC pada masalah

Pencarian:

MaxMin

(3)

D ivide and C

dikenal sebagai strategi militer yang menerapkan teknik pecah belah ( divide )

untuk memenangi ( impera ) .

Strategi ini kemudian menjadi strategi fundamental dalam ilmu komputer dengan nama

onquer

(4)

DEFINISI

Divide : membagi masalah menjadi beberapa sub-masalah yang memiliki sifat yang sama dengan masalah

semula namun berukuran lebih kecil (idealnya berukuran hampir sama).

Conquer : memecahkan (menyelesaikan) masing-masing sub- masalah (secara rekursif).

Combine: menggabungkan solusi masing-masing sub-masalah

sehingga membentuk solusi bagi masalah semula.

(5)

Pengertian Divide and Conquer (DANDC)

Divide and Conquer (DandC) mengandung arti Pemecahbelahan.

Dalam hal ini, yang dipecahkan adalah ukuran data dari suatu masalah yang ingin diselesaikan.

DandC ini merupakan strategi desain algoritma yang paling terkenal, yang tahapannya adalah sebagai berikut :

1. Bagi masalah menjadi dua atau lebih sub masalah yang lebih kecil (fokusnya pada ukuran data)

2. Selesaikan/solusikan sub masalah yang lebih kecil secara rekursif

3. Dapatkan solusi untuk masalah asli (lebih besar) dengan menggabungkan solusi dari sub masalah tersebut

(6)

Ilustrasi Teknik Divide and Conquer

Sub masalah 2 dengan ukuran n/2 Sub masalah 1

dengan ukuran n/2

Solusi dari Sub masalah 1

Solusi dari

masalah awal (semula)

Solusi dari Sub masalah 2 Sebuah masalah

dengan ukuran n

Umumnya menggunakan algoritma rekursif.

(7)

Teknik Divide and Conquer dapat dipahami seperti berikut ini:

Metode Divide and conquer :

Jika ukuran masalah cukup kecil, langsung diselesaikan.

Jika tidak:

• Pecahkan (Divide): Pecahkan masalah menjadi dua atau lebih sub masalah yang terpisah

• Solusikan (Conquer): solusikan sub masalahnya

• Gabungkan (Combine): Gabungkan solusi dari sub masalah-sub masalah tersebut sehingga diperoleh solusi dari masalah awal

(semula)

(8)

Sebanyak n input dipartisi menjadi k subset input yang berbeda (1< k  n)  k subproblem

k subproblem  k subsolusi  solusi SKEMA UMUM

METODE DANDC

(9)

Algoritma Divide and Conquer (DandC) Secara Umum

PROCEDURE DANDC(p,q)

GLOBAL n,A(1:n); INTEGER m.p.q IF SMALL(p,q) THEN G(p,q)

ELSEM  DIVIDE(p,q)

COMBINE(DANDC(p,m),DANDC(m+1,q)) ENDIF

END DANDC SMALL(p,q) adalah fungsi yang bernilai boole yang

menentukan apakah input q-p+1 berukuran cukup kecil sedemikian sehingga solusi dapat dihitung tanpa

pemecahan. Jika demikian halnya, maka fungsi G(p,q) yang dipanggil.

Pada keadaan lain fungsi DIVIDE(p,q) yang dipanggil.

Fungsi DIVIDE(p,q) menghasilkan integer yang menguraikan input menjadi 2 bagian. Misal m = DIVIDE(p,q), maka input dipecah menjadi A(p:m) dan A(m+1,q)

(10)

Jika sub masalah masih relatif cukup besar,

maka metode DANDC dapat digunakan lagi untuk keadaan tersebut.

Pemakaian ulang DANDC dinyatakan dengan teknik rekursif.

Pemecahan menjadi k subproblem ini menunjukkan bahwa ia mempunyai sifat yang sama dengan problem aslinya (awalnya).

Metode DANDC biasa dipakai pada searching dan sorting.

(11)

Masalah Pencarian: Bilangan Max dan Min

Algoritma iteratif untuk menentukan Bilangan Max dan Min PROCEDURE STRAITMAXMIN

INTEGER i,n

max  min  A(1) For i  2 TO n DO

IF A(i) > max THEN max  A(i) ……… bagian perbandingan ELSE IF A(i) < min THEN min  A(i) ……… bagian perbandingan ENDIF

ENDIF REPEAT

END STRAITMAXMIN

(12)

Procedure STRAITMAXMIN tersebut akan menghasilkan 3 keadaan, yakni:

-. Best Case: bila data tersusun menaik, dengan banyak perbandingan adalah n-1 -. Worst Case: bila data tersusun menurun, dengan banyak perbandingan adalah

2(n-1)

-. Average Case: bila data tidak tersusun menaik ataupun menurun, dengan banyak perbandingan adalah 3(n-1)/2

 

Bila bagian perbandingan pada procedure STRAITMAXMIN diubah menjadi : IF A(i) > max THEN max  A(i) ENDIF

IF A(i) < min THEN min  A(i) ENDIF

Maka Best Case = Worst Case = Average Case = 2(n-1)

(13)

PROCEDURE MAXMIN(i,j,fmax,fmin) INTEGER i,j; GLOBAL n,A(1:n)

CASE

: i=j ; fmax  fmin  A(i)

: i=j-1 ; IF A(i) < A(j) THEN fmax  A(j); fmin  A(i) ELSE fmax  A(i); fmin  A(j)

ENDIF : ELSE

mid   (i+j)/2 

CALL MAXMIN(i,mid,gmax,gmin) CALL MAXMIN(mid+1,j,hmax,hmin) fmax  MAX(gmax,hmax)

fmin  MIN(gmin,hmin) ENDCASE

END MAXMIN

Penerapan DANDC

pada masalah Pencarian: MaxMin

(14)

CONTOH

A = { 22, 13, -5, -8, 15, 60, 17, 31, 47 }

simulasi dari procedure MAXMIN tersebut adalah:

Jadi outputnya adalah max = 60 dan min = -8

(15)

untuk n  power value dari 2 = 2k dan k integer positif, maka :

T(n) = 2 T(n/2) + 2

= 2 (2 T(n/4) + 2) + 2

= 4 T(n/4) + 4 + 2 = 22 T(n/22) + 22 + 2

= 23 T(n/23) + 23 + 22 + 2 ..

.

= 2k-1 T(2) + 2k-1 + 2k-2 + … + 23 + 22 + 2

= 2k-1 +2k - 2

= 3n/2 - 2

 Jadi T(n) = (n) Jumlah perbandingan elemennya, yang

direpresentasikan oleh T(n) adalah :  

(16)

Pengurutan ( Sorting )

Untuk mengurutkan barisan n input elemen yang ditempatkan dalam suatu array.

Urutan yang diinginkan adalah urutan yang tidak turun (non decreasing).

 

Contoh barisan dengan urutan :

1. Menaik : 5, 8, 10, 12, 15, 16 2. Menurun : 20, 17, 15, 14, 12, 10 3. Tidak turun : 5, 9, 10, 12, 12, 15, 16 4. Tidak naik : 16, 15, 15, 12, 10, 8

Dari Metode Sorting yang ada, akan dibahas metode merge sort dan quick sort.

(17)

Penerapan DANDC

pada masalah Pengurutan: Merge Sort

Algoritma dari Merge Sort terdiri dari dua prosedur:

prosedur MERGESORT dan prosedur MERGE.

Kedua prosedur tersebut tidak dapat dipisahkan satu dengan yang lainnya (terintegrasi).

  PROCEDURE MERGESORT(low,high) INTEGER low,high

IF low < high THEN

mid   (low + high) / 2 

CALL MERGESORT(low,mid)

CALL MERGESORT(mid+1,high) CALL MERGE(low,mid,high)

ENDIF

END MERGESORT

(18)

PROCEDURE MERGE(low,mid,high) INTEGER h,I,j,k,low,mid,high

GLOBAL A(low:high); LOCAL B(low:high) h  low; j  mid + 1; i  low

WHILE h  mid AND j  high DO

IF A(h)  A(j) THEN B(i)  A(h); h  h+1 ELSE B(i)  A(j); j  j+1 ENDIF

i  i+1 REPEAT

IF h > mid THEN FOR k  j TO high DO B(i)  A(k); i  i+1 REPEAT

ELSE FOR k  h TO mid DO B(i)  A(k); i  i+1 REPEAT

ENDIF

FOR k  low TO high DO B(k)  A(k)

REPEAT

END MERGE

(19)

CONTOH

A(1:10) yakni:

A = { 310, 285, 179, 652, 351, 423, 861, 254, 450, 520 } Representasi di dalam tree dari CALL MERGESORT sbb :

(20)

CONTOH

A(1:10) yakni:

A = { 310, 285, 179, 652, 351, 423, 861, 254, 450, 520 } Representasi di dalam tree dari CALL MERGE sbb:

T(n) = (n 2log n)

(21)

Penerapan DANDC

pada masalah Pengurutan: Quick Sort

Algoritma Quick Sort terdiri dari dua prosedur:

prosedur PARTITION dan prosedur QUICKSORT.

 PROCEDURE QUICKSORT(p,q) IF p < q THEN

j  q+1

CALL PARTITION(p,j)

CALL QUICKSORT(p,j-1) CALL QUICKSORT(j+1,q) ENDIF

END QUICKSORT

(22)

PROCEDURE PARTITION(m,p)

INTEGER m,p,i; GLOBAL A(m-1,p) V  A(m); i  m

LOOPLOOP i  i+1 UNTIL A(i)  V REPEAT LOOP p  p-1 UNTIL A(p)  V REPEAT

IF i < p THEN CALL INTERCHANGE(A(i),A(p)) ELSE EXIT

REPEAT

A(m)  A(p); A(p)  V END PARTITION

(23)

CONTOH :

Suatu array A berisi elemen-elemen :

i p 1 2 3 4 5 6 7 8 9 10

65 70 75 80 85 60 55 50 45 +

2 9 65 45 75 80 85 60 55 50 70 +

3 8 65 45 50 80 85 60 55 75 70 +

4 7 65 45 50 55 85 60 80 75 70 +

5 6 65 45 50 55 60 85 80 75 70 +

6 5 60 45 50 55 65 85 80 75 70 +

5 4 55 45 50 60 65 85 80 75 70 +

4 3 50 45 55 60 65 85 80 75 70 +

3 2 45 50 55 60 65 85 80 75 70 +

10 9 45 50 55 60 65 70 80 75 85 +

7 6 45 50 55 60 65 70 80 75 85 +

9 8 45 50 55 60 65 70 75 80 85 +

Analisisnya :

Worst Case = (n2)

Average Case = (n log n)

Hasil tracenya adalah sebagai berikut:

65 70 75 80 85 60 55 50 45

1 2 3 4 5 6 7 8 9

(24)

Daftar Pustaka

Suryadi, M.T. Pengantar Analisis Algoritma, Jakarta: Gunadarma Rinaldi Munir, Diktat Kuliah Strategi Algoritma Bandung:ITB

A. Levitin “Introduction to the Design & Analysis of Algorithms,” 2nd ed., Ch. 4

Gambar

Ilustrasi Teknik Divide and Conquer Sub masalah 2  dengan ukuran  n /2Sub masalah 1 dengan ukuran n/2 Solusi dari  Sub masalah 1 Solusi dari

Referensi

Dokumen terkait

Algoritma Divide and Conquer (DANDC) memecah masalah menjadi submasalah-submasalah independen yang lebih kecil sehingga solusi submasalah–submasalah dapat diperoleh

Berdasarkan latar belakang permasalahan di atas, maka pokok permasalahan yang menjadi fokus penelitian ini adalah susunan mesin yang terletak di lantai produksi memiliki pola

Algoritma Divide and Conquer (DANDC) memecah masalah menjadi submasalah-submasalah independen yang lebih kecil sehingga solusi submasalah – submasalah dapat diperoleh

Perbandingan antara sub rute pendistribusian tabung yang digunakan oleh perusahaan dengan sub rute yang hasil optimasi menggunakan metode nearest neighbour memiliki

YANG AKAN MENJADI ASSET SDM EFEKTIF DALAM MENGHADAPI MASALAH &amp; TANTANGAN HARIAN DI PERUSAHAAN.. 1 2 3

Masalah keselamatan kerja dalam pengoperasian dan pemeliharaan alat-alat untuk tahapan pekerjaan perpipaan menjadi prioritas untuk selalu diperhatikan oleh para pekerja. Hampir

Sebelumnya dikatakan bahwa Kecamatan Reok lolos untuk menjadi Pusat Kegiatan Lokal dikarenakan memiliki pelabuhan kelas III dan jalan areteri yang mendukung

Jika perencana melakukan studi banding tentang cara-cara pemecahan masalah itu, maka ia memiliki pilihan-pilihan untuk dirinya dan karena itu membuat per- hitungan mana yang