1 / 24

Decrease and Conquer

Decrease and Conquer. Bahan Kuliah IF3051 Strategi Algoritma Oleh : Rinaldi Munir. Program Studi Teknik Informatika Sekolah Teknik Elektro dan In formatika ITB 2011.

Download Presentation

Decrease and Conquer

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Decrease and Conquer BahanKuliah IF3051 StrategiAlgoritma Oleh: RinaldiMunir Program StudiTeknikInformatika SekolahTeknikElektrodan In formatika ITB 2011

  2. Decrease and conquer: metodedesainalgoritmadenganmereduksipersoalanmenjadibeberapa sub-persoalan yang lebihkecil, tetapiselanjutnyahanyamemprosessatu sub-persoalansaja. • Berbedadengandivide and conquer yang memprosessemua sub-persoalandanmenggabungsemuasolusisetiap sub-persoalan.

  3. Decrease and conquer terdiridariduatahapan: 1. Decrease: mereduksipersoalanmenjadibeberapapersoalan yang lebihkecil (biasanyadua sub-persoalan). 2. Conquer: memprosessatu sub-persoalansecararekursif. • Tidakadatahapcombinedalamdecrease and conquer.

  4. Tigavariandecrease and conquer: 1. Decrease by a constant: ukuraninstanspersoalandireduksisebesarkonstanta yang samasetiapiterasialgoritma. Biasanyakonstanta = 1. 2. Decrease by a constant factor: ukuraninstanspersoalandireduksisebesarfaktorkonstanta yang samasetiapiterasialgoritma. Biasanyafaktorkonstanta = 2. 3. Decrease by a variable size: ukuraninstanspersoalandireduksibervariasipadasetiapiterasialgoritma.

  5. Decrease by a Constant Persoalanberukurann Sub-persoalanberukurann – 1 Solusi Sub-persoalan Solsi Persoalansemula

  6. Contoh 1: Persoalanperpangkatanan Denganmetodedecrease and conquer: Kompleksitaswaktu (berdasarkanjumlahoperasi kali): Biladiselesaikan: T(n) = T(n – 1) + 1 = …. = O(n) samasepertialgoritmabrute-force.

  7. function exp(a : real; n : integer)  real Deklarasi k : integer Algoritma: ifn = 0 then return 1 else return exp(a, n – 1) * a endif

  8. Contoh 2: Selection sort Misalkantabelaberisielemen-elemenberikut:   4 12 3 9 1 21 5 2 Langkah-langkahpengurutandenganSelection Sort:

  9. KompleksitaswaktualgoritmaSelection Sort: T(n) = waktupembagian + waktupemanggilan rekurensSelection Sortuntukbagiantabel kanan yang berukurannelemen. Persamaanpadabagianrekurensibiladiselesaikan menghasilkanT(n) = O(n2).

  10. Decrease by a Constant Factor Persoalanberukurann Sub-persoalanberukurann/2 Solusi Sub-persoalan Solusi Persoalansemula

  11. Contoh 4: Binary search Kondisiawal: larikAsudahterurutmenaik Kadalahnilai yang dicari Jikaelementengah (mid)  k, makapencariandilakukan hanyapadasetengahbagianlarik (kiriataukanan) Ukuranpersoalanselaluberkurangsebesarsetengahukuransemula. Hanyasetengahbagain yang diproses, setengahbagianlagitidak.

  12. procedurebin_search(input A : ArrayOfInteger; input i, j : integer; input K : integer; output idx: integer) Deklarasi mid : integer Algoritma: ifj > ithen{ ukuranlariksudah 0} idx -1 { k tidakditemukan } else mid  (i + j)/2 ifA(mid) = k then{ k ditemukan } idx  mid{ indekselemenlarik yang bernilai = K } else ifK < A(midthen bin_search(A, mid + 1, j,K, idx) else bin_search(A, i, mid - 1 , K, idx) endif endif endif

  13. Jumlahoperasiperbandingan: • Relasirekursiftsbdiselesaikansbb: T(n) = 1 + T(n/2) = 1 + (1 + T(n/4)) = 2 + T(n/4) = 2 + (1 + T(n/8)) = 3 + T(n/8) = … = j + T(n/2j) Asumsi: n = 2j j = 2log n T(n) = 2log n + T(1) = 2log n + (1 + T(0)) = 1 + 2log n = O(2log n)

  14. Contoh 5: Interpolation Search - Analog denganpencarian data didalamkamusdengancaraperkiraanletak. - Kondisiawal: larikAsudahterurutmenaik Kadalahnilai yang dicari

  15. procedureinterpolation_search(input A : ArrayOfInteger; input i, j : integer; input K : integer; output idx: integer) Deklarasi mid : integer Algoritma: ifj > ithen{ ukuranlariksudah 0} idx -1 { K tidakditemukan } else mid  i + (j – i) *(K – A(i))/ (A(j) – A (i)) ifA(mid) = x then{ K ditemukan } idx  mid{ indekselemenlarik yang bernilai = K } else ifK < A(midthen interpolation_search(A, mid + 1, j,K, idx) else interpolation_search(A, i, mid - 1 , K, idx) endif endif endif

  16. Kompleksitasalgoritmainterpolation search: - Kasusterburuk: O(n), untuksembarangdistribusi data - Kasusterbaik: O(log logn), jika data didalamsenaraiterdistribusiuniform

  17. Contoh 6 (Mencarikoinpalsu). Diberikannbuahkoin yang identik, satudiantaranyapalsu. Asumsikankoin yang palsumempunyaiberat yang lebihringandaripadakoinasli. Untukmencari yang palsu, disediakansebuahtimbangan yang teliti. Carilahkoin yang palsudengancarapenimbangan.

  18. Algoritmadecrease and conquer: 1. Bagihimpunankoinmenjadidua sub-himpunan, masing-masingn/2 koin. Jikan ganjil, makasatubuahkointidakdimasukkankedalamkedua sub-himpunan. 2. Timbangkedua sub-himpunandenganneraca. 3. Jikaberatnyasama, berartisatukoin yang tersisaadalahpalsu. 4. Jikaberatnyatidaksama, makaulangiprosesuntuk sub-himpunan yang beratnyalebihringan (salahsatukoindidalamnyapalsu).

  19. Ukuranpersoalanselaluberkurangdenganfaktorsetengahdariukuransemula. Hanyasetengahbagian yang diproses, setengahbagian yang lain tidakdiproses. • Jumlahpenimbangan yang dilakukanadalah: • Penyelesaianrelasirekurens T(n) miripsepertibinary search: T(n) = 1 + T(n/2) = …. = O(2 log n)

  20. Decrease by a Varible Size • Contoh 7: Menghitung median danSelection Problem. • Selection problem: mencarielementerkecilke-kdidalamsebuahsenaraiberanggotannelemen. • Jika k = 1  elemen paling kecil (minimum) • Jika k = n  elemen paling besar (maksimum) • Jika k = n/2  elemen median Bagaimanamencari median darisenarai yang tidakterurutnamuntidakperlumengurutkansenaraiterlebihdahulu?

  21. Algoritmanya: • Lakukanpartisipadasenaraisepertiprosespartisipadaalgoritma Quick Sort. Partisimenghasilaknsetengahelemensenarailebihkecilatausamadenganpivotpdansetengahbagianlagilebihbesardaripivot p. • Misalkansadalahposisipem-partisian. Jika s = n/2, maka pivot padalahnilai median yang dicari Jika s > n/2, maka median terdapatpadasetengahbagiankiri Jika s < n/2, maka median terdapatpadasetengahbagiankanan

  22. Contoh: Temukan median dari 4, 1, 10, 9, 7, 12, 8, 2, 15. padacontohini, k = 9/2 = 5, sehinggapersoalannyaadalahmencarielementerkecil ke-5 didalamsenarai. Partisisenaraidenganmemilihelemenpertamasebagai pivot: 4 1 10 9 7 12 8 2 15 Hasilpartisi: 2 1 4 9 7 12 8 10 15 Karenas = 3 < 5, kitamemprosessetengahbagiankanan: 9 7 12 8 10 15 8 7 9 12 10 15 Karenas = 6 > 5, kitamemprosessetengahbagiankiri: 8 7 7 8 Sekarangs = k = 5  stop. Jadi median = 8

  23. Kompleksitasalgoritma: • Solusidarirelasirekurenstersebutadalah: T(n) = T(n/2) + cn = … = O(n)

More Related