240 likes | 375 Views
Algoritma Divide and Conquer. Pertemuan 4. Erna Sri Hartatik. Definisi. Divide : membagi masalah menjadi beberapa sub- masalah yang memiliki kemiripan dengan masalah semula namun berukuran lebih kecil ( idealnya berukuran hampir sama ),
E N D
AlgoritmaDivide and Conquer Pertemuan 4 Erna Sri Hartatik
Definisi • Divide: membagimasalahmenjadibeberapa sub-masalah yang memilikikemiripandenganmasalahsemulanamunberukuranlebihkecil (idealnyaberukuranhampirsama), • Conquer: memecahkan (menyelesaikan) masing-masing sub-masalah (secararekursif), dan • Combine: mengabungkansolusimasing-masingsub-masalahsehinggamembentuksolusimasalahsemula.
Divide & Conquer problem size = n subproblem 1 size n/2 subproblem 2 size n/2 solution to subproblem 1 solution to subproblem 2 Solution to original problem
Obyekpermasalahan yang dibagi : masukan (input) atauinstances yang berukurannseperti: - tabel (larik), - matriks, - eksponen, - dll, bergantungpadamasalahnya. • Tiap-tiap sub-masalahmempunyaikarakteristik yang sama (the same type) dengankarakteristikmasalahasal, sehinggametodeDivide and Conquerlebih natural diungkapkandalamskemarekursif.
Jikapembagianselalumenghasilkanduaupa-masalah yang berukuransama:
Contoh-contohmasalah • MencariNilai Minimum danMaksimum (MinMaks) Persoalan: MisalkandiberikantabelA yang berukurannelemendansudahberisinilaiinteger. Carilahnilai minimum dannilaimaksimumsekaligus di dalamtabeltersebut.
PenyelesaiandenganAlgoritma Brute Force T(n) = (n – 1) + (n – 1) = 2n – 2 = O(n)
Ukurantabelhasilpembagiandapatdibuatcukupkecilsehinggamencari minimum danmaksimumdapatdiselesaikan (SOLVE) secaralebihmudah. • Dalamhalini, ukurankecil yang dipilihadalah 1 elemenatau 2 elemen.
MinMaks(A, n, min, maks) Algoritma: • Untukkasusn = 1 ataun = 2, SOLVE: Jikan = 1, makamin = maks = A[n] Jikan = 2, makabandingkankeduaelemenuntuk menentukanmindanmaks. • Untukkasusn > 2, (a) DIVIDE: BagiduatabelAmenjadiduabagian 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
Merge Sort Algoritma: 1. Untukkasusn = 1, makatabelAsudahterurutdengansendirinya (langkah SOLVE). 2. Untukkasusn > 1, maka (a) DIVIDE: bagitabelAmenjadiduabagian, bagiankiridanbagiankanan, masing-masing bagianberukurann/2 elemen. (b) CONQUER: Secararekursif, terapkan algoritmaD-and-Cpadamasing-masing bagian. (c) MERGE: gabunghasilpengurutankedua bagiansehinggadiperolehtabelA yang terurut.