SlideServe
Menu
Préférences
© SlideServe · v2026

Decrease and Conquer

casta avatar
24 diapositives · 558 Views · Aug 04, 2014

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

Decrease and Conquer - slide 1
01 / 24Decrease and Conquer
1 / 17

Télécharger la présentation

Decrease and Conquer
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  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 Solsi Sub-persoalan Solsi 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. • Misalkansadalahposisipemmartisian. 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)