Share to: share facebook share twitter share wa share telegram print page

Code de Hamming (7,4)

En théorie des codes, le Code de Hamming (7,4) est un code correcteur linéaire binaire de la famille des codes de Hamming. À travers un message de sept bits, il transfère quatre bits de données et trois bits de parité. Il permet la correction d'un bit erroné. Autrement dit, si, sur les sept bits transmis, l'un d'eux au plus est altéré (un « zéro » devient un « un » ou l'inverse), alors il existe un algorithme permettant de corriger l'erreur.

Il fut introduit par Richard Hamming (1915-1998) en 1950 dans le cadre de son travail pour les laboratoires Bell.

Histoire

Depuis 1946 Richard Hamming travaillait sur un modèle de calculateur à carte perforée de faible fiabilité. Si, durant la semaine, des ingénieurs pouvaient corriger les erreurs, les périodes chômées comme la fin de semaine voyaient les machines s'arrêter invariablement sur des bugs. La frustration[1] d'Hamming le conduisit à inventer le premier code correcteur véritablement efficace.

Cette période correspond à la naissance de la théorie de l'information. Claude Shannon (1916 - 2001) formalise cette théorie comme une branche des mathématiques[2]. Hamming développe[3] les prémisses de la théorie des codes et décrit sa solution comme un exemple.

Objectif

L'objectif du code est la transmission d'un message de quatre bits avec suffisamment de redondances pour que, même si une altération se produit, le récepteur soit capable de corriger automatiquement l'erreur. Le message envoyé est en conséquence plus long. Dans la pratique il contient sept bits, quatre composent le message et les trois autres servent à détecter et à corriger l'erreur, si nécessaire.

L'erreur que protège ce code est nécessairement limitée. Si les sept bits transmis sont tous modifiés, il est vain d'espérer retrouver le message originel. La protection contre la modification d'un unique bit est parfois largement suffisant, c'était le cas de la situation d'Hamming. Une modification d'un unique bit, c’est-à-dire d'un trou non lu sur la carte perforée ou d'une absence de trou considéré comme un trou est relativement rare. Supposons que cette situation se produit sur une série de quatre en moyenne une fois sur mille. Alors cinquante heures d'exécution de programme, qui utilisent par exemple de l'ordre de mille séries voit sa probabilité d'arrêt supérieure à soixante pour cent. La probabilité de trouver deux erreurs sur une série de sept est inférieur à un sur cinq cent mille. L'utilisation de mille séries de longueur sept possède une probabilité d'arrêt inférieure à deux pour mille dans le cas d'une utilisation de cinquante heures si les messages sont protégés par le code. C'était largement suffisant pour éradiquer la frustration d'Hamming.

Approche intuitive

Code parfait

La question que l'on peut se poser est : combien d'informations la redondance doit-elle contenir ? Soit p la longueur de cette redondance en bits. En supposant que l'erreur éventuelle ne portera que sur un bit du message total transmis, il existe donc quatre + p états d'erreur possibles, plus un pour l'absence d'erreur. Cinq plus p informations doivent donc être stockées dans p bits. Or p bits peuvent au maximum contenir 2p informations. Cette situation est obtenue si chaque état décrit une information. On peut s'en rendre compte par un exemple. Deux bits peuvent décrire quatre états : 00, 01, 10, 11 ce qui correspond à compter de zéro à trois en base deux. Si le code est idéal, p vérifie l'égalité 5 + p = 2p le terme de gauche décrit les informations nécessaires à la correction et celui de droite la quantité d'informations stockées dans les bits de parité. Cette équation admet une unique solution : p est égal à trois. Un code vérifiant ce type de propriété est dit parfait, l'article associé formalise cette approche.

Bit de parité

Représentation graphique des quatre bits de données et des trois bits de parité

