Leçon
La théorie — Rendu de monnaie : glouton ou optimal
Le problème du rendu de monnaie consiste à obtenir un montant avec le plus petit nombre de pièces choisies dans un ensemble de valeurs, chaque pièce étant disponible en quantité illimitée. L’algorithme glouton prend chaque fois la plus grande pièce possible. La programmation dynamique donne une solution exacte en résolvant d’abord tous les montants inférieurs : M(0) = 0 et M(a) = 1 + min M(a − c) pour les pièces c ≤ a. Un système dans lequel l’algorithme glouton est optimal pour tout montant est dit canonique.
Ce que signifie chaque symbole
M(a)- le plus petit nombre de pièces permettant d’obtenir le montant a ; c’est le nombre inscrit dans la case a du tableau
G(a)- le nombre de pièces utilisées par l’algorithme glouton pour a
cₘ, cₘ₋₁- la plus grande et la deuxième plus grande pièce ; s’il existe un premier montant où l’algorithme glouton est sous-optimal, il est inférieur à leur somme
- Suppose
- Chaque pièce est disponible en quantité illimitée, les valeurs sont des nombres entiers et seul compte le nombre de pièces. Une caisse qui n’a plus de florins pose un autre problème. La borne exige une pièce de 1 ; sans elle, certains montants sont impossibles à rendre, et la méthode gloutonne peut rester en deçà d’un montant que le tableau parvient à former.
Problème entièrement résolu
-
Quelle troisième pièce ajouter à 1 et 5 ? 3 étapes
Un pays possède des pièces de 1 et de 5 et souhaite en créer une troisième, d, comprise entre 6 et 30. Pour quelles valeurs de d la méthode gloutonne sera-t-elle toujours optimale ? La page ne teste qu’un système à la fois, mais la règle de Kozen et Zaks pour trois pièces permet de traiter les 25 possibilités d’un seul coup. Appuyez d’abord sur 1, 3, 4 pour appliquer la règle à un système déjà vérifié par la page.
Ouvrez ce problème dans l'outil
-
Pour des pièces 1 < c < d, la règle est la suivante : écrivez d = qc + r avec 0 ≤ r < c. Le système échoue quelque part si et seulement si 0 < r < c − q. Pour 1, 3, 4, on a d = 4 = 1 × 3 + 1, donc q = 1 et r = 1 ; l’inégalité 0 < 1 < 2 est vérifiée. Le système échoue, et la page situe son premier échec à 6 :
-
Prenons maintenant c = 5. On écrit donc d = 5q + r, et le critère devient 0 < r < 5 − q. Plus q augmente, moins il reste de valeurs possibles pour r :
-
Pour q = 1 (d de 6 à 9), r peut valoir 1, 2 ou 3 : d = 6, 7 et 8 échouent. Pour q = 2 (10 à 14), r vaut 1 ou 2 : ce sont 11 et 12. Pour q = 3 (15 à 19), seul r = 1 convient : on obtient 16. À partir de q = 4, 5 − q vaut 1 ou moins, et aucun r ne satisfait le critère :
Réponse
Six valeurs échouent : 6, 7, 8, 11, 12 et 16. Les dix-neuf autres conviennent, notamment toutes les valeurs de d comprises entre 17 et 30. Saisissez
1, 5, 12pour observer l’un des six échecs : la méthode gloutonne rend 15 avec 12 + 1 + 1 + 1, soit quatre pièces, alors que trois pièces de cinq suffisent. -
Parcours
Pourquoi un algorithme est correct
Références (3)
- The bound the page draws as a dashed line and settles every system with: if greedy is ever beaten, the smallest amount where it is beaten lies strictly between c₃ + 1 and cₘ + cₘ₋₁; the three-coin rule the worked problem uses; the {1, 3, 4} example and the US system 1, 5, 10, 25, 50, 100 as canonical: D. Kozen and S. Zaks, "Optimal bounds for the change-making problem." Theoretical Computer Science 123(2), 1994, pp. 377-388. DOI 10.1016/0304-3975(94)90134-1
- The pre-decimal coins and their values in pence (threepence, sixpence, shilling of 12d, florin of two shillings, half-crown of two shillings and sixpence, crown of five shillings), and the halfpenny's end as legal tender on 31 July 1969: Wikipedia contributors, "£sd", Wikipedia, The Free Encyclopedia, accessed 3 October 2026.
- Which coins made up the circulating set at the end, as the Royal Mint itself issued them in 1970: half-crown, florin, shilling, sixpence, threepence, penny and halfpenny: The Royal Mint, "1970 Pre-Decimal UK Proof Set", product description, accessed 3 October 2026.