Teorie kódování

studium vlastností kódů

Teorie kódování (anglicky Coding theory) je studium vlastností kódů a jejich vhodnosti pro určité aplikace. Kódy se používají pro kompresi dat, kryptografii, detekci a opravu chyb, přenos dat a pro ukládání dat. Studiem kódů se zabývají různé obory, například teorie informace, elektrotechnika, matematika, lingvistika a matematická informatika; pro účel návrhu efektivních a spolehlivých metod přenosu dat, které typicky zahrnují odstranění redundance a detekci nebo opravu chyb v přenesených datech.

Dvourozměrné zobrazení Hammingovy vzdálenosti, kritické míry v teorii kódování.

Existují čtyři typy kódování:[1]

  1. Komprese dat (neboli zdrojové kódování)
  2. Detekce a oprava chyb (neboli kanálové kódování)
  3. Kryptografické kódování
  4. Linkové kódování

Komprese dat se snaží odstranit redundanci výchozích dat pro jejich co nejefektivnější přenos. Například komprimační algoritmus ZIP zmenšuje datové soubory, aby se zkrátila doba přenosu a ušetřil prostor na datovém médiu. Zkoumají se také kombinované metody komprese dat a opravy chyb.

Detekce a oprava chyb přidává dodatečné datové bity, aby byl přenos dat robustnější vůči rušení v přenosovém kanálu. Běžný uživatel si často ani neuvědomuje, kde všude se používá oprava chyb. Typická hudební CD používají Reedovy-Solomonovy kódy pro potlačení vlivu škrábanců a prachu. V této aplikaci je přenosový kanál samotný kompaktní disk. Mobilní telefony také používají kódovací techniky pro potlačení vlivu úniku a šumu vysokofrekvenčního rádiového přenosu. Datové modemy, telefonní přenosy a vesmírné sondy NASA využívají techniky kanálového kódování, například turbokódy a LDPC kódy, pro zabezpečení přenosu dat.

Historie teorie kódováníEditovat

V roce 1948 publikoval Claude Shannon v červencovém a říjnovém čísle časopisu Bell System Technical Journal dvojdílný článek „A Mathematical Theory of Communication“. V článku řeší problém, jak nejlépe kódovat informace, které chce odesilatel poslat. V této základní práci použil nástroje teorie pravděpodobnosti, které vyvinul Norbert Wiener, které byly v té době ve své rodící se fázích of je aplikovány na teorii komunikace. Shannon použil informační entropii jako míru nejistoty obsaženou ve zprávě, čímž v zásadě položil základy nového oboru teorie informace.

V roce 1949 byl vyvinut binární Golayův kód. Je to samoopravný kód schopný detekovat až čtyři chyby v 24bitovém slově a tři chyby opravit.

Richard Hamming získal Turingovu cenu za rok 1968 za svou práci v Bellových laboratořích v oboru numerických metod, automatických kódovacích systémů, kódů pro detekci chyb a samoopravných kódů. Objevil koncepty nyní nazývané Hammingovy kódy, Hammingova okna, Hammingova čísla a Hammingova vzdálenost.

Nasir Ahmed navrhl v roce 1972 diskrétní kosinovou transformaci (DCT), kterou následujícím roce rozpracoval s T. Natarajanem a K. R. Rao.[2] DCT je nejpoužívanější ztrátový komprimační algoritmus, který je základem pro multimediální formáty jako například JPEG, MPEG a MP3.

Zdrojové kódováníEditovat

Podrobnější informace naleznete v článku Komprese dat.

Účelem zdrojového kódování je zmenšit objem zdrojových dat.

DefiniceEditovat

Data můžeme považovat za náhodnou proměnnou  , kde   se objevuje s pravděpodobností  .

Data jsou zakódována řetězci (slovy) nad abecedou  .

Kód je funkce

  (nebo  , pokud prázdný řetězec nepatří do abecedy).

  je kódové slovo přiřazené k  .

Délka kódového slova se zapisuje jako

 .

Očekávaná délka kódu je

 