La figure de droite indique le mode de construction du code. Les valeurs d1, d2, d3 et d4 symbolisent les quatre bits du message. Les valeurs p1, p2, p3 correspondent aux bits de parité. Le bit p1 correspond à la parité du cercle vert, si d1 + d2 + d4 est pair p1 est égal à zéro, sinon p1 vaut un. En conséquence, si aucune altération ne se produit, la somme des bits du cercle vert est paire. Cette logique est poursuivie sur les cercles rouge et bleu.

Si une altération se produit par exemple sur p1 alors la parité du cercle de p1 est modifiée, en revanche celles des cercles de p2 et de p3 ne sont pas modifiées. Si la parité de d1 est modifiée, alors celles des cercles de p1 et de p2 le sont mais celle de p3 ne l'est pas. Le récapitulatif de la situation est donné dans le tableau suivant. Les sept colonnes correspondent aux sept possibles altérations des différents bits du message, les trois lignes correspondent aux parités des cercles associés. Si la parité du cercle est conservée alors la cellule associée est verte avec le texte oui, dans le cas contraire la cellule est rouge avec le texte non.

Bit # 1 2 3 4 5 6 7
bit erroné
Cercle rouge Oui Oui Oui Non Non Non Non
Cercle bleu Oui Non Non Oui Oui Non Non
Cercle vert Non Oui Non Oui Non Oui Non

Si, par exemple les trois parités des trois cercles sont modifiées, alors il existe une erreur sur le bit d4. Pour chaque bit, une erreur engendre un jeu de parité différent. Si aucune erreur n'altère le message alors les trois parités sont à oui.

L'ordre des différentes colonnes n'est pas choisi au hasard. On remarque que si l'on transforme dans le tableau les Non en un et les Oui en zéro alors on obtient la suite des nombres de un à sept en binaire. Cette propriété permet par la suite un décodage aisé.

Construction du code

Code linéaire

Un code linéaire dispose d'une structure algébrique plus riche que celle du cadre général des codes correcteurs. L'ensemble E des messages à envoyer est celui de mots de quatre lettres prises dans l'ensemble {0,1}, le message est codé en un mot de sept lettres encore prises dans le même ensemble. On note F l'espace des mots de sept lettres binaires. E et F peuvent être considérés comme des espaces vectoriels sur le corps binaire {0,1}. Les tables d'addition et de multiplication sont les suivantes :

 +   0   1 
 0   0  1
 1   1  0
 .   0   1 
 0   0  0
 1   0  1

L'addition est intéressante car la somme d'une suite de valeurs est égale à zéro dans le corps si la somme est paire dans les entiers et un sinon. La multiplication est habituelle, multiplier par zéro donne toujours zéro et multiplier par un ne modifie pas la valeur.

L'encodage, c’est-à-dire l'opération consistant à transformer le message de E de quatre lettres en un code de F de sept lettres apparait alors comme une application linéaire de E dans F. Elle se décrit par une matrice. Même si le corps est inhabituel, tous les résultats de l'algèbre linéaire s'appliquent ici. Pour cette raison, un tel code est dit linéaire. L'encodage consiste à multiplier le vecteur de quatre lettres binaires par une matrice 7x4 pour obtenir un vecteur composé de sept lettres binaires.

Matrice génératrice

Ordre des différents bits

La connaissance de l'image de chaque vecteur de la base canonique détermine entièrement l'application d'encodage φ. Les quatre vecteurs de la base correspondent aux messages suivants : d1 = 1000, d2 = 0100, d3 = 0010 et d4 = 0001.

L'image de d1, le message qui a des coordonnées nulles en d2, d3 et d4, possède deux parités égales à un, celle de p1 et p2 et une égale à zéro:p3.

En respectant l'ordre de la base de F : p1, p2, d1, p3, d2, d3 et d4, on obtient l'image du premier vecteur :

Calculons de la même manière les images des autres vecteurs de la base de E :

La matrice de φ, appelée matrice génératrice est formée des quatre colonnes correspondant aux images des vecteurs de la base canonique par φ, on obtient :

Exemple

Représentation graphique de l'exemple d = 1011

