Mark vive en un pequeño país poblado por personas que tienden a pensar demasiado. Un día, el rey del país decide rediseñar la moneda del país para que el cambio sea más eficiente. El rey quiere minimizar la cantidad esperada de monedas necesarias para pagar exactamente cualquier cantidad hasta (pero sin incluir) la cantidad de la factura en papel más pequeña.
Supongamos que la unidad monetaria más pequeña es la moneda. El billete de papel más pequeño del reino vale monedas. El rey decide que no debe haber más de denominaciones de monedas diferentes en circulación. El problema, entonces, es encontrar un -set de los enteros de que minimiza sujeto a .
Por ejemplo, tome el USD estándar y sus denominaciones de monedas de . Aquí, el billete de papel más pequeño vale 100 de la moneda más pequeña. Se necesitan 4 monedas para hacer 46 centavos usando esta moneda; tenemos . Sin embargo, si tuviéramos denominaciones de monedas de , solo se necesitarían 3 monedas: . ¿Cuál de estos conjuntos de denominaciones minimiza el número promedio de monedas para hacer una suma de hasta 99 centavos?
De manera más general, dados y , ¿cómo se podría determinar algorítmicamente el conjunto óptimo? Claramente, uno podría enumerar todos los subconjuntos viables y calcular el número promedio de monedas que se necesitan para hacer sumas de 1 a , haciendo un seguimiento del óptimo en el camino. Como hay alrededor de subconjuntos (no todos son viables, pero aún así), esto no sería terriblemente eficiente. ¿Puedes hacerlo mejor que eso?