Zřetězení kódových slov  .

Kódové slovo prázdného řetězce je sám prázdný řetězec:

 

VlastnostiEditovat

Kód

  1.   je nesingulární, pokud je prostým zobrazením.
  2.   je jednoznačně dekódovatelný, pokud je prostým zobrazením.
  3.   je bezprefixový, pokud   není prefixem   (a naopak).

PrincipEditovat

Entropie zdroje je míra informace. V zásadě se zdrojové kódy snaží omezit redundanci zdroje a reprezentují zdroj s méně bity, které přenášejí více informace.

Komprese dat, která se explicitně snaží minimalizovat průměrnou délku zpráv podle určitého předpokládaného pravděpodobnostního modelu, se nazývá entropie kódování.

Různé techniky používané algoritmy zdrojového kódování se snaží přiblížit entropii zdroje. C(x) ≥ H(x), kde H(x) je entropie zdroje (přenosová rychlost) a C(x) je přenosová rychlost po komprimaci. Konkrétně žádné zdrojové kódovací schéma nemůže být lepší než entropie zdroje.

PříkladEditovat

Faksimile používá jednoduché Run-length encoding. Zdrojové kódování odstraňuje všechna data, která přijímač nepotřebuje, což sníží šířku pásma potřebného pro přenos.

Kanál kódováníEditovat

Podrobnější informace naleznete v článku Detekce a korekce chyb.

Účelem teorie kanálového kódování je hledání kódů, které lze vysílat rychle, obsahují mnoho platných kódových slov a může opravit nebo alespoň odhalit mnoho chyb. I když se vzájemně nevylučují, výkonnost v tyto oblasti je kompromis. Takže různé kódy jsou optimální pro různé aplikace. Potřebné vlastnosti tohoto kódu závisejí především na pravděpodobnosti chyb, ke kterým dochází při přenosu. U CD se typicky jedná především o prach nebo škrábance.

Na CD se používá křížově prokládané Reedovy–Solomonovy kódování pro rozprostření dat na disku.[3]

Jednoduchý opakovací kód, i když není nijak dobrý, může posloužit jako srozumitelný příklad. Předpokládejme, že vezmeme blok datových bitů (reprezentujících zvuk) a pošleme je třikrát. V přijímači budeme kontrolovat jednotlivá opakování bit po bitu a použijeme převažující hodnotu. Twist na toto je, že neposíláme pouze bity v případě, ale použijeme prokládání. Blok datových bitů se nejdříve rozdělí na 4 menší bloky. Pak postupně posíláme jeden bit z prvního bloku, jeden z druhého, atd. Celý postup se opakuje třikrát pro rozprostření dat na povrchu disku. Při použití jednoduchého opakovacího kód, to nikdy nemůže být se vyskytují efektivní. Jsou však známy výkonnější kódy, které jsou velmi efektivní při opravě „shluků“ chyb způsobených škrábanci nebo prachem, když se používá tato metoda prokládání.

Pro různé aplikace jsou jsou vhodnější různé kódy. Komunikace s vesmírnými sondami je omezena tepelným šumem přijímače, který je spíše spojité než impulsní povahy. Také úzkopásmové modemy jsou omezeny šumem přítomným v telefonní síti, pro jehož modelování je lepší spojitý signál.[zdroj?] Mobilní telefony jsou vystaveny velmi rychlým únikům. Používání vysokých frekvencí způsobuje velmi rychlé úniky signálu při přesunu přijímače i o pár desítek centimetrů. Existuje třída kanálových kódů, které jsou navrženy tak, aby úniku odolávaly.[zdroj?]

Lineární kódyEditovat

Podrobnější informace naleznete v článku Lineární kód.

Termín algebraická teorie kódování (anglicky algebraic coding theory) označuje podobor teorie kódování, v němž se vlastnosti kódů vyjadřují algebraickými termíny a dále zkoumány.[zdroj?]

Algebraická teorie kódování se v zásadě zabývá dvěma typy kódů:[zdroj?]

  1. Lineární blokové kódy
  2. Konvoluční kódy

