Aix Marseille Vert
Sommaire
Télécharger
À propos du bulletin

  

Euro et Math

Robert ROLLAND

1   Euros neufs et vieilles preuves

Le début de l'année 2002 nous a amené nos beaux billets européens tout neufs. Comment résister à la question que tout le monde se posait : les numéros de ces billets contiennent-ils un code détecteur d'erreurs ?  Je suis donc allé à la première heure le 1ier Janvier en chercher une petite liasse dans le distributeur le plus proche, espérant les trouver, puisque tout neufs, dans l'ordre logique de la numérotation. En effet, voici donc une partie des numéros que j'ai relevés :

U14164027898
U14164027889
U14164027871
U14164027862
U14164027853
U14164027844
U14164027835
U14164027826
U14164027817
U14164027808
U14164027781
U14164027772

On voit tout de suite que  la somme des chiffres modulo 9 est constante. Mais que faire de la lettre ? Hélas tous mes billets commençaient par U. J'entrepris donc de  réveiller mes voisins, mes amis qui n'avaient que trop dormi afin d'en trouver un qui aurait un billet préfixé d'une autre lettre. Hélas, personne n'avait le moindre petit billet à me mettre sous  la dent. Le croiriez vous, ils me répondaient tous que disposer d'un billet commençant par un V n'était pas leur souci principal et que d'ailleurs, n'ayant pas complètement cuvé leur alcool du réveillon ils ne s'étaient pas encore procuré les précieuses coupures. En plus ils disaient qu'il était l'heure du petit déjeuner, et que moi-même je ferais aussi bien d'aller me faire cuire un oeuf.
Heureusement, le site web de la Banque de France donne des photographies de divers billets, on y voit des numéros qui commencent par d'autres lettre que U.

A partir de là une généralisation audacieuse mais raisonnée donne à penser que la règle est la suivante :

On attribue à la lettre le nombre qui donne sa place dans l'alphabet (U est remplacé par 21). On fait alors la somme modulo 9
de ce nombre et de tous les chiffres qui le suivent et on obtient 8.

Je dois dire que j'étais un peu déçu qu'on nous ait ressorti cette vieille preuve par 9. J'ai donc recherché s'il n'y avait pas un autre mécanisme plus complexe.  Je n'en sais rien mais les deux numéros valides :

U14164027898
U14164027808
prouvent au moins qu'il existe des cas où une erreur sur un seul chiffre n'est pas détectée.

Que cela soit clair : un code détecteur n'a pas un rôle de sécurité destiné à prevenir les contrefaçons. On voit mal un faussaire  être assez débile pour fabriquer des billets dont les numéros seraient incohérents. De tels codes sont utilisés par exemple pour détecter des erreurs de saisie.

On peut tout de même se demander si on pouvait faire mieux sans grossir les nombres utilisés.

2  Pouvait-on faire mieux ?

Remarquons qu'on peut considérer que chaque numéro est formé d'une lettre, de 10 chiffres et d'un onzième chiffre pouvant être considéré comme la clé. Cette clé étant calculée de telle sorte que la somme totale (y compris la valeur de la lettre) soit 8 modulo 9. Il y a bien entendu une ambiguité lorsque la clé vaut 9 car alors la clé pourrait être aussi bien 0. Mais je n'ai pas trouvé de billet se terminant par 0.

Ainsi qu'on l'a vu, une telle clé ne permet pas de détecter à coup sûr une unique erreur. On peut citer divers codes pourvus eux aussi d'un seul chiffre de clé et qui eux permettent de détecter à coup sûr une unique erreur.

Exemple 1 :

Puique nous sommes dans des histoires bancaires, commençons par la règle de Luhn utilisée sur les numéros de cartes bancaires.

Un numéro de carte bancaire est de la forme

[Graphics:images/rolland_gr_1.gif]
où les [Graphics:images/rolland_gr_2.gif] sont des chiffres décimaux qu'on identifiera aux nombres 0,1,...,9. Sur ces nombres on définit l'application :

[Graphics:images/rolland_gr_3.gif]
[Graphics:images/rolland_gr_4.gif]

avec [Graphics:images/rolland_gr_5.gif]. Ainsi [Graphics:images/rolland_gr_6.gif] si [Graphics:images/rolland_gr_7.gif] et [Graphics:images/rolland_gr_8.gif].

On impose à un numéro de carte bancaire de vérifier (règle de Luhn) :

[Graphics:images/rolland_gr_9.gif]

