Diberikan satu set koin dengan denominasi berbeda dan nilai v Anda ingin menemukan jumlah koin paling sedikit yang diperlukan untuk mewakili nilai v.
Misalnya untuk coinet 1,5,10,20 ini memberikan 2 koin untuk jumlah 6 dan 6 koin untuk jumlah 19.
Pertanyaan utama saya adalah: kapan strategi serakah dapat digunakan untuk menyelesaikan masalah ini?
Poin bonus: Apakah pernyataan ini tidak benar? (Dari: Bagaimana cara mengetahui apakah algoritma serakah cukup untuk masalah perubahan koin minimum? )
Namun, makalah ini memiliki bukti bahwa jika algoritma serakah bekerja untuk denom terbesar pertama + nilai denom terbesar kedua, maka ia bekerja untuk mereka semua, dan itu menyarankan hanya menggunakan algoritma serakah vs algoritma DP optimal untuk memeriksanya. http://www.cs.cornell.edu/~kozen/papers/change.pdf
Ps. perhatikan bahwa jawaban di utas itu sangat payah - itu sebabnya saya mengajukan pertanyaan baru.
sumber
Jawaban:
Sistem koin adalah kanonik jika jumlah koin yang diberikan dalam perubahan oleh algoritma serakah optimal untuk semua jumlah.
Makalah D. Pearson. Algoritma waktu polinomial untuk Masalah Perubahan-Perubahan. Operations Reseach Letters, 33 (3): 231-234, 2005 menawarkan algoritma untuk memutuskan apakah sistem koin kanonik, di mana adalah jumlah berbagai jenis koin. Dari abstrak:O ( n3) n
Makalahnya cukup pendek.
Untuk sistem koin non-kanonik, ada jumlah yang algoritma serakahnya menghasilkan jumlah koin suboptimal; disebut sampel balik . Sistem koin ketat jika sampel tandingan terkecilnya lebih besar dari koin tunggal terbesar.c c
Makalah Sistem Koin Canonical untuk Masalah Pembuatan Perubahan menyediakan kondisi yang diperlukan dan memadai untuk sistem koin hingga lima koin menjadi kanonik, dan algoritma untuk memutuskan apakah sistem koin ketat dari koin adalah kanonik.O ( n2) n
Ada juga beberapa diskusi dalam pertanyaan ini .
sumber
canonical coin system
. Akan lebih bagus jika Anda dapat menambahkan contoh, yaitu cara menguji sistem yang disarankan1,5,10,20