Teorie analyzuje následující tři vlastnosti kódu – především:[zdroj?]

Lineární blokové kódyEditovat

Podrobnější informace naleznete v článku Blokový kód.

Lineární blokové kódy mají vlastnost linearity. To znamená, že součet jakýchkoli dvou kódových slov je také kódové slovo. Jejich název odráží, že se aplikují na zdrojové bity v blocích. Existují i blokové kódy, které nejsou lineární, ale bez této vlastnosti je obtížné dokázat, že kód je dobrý.[4]

Lineární blokové kódy je možné klasifikovat podle počtu symbolů v jejich abecedě (například, binární nebo ternární) a parametrů (n,m,dmin),[5] kde

  1. n je délka kódového slova v symbolech,
  2. m je počet zdrojových symbolů, které se současně používají pro kódování,
  3. dmin je minimální Hammingova vzdálenost kódu.

Je mnoho typů lineárních blokových kódů, například

  1. Cyklické kódy (například Hammingovy kódy)
  2. Opakovací kódy
  3. Paritní kódy
  4. Polynomiální kódy (například BCH kódy)
  5. Reedovy–Solomonovy kódy
  6. Algebraické geometrické kódy
  7. Reedovy–Mullerovy kódy
  8. Dokonalé kódy

Blokové kódy souvisejí s problémem skládání koulí, který mnoho let poutal pozornost. Lze jej snadno ukázat ve dvourozměrném případě. Rozložte několik mincí v jedné vrstvě do tabulky a smáčkněte je k sobě. Výsledkem bude šestiúhelníkovitý vzorek připomínající včelí plástev. Blokové kódy však využívají více rozměrů, což nelze tak snadno vizualizovat. Účinný (24,12) Golayův kód používaný pro komunikaci s kosmickými sondami používá 24 dimenzí. Pokud se používají jako binární kód (což je obvyklé) rozměr udává délku kódového slova, jak je definována výše.

Teorie kódování používá model N-rozměrné koule. Například kolik mincí v jedné vrstvě se vejde do nakreslené kružnice nebo v trojrozměrném prostoru kolik kuliček se vejde do kulové nádoby. Volbu vhodného kódu ovlivňují i další kritéria. Například při skládání šestiúhelníkových obalů do pravoúhlého prostoru vzniká prázdný prostor v rozích. Se zvyšováním počtu dimenzí se podíl nevyplněného prostoru zmenšuje. Ale v některých dimenzích obaly vyplňují všechen prostor, což vede k tak zvaným „dokonalým“ kódům. Jediné netriviální a užitečné dokonalé kódy jsou distance-3 Hammingovy kódy s parametry vyhovujícími vztahu (2r – 1, 2r – 1 – r, 3) a [23,12,7] binární a [11,6,5] ternární Golayovy kódy.[4][5]

Další vlastností kódu je počet sousedů, které má jedno kódové slovo.[6] Opět budeme uvažovat rozmisťování mincí. Nejdříve rozmístíme mince do pravoúhlé mřížky. Každá mince bude mít 4 blízké sousedy (a další 4 v rozích, které jsou o něco vzdálenější). Při skládání do šestiúhelníků bude mít každá mince 6 blízkých sousedů. Se zvyšováním počtu dimenzí roste počet blízkých sousedů velmi rychle. Kvůli tomu počet způsobů, jak může šum způsobit, že dekodér v přijímači zvolí souseda (tj. chybu) roste také. To je základní omezení blokových kódů a vlastně všech kódů. I když způsobit chybu jednoho souseda může být těžší, počet sousedů však může být tak velký, že celková pravděpodobnost chyby je skutečně významná.[6]

Vlastnosti lineárních blokových kódů se používají v mnoha aplikacích. Například jednoznačnost syndrome-coset lineárních blokových kódů se používá v trellis tvarování,[7] jednom z nejznámějších tvarovacích kódů.

Konvoluční kódyEditovat

Podrobnější informace naleznete v článku Konvoluční kód.

