Размен монеты: жадный подход

Проблема состоит в том, чтобы разменять n центов на четверти, десять центов, пятак и пенни, используя наименьшее общее количество монет. В частном случае, когда четыре номинала - четвертинки, десять центов, никель и пенни, мы имеем c1 = 25, c2 = 10, c3 = 5 и c4 = 1.

Если у нас есть только четверти, десять центов и пенни (и ни один пятак), жадный алгоритм внесет изменения в 30 центов, используя шесть монет - четверть и пять пенни. - тогда как мы могли использовать три монеты, а именно три цента.

Учитывая набор номиналов, как мы можем сказать, создает ли жадный подход оптимальное решение?


person bhavya    schedule 09.05.2015    source источник
comment
Вы спрашиваете, как это решить? Для этого есть простое решение для динамического программирования.   -  person Ami Tavory    schedule 09.05.2015
comment
@AmiTavory Я читал по секретной математике и ее приложениям Розена, и он привел этот пример в своей книге. Даже я думал, что проблема похожа на задачу о ранце, и был удивлен жадным решением   -  person bhavya    schedule 09.05.2015
comment
Извините, но (по крайней мере) я просто не понимаю, о чем вы спрашиваете. Возможно, вы могли бы немного отредактировать свой вопрос.   -  person Ami Tavory    schedule 09.05.2015
comment
@AmiTavory Он просит дать достаточное условие, при котором жадный подход к размене монет будет оптимальным.   -  person amit    schedule 09.05.2015
comment
Ах, меня немного скинул Это жадный подход, подходящий для этой проблемы .. Не могу отредактировать вопрос по какой-то причине (возможно, кто-то другой (вы?) Это делает).   -  person Ami Tavory    schedule 09.05.2015
comment
@bhavya Посмотрите здесь   -  person Ami Tavory    schedule 09.05.2015


Ответы (1)


Вы спрашиваете, как определить, является ли данная система монет канонической для задачи внесения изменений. Система считается канонической, если жадный алгоритм всегда дает оптимальное решение. Вы можете решить, является ли система монет, включающая монету в 1 цент, канонической или нет, за определенное количество шагов. Подробности и более эффективные алгоритмы в некоторых случаях можно найти в http://arxiv.org/pdf/0809.0400.pdf.

person Edward Doolittle    schedule 10.05.2015