La correction d'erreurs de Reed–Solomon, expliquée simplement
Les maths qui permettent à un code QR rayé, à un CD ou à un DVD de fonctionner malgré tout. Une explication accessible de la correction d'erreurs de Reed–Solomon.
La correction d'erreurs de Reed–Solomon est le cheval de trait discret qui fait que les CD continuent de jouer malgré les rayures, que les sondes spatiales communiquent à travers le système solaire, et que les codes QR se scannent avec un logo collé en plein milieu. Elle corrige des grappes entières d'erreurs — et vous pouvez comprendre comment sans une seule équation.
Inventé par Irving Reed et Gustave Solomon en 1960, ce code est l'une des idées les plus fécondes de l'histoire des communications. Il est partout, et pourtant presque invisible. Construisons une intuition de son fonctionnement, de pourquoi il survit si bien aux dégâts, et de pourquoi cet obstiné code QR portant le logo de votre entreprise se lit encore parfaitement. 🐾
Qui a inventé les codes de Reed–Solomon ?
Irving Reed et Gustave Solomon ont publié le code en 1960, en s'appuyant sur les fondations posées par Claude Shannon et Richard Hamming une décennie plus tôt. Là où les codes de Hamming corrigent un seul bit basculé, Reed et Solomon visaient plus haut : corriger de nombreuses erreurs à la fois, y compris les rafales désordonnées qui surviennent lorsqu'une région entière de données est effacée.
Cette ambition a fait de leur code la solution de prédilection partout où les dégâts arrivent en grappes plutôt qu'en bits isolés — ce qui se révèle être presque partout dans le monde physique. Une rayure sur un disque, une tache sur une étiquette ou un affaiblissement d'un signal radio détruisent tous des suites de données adjacentes, et Reed–Solomon avale ce genre de dégâts au petit-déjeuner.
Comment fonctionne Reed–Solomon, intuitivement ?
Oubliez les bits un instant et pensez à des points sur un graphe. Supposez que votre message définisse une courbe régulière. Pour tracer une droite, vous n'avez vraiment besoin que de deux points — mais que se passerait-il si vous placiez dix points le long de cette même droite et les envoyiez tous les dix ?
Imaginez maintenant que quelques-uns de ces points soient maculés ou déplacés en cours de route. Comme les points supplémentaires sont redondants, vous pouvez encore voir clairement la droite sous-jacente : les points survivants révèlent exactement où la courbe doit passer, et les points endommagés ressortent comme ceux qui ne cadrent pas. Reed–Solomon fonctionne sur ce principe — il traite vos données comme définissant une courbe mathématique et envoie des points supplémentaires, de sorte que même si certains sont corrompus, la courbe originale (et donc votre message) peut être reconstruite.
Tracez plus de points qu'il n'en faut pour définir une courbe, et quelques points gâchés ne peuvent pas cacher où passe la courbe. Cette redondance — des points supplémentaires qui doivent tous concorder — est le cœur de Reed–Solomon.
Que sont les symboles et les corps finis ?
Un détail crucial : Reed–Solomon ne travaille pas sur des bits isolés. Il travaille sur des symboles — de petits groupes de bits traités comme une seule unité, souvent un octet (8 bits) chacun. C'est exactement pourquoi il est si efficace contre les rafales : si huit bits adjacents sont détruits ensemble, ce n'est qu'un symbole endommagé, pas huit erreurs distinctes.
Les maths se déroulent sur ce qu'on appelle un corps fini (aussi connu sous le nom de corps de Galois) — un système de nombres autonome doté d'un ensemble fixe et fini de valeurs, où l'addition et la multiplication produisent toujours une autre valeur à l'intérieur de l'ensemble. Vous n'avez pas besoin de maîtriser l'algèbre ; l'important est qu'un corps fini permet à Reed–Solomon de faire une arithmétique exacte et cyclique sur les symboles, sans arrondi et sans débordement. C'est le terrain de jeu mathématique bien rangé qui rend possible une reconstruction fiable.
Combien d'erreurs peut-il corriger ?
Voici la règle élégante qui gouverne tout : pour corriger t erreurs de symboles, Reed–Solomon ajoute 2t symboles de contrôle. Autrement dit, chaque paire de symboles de contrôle supplémentaires achète le pouvoir de corriger entièrement un symbole endommagé.
| Symboles de contrôle ajoutés | Erreurs de symboles corrigibles |
|---|---|
| 2 | 1 |
| 4 | 2 |
| 10 | 5 |
| 2t | t |
Pourquoi 2 par erreur et non 1 ? Parce qu'une correction complète exige de résoudre deux mystères à la fois : où se trouve l'erreur et quelle devrait être la bonne valeur. Chaque symbole de contrôle apporte une pièce de ce puzzle, il en faut donc deux par erreur. (Si un scanner sait déjà qu'un symbole est endommagé à un emplacement donné — une « effacement » — il n'a besoin que d'un seul symbole de contrôle pour le corriger, une efficacité supplémentaire que Reed–Solomon peut exploiter.)
Pourquoi les codes QR et les CD l'utilisent-ils ?
Reed–Solomon est le choix standard partout où une nouvelle tentative est impossible et où les dégâts arrivent en grappes. Cela décrit un éventail remarquable de technologies :
- CD et DVD : une rayure détruit une portion de données adjacentes, exactement le scénario de rafale que Reed–Solomon gère le mieux, si bien que votre musique continue de jouer.
- Sondes spatiales lointaines : les signaux des engins distants sont faibles et bruités, et une retransmission à travers des heures-lumière est irréaliste, de sorte que les données doivent se réparer elles-mêmes à l'arrivée.
- Codes QR : les codes imprimés se maculent, se froissent et se recouvrent, et ils ne peuvent pas demander une retransmission — ils transportent donc une redondance Reed–Solomon intégrée à même la grille.
- Stockage de données et diffusion : disques durs, télévision numérique et bien d'autres s'appuient dessus pour garder les bits intacts.
Dans chaque cas, l'attrait est le même : une correction robuste, adaptée aux rafales, sans besoin d'une seconde chance. C'est la promesse de Shannon d'une communication fiable sur un canal bruité, tenue en pratique — voir notre introduction à la théorie de l'information pour la théorie qui la sous-tend.
Pourquoi les codes QR avec logo se scannent-ils encore ?
C'est le tour de force qui plaît à tous, et la raison est maintenant claire. Un code QR est créé avec une quantité choisie de redondance Reed–Solomon tissée dans sa grille. Quand un designer dépose un logo au centre, il détruit délibérément certains symboles du code — mais le scanner ne panique pas. Il traite le logo exactement comme une rayure ou une tache de café.
Tant que le nombre de symboles endommagés reste sous le budget de correction du code (son t), Reed–Solomon reconstruit les données cachées à partir des symboles survivants et des symboles de contrôle, et le code se lit parfaitement. Poussez le logo trop grand — au-delà du budget — et aucune math ne peut le sauver. Ce budget est exactement ce que vous réglez en choisissant un niveau de correction d'erreurs, comme l'explique la correction d'erreurs des codes QR. Les niveaux plus élevés ajoutent plus de symboles de contrôle, autorisant des logos plus grands et plus d'usure.
Quelles sont les limites ?
Reed–Solomon n'est pas magique. Son budget de correction est fixé lorsque le code est créé, si bien que les dégâts au-delà de t symboles par bloc ne peuvent pas être récupérés — et dans un code QR, certaines régions comme les motifs de repérage ne sont pas du tout protégées par la correction d'erreurs, car le scanner en a besoin intacts rien que pour localiser le code. Recouvrez-les et même un Reed–Solomon irréprochable ne peut rien, ce qui explique pourquoi un logo a sa place dans la zone de données, jamais par-dessus un motif de repérage d'angle. L'anatomie d'un code QR montre exactement quelle partie est laquelle.
Reed–Solomon en une phrase
En traitant les données comme des points définissant une courbe et en envoyant des points supplémentaires sous forme de symboles sur un corps fini, Reed–Solomon corrige jusqu'à t erreurs de symboles pour chaque 2t symboles de contrôle qu'il ajoute — les maths à l'épreuve des rafales qui gardent lisibles les CD, les sondes spatiales et les codes QR porteurs de logo.
Vous voulez un code qui survit au monde réel ? Vous pouvez créer un code QR gratuit avec QR Puppy et choisir la quantité de protection Reed–Solomon qu'il transporte.
Questions fréquentes
Qui a inventé les codes de Reed–Solomon et quand ?
Irving Reed et Gustave Solomon les ont publiés en 1960. Leur but était de corriger de nombreuses erreurs à la fois, en particulier les rafales de dégâts qui affectent le stockage et les communications du monde réel, allant bien au-delà des corrections d'un seul bit des codes antérieurs.
Pourquoi Reed–Solomon travaille-t-il sur des symboles plutôt que sur des bits ?
Parce que regrouper les bits en symboles le rend excellent contre les erreurs en rafale. Si une suite de bits adjacents est détruite ensemble, cela ne compte que comme un seul symbole endommagé plutôt que comme de nombreuses erreurs distinctes, si bien qu'une grappe de dégâts est peu coûteuse à corriger.
Combien d'erreurs Reed–Solomon peut-il corriger ?
Il corrige jusqu'à t erreurs de symboles pour chaque 2t symboles de contrôle ajoutés. Il faut deux symboles de contrôle par erreur corrigible car chaque correction doit déterminer à la fois l'emplacement de l'erreur et sa valeur correcte.
Pourquoi les codes QR avec logo se scannent-ils encore ?
Un logo détruit certains symboles du code, mais Reed–Solomon traite cela comme une rayure et reconstruit les données cachées — tant que la zone recouverte reste dans le budget de correction du code. Poussez le logo au-delà de ce budget et il cesse de fonctionner.
Y a-t-il des dégâts que Reed–Solomon ne peut pas corriger dans un code QR ?
Oui. Les dégâts au-delà du budget de correction sont irrécupérables, et les motifs de repérage dans les coins ne sont pas du tout protégés par la correction d'erreurs. S'ils sont recouverts, le scanner ne peut même pas localiser le code ; gardez donc les logos dans la zone de données.
Créez un QR code de façon honnête 🐾
Gratuit pour toujours, sans suivi, sans expiration — généré directement dans votre navigateur.