1 / 16

Pertemuan 14 DYNAMIC PROGRAMMING : COIN CHANGE PROBLEM

Pertemuan 14 DYNAMIC PROGRAMMING : COIN CHANGE PROBLEM. Matakuliah : T0034 / Perancangan & Analisis Algoritma Tahun : 2008. UANG LOGAM. Pecahan uang logam Indonesia 25 50 100 200 500 1000 Kembalian senilai 750 bisa didapat dari : 1 keping 500, 2 keping 100, 1 keping 50

yank
Télécharger la présentation

Pertemuan 14 DYNAMIC PROGRAMMING : COIN CHANGE PROBLEM

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. Pertemuan 14DYNAMIC PROGRAMMING :COIN CHANGE PROBLEM Matakuliah : T0034 / Perancangan & Analisis Algoritma Tahun : 2008

  2. UANG LOGAM • Pecahan uang logam Indonesia • 25 • 50 • 100 • 200 • 500 • 1000 • Kembalian senilai 750 bisa didapat dari : • 1 keping 500, 2 keping 100, 1 keping 50 • 7 keping 100, 1 keping 50 • 5 keping 100, 3 keping 50 • dan masih banyak lagi kombinasi lainnya • Bagaimana caranya memberikan uang kembalian 835?

  3. VARIASI COIN CHANGE PROBLEM • Misalkan di sebuah negara hanya ada pecahan uang logam C1, C2 dan C3. • Maka terdapat 3 variasi Coin Change Problem : • Apakah kembalian X bisa dibentuk dari pecahan-pecahan tersebut? • Ada berapa koin minimal untuk membentuk X? • Ada berapa kombinasi cara untuk membentuk nilai X? [buku utama, bab 7.3]

  4. CONTOH KASUS • Di sebuah negara hanya terdapat uang logam bernilai 3, 5 dan 12. • Apakah kembalian 23 bisa dibentuk dari pecahan-pecahan tersebut? • Ada berapa koin minimal untuk membentuk nilai kembalian 23? • Ada berapa kombinasi cara untuk membentuk nilai 23?

  5. KASUS 1 • Model matematika : • f(3) = true • f(5) = true • f(12) = true • f(x) = false untuk x <0 • f(n) = f(n-3) OR f(n-5) OR f(n-12) • Metode Pull • Jika kita ingin tahu apakah X bisa dibentuk, kita perlu tahu apakah X-3 atau X-5 atau X-12 bisa dibentuk • Metode Push • Jika nilai X bisa dibentuk, maka nilai X+3, X+5 dan X+12 bisa dibentuk

  6. 1 iNilaiCari=23 2 iMaxCari=25 3 iJumKoin=3 4 koin[1]=3 5 koin[2]=5 6 koin[3]=12 7 for i=1 to iMaxCari do 8 C[i]=”X” 9 end for 10 for j=1 to iJumKoin do 11 C[koin[j]]=”B” 12 end for 13 for n=1 to iMaxCari do 14 for j=1 to iJumKoin do 15 if (n-koin[j])>=1 then 16 if C[n-koin[j]]=”B” then 17 C[n]=”B” 18 end if 19 end if 20 end for 21 end for 22 if C[iNilaiCari]=”B” then 23 bBisaDicari=true 24 else 25 bBisaDicari=false 26 end if PSEUDOCODE KASUS 1 [buku utama, pseudocode 7.4a]

  7. HASIL KASUS 1 • Kolom 23 berisi tanda “B”, berarti nilai uang kembalian 23 bisa dibentuk dari koin-koin 3, 5 dan 12 • Pelajari penjelasan rinci pada ilustrasi 7.4a tentang cara kerja algoritma

  8. KASUS 2 • Model matematika : • f(23) = min { f(20), f(18), f(11) } + 1 • f(n) = min { f(n-3), f(n-5), f(n-12) } + 1 • Metode Pull • Jumlah minimal koin untuk membentuk nilai X didapat dari 1 ditambah jumlah koin minimal untuk membentuk nilai X-3 atau X-5 atau X-12 (diambil yang lebih kecil) • Metode Push • Jika nilai X bisa dibentuk dengan Y koin, maka nilai X+3, X+5, X+12 bisa dibentuk dengan Y+1 koin

  9. PSEUDOCODE KASUS 2 1 iNilaiCari=23 2 iMaxCari=25 3 iJumKoin=3 4 koin[1]=3 5 koin[2]=5 6 koin[3]=12 7 for i=1 to iMaxCari do 8 C[i]=0 9 end for 10 for j=1 to iJumKoin do 11 C[koin[j]]=1 12 end for 13 for n=1 to iMaxCari do 14 for j=1 to iJumKoin do 15 if ((n-koin[j])>=1) AND (C[n-koin[j]]>0) then 16 if (C[n]=0) OR (C[n]>(1+C[n-koin[j]])) then 17 C[n]=1+C[n-koin[j]] 18 end if 19 end if 20 end for 21 end for 22 if C[iNilaiCari]>0 then 23 bBisaDicari=true 24 iJumKoinMinimal=C[iNilaiCari] 25 else 26 bBisaDicari=false 27 end if [buku utama, pseudocode 7.5a]

  10. HASIL KASUS 2 • Kolom 23 berisi angka 4, berarti nilai uang kembalian 23 bisa dibentuk dari koin-koin 3, 5 dan 12 dengan jumlah koin minimal sebanyak 4 keping uang logam • Pelajari penjelasan rinci pada ilustrasi 7.5a tentang cara kerja algoritma

  11. KASUS 3 • Model matematika : • f(23) = f(20) + f(18) + f(11) • f(n) = f(n-3) + f(n-5) + f(n-12) • Banyaknya kombinasi untuk membentuk nilai X adalah jumlah dari kombinasi yang dapat membentuk nilai X-3, X-5 dan X-12

  12. PSEUDOCODE KASUS 3 1 iNilaiCari=23 2 iMaxCari=25 3 iJumKoin=3 4 koin[1]=3 5 koin[2]=5 6 koin[3]=12 7 for i=1 to iMaxCari do 8 C[i]= 0 9 end for 10 for j=1 to iJumKoin do 11 C[koin[j]]=1 12 end for 13 for n=1 to iMaxCari do 14 for j=1 to iJumKoin do 15 if (n-koin[j])>=1 then 16 C[n]=C[n]+C[n-koin[j]] 17 end if 18 end for 19 end for 20 if C[iNilaiCari]>0 then 21 bBisaDicari=true 22 iJumKemungkinan=C[iNilaiCari] 23 else 24 bBisaDicari=false 25 end if [buku utama, pseudocode 7.6]

  13. HASIL KASUS 3 • Kolom 23 berisi angka 24, berarti nilai uang kembalian 23 bisa dibentuk dari koin-koin 3, 5 dan 12 dengan total kemungkinan kombinasi sebanyak 24 kombinasi • Pelajari penjelasan rinci pada ilustrasi 7.6 tentang cara kerja algoritma

  14. LATIHAN • Semua pseudocode Coin Chage Problem yang dijelaskan pada pertemuan ini menggunakan metode pull. Untuk setiap kasus, buatlah pseudocode dengan metode push!

  15. REVIEW • Apa yang sudah dipahami? • Apa yang akan dibahas selanjutnya?

More Related