7-Algoritma Devide & Conquer(2)
Transcript of 7-Algoritma Devide & Conquer(2)
8/3/2019 7-Algoritma Devide & Conquer(2)
http://slidepdf.com/reader/full/7-algoritma-devide-conquer2 1/4
2/18/20
A LGORITMA DIVIDE &
CONQUER(2)Strategi Algoritmik
S1 Teknik Informatika
UK Maranatha
1
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
QUICK SORT
Teknik mem-partisi tabel:
1. pilih x ∈∈∈∈ { A1, A2, ..., An} sebagai elemen pivot,
2. telusuri tabel dari kiri sampai ditemukan
elemen A p ≥≥≥≥ x
3. telusuri tabel dari kanan sampai ditemukan
elemen Aq ≤≤≤≤ x
4. pertukarkan A p ⇔⇔⇔⇔ Aq
5. ulangi (2), dari posisi p + 1, dan (3), dari posisi
q – 1 , sampai kedua penesuluran bertemu di
tengah tabel
2
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
3
CONTOH QUICK SORT
1 4 5 9 0 11 8 10 7 6
left right
1 4 5 9 0 11 8 10 7 6
left right
1 4 5 0 9 11 8 10 7 6
left right
CONTOH QUICK SORT
4
1 4 5 0 9 11 8 10 7 6
left right
1 4 5 0 9 11 8 10 7 6
right left
QUICK SORT
5
Karena posisi right < left, maka pivot ditukar dgn
nilai yg ditunjuk left
1 4 5 0 9 11 8 10 7 6
right left
1 4 5 0 6 11 8 10 7 9
right left
CONTOH QUICK SORT
6
Kondisi akhir setelah penukaran pivot
Nilai-nilai di sebelah kiri < nilai pivot
Nilai-nilai di sebelah kanan > pivot
1 4 5 0 6 11 8 10 7 9
1 4 5 0 11 8 10 7 9
8/3/2019 7-Algoritma Devide & Conquer(2)
http://slidepdf.com/reader/full/7-algoritma-devide-conquer2 2/4
2/18/20
QUICK SORT
Kasus terbaik terjadi bila pivot adalah elemen
median sedemikian sehingga kedua subtabel
berukuran relatif sama setiap kali pembagian.
n
n/2 n/2
n/4 n/4 n/4 n/4
n/8 n/8 …..
Kompleksitas : O(n 2log n) 7
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
QUICK SORT
Kasus terburuk terjadi bila pivot selalu elemen
maksimum/minimum tabel
n
1 n-1
1 n-2
1 n-3
Kompleksitas : O(n2)2
1 1
8
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
QUICK SORT
Kasus rata-rata terjadi jika pivot dipilih secara
acak dari elemen tabel, dan peluang setiap
elemen dipilih menjadi pivot adalah sama.
Kompleksitas waktunya:T avg(n) = O(n 2log n).
9
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
PERHITUNGAN P ANGKAT
Misalkana ∈ R dan n adalah bilangan bulat
tidak negatif, maka
an = a × a × … × a (sebanyak n kali), jika n > 0
= 1 , jika n = 0
10
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
A LGORITMA BRUTE FORCE
function Exp1(input a,n:integer)→integer
{Menghitung an,a>0dan nbilangan bulat tak-negatif
Masukan:a,n
Keluaran:nilai perpangkatan.
}
Deklarasi
k,hasil :integer
Algoritma:
hasil←1
for k←1to ndo
hasil←hasil *a
endfor
return hasil
Kompleksitas algoritma O(n)
11
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
A LGORITMA DIVIDE & CONQUER
Algoritma menghitungan:
Untuk kasus n = 0, maka an = 1.
Untuk kasus n > 0, bedakan menjadi dua kasus
lagi:
jika n genap, maka an = an/2 ⋅ an/2
jika n ganjil, maka an = an/2 ⋅ an/2 ⋅ a
Contoh :
35 = 32 .32 .3 = ((32)2 .3
= ((31)2)2 .3 = ((30)2 .3)2 )2 .3
= ((1)2 .3)2 )2 .3 = ((3)2 )2 .3
= (9)2 .3 = 81 . 3 = 24312
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
8/3/2019 7-Algoritma Devide & Conquer(2)
http://slidepdf.com/reader/full/7-algoritma-devide-conquer2 3/4
2/18/20
A LGORITMA DIVIDE & CONQUER
function Exp2(input a :real, n : integer) → real
{ mengembalikan nilai a^n, dihitung dengan metode Divide and Conquer }
Algoritma:i f n = 0 t h e n
return 1
else
x←Exp2(a, n div 2)
if odd(n) then { fungsi odd memberikan true jika n ganjil }
return x * x * a
else
return x * x
endif
endif
Kompleksitas algoritma O( 2log n)
13
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
PERKALIAN M ATRIKS
Misalkan
A dan B dua buah matrik berukuran n × n
(asumsikan n = 2k , k = 1, 2, …).
Perkalian matriks:C = A × B
Elemen-elemenhasilnya:
∑=
=+++=
n
k kjik njin ji jiijbabababac
1
2211L
14
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
A LGORITMA BRUTE FORCE
function KaliMatriks1(input A,B:Matriks,input n:integer)→
Matriks
{Memberikan hasil kalimatriks Adan Byangberukuran n× n.
Masukan:matriks integerAdan B,ukuran matriks (n)
Keluaran:matriks C=A× B.
}
Deklarasi
i,j,k:integer
C:Matriks
Algoritma:
for i←1to ndo
for j←1to ndo
Ci,j←0{inisialisasi penjumlah }
for k← 1to ndo
Ci,j ← Ci,j +Ai,k *Bk,j
endfor
endfor
endfor
return C
Kompleksitas algoritma O( n3)15
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
A LGORITMA DIVIDE & CONQUER
Matriks A dan B dibagi menjadi 4 buah matriks
bujur sangkar.
Masing-masingmatriks bujur sangkar
berukurann/2 × n/2
Elemen-elemenmatriksC adalah:C 11 = A11 ⋅ B11 + A12 ⋅ B21
C 12 = A11 ⋅ B12 + A12 ⋅ B22
C 21 = A21 ⋅ B11 + A22 ⋅ B21
C 22 = A21 ⋅ B12 + A22 ⋅ B22
2221
1211
A A
A A
2221
1211
B B
B B
2221
1211
C C
C C X =
16
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
C ARA PEMECAHAN
Misalkan matriks A adalah :
Matriks tsb dibagi menjadi 4 sub matriks :
−10945
3215
1012521
16843
521
43
1012
168
945
15
−10
32
A11 = A12 =
A21= A22 =
17
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
A LGORITMA DIVIDE & CONQUER
function KaliMatriks2(input A,B:Matriks,input n:integer)→
Matriks
{Memberikan hasil kalimatriks Adan Byangberukuran n× n.
Masukan:matriks integerAdan B,ukuran matriks (n)
Keluaran:matriks C=A× B.
}
Deklarasi
i,j,k:integer
A11,A12,A21,A22,
B11,B12,B21,B22,
C11,C12,C21,C22:Matriks
Algoritma:
if n=1then
return A× B{perkalian biasa }
else
Bagi Amenjadi A11,A12,A21,dan A22yangmasing-masing
berukuran n/2× n/2
Bagi Bmenjadi B11,B12,B21,dan B22yangmasing-masing
berukuran n/2× n/2
C11← KaliMatriks2(A11,B11,n/2)+KaliMatriks2(A12,B21,n/2)
C12← KaliMatriks2(A11,B12,n/2)+KaliMatriks2(A12,B22,n/2)
C21← KaliMatriks2(A21,B11,n/2)+KaliMatriks2(A22,B21,n/2)
C22← KaliMatriks2(A21,B12,n/2)+KaliMatriks2(A22,B22,n/2)
return C{Cadalah gabungan C11,C12,C13,C14}
endif
Kompleksitas algoritma O( n3)
18
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
8/3/2019 7-Algoritma Devide & Conquer(2)
http://slidepdf.com/reader/full/7-algoritma-devide-conquer2 4/4
2/18/20
PERKALIAN MATRIKS STRASSEN
19
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
DC
B A
Misalkan matriks X dan Y adalah :
X = Y =
Perkalian Matriks XY menjadi :
Kompleksitas : O(n log2
7 ) = O( n2.81)
H G
F E
++
++
DH CF DGCE
BH AF BG AE
PERKALIAN MATRIKS STRASSEN
Hasil Perkalian XY dihitung sbb :
Dimana
• P1 = A(F – H)
• P2 = (A + B)H
• P3 = (C + D)E
• P4 = D(G – E)
• P5 = (A + D)(E + H)
• P6 = (B – D)(G + H)
• P7 = (A – C)(E + F) 20
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
−−++
++−+
735143
216245
PPPPPP
PPPPPP
PERKALIAN MATRIKS STRASSEN
Baris 1 kolom1
P5 + P4 – P2 + P6 =
(A + D)(E + H) + D(G – E) – (A + B)H + (B – D)(G + H) =
AE+AH+DE+DH+DG–DE – (AH+BH)+BG+BH–DG–DH =
AE+AH+DE+DH+DG–DE –AH –BH + BG + BH –DG –DH =
AE + BG
21
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
L ATIHAN
Gunakan algoritma perkalianmatriks Strassen
untuk matriks sbb :
A = B =
22
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0
84
23
69
51
REFERENSI
Materi kuliah IF 2251 Strategi Algoritmik :
http://kur2003.if.itb.ac.id/
Mata kuliah IF 2251 Strategi Algoritmik (sem.4)
23
S t r a t e gi A l g o/ S 1 I F / F T I / UKM/ MA / 2 0 1 0