Anda di halaman 1dari 4

4/20/2016

Quick Sort
• Teknik mem-partisi tabel:
1. pilih x  { A1, A2, ..., An} sebagai elemen pivot,
2. telusuri tabel dari kiri sampai ditemukan
elemen Ap  x
3. telusuri tabel dari kanan sampai ditemukan
elemen Aq  x
IN053 – Strategi 4.
5.
pertukarkan Ap  Aq
ulangi (2), dari posisi p + 1, dan (3), dari posisi q
Algoritmik – 1 , sampai kedua penesuluran bertemu di
tengah tabel
07 – Divide & Conquer 2

STRATEGIALGO/S1IF/FTI/UKM/MA/2010
1

Contoh QUICK SORT


Contoh QUICK SORT
1 4 5 9 0 11 8 10 7 6
1 4 5 0 9 11 8 10 7 6
left right
left right

1 4 5 9 0 11 8 10 7 6
left right
1 4 5 0 9 11 8 10 7 6
right left
1 4 5 0 9 11 8 10 7 6
left right

3 4

QUICK SORT CONTOH QUICK SORT


• Kondisi akhir setelah penukaran pivot
1 4 5 0 9 11 8 10 7 6 • Nilai-nilai di sebelah kiri < nilai pivot
right left • Nilai-nilai di sebelah kanan > pivot

• Karena posisi right < left, maka pivot ditukar dgn 1 4 5 0 6 11 8 10 7 9


nilai yg ditunjuk left

1 4 5 0 6 11 8 10 7 9
right left 1 4 5 0 11 8 10 7 9

5 6

1
4/20/2016

Quick Sort Quick Sort


• Kasus terbaik terjadi bila pivot adalah elemen median • Kasus terburuk terjadi bila pivot selalu elemen
sedemikian sehingga kedua subtabel berukuran relatif sama maksimum/minimum tabel
setiap kali pembagian.
N
N
1 n-1

1 n-2
n/2 n/2

1 n-3
n/4 n/4 n/4 n/4 • Kompleksitas : O(n2)

2
n/8 n/8 ….. 1 1
• Kompleksitas : O(n 2log n)
7 8

STRATEGIALGO/S1IF/FTI/UKM/MA/2010 STRATEGIALGO/S1IF/FTI/UKM/MA/2010

QUICK SORT Perhitungan Pangkat


• Kasus rata-rata terjadi jika pivot dipilih secara • Misalkan a  R dan n adalah bilangan bulat
acak dari elemen tabel, dan peluang setiap tidak negatif, maka
elemen dipilih menjadi pivot adalah sama.
an = a × a × … × a (sebanyak n kali), jika n > 0
• Kompleksitas waktunya: Tavg(n) = O(n 2log n).
=1 , jika n = 0

9 10

STRATEGIALGO/S1IF/FTI/UKM/MA/2010 STRATEGIALGO/S1IF/FTI/UKM/MA/2010

Algoritma Brute Force


Algoritma Divide & Conquer
function Exp1(input a, n : integer)integer
{ Menghitung an, a > 0 dan n bilangan bulat tak-
Algoritma menghitung an:
negatif
Masukan: a, n • Untuk kasus n = 0, maka an = 1.
Keluaran: nilai perpangkatan.
} • Untuk kasus n > 0, bedakan menjadi dua kasus lagi:
Deklarasi
k, hasil : integer • jika n genap, maka an = an/2  an/2
• jika n ganjil, maka an = an/2  an/2  a
Algoritma:
hasil1
for k1 to n do • Contoh :
hasilhasil * a 35 = 32 .32 .3 = ((32)2 .3
endfor
return hasil = ((31)2)2 .3 = ((30)2 .3)2 )2 .3
= ((1)2 .3)2 )2 .3 = ((3)2 )2 .3
Kompleksitas algoritma O(n) = (9)2 .3 = 81 . 3 = 243

11 12

STRATEGIALGO/S1IF/FTI/UKM/MA/2010 STRATEGIALGO/S1IF/FTI/UKM/MA/2010

2
4/20/2016

Algoritma Divide & Conquer Perkalian Matriks


function Exp2(input a :real, n : integer)  real • Misalkan
{ mengembalikan nilai a^n, dihitung dengan metode Divide and Conquer }
Algoritma: • A dan B dua buah matrik berukuran n  n
if n = 0 then
return 1 • (asumsikan n = 2k , k = 1, 2, …).
else
xExp2(a, n div 2)
if odd(n) then { fungsi odd memberikan true jika n ganjil }
• Perkalian matriks: C = A × B
return x * x * a
else
return x * x
• Elemen-elemen hasilnya:
endif n
cij  ai1b1j ai2b2 j ainbnj  aikbkj
endif

k1

