Code linéaire : dimension et cardinal
Soit le code binaire
Indices (3)
Les mots sont les combinaisons
Correction détaillée
Une matrice génératrice
Les trois paramètres se lisent directement sur la forme de
= nombre de colonnes = longueur des mots de code ; = nombre de lignes (si elles sont indépendantes) = dimension ; où est la taille du corps.
Ici
On dit que
On parcourt les
Détail du dernier, le seul qui demande un calcul :
colonne par colonne :
Le nombre. On a bien
La stabilité par addition. Un code linéaire est un sous-espace vectoriel : la somme de deux mots de code est un mot de code. Vérifions sur une paire :
Et le mot nul appartient toujours à un code linéaire (prendre
Regardons les poids (nombre de
La distance minimale est donc
⚠️ Ce code ne corrige AUCUNE erreur. Il en détecte une seule : si un bit bascule, le mot reçu est à distance
C'est une bonne raison de ne pas confondre détecter et corriger, et cela motive tout le reste du chapitre : pour corriger, il faut
Distance minimale = poids minimal
Montrer que pour un code linéaire
Indices (3)
Si
Faire varier la paire
Correction détaillée
La distance minimale est définie comme
où
L'énoncé affirme que pour un code linéaire, il suffit de parcourir les mots un par un :
On passe de
L'ingrédient est la linéarité, et rien d'autre :
Le point de départ est une identité valable pour tous vecteurs :
Pourquoi : les coordonnées où
(Sur
Sens
Ceci valant pour tout
Sens
Les deux inégalités donnent l'égalité :
Poids des trois mots non nuls :
Le code est donc un
Contrôle par la définition, sur les
Minimum
⚠️ L'énoncé est FAUX pour un code non linéaire. Contre-exemple minimal :
Ses deux mots ont poids
ici les deux coïncident — prenons plutôt
Ce qui casse :
👉 Vérifier la linéarité avant d'employer le raccourci. C'est l'une des raisons pour lesquelles on travaille presque toujours avec des codes linéaires : ils rendent la distance minimale calculable.
Capacité de correction et boules disjointes
Un code a distance minimale
Indices (3)
Supposer deux mots
Inégalité triangulaire :
En déduire
Correction détaillée
Un code de distance minimale
Autour de chaque mot de code
c'est-à-dire tous les mots qu'on peut obtenir en changeant au plus
Si ces boules ne se chevauchent pas, alors un mot reçu avec au plus
Tout se ramène donc à : quand les boules sont-elles disjointes ?
Raisonnons par l'absurde. Supposons qu'un mot
L'inégalité triangulaire — vraie pour la distance de Hamming comme pour toute distance — donne alors
Or
Mais par définition
Les boules de rayon
Soit
Alors
Pourquoi la partie entière. Il faut
Noter que
Énumérons les
(pour
Par l'exercice A2,
Ce code
Comptons le volume occupé. Chaque boule de rayon
et il y a
Il reste
👉 La question naturelle : existe-t-il des codes dont les boules pavent exactement l'espace, sans trou ni chevauchement ? Oui — c'est le code de Hamming (exercice E2), où
Code à répétition et code de parité
Donner les paramètres
Indices (3)
Répétition : un seul bit d'information répété
Parité :
Correction détaillée
Ces deux familles sont les bornes du compromis entre protection et efficacité, et tout le chapitre se situe entre elles.
- Le code à répétition protège au maximum et transmet le minimum : il envoie le même bit
fois. - Le code de parité transmet presque tout et protège au minimum : il ajoute un seul bit de contrôle.
On mesure l'efficacité par le rendement
Il corrige deux erreurs, par vote majoritaire : sur cinq bits reçus, on décode par la valeur qui apparaît le plus souvent. Avec au plus deux erreurs, la majorité reste du bon côté.
Rendement :
On part de
Il détecte une erreur (la parité devient impaire) et n'en corrige aucune. Rendement :
La tension est structurelle : augmenter
La parité est utilisée partout où l'on peut redemander la donnée (bus série, mémoire avec retransmission) : détecter suffit. La répétition est réservée aux canaux où redemander coûte trop cher.
La borne de Singleton (exercice E4) affirme
Les deux atteignent la borne : ce sont des codes MDS (maximum distance separable), c'est-à-dire optimaux au sens de Singleton.
⚠️ Cela ne veut pas dire qu'ils sont bons en pratique. Être MDS signifie « meilleure distance possible pour ce couple
Contraste utile : Hamming
Énumérateur de poids
Pour le code
Indices (3)
Reprendre les
Correction détaillée
La distribution des poids d'un code est la suite
C'est un résumé bien plus riche que le seul
On l'écrit souvent sous forme polynomiale — l'énumérateur —
et c'est sous cette forme que l'identité de MacWilliams relie
Le code de l'exercice A1 :
Poids un par un :
La somme. Chaque mot de code est compté exactement une fois, donc
C'est le contrôle à faire systématiquement : un total qui ne tombe pas sur
La distance minimale. Par l'exercice A2,
Un troisième contrôle, gratuit :
Comparons deux codes qui auraient tous deux
(pour la parité : les mots de poids pair sur
Même
👉 En pratique, la probabilité qu'une erreur de transmission passe inaperçue vaut
Certains codes ont tous leurs mots non nuls de même poids : on les dit à poids constant. C'est le cas du code simplexe
Ses
Contrôle :
Le code de Hamming lui-même a pour distribution
avec
Un code sur F_3 (au-delà du binaire)
Sur
Indices (3)
Examiner par exemple la ligne
Correction détaillée
Presque tout le chapitre se passe sur
Ce qui change, ce sont les calculs : sur
L'enjeu pratique est réel : les codes de Reed-Solomon (exercices D1 à D3), qui protègent les CD, les QR-codes et les transmissions spatiales, vivent sur des corps à
⚠️ Le passage de
On calcule
Détail du mot de poids minimal,
car
Contrôle :
Par l'exercice A2, valable sur tout corps :
Le code est un
Il détecte une erreur, n'en corrige aucune — comme le
Contrôle de la distribution :
⚠️ Les deux pièges sont dans la seconde table. Le volume de boule : changer une coordonnée offre
De G systématique à H
Soit
Indices (3)
Calculer
Sur
Correction détaillée
Un code linéaire se décrit de deux façons complémentaires :
- par ce qu'il contient — la génératrice
: ; - par ce qu'il vérifie — la matrice de contrôle
: .
La seconde est celle qui sert au décodage : tester si un mot reçu appartient au code coûte un produit matriciel, alors qu'avec
Quand
⚠️ Le signe
Calculons le produit par blocs :
Ce que ça signifie : chaque ligne de
Donc
Par le théorème du rang,
Or on a montré
Transposer (échanger lignes et colonnes) :
Sur
Et la génératrice correspondante :
Vérifions
Les trois s'annulent ✓ (le calcul complet donne bien la matrice nulle
Ce que
- lire
sur ses colonnes (B2) ; - calculer un syndrome pour localiser une erreur (B3) ;
- engendrer le code dual (B6).
Réciproquement, on passe de
Distance et colonnes de H
Montrer que la distance minimale d'un code vaut le plus petit nombre de colonnes de
Indices (3)
Un mot de poids
Correction détaillée
Théorème. La distance minimale d'un code de matrice de contrôle
L'intérêt est calculatoire. L'exercice A2 réduisait déjà le calcul de
Et surtout, il guide la construction : pour obtenir
Notons
Donc
Un mot de code est exactement une relation de dépendance entre les colonnes de
Le support de
Sens
Sens
Pourquoi. Une colonne nulle est à elle seule une dépendance (
👉 C'est la recette du code de Hamming : prendre pour colonnes tous les vecteurs non nuls de
Colonnes :
Aucune colonne nulle — les six sont non nulles, donc
Aucune paire proportionnelle — sur
Une dépendance de taille 3 existe : les trois premières colonnes,
Recoupement direct : cette dépendance correspond au mot de code
Syndrome d'un mot reçu
Avec
Indices (3)
Correction détaillée
Le récepteur reçoit
Le syndrome est
et son intérêt tient en une ligne de calcul :
C'est ce qui rend le décodage praticable : au lieu de comparer
Comme
c'est-à-dire la première colonne de
Vérifions ligne par ligne, pour se convaincre :
Reprenons le calcul en détail. Par linéarité du produit matriciel :
Et
Conséquence pratique décisive. Un décodeur peut construire une table
de taille
Comparons
(sur
La règle générale, à retenir : si
⚠️ Ce raisonnement ne vaut que si l'on suppose au plus
Exemple concret sur ce code : l'erreur double
Même syndrome que l'erreur simple en position 1. Le décodeur choisira
👉 Le principe du décodage au plus proche voisin est donc : parmi tous les
Décodage par tableau standard
Pour le
Indices (3)
Il y a
Chaque erreur de poids
On décode
Correction détaillée
Le décodage par syndrome repose sur une observation de l'exercice B3 : le syndrome ne dépend que de l'erreur. On construit donc, une fois pour toutes, une table
où le chef de classe est le motif d'erreur de poids minimal ayant ce syndrome.
Le décodage devient alors immédiat : calculer
Le syndrome est un vecteur de
Pour le
et il y a
Les sept premières lignes se lisent directement sur
L'argument tient en deux points.
Les syndromes des erreurs de poids
Chacun est chef de sa classe. Un motif de poids
Donc, si l'erreur réelle est de poids
C'est la traduction concrète du théorème des boules disjointes (exercice A3).
⚠️ Le tableau a 8 lignes, et les erreurs de poids
Vérifions :
Ce que cette classe orpheline signifie : le code n'est pas parfait. Comptons le volume couvert par les boules de rayon
Il reste
👉 Un code est parfait quand les boules pavent l'espace sans reste, c'est-à-dire quand toutes les classes ont un chef de poids
⚠️ Le choix du chef
Cosets et syndromes
Montrer que deux mots reçus ont le même syndrome si et seulement s'ils sont dans le même coset
Indices (3)
Le nombre de cosets de
Correction détaillée
Un coset (ou classe latérale) de
On veut montrer deux choses :
- deux mots reçus ont le même syndrome si et seulement si ils sont dans le même coset ;
- il y a exactement
cosets.
Ensemble, ces deux faits fondent le tableau standard de l'exercice B4 : le syndrome est une étiquette des cosets, et le chef de classe est le représentant de poids minimal de chacun.
La dernière équivalence mérite d'être justifiée : si
« Invariant » : il ne dépend pas du représentant choisi. « Complet » : il les distingue tous.
Deux arguments, à connaître tous les deux.
Par le comptage. Les cosets partitionnent
Par le syndrome. L'application
Contrôle :
Le coset du syndrome
Le coset du syndrome
Tous ces mots ont le même syndrome
Ce qu'on vient de démontrer est un cas particulier d'un théorème général :
L'étape 1 est l'énoncé «
👉 C'est le même mécanisme que les congruences modulo
Cette parenté n'est pas décorative : elle prépare la lecture des codes cycliques comme idéaux d'un anneau quotient (exercice C1).
Code dual
Le code dual
Indices (3)
Dimensions :
Correction détaillée
Le code dual de
où
Trois énoncés à établir :
L'intérêt est que
Les lignes de
L'inclusion réciproque. Soit
Ainsi
Autrement dit :
Inclusion facile. Tout
Égalité par les dimensions. En appliquant l'étape 1 au code
Une inclusion entre espaces de même dimension finie est une égalité :
⚠️ Cet argument passe par les dimensions, et pas autrement. Sur
Ici
Mais les deux codes ne sont pas en somme directe pour autant : on peut avoir
⚠️ Sur
Plus généralement, sur
Conséquences, qui n'ont pas d'équivalent réel :
peut être non nul, et ; - un code peut être auto-dual (
), ce qui exige . Exemple : sur , où ; - ou auto-orthogonal (
).
👉 Retenir : la formule
Exemple du chapitre : le dual du code de Hamming
Le code de Hamming [7,4,3]
On prend pour colonnes de
Indices (3)
Il y a
Correction détaillée
L'exercice B2 a livré une recette : pour garantir
Sur
On ne peut pas faire mieux : ajouter une colonne obligerait à répéter un vecteur (il n'y en a que
Les
La colonne
Ce choix d'ordre n'est pas cosmétique : il fait que le syndrome, lu comme un nombre binaire, donne directement le numéro de la position en erreur (voir la fin).
Le rendement est
- aucune colonne n'est nulle (on a pris les vecteurs non nuls), donc pas de dépendance de taille
; - les colonnes sont deux à deux distinctes (ce sont tous les vecteurs non nuls, chacun une fois), donc pas de dépendance de taille
— sur , équivaut à .
Le mot de code correspondant est
C'est ici que l'ordre des colonnes paie. Si une seule erreur frappe la position
Il n'y a aucune table à consulter : on lit le syndrome comme un entier, et c'est la position à corriger. Un syndrome nul signifie « aucune erreur détectée ».
La famille complète. La construction se fait pour tout
Le rendement tend vers
Hamming est un code parfait
Montrer que le code de Hamming
Indices (3)
Multiplier par le nombre
Comparer à
Correction détaillée
L'exercice A3 a montré que les boules de Hamming de rayon
Un code est parfait quand elles le pavent exactement :
Autrement dit : tout mot reçu est à distance
C'est rare : les codes parfaits binaires sont, à peu de chose près, seulement les Hamming, les répétitions de longueur impaire, et le code de Golay
Pourquoi : un mot à distance exactement
Pour
Le
⚠️ Sur
L'égalité est exacte : le code de Hamming
Une autre façon de le dire, plus parlante :
Tout syndrome correspond à une erreur de poids
Le tableau standard n'a donc aucune ligne orpheline, contrairement au
Conséquence : le décodeur ne se trouve jamais devant un choix arbitraire — chaque syndrome pointe vers une unique erreur de poids minimal.
Contrepartie : le code ne détecte rien au-delà de ce qu'il corrige. Deux erreurs produisent le syndrome d'une erreur simple, et sont donc « corrigées » à tort, sans le moindre signal. Un code parfait n'a aucune marge.
Pourquoi Hamming tombe juste, structurellement :
L'égalité vient de
👉 La perfection entraîne l'optimalité au sens de la borne de Hamming (exercice E3) : un code parfait sature la borne.
Borne de Hamming (sphère)
Établir la borne de Hamming : pour un code corrigeant
Indices (3)
Les boules de rayon
Leur réunion est incluse dans
Sommer les volumes.
Correction détaillée
Borne de Hamming. Pour tout code corrigeant
C'est un argument de volume, purement combinatoire — il ne suppose même pas le code linéaire. On l'appelle aussi borne de la sphère.
Elle dit ce qu'on ne peut pas dépasser : à longueur et capacité de correction fixées, il y a un plafond au nombre de mots. Toute construction plus ambitieuse est impossible, et pas seulement « pas encore trouvée ».
Les boules
Chacune contient
Leur réunion est donc de cardinal exactement
L'égalité a lieu si et seulement si le code est parfait (exercice E2) : c'est le cas où la réunion des boules est l'espace entier.
Aucun code binaire de longueur
Or le code de Hamming a exactement
Pour un code linéaire, la contrainte se lit sur
Elle sert surtout à écarter des constructions avant de les chercher.
Un
Impossible. Inutile de chercher : aucun choix de matrice génératrice n'y parviendra.
Un
Impossible aussi.
Un
👉 La borne ne garantit jamais l'existence ; elle ne fait qu'exclure. Un code peut la respecter sans exister.
Les deux sont incomparables, et c'est utile de le savoir : un code peut saturer l'une sans saturer l'autre.
- Hamming
: parfait (sature Hamming) mais pas MDS, car (exercice E5) ; - Reed-Solomon
sur : MDS (sature Singleton) mais pas parfait — .
Sur les corps de grande taille, c'est Singleton qui devient la contrainte pertinente, et c'est pourquoi les codes de Reed-Solomon (exercices D1 à D3) y sont la référence.
Borne de Singleton et codes MDS
Démontrer la borne de Singleton
Indices (3)
Projeter les mots sur les
Deux mots égaux sur
Argument de comptage / d'algèbre linéaire sur les coordonnées effacées.
Correction détaillée
Borne de Singleton. Tout code
L'idée de la preuve tient en une phrase : effacer
Un code atteignant l'égalité est dit MDS (maximum distance separable) : à
Soit
Or deux mots de code distincts sont à distance
Conclusion par les cardinaux.
ℹ️ La preuve n'utilise la linéarité que pour écrire
Le seul mot non nul a poids
Interprétation par la preuve : effacer
Vérification sur le
⚠️ MDS ne signifie pas « bon code ». La répétition
⚠️ Et MDS n'implique pas parfait, ni l'inverse :
Les vrais MDS utiles sont les Reed-Solomon (exercice D2), qui atteignent
ℹ️ Un théorème dit que sur
Hamming n'est pas MDS
Pour le code de Hamming
Indices (3)
Calculer
MDS
Correction détaillée
Le code de Hamming
L'exercice demande de le confronter à la borne de Singleton, qui est une mesure d'optimalité différente. La réponse est instructive : il ne la sature pas.
L'écart vaut
Un tel code serait MDS. Existe-t-il ?
Non, et la borne de Hamming le montre. Avec
Il faut un autre argument : par la borne de Singleton appliquée au code raccourci, ou plus simplement par le théorème cité en E4 — sur
👉 C'est le vrai enseignement : le binaire ne permet pas d'être MDS. Ce n'est pas un défaut de Hamming, c'est une propriété du corps.
Deux notions d'optimalité, deux réponses opposées sur les deux codes phares du chapitre. Aucune n'implique l'autre.
Le point commun des cas où les deux tombent ensemble : la répétition de longueur impaire, à la fois parfaite et MDS — mais avec un rendement dérisoire.
Le vrai critère n'est ni « parfait » ni « MDS », mais l'adéquation au canal.
- Canal peu bruité, erreurs isolées : Hamming. Rendement élevé, corrige l'erreur unique, décodage immédiat par lecture du syndrome. C'est le choix des mémoires ECC.
- Erreurs en rafale (rayure sur un CD, salissure sur un QR-code) : Reed-Solomon. Il travaille sur des symboles (octets) et non des bits, donc une rafale de
bits consécutifs n'abîme qu'un ou deux symboles (deux si elle chevauche une frontière d'octet). - Canal très bruité : répétition ou codes concaténés.
👉 « Hamming n'est pas MDS » ne signifie donc pas qu'il soit un mauvais code — il est le meilleur possible dans sa classe (parfait), sur un corps où être MDS est impossible. Comparer un code binaire à la borne de Singleton, c'est le juger sur un critère que le corps lui interdit d'atteindre.
Le code dual de Hamming : le simplexe
Le dual du code de Hamming
Indices (3)
Le simplexe a
Chaque coordonnée d'un mot
Compter combien de colonnes donnent un produit scalaire non nul.
Correction détaillée
Le dual du code de Hamming
On veut établir que tous ses mots non nuls ont exactement le poids
Un code dont tous les mots non nuls ont le même poids est dit à poids constant. C'est une propriété rare et forte : la distribution des poids tient en deux nombres, et le code est aussi « équilibré » que possible.
Cohérent avec
Soit
où
Les colonnes
Or
Le vecteur
Par l'exercice A2, la distance minimale est le plus petit poids non nul :
Distribution des poids :
Contrôle :
Vérification directe sur un mot. Prenons
Est-il MDS ?
L'origine du nom. Les
C'est la configuration la plus symétrique possible : aucun mot n'est privilégié.
La famille. Pour tout
Usages. Ces codes sont liés aux séquences de longueur maximale (registres à décalage à rétroaction linéaire), employées en télécommunications pour l'étalement de spectre et la synchronisation : leur autocorrélation est presque nulle hors de zéro, précisément parce que tous les décalages sont à la même distance.
La dualité, en résumé :
ℹ️ Les deux distributions sont reliées par l'identité de MacWilliams, qui calcule