Principem konvolučních kódů je vyjádřit každý symbol kódového slova váženým součtem různých symbolů vstupní zprávy, což se podobá konvoluci používané v LTI systémech pro hledání výstupního systému, když známe vstupní a impulzní odezvu.

Obecně tedy hledáme výstup systémového konvolučního kodéru, který je konvolucí vstupního bitu, proti stavům konvolučního kodéru, rejstříky.

Konvoluční kódy v zásadě neposkytují lepší ochranu proti šumu než ekvivalentní blokové kódy. Ale často jsou jednodušší na implementaci než blokové kódy téhož výkonu. Kodér je obvykle jednoduchý obvod, který má paměť stavů a nějakou zpětnovazební logiku, obvykle XOR hradla. Dekodér může být implementován softwarově nebo ve firmwaru.

Optimálním algoritmem používaným pro dekódování konvolučních kódů je Viterbiho algoritmus. Existují zjednodušení pro snížení výpočetní zátěže, která spoléhají na vyhledávání pouze nejpravděpodobnější cesty. I když nejsou optimální, v prostředí s nízkým šumem dávají obecně dobré výsledky.

Konvoluční kódy se používají v pokročilých telefonních modemech (V.32, V.17, V.34) a v mobilních telefonech GSM, i v satelitních a vojenských komunikačních zařízeních.

Kryptografické kódováníEditovat

Podrobnější informace naleznete v článku Kryptografie.

Kryptografie nebo kryptografické kódování je teorie i praxe technik bezpečné komunikace v přítomnosti třetích stran (označovaných jako nazývaný protivník).[8] Obecněji jde o zkonstruování a analýzu protokolů, které jsou odolné proti různým narušením;[9] různé aspekty v informační bezpečnosti jako například důvěrnost/utajení dat, integrita dat, autentizace a nepopiratelnost[10] představují hlavní cíl moderní kryptografie. Moderní kryptografie je interdisciplinární obor zahrnující matematiku, matematickou informatiku a elektrotechniku. K aplikacím kryptografie patří bankomaty, počítačová hesla a elektronické obchodování.

Kryptografie byla dříve v zásadě synonymem s šifrováním, konverzí informace z čitelné formy na zdánlivý nesmysl. Odesilatel zašifrované zprávy sdílí dekódovací techniku potřebnou pro získání původní informace pouze s určenými příjemci, čímž zabraňuje nežádoucí osobám, aby dělaly totéž. Od první světové války a příchodu počítačů začaly být metody používané pro kryptologii stále složitější a její aplikace rozšířenější.

Moderní kryptografie je založena na matematické teorii a postupech matematické informatiky; návrh kryptografických algoritmů využívá teorii výpočetní složitosti, udělání takový algoritmy odolný proti prolomení v praxi by jakýkoli adversary. Takový systém je teoreticky možné prolomit, ale je neproveditelné to provést jakýmkoli známým praktickým prostředkem. Tato schémata se proto nazývají výpočetně bezpečná; teoretické pokroky, například vylepšení algoritmů rozkladu na prvočísla (faktorizace) a rychlejší výpočetní technika vyžaduje, aby tato řešení byla průběžně upravována. Lze dokázat, že existují informačně teoreticky bezpečná schémata, která nelze prolomit ani s neomezeným výpočetním výkonem (příkladem je jednorázová šifra), ale implementovat tato schémata je obtížnější než nejlepší teoreticky prolomitelné, ale výpočetně bezpečné mechanismy.

Linkové kódováníEditovat

Podrobnější informace naleznete v článku Linkové kódy.

Linkový kód (neboli digitální modulace v základním pásmu nebo metoda digitálního přenosu v základním pásmu) jsou kódy používané v komunikačních systémech pro přenos dat v základním pásmu. Linkové kódování se často používá pro přenos digitálních dat.

