Dado um conjunto de moedas com denominações diferentes e um valor v, você deseja encontrar o menor número de moedas necessário para representar o valor v.
Por exemplo, para o conjunto de moedas 1,5,10,20, isso fornece 2 moedas para a soma 6 e 6 moedas para a soma 19.
Minha principal pergunta é: quando uma estratégia gananciosa pode ser usada para resolver esse problema?
Pontos de bônus: Esta declaração está incorreta? (De: Como saber se o algoritmo ganancioso é suficiente para o problema de troca mínima de moedas? )
No entanto, este artigo tem uma prova de que, se o algoritmo ganancioso funciona para o primeiro maior denominador e o segundo maior denominador, ele funciona para todos eles, e sugere apenas o uso do algoritmo ganancioso versus o algoritmo DP ideal para verificá-lo. http://www.cs.cornell.edu/~kozen/papers/change.pdf
Ps. observe que as respostas nesse tópico são incrivelmente ruins - foi por isso que fiz a pergunta novamente.
fonte
Respostas:
Um sistema de moedas é canônico se o número de moedas dado em troca pelo algoritmo ganancioso for ideal para todos os valores.
O artigo D. Pearson. Algoritmo de tempo polinomial para o problema de mudança. O Operations Reseach Letters, 33 (3): 231-234, 2005 oferece um algoritmo para decidir se um sistema de moedas é canônico, onde n é o número de diferentes tipos de moedas. Do resumo:O(n3) n
O artigo é bastante curto.
Há também alguma discussão nesta questão .
fonte
canonical coin system
. Seria ótimo se você pudesse adicionar um exemplo, ou seja, como testar o sistema sugerido1,5,10,20