Considérons l'exemple du message à communiquer d = 1011. Les bits de parités sont alors égaux à zéro pour p1, un pour p2 et zéro pour p3. En respectant l'ordre des vecteurs de la base de F, on obtient manuellement le vecteur c = 0110011. Le produit matriciel de la matrice génératrice G par la matrice colonne D du vecteur d fournit la matrice colonne C du vecteur c:

Les deux résultats sont égaux, cependant le calcul matriciel est simple et rapide à implémenter. Le destinataire reçoit le code c contenant à la fois des données et les bits de parité.

Décodage

Matrice de contrôle

Le récepteur, sous réserve d'absence d'erreur peut facilement décoder le message c. Il sait que le code reçu : 0110011 contient les données en bleu, en position trois, cinq, six et sept. Il lui faut maintenant savoir si aucune altération n'a modifié le code reçu, ce qui correspond à l'un des rôles des bits de parité en rouge.

Une approche analogue à celle de l'encodage permet la détection d'erreur. Trois conditions doivent être remplies, une par cercle de la figure représentative. Chaque condition s'exprime comme une somme devant être paire, ou encore nulle dans le corps binaire. Ces trois conditions forment les trois lignes d'une matrice dite matrice de contrôle. Un message reçu est sans erreur si et seulement si le produit de la matrice de contrôle H par la matrice colonne C du vecteur c est égal à la matrice colonne nulle.

La condition associée au cercle rouge p3 signifie que la somme p3 + d2 + d3 + d4 doit être paire. La première ligne de la matrice correspond aux coordonnées 0001111. Cette ligne correspond à la première ligne du tableau du paragraphe bit de parité. Il en est de même pour les autres lignes, correspondant aux cercles bleu et vert. On obtient la matrice H :

Il est possible de vérifier sur l'exemple que le produit de la matrice H par celle du mot du code c est bien nul. De manière plus générale, il est aussi possible de vérifier que le produit de H par G est bien nul, ce qui assure que tout message reçu est bien validé si aucune altération n'a été commise.

Correction d'erreur

Conséquence d'une erreur sur le bit d2

L'objectif du code est la protection contre une erreur. Étudions le cas où le bit de donnée d2 est altéré durant le transfert. Le message reçu n'est plus c = 0110011 mais x = 0110111. Deux conditions, correspondant au cercles rouge et verts, ne sont plus remplies. Le vecteur x ne peut passer le test de la matrice de contrôle :

L'erreur est donc détectée, la matrice de contrôle présente un vecteur non nul, correspondant à la valeur 1012 en binaire, soit cinq. La valeur de H.X est appelée syndrome. La correction associée correspond au mot e5 composé de sept lettres égales à zéro sauf une, la cinquième est égale à un. Le décodage, dans le cas d'un syndrome non nul correspond à soustraire (ce qui revient à additionner dans un code binaire) l'erreur e5 = 0000100. On obtient :

Quelle que soit l'erreur, à partir du moment où elle n'intervient que sur un bit, la matrice de contrôle fournit en binaire le numéro de la colonne fautive.

Une fois l'erreur corrigée, il est possible d'extraire les données et reconstruire le message initial. Une telle méthode est appelée décodage par syndrome.

Description du mécanisme

La linéarité de l'application associée à la matrice H filtre totalement le message pour proposer une image ne dépendant que de l'erreur :

C'est la raison qui permet de parler de syndrome, il ne dépend que de l'erreur et non du message lui-même.

De plus, l'ordre de la base de F : p1, p2, d1, p3, d2, d3 et d4, ainsi que celui des lignes de la matrice H ont été choisis de telle manière qu'une lecture de gauche à droite correspondent à une liste de colonnes aux représentations binaires des nombres de un à sept ordonnées, l'image de e5 par l'application est donc 101 et une telle propriété est vraie pour tous les ei si i est un entier compris entre un et sept.

Code de Hamming (8,4)

