Коли жадібний алгоритм може вирішити проблему зміни монети?


24

З огляду на набір монет з різними конфесіями і значення v, яке ви хочете знайти найменшу кількість монет, необхідних для представлення значення v.c1,...,cn

Наприклад, для монети 1,5,10,20 це дає 2 монети на суму 6 і 6 монет на суму 19.

Моє головне питання: коли можна використати жадну стратегію для вирішення цієї проблеми?


Бонусні бали: Чи це твердження невірно? (З: Як сказати, чи достатньо жадібного алгоритму для проблеми мінімальної зміни монети? )

Однак у цій роботі є доказ того, що якщо жадібний алгоритм працює для першого найбільшого значення denom + другого за величиною номіналу, він працює для всіх, і для його перевірки пропонується просто використовувати жадібний алгоритм проти оптимального алгоритму DP. http://www.cs.cornell.edu/~kozen/papers/change.pdf

Пс. зауважте, що відповіді в цій темі неймовірно крихкі - тому я задав питання заново.


Для двійкової задачі з рюкзаком існує легко сформульований критерій: жадібний алгоритм вирішує задачу, якщо для всіх конфесій . Не так просто для зміни монети (рюкзак з довільними інтегральними змінними). Вам потрібна експозиція Журналу, Немгаузера та Троттера? ci>Σj=1i1cj
Дмитро Чубаров

2
У заяві Декстера Козена у статті йдеться про те, що якщо жадібний алгоритм узгоджується з оптимальним для всіх , то він дасть оптимальне рішення для довільного v . Я не бачу нічого поганого в цьому твердженні. v<cn1+cnv
Дмитро Чубаров

@Dmitri Chbabarov Дякую, тепер я розумію, як працює бонус q. Це схоже на сильну індукцію? Що стосується вашого іншого запитання, я хотів би відповісти, що дає рішення та бажано доказ.
The Unfun Cat

Я схвалюю питання, і якщо ніхто не заскочить, підсумовую MNT з кількома прикладами протягом вихідних.
Дмитро Чубаров

Дивіться також це пов'язане питання ; зокрема, цікавий може бути пов'язаний документ від Shallit .
Рафаель

Відповіді:


13

Система монет є канонічною, якщо кількість монет, заданих за зміну жадібним алгоритмом, є оптимальним для всіх сум.

Стаття Д. Пірсона. Поліноміально-часовий алгоритм для задачі змінення. Операції "Дослідження листів", 33 (3): 231-234, 2005 пропонує алгоритм для визначення того, чи є система монет канонічною, де n - кількість різних видів монет. З реферату:O(n3)n

Потім ми отримуємо набір можливих значень який повинен містити найменший контрприклад. Кожен може бути протестований за допомогою арифметичних операцій O ( n ) , що дає нам алгоритм O ( n 3 ) .O(n2)O(n)O(n3)

Папір досить короткий.

Для неканонічної системи монет існує сума для якої жадібний алгоритм виробляє неоптимальну кількість монет; c називається контрприкладом . Система монет є тісною, якщо її найменший зустрічний зразок більший, ніж найбільша одиночна монета.cc

У роботі " Канонічні системи монет для вирішення проблем зміни" передбачені необхідні та достатні умови, щоб системи монет розміром до п'яти монет були канонічними, а алгоритм для вирішення питання про те, чи є тісна система монет із n монет канонічною.O(n2)n

У цьому питанні se.math також є деяке обговорення .


Спасибі. Я бачу, що питання стосується набагато більше, ніж я думав, - мабуть, саме тому ви не розмістили фактичних критеріїв? Моя думка, що "якщо всі монети кратні одна одній, жадібний алгоритм дає оптимальний результат", очевидно, був занадто простим.
The Unfun Cat

Я не розміщував фактичних критеріїв, тому що не запам'ятався назовні і не встиг перечитати папери. Ви, звичайно, повинні сміливо редагувати мою відповідь.
Марк Домінус

Я прочитав відповідь і статтю кілька разів, але мені не вдалося знайти зрозумілих для людини критеріїв canonical coin system. Було б чудово, якби ви могли додати приклад, тобто як протестувати запропоновану систему1,5,10,20
Хрещений батько
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.