Hamming (7,4) - Hamming(7,4)

Hammingův (7,4) -kód
Hamming (7,4). Svg
Pojmenoval podleRichard W. Hamming
Klasifikace
TypLineární kód bloku
Délka bloku7
Délka zprávy4
Hodnotit4/7 ~ 0.571
Vzdálenost3
Velikost abecedy2
Zápis[7,4,3]2-kód
Vlastnosti
perfektní kód
Grafické znázornění 4 datových bitů d1 na d4 a 3 paritní bity str1 na str3 a které paritní bity se vztahují na které datové bity

v teorie kódování, Hamming (7,4) je lineární kód pro opravu chyb který kóduje čtyři bity dat do sedmi bitů přidáním tří paritní bity. Je členem větší rodiny Hammingovy kódy, ale termín Hammingův kód často odkazuje na tento konkrétní kód, který Richard W. Hamming představen v roce 1950. V té době pracoval Hamming v Bell Telephone Laboratories a byl frustrován náchylností k chybám děrný štítek čtenář, a proto začal pracovat na kódech opravujících chyby.[1]

Hammingův kód přidává tři další kontrolní bity na každé čtyři datové bity zprávy. Hammingova (7,4) algoritmus může opravit jakoukoli jednobitovou chybu nebo detekovat všechny jednobitové a dvoubitové chyby. Jinými slovy, minimální Hammingova vzdálenost mezi libovolnými dvěma správnými kódovými slovy je 3 a přijatá slova lze správně dekódovat, pokud jsou ve vzdálenosti nejvýše jednoho od kódového slova, které bylo odesláno odesílatelem. To znamená, že pro situace přenosového média, kde chyby série nedochází, Hammingův (7,4) kód je efektivní (protože médium by muselo být extrémně hlučné, aby bylo možné převrátit dva ze sedmi bitů).

v kvantová informace, Hamming (7,4) se používá jako základ pro Steane kód, typ Kód CSS používá kvantová korekce chyb.

Fotbalová branka

Cílem Hammingových kódů je vytvořit sadu paritní bity které se překrývají, takže jednobitová chyba v datovém bitu nebo paritní bit lze detekovat a opravit. I když lze vytvořit více přesahů, obecná metoda je uvedena v Hammingovy kódy.

Bit #1234567
Přenesený bit
AnoNeAnoNeAnoNeAno
NeAnoAnoNeNeAnoAno
NeNeNeAnoAnoAnoAno

Tato tabulka popisuje, které paritní bity pokrývají, které přenášely bity v kódovaném slově. Například, str2 poskytuje sudou paritu pro bity 2, 3, 6 a 7. Rovněž podrobně čte sloupec, který přenášený bit pokrývá, který paritní bit je pokryt. Například, d1 je pokryto str1 a str2 ale ne str3 Tato tabulka bude nápadně podobná matici kontroly parity (H) v další části.

Dále, pokud byly odstraněny sloupce parity ve výše uvedené tabulce

AnoAnoNeAno
AnoNeAnoAno
NeAnoAnoAno

pak podobnost s řádky 1, 2 a 4 matice generátoru kódu (G) níže bude také evidentní.

Správným výběrem paritního bitového pokrytí tedy lze detekovat a opravit všechny chyby s Hammingovou vzdáleností 1, což je důvod použití Hammingova kódu.

Hammingovy matice

Hammingovy kódy lze vypočítat v lineární algebra podmínky prostřednictvím matice protože Hammingovy kódy jsou lineární kódy. Pro účely Hammingových kódů dva Hammingovy matice lze definovat: kód matice generátoru G a matice kontroly parity H:

Bitová pozice datových a paritních bitů

Jak bylo uvedeno výše, řádky 1, 2 a 4 G měli by vypadat povědomě, když mapují datové bity na své paritní bity:

  • str1 kryty d1, d2, d4
  • str2 kryty d1, d3, d4
  • str3 kryty d2, d3, d4

Zbývající řádky (3, 5, 6, 7) mapují data na jejich pozici v kódované podobě a v tomto řádku je pouze 1, takže se jedná o identickou kopii. Ve skutečnosti tyto čtyři řádky jsou lineárně nezávislé a tvoří matice identity (záměrně, ne náhodou).

Jak již bylo zmíněno výše, tři řady H by měl být známý. Tyto řádky se používají k výpočtu vektor syndromu na přijímajícím konci a pokud je vektorem syndromu nulový vektor (všechny nuly), pak je přijaté slovo bezchybné; pokud nenulová, pak hodnota označuje, který bit byl převrácen.

Čtyři datové bity - sestavené jako vektor str - je předem vynásoben G (tj., Gp) a vzít modulo 2, čímž se získá kódovaná hodnota, která se přenáší. Původní 4 datové bity jsou převedeny na sedm bitů (odtud název „Hamming (7,4)“) se třemi přidanými paritními bity, aby byla zajištěna rovnoměrná parita pomocí výše uvedených datových bitových pokrytí. První tabulka výše ukazuje mapování mezi každým datovým a paritním bitem do jeho konečné bitové pozice (1 až 7), ale toto může být také prezentováno v Vennův diagram. První diagram v tomto článku ukazuje tři kruhy (jeden pro každý paritní bit) a uzavírá datové bity, které každý paritní bit pokrývá. Druhý diagram (zobrazený vpravo) je identický, ale místo toho jsou bitové pozice označeny.