En cas d'une double erreur, le code détecte une anomalie. Cependant le syndrome propose un chiffre binaire correspondant toujours à une troisième colonne différente des deux précédentes. Ainsi une troisième erreur est ajoutée, car le code ne dispose d'aucun moyen pour différencier une simple d'une double erreur. Pour pallier cet état de fait, ainsi que pour obtenir un code de dimension exactement égale à un octet, un huitième bit est souvent ajouté, il correspond à la parité des sept bits précédents. Une deuxième erreur est ainsi détectée, elle ne peut être corrigée, en revanche l'information d'une double erreur est disponible remplaçant une tentative maladroite, par une demande de retransmission.

Le décodage se fait de la manière suivante :

  • S’il n’y a aucune erreur le syndrome est nul.
  • Si une erreur s’est produite sur les sept premiers bits, les trois premiers éléments du syndrome donnent la position de l'erreur. L'existence d'un nombre d'erreur impair est confirmé par le huitième bit.
  • Si deux erreurs se sont produites, les trois premiers éléments du syndrome ne sont pas tous nuls et le huitième bit indique une parité exacte, signal d'un nombre pair d'erreurs. Une retransmission est nécessaire.
  • Si une erreur s'est produite sur le huitième bit, l'absence d'erreur sur les trois premiers éléments du syndrome permet de localiser l'erreur et le message est validé.

Le tableau suivant décrit les quatre premiers messages ainsi que leurs encodages pour Hamming (7,4) et (8,4)

Données
Hamming(7,4) Hamming(7,4) avec bit de parité (Hamming(8,4))
Transmis
Diagramme Transmis
Diagramme
0000 0000000 Hamming code for 0000 becomes 0000000 00000000 Hamming code for 0000 becomes 0000000 with extra parity bit 0
1000 1110000 Hamming code for 1000 becomes 1000011 11100001 Hamming code for 1000 becomes 1000011 with extra parity bit 1
0100 1001100 Hamming code for 0100 becomes 0100101 10011001 Hamming code for 0100 becomes 0100101 with extra parity bit 1
1100 0111100 Hamming code for 1100 becomes 1100110 01111000 Hamming code for 1100 becomes 1100110 with extra parity bit 0

Notes et références

  1. Présentation du code de Hamming par l'École Polytechnique fédérale de Lausanne
  2. Claude Shannon A mathematical theory of communication Bell System Technical Journal, vol. 27, p. 379-423 et 623-656, Juil et Oct 1948
  3. Richard Hamming Error-detecting and error-correcting codes Bell Syst. Tech. J. 29 p. 147 à 160 1950

Voir aussi

Bibliographie

Liens externes

Read other articles:

