Mark vive in un piccolo paese popolato da persone che tendono a pensare troppo alle cose. Un giorno, il re del paese decide di ridisegnare la valuta del paese per rendere il cambiamento più efficiente. Il re vuole ridurre al minimo il numero previsto di monete necessarie per pagare esattamente qualsiasi importo fino a (ma non incluso) l'importo della fattura cartacea più piccola.
Supponiamo che la più piccola unità di valuta sia la moneta. La banconota di carta più piccola del regno vale monete. Il re decide che non dovrebbero esserci più di monete diverse in circolazione. Il problema, quindi, è trovare un -set di numeri interi da che minimizza soggetto a .
Ad esempio, prendi l'USD standard e le sue denominazioni in monete di . Qui, la banconota di carta più piccola vale 100 della moneta più piccola. Ci vogliono 4 monete per fare 46 cent usando questa valuta; abbiamo . Tuttavia, se avessimo un taglio in monete di , ci vorrebbero solo 3 monete: c_1 (46) = 1, c_2 (46) = 1, c_3 (46) = 1 . Quale di questi set di denominazioni minimizza il numero medio di monete per fare una somma fino a 99 centesimi inclusi?
Più in generale, dati e , come si può determinare algoritmicamente il set ottimale? Chiaramente, si potrebbero enumerare tutti i -subset vitali e calcolare il numero medio di monete necessarie per fare somme da 1 a , tenendo traccia di quello ottimale lungo il percorso. Dato che ci sono circa -subset (non tutti fattibili, ma comunque), questo non sarebbe terribilmente efficiente. Puoi fare di meglio?