Linkové kódy jsou založeny na amplitudově a časově diskrétní reprezentaci digitálního signálu, který je optimálně vyladěn na vlastnosti fyzického kanálu (a přijímacího zařízení). Pro reprezentaci nul a jedniček digitálních dat na přenosovém spoji se používají specifické tvary vln napětí nebo proudu. K nejpoužívanějším typům linkových kódů patří unipolární, polární, bipolární a kódování Manchester.

Další aplikace teorie kódováníEditovat

Další oblastí teorie kódování je návrh kódů, které poskytují synchronizaci. Kód je možné navrhnout tak, aby bylo možné snadno detekovat a opravit fázový posuv, a aby bylo možné posílat více signálů stejným kanálem.[zdroj?]

Další aplikací kódů používaných v některých systémech mobilních telefonů, je kódový multiplex (vícenásobný přístup s kódovým dělením – CDMA). Každému telefonu je přiřazena kódová sekvence, která je přibližně nekorelovaná s kódy jiných telefonů.[zdroj?] Při přenosu se kódové slovo používá pro modulaci datových bitů reprezentujících hlasový signál. Procesem demodulace v přijímači se získají původní data. Vlastnosti této třídy kódů umožňují, aby mnoho uživatelů (s různými kódy) používalo ve stejném okamžiku stejný rádiový kanál. Signály jiných uživatelů budou v demodulátoru přijímače vypadat pouze jako nízkoúrovňový šum.[zdroj?]

Další obecnou třídou kódů jsou kódy používané pro zpětnou vazbu s automatickým opakováním. Při použití těchto kódů přidává odesilatel ke každé zprávě redundantní informace (obvykle kontrolní bity) sloužící pro detekci chyb. Pokud kontrolní bity nejsou konzistentní se zbytkem přijaté zprávy, příjemce požádá odesilatele, aby vysílání zprávy zopakoval. S výjimkou nejjednodušších protokolů pro rozlehlé sítě používá většina protokolů zpětnou vazbu s automatickým opakováním; např. SDLC (IBM), TCP (Internet), X.25 (veřejné a privátní datové sítě) a mnoho dalších. Tato oblast byla intenzivně zkoumána kvůli problému, který nastává při opakování paketů. Je to nový paket nebo je to opakování přenosu? Typicky se číslují pakety nebo (jako v protokolu TCP) byty.[11]

Skupinové testováníEditovat

Skupinové testování používá kódy jiným způsobem. Uvažujme rozsáhlé skupiny položek, v nichž je velmi malá část určitým způsobem odlišných (například defektní výrobky nebo infikovaní jedinci). Myšlenkou skupinového testování je určit, které položky jsou „odlišné“ pomocí co nejméně testů. Tento problém má kořeny v druhé světové válce, když United States Army Air Forces potřebovaly testovat své vojáky na syfilis.[12]

Analogové kódováníEditovat

Obdobně jsou informace zakódovány v neuronových sítích mozku, při analogovém zpracování signálu a v analogové elektronice. K aspektům analogového kódování patří analogová oprava chyb,[13] analogová komprese dat[14] a analogové šifrování.[15]

Neuronové kódováníEditovat

Neuronové kódování je obor příbuzný neurovědě zabývající se otázkami, jak jsou smyslové a jiné informace reprezentovány v mozku sítí neuronů. Hlavním cílem studia neuronového kódování je charakterizovat vztahy mezi podnětem a odezvou jednoho neuronu nebo celé sady neuronů a vztahy mezi elektrickou činností spolupracujících neuronů.[16] Předpokládalo se, že neurony mohou kódovat jak digitální tak analogové informace,[17] a že se neurony řídí principy teorie informace a komprimují informace,[18] a detekují a opravují[19] chyby v signálech, které jsou posílány v mozku i širším nervovém systému.

OdkazyEditovat

ReferenceEditovat