Le chiffre [Graphics:images/rolland_gr_10.gif] peut être considéré comme la clé, calculée en fonction des autres chiffres afin que la règle de Luhn soit vérifiée. Si un des chiffres et un seul est erroné il est facile de voir  (en utilisant le fait que m est une bijection) que la cohérence est compromise et l'erreur est détectée. C'est donc déjà mieux.
De plus si deux chiffres successifs sont permutés, on s'en aperçoit, sauf si ces deux chiffres sont 0 et 9 (il suffit pour démontrer  cela de regarder la fonction [Graphics:images/rolland_gr_11.gif] et de voir que [Graphics:images/rolland_gr_12.gif] avec x et y distincts ne peut avoir lieu que si l'un des nombres est 0 et l'autre 9).

Exemple 2 :

Le deuxième exemple est le code UPC (Universal Product Code) utilisé pour coder par exemple les produits des supermarchés.
Le code UPC utilise des nombres de 12 chiffres [Graphics:images/rolland_gr_13.gif] (11 chiffres pour désigner un produit, et une clé), de telle sorte que

[Graphics:images/rolland_gr_14.gif]
soit divisible par 10.

Si un chiffre du nombre [Graphics:images/rolland_gr_15.gif] est modifié, la somme [Graphics:images/rolland_gr_16.gif] associée à A est modifiée en [Graphics:images/rolland_gr_17.gif] de telle sorte que [Graphics:images/rolland_gr_18.gif]  ou que [Graphics:images/rolland_gr_19.gif] avec [Graphics:images/rolland_gr_20.gif].
Dans chacun de ces cas [Graphics:images/rolland_gr_21.gif] n'est pas divisible par 10 et donc [Graphics:images/rolland_gr_22.gif] n'est pas divisible par 10 ce qui permet de détecter l'erreur.

Si le chiffre [Graphics:images/rolland_gr_23.gif] est permuté avec [Graphics:images/rolland_gr_24.gif], la somme [Graphics:images/rolland_gr_25.gif] est transformée en [Graphics:images/rolland_gr_26.gif] de telle sorte que

[Graphics:images/rolland_gr_27.gif]

Donc

[Graphics:images/rolland_gr_28.gif]

En dehors des cas où [Graphics:images/rolland_gr_29.gif][Graphics:images/rolland_gr_30.gif], [Graphics:images/rolland_gr_31.gif] n'est pas divisible par 10 donc l'erreur est détectée.

Hélas il y a là encore des cas particuliers pour lesquels une permutation de deux chiffres consécutifs n'est pas détectée.

Exemple 3 :

Donnons un autre exemple instructif, le code ISBN utilisé pour les livres.
L'International Standard Book Number utilise des mots de longueurs 10 constitués avec les chiffres  0, 1, ...,9 et le symbole X (qui représente le nombre 10) ; le symbole X ne sera utilisé, si nécessaire, que pour la clé.

    Exemples : 2 84180 013 X,  2 84225 000 1,  0 471 62187 0,  0 12 163251 2.

Le premier chiffre représente le pays, un bloc de chiffres est attribué à un éditeur, un autre bloc est le numéro donné par l'éditeur, le dernier symbole est la clé, calculée de telle sorte que si [Graphics:images/rolland_gr_32.gif] désigne un numéro I.S.B.N., [Graphics:images/rolland_gr_33.gif] soit divisible par 11.

Remarquons que [Graphics:images/rolland_gr_34.gif]. Ceci simplifie un peu le calcul de la clé.

Soit A un numéro valide. Appelons [Graphics:images/rolland_gr_35.gif] le nombre [Graphics:images/rolland_gr_36.gif] obtenu à partir des chiffres de A. On sait que [Graphics:images/rolland_gr_37.gif] est divisible par 11.
Si un chiffre de A est modifié, on obtient alors A' dont le nombre associé [Graphics:images/rolland_gr_38.gif] vérifie [Graphics:images/rolland_gr_39.gif][Graphics:images/rolland_gr_40.gif], [Graphics:images/rolland_gr_41.gif]. Le nombre ia est premier avec 11, donc [Graphics:images/rolland_gr_42.gif] n'est pas divisible par 11, ce qui permet de détecter l'erreur.

Si deux chiffres distincts sont permutés, par exemples ceux d'indices i et j, le nombre [Graphics:images/rolland_gr_43.gif] devient [Graphics:images/rolland_gr_44.gif] et

[Graphics:images/rolland_gr_45.gif]
[Graphics:images/rolland_gr_46.gif]. On a [Graphics:images/rolland_gr_47.gif] et [Graphics:images/rolland_gr_48.gif]. Donc [Graphics:images/rolland_gr_49.gif] n'est pas divisible par 11 et [Graphics:images/rolland_gr_50.gif] n'est pas divisible par 11.

Cette fois-ci, contrairement aux deux premiers exemples, on a pu détecter outre une erreur sur un chiffre, toutes les permutations de deux chiffres consécutifs. Mais nous avons travaillé modulo 11 ce qui introduit une clé "parasite" X. Bien entendu on pourrait décider de supprimer tous les numéros ayant cette clé parasite. Ce n'est pas commode et fait perdre des représentations valides.

