Mark vit dans un petit pays peuplé de gens qui ont tendance à trop penser aux choses. Un jour, le roi du pays décide de repenser la monnaie du pays pour rendre le changement plus efficace. Le roi veut minimiser le nombre de pièces attendu pour payer exactement tout montant jusqu'à (mais sans inclure) le montant de la plus petite facture papier.
Supposons que la plus petite unité monétaire soit la pièce. La plus petite facture papier du royaume vaut pièces. Le roi décide qu'il ne doit pas y avoir plus de différentes dénominations de pièces en circulation. Le problème est donc de trouver un set \ {d_1, d_2, ..., d_m \} d'entiers de \ {1, 2, ..., n - 1 \} qui minimise \ frac {1} {n-1} \ sum_ {i = 1} ^ {n-1} {c_1 (i) + c_2 (i) + ... + c_m (i)} sous réserve de c_1 (i) d_1 + c_2 (i) d_2 + ... c_m (i) d_m = i .
Par exemple, prenez l'USD standard et ses dénominations de pièces de . Ici, la plus petite facture papier vaut 100 de la plus petite pièce. Il faut 4 pièces pour faire 46 cents en utilisant cette monnaie; nous avons . Cependant, si nous avions des pièces de , il ne faudrait que 3 pièces: . Lequel de ces ensembles de coupures minimise le nombre moyen de pièces pour faire une somme allant jusqu'à 99 cents inclus?
Plus généralement, étant donné et , comment pourrait-on déterminer algorithmiquement l'ensemble optimal? De toute évidence, on pourrait énumérer tous les sous-ensembles viables et calculer le nombre moyen de pièces nécessaires pour faire des sommes de 1 à , en gardant une trace optimale en cours de route. Puisqu'il y a environ (qui ne sont pas tous viables, mais quand même), cela ne serait pas terriblement efficace. Pouvez-vous faire mieux que ça?