Kompleksitas algoritma O( 2log n)


13 14

STRATEGIALGO/S1IF/FTI/UKM/MA/2010 STRATEGIALGO/S1IF/FTI/UKM/MA/2010

Algoritma Brute Force


function KaliMatriks1(input A,B: Matriks, input n : integer)
Algoritma Divide & Conquer
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.
• Matriks A dan B dibagi menjadi 4 buah matriks bujur
} sangkar.
Deklarasi
i, j, k : integer
C : Matriks
• Masing-masing matriks bujur sangkar berukuran n/2
Algoritma:  n/2
for i1 to n do
for j1 to n do
Ci,j0 { inisialisasi penjumlah }
 A11 A12   B11 B12   C11 C12 
for k  1 to n do
 A21 A22 X  B 21 B 22 = C 21 C 22
Ci,j  Ci,j + Ai,k * Bk,j      
endfor
endfor
endfor • Elemen-elemen matriks C adalah:
return C C11 = A11  B11 + A12  B21
C12 = A11  B12 + A12  B22
C21 = A21  B11 + A22  B21
Kompleksitas algoritma O( n3) C22 = A21  B12 + A22  B22

15 16

STRATEGIALGO/S1IF/FTI/UKM/MA/2010 STRATEGIALGO/S1IF/FTI/UKM/MA/2010

Algoritma Divide & Conquer


Cara pemecahan 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)
3 4 8 16 Keluaran: matriks C = A  B.
• Misalkan matriks A adalah : 21 5 12 10
}
 Deklarasi
5 1 2 3 i, j, k : integer
  A11, A12, A21, A22,
45 9 0 1 B11, B12, B21, B22,
C11, C12, C21, C22 : Matriks

• Matriks tsb dibagi menjadi 4 sub matriks : Algoritma:


if n = 1 then

A11 =  3 4  8 16 return A  B { perkalian biasa }


21 5 A12 = 12 10 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
 5 1 2 3  C11  KaliMatriks2(A11, B11, n/2) + KaliMatriks2(A12, B21, n/2)
A21= 45 9 A22 = 0  1 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 { C adalah gabungan C11, C12, C13, C14 }
endif

17 18

STRATEGIALGO/S1IF/FTI/UKM/MA/2010 Kompleksitas algoritma O( n3)


STRATEGIALGO/S1IF/FTI/UKM/MA/2010

3
4/20/2016

Perkalian matriks strassen Perkalian matriks strassen


 Misalkan matriks X danY adalah : • Hasil Perkalian XY dihitung sbb :
 A B E F 
X = C D Y = G H 
P5  P4  P2  P6 P1  P2 
 P3  P4 P1  P5  P3  P7 

 Perkalian Matriks XY menjadi :
• Dimana
 AE  BG AF  BH  • P1 = A(F – H)
CE  DG CF  DH  • P2 = (A + B)H
 
• P3 = (C + D)E
• P4 = D(G – E)
 Kompleksitas : O(n log2 7 ) = O( n2.81) • P5 = (A + D)(E + H)
• P6 = (B – D)(G + H)
• P7 = (A – C)(E + F)

19 20

STRATEGIALGO/S1IF/FTI/UKM/MA/2010 STRATEGIALGO/S1IF/FTI/UKM/MA/2010

Perkalian matriks strassen Latihan


• Baris 1 kolom 1
P5 + P4 – P2 + P6 =
• Gunakan algoritma perkalian matriks
(A + D)(E + H) + D(G – E) – (A + B)H + (B – D)(G + H) = Strassen untuk matriks sbb :
AE+AH+DE+DH+DG–DE – (AH+BH)+BG+BH–DG–DH =
• A=  3 2
4 8 
 
B= 1 5
9 6
 
C=A xB
AE+AH+DE+DH+DG–DE –AH –BH + BG + BH –DG –DH =
AE + BG
0 1 0 3 1 0 0 3
2 2 0 1 0
• X=  0 1 0  Y=  Z = X xY
0 1 2 1 0 1 0 1
   
4 0 0 1 3 0 1 0

21 22

STRATEGIALGO/S1IF/FTI/UKM/MA/2010 STRATEGIALGO/S1IF/FTI/UKM/MA/2010

Latihan Referensi
• Gunakan Quick sort untuk mengurutkan data • Materi kuliah IF 2251 Strategi Algoritmik :
sbb : • http://kur2003.if.itb.ac.id/
• 23, 85, 97, 38, 66, 75, 12, 49, 32, 54 • Mata kuliah IF 2251 Strategi Algoritmik (sem.4)

23 24

STRATEGIALGO/S1IF/FTI/UKM/MA/2014 STRATEGIALGO/S1IF/FTI/UKM/MA/2010

Anda mungkin juga menyukai