Anda di halaman 1dari 4

2/18/2010

QUICK SORT
Teknik mem-partisi tabel:
1. 2. 3. 4. 5.
StrategiAlgo/S1IF/FTI/UKM/MA/2010

ALGORITMA DIVIDE & CONQUER(2)


1

Strategi Algoritmik S1 Teknik Informatika UK Maranatha

pilih x { A1, A2, ..., An} sebagai elemen pivot, telusuri tabel dari kiri sampai ditemukan elemen Ap x telusuri tabel dari kanan sampai ditemukan elemen Aq x pertukarkan Ap Aq ulangi (2), dari posisi p + 1, dan (3), dari posisi q 1 , sampai kedua penesuluran bertemu di tengah tabel

StrategiAlgo/S1IF/FTI/UKM/MA/2010

CONTOH QUICK SORT


1 4 5
left

CONTOH QUICK SORT


11 8
right

10

11

10

left right

9
left

0
right

11

10

6 1 4 5

11

10

0
left

9
right

11

10

right left

QUICK SORT
1 4 5

CONTOH QUICK SORT


9
11 8 10 7 6
Kondisi akhir setelah penukaran pivot
Nilai-nilai di sebelah kiri < nilai pivot Nilai-nilai di sebelah kanan > pivot

right left
Karena posisi right < left, maka pivot ditukar dgn nilai yg ditunjuk left

11

10

11

10

9
1 4 5 0 11 8 10 7 9

right left

2/18/2010

QUICK SORT
Kasus terbaik terjadi bila pivot adalah elemen median sedemikian sehingga kedua subtabel berukuran relatif sama setiap kali pembagian. n
n/2 n/4 n/4 n/4 n/2 n/4

QUICK SORT
Kasus terburuk terjadi bila pivot selalu elemen maksimum/minimum tabel n
1 1 n-1 n-2

StrategiAlgo/S1IF/FTI/UKM/MA/2010

StrategiAlgo/S1IF/FTI/UKM/MA/2010

n-3

n/8

n/8

..
7

Kompleksitas : O(n2)
2 1 1
8

Kompleksitas : O(n 2log n)

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: Tavg(n) = O(n 2log n).

PERHITUNGAN PANGKAT
Misalkan a R dan n adalah bilangan bulat tidak negatif, maka an = a a a (sebanyak n kali), jika n > 0 =1 , jika n = 0

StrategiAlgo/S1IF/FTI/UKM/MA/2010

StrategiAlgo/S1IF/FTI/UKM/MA/2010

10

ALGORITMA BRUTE FORCE


function Exp1(input a, n : integer)integer { Menghitung an, a > 0 dan n bilangan bulat tak-negatif Masukan: a, n Keluaran: nilai perpangkatan. } Deklarasi k, hasil : integer Algoritma: hasil1 for k1 to n do hasilhasil * a endfor return hasil

ALGORITMA DIVIDE & CONQUER


Algoritma menghitung an: 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

StrategiAlgo/S1IF/FTI/UKM/MA/2010

StrategiAlgo/S1IF/FTI/UKM/MA/2010

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 = 243

Kompleksitas algoritma O(n)


11

12

2/18/2010

ALGORITMA DIVIDE & CONQUER


function Exp2(input a :real, n : integer) real { mengembalikan nilai a^n, dihitung dengan metode Divide and Conquer } Algoritma: if n = 0 then return 1 else xExp2(a, n div 2) { fungsi odd memberikan true jika n ganjil } if odd(n) then return x * x * a else return x * x endif endif

PERKALIAN MATRIKS
Misalkan
A dan B dua buah matrik berukuran n n (asumsikan n = 2k , k = 1, 2, ).
StrategiAlgo/S1IF/FTI/UKM/MA/2010 StrategiAlgo/S1IF/FTI/UKM/MA/2010

Perkalian matriks: C = A B Elemen-elemen hasilnya:

cij = ai1b1j +ai2b2 j +L+ainbnj = aikbkj


k=1

Kompleksitas algoritma O( 2log n)


13 14

ALGORITMA BRUTE FORCE


