3.3 Problème de pièces de monnaie
Nous allons maintenant nous intéresser au problème des pièces de monnaie de Frobenius. Au Royaume-Uni, les pièces de monnaie ont les dénominations penny, pence, pence, pence, pence, pence, pound et pounds. En utilisant seulement des pièces de pence et pence, quel est le plus grand montant d’argent qu’il est impossible de faire ?
![]() |
![]() |
Par essaie et erreur, on peut facilement construire le tableau suivant:
| Montant | Représentation |
| 1 | impossible |
| 2 | 2 |
| 3 | impossible |
| 4 | 2 + 2 |
| 5 | 5 |
| 6 | 2 + 2 + 2 |
| 7 | 5 + 2 |
| 8 | 2 + 2 + 2 + 2 |
| 9 | 5 + 2 + 2 |
| 10 | 2+2+2+2+2 ou 5+5 |
Nous allons maintenant utiliser le principe d’induction généralisé pour montrer qu’il est possible de réaliser tous les entiers supérieurs ou égaux à (donc est le plus grand montant qu’il est impossible de faire). Nous savons déjà qu’il est possible de faire et . Supposons qu’il soit possible de réaliser tous les montants d’argent entre et avec . On veut maintenant montrer qu’il est possible de faire . Pour ce faire, il suffit de remarquer que, par hypothèse, il est possible de faire , et qu’en ajoutant une pièce de 2 pence, on obtient . Il est donc possible de réaliser . Par le principe d’induction généralisé, il est donc possible de faire tous les montants d’argent supérieurs ou égaux à pence.
Bien que nous sachions qu’il soit possible de réaliser tous les montants , une autre question liée est de savoir de combien de façons cela peut être réalisé. Nous avons déjà remarqué qu’un montant de pence peut être réalisé de (au moins) deux façons différentes, mais pour les autres, nous ne savons pas encore. Pour ce faire, nous allons considérer deux approches différentes. La première en utilisant les récurrences, et la seconde en utilisant les fonctions génératrices. Pour conclure cette section, nous allons faire quelques commentaires concernant les différences importantes entre les deux méthodes.
Solution à l’aide d’une récurrence
Dans un premier temps, remarquons qu’il est impossible de faire un montant de penny et de pence. De plus, il existe exactement une façon de faire un montant de , et pence. Ces valeurs nous serviront de valeurs initiales pour notre problème. Maintenant, remarquons que pour faire un montant de pence, on peut prendre un montant de pence et ajouter une pièce de pence, ou prendre un montant de pence et ajouter une pièce de pence. On obtient donc la récurrence suivante:
À partir de cette récurrence, il nous est maintenant facile de compléter le tableau ci-dessous.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| 0 | 1 | 0 | 1 | 1 | 1 | 2 | 1 | 3 | 2 | 4 | 4 | 5 | 7 | 7 |
Ce qui a été accompli à l’aide du code Python suivant:
1 from sympy import *2 from pandas import *3 init_printing()45 def a(n):6 if n == 1:7 return 08 if n == 2:9 return 110 if n == 3:11 return 012 if n == 4:13 return 114 if n == 5:15 return 116 else:17 return a(n-2) + a(n-5)1819 tableau = DataFrame([[a(n) for n in range(1,16)]])20 tableau.columns = [n for n in range(1,16)]21 tableau.index = ["Valeurs"]22 tableau
Solution à l’aide des fonctions génératrices ordinaires
Pour résoudre le problème avec les fonctions génératrices, nous allons commencer par trouver une fonction génératrice correspondant aux pièces de pence, puis aux pièces de pence séparément, et enfin combiner les deux séries génératrices pour obtenir notre solution.
En utilisant uniquement les pièces de pence, il n’existe aucune façon de faire un montant impair et exactement une façon de faire un montant pair. Cela nous donne donc la fonction génératrice suivante:
Pour les pièces de pence, l’idée est semblable. Il existe exactement une façon de faire tous les multiples de , et aucune pour les autres valeurs. La fonction génératrice est donc:
Maintenant, pour obtenir le nombre de façons de faire un montant de pence en utilisant des pièces de pence et de pence, il nous suffit tout simplement de multiplier les deux fonctions génératrices et de prendre les coefficients de la série. La fonction génératrice décrivant le problème est donc:
Nous n’avons cependant aucune façon, du moins pour le moment, de réécrire cette fonction sous forme de série. L’idée de prendre les coefficients n’est donc pas possible pour le moment sans l’utilisation de logiciel. En se limitant à un montant de pence comme nous l’avons fait avec les récurrences, il nous est cependant possible de résoudre le problème en effectuant uniquement la multiplication de deux polynômes. On a donc:
Nous pouvons ignorer les termes de degré supérieur, car ils ne peuvent pas contribuer au coefficient de pour des valeurs de . En prenant les coefficients, nous obtenons donc le tableau suivant:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
| 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 2 | 1 | 2 | 1 | 2 | 2 |
Le même tableau peut être obtenu en utilisant directement la fonction génératrice et le code Python suivant:
1 from sympy import *2 from pandas import *3 init_printing()45 x = Symbol(’x’)6 fonction = 1 / ((1-x**2) * (1-x**5))7 polynome = Poly(series(fonction, x, n=16).removeO()).all_coeffs()8 polynome.reverse()910 tableau = DataFrame([polynome])11 tableau.index = ["Valeurs"]12 tableau
Comparaison des deux méthodes et conclusion partielle
En comparant les tableaux que nous avons obtenus pour chacune des deux méthodes, vous devriez remarquer un problème évident. Les valeurs ne sont pas identiques. Ceci n’a aucun sens, sauf si nous avons interprété le problème de deux façons différentes. c’est exactement ce qui s’est produit ici. Dans la méthode avec les récurrences, nous avons considéré que l’ordre était important. Un montant de pence peut être obtenu en faisant ou . Il y a donc deux possibilités. Ceci se justifie en remarquant que notre récurrence nous affirme que pour faire pence, on peut prendre un montant de pence et ajouter pence, ou prendre un montant de pence et ajouter pence.
Dans la méthode avec les fonctions génératrices, les choses sont un peu différentes. En effectuant le produit des deux polynômes, nous avons systématiquement pris les pièces de pence en premier, puis les pièces de pence. La conséquence est que nous avons indirectement supposé que l’ordre des pièces n’était pas important.
Conclusion: Les deux méthodes sont tout à fait correctes et permettent toutes les deux de résoudre le problème original. La différence était qu’une information importante manquait dans la question, et les deux méthodes nous ont permis de résoudre chacune une interprétation différente du problème.
Laquelle des deux solutions est la meilleure ? Cela dépend bien sur de l’interprétation du lecteur, mais en règle générale, nous considérerons la seconde interprétation comme plus intéressante. La raison est qu’en pratique, l’ordre des pièces que vous remettez au caissier est rarement important ; tout ce qui compte est d’avoir le bon montant. Il n’y a aucune raison que le caissier compte vos pièces exactement dans le même ordre que vous l’avez fait.
![[Uncaptioned image]](imagesChap3/2pence.png)
![[Uncaptioned image]](imagesChap3/5pence.png)