610 likes | 791 Views
Design and Analysis of Algorithm Divide and Conquer Algorithm. Aryo Pinandito, ST, M.MT – PTIIK Universitas Brawijaya. History. Divide and Conquer dulunya adalah strategi militer yang dikenal dengan nama divide ut imperes .
E N D
Design and Analysis of AlgorithmDivide and Conquer Algorithm Aryo Pinandito, ST, M.MT – PTIIK UniversitasBrawijaya
History • Divide and Conquer dulunyaadalahstrategimiliter yang dikenaldengannamadivide utimperes. • Sekarangstrategitersebutmenjadistrategi fundamental di dalamilmukomputerdengannama Divide and Conquer.
Definisi • Divide: membagimasalahmenjadibeberapaupa-masalah yang memilikikemiripandenganmasalahsemulanamunberukuranlebihkecil (idealnyaberukuranhampirsama), • Conquer: memecahkan (menyelesaikan) masing-masingupa-masalah (secararekursif), dan • Combine: mengabungkansolusimasing-masingupa-masalahsehinggamembentuksolusimasalahsemula.
Definisi (2) • Obyekpermasalahan yang dibagi : • masukan (input) atau instances yang berukuran n seperti: • tabel (larik/array), • matriks, • eksponen, • dll, bergantungpadamasalahnya. • Tiap-tiapupa-masalahmempunyaikarakteristik yang sama (the same type) dengankarakteristikmasalahasal, sehinggametode Divide and Conquer lebih natural jikadiungkapkandalamskemarekursif.
Jika pembagian selalu menghasilkan dua upa-masalah yang berukuran sama:
Divide and Conquer Minimum dan Maximum
Contoh-contoh masalah • MencariNilai Minimum danMaksimum (Min Maks) • Persoalan: Misalkandiberikantabel A yang berukuran n elemendansudahberisinilai integer. • Carilahnilai minimum dannilaimaksimumsekaligus di dalamtabeltersebut.
Penyelesaian dengan Algoritma Brute Force T(n) = (n – 1) + (n – 1) = 2n – 2 = O(n)
Penyelesaiandengan Divide and Conquer • Ukurantabelhasilpembagiandapatdibuatcukupkecilsehinggamencari minimum danmaksimumdapatdiselesaikan (SOLVE) secaralebihmudah. • Dalamhalini, ukurankecil yang dipilihadalah 1 elemenatau 2 elemen.
ContohAlgoritma • MinMaks(A, n, min, maks) • Algoritma: • Untukkasus n = 1 atau n = 2, SOLVE: Jika n = 1, maka min = maks = A[n] Jika n = 2, makabandingkankeduaelemenuntuk menentukan min danmaks. • Untukkasus n > 2, (a) DIVIDE: Bagiduatabel A menjadiduabagian yang sama, A1 dan A2 (b) CONQUER: MinMaks(A1, n/2, min1, maks1) MInMaks(A2, n/2, min2, maks2) (c) COMBINE: if min1 <min2 then min <- min1 else min <- min2 if maks1 <maks2 then maks <- maks2 else maks <- maks1
Brute Force vs Divide and Conquer • MinMaks1 secara brute force : T(n) = 2n – 2 • MinMaks2 secara divide and conquer: T(n) = 3n/2 – 2 • Perhatikan: 3n/2 – 2 < 2n – 2 , n 2. • Kesimpulan: AlgoritmaMinMakslebihmangkusdenganmenggunakanmetode Divide and Conquer.
Divide and Conquer Merge Sort, Insertion Sort, Quick Sort, Selection Sort
(a) Merge Sort • Algoritma: 1. Untukkasus n = 1, makatabel A sudahterurutdengansendirinya (langkah SOLVE). 2. Untukkasus n > 1, maka (a) DIVIDE: bagitabel A menjadiduabagian, bagiankiridanbagiankanan, masing-masing bagianberukuran n/2 elemen. (b) CONQUER: Secararekursif, terapkan algoritma D-and-C padamasing-masing bagian. (c) MERGE: gabunghasilpengurutankedua bagiansehinggadiperolehtabel A yang terurut.
Insertion Sort dengan Divide and Conquer ProsedurMergedapatdigantidenganprosedurpenyisipansebuahelemen padatabel yang sudahterurut (lihatalgoritmaInsertion Sortversiiteratif).
(c) Quick Sort • Termasukpadapendekatansulitmembagi, mudahmenggabung (hard split/easy join) • Tabel A dibagi (istilahnya: dipartisi) menjadi A1 dan A2 sedemikiansehinggaelemen-elemen A1 elemen-elemen A2.
TeknikPartisi Quick Sort • pilih x { A[1], A[2], ..., A[n] } sebagai pivot, • pindaitabeldarikirisampaiditemukan A[p] x • pindaitabeldarikanansampaiditemukan A[q] x • pertukarkan A[p] A[q] • ulangi (2), dariposisi p + 1, dan (3), dariposisi q – 1 , sampaikeduapemindaianbertemu di tengahtabel
Cara Pemilihan Pivot • Pivot = elemenpertama/elementerakhir/elementengahtabel • Pivot dipilihsecaraacakdarisalahsatuelementabel. • Pivot = elemen median tabel
Kompleksitas Algoritma Quicksort: • Kasusterbaik (best case) • Kasusterbaikterjadibila pivot adalahelemen median sedemikiansehinggakeduaupatabelberukuranrelatifsamasetiap kali pempartisian.
KompleksitasAlgoritma Quick Sort • Kasusterburuk (worst case) • Kasusiniterjadibilapadasetiappartisi pivot selaluelemenmaksimum (atauelemen minimum) tabel. • Kasusjikatabelsudahterurutmenaik/menurun
Kompleksitas Quick Sort: Average Case • Kasus rata-rata (average case) • Kasusiniterjadijika pivot dipilihsecaraacakdarielementabel, danpeluangsetiapelemendipilihmenjadi pivot adalahsama. • Tavg(n) = O(n 2log n).