function KaliMatriks1(input A,B: Matriks, input n : integer) Matriks { Memberikan hasil kali matriks A dan B yang berukuran n n. Masukan: matriks integer A dan B, ukuran matriks (n) Keluaran: matriks C = A B. } Deklarasi i, j, k : integer C : Matriks Algoritma: for i1 to n do for j1 to n do Ci,j0 { inisialisasi penjumlah } for k 1 to n do Ci,j Ci,j + Ai,k * Bk,j endfor endfor endfor return C

ALGORITMA DIVIDE & CONQUER


Matriks A dan B dibagi menjadi 4 buah matriks bujur sangkar. Masing-masing matriks bujur sangkar berukuran n/2 n/2
A11 A12 A21 A22

15

StrategiAlgo/S1IF/FTI/UKM/MA/2010

StrategiAlgo/S1IF/FTI/UKM/MA/2010

B11 B12 B 21 B 22

C11 C12 C 21 C 22

Elemen-elemen matriks C adalah:


C11 = A11 B11 + A12 B21 C12 = A11 B12 + A12 B22 C21 = A21 B11 + A22 B21 C22 = A21 B12 + A22 B22

16

Kompleksitas algoritma O( n3)

CARA PEMECAHAN
Misalkan matriks A adalah :
3 21 5 45 4 8 16 5 12 10 1 2 3 9 0 1

ALGORITMA DIVIDE & CONQUER


function KaliMatriks2(input A,B: Matriks, input n : integer) Matriks { Memberikan hasil kali matriks A dan B yang berukuran n n. Masukan: matriks integer A dan 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 = 1 then return A B { perkalian biasa } else Bagi A menjadi A11, A12, A21, dan A22 yang masing-masing berukuran n/2 n/2 Bagi B menjadi B11, B12, B21, dan B22 yang masing-masing berukuran n/2 n/2 C11 KaliMatriks2(A11, B11, n/2) + KaliMatriks2(A12, B21, C12 KaliMatriks2(A11, B12, n/2) + KaliMatriks2(A12, B22, C21 KaliMatriks2(A21, B11, n/2) + KaliMatriks2(A22, B21, C22 KaliMatriks2(A21, B12, n/2) + KaliMatriks2(A22, B22, return C { C adalah gabungan C11, C12, C13, C14 } endif

StrategiAlgo/S1IF/FTI/UKM/MA/2010

StrategiAlgo/S1IF/FTI/UKM/MA/2010

Matriks tsb dibagi menjadi 4 sub matriks :


A11 =
3 4 21 5

A12 =

8 16 12 10

A21=

5 1 45 9

A22 =

2 3 0 1

n/2) n/2) n/2) n/2)

17

18

Kompleksitas algoritma O( n3)

2/18/2010

PERKALIAN MATRIKS STRASSEN


Misalkan matriks X dan Y adalah : A B E F X = C D Y = G H Perkalian Matriks XY menjadi :
AE + BG AF + BH CE + DG CF + DH

PERKALIAN MATRIKS STRASSEN


Hasil Perkalian XY dihitung sbb :
P + P2 P5 + P4 P2 + P6 1 P3 + P4 P + P5 P3 P7 1
StrategiAlgo/S1IF/FTI/UKM/MA/2010 StrategiAlgo/S1IF/FTI/UKM/MA/2010

Dimana

Kompleksitas : O(n log2 7 ) = O( n2.81)

19

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

PERKALIAN MATRIKS STRASSEN


Baris 1 kolom 1
P5 + P4 P2 + P6 = (A + D)(E + H) + D(G E) (A + B)H + (B D)(G + H) = AE+AH+DE+DH+DGDE (AH+BH)+BG+BHDGDH = AE+AH+DE+DH+DGDE AH BH + BG + BH DG DH =
AE + BG
StrategiAlgo/S1IF/FTI/UKM/MA/2010

LATIHAN
Gunakan algoritma perkalian matriks Strassen untuk matriks sbb :
StrategiAlgo/S1IF/FTI/UKM/MA/2010

A=

3 2 4 8

B=

1 5 9 6

21

22

REFERENSI
Materi kuliah IF 2251 Strategi Algoritmik :
http://kur2003.if.itb.ac.id/ Mata kuliah IF 2251 Strategi Algoritmik (sem.4)
StrategiAlgo/S1IF/FTI/UKM/MA/2010

23