Divide and Conquer (1) - PowerPoint PPT Presentation

1 / 14
About This Presentation
Title:

Divide and Conquer (1)

Description:

Title: Divide and Conquer (1) Subject: T0034 Perancangan & Analisis Algoritma Author: Robert Setiadi Last modified by: Robert Setiadi Created Date – PowerPoint PPT presentation

Number of Views:129
Avg rating:3.0/5.0
Slides: 15
Provided by: RobertSe151
Category:
Tags: conquer | divide

less

Transcript and Presenter's Notes

Title: Divide and Conquer (1)


1
(No Transcript)
2
Pertemuan 9DIVIDE AND CONQUER (1)
Matakuliah T0034 / Perancangan Analisis
Algoritma Tahun 2008
3
DIVIDE AND CONQUER
  • Membagi masalah itu menjadi sejumlah masalah yang
    lebih kecil.
  • Logikanya masalah yang lebih sederhana lebih
    mudah diselesaikan dibandingkan masalah yang
    rumit.
  • Pembagian masalah menjadi sub-masalah terjadi
    terus menerus secara rekursif hingga masalah
    tidak dapat dibagi lagi (sampai pada bentuk
    terkecil).
  • Setelah semua sub-masalah selesai dipecahkan,
    solusi-solusi dari sub-masalah akan digabungkan
    kembali untuk menghasilkan solusi dari problem
    lengkap.
  • buku utama, bab 5.1

4
KASUS DIVIDE AND CONQUER
  • Tidak semua kasus bisa dipecahkan dengan teknik
    Divide and Conquer (DaC)
  • Kasus yang terkenal dengan pemecahan secara DaC
    adalah
  • Pengurutan data (sorting)
  • Pencarian data (searching)

5
MERGE SORT
  • Mengurutkan sederetan bilangan dengan cara
  • Bagi array A menjadi array A1 dan A2
    (masing-masing berisi setengah dari A).
  • Bagi array A1 menjadi array A11 dan A12 bagi
    array A2 menjadi array A21 dan A22 dan
    seterusnya (lakukan secara rekursif sampai
    didapatkan sebuah array yang panjangnya hanya nol
    atau satu elemen).
  • Masing-masing array diurutkan.
  • Array yang panjangnya hanya 1 elemen ini tentu
    tidak perlu diurutkan lagi karena sudah otomatis
    terurut.
  • Gabungkan hasilnya.
  • buku utama, bab 5.2.5

6
PSEUDOCODE MERGE SORT
  • 1 module MergeSort(M)
  • 2 if length(M)lt1 then
  • 3 resultM
  • 4 else
  • 5 iMiddlelength(M) div 2
  • 6 for i1 to iMiddle do
  • 7 add Mi to LeftTemp
  • 8 end for
  • 9 for i(iMiddle1) to length(M) do
  • 10 add Mi to RightTemp
  • 11 end for
  • 12 LeftResultMergeSort(LeftTemp)
  • 13 RightResultMergeSort(RightTemp)
  • 14 resultMerge2(LeftResult,RightResult)
  • 15 end if
  • 16 end module
  • 1 module Merge2(L,R)
  • 2 Lcnt1
  • 3 Rcnt1
  • 4 HasilTemp
  • 5 while (Lcntltlength(L)) or (Rcntltlength(R))
    do
  • 6 if (Lcntltlength(L)) and (Rcntltlength(R))
    then
  • 7 if LLcntltRRcont then
  • 8 add LLcnt to HasilTemp
  • 9 LcntLcnt1
  • 10 else
  • 11 add RRcnt to HasilTemp
  • 12 RcntRcnt1
  • 13 end if
  • 14 else if Rcntgtlength(R) then
  • 15 add LLcnt to HasilTemp
  • 16 LcntLcnt1
  • 17 else if Lcntgtlength(L) then
  • 18 add RRcnt to HasilTemp
  • 19 RcntRcnt1

buku utama, pseudocode 5.4
7
ILUSTRASI MERGE SORT
Pelajari ilustrasi 5.4 tentang cara kerja Merge
Sort langkah per langkah.
buku utama, ilustrasi 5.5
8
QUICK SORT
  • Mengurutkan sederetan bilangan dengan cara
  • Pilih sebuah nilai tengah yang disebut pivot.
  • Nilai pivot ini bisa ditentukan dengan berbagai
    cara, salah satunya adalah dengan mengambil nilai
    paling depan dari array.
  • Pisahkan array menjadi 3 bagian (array less,
    equal dan more) untuk diproses secara rekursif.
  • Array less berisi semua elemen yang lebih kecil
    dari pivot.
  • Array equal berisi elemen yang bernilai sama.
  • Array more berisi semua elemen yang bernilai
    lebih besar.
  • Urutkan array less dan array more secara
    rekursif.
  • Gabungkan hasilnya.
  • buku utama, bab 5.2.6

9
PSEUDOCODE QUICK SORT
  • 1 module QuickSort(Q)
  • 2 if length(Q)lt1 then
  • 3 resultQ
  • 4 else
  • 5 select a pivot value from Q
  • 6 for i1 to length(Q) do
  • 7 if Qiltpivot then
  • 8 add Qi to QtempLess
  • 9 else if Qipivot then
  • 10 add Qi to QtempEqual
  • 11 else if Qigtpivot then
  • 12 add Qi to QtempMore
  • 13 end if
  • 14 end for
  • 15 QresultLessQuickSort(QtempLess)
  • 16 QresultMoreQuickSort(QtempMore)
  • 17 resultQresultLess,QtempEqual,QresultMore
  • 18 end if
  • 19 end module

buku utama, pseudocode 5.5
10
ILUSTRASI QUICK SORT
Pelajari bab 5.2.6 tentang cara kerja Quick
Sort langkah per langkah.
buku utama, ilustrasi 5.6
11
PEMILIHAN PIVOT
  • Nilai di posisi paling depan
  • Nilai di posisi tengah
  • Nilai di posisi paling belakang
  • Nilai tengah (median) dari 3 nilai (posisi paling
    depan, posisi tengah dan posisi paling belakang)
  • Mengapa digunakan nilai median bukannya nilai
    rata-rata?
  • Nilai random

12
VARIASI ALGORITMA QUICK SORT
  • Algoritma Quick Sort yang dijelaskan di sini
    adalah algoritma dasar
  • Banyak versi lain dari algoritma Quick Sort yang
    merupakan penyempurnaan dari algoritma dasar ini.

13
LATIHAN
  • Jelaskan langkah-langkah mengurutkan bilangan 34,
    15, 23, 9, 41, 26, 39, 11, 7, 28 dengan Merge
    Sort!
  • Jelaskan langkah-langkah mengurutkan bilangan 34,
    15, 23, 9, 41, 26, 39, 11, 7, 28 dengan Quick
    Sort!
  • Jelaskan keunggulan dan kelemahan masing-masing
    teknik pemilihan pivot!

14
REVIEW
  • Apa yang sudah dipahami?
  • Apa yang akan dibahas selanjutnya?
Write a Comment
User Comments (0)
About PowerShow.com