Divide and Conquer Analisa Algoritma Prinsip Dasar n
- Slides: 20
Divide and Conquer Analisa Algoritma
Prinsip Dasar n n Membagi n input menjadi k sub set input yang berbeda (1< k < n) Dari k sub set input yang berbeda akan terdapat k subproblem Setiap subproblem mempunyai solusi masing-masing (k sub solusi) Dari k sub solusi akan diperoleh solusi yang optimal yang diharapkan
n n n Jika subproblem masih dianggap besar maka dapat dipecah lagi menjadi sub problem yang lebih kecil lagi Metoda DANDC dapat digunakan lagi secara rekursif Pemecahan n input menjadi k input sehingga menimbulkan k sub problem dpt dilakukan apabila k subproblem tsb mempunyai sifat yang sama terhadap persoalan semula
N INPUT 1 INPUT 2 INPUT 3 INPUT k subproblem subsolusi Solusi optimal
Algoritma DANDC Procedure DANDC(p, q) Global n, A(1: N): integer m, p, q If small(p, q) then G(p, q) else m DIVIDE(p, q) COMBINE(DANDC(p, m), DANDC(m+1, q) Endif End DANDC
n n Small(p, q) adalah fungsi bernilai boole yang menentukan apakah ukuran input (q-p+1) cukup kecil sehingga tak perlu dipecah lagi, jika demikian maka G(p, q) yang diproses, jika tidak maka fungsi DIVIDE(p, q) yg diproses Fungsi DIVIDE(p, q) menghasilkan bilangan bulat yg menguraikan input menjadi dua bagian. Misalnya input dari p sampai q, dipecah menjadi p: m dan m+1: q Pecahan tadi menjadi dua subproblem dan menghasilkan dua subsolusi misalnya X dan Y Fungsi COMBINE(X, Y) merupakan fungsi penentu solusi umum atau yg diharapkan dgn memanfatkan solusi X dan Y.
Algoritma DANDC n n n n 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
Carilah min dan max nya 1 2 3 4 5 6 7 8 9 22 13 -5 -8 15 60 17 31 47
Procedure straitmaxmin(A, n, max, min) Max min A(1) For i=2 to n do if A(i) > max then max A(i) else if A(i) < min then min A(i) endif Endfor End straitmaxmin
BEST CASE 2 4 5 10 Max=2 ; Min=2 i=2 A(2) > max maka max = 4 i=3 A(3) > max maka max = 5 i=4 A(4) > max maka max = 10 Jadi diperoleh min=2 dan max =10 Operasi pembandingan yang dilakukan sebanyak 3 atau (n-1)
Worst case 10 5 4 2 Max=10; min=10 i=2; A(2) > max A(2) < min , mk min=5 i=3; A(3) > max A(3) < min, mk min =4 i=4; A(4) > max A(4) < min, mk min =2 Jadi min=2 max=10 Operasi pembandingan yang dilakukan sebanyak 6 atau 2(n-1)
Average case Rata-rata dari best case dan worst case [(n-1) + 2(n-1) ]/2 = 3/2 (n-1)
1, 9 1, 5 1, 3 1, 2 6, 9 4, 5 3, 3 6, 7 8, 9
60, -8 22, -5 22, 13 60, 17 15, 8 -5, -5 60, 17 47, 31
T(n/2) + T(n/2)+2 ; utk n > 2 T(n) = 1 ; utk n = 2 0 ; utk n = 1
Mergesort Terdapat barisan n input elemen yang ditempatkan dalam sebuah array. Pisahkan n elemen tsb menjadi dua bagian. Jika masing-2 bagian masih terlalu besar, dapat dibagi lagi. Setiap bagian diurutkan, lalu digabungkan dengan bagian lain.
Algoritma mergesort n n n Terdiri dari dua prosedur yaitu mergesort dan merge Mergesort utk mengurutkan Merge utk menggabungkan
Procedure mergesort(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
Procedure merge(low, mid, high) H low; I low; j mid+1 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 A(k) B(k) Repeat End merge
- Divide and conquer
- Divide and conquer algoritma
- Divide and conquer
- Algoritma divide and conquer
- Penerapan algoritma divide and conquer
- Divide and conquer advantages and disadvantages
- Top down greedy approach
- Voronoi diagram
- Delaunay triangulation divide and conquer algorithm
- Counting inversions divide and conquer
- Divide et impera c++
- Dynamic programming bottom up
- Dynamic programming vs divide and conquer
- Prove correctness of divide and conquer
- Divide and conquer
- Skyline problem divide and conquer java
- Euclidean algorithm divide and conquer
- Divide and conquer pseudocode
- The expression is a
- Defective chessboard problem divide and conquer
- Divide and conquer algorithm