Это не ответ, но, возможно, это укажет вам или кому-то еще в правильном направлении.
Я нашел статью Д. Козена и С. Закса под названием «Оптимальные границы для задачи изменения», в которой они дают условия, когда алгоритм жадных изменений экземпляра монетного экземпляра является оптимальным. Я буду использовать их обозначения.
Для данного экземпляра замены монет различных монет
( c 1 , c 2 , c 3 , ⋯ , c m - 1 , c m ) c 1 = 1 < c 2 < c 3 < ⋯ < c m - 1 < c m
a функция M ( x ), представляющая оптимальное количество монет, необходимое для внесения изменений в x, и функциям
( с1, с2,с3, ⋯ ,см -1,см)
с1= 1 < с2< с3< ⋯ < см - 1< см
M( х )Икс представляет количество монет, необходимое для жадного внесения изменений для x , тогда, если M ( x ) ≠ G ( x ) , существует контрпример в диапазоне
c 3 + 1 < x < c m - 1 + c mG ( х )ИксM( х ) ≠ G ( х )с3+ 1 < x < cм - 1+ см
Они продолжают показывать, что
Иксс3+ 1 < x < cм - 1+ см
G ( x ) ≤ G ( x - c ) + 1
c ∈ ( c1, с2, ⋯ , см)
G ( х ) = М( х )
Это дает нам «эффективный» (до псевдополиномиального времени) тест, чтобы определить, является ли экземпляр замены монет жадным или нет.
Используя вышеизложенное, я провел короткую симуляцию, результаты которой представлены в масштабе лог-лога ниже
м[ 1 ⋯ N]
м = 383N- 12
пм( N) ∝ N- ( м - 2 )2
пм( N)мN
мN
( 1 , 5 , 10 , 25 , 50 , 100 , 200 , 500 , 1000 , 2000 , 5000 , 10000 )) которые не выглядят равномерно распределенными. Возможно, просмотр других распределений для создания номиналов монет даст нетривиальные результаты в большом системном пределе. Например, распределение по степенному закону может привести к номиналу монет, более похожему на американский.