7-Algoritma Devide & Conquer(2)

5
2/18/2010 1  A LGORITMA DIVIDE & CONQUER(2) Strategi Algoritmik S1 Teknik Informatika UK Maranatha 1  S  t  r  a  t   e   g i   A l     g  o /    S 1 I  F /   F T I  /    U K M /   M A /   2  0 1  0 QUICK SORT Tekn ik mem-p arti si tab el: 1. pilih x { A 1 , A 2 , ..., A n } sebagai elemen pivot, 2. telusuri tabel dari kiri sampai ditemukan elemen A  p x 3. telusuri tabel dari kanan sampai ditemukan elemen A q x 4. pertukarkan A  p A q 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   g i   A l     g  o /    S 1 I  F /   F T I  /    U K /   M A /   2  0 1  0 3 CONTOH QUICK SORT 1 4 5 9 0 11 8 10 7 6 left ri ght  1 4 5 9 0 11 8 10 7 6 left right  1 4 5 0 9 11 8 10 7 6 left ri ght  CONTOH QUICK SORT 4 1 4 5 0 9 11 8 10 7 6 lef t rig ht 1 4 5 0 9 11 8 10 7 6 rig ht lef t QUICK SORT 5 Kare na posi si righ t < left, ma ka pivo t dituk ar dgn nil ai yg dit unj uk lef t 1 4 5 0 9 11 8 10 7 6 rig ht lef t 1 4 5 0 6 11 8 10 7 9 rig ht lef t CONTOH QUICK SORT 6 Kond isi akhi r sete lah penu kara n pivo t Nilai- nil ai di sebelah kir i < nila i piv ot Nilai- nil ai di sebelah kanan > pivot 1 4 5 0 6 11 8 10 7 9 1 4 5 0 11 8 10 7 9

Transcript of 7-Algoritma Devide & Conquer(2)

Page 1: 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

Page 2: 7-Algoritma Devide & Conquer(2)

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 

Page 3: 7-Algoritma Devide & Conquer(2)

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 

Page 4: 7-Algoritma Devide & Conquer(2)

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