Maths Post-Bac Ouvrir l'app

Codes correcteurs

Algèbre · leçon socle (gratuite)

L2L3Maths ingénieur

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\mathbb{F}_q — 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][n,k] sur Fq\mathbb{F}_q est un sous-espace vectoriel CFqnC\subseteq\mathbb{F}_q^{\,n} de dimension kk. Donc C=qk\lvert C\rvert=q^{k}. Le rendement est k/nk/n.

  • Le poids w(x)w(x) d'un mot est son nombre de coordonnées non nulles.
  • La distance de Hamming d(x,y)=w(xy)d(x,y)=w(x-y) compte les positions où xx et yy diffèrent.
  • La distance minimale d=minxyCd(x,y)d=\min_{x\neq y\in C}d(x,y).
 Pour un code LINEˊAIRE : d=minxC, x0w(x) \boxed{\ \text{Pour un code LINÉAIRE : } d=\min_{x\in C,\ x\neq 0}w(x)\ }

car d(x,y)=w(xy)d(x,y)=w(x-y) et xyx-y parcourt C{0}C\setminus\{0\}. On note le code [n,k,d][n,k,d].

Capacité. Un code de distance minimale dd :

 deˊtecte d1 erreurs,corrige t=d12 erreurs. \boxed{\ \text{détecte } d-1 \text{ erreurs}, \qquad \text{corrige } t=\Big\lfloor\tfrac{d-1}{2}\Big\rfloor \text{ erreurs.}\ }
Les boules de rayon tt 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][n,1,n], code de parité [n,n1,2][n,n-1,2] (détecte 11 erreur, n'en corrige aucune).

B. Matrices génératrice & de contrôle, syndrome

Une matrice génératrice GG (k×nk\times n) a pour lignes une base de CC : C={uG:uFqk}C=\{uG:u\in\mathbb{F}_q^{\,k}\}. Sous forme systématique G=[IkA]G=[\,I_k\mid A\,] (les kk premiers symboles sont le message). La matrice de contrôle HH ((nk)×n(n-k)\times n) vérifie C={x:HxT=0}C=\{x:Hx^{\mathsf T}=0\} :

 G=[IkA]  H=[ATInk],GHT=0. \boxed{\ G=[\,I_k\mid A\,]\ \Longrightarrow\ H=[\,-A^{\mathsf T}\mid I_{n-k}\,],\qquad GH^{\mathsf T}=0.\ }
Le syndrome d'un mot reçu rr est s=HrTs=Hr^{\mathsf T} : s=0    rCs=0\iff r\in C. Si r=c+er=c+e (erreur ee), alors s=HeTs=He^{\mathsf T} ne dépend que de l'erreur.

 d=plus petit nombre de colonnes de H lineˊairement deˊpendantes. \boxed{\ d=\text{plus petit nombre de colonnes de } H \text{ linéairement dé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 qnkq^{\,n-k} syndromes (un par coset). On corrige ainsi toutes les erreurs de poids t\leq t. Le code dual CC^{\perp} (engendré par HH) est de dimension nkn-k, et (C)=C(C^{\perp})^{\perp}=C.

E. Code de Hamming, codes parfaits, bornes

Le code de Hamming [7,4,3][7,4,3] : on prend pour colonnes de HH tous les vecteurs non nuls de F23\mathbb{F}_2^{\,3} (il y en a 77). Alors n=7n=7, nk=3n-k=3 donc k=4k=4, et d=3d=3 (toute paire de colonnes est indépendante, mais trois colonnes peuvent être liées). Il corrige 11 erreur.

Diagramme du code de Hamming [7,4,3] : à gauche les sept colonnes de la matrice de contrôle (les vecteurs binaires 001 à 111), à droite des boules de Hamming de rayon 1 autour des mots de code qui pavent l'espace sans recouvrement, avec le décompte 16 fois 8 égale 128.
Code de Hamming [7,4,3][7,4,3] et sphères de correction. Les colonnes de la matrice de contrôle HH sont les 77 vecteurs non nuls de F23\mathbb{F}_2^{\,3}. Le code a 24=162^4=16 mots ; chaque mot reçu à distance 1\leq 1 d'un mot de code se décode vers lui. Les boules de rayon 11 (un centre +7+\,7 voisins =8=8 mots) pavent exactement F27\mathbb{F}_2^{\,7} : 16×8=128=2716\times 8=128=2^7. C'est un code parfait.

Code parfait. Les boules de rayon tt pavent exactement Fqn\mathbb{F}_q^{\,n} :

 qkVq(n,t)=qn,Vq(n,t)=i=0t(ni)(q1)i. \boxed{\ q^{k}\cdot V_q(n,t)=q^{n},\qquad V_q(n,t)=\sum_{i=0}^{t}\binom{n}{i}(q-1)^i.\ }
Hamming [7,4,3][7,4,3] : 24V2(7,1)=16(1+7)=168=128=272^{4}\cdot V_2(7,1)=16\cdot(1+7)=16\cdot 8=128=2^{7}parfait.

Bornes. Deux contraintes universelles :

 Hamming (spheˋre) : CqnVq(n,t)Singleton : dnk+1. \boxed{\ \text{Hamming (sphère) : } \lvert C\rvert\leq\dfrac{q^{n}}{V_q(n,t)}\qquad\text{Singleton : } d\leq n-k+1.\ }
Un code atteignant Singleton (d=nk+1d=n-k+1) est MDS (répétition et parité le sont ; Hamming [7,4,3][7,4,3] ne l'est pas car nk+1=4>3n-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]/(Xn1)\mathbb{F}_q[X]/(X^n-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.