Pro zbytek této sekce budou jako běžící příklad použity následující 4 bity (zobrazené jako vektor sloupce):

Kódování kanálu

Mapování v příkladu X. Parita červeného, ​​zeleného a modrého kruhu je rovnoměrná.

Předpokládejme, že chceme předat tato data (1011) přes hlučný komunikační kanál. Konkrétně a binární symetrický kanál což znamená, že poškození chyb neupřednostňuje ani nulu, ani jednu (způsobuje chyby symetricky). Dále se předpokládá, že všechny zdrojové vektory jsou rovnocenné. Bereme produkt G a str, se vstupy modulo 2, k určení přenášeného kódového slova X:

Tohle znamená tamto 0110011 bude vysílán místo vysílání 1011.

Programátoři, kteří se zajímají o násobení, by měli pozorovat, že každý řádek výsledku je nejméně významným bitem Počet obyvatel nastavených bitů vyplývajících z řádků a sloupců Bitové ANDed spíše než násobit.

V sousedním diagramu je sedm bitů kódovaného slova vloženo do příslušných umístění; z inspekce je zřejmé, že parita červených, zelených a modrých kruhů je sudá:

  • červený kruh má dvě jedničky
  • zelený kruh má dvě jedničky
  • modrý kruh má čtyři 1

Krátce se zobrazí, že pokud se během přenosu bit převrátí, bude parita dvou nebo všech tří kruhů nesprávná a chybný bit lze určit (i když jeden z paritních bitů) s vědomím, že parita všechny tři z těchto kruhů by měly být sudé.

Kontrola parity

Pokud během přenosu nedojde k žádné chybě, pak přijaté kódové slovo r je totožný s přenášeným kódovým slovem X:

Přijímač se znásobí H a r získat syndrom vektor z, který označuje, zda došlo k chybě, a pokud ano, pro který bit kódového slova. Provedení tohoto násobení (opět vstupy modulo 2):

Od syndromu z je nulový vektor, může přijímač dojít k závěru, že nedošlo k žádné chybě. Tento závěr je založen na pozorování, že když je datový vektor vynásoben G, dojde ke změně základu do vektorového podprostoru, kterým je jádro z H. Pokud se během přenosu nic neděje, r zůstane v jádře H a násobení získá nulový vektor.

Oprava chyb

Jinak předpokládejme, že singl došlo k bitové chybě. Matematicky můžeme psát

modulo 2, kde Ei je jednotkový vektor, tj. nulový vektor s 1 v , počítáno od 1.

Výše uvedený výraz tedy znamená jedinou bitovou chybu v místo.

Pokud tento vektor vynásobíme H:

Od té doby X jsou přenášená data, jsou bez chyb a výsledkem je produkt H a X je nula. Tím pádem

Nyní produkt H s vektor standardní báze vybere tento sloupec H, víme, že k chybě dochází v místě, kde je tento sloupec H dojde.

Předpokládejme například, že jsme na bit # 5 zavedli bitovou chybu

Bitová chyba na bitu 5 způsobí špatnou paritu v červených a zelených kruzích

Diagram vpravo ukazuje bitovou chybu (zobrazenou modrým textem) a vytvořenou špatnou paritu (zobrazenou červeným textem) v červených a zelených kruzích. Bitovou chybu lze zjistit výpočtem parity červených, zelených a modrých kruhů. Pokud je detekována špatná parita, pak se datový bit překrývá pouze špatná parita kruhy je bit s chybou. Ve výše uvedeném příkladu mají červené a zelené kruhy špatnou paritu, takže bit odpovídající průniku červené a zelené, ale ne modré, označuje chybný bit.

Nyní,

