Codes correcteurs linéaires : distance de Hamming, matrices G & H, syndrome, code de Hamming et bornes
Idée. Transmettre de l'information sur un canal bruité (CD rayé, paquet réseau corrompu, mémoire RAID) : on ajoute de la redondance pour détecter et corriger les erreurs. Mathématiquement, un code applique l'algèbre linéaire sur un corps fini Fq — c'est une application directe des chapitres Corps finis, Polynômes et Anneaux.
Note (L2/L3, démonstratif). Certains exercices sont des calculs (matrices, distance, décodage), d'autres des preuves (distance = poids min, bornes). Les énoncés numériques sont vérifiés machine sur des codes concrets (_verif_codes.py).
A. Codes linéaires, distance de Hamming
Un code linéaire[n,k] sur Fq est un sous-espace vectorielC⊆Fqn de dimension k. Donc ∣C∣=qk. Le rendement est k/n.
Le poidsw(x) d'un mot est son nombre de coordonnées non nulles.
La distance de Hammingd(x,y)=w(x−y) compte les positions où x et y diffèrent.
La distance minimaled=minx=y∈Cd(x,y).
Pour un code LINEˊAIRE : d=x∈C,x=0minw(x)
car d(x,y)=w(x−y) et x−y parcourt C∖{0}. On note le code [n,k,d].
Capacité. Un code de distance minimale d :
deˊtecte d−1 erreurs,corrige t=⌊2d−1⌋ erreurs.
Les boules de rayon t centrées sur les mots de code sont alors disjointes, d'où un décodage par plus proche voisin non ambigu. Exemples : code à répétition[n,1,n], code de parité[n,n−1,2] (détecte 1 erreur, n'en corrige aucune).
B. Matrices génératrice & de contrôle, syndrome
Une matrice génératriceG (k×n) a pour lignes une base de C : C={uG:u∈Fqk}. Sous forme systématiqueG=[Ik∣A] (les k premiers symboles sont le message). La matrice de contrôleH ((n−k)×n) vérifie C={x:HxT=0} :
G=[Ik∣A]⟹H=[−AT∣In−k],GHT=0.
Le syndrome d'un mot reçu r est s=HrT : s=0⟺r∈C. Si r=c+e (erreur e), alors s=HeT ne dépend que de l'erreur.
d=plus petit nombre de colonnes de H lineˊairement deˊpendantes.
Décodage par tableau standard / syndrome. À chaque syndrome on associe le chef de classe (l'erreur de poids minimal de même syndrome) ; il y a qn−k syndromes (un par coset). On corrige ainsi toutes les erreurs de poids ≤t. Le code dualC⊥ (engendré par H) est de dimension n−k, et (C⊥)⊥=C.
E. Code de Hamming, codes parfaits, bornes
Le code de Hamming[7,4,3] : on prend pour colonnes de Htous les vecteurs non nuls de F23 (il y en a 7). Alors n=7, n−k=3 donc k=4, et d=3 (toute paire de colonnes est indépendante, mais trois colonnes peuvent être liées). Il corrige 1 erreur.
Code de Hamming [7,4,3] et sphères de correction. Les colonnes de la matrice de contrôle H sont les 7 vecteurs non nuls de F23. Le code a 24=16 mots ; chaque mot reçu à distance ≤1 d'un mot de code se décode vers lui. Les boules de rayon 1 (un centre +7 voisins =8 mots) pavent exactement F27 : 16×8=128=27. C'est un code parfait.
Code parfait. Les boules de rayon tpavent exactement Fqn :
qk⋅Vq(n,t)=qn,Vq(n,t)=i=0∑t(in)(q−1)i.
Hamming [7,4,3] : 24⋅V2(7,1)=16⋅(1+7)=16⋅8=128=27 — parfait.
Bornes. Deux contraintes universelles :
Hamming (spheˋre) : ∣C∣≤Vq(n,t)qnSingleton : d≤n−k+1.
Un code atteignant Singleton (d=n−k+1) est MDS (répétition et parité le sont ; Hamming [7,4,3] ne l'est pas car n−k+1=4>3).
Dans le palier approfondissement (Pro) : Codes cycliques (idéaux de F_q[X]/(Xⁿ−1)), Reed-Solomon & BCH
C. Codes cycliques = idéaux de Fq[X]/(Xn−1)
D. Reed-Solomon (MDS) & BCH
La suite dans l'app Maths Post-Bac
Palier approfondissement, 54 exercices corrigés pas à pas, quiz, tuteur IA,
PDF téléchargeables et suivi de progression — pour BUT, BTS, licence et maths de l'ingénieur.