Katedra matematiky a Institut teoretické informatiky Západočeská univerzita Seminář pro učitele středních a vysokých škol, Plzeň, 30. března 2012
jsou všude Některé oblasti využití: CD přehrávače mobilní sítě paměti a pevné disky čárové kódy čipové karty kosmický výzkum
jsou všude Některé oblasti využití: CD přehrávače mobilní sítě paměti a pevné disky čárové kódy čipové karty kosmický výzkum
Otcové zakladatelé Richard Hamming (1915 1998) 1950: Error detecting and error correcting codes Claude Shannon (1916 2001) 1948: A mathematical theory of communication
Detekce chyb rodné číslo čísla bankovních účtů a kreditních karet IČO síťové protokoly některé paměti RAM
Ilustrační příklad obrázek v 16 stupních šedi, každý bod reprezentován 4 bity například 0000 = černá, 1101 = světle šedá přenos faxem po nekvalitní lince, každý jednotlivý bit se poruší s pravděpodobností p obrazový bod bude přijat správně s pravděpodobností (1 p) 4 takže pro p = 0, 001 bude v průměru 19% bodů chybných Jak zvýšit spolehlivost přenosu? např.: každý bit zopakovat třikrát, přijatou trojici dekódovat podle většiny jen necelé 1% bodů bude chybných, ale cenou je trojnásobný objem dat
Ilustrační příklad obrázek v 16 stupních šedi, každý bod reprezentován 4 bity například 0000 = černá, 1101 = světle šedá přenos faxem po nekvalitní lince, každý jednotlivý bit se poruší s pravděpodobností p obrazový bod bude přijat správně s pravděpodobností (1 p) 4 takže pro p = 0, 001 bude v průměru 19% bodů chybných Jak zvýšit spolehlivost přenosu? např.: každý bit zopakovat třikrát, přijatou trojici dekódovat podle většiny jen necelé 1% bodů bude chybných, ale cenou je trojnásobný objem dat
Hammingův kód obrazový bod (a 1, a 2, a 3, a 4 ) zakódujeme do 7-bitového slova (x 1,..., x 7 ) bity x 1, x 2, x 4 jsou kontrolní, ostatní jsou informační do informačních souřadnic zapíšeme a 1,..., a 4 kontrolní souřadnice dopočítáme (modulo 2) podle rovnic: x 4 + x 5 + x 6 + x 7 = 0, x 2 + x 3 + x 6 + x 7 = 0, x 1 + x 3 + x 5 + x 7 = 0. (v i-té rovnici se objevuje x k, pokud i-tý bit v binárním zápisu čísla k je 1) pro každou čtveřici (a 1,..., a 4 ) obdržíme kódové slovo: (0 1 1 1) (0 0 0 1 1 1 1)
Hammingův kód obrazový bod (a 1, a 2, a 3, a 4 ) zakódujeme do 7-bitového slova (x 1,..., x 7 ) bity x 1, x 2, x 4 jsou kontrolní, ostatní jsou informační do informačních souřadnic zapíšeme a 1,..., a 4 kontrolní souřadnice dopočítáme (modulo 2) podle rovnic: x 4 + x 5 + x 6 + x 7 = 0, x 2 + x 3 + x 6 + x 7 = 0, x 1 + x 3 + x 5 + x 7 = 0. (v i-té rovnici se objevuje x k, pokud i-tý bit v binárním zápisu čísla k je 1) pro každou čtveřici (a 1,..., a 4 ) obdržíme kódové slovo: (0 1 1 1) (0 0 0 1 1 1 1)
Vlastnosti Hammingova kódu máme tedy 16 kódových slov délky 7 každá dvě se liší alespoň ve 3 souřadnicích neboli: Hammingova vzdálenost každých dvou slov je 3) poruší-li se tedy při přenosu nejvýše jeden bit, dokážeme odeslané kódové slovo správně rekonstruovat kód opravuje jednu chybu
Maticová formulace Soustavu rovnic, podle které se dopočítávají kontrolní bity, lze zapsat ve tvaru: kde x 1 x 2 x 3 0 A x 4 = 0, x 5 0 x 6 x 7 0 0 0 1 1 1 1 A = 0 1 1 0 0 1 1. 1 0 1 0 1 0 1
Dekódování Hammingova kódu Dejme tomu, že přijaté slovo je y = (y 1,..., y 7 ). Postup dekódování: Příklad: pokud Ay T je nulový vektor, ponecháme y beze změny, jinak přečteme Ay T jako binární zápis čísla od 1 do 7 a změníme bit na příslušné souřadnici. zdrojová data jsou (0 1 1 1) zakódovali jsme je slovem (0 0 0 1 1 1 1) při přenosu se porušil předposlední bit, výsledkem je slovo (0 0 0 1 1 0 1) součin s maticí A je (1 1 0) T, takže opravíme šestou souřadnici
Dekódování Hammingova kódu Dejme tomu, že přijaté slovo je y = (y 1,..., y 7 ). Postup dekódování: Příklad: pokud Ay T je nulový vektor, ponecháme y beze změny, jinak přečteme Ay T jako binární zápis čísla od 1 do 7 a změníme bit na příslušné souřadnici. zdrojová data jsou (0 1 1 1) zakódovali jsme je slovem (0 0 0 1 1 1 1) při přenosu se porušil předposlední bit, výsledkem je slovo (0 0 0 1 1 0 1) součin s maticí A je (1 1 0) T, takže opravíme šestou souřadnici
Ještě k příkladu Při použití Hammingova kódu pro kódování faxové zprávy bude chybných jen 5% bodů (bez kódování to bylo 18%). Jiná situace: Potom: je třeba, aby výsledný obrázek byl bezchybný, rozměry jsou 16 16 bodů, pravděpodobnost chyby v jednotlivém bitu je 0,1%. při použití Hammingova kódu (i při ztrojování bitů) je pravděpodobnost úspěchu přes 99%, bez kódování pouze 36%.
Ještě k příkladu Při použití Hammingova kódu pro kódování faxové zprávy bude chybných jen 5% bodů (bez kódování to bylo 18%). Jiná situace: Potom: je třeba, aby výsledný obrázek byl bezchybný, rozměry jsou 16 16 bodů, pravděpodobnost chyby v jednotlivém bitu je 0,1%. při použití Hammingova kódu (i při ztrojování bitů) je pravděpodobnost úspěchu přes 99%, bez kódování pouze 36%.
Obecné Hammingovy kódy analogickou konstrukci lze provést pro každou délku n = 2 k 1 (k 2) dostáváme kódy délky 2 k 1 s k kontrolními bity a minimální vzdáleností dvou slov 3 jde o lineární kódy (kódová slova tvoří lineární prostor nad dvouprvkovým tělesem)
Hustota Hammingových kódů Hustota kódu délky n s K slovy: h = log 2 K n udává zhruba poměr počtu informačních bitů k délce slova hustoty Hammingových kódů: H(3, 1) 0, 333 H(7, 4) 0, 571 H(15, 11) 0, 733 H(31, 26) 0, 839 hustota se blíží jedné jako 1 log n n
Hammingovy kódy jsou perfektní Pro kód s délkou 7 a minimální vzdáleností dvou slov 3 má Hammingův (7, 4)-kód maximální možný počet kódových slov: pro kódové slovo c nechť B(c) je množina všech slov o vzdálenosti 1 od c pro různá kódová slova c jsou množiny B(c) disjunktní (protože vzdálenost dvou kódových slov je 3) v každé množině B(c) je 8 slov velikost sjednocení množin B(c) je tedy 8 16 = 128, což je přesně počet všech slov délky 7 Podobné kódy se nazývají perfektní, patří mezi ně mj. všechny Hammingovy kódy.
Aplikace Hammingových kódů: disková pole diskové pole RAID: zařízení obsahující několik synchronizovaných pevných disků řada typů, v původní specifikaci označení Level 0 6 RAID Level 2: ochrana proti výpadku 1 disku pomocí Hammingova kódu příklad konfigurace: 7 disků, z toho 4 informační a 3 kontrolní slovo o 4 bitech se převede na slovo kódu H(7, 4) (délky 7), na každý disk se uloží 1 bit
Hadamardovy kódy a Mariner 9 Mariner 9, první sonda na oběžné dráze kolem jiné planety (Mars, 1971):
Přenos obrázků z Mariner 9 černobílé snímky Marsu s 64 úrovněmi šedi v rozlišení 832 700 vlivem kosmického záření a šumu zesilovače mnoho chyb nutnost kódování za daných podmínek by bylo možné navýšit objem přenášených dat zhruba na pětinásobek (hustota kódu by měla být zhruba 0, 2 nebo více) při odeslání každého bitu 5 : možnost opravy 2 chyb Hadamardův (32, 6)-kód umožnil opravu 7 chyb
Hadamardovy matice Hadamard (1893): Pokud pro prvky komplexní čtvercové matice řádu n platí a ij 1, pak det A n n/2. Hadamardova matice: čtvercová matice H s prvky ±1, kde každé dva řádky se shodují přesně v polovině prvků pro H platí v Hadamardově větě rovnost není těžké dokázat: je-li H řádu n, pak n = 1, 2 nebo násobek 4 Hadamardova hypotéza: pro každý z těchto řádů Hadamardova matice existuje hypotéza dokázána pro n < 668
Hadamardovy matice Hadamard (1893): Pokud pro prvky komplexní čtvercové matice řádu n platí a ij 1, pak det A n n/2. Hadamardova matice: čtvercová matice H s prvky ±1, kde každé dva řádky se shodují přesně v polovině prvků pro H platí v Hadamardově větě rovnost není těžké dokázat: je-li H řádu n, pak n = 1, 2 nebo násobek 4 Hadamardova hypotéza: pro každý z těchto řádů Hadamardova matice existuje hypotéza dokázána pro n < 668
Sylvesterova konstrukce Konstrukce Hadamardových matic řádu 2 k : H 1 = ( + ) ( ) + + H 2 = + + + + + H 4 = + + + + + + ( ) Hi H H i+1 = i H i H i
Hadamardův (32, 6)-kód Kód použitý pro Mariner 9: H 32 = Hadamardova matice řádu 32 (získaná pomocí Sylvesterovy konstrukce) pro každý řádek r provedeme záměnu ve vektorech r a r + 0 1 dostaneme 64 slov délky 32, každé dvě se liší v 16 souřadnicích výsledný kód opravuje 7 chyb, hustota 6/32 = 0, 188 dostatečná
Reed-Solomonovy kódy Nechť p je prvočíslo: počítáme modulo p s čísly z množiny F p = {0,..., p 1} výsledná algebraická struktura je těleso velikosti p pro polynom f (x) s koeficienty z F p uvažme vektor (evaluace polynomu f ) [f ] = (f (1), f (2),..., f (p 1)) Reed-Solomonův kód RS(p, k) je tvořen všemi slovy [f ], kde f probíhá polynomy stupně < k
Vlastnosti Reed-Solomonových kódů Kód RS(p, k): délka p 1 p k kódových slov minimální vzdálenost p k Použití: přehrávače CD a DVD disků (jako součást komplikovanějšího schématu) čtečky čárových kódů dekodéry satelitního vysílání kosmické sondy (Voyager 2 snímky Saturnu, Uranu a Neptuna)
Vlastnosti Reed-Solomonových kódů Kód RS(p, k): délka p 1 p k kódových slov minimální vzdálenost p k Použití: přehrávače CD a DVD disků (jako součást komplikovanějšího schématu) čtečky čárových kódů dekodéry satelitního vysílání kosmické sondy (Voyager 2 snímky Saturnu, Uranu a Neptuna)
Shannonova věta viděli jsme, že Hammingovy kódy mají sice hustotu rostoucí k 1, ale pravděpodobnost správného dekódování (spolehlivost) klesá k 0 je možné prodlužováním kódu zachovat hustotu a zvyšovat spolehlivost? Shannon (1948): Pro každé p < 1/2 a κ < 1 H(p) existují kódy s hustotou κ a spolehlivostí libovolně blízkou jedné. pro κ > 1 H(p) se naopak spolehlivost dlouhých kódů blíží k 0 důkazy nekonstruktivní, explicitní konstrukce obtížný problém Entropická funkce H(p).
Shannonova věta viděli jsme, že Hammingovy kódy mají sice hustotu rostoucí k 1, ale pravděpodobnost správného dekódování (spolehlivost) klesá k 0 je možné prodlužováním kódu zachovat hustotu a zvyšovat spolehlivost? Shannon (1948): Pro každé p < 1/2 a κ < 1 H(p) existují kódy s hustotou κ a spolehlivostí libovolně blízkou jedné. pro κ > 1 H(p) se naopak spolehlivost dlouhých kódů blíží k 0 důkazy nekonstruktivní, explicitní konstrukce obtížný problém Entropická funkce H(p).
Literatura W. Cary Huffman, V. Pless: Fundamentals of Error-Correcting Codes, Cambridge University Press, 2003. J. H. van Lint: Introduction to Coding Theory, Springer, 1998. M. Malek: Coding Theory, poznámky k přednášce na adrese http://www.mcs.csueastbay.edu/~malek/ Class/Hadamard.pdf Wikipedia, hesla Error detection and correction Forward error correction Hamming code
Děkuji za pozornost.