což odpovídá pátému sloupci H. Použitý obecný algoritmus (vidět Hammingův kód # Obecný algoritmus ) byl ve své konstrukci záměrný, takže syndrom 101 odpovídá binární hodnotě 5, což znamená, že byl poškozený pátý bit. V bitu 5 byla tedy detekována chyba a lze ji opravit (jednoduše převrátit nebo vyvrátit jeho hodnotu):

Tato opravená přijatá hodnota skutečně nyní odpovídá vysílané hodnotě X shora.

Dekódování

Jakmile bylo zjištěno, že přijímaný vektor je bezchybný nebo opravený, pokud došlo k chybě (za předpokladu, že jsou možné pouze nulové nebo jednobitové chyby), je třeba přijímaná data dekódovat zpět do původních čtyř bitů.

Nejprve definujte matici R:

Pak přijatá hodnota, strr, je rovný Rr. Pomocí běžícího příkladu shora

Více bitových chyb

Bitová chyba na bitech 4 a 5 je zavedena (zobrazena modře) se špatnou paritou pouze v zeleném kruhu (zobrazena červeně)

Není obtížné ukázat, že pomocí tohoto schématu lze opravit pouze jednobitové chyby. Alternativně lze Hammingovy kódy použít k detekci jednobitových a dvojbitových chyb, pouze tím, že si všimneme, že je výsledkem H je nenulová, kdykoli došlo k chybě. V sousedním diagramu byly převráceny bity 4 a 5. Tím se získá pouze jeden kruh (zelený) s neplatnou paritou, ale chyby nelze obnovit.

Hammingovy kódy (7,4) a podobné Hammingovy kódy však nemohou rozlišovat mezi jednobitovými chybami a dvoubitovými chybami. To znamená, že dvoubitové chyby se zobrazují stejně jako jednobitové chyby. Pokud je oprava chyby provedena u dvoubitové chyby, bude výsledek nesprávný.

Podobně Hammingovy kódy nemohou detekovat ani se zotavit z libovolné tříbitové chyby; Zvažte diagram: pokud by bit v zeleném kruhu (barevně červeně) byl 1, kontrola parity vrátí nulový vektor, což naznačuje, že v kódovém slovu není žádná chyba.

Všechna kódová slova

Protože zdroj má pouze 4 bity, existuje pouze 16 možných přenášených slov. Zahrnuta je osmibitová hodnota, pokud je použit další paritní bit (vidět Hammingův (7,4) kód s dalším paritním bitem ). (Datové bity jsou zobrazeny modře; paritní bity jsou zobrazeny červeně; a extra paritní bit zobrazeny žlutě.)

Data
Hamming (7,4)Hamming (7,4) s bitem extra parity (Hamming (8,4))
Přeneseno
DiagramPřeneseno
Diagram
00000000000Hammingův kód pro 0000 se změní na 000000000000000Hammingův kód pro 0000 se změní na 0000000 s bitem extra parity 0
10001110000Hammingův kód pro 1000 se změní na 100001111100001Hammingův kód pro 1000 se změní na 1000011 s extra paritním bitem 1
01001001100Hammingův kód pro 0100 se změní na 010010110011001Hammingův kód pro 0100 se změní na 0100101 s extra paritním bitem 1
11000111100Hammingův kód pro 1100 se změní na 110011001111000Hammingův kód pro 1100 se změní na 1100110 s extra paritním bitem 0
00100101010Hammingův kód pro 0010 se změní na 001011001010101Hammingův kód pro 0010 se stane 0010110 s extra paritním bitem 1
10101011010Hammingův kód pro 1010 se změní na 101010110110100Hammingův kód pro 1010 se změní na 1010101 s bitem extra parity 0
01101100110Hammingův kód pro 0110 se změní na 011001111001100Hammingův kód pro 0110 se stane 0110011 s bitem extra parity 0
11100010110Hammingův kód pro 1110 se změní na 111000000101101Hammingův kód pro 1110 se změní na 1110000 s extra paritním bitem 1
00011101001Hammingův kód pro 0001 se změní na 000111111010010Hammingův kód pro 0001 se změní na 0001111 s extra paritním bitem 0
10010011001Hammingův kód pro 1001 se změní na 100110000110011Hammingův kód pro 1001 se stane 1001100 s extra paritním bitem 1
01010100101Hammingův kód pro 0101 se změní na 010101001001011Hammingův kód pro 0101 se stane 0101010 s extra paritním bitem 1
11011010101Hammingův kód pro 1101 se stává 110100110101010Hammingův kód pro 1101 se stane 1101001 s bitem extra parity 0
00111000011Hammingův kód pro 0011 se změní na 001100110000111Hammingův kód pro 0011 se změní na 0011001 s bitem extra parity 1
10110110011Hammingův kód pro 1011 se změní na 101101001100110Hammingův kód pro 1011 se stává 1011010 s bitem extra parity 0
01110001111Hammingův kód pro 0111 se změní na 011110000011110Hammingův kód pro 0111 se stane 0111100 s extra paritním bitem 0
11111111111Hammingův kód pro 1111 se změní na 111111111111111Hammingův kód pro 1111 se změní na 1111111 s extra paritním bitem 1

E7 mříž

Hammingův (7,4) kód úzce souvisí s E7 mříž a ve skutečnosti jej lze použít k jeho konstrukci, nebo přesněji k jeho dvojí mřížce E7 (podobná konstrukce pro E7 používá duální kód [7,3,4]2). Zejména převzetí množiny všech vektorů X v Z7 s X shodné (modulo 2) s kódovým slovem Hamminga (7,4) a změna měřítka o 1 /2, dává mřížku E7

Toto je konkrétní případ obecnějšího vztahu mezi mřížemi a kódy. Například rozšířený (8,4) -Hammingův kód, který vzniká přidáním paritního bitu, souvisí také s E8 mříž. [2]

Reference

  1. ^ "Historie Hammingových kódů". Archivovány od originál dne 25.10.2007. Citováno 2008-04-03.
  2. ^ Conway, John H.; Sloane, Neil J. A. (1998). Balení koule, mřížky a skupiny (3. vyd.). New York: Springer-Verlag. ISBN  0-387-98585-9.


externí odkazy