この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)出典検索?: 山本直純 – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2012年6月) 山本 直純 東京藝術大学在学時代の山本直純(右...

 

OpenProject Тип Система управління проектамиПерший випуск 1.0.0 / 4 жовтня, 2012; 11 років тому (2012-10-04)Стабільний випуск 13.0.7[1]Платформа БагатоплатформністьМова програмування Ruby on Rails, AngularJSЛіцензія GNU General Public License v3Репозиторій github.com/opf/openprojectВебсайт openproject.org  OpenProject...

 

У Вікіпедії є статті про інші географічні об’єкти з назвою Коссют. Селище Коссютангл. Kossuth Координати 34°52′27″ пн. ш. 88°38′39″ зх. д. / 34.87440000002777651° пн. ш. 88.64420000002778011° зх. д. / 34.87440000002777651; -88.64420000002778011Координати: 34°52′27″ пн. ш. 88°38′39″ зх.&...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (أبريل 2019) كاترين ميرفي معلومات شخصية الميلاد سنة 1946 (العمر 76–77 سنة)[1][2][3]  كامبريدج، ماساتشوستس[4]  مواطنة الولايات المتحدة[5]  الحياة العم

 

صيغة كافالييري التربيعية تستخدم لحساب المساحة الموجودة أسفل المنحنيات كالمنحنى التكعيبي هنا، وكذا حساب مساحات أسفل منحنيات من قوى أعلى. صيغة تربيع كافالييري هي صيغة رياضية في حساب التفاضل والتكامل، سُميت على اسم عالم الرياضيات الإيطالي من القرن السابع عشر بونافينتورا ك�...

 

العلاقات الغينية الموريشيوسية غينيا موريشيوس   غينيا   موريشيوس تعديل مصدري - تعديل   العلاقات الغينية الموريشيوسية هي العلاقات الثنائية التي تجمع بين غينيا وموريشيوس.[1][2][3][4][5] مقارنة بين البلدين هذه مقارنة عامة ومرجعية للدولتين: وجه الم�...

Dieser Artikel beschreibt den Musiker. Ein Artikel über den Regisseur Jörg Michael befindet sich unter dessen bürgerlichem Namen Jürgen Enz. Jörg Michael, 2009 Jörg Michael (* 27. März 1963 in Dortmund) ist ein deutscher Heavy-Metal-Schlagzeuger. In seiner über 25-jährigen Karriere spielte er u. a. in den Bands Grave Digger, Rage, Mekong Delta, Axel Rudi Pell, Running Wild und Saxon. Von 1996 bis 2012 spielte er fest in der finnischen Formation Stratovarius. Michaels Schlagzeug beste...

 

Omar Sívori Informasi pribadiNama lengkap Enrique Omar SívoriTanggal lahir 2 Oktober 1935Tempat lahir San Nicolás, ArgentinaTanggal meninggal 17 Februari 2005(2005-02-17) (umur 69)Tempat meninggal San Nicolás, ArgentinaTinggi 1,63 m (5 ft 4 in)Posisi bermain Striker / PlaymakerNomor 10Karier senior*Tahun Tim Tampil (Gol) 1954–19571957–19651965–1969 River PlateJuventusNapoli 063 0(29)215 (134)063 0(12) Tim nasional1956–19571961–1962 ArgentinaItalia 19 0(9)09 0...

 

Untuk kegunaan lain, lihat Rhodopis (disambiguasi). Sepasang sandal kuno dari Mesir, terbuat dari serat sayuran Rhodopis (Yunani: Ῥοδῶπις Rhodôpis) adalah sebuah cerita kuno tentang gadis Yunani yang diperbudak dan menikahi raja Mesir. Cerita tersebut mula-mula dicatat oleh sejarawan Yunani Strabo pada akhir abad pertama SM atau awal abad pertama Masehi dan dianggap sebagai ragam terawal yang diketahui dari cerita Cinderella.[1] Lihat pula Rhodopis (hetaera) Cinderella Refer...

Musical The Band’s VisitBroadway Promotional PosterMusicDavid YazbekLyricsDavid YazbekBookItamar MosesSettingNegev, 1996BasisThe Band's Visitby Eran KolirinPremiereNovember 11, 2016 (2016-11-11): Linda Gross TheaterProductions2016 Off-Broadway2017 Broadway2019 North American Tour2022 LondonAwardsTony Award for Best Musical Tony Award for Best Book of a MusicalTony Award for Best Original ScoreGrammy Award for Best Musical Theater Album The Band's Visit is a stage musical with...

 

بضع الوريد طلبة يمارسون بضع الوريد معلومات عامة من أنواع جمع العينات في الطب  تعديل مصدري - تعديل   بضع الوريد أو الفصد (بالإنجليزية: Phlebotomy)‏ هي عمل شق في الوريد بواسطة إبرة. هذا العملية تدعى أيضا بزل الوريد (بالإنجليزية: Venipuncture)‏. الشخص الذي يقوم بهذه المهمة يدعى بالفصا...

 

This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Panicker – news · newspapers · books · scholar · JSTOR (October 2019) (Learn how and when to remove this template message) Panicker was an honorary title conferred by the King of Travancore in Kerala to distinguished Hindu individuals. This title was given to p...

Company with limited liability established under Japanese law This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Kabushiki gaisha – news · newspapers · books · scholar · JSTOR (January 2015) (Learn how and when to remove this template message) This article is part of a series onCorporate law By jurisdiction Ang...

 

For other albums with this name, see Yo quiero bailar (disambiguation). 2001 studio album by Sonia & SelenaYo quiero bailarStudio album by Sonia & SelenaReleasedNovember 23, 2001Recorded2001GenreDance-pop Yo Quiero Bailar is a debut album of the Spanish singers Sonia & Selena. This album was a big success. It achieved gold and platinum certification in countries such as Spain, Latin America and Europe and sold over 1,000,000 copies there.[1] Track listing CD (Vale ...

 

Universitas Komputer IndonesiaMotoQuality is Our TraditionJenisPerguruan Tinggi SwastaDidirikan28 Agustus 2000RektorProf. Dr. Ir. H. Eddy Soeryanto Soegoto, MT.AlamatJl. Dipatiukur no 114-116, Bandung, Jawa Barat, IndonesiaKampusUrbanWarnaBiruSitus webunikom.ac.id Universitas Komputer Indonesia (disingkat UNIKOM) adalah sebuah perguruan tinggi swasta terkemuka yang berada di kota Bandung, Jawa Barat, tepatnya berlokasi di Jl.Dipatiukur No 112-114. Rektornya saat ini dijabat oleh Prof. Dr. Ir....

この項目では、仙台市の泉区について説明しています。その他の泉区については「泉区」をご覧ください。 いずみく 泉区 泉ヶ岳国 日本地方 東北地方都道府県 宮城県市 仙台市市町村コード 04105-0面積 146.61km2総人口 208,855人 [編集](推計人口、2023年11月1日)人口密度 1,425人/km2隣接自治体隣接行政区 仙台市(青葉区、宮城野区)富谷市、黒川郡大和町区の木 マツ区�...

 

Canadian rower David CalderPersonal informationBorn (1978-05-21) May 21, 1978 (age 45)Brandon, Manitoba, Canada Medal record Men's rowing Representing  Canada Olympic Games 2008 Beijing Coxless pair World Rowing Championships 2003 Milan Eight Rowing the final (in red/white) of the men's coxless pair at the 2012 Summer Olympics. David C D Calder OLY[1] (born May 21, 1978) is a Canadian rower. A four-time Olympian, he is a 2008 Olympics silver medallist in the men's coxless pa...

 

黃台仰Ray Wong Toi-yeung 本土民主前線召集人任期2015年1月—2016年10月继任李東昇 个人资料性别男出生 (1993-09-15) 1993年9月15日(30歲) 英屬香港国籍 英國國民(海外)政党 本土民主前線居住地 香港 (1993-2018)  德國格丁根(政治庇護)宗教信仰藏傳佛教 学历 鄧肇堅維多利亞官立中學 明愛白英奇專業學校室內設計副學士(肄業) 牛津大學持續教育部哲學高等教育證...

American electronics engineer Bernard J. LechnerBernard J. Lechner in 2011BornBernard J. Lechner(1932-01-25)January 25, 1932New York City, New York, U.S.DiedApril 11, 2014(2014-04-11) (aged 82)Trenton, New JerseyEducationNew Rochelle High SchoolColumbia University (B.S.E.E.)AwardsSID Frances Rice Darne AwardBeatrice Winner AwardDavid Sarnoff MedalProgress MedalScientific careerFieldselectronics engineeringInstitutionsRCA LaboratoriesPrinceton UniversityHarvard School of BusinessIEEESIDSM...

 

Television station Television channel MTV ItalyCountryItalyProgrammingPicture format1080i (HDTV)OwnershipOwnerParamount Networks EMEAASister channelsComedy CentralNickelodeonNick Jr.Super!VH1HistoryLaunched1 September 1997FounderMTV EuropeFormer namesRete A/MTV (1997–2000)MTV/TMC2 (2000–2001)MTV Next (2015–2016)LinksWebsitewww.mtv.it MTV is an Italian pay television network, owned by Paramount Networks EMEAA and operated by Sky Italia. History Prior to the launch of a 24-hour Italian sp...

 
Kembali kehalaman sebelumnya