Combien d'erreurs un code peut-il corriger, et comment le savoir en mesurant des distances entre mots binaires ?
La distance de Hamming compte les positions où deux mots diffèrent. Si les mots d'un code sont tous à distance au moins d, il détecte d − 1 erreurs et en corrige ⌊(d − 1)/2⌋. Le code de Hamming (7, 4) a d = 3 et ses 16 « boules » de 8 mots remplissent exactement les 128 mots de 7 bits.
Grand oral session 2027 : exposé de 10 minutes debout, puis 10 minutes d'échange, sans calculatrice. Plan prévu pour 9,5 min.
Pourquoi cette question : un modèle d'introduction
Le jury attend que vous expliquiez pourquoi vous avez choisi la question. Inspirez-vous de ce modèle, mais racontez votre propre parcours.
Après avoir étudié le bit de parité et le code de Hamming, je me suis demandé s'il existait une règle générale pour savoir combien d'erreurs un code peut corriger. J'ai découvert la distance de Hamming, qui transforme ce problème en problème de géométrie : des mots binaires, des distances, et des boules qui ne doivent pas se chevaucher.
L'enjeu et les notions du programme
Définir une distance sur les mots binaires, en déduire la capacité d'un code par l'inégalité triangulaire, puis dénombrer les boules.
Mathématiques
- Distance, inégalité triangulaire (seconde)
- Combinaisons, dénombrement (terminale)
- Partie entière, raisonnement sur les inégalités (seconde)
Numérique et sciences informatiques
- Codes détecteurs et correcteurs (première)
- Opérateur xor, comptage de bits (première)
Le plan de l'exposé en 9,5 min
1. Introduction
1 minUn code choisit, parmi tous les mots binaires de longueur n, certains mots autorisés. Le récepteur qui reçoit un mot non autorisé sait qu'il y a eu une erreur. Problématique : combien d'erreurs le code peut-il détecter ou corriger ?
2. Mathématiques : une géométrie des mots binaires
4,5 minLa distance de Hamming d(u,v) est le nombre de positions où u et v diffèrent : d(10110,11100)=2. C'est le nombre de 1 de u⊕ v. Elle vérifie l'inégalité triangulaire d(u,w)≤ d(u,v)+d(v,w) : pour passer de u à w, il suffit de corriger les différences avec v, puis celles de v avec w.
Soit d la plus petite distance entre deux mots du code. Détection : d-1 erreurs au plus ne transforment jamais un mot du code en un autre. Correction : avec t erreurs et 2t+1≤ d, le mot reçu r est à distance au plus t du mot envoyé c. Tout autre mot c' du code vérifie d(r,c')≥ d(c,c')-d(c,r)≥2t+1-t=t+1. Le mot le plus proche est donc c : on corrige en choisissant le mot du code le plus proche. Un code corrige lfloor(d-1)/2rfloor erreurs.
Dénombrement : la « boule » de rayon 1 autour d'un mot de 7 bits contient le mot et ses binom71=7 voisins : 8 mots. Le code de Hamming (7, 4) a 2⁴=16 mots, à distance au moins 3, donc des boules disjointes : 16×8=128=2⁷. Elles remplissent tout l'espace.
3. NSI : choisir un code
2,5 minLe code à répétition triple (000, 111) a d=3 : il corrige 1 erreur, mais avec un rendement de 1/3. Le code de Hamming (7, 4) a aussi d=3, avec un rendement de 4/7 : il est bien plus efficace.
Pour corriger t erreurs, il faut des boules de rayon t disjointes : 2^(k)(1+binom n1+…+binom nt)≤2ⁿ. Cette borne indique combien de bits de contrôle sont nécessaires. En Python, la distance se calcule en comptant les 1 de u⊕ v.
4. Conclusion
1,5 minLa distance de Hamming fait des codes une géométrie : avec une distance minimale d, on détecte d-1 erreurs et on en corrige lfloor(d-1)/2rfloor, par l'inégalité triangulaire. Le dénombrement des boules mesure le prix de cette protection. J'ouvre sur les codes de Reed-Solomon des QR codes, qui corrigent jusqu'à 30 % de symboles abîmés.
Ce que j'écris au tableau
Pas de calculatrice ni de support numérique : un calcul clé écrit au tableau rend l'exposé concret et montre la solidité des connaissances.
détecte d-1, corrige lfloor(d-1)/2rfloor 2⁴×(1+7)=128=2⁷
Conclusion : la réponse à la question
La capacité d'un code se lit sur une distance : plus ses mots sont éloignés, plus il corrige d'erreurs. L'inégalité triangulaire garantit la correction, et le dénombrement des boules en fixe le coût.
Les questions probables du jury
Pendant les 10 minutesd'échange, le jury vous fait préciser et approfondir, sur tout le programme de vos spécialités en lien avec la question.
Calculez d(1011, 0110).
1011 ⊕ 0110 = 1101, trois 1 : distance 3.
Combien d'erreurs corrige un code de distance minimale 5 ?
lfloor4/2rfloor=2.
Quelle est la distance minimale du code de parité sur 9 bits ?
2 : il détecte 1 erreur mais n'en corrige aucune.
Combien de mots dans une boule de rayon 2 en longueur 7 ?
1+7+21=29.
Pourquoi l'inégalité triangulaire est-elle vraie ?
Chaque position où u et w diffèrent est une position où u diffère de v ou bien v diffère de w.
Les pièges qui coûtent des points
- Confondre détecter et corriger.
- Oublier la partie entière dans ⌊(d − 1)/2⌋.
- Oublier le mot central dans le décompte d'une boule.
Revoir les notions
Autres questions : transmettre et compresser
- Comment un ordinateur peut-il savoir qu'un message a été abîmé pendant sa transmission ?
- Comment un message peut-il se réparer tout seul quand un bit a été faussé ?
- Comment un site marchand sait-il instantanément qu'un numéro de carte bancaire a été mal recopié ?
- Pourquoi la clé d'un IBAN repose-t-elle sur le reste de la division par 97 ?
Préparer l'oral, pas seulement le contenu
Gestion des 20 minutes de préparation, usage du tableau, posture debout, réponses au jury : la méthode complète, conforme aux règles de la session 2027.
Méthode : traiter une question de Grand oral →