V tomto článku byl použit překlad textu z článku Coding theory na anglické Wikipedii.

  1. Data Communications and Networks. [s.l.]: [s.n.], 2002. Dostupné online. ISBN 9780471808725. S. 18. 
  2. Nasir Ahmed. How I Came Up With the Discrete Cosine Transform [online]. Digital Signal Processing, 1991. Dostupné online. (anglicky) 
  3. CAMPBELL, Todd. 2006-01-07 [cit. 2020-11-08]. Dostupné online. (anglicky) 
  4. a b TERRAS, Audrey. Fourier Analysis on Finite Groups and Applications. [s.l.]: Cambridge University Press, 1999. Dostupné online. ISBN 978-0-521-45718-7. S. 195. 
  5. a b BLAHUT, Richard E. Algebraic Codes for Data Transmission. [s.l.]: Cambridge University Press, 2003. Dostupné online. ISBN 978-0-521-55374-2. 
  6. a b Christian Schlegel; Lance Pérez. Trellis and turbo coding. [s.l.]: Wiley-IEEE, 2004. Dostupné online. ISBN 978-0-471-22755-7. S. 73. 
  7. FORNEY, G.D., Jr. Trellis shaping. IEEE Transaction on Information Theory. Březen 1992, roč. 38, čís. 2 Pt 2, s. 281–300. DOI:10.1109/18.119687. 
  8. RIVEST, Ronald L. Handbook of Theoretical Computer Science. [s.l.]: Elsevier, 1990. Kapitola Cryptology. 
  9. BELLARE, Mihir; ROGAWAY, Phillip. Introduction to Modern Cryptography. [s.l.]: [s.n.], 2005-09-21. Kapitola Introduction, s. 10. 
  10. MENEZES, A. J.; VAN OORSCHOT, P. C.; VANSTONE, S. A. Handbook of Applied Cryptography. [s.l.]: [s.n.], 1997. Dostupné online. ISBN 978-0-8493-8523-0. 
  11. RFC793 [online]. Internet Engineering Task Force (IETF), září 1981. Dostupné online. 
  12. DORFMAN, Robert. The detection of defective members of large populations. Annals of Mathematical Statistics. 1943, roč. 14, čís. 4, s. 436–440. DOI:10.1214/aoms/1177731363. 
  13. CHEN, Brian; WORNELL, Gregory W. Analog Error-Correcting Codes Based on Chaotic Dynamical Systems. IEEE Transactions on Communications. Červenec 1998, roč. 46, čís. 7, s. 881–890. Dostupné online [cit. 2013-06-30]. DOI:10.1109/26.701312. 
  14. NOVAK, Franc; HVALA, Bojan; KLAVŽAR, Sandi. On Analog Signature Analysis. In: [s.l.]: [s.n.], 1999. ISBN 1-58113-121-6.
  15. Shujun Li; Chengqing Li; Kwok-Tung Lo; Guanrong Chen. Cryptanalyzing an Encryption Scheme Based on Blind Source Separation. IEEE Transactions on Circuits and Systems I. Duben 2008, roč. 55, čís. 4, s. 1055–63. Dostupné online. DOI:10.1109/TCSI.2008.916540. arXiv:cs/0608024. 
  16. BROWN, Emery N.; KASS, Robert E.; MITRA, Partha P. Multiple neural spike train data analysis: state-of-the-art and future challenges. Nature Neuroscience. Květen 2004, roč. 7, čís. 5, s. 456–461. Dostupné online. DOI:10.1038/nn1228. PMID 15114358. 
  17. THORPE, S.J. Parallel processing in neural systems and computers. [s.l.]: North-Holland, 1990. Dostupné online. ISBN 978-0-444-88390-2. Kapitola Spike arrival times: A highly efficient coding scheme for neural networks, s. 91–94. 
  18. GEDEON, T.; PARKER, A.E.; DIMITROV, A.G. Information Distortion and Neural Coding. Canadian Applied Mathematics Quarterly. Spring 2002, roč. 10, čís. 1, s. 10. Dostupné online. 
  19. STIBER, M. Spike timing precision and neural error correction: local behavior. Neural Computation. Červenec 2005, roč. 17, čís. 7, s. 1577–1601. DOI:10.1162/0899766053723069. PMID 15901408. arXiv:q-bio/0501021. 

Související článkyEditovat

LiteraturaEditovat

Externí odkazyEditovat