3  Toujours plus fort : la perle rare

Alors la question maintenant est de savoir si on peut faire encore mieux que dans les trois exemples précédents. Autrement dit, peut-on avoir un code avec une clé formé d'un chiffre décimal et qui permette de détecter à coup sûr une unique erreur, ou une permutation de deux chiffres consécutifs.

Notons [Graphics:images/rolland_gr_51.gif] un numéro dépendant des deux variables [Graphics:images/rolland_gr_52.gif] et [Graphics:images/rolland_gr_53.gif]où i est une position fixée (autrement dit on regarde ce qu'il se passe lorsqu'on fixe les composantes d'un numéro, sauf deux d'entre elles consécutives. La clé calculée lorsque [Graphics:images/rolland_gr_54.gif] et [Graphics:images/rolland_gr_55.gif] est notée f(u,v) (ici [Graphics:images/rolland_gr_56.gif]). Si on veut pouvoir détecter à coup sûr un erreur sur un chiffre il est nécessaire que pour v fixée à une valeur [Graphics:images/rolland_gr_57.gif], la fonction de u seule, [Graphics:images/rolland_gr_58.gif] soit une bijection de {0,...,9} sur lui même et aussi qu'en fixant u à la valeur [Graphics:images/rolland_gr_59.gif]la fonction [Graphics:images/rolland_gr_60.gif] soit bijective. De plus lorsque u≠v on doit avoir f(u,v)≠f(v,u). Tout ceci peut s'interpréter de la façon suivante. Construisons une matrice de taille [Graphics:images/rolland_gr_61.gif] pour laquelle les coefficients [Graphics:images/rolland_gr_62.gif] sont les f(u,v). Chaque ligne et chaque colonne doit contenir exactement un permutation des 10 chiffres décimaux. Cette matrice est un carré latin. De plus ce carré latin doit être tel que deux éléments qui sont symétriques par rapport à la diagonale principale (sans être sur cette diagonale !) sont toujours distincts. Il n'y a d'espoir d'existence d'un code vérifiant les propriétés  indiquées que si un tel carré latin existe.

Soit [Graphics:images/rolland_gr_63.gif] le groupe diédral d'ordre 10 que nous représenterons comme le groupe des isométries laissant invariant un pentagone régulier.
Notons O le centre du pentagone et [Graphics:images/rolland_gr_64.gif] les sommets écrits dans l'ordre (sens trigonométrique).
Nous numérotons les transformations de la façon suivante : 0 est l'identité, 1 est la rotation R de centre O et d'angle [Graphics:images/rolland_gr_65.gif],  2, 3, 4 sont respectivement les rotations [Graphics:images/rolland_gr_66.gif]. Enfin 5 ,6, 7, 8, 9 sont respectivement les symétries [Graphics:images/rolland_gr_67.gif] [Graphics:images/rolland_gr_68.gif][Graphics:images/rolland_gr_69.gif][Graphics:images/rolland_gr_70.gif][Graphics:images/rolland_gr_71.gif][Graphics:images/rolland_gr_72.gif]désigne la symétrie par rapport à l'axe [Graphics:images/rolland_gr_73.gif]. On prend comme loi de groupe sur {0,...,9} la loi "*" donnée par la composition des transformations. Ainsi [Graphics:images/rolland_gr_74.gif] tandis que [Graphics:images/rolland_gr_75.gif].

On introduit aussi la permutation [Graphics:images/rolland_gr_76.gif] de {0,...,9} dans lui même définie par

[Graphics:images/rolland_gr_77.gif]

La matrice A  dont les coefficients [Graphics:images/rolland_gr_78.gif] vérifient [Graphics:images/rolland_gr_79.gif] est un carré latin ayant la propriété indiquée. Pour voir cela il suffit d'écrire cette matrice.

[Graphics:images/rolland_gr_80.gif]

Remarque : Il est possible de montrer que si on avait pris une opération commutative [Graphics:images/rolland_gr_81.gif] alors quel que soit le choix de la permutation [Graphics:images/rolland_gr_82.gif] la matrice ayant pour coefficients [Graphics:images/rolland_gr_83.gif] ne convient pas.

Maintenant, expliquons comment calculer la clé. On calcule [Graphics:images/rolland_gr_84.gif] en fonction de [Graphics:images/rolland_gr_85.gif] de telle sorte que :

[Graphics:images/rolland_gr_86.gif]

On obtient alors le code convoité.

4  Conclusion

Voilà ce qu'à peu près ils auraient pu construire ...


Converted by Mathematica


Régionale aix-Marseille

Haut de la page 

A.P.M.E.P.