13.07.2015 Views

Daniel Olejár, Martin Stanek: Úvod do teórie kódovania

Daniel Olejár, Martin Stanek: Úvod do teórie kódovania

Daniel Olejár, Martin Stanek: Úvod do teórie kódovania

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Úvod <strong>do</strong> teóriekó<strong>do</strong>vania<strong>Daniel</strong> Olejár<strong>Martin</strong> <strong>Stanek</strong>24. augusta 2007


iThis book was developed during the project Thematic Network 114046-CP-1-2004-1-BG-ERASMUS-TNc○<strong>Daniel</strong> Olejár, 2007All rights reserved. No part of this publication may be reproduced, stored in a retrievalsystem, or transmitted, in any form or by any means, electronical, mechanical,photocopying, recording or otherwise, without the prior written permission of the author.Typeset by L A TEX2e.


Obsah1 Úvod 32 Základné pojmy a označenia 72.1 Abecedy, slová a jazyky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.2 Údaje, informácia a komunikácia . . . . . . . . . . . . . . . . . . . . . . . . 102.3 Kó<strong>do</strong>vanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18I Kó<strong>do</strong>vanie zdroja 213 Nerovnomerné kódy 233.1 Rozdelitel’né kódy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.1 Prefixové kódy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.1.2 Kraftova - McMillanova nerovnost’ . . . . . . . . . . . . . . . . . . . 253.1.3 Úplné kódy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.1.4 Kó<strong>do</strong>vé stromy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.1.5 Automatové dekó<strong>do</strong>vanie. . . . . . . . . . . . . . . . . . . . . . . . . 333.2 Cena kódu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.3 Kvázioptimálne kódy a optimálny kód . . . . . . . . . . . . . . . . . . . . . 363.3.1 Shannonov kód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383.3.2 Fanov kód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.3.3 Huffmanov optimálny kód . . . . . . . . . . . . . . . . . . . . . . . . 403.3.4 Rozšírenie kódu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.3.5 Chyby v pravdepo<strong>do</strong>bnostiach zdrojových symbolov . . . . . . . . . 443.3.6 Kó<strong>do</strong>vanie Markovovského zdroja . . . . . . . . . . . . . . . . . . . . 46iii


ivOBSAH3.4 Kó<strong>do</strong>vanie pomocou orákula . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 Metódy kompresie údajov 554.1 Slovníkové metódy kompresie dát . . . . . . . . . . . . . . . . . . . . . . . . 554.2 LZ77 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 554.2.1 Kompresia (kó<strong>do</strong>vanie) . . . . . . . . . . . . . . . . . . . . . . . . . . 554.2.2 Dekompresia (dekó<strong>do</strong>vanie) . . . . . . . . . . . . . . . . . . . . . . . 564.2.3 Poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.2.4 LZSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574.3 LZW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 584.3.1 Kompresia (kó<strong>do</strong>vanie) . . . . . . . . . . . . . . . . . . . . . . . . . . 584.3.2 Dekompresia (dekó<strong>do</strong>vanie) . . . . . . . . . . . . . . . . . . . . . . . 594.3.3 Poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.4 Aritmetické kó<strong>do</strong>vanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.4.1 Kompresia (kó<strong>do</strong>vanie) . . . . . . . . . . . . . . . . . . . . . . . . . . 614.4.2 Dekompresia (dekó<strong>do</strong>vanie) . . . . . . . . . . . . . . . . . . . . . . . 634.4.3 Implementačné poznámky . . . . . . . . . . . . . . . . . . . . . . . . 634.4.4 Poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.5 BWT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.5.1 Kó<strong>do</strong>vanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.5.2 Dekó<strong>do</strong>vanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.5.3 MTF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664.5.4 Poznámky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 675 Kó<strong>do</strong>vanie zvuku a obrazu 696 Kolmogorovská zložitost’ a hranice kompresie údajov 71II Samoopravné kódy 737 Základné princípy samooopravných kó<strong>do</strong>v 757.1 Binárny symetrický kanál bez pamäte . . . . . . . . . . . . . . . . . . . . . 757.2 Geometrická interpretácia samoopravného kódu . . . . . . . . . . . . . . . 77


OBSAHv7.3 Jednoduché kódy odhal’ujúce/opravujúce chyby . . . . . . . . . . . . . . . . 817.3.1 Testovanie parity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817.3.2Obdĺžnikové kódy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817.4 Hammingov kód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838 Lineárne kódy 878.1 Základné vlastnosti linerárnych kó<strong>do</strong>v . . . . . . . . . . . . . . . . . . . . . 888.2 Dekó<strong>do</strong>vanie lineárnych kó<strong>do</strong>v . . . . . . . . . . . . . . . . . . . . . . . . . 948.3 Reed-Mullerove kódy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979 Cyklické kódy 1039.1 Polynomický popis cyklických kó<strong>do</strong>v . . . . . . . . . . . . . . . . . . . . . . 1069.2 Maticový popis cyklických kó<strong>do</strong>v . . . . . . . . . . . . . . . . . . . . . . . . 1099.3 Kó<strong>do</strong>vanie pomocou cyklických kó<strong>do</strong>v . . . . . . . . . . . . . . . . . . . . . 1119.4 Dekó<strong>do</strong>vanie cyklických kó<strong>do</strong>v . . . . . . . . . . . . . . . . . . . . . . . . . . 1129.5 Error trapping dekó<strong>do</strong>vanie . . . . . . . . . . . . . . . . . . . . . . . . . . . 1189.6 Golayov kód . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1219.7 Dokonalé a kvázi<strong>do</strong>konalé kódy . . . . . . . . . . . . . . . . . . . . . . . . . 12710 Bose-Chandhury-Hocquenghemove kódy 12910.1 Binárne BCH kódy opravujúce 2 chyby . . . . . . . . . . . . . . . . . . . . . 12910.2 Definícia BCH kó<strong>do</strong>v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13610.3 Hranica BCH kó<strong>do</strong>v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13710.4 Peterson-Gorenstein-Zierlerov algoritmus dekó<strong>do</strong>vania BCH kó<strong>do</strong>v . . . . 13910.5 Iné metódy dekó<strong>do</strong>vania BCH kó<strong>do</strong>v . . . . . . . . . . . . . . . . . . . . . . 14910.6 Zvláštnosti dekó<strong>do</strong>vania binárnych BCH kó<strong>do</strong>v . . . . . . . . . . . . . . . . 15910.7 Reed-Solomonove kódy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15911 Modifikácie samoopravných kó<strong>do</strong>v 16312 Prínos kó<strong>do</strong>vania 16713 Shannonova teoréma 173


viOBSAH14 Hranice parametrov samoopravných kó<strong>do</strong>v 181III Matematické základy teórie kó<strong>do</strong>vania 18315 Algebra 18715.1 Grupy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18715.2 Okruhy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19415.3 Polynómy a okruhy polynómov . . . . . . . . . . . . . . . . . . . . . . . . . 19715.4 Konečné polia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20315.5 Vektorové priestory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21315.6 Lineárna algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21616 Entropia a množstvo informácie 217


Kapitola 1ÚvodThe fundamental problem of communication is that of reproducing at onepoint either exactly or approximately a message selected at another point.(Claude Shannon, 1948)Komunikácia (výmena informácie medzi dvoma alebo viacerými zúčastnenými stranami)je nutným predpokla<strong>do</strong>m existencie a vývoja akéhokol’vek systému, ktorého častimusia navzájom spolupracovat’ pri plnení spoločných úloh. Aby bola možná koordináciaspolupracujúcich častí, komunikácia, ktorá medzi nimi prebieha, musí byt’ efektívnaa spol’ahlivá. Efektívnost’ komunikácie znamená, že výmena informácie musí prebehnút’vo vymedzenom čase (nesmie trvat’ príliš dlho) a s vynaložením ohraničenéhoúsilia (napríklad finančných zdrojov, energie). Aby sme mohli komunikáciu považovat’za spol’ahlivú, správa sa počas prenosu nesmie modifikovat’ tak, aby ju príjemca ne<strong>do</strong>kázalsprávne interpretovat’; t.j. príjemca musí <strong>do</strong>kázat’ na základe prijatej správy<strong>do</strong>statočne presne zrekonštruovat’ odvysielanú správu. Okrem toho sa na komunikáciučasto kladie aj tretia požiadavka—bezpečnost’. 1 Bezpečnost’ komunikácie je predmetomzáujmu disciplíny nazývanej informačná bezpečnost’ a v tejto práci sa ňou nebudemezaoberat’.Požiadavky na efektívnost’ a spol’ahlivost’ komunikácie sú už na prvý pohl’ad v priamomprotiklade (náklady na prenos informácie a výkon vysielača) a tak býva častoproblém nájst’ pre komunikačný systém nejaké uspokojivé riešenie. Ešte v nedávnejminulosti sa kompromis medzi efektívnost’ou a spol’ahlivost’ou komunikácie riešil (acelkom úspešne) empiricky. V roku 1948 vyšiel článok Claude Shannona A MathematicalTheory of Communication, ktorý položil základy dvoch matematických teórií—teórie informácie a teórie kó<strong>do</strong>vania. Tieto teórie pomohli exaktne sformulovat’ známeproblémy efektívnosti a spol’ahlivosti komunikácie a vytvorit’ rámec pre ich riešenie.Teória informácie skúma ohraničenia na prenos informácie a teória kó<strong>do</strong>vania sa usiluje1 Bezpečnost’ komunikácie má viacero aspektov, z ktorých najdôležitejšie sú dôvernost’, integrita aautentickost’ prenášanej informácie. Bezpečnost’ komunikácie sa zaist’uje pomocou rozličných prostriedkov(kryptologických, technických, organizačných, právnych a pod.).1


2 KAPITOLA 1. ÚVODnájst’ taký spôsob zápisu (kó<strong>do</strong>vanie) informácie, ktorý by umožnil <strong>do</strong>siahnut’ hranicestanovené teóriou informácie. Vznik a rozvoj teórie informácie a teórie kó<strong>do</strong>vania bolmotivovaný potrebou riešenia praktických problémov komunikácie 2 . Napriek tomu, žesa obe teórie vyvíjali ako matematické teórie (teória informácie využíva najmä analytickéa pravdepo<strong>do</strong>bnostné metódy, kým teória kó<strong>do</strong>vania používa algebraické metódy),neodtrhli sa od problémov reálnej komunikácie. Najmä komunikácia s kozmickýmisondami prinášala trvalé podnety pre hl’adanie efektívnych samoopravných kó<strong>do</strong>v. Vsúčasnosti zažíva aplikačný boom najmä teória kó<strong>do</strong>vania. Postupujúca informatizáciaspoločnosti prináša digitalizáciu informácie; elektronické <strong>do</strong>kumenty nahrádzajúpapierové, digitalizuje sa telefonická komunikácia, rozhlasové a televízne vysielanie,analógový zápis zvuku, obrazu a videa je rýchle nahradzovaný digitálnym. Rôzne aplikácievyužívajúce digitálne zapísanú informáciu kladú čoraz náročnejšie požiadavkyna spol’ahlivost’ a efektívnost’ komunikácie. (Napríklad digitálny zápis filmov na DVDsi vyžaduje zápis vel’kého množstva informácie vo forme, ktorá umožní on-line dekó<strong>do</strong>vaniea je zároveň <strong>do</strong>statočne o<strong>do</strong>lná voči chybám.) Používatelia videa, MP3 prehrávačov,mobilných telefónov, ani laickí používatelia informačných a komunikačných systémovnepotrebujú štu<strong>do</strong>vat’ teóriu kó<strong>do</strong>vania, ani teóriu informácie na to, aby <strong>do</strong>kázalirozličné informačné a komunikačné zariadenia úspešne používat’. V inej situácii sú informatici,ktorí budú pracovat’ s rozsiahlymi údajmi a budú potrebovat’ zvolit’ na ichspracovanie čo najefektívnejšie metódy. Dokonca aj v prípade, ked’ budú mat’ k dispozíciihotové programy, budú potrebovat’ aspoň základné znalosti teórie informácie ateórie kó<strong>do</strong>vania na to, aby <strong>do</strong>kázali posúdit’, či sú dané programy vhodné na spracovanieich údajov a ak nie, či vôbec existujú efektívne metódy riešenia.Od uverejnenia Shannonovho článku vyšlo množstvo <strong>do</strong>brých kníh z teórie kó<strong>do</strong>vania(a samozrejme aj teórie informácie). Viacero z nich je <strong>do</strong>stupných na Internete. Na Internetemožno nájst’ aj univerzitné prednášky, informácie o štandar<strong>do</strong>ch, spôsoboch kó<strong>do</strong>vaniarozličných druhov informácie aj najnovšie vedecké výsledky teórie kó<strong>do</strong>vania a teórieinformácie. S výnimkou elementárnych učebných textov si však uvedené informácie odčitatel’a vyžadujú aspoň základné poznatky, ktorých získanie samostatným štúdiom nemusíbyt’ ani jednoduché, ani efektívne. V slovenskej odbornej literatúre bola teórii kó<strong>do</strong>vaniavenovaná jedna kapitola v Jablonského knihe Úvod <strong>do</strong> diskrétnej matematiky zroku 1982 a Adámkova Teorie kó<strong>do</strong>vání, ktorá vyšla v roku 1988, ale ucelená učebnicaalebo monografia z teórie kó<strong>do</strong>vania chýba. Touto knihou chceme spomínanú medzeru vslovenskej odbornej literatúre zaplnit’. Kniha je určená pre<strong>do</strong>všetkým univerzitným študentominformatiky, informatikom, matematikom a všetkým, ktorí majú záujem o teóriukó<strong>do</strong>vania. U čitatel’a predpokladáme aspoň základné znalosti z matematickej analýzy,algebry, lineárnej a teórie pravdepo<strong>do</strong>bnosti v rozsahu úvodných kurzov magisterského,resp. inžinierskeho štúdia. Ciel’om knihy je oboznámit’ čitatel’a so základnými problémami,ktoré teória kó<strong>do</strong>vania rieši, metódami návrhu <strong>do</strong>brých kó<strong>do</strong>v, efektívnnymimetódami kó<strong>do</strong>vania a dekó<strong>do</strong>vania informácie, ako aj hranicami, ktoré pre konštrukciukó<strong>do</strong>v vyplývajú z teórie informácie. Preštu<strong>do</strong>vanie tejto knihy by mu mohlo pomôct’využívat’ výsledky teórie kó<strong>do</strong>vania na riešenie vlastných problémov súvisiacich s kó<strong>do</strong>vaníminformácie. Ak sme u čitatel’a vzbudili záujem o samotnú teóriu kó<strong>do</strong>vania, vzávere knihy mu odporúčame literatúru pre d’alšie štúdium. Rozsah súčasného pozna-2 Claude Shannon a Richard Hamming, ktorý rozpracoval základy teórie kó<strong>do</strong>vania, pracovali v tom časev American Telephone and Telegraph’s Bell Laboratories


3nia v teórii kó<strong>do</strong>vania vyžaduje prijat’ rozhodnutie, ktorými čast’ami teórie kó<strong>do</strong>vaniasa v knihe zaoberat’ nebudeme. Rozhodli sme sa obetovat’ teoretickejšie časti, ktoré sabezprostredne nedajú použit’ na konštrukciu kó<strong>do</strong>v, resp. na posudzovanie ich vlastností.Čitatel’a, ktorému by tieto časti chýbali, odkazujeme na literatúru uvedenú v zozname,resp. odporúčania pre d’alšie štúdium uvedené v záverečnej kapitole.Táto kniha vznikla na základe prednášok z teórie kó<strong>do</strong>vania, ktoré sme na Fakultematematiky, fyziky a informatiky Univerzity Komenského prednášali pre študentov informatikyod polovice 80-tych rokov. Pôvodne sme vychádzali z klasických prác [12], [3],resp. [6] a prednáška bola koncipovaná viac teoreticky ako aplikačne. Vzhl’a<strong>do</strong>m nazameranie poslucháčstva, medzi ktorým prevládali informatici (a časovým obmedzeniam)sa postupne t’ažisko prednášky presunulo od matematickej teórie k algoritmom. Inšpiráciusme našli v Blahutovej knihe [2], ktorý nielen našiel rozumný kompromis medzinevyhnutnou, pomerne abstraktnou teóriou a efektívnymi algoritmami, ale <strong>do</strong>kázal tútonáročnú problematiku podat’ vel’mi prístupným spôsobom. Z tejto knihy sme intenzívnečerpali podnety pre prednášku aj pre túto knihu. Lintova kniha [15] nám poskytla informácieo aktuálnych teoretických výsledkoch, prehl’adný dôkaz Shannonovej vety azaujímavý pohl’ad na vzt’ah medzi technickými prostriedkami a samoopravnými kódmipri zaistení spol’ahlivosti komunikácie. Pozreli sme si množstvo prednášok z teórie kó<strong>do</strong>vaniana špičkových svetových univerzitách; za všetkých spomenieme najmä metodickypekne spracované učebné texty J.I.Halla, [7] z Michigen State University a vel’miobsažné prednášky Mahdu Sudana z MIT. Vel’mi inšpiratívne boli Shannonovské prednáškyRoberta J. McEliecea z Caltechu o úlohe samoopravných kó<strong>do</strong>v pri kozmickomvýskume. Teória kó<strong>do</strong>vania a teória informácie sa od svojho vzniku uberali vlastnýmicestami. Hamming [3] ukázal na súvislosti výsledkov oboch teórií; v po<strong>do</strong>bnom duchu,s aktuálnym obsahom a širším záberom je napísaná kniha [11]. Títo a d’alší kolegovia,matematici a inžinieri pracujúci v teórii kó<strong>do</strong>vania prispeli k rozvoju nášho poznaniahĺbky a krásy tejto teórie a významu jej aplikácií, za čo im patrí naša úprimná vd’aka.Ďakujeme aj tvorcom programu Maple, vd’aka ktorému sme mohli <strong>do</strong> knihy zaradit’viacero príkla<strong>do</strong>v, ktorých vypracovanie presiahlo možnosti ručných výpočtov; tvorcomprogramov TEXa L A TEX, pomocou ktorých sme mali možnost’ upravit’ podl’a vlastnýchpredstáv grafickú po<strong>do</strong>bu tejto knihy.Počas práci na knihe sa jej pôvodné zameranie menilo a postupne presiahlo aj rozsahzákladnej prednášky z teórie kó<strong>do</strong>vania. Snažili sme sa preto o taký výklad problematiky,ktorý by umožnil použit’ časti knihy ako učebné texty pre rozličné kurzy. Niektoré z nichuvádzame na nasledujúcich schémachTO DOPracovné verzie knihy slúžili ako študijné texty pre túto prednášku. Vd’aka tomusme <strong>do</strong>stali množstvo pripomienok, upozornení na existujúce chyby i návrhov na <strong>do</strong>plneniea prepracovanie niektorých častí. Za všetky pripomienky a námety, ktoré prispelik zlepšeniu obsahu i formy prezentácie úprimne d’akujeme. Osobitne by sme chcelipod’akovat’ Broni Brejovej a Tomášovi Vinařovi za príspevok k Reed Mullerovým kó<strong>do</strong>m,Jánovi Mazákovi za podrobné errata a Monike Steinovej za spracovanie príkladu onebinárnych BCH kó<strong>do</strong>ch.<strong>Daniel</strong> Olejár a <strong>Martin</strong> <strong>Stanek</strong>


4 KAPITOLA 1. ÚVODPoznámka. Poznámka. Tento text je pracovnou verziou knihy z teórie kó<strong>do</strong>vania.Je určený ako študijný text pre poslucháčov informatiky na Univerzite Komenského vBratislave. Akékol’vek iné použitie si vyžaduje písomný súhlas autorov.(C) D.Olejár a M. <strong>Stanek</strong>, 2006.


Kapitola 2Základné pojmy a označeniaMnohé pojmy teórie kó<strong>do</strong>vania sa stali súčast’ou bežného jazyka a l’udia ich často používajúbez toho, aby si uve<strong>do</strong>movali ich presný význam. V bežnej komunikácii to natol’koneprekáža, ale pri odbornom výklade by rozličná interpretácia základných pojmov mohlaviest’ k ne<strong>do</strong>rozumeniam. Aby sme sa v d’alšom výklade vyhli zbytočným problémom, vybudujemeexaktne potrebný pojmový aparát.2.1 Abecedy, slová a jazykyAbeceda je l’ubovol’ná konečná neprázdna množina. Prvky abecedy budeme nazývat’znakmi alebo symbolmi. Abecedu budeme označovat’ symbolom Σ; ak bude potrebné rozlišovat’rozličné abecedy, budeme symbol Σ indexovat’ (Σ 1 , Σ 2 , . . . ). L’ubovol’ná konečnápostupnost’ znakov z abecedy Σ sa nazýva slovom nad abece<strong>do</strong>u Σ. Ak nebude podstatnéo akú abecedu ide alebo z kontextu bude známe, o ktorú abecedu sa jedná, budeme kvôlistručnosti slová „nad abece<strong>do</strong>u Σ“ vynechávat’. Zjednodušíme aj zapisovanie slov; symbolyv postupnosti nebudeme oddel’ovat’ čiarkami a slovo (napr.) a, b, e, c, e, d, a budemezapisovat’ v tvare, ako sa slová v textoch štandardne zapisujú; t.j. abeceda. Nech jew slovo nad abece<strong>do</strong>u Σ, potom počet znakov slova w nazveme dĺžkou slova w. Dĺžkuslova w budeme označovat’ symbolom l(w). Tak napríklad l(slovo) = 5, l(abeceda) = 7,l(a) = 1. Postupnost’ znakov nad abece<strong>do</strong>u Σ môže byt’ aj prázdna. Takáto postupnost’sa nazýva prázdnym slovom a označuje sa symbolom ε. Pre dĺžku prázdneho slovaplatí l(ε) = 0. Teraz definujeme operácie nad slovami, pomocou ktorých bude možnévytvárat’ nové slová. Nech sú u, v dve slová nad abece<strong>do</strong>u Σ; u = a 1 . . . a n ; v = b 1 . . . b m .Zret’azením slov u, v je slovo w = uv = a 1 . . . a n b 1 . . . b m nad abece<strong>do</strong>u Σ. (Je zrejmé,že operácia zret’azovania slov je asociatívna, ale vo všeobecnosti nie je komutatívna;prázdne slovo ε je obojstranným neutrálnym prvkom vzhl’a<strong>do</strong>m na operáciu zret’azeniaslov: pre l’ubovol’né slovo w platí wε = εw = w). Slovo možno zret’azit’ aj so sebousamým, napr. uu = a 1 . . . a n a 1 . . . a n . Pre l’ubovol’né slovo w a l’ubovol’né číslo k ∈ Ndefinujeme:5


6 KAPITOLA 2. ZÁKLADNÉ POJMY A OZNAČENIA1. w 0 = ε,2. w k+1 = w k w.Nech u = a 1 . . . a n je l’ubovol’né slovo, potom súvislú podpostupnost’ z = a i a i+1 . . . a i+k−1 ;1 ≤ i, i + k < n nazveme podslovom slova u. Ak 0 < k < n, slovo z nazveme vlastnýmpodslovom slova u. Slová u a ε sú triviálnymi podslovami slova u a v kó<strong>do</strong>vaní sa nimizvlášt’ zaoberat’ nebudeme. Zato však v teórii kó<strong>do</strong>vania zohrávajú dôležitú úlohupodslová, ktoré sú začiatkom alebo koncom nejakého slova. Zavedieme pre ne špeciálnepomenovania. Nech u = a 1 . . . a n je l’ubovol’né slovo, slovo z = a 1 . . . a k , 0 < k ≤ nnazveme počiatočným podslovom (prefixom) slova u a slovo x = a i a i+1 . . . a n ; 1 ≤ i = nnazveme koncovým podslovom (sufixom) slova u. Znaky v slove možno aj preusporiadat’.Dôležitým prípa<strong>do</strong>m preusporiadania znakov je otočenie slova: zrkadlovým obrazom slovau = a 1 . . . a n nazveme slovo u R = a n . . . a 1 .Slová môžeme zoskupovat’ <strong>do</strong> množín. Takéto množiny slov budeme nazývat’ jazykmi.Presnejšie, l’ubovol’nú množinu slov nad abece<strong>do</strong>u Σ nazveme jazykom nad abece<strong>do</strong>uΣ. Ked’že jazyky sú množiny slov, možno z existujúcich jazykov vytvárat’ nové jazykypomocou množinových operácií, ako sú zjednotenie, <strong>do</strong>plnok, rozdiel, prienik, symetrickádiferencia množín a prípadne iné. Pre slová sme zaviedli operáciu zret’azovania(slov). Zavedieme teraz užitočné operácie s jazykmi, ktoré sú založené na zret’azovaníslov. Nech sú L 1 , L 2 jazyky nad abece<strong>do</strong>u Σ, potom L = L 1 L 2 je jazyk nad abece<strong>do</strong>u Σdefinovaný nasle<strong>do</strong>vne: L = {uv; u ∈ L 1 , v ∈ L 2 }. Jazyk možno zret’azovat’ so sebousamým; pre l’ubovol’ný jazyk L a l’ubovol’né číslo k ∈ N definujeme:1. L 0 = {ε},2. L k+1 = L k L.Na záver uvedieme ešte dve operácie nad jazykmi, ktoré nám umožnia popísat’ množinuvšetkých možných slov, ktoré sa dajú vytvorit’ pomocou operácie zret’azovania jazyka.Nech L je l’ubovol’ný jazyk, potom jazyky L + = ⋃ ∞i>0 Li a L ∗ = ⋃ ∞i≥0 Li sa nazývajúkladná, resp. nezáporná iterácia jazyka L i . Všimnite si, že abecedu Σ možno chápat’aj ako jazyk pozostávajúci zo všetkých slov dĺžky 1 nad abece<strong>do</strong>u Σ a Σ∗ predstavujemnožinu všetkých slov nad abece<strong>do</strong>u Σ.Ilustrujeme zavedené pojmy na príkla<strong>do</strong>ch.Príklad.1. Binárna abeceda Σ 1 je l’ubovol’ná dvojprvková množina. Znaky binárnej abecedynajčastejšie označujeme číslicami 0, 1; binárnu abecedu budeme v tomto prípadechápat’ ako množinu Σ 1 = {0, 1}.2. Na zápis prirodzených čísel vystačíme s abece<strong>do</strong>u 0, 1; Σ 2 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.3. Racionálne čísla možno zapísat’ v po<strong>do</strong>be slov nad abece<strong>do</strong>u Σ 3 = Σ 2 ∪ {" + ", ", "."}.4. Σ 4 = {a, b, c, d, e, f, g, i, j, k, l, m, n, o, p, q, r, s, t, v, w, x, y, z} je abeceda pozostávajúcaz malých písmen anglickej abecedy.


2.1. ABECEDY, SLOVÁ A JAZYKY 75. Abecedu Σ 5 = {A, B, C, D, E, F, G, I, J, K, L, M, N, O, P, Q, R, S, T, V, W, X, Y, Z} tvoria vel’képísmená anglickej abecedy.6. Σ 6 = Σ 4⋃Σ5 .7. Abecedu Σ 7 = {α, β, γ, δ, ɛ, ε, ζ, η, θ, ϑ, ι, κ, λ, µ, ν, ξ, o, π, ϖ, ρ, ρ, σ, σ, τ, υ, φ, ϕ, χ, ψ, ω}tvoria malé písmená gréckej abecedy.8. Ďalšími užitočnými abecedami by mohli byt’ rozličné znakové sady, napr. všetkyznaky kó<strong>do</strong>v ASCII. V teórii kó<strong>do</strong>vania budeme často pracovat’ s abedcedami, ktorýchsymboly sú prvkami konečných polí. Tieto symboly budeme zapisovat’ pomocouprirodzených čísel; Σ 8 = Z m = {0, 1, . . . m − 1}.9. Slovo 2.78128 je slovom nad Σ 3 , ale nie je slovom nad abece<strong>do</strong>u Σ 2 (pretože obsahujesymbol ".", ktorý sa v abecede Σ 2 nenachádza).10. Zret’azením slov w 1 = pismeno a w 2 = male <strong>do</strong>stávame slová (napr. nad abece<strong>do</strong>uΣ 4 ) w 1 w 2 = pismenomale a w 2 w 1 = malepismeno .11. Nech je dané slovo w 1 = pismeno nad abece<strong>do</strong>u Σ 4 , počiatočné a koncové podslovátohto slova sú uvedené v nasledujúcej tabul’ke:prefixεppipispismpismepismenpismenosufixpismenoismenosmenomenoenonooε12. Nech je dané slovo w 1 = pismeno nad abece<strong>do</strong>u Σ 4 , zrkadlový obraz slova w 1 jeslovo w R 1 = onemsip nad abece<strong>do</strong>u Σ 4.13. Nech sú L 1 = {ne, pre, po, vy}, L 2 = {mysli, hovor, pis, padni} jazyky nad abece<strong>do</strong>uΣ 4 . Jazyk L 1 L 2 je uvedený v nasledujúcej tabul’ke:L 1 /L 2 ne pre po vymysli nemysli premysli pomysli vymyslihovor nehovor prehovor pohovor vyhovorpis nepis prepis popis vypispadni napadni prepadni popadni vypadni14. Uvažujme binárnu abecedu Σ 1 = {0, 1}. Uvedieme množiny slov Σ k 1pre niekol’ko


8 KAPITOLA 2. ZÁKLADNÉ POJMY A OZNAČENIApočiatočných hodnôt k:k Σ k 10 {ε}1 {0, 1}2 {00, 01, 10, 11}3 {000, 001, 010, 011, 100, 101, 110, 111}4 {0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011, 1100,1101, 1110, 1111}5 {00000, 00001, 00010, 00011, 00100, 00101, 00110, 00111, 01000, 01001, 01010,01011, 01100, 01101, 01110, 01111, 10000, 10001, 10010, 10011, 10100, 10101,10110, 10111, 11000, 11001, 11010, 11011, 11100, 11101, 11110, 11111}2.2 Údaje, informácia a komunikáciaV bežnom živote sa pojem informácie používa vol’ne a v rozličných významoch; hovorísa o rozličných druhoch informácie (obrazová, knižná, zvuková, genetická, novinová) ainformácii sa pripisujú rozličné atribúty (overená, čerstvá, aktuálna, pochybná, škandalóznaa i.) V teórii kó<strong>do</strong>vania nás nebude zaujímat’ pôvod, význam ani hodnotenieinformácie; jediné čo pre nás bude podstatné je množstvo informácie. Budeme pracovat’s údajmi a správami, ktoré budú obsahovat’ nejakú informáciu, tieto údaje budemespracovávat’ a budeme sa snažit’ nájst’ pre zápis informácie, ktorú údaje obsahujú formuktorá je z hl’adiska spracovania údajov/informácie najvhodnejšia.V hovorovom jazyku sa pojmy informácia, správa a údaje chápu ako synonymá;ukážeme, že tieto pojmy majú odlišný význam. Ilustrujeme rozdiel medzi pojmami údajea informácia na príklade. Predstavme si1. binárny ret’azec 0000000000001010,2. výraz 0 12 (01) 2 ,3. slovné spojenie „dvanst’ núl, jednotka, nula, jednotka, nula“,4. 10,5. A,6. 000A.Vo všetkých prípa<strong>do</strong>ch ide o jednoznačné určenie tej istej binárnej postupnosti dĺžky16; v prvom prípade je popisom explicitné vymenovanie členov postupnosti, v druhom jejzápis pomocou regulárneho výrazu, v tret’om slovný popis vo štvrtom vyjadrenie číselnejhodnoty binárneho čísla v desiatkovej sústave (predpokladáme, že informácia o dĺžkeslova je známa), v piatom ide o hexadecimálny zápis toho istého čísla (s vynechanímpočiatočných núl) a napokon posledný výraz je hexadecimálny zápis binárneho ret’azca,vrátane prvých troch nulových hexadecimálnych číslic. Všetky popisy majú spoločnéto, že umožňujú v množine všetkých binárnych ret’azcov (v našom prípade dĺžky 16)


2.2. ÚDAJE, INFORMÁCIA A KOMUNIKÁCIA 9jednoznačne identifikovat’ daný ret’azec; t.j. obsahujú rovnakú informáciu. Údaje tedapredstavujú záznam informácie; informácia je obsahom údajov. Niekedy sa pojeminformácia spája aj so sémantikou (významom) údajov, ale toto spojenie chápanie informáciekomplikuje, pretože <strong>do</strong> pojmu informácia zavádza subjektívný aspekt (toho,kto údaje interpretuje a kontext). Preto sa budeme pridržiavat’ vyššie uvedeného chápaniainformácie ako obsahu údajov. 1 Pojem správa sa zvykne používat’ na označenieúdajov, ktoré majú istý formát a sú prenášané z jedného miesta na druhé. Okrem prenosuúdajov v priestore sa údaje často prenášajú aj v čase: zapíšu sa na nejaké médiuma po čase sa z neho čítajú. Pod komunikáciou budeme rozumiet’ činnost’ dvoch aleboviacerých entít (účastníkov komunikácie), ktorá pozostáva z prenosu údajov/správ odjedného účastníka (o<strong>do</strong>sielatel’a) k druhému/iným (príjemca/príjemcovia). Existuje mnohospôsobov komunikácie, ktoré závisia tak od použitých komunikačných prostriedkov(pošta, telefón, telegraf, televízia, rozhlas, a i.), typu údajov, ktoré sa pri komunikáciiprenášajú aj účelu komunikácie. Nebudeme ich rozoberat’, namiesto toho zavediemepomerne všeobecný model komunikačného systému, popíšeme úlohu jeho jednotlivýchsubsystémov a ukážeme, aké úlohy sa musia pri komunikácii riešit’. Uvedený modelpoužijeme tak na popis prenosu údajov v priestore, ako aj v čase.Na obrázku 2.1 je uvedený Shannonov model komunikačného systému. Hoci je tentomodel vel’mi všeobecný, hodí sa na popis mnohých komunikačných systémov a pre d’alšie(napríklad komunikačný systém so spätnou väzbou) môže Shannonov model poslúžit’ako základ, ktorý sa dá vhodne upravit’. Podrobnejší model komunikačného systému,odvodený zo Shannonovho modelu je uvedený na obrázku 2.2správasignálprijatýsignálsprávazdrojinformácie✲ vysielač ✲ kanál ✲ prijímač ✲ príjemca✻zdrojšumuObrázok 2.1: Shannonov model komunikačného systémuZdroj informácie/údajov. Aby sme sa nemuseli zaoberat’ tým, odkial’ údaje (informácia)pochádzajú, budeme predpokladat’, že existuje nejaký zdroj informácie (údajov), S(Source). Zdroju prislúcha nejaká abeceda, Σ S , ktorú budeme nazývat’ zdrojovou abece<strong>do</strong>u,alebo abece<strong>do</strong>u zdroja. Ďalej Σ S budeme predpokladat’, že zdroj S generuje postupnost’znakov x i , x i+1 , . . . ; x i+j ∈ Σ S ; napríklad tak že v diskrétnych časových okamihoch(taktoch) sa na výstupe zdroja budú objavovat’ symboly zo zdrojovej abecedy. Postupnost’znakov zdrojovej abecedy môžeme spracovávat’ po znakoch, alebo rozdelit’ na slovákonečnej dĺžky. Bez ujmy na všeobecnosti môžeme predpokladat’, že údaje, ktoré budeme1 Základné poznatky o meraní množstva informácie v údajoch sú uvedené v kapitole 16


10 KAPITOLA 2. ZÁKLADNÉ POJMY A OZNAČENIAspracovávat’, majú formu postupnosti slov 2 nad abece<strong>do</strong>u Σ S .Kóder K 1 – kó<strong>do</strong>vanie zdrojových údajov. Forma, v ktorej sú zapísané zdrojové údaje,nemusí byt’ vhodná pre d’ašie spracovanie, a preto je postupnost’ slov vytvorená zdrojompred d’alším spracovaním zakó<strong>do</strong>vaná. Toto kó<strong>do</strong>vanie sa nazýva kó<strong>do</strong>vanie zdrojovejinformácie, alebo kó<strong>do</strong>vanie zdroja a realizuje ho kóder K 1 . Výsledkom kó<strong>do</strong>vaniazdrojovej informácie je postupnost’ symbolov kó<strong>do</strong>vej ebecedy Σ C , ktorú budeme nazývat’správou. Ked’že pôvodnú informáciu ziskavame priamo zo zdroja, kó<strong>do</strong>vanie zdrojanemusí riešit’ ochranu údajov pred prípadnými chybami, ale plní inú úlohu—zaist’uje<strong>do</strong>siahnutie efektívnosti zápisu zdrojovej informácie. Výsledkom kó<strong>do</strong>vania zdrojovýchúdajov je (v ideálnom prípade) najkratšia správa nad kó<strong>do</strong>vou abece<strong>do</strong>u, na základektorej možno v plnom rozsahu zrekonštruovat’ zdrojové údaje v pôvodnej po<strong>do</strong>be. Požiadavkana efektívnost’ kó<strong>do</strong>vania správy sa dá vyjadrit’ tak, že vo výslednej (kó<strong>do</strong>vanej)správe sa l’ubovol’ná k-tica znakov kó<strong>do</strong>vej abecedy bude vyskytovat’ s rovnakou pravdepo<strong>do</strong>bnost’ou3 .príjemca ✛dekóderD 1✛ dekóderD 2✛ demodulátor✛ prijímač ✛pren osovýk análšum✲zdroj S ✲ kóder K ✲ 1 kóder K 2✲ modulátor ✲ vysielač ✲Obrázok 2.2: Zovšeobecnený model komunikačného systémuNa tomto mieste sa na chvíl’u zastavíme. Shannonov model komunikačného systémupredpokladá, že v ideálnom prípade sa príjemcovi podarí zrekonštruovat’ správu vpôvodnom tvare. Aj ked’ sa v reálnych systémoch používa kó<strong>do</strong>vanie zdroja, ktoré realizujetzv. bezstratovú kompresiu (data compaction), údaje generované zdrojom častokrátobsahujú informáciu, ktorú príjemca ne<strong>do</strong>káže využit’. Bezstratová kompresia takýchtoúdajov by viedla ku správam, ktoré by boli zbytočne rozsiahle. Ak <strong>do</strong>kážeme určit’, ktoráinformácia obsiahnutá v zdrojových údajoch je podstatná a ktorá nie, môžeme na kó<strong>do</strong>vaniezdrojových údajov použit’ efektívnejšie kó<strong>do</strong>vanie, založené na odfiltrovaní takredundancie, ako aj nepodstatnej informácie obsiahnutej v zdrojových údajoch. Takétokó<strong>do</strong>vanie zdroja, pri ktorom <strong>do</strong>chádza k istej strate informácie sa nazýva (kompresiaso stratou informácie, data compression). Príkla<strong>do</strong>m môže byt’ kó<strong>do</strong>vanie hudby,ktoré využíva skutočnost’, že údaje obsahujú informáciu ktorú príjemca ne<strong>do</strong>káže využit’(nepočutel’né zvuky); táto informácia sa pri kó<strong>do</strong>vaní zdroja jednoducho odfiltruje a tým2 v krajnom prípade slov dĺžky 1, teda znakov zdrojovej abecedy3 Zmyslom kó<strong>do</strong>vania zdroja je odstránit’ redundanciu (nadbytočnost’) pôvodného zápisu. Požiadavkana rovnakú pravdepo<strong>do</strong>bnost’ výskytu všetkých k-tic kó<strong>do</strong>vej abecedy znamená, že v kó<strong>do</strong>vanej správe užnebude možné objavit’ nejakú zákonitost’, ktorá by sa dala využit’ na d’alšie zefektívnenie zápisu.


2.2. ÚDAJE, INFORMÁCIA A KOMUNIKÁCIA 11zvýši efektívnost’ zápisu (porovnajte nejakú hu<strong>do</strong>bnú skladbu zapísanú na audio CDa zápis tej istej skladby vo formáte MP3, príp. iných). Na druhej strane mechanicképoužitie kompresie so stratou informácie nebude asi použitel’né pri spracovávaní exesúborov (hoci inteligentná revízia zdrojových textov tých istých programov by nepochybneodhalila možnosti optimalizácie textu.)Správa Kó<strong>do</strong>vanú správu rozdelíme na bloky vhodnej dĺžky k. (O výbere k budeme hovorit’neskôr.) Pripomíname, že ak bol kóder K 1 <strong>do</strong>statočne kvalitný a kó<strong>do</strong>vaná správa<strong>do</strong>statočne dlhá, všetky slová dĺžky k by sa v nej mali vyskytovat’ s rovnakými pravdepo<strong>do</strong>bnost’ami.Kóder K 2 Na rozdiel od kó<strong>do</strong>vania zdroja, kde nebolo treba rátat’ so šumom a úlohoukódera K 1 bolo re<strong>do</strong>kovat’ redundanciu zdrojových údajov, správu budeme čoskoroposielat’ cez komunikačný kanál, na ktorý pôsobí šum. Úlohou druhého kódera jetransformovat’ slová dĺžky k nad kó<strong>do</strong>vou abece<strong>do</strong>u Σ C na slová dĺžky kn (kvôli jednoduchostipredpokladajme, že nad tou istou kó<strong>do</strong>vou abece<strong>do</strong>u Σ C ) tak sa len mierne zvýšilaredundancia a príjemca bol schopný odhalit’/opravit’ chyby, ktoré vzniknú pri prenoseprenosovým kanálom. Najprv budeme uvažovat’ kóder bez pamäte. Tento kóder realizujeinjektívne zobrazenieENC : Σ k C → Σn C .Kódery bez pamäte sa používajú na kó<strong>do</strong>vanie pomocou blokových kó<strong>do</strong>v a vyznačujúsa tým, že nezohl’adňujú žiadne vzt’ahy medzi k-ticami vstupných údajov; to isté slovo(dĺžky k) sa zakaždým zobrazí na to isté slovo (dĺžky n). Existujú aj kódery s pamät’ou,ktoré pri kó<strong>do</strong>vaní znaku (zväčša kódujú znak po znaku) zohl’adňujú aj predchádzajúcesymboly. Tieto kódery sa používajú pri tzv. konvolučných kó<strong>do</strong>ch.Modulátor Správy sa prenášajú z jedného miesta na druhé pomocou fyzikálnych veličín,ktoré sa <strong>do</strong>kážu šírit’ cez vhodné prostredie. Fyzikálna reprezentácia správy sa nazývasignál. (My budeme pomocou jedného signálu reprezentovat’ menšie časti správy,napríklad slová, alebo znaky kó<strong>do</strong>vej abecedy.) Zariadenie, ktoré transformuje fyzikálnuveličinu tak, aby predstavovala príslušný signál, sa nazýva modulátor. Predstavmesi napríklad rádiovú vlnu so sínusovým priebehom a amplitú<strong>do</strong>u 1 a binárnu kó<strong>do</strong>vúabecedu Σ = {0, 1}. Symbolu 0 priradíme hodnotu −1 a symbolu 1 hodnotu +1. Postupnost’0, 0, 1, 1, 0, 1, 0, 1 bude reprezentovaná signálom, ktorého priebeh je uvedený naodrázku 2.3. Pre zaujímavost’ uvedieme aj hodnoty signálov reprezentujúcich jednotlivébity:−0.9479054106 −0.9450567393 0.9450567393 0.9479054110−0.9180252682 0.9222918778 −0.9222918783 0.9180252668Vysielač je d’alším prvkom komunikačného systému. Jeho úlohou je generovat’ signály<strong>do</strong>statočne silné na to, aby prekonali cestu k príjemcovi.Prenosový kanál Signály sa môžu šírit’ v rôznorodých prostrediach; napríklad kozmickýmpriestorom, po kovovom kábli, optickom vlákne a pod. Médium umožňujúce prenossignálov budeme nazývat’ prenosovým kanálom. Predpokladáme, že prenosový kanál jevystavený vplyvom okolitého prostredia, ktoré ovplyvňujú správy prenášané kanálom.Faktorov, ktoré môžu pôsobit’ na prenosový kanál je tak vel’a, že sa <strong>do</strong>st’ <strong>do</strong>bre nedá skúmat’vplyv jednotlivých faktorov, ale namiesto toho sa skúmajú dôsledky ich spoločného


12 KAPITOLA 2. ZÁKLADNÉ POJMY A OZNAČENIA1.210.80.60.40.2–3 –2 –1–0.2 0 1 x 2 3–0.4–0.6–0.8–1–1.2Obrázok 2.3: Signálpôsobenia. Rôzne rušivé faktory vplývajúce na prenosový kanál, budeme nazývat’ zdrojmišumu a výsle<strong>do</strong>k ich pôsobenia—šumom . Budeme predpokladat’, že šum má po<strong>do</strong>busignálov, ktoré ovplyvňujú signály prenášajúce správu (napríklad sa s nimi skladajú), vdôsledku čoho dôchádza k zmenám signálov, ktoré sa v prenášanej správe prejavujú akochyby troch základných typov:1. nahradenie jedného symbolu prenášanej správy iným symbolom (kó<strong>do</strong>vej abecedy);2. zmazaním symbolu (čo môžeme chápat’ tak, že symbol prenášanej správy je nahradenýsymbolom, ktorý nepatrí <strong>do</strong> kó<strong>do</strong>vej abecedy);3. výpadkom/<strong>do</strong>plnením nového symbolu (kó<strong>do</strong>vej abecedy) <strong>do</strong> prenášanej správy (poruchasynchronizácie).Šumový signál je zobrazený na obrázku 2.4V tejto knihe sa budeme zaoberat’ kódmi, ktoré umožnia riešit’ chyby prvého a druhéhodruhu; t.j. odhal’ovat’ a opravovat’ chyby. Poruchami synchronizácie sa nebudeme zaoberat’,čitatel’ovi odporúčameTO DOSignály prenášané prenosovým kanálom zachytáva prijímacia strana pomocou prijímača(napríklad anténa mobilného telefónu). Abstrahujeme od transformácií signálov,ktoré realizuje prijímač a predpokladáme, že prijaté signály vstupujú <strong>do</strong> demodulátora,ktorý transformuje signály na postupnost’ znakov kó<strong>do</strong>vej abecedy. Demodulátoruž v podstate robí prvú korekciu chýb. V dôsledku pôsobenia šumu na kanál prijatésignály nebudú mat’ zd’aleka ideálny priebeh, obr. 2.5. Postupnost’ 0, 0, 1, 1, 0, 1, 0, 1 je


2.2. ÚDAJE, INFORMÁCIA A KOMUNIKÁCIA 131.210.80.60.40.2–3 –2 –1 0–0.21 x 2 3–0.4–0.6reprezentovaná postupnost’ou hodnôt 4Obrázok 2.4: Šumbit pôvodný signál prijatý signál interpretácia„tvrdá“ „mäkká“0 −0.9479054106 0.1824649004 1 ?0 −0.9450567393 −0.2506249324 0 ?1 0.9450567393 0.4439007163 1 11 0.9479054110 0.5558633849 1 10 −0.9180252682 −0.5960788882 0 01 0.9222918778 1.195406403 1 10 −0.9222918783 −1.159436952 0 01 0.9180252668 0.7084777992 1 1Ani jedna z prijatých hodnôt (signálov) nepatrí <strong>do</strong> množiny {−1, 1}. Aby dekódermohol transformovat’ prijaté signály na znaky kó<strong>do</strong>vej abecedy, musí použit’ pružnejšiepravidlo; napríklad, signály s nezápornými hodnotami budú reprezentovat’ 1 a ostatnésignály budú reprezentovat’ kó<strong>do</strong>vý znak 0. Pri použití tohto pravidla sa značne deformovanésignály transformujú na postupnost’ 1, 0, 1, 1, 0, 1, 0, 1. Demodulátor môže byt’navrhnutý tak, aby zakaždým prijal rozhodnutie o interpretácii signálu (hard quantization).To by však mohlo viest’ k nesprávnej interpretácii signálov blízkych k 0 demodulátoroma problém (identifikáciu a opravenie chyby) by musel riešit’ dekóder. Napriektomu, že pri „tvrdej“ transformácii spojitého signálu na diskrétne hodnoty sa <strong>do</strong>sahujenajvyššia pravdepo<strong>do</strong>bnost’ správneho priradenia, často sa používa alternatívne riešenia,tzv. soft quantization. V krajnom prípade demodulátor neinterpretuje žiadne signályako kó<strong>do</strong>vé znaky a posunie dekóderu vypočítané číselné hodnoty signálov na jed-4 tieto predstavujú hodnoty signálu v strede príslušných intervalov.


14 KAPITOLA 2. ZÁKLADNÉ POJMY A OZNAČENIA1.510.5–3 –2 –1 1 x 2 3–0.5–1–1.5Obrázok 2.5: Prijatý signálnotlivých časových intervaloch. Tým sa prakticky celé spracovanie prijatej správy presuniena dekóder, čo však zvyšuje nároky na jeho výkonnost’ (zložitost’ a zrejme aj cenu).Rozumné je preto kompromisné riešenie, kedy demodulátor predspracuje prijaté signálynapríklad tak, že jednoznačne interpretuje tie signály, ktorých hodnoty <strong>do</strong>statočne <strong>do</strong>brezodpovedajú hodnotám reprezentujúcim jednotlivé znaky kó<strong>do</strong>vej abecedy, problematickéhodnoty signálu bude reprezentovat’ nejakým novým symbolom a tieto výsledkyo<strong>do</strong>vzdá dekóderu. Presnejšie, nech s k označuje priemernú hodnotu signálu v takte k,a a k je hodnota symbolu kó<strong>do</strong>vej abecedy zodpovedajúca signálu s k . Potom pravidlo prebinárnu kó<strong>do</strong>vú abecedu by mohlo vyzerat’ napríklad takto⎧⎪⎨ 1 s k ≥ 0.3,a k = 0 s k ≤ −0.3,⎪⎩? −0.3 < s k < 0.3.V našom prípade by demodulátor postupnost’ prijatých signálov interpretoval ako postupnost’?, ?, 1, 1, 0, 1, 0, 1. Ak počas prenosu <strong>do</strong>šlo ku chybe (nahradenie jedného znakukó<strong>do</strong>vého slova iným), informácia, ktorú <strong>do</strong>stal dekóder od demodulátora by mu umožnilaodhadnút’ najpravdepo<strong>do</strong>bnejšie miesta, na ktorých mohlo dôjst’ ku chybe (v našompríklade sú po<strong>do</strong>zrivé prvé dva symboly), čím by sa (ako uvidíme neskôr) značne zjednodušilodekó<strong>do</strong>vanie.Dekódery D 2 a D 1 Hlavnou úlohou dekódera D 2 je čo najlepšie rekonštruovat’ odvysielanúsprávu. Predpokladajme, že poznáme všetky kó<strong>do</strong>vé slová (budeme ich označovat’ akou i ), všetky možné prijaté slová v j a podmienené pravdepo<strong>do</strong>bnosti p i,j = p(v j |u i ). Pravdepo<strong>do</strong>bnost’p i,j vyjadruje pravdepo<strong>do</strong>bnost’ toho, že po odvysielaní kó<strong>do</strong>vého slova u i boloprijaté (nejaké) slovo v j . Zákla<strong>do</strong>m pre rozho<strong>do</strong>vanie dekódera D 2 je nasledujúci princípdekó<strong>do</strong>vania na základe maximálnej pravdepo<strong>do</strong>bnosti (Maximum Likelihood Decoding,MLD):


2.2. ÚDAJE, INFORMÁCIA A KOMUNIKÁCIA 15Prijaté slovo v j dekódujeme na také kó<strong>do</strong>vé slovo u i , pre ktoré je podmienenápravdepo<strong>do</strong>bnost’ p(v j |u i ) maximálna.Dekó<strong>do</strong>vanie na základe maximálnej pravdepo<strong>do</strong>bnosti vždy dáva výsle<strong>do</strong>k (kó<strong>do</strong>véslovo). Takéto dekó<strong>do</strong>vanie sa nazýva úplné dekó<strong>do</strong>vanie . Ako sa dá očakávat’, okremúplného dekó<strong>do</strong>vania bude existovat’ aj nejaké alternatívne riešenie, ktoré budeme nazývat’neúplným dekó<strong>do</strong>vaním. Pri neúplnom dekó<strong>do</strong>vaní môžu nastat’ dva prípady:1. dekóder dekóduje prijaté slovo na kó<strong>do</strong>vé slovo,2. dekóder namiesto kó<strong>do</strong>vého slova vypíše nejaký <strong>do</strong>hodnutý symbol (napríklad ∞).Druhý prípad nastane vtedy, ked’ dekóder našiel v prijatom slove chybu, ale nebolju schopný opravit’. Takúto situáciu nemôžeme vylúčit’, pretože dekóder nie je schopnýopravit’ slová, ktoré boli výrazne modifikované. V takom prípade je lepšie požiadat’o opätovné zaslanie informácie, ako sa pokúšat’ opravit’ prijaté slovo a dekó<strong>do</strong>vat’ho nesprávne. Ani takýto prístup však nezaručuje, že dekó<strong>do</strong>vané slovo sa zhoduje sodvysielaným kó<strong>do</strong>vým slovom. Ked’že dekóder rozhoduje na základe syntaxe (napr. zoznamukó<strong>do</strong>vých slov) a nie sémantiky prijatých správ, ak počas prenosu kó<strong>do</strong>vého slovanastala chyba, ktorá ho transformovala na iné kó<strong>do</strong>vé slovo, dekóder takúto chybune<strong>do</strong>káže identifikovat’. Preto dekóder postavený na princípe MLD bude mat’ síce najvyššiupravdepo<strong>do</strong>bnost’ správneho dekó<strong>do</strong>vania, ale ak sa pomýli, tak je dekó<strong>do</strong>vanáspráva zat’ažená chybou, ktorú je t’ažko odhalit’. Preto väčšina dekóderov, ktorými sabudeme zaoberat’, vychádza z trocha slabšieho princípu, nazývaného IMLD (IncompleteMaximum Likelihood Decoding); neúplné dekó<strong>do</strong>vanie na základe maximálnej pravdepo<strong>do</strong>bnosti:Prijaté slovo v j dekódujeme bud’ na také kó<strong>do</strong>vé slovo u i , pre ktoré je podmienenápravdepo<strong>do</strong>bnost’ p(v j |u i ) maximálna, alebo na symbol ∞; bola odhalenáchyba.Napriek použitiu samoopravných kó<strong>do</strong>v ne<strong>do</strong>kážeme garantovat’ správne dekó<strong>do</strong>vanieprijatej správy. Budeme rozlišovat’ dva problematické prípady: chyba dekódera (decodererror) nastáva vtedy, ked’ dekóder nesprávne dekó<strong>do</strong>val prijaté slovo; t.j. interpretovalho ako iné kó<strong>do</strong>vé slovo, ako bolo to, ktoré bolo odvysielané. Zlyhanie dekódera zahŕňatak chybu dekódera, ako aj ten prípad, ked’ dekóder odhalil chybu ale nebol ju schopnýopravit’.Dekóder D 1 transformuje dekó<strong>do</strong>vanú správu <strong>do</strong> po<strong>do</strong>by, v ktorej ju môže d’alej spracovávat’príjemca. Dobrým príkla<strong>do</strong>m je dekó<strong>do</strong>vanie binárne zapísanej zvukovej informácie(hudby) <strong>do</strong> počúvatel’nej po<strong>do</strong>by, alebo dekó<strong>do</strong>vanie digitálne zapísaných filmovna DVD.Všimneme si, že hoci sme v modeli prenosového kanála hovorili o prenose správ, možnotento model priamo použit’ aj na popis uchovávania a opätovného čítania údajov. Zaznamenávanieúdajov a ich opätovné čítanie možno chápat’ ako prenos informácie v čase,zatial’ čo pri prenose správ sa jedná o prenos informácie v priestore. Jeden podstatný


16 KAPITOLA 2. ZÁKLADNÉ POJMY A OZNAČENIArozdiel medzi prenosom údajov v čase a priestore však je. Ak pri prenose informácie vpriestore dôjde k odhalitel’nej ale neopravitel’nej chybe, príjemca má možnost’ požiadat’o<strong>do</strong>sielatel’a o opätovné zaslatie správy. Ak však dôjde k poškodeniu údajov zapísanýchna nejakom pamät’ovom médiu, opätovné čítanie neumožní prečítat’ správne údaje. Oto dôležitejšie je pri uchovávaní údajov na pamät’ových médiách ochrana ich integritynapríklad pomocou samoopravných kó<strong>do</strong>v. Z hl’adiska úloh, ktoré rieši teória kó<strong>do</strong>vanianie je rozdiel informácie v čase a priestore podstatný, a preto sa v d’alšom sa sústredímena problémy vznikajúcimi pri prenose informácie v priestore.2.3 Kó<strong>do</strong>vanieVrát’me sa k modelu komunikačného systému z predchádzajúcej časti. Zostáva vyriešit’problém, ako zapisovat’ správy, ktoré generuje zdroj S v po<strong>do</strong>be postupnosti znakov nadabece<strong>do</strong>u Σ S pomocou kó<strong>do</strong>vej abecedy Σ C . Existuje viacero riešení tohto problému. Začnemetým najjednoduchším—kó<strong>do</strong>vaním jednotlivých znakov zdrojovej abecedy. NechΣ S = {s 0 , . . . , s m−1 } je zdrojová abeceda a Σ C = {b 0 , . . . , b r } je kó<strong>do</strong>vá abeceda a nech súv 0 , . . . , v m−1 navzájom rôzne slová nad kó<strong>do</strong>vou abece<strong>do</strong>u Σ C . Potom zobrazenies 0 → v 0s 1 → v 1.s m−1 → v m−1budeme nazývat’ kó<strong>do</strong>vaním symbolov zdrojovej abecedy slovami nad abece<strong>do</strong>u Σ C . MnožinaV = {v 0 , . . . , v m−1 } sa nazýva kód a prvky množiny V sa nazývajú kó<strong>do</strong>vými slovami.Všimneme si, že kó<strong>do</strong>vanie po písmenách je totálnym (všade definovaným) zobrazením aked’že zdroj S generuje len postupnosti znakov nad abece<strong>do</strong>u Σ S , každá správa vytvorenázdrojom S sa dá vyjadrit’ pomocou postupnosti kó<strong>do</strong>vých slov kódu V. Problém všakvzniká pri dekó<strong>do</strong>vaní kó<strong>do</strong>vaných správ. Predpokladajme, že je daná nejaká správas i1 , . . . , s in nad zdrojovou abece<strong>do</strong>u a jej prislúchajúca kó<strong>do</strong>vaná správa vyjadrená akopostupnost’ kó<strong>do</strong>vých slov v i1 , . . . , v in . Postupnost’ v i1 , . . . , v in sa však prenáša po znakocha pred dekó<strong>do</strong>vaném je potrebné ju rozdelit’ na kó<strong>do</strong>vé slová. Ak sa to podarí, nie je problémdekó<strong>do</strong>vat’ jednotlivé kó<strong>do</strong>vé slová a získat’ pôvodnú správu s i1 , . . . , s in . Nasledujúcipríklad ukazuje, že existujú také kódy, pre ktoré sa nie každá postupnost’ kó<strong>do</strong>vých symbolovdá jednoznačne rozdelit’ na kó<strong>do</strong>vé slová.Príklad. Abeceda zdroja Σ S = {0, 1, 2, 3} pozostáva zo štyroch symbolov (prvých štyrochdesiatkových číslic) a kó<strong>do</strong>vá abeceda je binárna; Σ C = {0, 1}. Kó<strong>do</strong>vanie prirad’uje desiatkovejčíslici jej binárny zápis:0 → 0 1 → 12 → 10 3 → 11


2.3. KÓDOVANIE 17Uvažujme napr. binárnu postupnost’ 001011. Táto postupnost’ sa dá interpretovat’ viacerýmispôsobmi, a síce ako binárny zápis desiatkových postupností 001011, 00103, 00211,0023.Jednoznačnost’ dekó<strong>do</strong>vania je prirodzenou požiadavkou, ktorá sa kladie na kó<strong>do</strong>vanie.Nutným predpokla<strong>do</strong>m jednoznačnosti dekó<strong>do</strong>vania je tzv. rozdelitel’nost’ kódu.Definícia 2.3.1. Kód V = {v 0 , . . . , v m−1 } nad abece<strong>do</strong>u Σ C sa nazýva rozdelitel’ným, akpre l’ubovol’nú rovnost’ postupností kó<strong>do</strong>vých slovplatí l = k, i 1 = j 1 , . . . , i k = j k .v i1 . . . v ik = v j1 . . . v jlČo vlastne vyjadruje rozdelitel’nost’ kódu? Ak je kód V rozdelitel’ný, znamená to, žel’ubovol’nú postupnost’ nad Σ ∗ Cbud’ môžeme rozdelit’ na postupnost’ kó<strong>do</strong>vých slov jednoznačnýmspôsobom, alebo ju nemôžeme rozdelit’ vôbec. Pre rozdelitel’ný kód nemôženastat’ taká situácia, kedy by sme nejakú postupnost’ kó<strong>do</strong>vých symbolov mohli rozdelit’na postupnost’ kó<strong>do</strong>vých slov dvoma rozličnými spôsobmi. Jednoduchým riešením problémurozdelitel’nosti sú blokové alebo rovnomerné kódy. Blokový kód sa vyznačuje tým,že všetky jeho kó<strong>do</strong>vé slová majú rovnakú dĺžku.Príklad. Rozšírime predchádzajúci príklad a uvedieme dva spôsoby binárneho kó<strong>do</strong>vaniadesiatkových číslic—rovnomerné a nerovnomerné:desiatkový binárny blokovýzápis zápis kód0 0 00001 1 00012 10 00103 11 00114 100 01005 101 01016 110 01107 111 01118 1000 10009 1001 1001Dekó<strong>do</strong>vanie postupnosti znakov kó<strong>do</strong>vej abecedy bude v prípade blokového kódu relatívnejednoduché: postupnost’ sa najprv rozdelí na slová dĺžky rovnej dĺžke bloku apotom sa (napríklad na základe tabul’ky) jednotlivým kó<strong>do</strong>vým slovám priradia symbolyzdrojovej abecedy.Príklad. Postupnost’ 100001001100100100110010 rozdelíme na kó<strong>do</strong>vé slová:1000 0100 1100 1001 0011 0010 a dekódujeme pomocou tabul’ky z predchádzjúceho príkladu:843932. Všimneme si, že existujú aj binárne postupnosti, ktoré sa nedajú dekó<strong>do</strong>vat’,nakol’ko slová 1111, 1110, 1101, 1100, 1011, 1010 nie sú kó<strong>do</strong>vé slová.S rozdelitel’nost’ou vznikajú problémy pri použití niektorých kó<strong>do</strong>v, ktoré obsahujúslová nerovnakej dĺžky; tzv. nerovnomerných kó<strong>do</strong>ch. Postupnost’ kó<strong>do</strong>vých symbolov


18 KAPITOLA 2. ZÁKLADNÉ POJMY A OZNAČENIAv tomto prípade nemožno mechanicky rozdelit’ na bloky rovnakej dĺžky, ale je potrebnéurčit’ kó<strong>do</strong>vé slová. To sa v prípade nerovnomerných kó<strong>do</strong>v vo všeobecnosti nemusídat’ spravit’ (alebo nedá spravit’ jednoznačne). Ale aj medzi nerovnomernými kódmi existujúrozdelitel’né kódy. Nakol’ko tieto kódy umožňujú zapisovat’ informáciu častokrátúspornejšie ako blokové kódy, používajú sa najmä na (bezstratovú) kompresiu údajov.Podrobnejšie sa nimi budeme zaoberat’ v nasledujúcich kapitolách. Vrát’me sa ku kó<strong>do</strong>vaniuzdrojovej informácie. Zatial’ sme kó<strong>do</strong>vali jednotlivé znaky kó<strong>do</strong>vej abecedy,teraz pojem kó<strong>do</strong>vania znakov zdrojovej abecedy zovšeobecníme.Definícia 2.3.2. Nech je Σ S zdrojová abeceda, nech je množina U = {u 0 , . . . , u M } nejakýchslov nad zdrojovou abece<strong>do</strong>u a nech sú v 0 , . . . , v M slová nad kó<strong>do</strong>vou abece<strong>do</strong>u Σ C . Zobrazenieu 0 → v 0u 1 → v 1.u M → v Mbudeme nazývat’ kó<strong>do</strong>vaním množiny U kó<strong>do</strong>m V.Všimneme si, že táto definícia kó<strong>do</strong>vania zahŕňa aj kó<strong>do</strong>vanie znakov zdrojovej abecedy;stačí položit’ U = Σ S .Príklad. Nech je U rovná množine všetkých podmnožín množiny prirodzených čísel{0, . . . .99}, V = {0, 1} 100 je množina binárnych vektorov dĺžky 100. Podmnožine {i 0, . . . , i k }z U je priradené slovo v 5 j , ktoré má jednotkové hodnoty na pozíciách i 0 , . . . , i k a nuly naostatných pozíciách. Je zrejmé, že V kóduje množinu U a že toto kó<strong>do</strong>vanie je bijekciou.Poznajúc mohutnost’ kódu V vieme určit’ aj mohutnost’ množiny U: |U| = 2 100 .5 tzv. charakteristický vektor


Čast’ IKó<strong>do</strong>vanie zdroja19


Kapitola 3Nerovnomerné kódyVhodný kód na kó<strong>do</strong>vanie daného zdroja informácie môžeme spravidla vybrat’ z viacerýchkandidátov. To ktorý z nich nakoniec použijeme, závisí od účelu ktorý chcemekó<strong>do</strong>vaním zdroja <strong>do</strong>siahnut’. Ak sme už spomenuli v predchádzajúcej kapitole, jednouz prirodzených požiadaviek na kó<strong>do</strong>vanie zdroja je, aby zakó<strong>do</strong>vaná správa bola čo najkratšia(a zároveň jednoznačne dekó<strong>do</strong>vatel’ná); t.j. aby sa pri kó<strong>do</strong>vaní nepoužívali zbytočnedlhé kó<strong>do</strong>vé slová; resp. aby kó<strong>do</strong>vanie bolo efektívne. 1 Ak má množina (znakovalebo slov) ktorú potrebujeme kó<strong>do</strong>vat’ mohutnost’ n, tak na rozlíšenie prvkov kó<strong>do</strong>vanejmnožiny budeme potrebovat’ blokový kód so slovami dĺžky aspoň ⌈log m n⌉, kde m jemohutnost’ kó<strong>do</strong>vej abecedy. V prípade, ked’ zdroj informácie generuje všetky znakypribližne rovnako často (a nie sú známe iné využitel’né vzt’ahy medzi znakmi/slovamiz<strong>do</strong>jových správ) 2 , je celkom efektívne kó<strong>do</strong>vanie z<strong>do</strong>ja pomocou blokových kó<strong>do</strong>v. Inásituácia však nastane, ked’ sa niektoré zo symbolov zdrojovej abecedy (slov nad zdrojovouabece<strong>do</strong>u) vyskytujú v správach výrazne častejšie ako iné; t.j. ak sa množstvo informácieobsiahnuté v jednotlivých zdrojových symboloch (slovách nad zdrojovou abece<strong>do</strong>u)výrazne odlišuje. V takomto prípade by kó<strong>do</strong>vanie správ pomocou nerovnomerných kó<strong>do</strong>v,v ktorých by boli častejšie sa vyskytujúcim symbolom (slovám) priradené kratšiekó<strong>do</strong>vé slová efektívnejšie 3 , ako použitie blokových (rovnomerných) kó<strong>do</strong>v.Základným predpokla<strong>do</strong>m praktickej použitel’nosti nerovnomerných kó<strong>do</strong>v je rozdelitel’nost’.V tejto kapitole sa budeme zaoberat’ rozdelitel’nými nerovnomernými kódami. Najprvzavedieme vel’mi užitočnú triedu efektívne dekó<strong>do</strong>vatel’ných nerovnomerných kó<strong>do</strong>v, tzv.prefixové kódy. Potom <strong>do</strong>kážeme Kraftovu-McMillanovu nerovnost’, ktorá predstavujekritérium pre existenciu (nerovnomerného) rozdelitel’ného kódu s danými dĺžkami kó<strong>do</strong>výchslov. Nakoniec zavedieme pojem ceny kódu, skonštruujeme <strong>do</strong>lný odhad ceny kódua budeme sa zaoberat’ konštrukciami optimálnych a kvázioptimálnych kó<strong>do</strong>v. Kvôlizjednodušeniu výkladu budeme v priebehu tejto kapitoly predpokladat’, že kó<strong>do</strong>vá abecedaje binárna a ak nebude explicitne povedané inak, budeme kó<strong>do</strong>vat’ znaky zdrojovejabecedy; t.j. správy vytvorené zdrojom informácie budeme kó<strong>do</strong>vat’ po znakoch.1 Zatial’ vystačíme s intuitívnym chápaním efektívnosti kó<strong>do</strong>vania, neskôr ho upresníme pomocou pojmuceny kódu.2 jednotlivé zdrojové symboly obsahujú približne rovnaké množstvo informácie3 pre m-prvkovú kó<strong>do</strong>vú abecedu a n prvkovú kó<strong>do</strong>vanú množinu bude priemerný počet znakov kó<strong>do</strong>vejabecedy potrebný na zakó<strong>do</strong>vanie jedného prvku kó<strong>do</strong>vanej množiny nižší ako ⌈log m n⌉21


22 KAPITOLA 3. NEROVNOMERNÉ KÓDY3.1 Rozdelitel’né kódy3.1.1 Prefixové kódyŠtúdium nerovnomerných rozdelitel’ných kó<strong>do</strong>v začneme skúmaním základných vlastnostíprefixových kó<strong>do</strong>v. Prefixové kódy totiž predstavujú rozsiahlu triedu nerovnomernýchkó<strong>do</strong>v s <strong>do</strong>brými vlastnost’ami (vyznačujú sa najmä rozdelitel’nost’ou a jednoduchost’oudekó<strong>do</strong>vania), ktoré budeme používat’ priamo na kó<strong>do</strong>vanie zdrojových údajov, ale aj nakonštrukciu iných kó<strong>do</strong>v a pri skúmaní parametrov nerovnomerných kó<strong>do</strong>v. Definujemeprefixový kód formálne.Definícia 3.1.1. Kód V = {v 0 , . . . , v m−1 } sa nazýva prefixovým kó<strong>do</strong>m, ak pre l’ubovol’név i , v j ∈ V, i ≠ j; v i nie je prefixom slova v j .Prefixový kód sa teda vyznačuje tým, že žiadne jeho slovo nemôže byt’ počiatočným podslovominého kó<strong>do</strong>vého slova. Kód z príkladu 2.3 nebol prefixový; kó<strong>do</strong>vé slovo 1 boloprefixom kó<strong>do</strong>vého slova 10. „Prefixovost’“ kódu je taká silná vlastnost’, že z nej vyplývarozdelitel’nost’ kódu; ináč povedané, prefixovost’ je postačujúcou podmienkou prerozdelitel’nost’ kódu. Sformulujeme a <strong>do</strong>kážeme toto tvrdenie formálne.Veta 3.1.1. Nech je V = {v 0 , . . . , v m−1 } (binárny) prefixový kód, potom je V (binárny)rozdelitel’ný kód.Dôkaz. Predpokladajme, že V je prefixový, ale nie je rozdelitel’ný kód. Potom existujeaspoň jedna binárna postupnost’, ktorá je rozdelitel’ná na postupnost’ kó<strong>do</strong>vých slov aspoňdvoma rozličnými spôsobmi. Vyberieme zo všetkých takých binárnych postupnostípostupnost’ β s minimálnou dĺžkou. Pre postupnost’ β teda platí :v i1 . . . v ik = v j1 . . . v jl .Z toho, že postupnost’ β má minimálnu dĺžku vyplýva, že v i 1 ≠ v j1 . V opačnom prípadeby bolo totiž možné slovo v i1 z postupnosti β vynechat’ a <strong>do</strong>stali by sme kratšiu binárnupostupnost’, pre ktorú by platilo:v i2 . . . v ik = v j2 . . . v jl .To je však v spore s predpokla<strong>do</strong>m o minimálnej dĺžke postupnosti β. Ak však v i 1 ≠ v j1 ,potom bud’ slovo v i1 je prefixom slova v j1 alebo slovo v j1 je prefixom slova v i1 . To je zasa vspore s predpokla<strong>do</strong>m o tom, že kód V je prefixový. To znamená, že postupnost’ kó<strong>do</strong>výchsymbolov, ktorá sa dá rozdelit’ na postupnost’ kó<strong>do</strong>vých slov aspoň dvoma rôznymi spôsobminemôže existovat’, a teda kód V je rozdelitel’ný.Tvrdenie sme síce <strong>do</strong>kázali pre binárny prípad, ale platí všeobecne pre l’ubovol’núkó<strong>do</strong>vú abecedu, ktorá obsahuje aspoň dva symboly. Prefixovost’ teda postačuje na to,aby bol kód rozdelitel’ný; prirodzenou otázkou je, či je prefixovost’ zároveň nutným predpokla<strong>do</strong>mrozdelitel’nosti kódu, alebo ináč povedané, či existujú aj iné rozdelitel’né kódy


3.1. ROZDELITEL’NÉ KÓDY 23okrem prefixových. Ukazuje sa, že nie. Uvedieme príklad rozdelitel’ného kódu, ktorý nieje prefixový.Príklad. Kód V = {0, 01, 11} síce nie je prefixový, ale napriek tomu to je rozdelitel’ný kód.Kód z predchádzajúceho príkladu je tzv. sufixový kód, ktorý sa vyznačuje tým, že žiadnekó<strong>do</strong>vé slovo nie je sufixom iného kó<strong>do</strong>vého slova. Vytvorili sme ho tak, že sme „otočili“slová prefixového kódu {0, 10, 11}. Postupnost’ kó<strong>do</strong>vých symbolov správy kó<strong>do</strong>vanej pomocousufuxového kódu budeme rozdel’ovat’ na kó<strong>do</strong>vé slová „odzadu“; t.j. až vtedy, ked’máme k dispozícii celú kó<strong>do</strong>vanú správu. Príkla<strong>do</strong>m takejto postupnosti, ktorá sa nedározdelit’ na postupnost’ kó<strong>do</strong>vých slov, kým sa ne<strong>do</strong>číta <strong>do</strong> konca, je postupnost’:0111 . . . 1Ak táto postupnost’ obsahuje párny počet jednotiek (napr. 2k), dá sa rozdelit’ nasle<strong>do</strong>vne:0(11) k ; ak obsahuje nepárny počet jednotiek (2k + 1), tak sa rozdelí na kó<strong>do</strong>vé slovánasle<strong>do</strong>vne: 01(11) k .TO DO: silne rozdelitel’né kódy3.1.2 Kraftova - McMillanova nerovnost’Aby sme získali čo najkratší zápis správy, snažíme sa na kó<strong>do</strong>vanie používat’ kódy s krátkymikó<strong>do</strong>vými slovami. Ak je mohutnost’ abecedy zdroja menšia alebo rovná mohutnostikó<strong>do</strong>vej abecedy, tak potom možno znaky zdrojovej zbecedy kó<strong>do</strong>vat’ slovami dĺžky 1(znakmi kó<strong>do</strong>vej abecedy). V opačnom prípade (a tých je prevažná väčšina) budemepotrebovat’ použit’ kód s väčšími dĺžkami kó<strong>do</strong>vých slov. Je zrejmé, že si dĺžky kó<strong>do</strong>výchslov nemôžeme volit’ l’ubovol’ne; ked’že existujú len dve binárne slová dĺžky 1 (0 a 1)a štyri binárne slová dĺžky 2 (00,01,10,11) binárne kódy s tromi slovami dĺžky 1 alebopiatimi slovami dĺžky 2 zrejme nemôžu existovat’. Ale existuje napríklad binárny kódso štyrmi kó<strong>do</strong>vými slovami dĺžok 1, 2, 2, 2; resp. existuje rozdelitel’ný kód nad abece<strong>do</strong>umohutnosti q ≥ 2 s dĺžkami kó<strong>do</strong>vých slov l i = l(v i ); i = 0, . . . , m − 1? Na túto otázkudáva odpoved’ veta 3.1.2, ktorú vyslovíme a <strong>do</strong>kážeme v tejto časti. Kvôli zjednodušeniuvýkladu budeme v d’alšom predpokladat’, že kó<strong>do</strong>vá abeceda je binárna a že zdrojováabeceda Σ S obsahuje aspoň dva symboly, t.j. m ≥ 2.Veta 3.1.2 (Kraftova-McMillanova nerovnost’). Nech sú l 0 , . . . , l m−1 l’ubovol’né nenulovéprirodzené čísla. Potom rozdelitel’ný kód V = {v 0 , . . . , v m−1 } s dĺžkami kó<strong>do</strong>vých slovl i = l(v i ); i = 0, . . . , m − 1 existuje práve vtedy, ak platí nasledujúca nerovnost’m−1∑i=02 −l i≤ 1. (3.1)


24 KAPITOLA 3. NEROVNOMERNÉ KÓDYDôkaz. Najprv <strong>do</strong>kážeme, že podmienka je nutná. Nech je V = {v 0 , . . . , v m−1 } l’ubovol’-ný kód. Priradíme mu generujúcu funkciu (enumerátor dĺžok kó<strong>do</strong>vých slov) definovanúnasledujúcim spôsobom:h V (x) =m−1∑i=0x −l(v i) .Zavedieme teraz n-násobné zret’azenie (rozšírenie) kódu V;V n = {w i ; w i = v i1 . . . v in , v ij ∈ V, j = 1, . . . , n}Bude nás zaujímat’, aký je vzt’ah medzi vytvárajúcimi funkciami kódu V a jeho rozšírenia,V n . Kvôli lep3iemo pochopeniu si tento problém najprv ilustrujeme na jednoduchompríklade.Príklad. Uvažujme kód V = {0, 10, 11}. Jeho vytvárajúca funkcia jeh V (x) = x −1 + x −2 + x −2 = x −1 + 2x −2 .Dvojnásobným zret’azaním kódu V <strong>do</strong>stávame kódV 2 = {00, 010, 011, 100, 1010, 1011, 110, 1110, 1111}s enumerátoromh V 2(x) = x −2 + 4x −3 + 4x −4 = (x −1 + 2x −2 ) 2 .Pokračovanie dôkazu. To, čo sme videli na príklade, platí aj vo všeobecnosti a dá sa<strong>do</strong>kázat’ matematickou indukciou; t.j.h V n(x) =( m−1n∑x i)) −l(v . (3.2)i=0Predpokladajme teraz, že V = {v 0 , . . . , v m−1 } je rozdelitel’ný kód s dĺžkami kó<strong>do</strong>výchslov l i = l(v i ), i = 0, . . . , m − 1. Symbolom M i označíme počet slov dĺžky i v rozšírenomkóde V n . a pomocou hodnôt M i zapíšeme enumerátor kódu V n . Označíme maximálnudĺžku slova v kóde V symbolom l max. Potom dĺžka l’ubovol’ného slova kódu Vn nepresiahnen·l max (v kóde aspoň jedno slovo takej dĺžky existuje, a je to slovo, ktoré sme <strong>do</strong>stalin-násobným zret’azením slova maximálnej dĺžky kódu V.) To znamená, že M i = 0 prei > n · l max a generujúcu funkciu kódu V n môžeme vyjadrit’ nasle<strong>do</strong>vneh V n(x) =n·l∑ maxDosadíme v (3.3) namiesto premennej x hodnotu 2 a <strong>do</strong>stávame:i=0M i x −i . (3.3)


3.1. ROZDELITEL’NÉ KÓDY 25h V n(2) =n·l∑ maxi=12 −i M i . (3.4)Všimneme si, že suma v (3.4) môže obsahovat’ nulové členy; ak totiž V neobsahuje slovonulovej dĺžky ε, tak každé slovo v kóde Vn bude mat’ dĺžku minimálne n · l min, kde l min jeminimálna dĺžka kó<strong>do</strong>vého slova kódu V. Potom M 1 = M 2 = · · · = M n·lmin −1 = 0. Po<strong>do</strong>bne,ak by kód V obsahoval len slová párnej dĺžky, tak ani kód Vn nemôže obsahovat’ slovánepárnej dĺžky. Využijeme teraz skutočnost’, že kód V je rozdelitel’ný. Z toho vyplýva, ževšetky slová kódu V n sú rôzne, a ked’že V n je binárny kód, znamená to, že M i ≤ 2 i . Vopačnom prípade by sa aspoň jedna binárna postupnost’ dĺžky i musela dat’ poskladat’ zoslov kódu V rôznymi spôsobmi, čo to je v spore s predpokla<strong>do</strong>m o rozdelitel’nosti kódu V.Na druhej strane niektoré binárne postupnosti sa nemusia dat’ poskladat’ zo slov kóduV a v tomto prípade M i < 2 i . Dosadíme horný odhad hodnoty M i <strong>do</strong> vzt’ahu (3.4) a pojednoduchých úpravách <strong>do</strong>stávame:h V n(2) =n·l∑ maxi=12 −i M i ≤n·l∑ maxNa druhej strane, zo vzt’ahov (3.2), (3.5) vyplývai=12 −i 2 i = n · l max . (3.5)h V n(2) =Ale nerovnost’ (3.6) platí pre l’ubovol’né n. Ak by teda( m−1n∑2 i)) −l(v ≤ n · l max . (3.6)i=0m−1∑i=02 −l(v i) = a > 1,tak by existovalo také n 0 , že pre všetky n > n 0 bya n > n · l max ,pretože exponenciálna funkcia so zákla<strong>do</strong>m a > 1 rastie rýchlejšie ako polynomická. Tovšak je v spore so vzt’ahom (3.6), a teda platím−1∑i=02 −l(v i) ≤ 1.Dostatočnost’. Predpokladajme, že l 0 ≤ l 1 · · · < l m−1 ; dĺžky kó<strong>do</strong>vých slov sú usporiadanévzostupne, a že platí Kraftova-McMillanova nerovnost’. Ukážeme, že je možnézostrojit’ rozdelitel’ný kód s dĺžkami kó<strong>do</strong>vých slov l 0, . . . , l m−1 .1. konštrukcia [1]. Použijeme matematickú indukciu.1. Vyberieme l’ubovol’né binárne slovo dĺžky l 0 ako kó<strong>do</strong>vé slovo v 0 .


26 KAPITOLA 3. NEROVNOMERNÉ KÓDY2. Predpokladáme, že sme už vybrali slová v 0 , . . . , v k−1 , k ≤ m − 1, dĺžok l 0, . . . , l k−1ktoré tvoria rozdelitel’ný (prefixový) kód.3. V množine binárnych vektorov dĺžky l k nájdeme také slovo v k (dĺžky l k), že žiadnezo slov v 0 , . . . , v k−1 nie je jeho prefixom. Ukážeme, že také slovo existuje. Všetkýchbinárnych slov dĺžky l k, ktoré majú prefix v 0 dĺžky l 0 je 2 l k−l 0. (Prvých l 0 bitov sazhoduje so slovom v 0 , ostatných l k − l 0 bitov možno vybrat’ l’ubovol’ným spôsobom.)Všetkých binárnych slov dĺžky l k, ktorých prefixom je niektoré zo slov l 0 , . . . , l k−1je∑k−12 l k−l i. (3.7)i=0Teraz využijeme predpoklad, že pre <strong>do</strong>teraz zostrojený kód platí Kraftova-McMillanovanerovnost’ a že k < m; t.j. žem−1∑i=02 −l i≤ 1.Rozdelíme sumu z poslednej nerovnosti na dve časti:m−1∑i=0∑k−12 −l i=i=0m−1∑2 −l i+i=k2 −l i≤ 1. (3.8)Ked’že že všetky sčítance v sume (3.8) sú kladné čísla, vynechaním niektorých členovdruhej sumy z (3.8) sa nerovnost’ zachová (existuje aj taká možnost’, že druhásuma bude obsahovat’ len jediný člen, 2 −l k):∑k−12 −l i+ 2 −l k


3.1. ROZDELITEL’NÉ KÓDY 27Kraftova-McMillanova nerovnost’. Zavedieme čísla q k , k = 0, . . . , m − 1 odvodené oddĺžok kó<strong>do</strong>vých slov. Čísla q k definujeme nasle<strong>do</strong>vne:∑k−1q 0 = 0, q k = 2 −l i; k = 1, . . . , m − 1. (3.11)i=0Z Kraftovej-McMillanovej nerovnosti vyplýva, že čísla q k ; k = 0, . . . , m − 1 spĺňajú podmienky0 ≤ q k < 1. Zapíšeme teraz čísla q k v binárnom tvare. Zo spôsobu vytvárania q ka zo skutočnosti, že l 0 ≤ l 1 · · · < l m−1 , vyplýva, že q k sa dá zapísat’ akoq k = (0.b k,1 . . . b k,lk−1 ) 2 ,kde b k,i ∈ {0, 1}. Kód V = {v 0 , . . . , v m−1 } vytvoríme potom z binárnej reprezentácie číselq k nasledujúcim spôsobom:v i = b i,1 . . . b i,li−1 0 . . . 0;} {{ }l it.j. kó<strong>do</strong>vé slovo v i pozostáva z prvých l i binárnych číslic nasledujúcich po rá<strong>do</strong>vej čiarkev rozvoji čísla q i . Tvrdíme, že takto zostrojený kód je prefixový, a teda aj rozdelitel’ný.Predpokladajme opak, t.j. že kód V nie je prefixový. Potom obsahuje kó<strong>do</strong>vé slová,z ktorých jedno je prefixom druhého. Nech h je najmenšie také číslo, že pre slovo v hexistuje kó<strong>do</strong>vé slovo (označme ho symbolom v i ), ktoré je jeho prefixom. Ked’že v i jeprefixom v h , l i < l h , a teda aj i < h. Z toho že v i je prefixom v h a zo spôsobu konštrukciekó<strong>do</strong>vých slov vyplýva, že v i je prefixom slov v i+1 , . . . , v h−1 , v h . Ked’že v h je prvé kó<strong>do</strong>véslovo, ktoré má prefix v i , h = i + 1. Pozrieme sa teraz na slová v i , v i+1 podrobnejšie,preskúmame čísla q i , q i+1 .{ }} {q i = 0. b i,1 . . . b i,li−1 0 . . . 0} {{ }l i−1q i+1 = q i + 2 −l i= 0. b i,1 . . . b i,li−1 0 . . . 10 . . . 0} {{ }l i+1l iMôžu nastat’ dve možnosti:1. l i < l i+1 ; v tomto prípade má slovo v i na mieste l i znak 0 a slovo v i+1 znak 1;2. l i = l i+1 . Pripočítaním hodnoty 2 −l iku q i sa zmení niektorá z prvých l i číslic číslaq i , a teda slová v i a v i+1 sa odlišujú aspoň v jednom z prvých l i znakov.To znamená, že v i nemôže byt’ prefixom slova v i+1 , a teda kód V je prefixový.


28 KAPITOLA 3. NEROVNOMERNÉ KÓDYDôsle<strong>do</strong>k 1. Pre l’ubovol’ný rozdelitel’ný kód V = {v 0 , . . . , v m−1 } existuje prefixový kódW = {w 0 , . . . , w m−1 }, taký, že l(v i ) = l(v i ), i = 0, . . . , m − 1.Z uvedeného dôsledku vyplýva, že ak nám nezáleží na konkrétnej po<strong>do</strong>be kó<strong>do</strong>výchslov, môžeme rozdelitel’ný kód s dĺžkami kó<strong>do</strong>vých slov l 0, . . . , l m−1 nahradit’ prefixovýmkó<strong>do</strong>m s tými istými dĺžkami kó<strong>do</strong>vých slov, t.j. l 0, . . . , l m−1 . Túto možnost’ budeme vd’alších úvahách využívat’ a budeme často predpokladat’, že rozdelitel’ný kód je zároveňaj prefixový kód. Skôr ako budeme pokračovat’ v skúmaní vlastností nerovnomerných kó<strong>do</strong>v,uvedieme príklad Shannonovho kódu, ktorý sme použili v dôkaze Kraftovej-McMillanovejnerovnosti.Príklad. Uvažujme nasledujúce dĺžky kó<strong>do</strong>vých slov: 2,3,3,4,5,5,6,6. Ked’že 2−2 + 2 −3 +2 −3 +2 −4 +2 −5 +2 −5 +2 −6 +2 −6 = 0.65625 < 1, z vety 3.1.2 vyplýva, že existuje prefixový kóds týmito dĺžkami kó<strong>do</strong>vých slov. Vypočítame hodnoty q i a vyjadríme príslušné kó<strong>do</strong>véslová.q 0 = 0.00 l 0 = 2 v 0 = 00q 1 = 0.01 l 1 = 3 v 1 = 010q 2 = 0.011 l 2 = 3 v 2 = 011q 3 = 0.1 l 3 = 4 v 3 = 1000q 4 = 0.1001 l 4 = 5 v 4 = 100010q 5 = 0.10011 l 5 = 5 v 5 = 100011q 6 = 0.101 l 6 = 6 v 6 = 101000q 7 = 0.101001 l 7 = 6 v 7 = 1010013.1.3 Úplné kódyKód z príkladu 3.1.2 je síce prefixový, ale má jeden vážny ne<strong>do</strong>statok. Existujú binárnepostupnosti, ktoré sa nedajú rozbit’ na kó<strong>do</strong>vé slová. Okrem triviálnych postupnostídĺžky 1 sú to napríklad postupnosti začínajúce dvojicou symbolov 11. Nemá však zmyselpoža<strong>do</strong>vat’, aby platilo V ∗ = B ∗ , pretože to je možné len v prípade, ak B ⊆ V. Intuitívnejpožiadavke, aby každá binárna postupnost’ predstavovala alebo sa dala <strong>do</strong>plnit’na postupnost’ kó<strong>do</strong>vých slov, vyhovujú tzv. úplné kódy.Definícia 3.1.2. Binárny rozdelitel’ný kód V sa nazýva úplným kó<strong>do</strong>m práve vtedy, akpre l’ubovol’nú binárnu postupnost’ β ∈ B ∗ existuje také kó<strong>do</strong>vé slovo v i ∈ V, že bud’postupnost’ β je prefixom slova v i , alebo slovo v i je prefixom postupnosti β.Príklad. Uvažujme blokový kód V = {00, 01, 10, 11}. Ked’že kód V obsahuje všetkybinárne slová dĺžky 2, spĺňa podmienky definície 3.1.2 a je úplný. Každú binárnu postupnost’párnej dĺžky možno jednoznačne rozdelit’ na postupnost’ kó<strong>do</strong>vých slov.Overovat’, či nejaký kód s vel’kým počtom kó<strong>do</strong>vých slov spĺňa podmienky definície3.1.2, by nemuselo byt’ jednoduché. Našt’astie úplnost’ kódu úzko súvisí s Kraftovou-McMillanovou nerovnost’ou a prefixovými kódmi.Veta 3.1.3. Binárny rozdelitel’ný kód V = {v 0 , . . . , v m−1 } je úplný práve vtedy, ak je pre-


3.1. ROZDELITEL’NÉ KÓDY 29fixový a platím−1∑i=02 −l i= 1. (3.12)Dôkaz. Predpokladajme, že V = {v 0 , . . . , v m−1 } je prefixový kód, pre ktorý platí rovnost’(3.12), ale V nie je úplný. To znamená, že existuje binárna postupnost’ β ∈ B ∗ taká, žežiadne kó<strong>do</strong>vé slovo v i ∈ V nie je prefixom postupnosti β a postupnost’ β nie je prefixomžiadneho kó<strong>do</strong>vého slova kódu V. Potom však môžeme zostrojit’ nový prefixový kód V ′ =V ∪ {β}, pre ktorý platím−1∑2 −l i+ 2 −l(β) = 1 + 2 −l(β) > 1. (3.13)i=0Ale nerovnost’ (3.13) je v rozpore s Kraftovou-McMillanovou nerovnost’ou (3.1). To znamená,že postupnost’ β poža<strong>do</strong>vaných vlastností nemôže existovat’, a teda kód V je úplný.Dokážeme druhú čast’ tvrdenia sporom. Nech je V úplný rozdelitel’ný kód. Predpokladajme,že V nie je prefixový, alebo preň neplatí rovnost’ (3.12). Ked’že z rozdelitel’nostikódu V vyplýva platnost’ Kraftovej-McMillanovej nerovnosti (3.1), znamená to, že prekód V platím−1∑i=02 −l i< 1. (3.14)Zhrnieme naše predpoklady: kód V je úplný a platí ∑ m−1i=0 2−l i< 1. Z úplnosti kódu Vvyplýva, že každá binárna postupnost’ dĺžky n > l max, kdel max = maxv i ∈V {l(v i)}musí mat’ ako prefix nejaké kó<strong>do</strong>vé slovo. Spočítame počet takýchto postupností:m−1∑i=02 n−l i≥ 2 n . (3.15)Ak by kód V bol prefixový, potom je kó<strong>do</strong>vé slovo, ktoré je prefixom nejakej binárnejpostupnosti dĺžky n dané jednoznačne. Potom by však platiloam−1∑i=0m−1∑i=02 n−l i= 2 n , (3.16)2 −l i= 1, (3.17)čo je v spore s predpokla<strong>do</strong>m (3.14) To znamená, že platí ∑ m−1i=0 2−l i< 1, kód V je úplnýale nie je prefixový. Potom však existujú kó<strong>do</strong>vé slová v i ≠ v j také, že (napr.) v i je


30 KAPITOLA 3. NEROVNOMERNÉ KÓDYprefixom v j . Z úplnosti kódu V vyplýva, že každá binárna postupnost’ dĺžky n > l maxmusí začínat’ nejakým kó<strong>do</strong>vým slovom kódu V. Potomm−1∑i=02 n−l i> 2 n , (3.18)lebo postupnosti začínajúce slovom v j sú už zarátané v sume (3.18) ako postupnosti začínajúceslovom v i . Na druhej strane nemôže platit’ nerovnost’m−1∑k=02 n−l k− 2 n−l(v j) < 2 n , (3.19)pretože to by znamenalo, že odstránením slova v j z kódu V sa stratí úplnost’ kódu; t.j.potom bude existovat’ binárna postupnost’ β dĺžky n > l max, ktorej prefixom nie je žiadnekó<strong>do</strong>vé slovo kódu V. Ale to znamená, že jej prefixom nemohlo byt’ odstránené slovo v j ,pretože v tom prípade by prefixom postupnosti β bolo slovo v i , a teda kód V by nebolúplný. To znamená, že platí nerovnost’ (3.18). Platnost’ nerovnosti (3.18) je však v rozpores tvrdením vety 3.1.2. Dostávame spor, ktorý <strong>do</strong>kazuje platnost’ nášho tvrdenia.3.1.4 Kó<strong>do</strong>vé stromyNa skúmanie vlastností nie príliš rozsiahlych nerovnomerných kó<strong>do</strong>v je možné výhodnepoužívat’ orientovaný ohodnotený graf, nazývaný kó<strong>do</strong>vým stromom. Uvažujme orientovanýbinárny strom T hĺbky n s hranami a vrcholmi ohodnotenými nasledujúcim spôsobom:najprv ohodnotíme jeho hrany, pričom budeme postupovat’ od koreňa k listom;ak z vrcholu vychádzajú dve (neohodnotené) hrany tak jednej z nich priradíme hodnotu0 a druhej hodnotu 1. Ak z vrcholu vychádza jediná (neohodnotená) hrana, priradímejej jednu z hodnôt {0, 1}. Po ohodnotení hrán ohodnotíme vrcholy binárneho stromu T :koreňu priradíme prázdne slovo ε a vrcholu v priradíme postupnost’ binárnych hodnôt,ktoré boli priradené hranám ležiacim na ceste, spájajúcej koreň s vrcholom v. 5 Ked’že Tje súvislý acyklický graf, medzi l’ubovol’nými dvoma vrcholmi v ňom existuje jediná cesta,a teda binárna postupnost’ priradená vrcholu je určená jednoznačne. Binárny kó<strong>do</strong>výstrom binárneho kódu V; T (V) <strong>do</strong>staneme tak, že z binárneho stromu T hĺbky n ≥ l max,kde l max = max vi ∈V{l(v i )} a binárny strom T je ohodnotený spôsobom uvedeným vyššie,odstránime všetky podstromy, ktoré neobsahujú vrchol s o<strong>do</strong>dnotením zodpovedajúcimniektorému kó<strong>do</strong>vému slovu kódu V. Na obr. 3.1 je zobrazený binárny (ohodnotený)strom hĺbky 2.Binárny kó<strong>do</strong>vý strom kódu V z príkladu 3.1.2 je zobrazený na obr. xxx Všimnemesi, že všetky vrcholy zodpovedajúce kó<strong>do</strong>vým slovám, sú listy (vrcholy, z ktorých nevychádzajúžiadne hrany). To nie je náhoda. Ak by nejaké slovo v i bolo prefixom inéhoslova v j , vrchol v i by musel ležat’ na ceste spájajúcej koreň s vrcholom v j , a teda bymusel byt’ vnútorným vrcholom kó<strong>do</strong>vého stromu.Veta 3.1.4. Nech je V prefixový kód. Potom v kó<strong>do</strong>vom strome T (V) zodpovedajú kó<strong>do</strong>výmslovám listy.5 V d’alšom budeme vrchol v označovat’ binárnym slovom, ktoré mu je priradené.


003.1. ROZDELITEL’NÉ KÓDY 0310 ✒❩01 ❩❩❩7λ ✒ 01❅ 1 0 10❅❅❅❘✚ ✚✚✚❃❅ 1❅❅❅❘11Obrázok 3.1: Ohodnotený binárny stromDôkaz.Prenechávame čitatel’ovi.Pomocou kó<strong>do</strong>vého stromu je možné l’ahšie formulovat’ aj podmienku úplnosti kódu.Ako sme už ukázali, kód V z príkladu 3.1.2 nie je úplný; problémy spôsobujú postupnostizačínajúce dvojicou 11. Pri skúmaní kó<strong>do</strong>vého stromu kódu V zistíme, že z vrcholu 1vychádza len jedna hrana, ktorej je priradená hodnota 0. Ak túto hranu odstránime avrchol 1 stotožníme s pôvodným vrcholom 10, <strong>do</strong>staneme kó<strong>do</strong>vý strom T (V ′ ) prefixovéhokódu V ′ = {00, 010, 011, 100, 1010, 1011, 11000, 11001}.Kó<strong>do</strong>vý strom T (V ′ ) obsahuje ešte dva vnútorné vrcholy (11, 110) stupňa 1. Odstránenímhrán vychádzajúcich z týchto vrcholov, vrcholu 110 a stotožnením vrcholov 11 a1100 stromu T (V ′ ) <strong>do</strong>stávame kó<strong>do</strong>vý strom T (V ′′ ) prefixového kódu V ′′ = {00, 010, 011,100, 1010, 1011, 110, 111}. Pre kód V ′′ platí ∑ v i ∈V ′′ 2l(v i) = 1. Kód V ′′ je úplný. Každýbinárny 6 prefixový kód, ktorý nie je úplný, možno týmto spôsobom transformovat’ naúplný kód.3.1.5 Automatové dekó<strong>do</strong>vanie.Vel’kou prednost’ou prefixových kó<strong>do</strong>v je to, že okamžite po <strong>do</strong>čítaní posledného symbolukó<strong>do</strong>vého slova <strong>do</strong>kážeme určit’, o aké kó<strong>do</strong>vé slovo ide. (Pre porovnanie pripomínamesufixový rozdelitel’ný kód z príkladu 3.1.1, pre ktorý existovali správy, ktoré bolo možnédekó<strong>do</strong>vat’ až po prijatí posledného symbolu správy.) Prefixové kódy sa vd’aka možnostipriebežného dekó<strong>do</strong>vania správy nazývajú aj okamžitými kódmi alebo automatovýmikódmi. Ten druhý názov získali vd’aka tomu, že na ich dekó<strong>do</strong>vanie možno použit’konečný automat.6 Ako uvidíme neskôr, mnohé z vlastností nerovnomerných kó<strong>do</strong>v nezávisia od počtu znakov kó<strong>do</strong>vejabecedy. Transformácia prefixového kódu na úplný prefixový kód, ktorú sme popísali vyššie, podstatnevyužíva to, že kó<strong>do</strong>vá abeceda je binárna; a nedá sa priamo zovšeobecnit’ na prípad kó<strong>do</strong>vej abecedy sväčším počtom kó<strong>do</strong>vých symbolov.


32 KAPITOLA 3. NEROVNOMERNÉ KÓDYDefinícia 3.1.3. Konečný automat je usporiadaná šestica A = (Σ i , Σ o , Q, Φ, Ψ, q), kdeΣ i je vstupná, Σ o výstupná abeceda, Q, je konečná množina stavov, Φ : Σ i × Q → Q jeprecho<strong>do</strong>vá funkcia, Ψ : Σ i ×Q → Σ o je výstupná funkcia a q je počiatočný stav konečnéhoautomatu A.Konečný automat si môžeme predstavit’ ako zariadenie so vstupnou a výstupnoupáskou, riadiacou jednotkou, čítacou a zapisovacou hlavou, obr. 3.2. Vstupná páskaje rozdelená na políčka, v kaž<strong>do</strong>m políčku je zapísaný symbol vstupnej abecedy. Po<strong>do</strong>bneje výstupná páska rozdelená na políčka a v políčku je zapísaný jeden zo symbolov výstupnejabecedy, alebo je políčko prázdne. Čítacia hlava sa pohybuje po vstupnej páskezl’ava <strong>do</strong>prava, v kaž<strong>do</strong>m kruku číta jeden symbol z políčka vstupnej pásky a po prečítanísa presunie o jedno políčko <strong>do</strong>prava. Zapisovacia hlava v kaž<strong>do</strong>m kroku zapisujena políčko výstupnej pásky jeden symbol výstupnej abecedy a posunie sa o jedno políčko<strong>do</strong>prava, alebo nezapíše nič a zostáva na tom istom políčku aj v nasledujúcom kroku. Automatzačína pracovat’ v počiatočnom stave q a skončí, ked’ prečíta celý vstup zo vstupnejpásky.Pri dekó<strong>do</strong>vaní binárnych prefixových kó<strong>do</strong>v pomocou konečného automatu bude vstupnáabeceda Σ i = {0, 1}, výstupná abeceda sa bude zho<strong>do</strong>vat’ so zdrojovou abece<strong>do</strong>u;Σ o = Σ S a precho<strong>do</strong>vú a výstupnú funkciu definujeme pomocou tabul’ky. Ilustrujemedekó<strong>do</strong>vanie binárnárneho prefixového kódu na príklade.Príklad. Uvažujme kód V ′′ z predchádzajúceho príkladu. Predpokladáme, že kó<strong>do</strong>véslová slúžia na zápis prvých písmen anglickej abecedy:a 00 e 1010b 010 f 1011c 011 g 110d 100 h 111Vstupná abeceda konečného (dekó<strong>do</strong>vacieho) automatu A je binárna: Σ i = {0, 1}, výstupnáabeceda Σ o = {a, b, c, d, e, f, g, h, λ}, množina stavov Q = {q, q 0 , q 1 , q 01 , q 10 , q 11 , q 101 } aprecho<strong>do</strong>vá a výstupná funkcia sú uvedené v tabul’ke. Počiatočným stavom je q.stav vstup0 1q q 0 , λ q 1 , λq 0 q, a q 01 , λq 01 q, b q, cq 1 q 10 , λ q 11 , λq 10 q, d q 101 , λq 101 q, e q, fq 11 q, g q, hJe daná binárne kó<strong>do</strong>vaná správa 010011111. Ukážeme, ako ju automat A dekóduje.Kvôli jednoduchosti budeme pozíciu čítacej hlavy na vstupnej páske a stav automatu Azapisovat’ tak, že stav automatu zapíšeme pred symbol, ktorý v danom kroku automatA číta. Symboly, ktoré by sa zapisovali na výstupnej páske budeme zapisovat’ pod dekó<strong>do</strong>vanéslová binárnej správy.


3.2. CENA KÓDU 33a a a a a a a a✻✤✜q i✣✢❄| | | | | | | |Obrázok 3.2: Konečný automatq010011111 ↦→ 0q 0 10011111 ↦→ 01q 01 0011111 ↦→ }{{} 010 q011111b}{{} 010 0q 0 11111 ↦→ }{{} 010 01q 01 1111 ↦→ }{{} 010 }{{} 011 q111 ↦→ }{{} 010 }{{} 011 1q 1 11bbb cb c010 011 11q 11 1 ↦→ 010 011 111 q}{{}b}{{}c}{{}b}{{}c}{{}h↦→↦→3.2 Cena kóduNerovnomerné rozdelitel’né kódy sa dajú výhodne použit’ v takých prípa<strong>do</strong>ch, ked’ saslová (alebo znaky), ktoré sa kódujú, vyskytujú nerovnako často. Vtedy je možné častosa vyskytujúcim slovám (znakom) priradit’ kratšie kó<strong>do</strong>vé slová a tak <strong>do</strong>siahnut’, že kó<strong>do</strong>vanáspráva bude v priemernom prípade kratšia, ako keby sa na kó<strong>do</strong>vanie používaliblokové napríklad kódy. V d’alšom túto intuitívnu predstavu upresníme. Kvôli jednoduchostibudeme kó<strong>do</strong>vat’ znaky zdrojovej abecedy Σ S = {a 0 , . . . , a m−1 }. Zavedieme prvý,značne zjednodušený matematický model zdroja S. Budeme predpokladat’, že zdroj S jenáhodný generátor, ktorý generuje znaky zdrojovej abecedy náhodne a nezávisle na sebe.Zdroj S je charakterizovaný rozdelením pravdepo<strong>do</strong>bností P = {p 0 , . . . , p m−1 }; p i ≥ 0, i =0, . . . , m − 1; ∑ m−1i=0 p i = 1 výskytu jednotlivých symbolov zdrojovej abecedy. (Z matematickéhohl’adiska je sdroj S náhodná premenná, na<strong>do</strong>búdajúca hodnotu a i s pravdepo<strong>do</strong>bnost’oup i , i = 0, . . . , m − 1.) Je zrejmé, že existuje viacero spôsobov kó<strong>do</strong>vania znakovzdrojovej abecedy. Aby sme mohli porovnat’ efektívnost’ jednotlivých kó<strong>do</strong>v, zavediemepojem ceny kódu.Definícia 3.2.1. Nech je P = {p 0 , . . . , p m−1 } rozdelenie pravdepo<strong>do</strong>bností znakov zdrojovejabecedy Σ S = {a 0 , . . . , a m−1 }; nech V = {v 0 , . . . , v m−1 } je kód kódujúci znaky kó<strong>do</strong>vej


34 KAPITOLA 3. NEROVNOMERNÉ KÓDYabecedy, a i → v i , i = 0, . . . , m − 1 a nech l i = l(v i ) sú dĺžky kó<strong>do</strong>vých slov kódu V. Potomcenou kódu V pri rozdelení pravdepo<strong>do</strong>bností nazvemeL(P, V) =Cena kódu V pri rozdelení pravdepo<strong>do</strong>bností P nie je z matematického hl’adiska ničiné, než stredná hodnota dĺžky kó<strong>do</strong>vého slova, t.j. počet symbolov kó<strong>do</strong>vej abecedypripadajúcich na zakó<strong>do</strong>vanie jedného znaku zdrojovej abecedy. (V prípade kó<strong>do</strong>vaniaslov z nejakej množiny M by to bol počet symbolov kó<strong>do</strong>vej abecedy pripadajúcich nazakó<strong>do</strong>vanie jedného slova z množiny M.)Aká je minimálna hodnota L(P, V) pri danom rozdelení pravdepo<strong>do</strong>bností? Existujúkódy <strong>do</strong>sahujúce túto minimálnu hodnotu a ak áno, sú známe metódy ich zostrojovania?Na tieto i d’alšie otázky dáme odpoved’ v nasledujúcich častiach tejto kapitoly.m−1∑i=0l i p i .3.3 Kvázioptimálne kódy a optimálny kódKód V = {v 0 , . . . , v m−1 } s dĺžkami kó<strong>do</strong>vých slov l(v i) = l i , i = 0, . . . , m − 1 nazveme optimálnymkó<strong>do</strong>m pre rozdelenie pravdepo<strong>do</strong>bností P = {p 0 , . . . , p m−1 }, ak pre l’ubovol’nýkód W = {w 0 , . . . , w m−1 } platíL(P, V) ≤ L(P, W).Cenu optimálneho kódu pri rozdelení pravdepo<strong>do</strong>bností P označíme L(P). Prirodzenáotázka je, aká je cena optimálneho kódu.Veta 3.3.1. Nech je P = {p 0 , . . . , p m−1 } l’ubovol’né rozdelenie pravdepo<strong>do</strong>bností, p 0 ≥ p 1 ≥· · · ≥ p m−1 > 0. Potom platíRovnost’m−1∑i=0m−11∑p i · log 2 ≤ L(P) ≤p im−1∑i=0i=0platí práve vtedy, ak p i = 2 −l i, l i ∈ N, i = 0, . . . , m − 1.p i · log 21p i+ 1.p i · log 21p i= L(P) (3.20)Dôkaz. Dolný odhad. Predpokladajme, že V = {v 0 , . . . , v m−1 } je l’ubovol’ný prefixovýkód s dĺžkami kó<strong>do</strong>vých slov l(v i) = l i , i = 0, . . . , m − 1. Porovnáme cenu kódu V sentropiou zdroja H 2 (P) = ∑ m−1i=0 p 1i · log 2 p i:m−1∑i=0m−11 ∑p i · log 2 −p ii=0l i p i =m−1∑i=0[] m−11∑p i · log 2 − logp 2 2 l i=ii=0p i · log 22 −l ip i.


3.3. KVÁZIOPTIMÁLNE KÓDY A OPTIMÁLNY KÓD 35Teraz prevedieme binárny logaritmus na prirodzený, využijeme nerovnost’ ln x ≤ x − 1 aupravíme:m−1∑i=02 −l ip i · log 2 = 1 m−1∑p i ln 2i=0[= 1 m−1 ∑2 −l i−ln 2i=0p i · ln 2−l i≤ 1 m−1∑p i ln 2m−1∑i=0p i]i=0[= 1 m−1]∑2 −l i− 1 .ln 2i=0[ 2−l i]p i · − 1 = (3.21)p iKód V je prefixový a teda z Kraftovej-McMillanovej nerovnosti vyplýva, že ∑ m−1i=0 2−l i≤1. Ked’že 2 > 1, ln 2 > 0 platí[ m−1]1 ∑2 −l i− 1 ≤ 0.ln 2i=0To však znamená, že pre l’ubovol’ný prefixový kód V = {v 0 , . . . , v m−1 } platíH 2 (P) ≤ L(P, V).Horný odhad.Dokážeme, že existuje (prefixový) kód, ktorý <strong>do</strong>sahuje cenu H 2 (P) + 1.Položíme l i = ⌈log 21p i⌉. Potom platí:m−1∑i=02 −l i=m−1∑i=02 ⌈log m−12 1 ∑⌉ p i ≤i=02 − log 2 1 p i =m−1∑i=0p i = 1;a teda existuje prefixový kód s dĺžkami kó<strong>do</strong>vých slov l i = ⌈log 21p i⌉, i = 0, . . . , m − 1.Cena tohto kódu jeL(P, V) =m−1∑i=0p i l i =m−1∑i=0m−11 ∑p i ⌈log 2 ⌉ ≤p ii=0[ ] m−11 ∑p i log 2 + 1 =p ii=0p i log 21p i+ 1.Vrát’me sa ešte k dôkazu rovnosti (3.20). Ak P = {p i = 2 −l i, l i ∈ N, i = 0, . . . , m − 1}je rozdelenie pravdepo<strong>do</strong>bností, potom podl’a vety 3.1.2 existuje prefixový kód s dĺžkamikó<strong>do</strong>vých slov11⌈log 2 ⌉ = ⌈logp 2i 2 −l ⌉ = ⌈log i 2 2l i⌉ = ⌈l i ⌉ = l i ,ktorý má cenuNa druhej strane, akm−1∑i=0m−1∑i=0p i l i =p i l i =m−1∑i=0m−1∑i=0p i log 21p i.p i log 21p ito znamená, že v odvodení 3.21 nastala rovnost’. To však znamená, že 2−l ip ip i = 2 −l i(ln x = x − 1 pre x = 1).= 1, resp.


36 KAPITOLA 3. NEROVNOMERNÉ KÓDYJeden kód, ktorého cena sa vel’mi nelíši od ceny optimálneho kódu už poznáme. Jeto Shannonov kód. Konštrukcia, ktorú sme použili v dôkaze Kraftovej-McMillanovejnerovnosti však vychádzala zo znalosti dĺžok kó<strong>do</strong>vých slov a nie z rozdelenia pravdepo<strong>do</strong>bnostízdrojových symbolov. Ukážeme, ako možno zostrojit’ Shannonov prefixovýkód pre dané rozdelenie pravdepo<strong>do</strong>bností źdrojových symbolov.3.3.1 Shannonov kódVeta 3.3.2 (Shannonov kód). Nech je P = {p 0 , . . . , p m−1 } l’ubovol’né rozdelenie pravdepo<strong>do</strong>bností,p 0 ≥ p 1 ≥ · · · ≥ p m−1 > 0; čísla q k ; 0 ≤ q k < 1 sú definované nasle<strong>do</strong>vneq 0 = 0,q k =∑k−1p j , k = 1, . . . m − 1;a nech pre prirodzené čísla (dĺžky kó<strong>do</strong>vých slov) platíĎalej, nechj=0l k = ⌈lg 1/p k ⌉ pre k = 0, . . . m − 1.q k = 0.b (k)1. . . b (k)l k. . .je binárny zápis čísla q k , (k = 0, . . . , m − 1). Pre k = 0, . . . , m − 1 definujeme kó<strong>do</strong>vé slovow k = b (k)1. . . b (k)l k.Potom kód W = {w 0 , . . . , w m−1 } je prefixový kód, nazývaný Shannonovým kó<strong>do</strong>m.Dôkaz. Dokážeme, že kód W = {w 0 , . . . , w m−1 } je prefixový. Pozrieme sa najprv nadĺžky kó<strong>do</strong>vých slov. Zapíšeme pravdepo<strong>do</strong>bnosti zdrojových symbolov binárne:p k = a (k)1. . . a (k)l k. . . k = 0 . . . m − 1.Pripomenieme, že pre dĺžky kó<strong>do</strong>vých slov platí l k = ⌈lg 1/p k ⌉ k = 0 . . . m − 1. To znamená,že12 ≤ p k < 1 l k = 114 ≤ p k < 1 2l k = 218 ≤ p k < 1 l k = 34. . . . . .t.j. hodnota l k je jednoznačne určená pozíciou prvej jednotky v binárnom zápise čísla p k ;akp k = 0. 0 } .{{ . . 01}. . .s


3.3. KVÁZIOPTIMÁLNE KÓDY A OPTIMÁLNY KÓD 37tak potom 2 −s ≤ p k < 2 −s+1 , 2 s−1 < 1/p k ≤ 2 s a teda l k = s. Predpokladajme teraz, žekód W nie je prefixový. To znamená, že existujú kó<strong>do</strong>vé slová slová w r , w t ; r < t také, žew r je prefixom slova w t . Kó<strong>do</strong>vé slová w r , w t boli vytvorené z číselq r = 0.b (r)1 . . . b(r) l r. . .q t = 0.b (t)1 . . . b(t) l r. . . b (t)l t. . . ;q t = q r + p r + · · · + p t−1 .Pre pravdepo<strong>do</strong>bnost’ p r však platí 2 −l r≤ p r < 2 −l r+1 . To znamená, že2 −lr ≤ p r + · · · + p t−1 .Potom sa však q t odlišuje aspoň na jednom z prvých l r miest po rá<strong>do</strong>vej čiarke od q r ,lebo už pre t = r + 1 platía teda w r nie je prefixom slova w t .q r = 0.b (r)1 . . . b(r) l r. . .+ p r = 0.0 . . . 1 . . .= q r+1 ≠ 0.b (r)1 . . . b(r) l r. . .Skôr, ako ukážeme, ako sa konštruuje optimálny kód, uvedieme ešte jednu jednoduchúmetódu konštrukcie kódu, ktorého cena je blízka k cene optimálneho kódu, Fanov kód.(Shannonov a Fanov kód sa nazývajú kvázioptimálne kódy.)3.3.2 Fanov kódPredpokladáme, že je dané rozdele-Fanova konštrukcia kvázioptimálneho kódu.nie prevdepo<strong>do</strong>bností P = {p 0 , . . . , p m−1 }1. usporiadame pravdepo<strong>do</strong>bnosti zostupne p 0 ≥ p 1 ≥ · · · ≥ p m−1 > 0 a zapíšeme <strong>do</strong> 1.stĺpca tabul’ky. Jednotlivým pravdepo<strong>do</strong>bnostiam (zastupujúcim symboly zdrojovejabecedy) priradíme prázdne slová λ.2. Ak tabul’ka obsahuje aspoň dva riadky, rozdelíme ju na 2 časti tak, aby sa súčetpravdepo<strong>do</strong>bností v hornej časti tabul’ky líšil čo najmenej od súčtu pravdepo<strong>do</strong>bnostív <strong>do</strong>lnej časti tabul’ky a pokračujeme krokom 3. Ak tabul’ka obsahuje jedinýria<strong>do</strong>k, jej spracovanie ukončíme.3. Slová v i priradené pravdepo<strong>do</strong>bnostiam v hornej polovici tabul’ky zret’azíme spravaso znakom 0, a slová z <strong>do</strong>lnej polovice tabul’ky zret’azíme sprava so znakom 1.Pokračujeme v spracovaní hornej a <strong>do</strong>lnej časti tabul’ky podl’a kroku 2.Ked’že tabul’ka obsahuje m riadkov, krok 2 sa uplatní najviac m − 1-krát. Ilustrujemekonštrukciu Fanovho a Shannonovho kódu na nasledujúcom príklade.


38 KAPITOLA 3. NEROVNOMERNÉ KÓDYPríklad.p 0 0.25 0 00p 1 0.20 0 01p 2 0.13 1 10 100p 3 0.12 1 10 101p 4 0.10 1 11 110 1100p 5 0.08 1 11 110 1101p 6 0.07 1 11 111 1110p 7 0.05 1 11 111 1111Fanov kódp i q i l i v i0.25 0.0 2 000.20 0.010 3 0100.13 0.011 3 0110.12 0.1001 4 10010.10 0.1011 4 10110.08 0.1100 4 11000.07 0.1110 4 11100.05 0.11110 5 11110Shannonov kódFanov kód má cenu 2.85 a Sahnnonov 3.22 a entropia je 2.822. Shannonov kód ešte možnoupravit’ (skrátit’). Ked’že slovo 100 je prefixom jediného kó<strong>do</strong>vého slova, možno toto slovo1001 nahradit’ slovom 100; po<strong>do</strong>bne možno skrátit’ kó<strong>do</strong>vé slovo 1011 na 101; kó<strong>do</strong>véslovo 1100 na 110 a napokon kó<strong>do</strong>vé slovo 11110 na 1111. Takto upravený (skrátený)Shannonov kód má cenu 2.87.3.3.3 Huffmanov optimálny kódUvedieme teraz metódu konštrukcie optimálneho kódu. Podstata Huffmanovej metódyspočíva v tom, že sa zostrojenie optimálneho kódu pre m znakov redukuje na konštrukciuoptimálneho kódu pre m − 1 znakov. Pri dôkaze budem potrebovat’ nasledujúcu lemu.Veta 3.3.3. Nech je P = {p 0 , . . . , p m−1 } l’ubovol’né rozdelenie pravdepo<strong>do</strong>bností, p 0 ≥ p 1 ≥· · · ≥ p m−1 > 0. Potom existuje prefixový kód V = {v 0 , . . . , v m−1 } s dĺžkami kó<strong>do</strong>výchslov l i = l(v i ), i = 0, . . . , m − 1 optimálny pre rozdelenie pravdepo<strong>do</strong>bností P, taký, žeminimálnym pravdepo<strong>do</strong>bnostiam p m−2 , p m−1 zodpovedajú slová v m−2 , v m−1 maximálnejdĺžky l m−1, ktoré majú spoločný prefix dĺžky l m−1 − 1.Dôkaz. Ak by v kóde V neboli priradené slová maximálnej dĺžky minimálnym pravdepo<strong>do</strong>bnostiam,kód by nebol optimálny. To znamená, že minimálnym pravdepo<strong>do</strong>bnostiamp m−2 , p m−1 musia byt’ priradené slová maximálnej dĺžky. Predpokladajme, že slová


3.3. KVÁZIOPTIMÁLNE KÓDY A OPTIMÁLNY KÓD 39v m−2 , v m−1 nemajú spoločný prefix dĺžky l m−1 − 1. To znamená, že existuje slovo v j maximálnejdĺžky l m−1, ktoré má spoločný prefix dĺžky l m−1 − 1 so slovom v m−1 . V opačnomprípade by slovo v m−1 bolo možné nahradit’ jeho prefixom dĺžky l m−1 − 1, čo je v spore soptimálnost’ou kódu V. (Z po<strong>do</strong>bných dôvo<strong>do</strong>v musí existovat’ slovo v k maximálnej dĺžkyl m−1 , ktoré má spoločný prefix dĺžky l m−1 − 1 so slovom v m−2 .) „Zámenou“ slov v m−2 a v j<strong>do</strong>stávame kód s rovnakou cenou, ako bola cena pôvodného kódu, spĺňajúci podmienkyLemy.Teraz už môžeme vyslovit’ a <strong>do</strong>kázat’ vetu, ktorá je teoretickým zdôvodnením Huffmanovejkonštrukcie optimálneho kódu.Veta 3.3.4. Huffmanov kód. Nech V = {v 0 , . . . , v m−1 }, m > 1 je optimálny prefixový kódpre rozdelenie pravdepo<strong>do</strong>bností P = {p 0 , . . . , p m−1 }, pričom p j = q 0 + q 1 a p 0 ≥ p 1 ≥ · · · ≥p m−1 ≥ q 0 ≥ q 1 > 0. Potom kód V = {v 0 . . . , v j−1 , v j+1 , . . . , v m−1 , v j 0, v j 1} je optimálny kódpre rozdelenie pravdepo<strong>do</strong>bnostíP ′ = {p 0 . . . , p j−1 , p j+1 , . . . , p m−1 , q 0 , q 1 }.Dôkaz Kód V ′ je tiež prefixový a jeho cena je L(P ′ , V ′ ) = L(P, V) + p j . Aby sme ukázali,že V ′ je optimálny kód, musíme <strong>do</strong>kázat’, že pre l’ubovol’ný kód W ′ = {w 0 , . . . , w m } prerozdelenie pravdepo<strong>do</strong>bností P ′ platí L(P ′ , W ′ ) ≥ L(P ′ , V ′ ) = L(P, V) + p j . Predpokladajme,že W ′ je optimálny kód pre rozdelenie pravdepo<strong>do</strong>bností P ′ , ktorý naviac spĺňa podmienkyvety 3.3.3. To znamená, že minimálnym pravdepo<strong>do</strong>bnostiam q 0 , q 1 zodpovedajúslová maximálnej dĺžky w1, w0. Uvažujme teraz kód W = {w 0, . . . , w j−1 , w, w j+1 , . . . ,w m−1 }pre rozdelenie pravdepo<strong>do</strong>bností P. Ked’že pre rozdelenie pravdepo<strong>do</strong>bností P je optimálnykód V, platí L(P, V) ≤ L(P, W). Ale potomL(P ′ , V ′ ) = L(P, V) + p j ≤ L(P, W) + p j = L(P ′ , W ′ ),a teda kód V ′ je optimálny pre rozdelenie pravdepo<strong>do</strong>bností P ′ .Popíšeme metódu konštrukcie Huffmanovho kódu pre rozdelenie pravdepo<strong>do</strong>bnostíP = {p 0 , . . . , p m−1 }.Konštrukcia optimálneho kódu.1. usporiadaj pravdepo<strong>do</strong>bnosti p 0 , . . . , p m−1 <strong>do</strong> zoznamu zostupne. Ak m > 1 pokračujkrokom 2, ináč chod’ na krok 3.2. Opakuj m − 2 krát nasledujúcu činnost’:• sčítaj posledné dve (minimálne) pravdepo<strong>do</strong>bnosti usporiadaného zoznamu;• odstráň tieto dve pravdepo<strong>do</strong>bnosti zo zoznamu a zarad’ <strong>do</strong> zoznamu ich súčettak, aby bol nový zoznam usporiadaný zostupne;• zapamätaj si miesto v zozname, na ktoré bola zaradená nová hodnota.3. Zoznam obsahuje dve pravdepo<strong>do</strong>bnosti; prirad’ (napríklad) väčšej z nich slovo 0 amenšej slovo 1; ak m = 1 skonči, ináč pokračuj krokom 4.4. Opakuj m − 2 krát nasledujúcu činnost’ a potom skonči:


40 KAPITOLA 3. NEROVNOMERNÉ KÓDY• urči tú pravdepo<strong>do</strong>bnost’ p j v aktuálnom usporiadanom zozname, ktorá bolavytvorená ako posledná súčtom nejakých dvoch minimálnych pravdepo<strong>do</strong>bnostíq 0 , q 1 ;• odstráň pravdepo<strong>do</strong>bnost’ p j zo zoznamu, <strong>do</strong>plň <strong>do</strong>ň pravdepo<strong>do</strong>bnosti q 0 , q 1 ausporiadaj ho;• ak bolo pravdepo<strong>do</strong>bnosti p j priradené slovo v, prirad’ pravdepo<strong>do</strong>bnostiamq 0 , q 1 slová v0, v1.Ilustrujeme Huffmanovu konštrukciu na príklade.Príklad.0.25 0.25 0.25 0.25 0.31∗ 0.44∗ 0.56∗ 0∗ 1∗ 00∗ 01 01 01 010.20 0.20 0.20 0.24∗ 0.25 0.31 0.44 1 00 01 10∗ 11 11 110.13 0.13 0.18∗ 0.20 0.24 0.25 01 10 11 000∗ 001 0010.12 0.12 0.13 0.18 0.20 11 000 001 100 1000.10 0.12∗ 0.12 0.13 001 100 101∗ 00000.08 0.10 0.12 101 0000 00010.07 0.08 0001 10100.05 1011Huffmanov kódPravdepo<strong>do</strong>bnosti, ktoré vznikli sčítaním minimálnych pravdepo<strong>do</strong>bností v predchádzajúcomkroku, sú uznačené hviezdičkou. Kvôli jednoduchosti sú hviezdičkou označené ajslová prislúchajúce týmto pravdepo<strong>do</strong>bnostiam.Huffmanov kód má cenu 2.85. Je zaujímavé, že aj ked’ sú Fanov a Huffmanov kódrôzne, majú rovnakú cenu. Vo všeobecnosti však Huffmanova metóda umožňuje získat’lepšie kódy ako Fanova metóda vd’aka tomu, že „preusporiadavaním“ pravdepo<strong>do</strong>bnostílepšie „vyvažuje“ tabul’ku pravdepo<strong>do</strong>bností. Čo však v tom prípade, ked’ je tabul’kapravdepo<strong>do</strong>bností nevyvážená už na samom začiatku; ak sa jeden symbol vyskutuje vel’-mi často a ostatné zriedkavo? Uvedieme extrémny prípad a ukážeme, ako sa dá riešit’.3.3.4 Rozšírenie kóduPríklad. Zdrojová abeceda pozostáva zo symbolov {a, b} a rozdelenie pravdepo<strong>do</strong>bnostíje P = {0.9, 0.1}. Optimálny kód V = {0, 1} má cenu L = 1.0 a entropia zdroja je0.4689955936. Rozdiel medzi entropiou a cenou optimálneho kódu je príliš vel’ký. Podstataproblému je v tom, že zdrojová abeceda je príliš malá a nemáme možnost’ rozlíšit’často (a) a zriedkavo (b) sa vyskytujúce symboly, ale obom sme priradili slová rovnakejdĺžky. Pri kó<strong>do</strong>vaní zdrojovej abecedy s takým extrémnym rozdelením pravdepo<strong>do</strong>bnostíuplatníme nasledujúci postup. Namiesto jednotlivých znakov kó<strong>do</strong>vej abecedy budemekó<strong>do</strong>vat’ n-tice znakov zdrojovej abecedy. Využijeme pritom predpoklady o charakterezdroja: znaky generuje nezávisle na sebe a s nemennými pravdepo<strong>do</strong>bnost’ami. „Abeceda“Σ 2 s, jej rozdelenie pravdepo<strong>do</strong>bností a príslušný Huffmanov kód V 2 sú uvedené vnasledujúcej tabul’ke.


3.3. KVÁZIOPTIMÁLNE KÓDY A OPTIMÁLNY KÓD 41aa 0.81 0ab 0.09 11ba 0.09 100bb 0.01 101Cena kódu V 2 je 1.29. Treba si však uve<strong>do</strong>mit’, že to je počet binárnych symbolov pripadajúcichna jedno zdrojové slovo, ktoré má dĺžku 2, a preto cena kódu, meraná počtomkó<strong>do</strong>vých symbolov potrebných na zakó<strong>do</strong>vanie jedného symbolu zdrojovej abecedy jeL(P ′ , V ∈ ) = 1.29/2 = 0.645. Táto hodnota je už podstatne bližšia k entropii zdroja, akocena pôvodného kódu. Ďalšie rozšírenie zdrojovej abecedy (kó<strong>do</strong>vanie trojznakových slovnad zdrojovou abece<strong>do</strong>u) už neprinesie takú podstatnú redukciu ceny kódu:aaa 0.729 0aab 0.081 100aba 0.081 101baa 0.081 110abb 0.009 11100bab 0.009 11101bba 0.009 11110bbb 0.001 11111L(P ′′ , V ∋ ) = 1.599/3 = 0.533. Aby sme si spravili predstavu o to, ako rýchlo sa približujecena kódu pre narastajúcu hodnotu n k entropii, vypočítame cenu neskráteného Shannonovhokódu pre rozličné hodnoty n:n 3 4 5 10 20 30 50 100 200 1000 2000L 0.6333 0.5509 0.5163 0.5070 0.5006 0.4863 0.4789 0.4741 0.4713 0.4695 0.4692Upozorňujeme, že n-násobným rozšírením (dvojprvkovej) zdrojovej abecedy <strong>do</strong>stanememnožinu slov mohutnosti 2 n , a tak je použitie tejto metódy pre konštrukciu kó<strong>do</strong>v scenou blízkou k <strong>do</strong>lnej hranici danej entropiou pre väčšie hodnoty n a/alebo rozsiahlejšieabecedy zdroja prakticky nepoužitel’né.Metóda konštrukcie Huffmanovho kódu nie je jednoznačná. Ak v zozname pravdepo<strong>do</strong>bnostíuž existuje hodnota rovná tej, ktorú sme <strong>do</strong>stali v niektorom kroku súčtomminimálnych pravdepo<strong>do</strong>bností, máme možnost’ zaradit’ vypožčítanú pravdepo<strong>do</strong>bnost’za alebo pred pravdepo<strong>do</strong>bnost’ v pôvodnom usporiadanom zozname. Uplatnenímrozličných stratégií zarad’ovania rovnakých pravdepo<strong>do</strong>bností <strong>do</strong> zoznamu, <strong>do</strong>stanemekódy, ktoré majú rovnakú cenu, ale môžu mat’ rozličné dĺžky kó<strong>do</strong>vých slov.Príklad.0.375 0.375 0.375 0.375 0.625∗ 0 1 1 1 10.250 0.250 0.250 0.375∗ 0.375 1 00 01 01 010.125 0.125 0.250∗ 0.25 01 000 001 0010.125 0.125 0.125 001 0000 00000.0625 0.125∗ 0001 000100.0625 00011


42 KAPITOLA 3. NEROVNOMERNÉ KÓDYHuffmanov kód V0.375 0.375 0.375 0.375∗ 0.625∗ 0 1 00 00 000.250 0.250 0.250∗ 0.375 0.375 1 00 01 10 100.125 0.125∗ 0.250 0.25 01 10 11 0100.125 0.125 0.125 11 010 0110.0625 0.125 011 1100.0625 111Huffmanov kód V ′ .l’ahko sa presvedčíme o tom, že L(V, P) = L(V ′ , P) = 2.375.Ktorý zo zostrojených kó<strong>do</strong>v je lepší? Ak sa v nejakom texte vyskytujú zdrojové symbolys pravdepo<strong>do</strong>bnost’ami zodpovedajúcimi pravdepo<strong>do</strong>bnostiam z rozdelenia pravdepo<strong>do</strong>bnostíP, oba kódy zakódujú daný text rovnako efektívne. Ak však kód zostrojujemena základe predpokladaného rozdelenia pravdepo<strong>do</strong>bností, ktoré sa od skutočnéholíši, môže sa cena skonštruovaného kódu viac alebo menej odlišovat’ od ceny optimálnehokódu a rozdiel medzi skutočnou a minimálnou cenou bude závisiet’ aj od spôsobukonštrukcie kódu.3.3.5 Chyby v pravdepo<strong>do</strong>bnostiach zdrojových symbolovPredpokladajme, že je dané rozdelenie pravdepo<strong>do</strong>bností P = {p 0 , . . . , p m−1 }, na základektorého sme zostrojili Huffmanov kód V = {v 0 , . . . , v m−1 } s dĺžkami kó<strong>do</strong>vých slov{l 0 , . . . , l m−1 }. Nech je P ′ = {p ′ 0 , . . . , p′ m−1}, skutočné rozdelenie pravdepo<strong>do</strong>bností zdrojovýchsymbolov; p ′ i= p i + e i , i = 0, . . . , m − 1, kde e i je chyba v odhade pravdepo<strong>do</strong>bnosti∑výskytu i-teho symbolu. Ked’že P ′ , P sú rozdelenia pravdepo<strong>do</strong>bností, platí:m−1i=0 p′ i = ∑ m−1i=0 p i + e i = 1 + ∑ m−1i=0 e i; a teda ∑ m−1i=0 e i = 0. Zistíme, aký bude rozdielcien kódu V pri rozdelení pravdepo<strong>do</strong>bností P ′ a P:L(V, P ′ ) =m−1∑i=0m−1p ′ i l ∑i = (p i + e i )l i =i=0m−1∑i=0m−1∑p i l i +i=0m−1∑l i e i = L(V, P) +Zistíme, kedy na<strong>do</strong>búda ∑ m−1i=0 l ie i extrémne hodnoty. Použijeme na to metódu Lagrangeovýchneurčitých koeficientov [13]. Vyjadríme najprv podmienky, za ktorých budemehl’adat’ extrémy funkcie ∑ m−1i=0 l ie i . Odchýlky e i od pravdepo<strong>do</strong>bností výskytu symbolovbudeme chápat’ ako výsledky náhodnej premennej e; pričom P(e = e i ) = 1 m , m =0, . . . , m − 1. Potom stredná hodnota chyby jeVyjadríme disperziu chýb:Var(e) =m−1∑i=0e 2 iE(e) =(1m − 1mm−1∑i=0m−1∑i=01e im = 1 m−1∑me i) 2= 1 mm−1∑i=0i=0i=0l i e ie i = 0. (3.22)e 2 i − 0 = 1 mm−1∑i=0e 2 i = σ2 . (3.23)


3.3. KVÁZIOPTIMÁLNE KÓDY A OPTIMÁLNY KÓD 43Využijeme (3.22) a (3.23) a zostrojíme Lagrangeovu funkciu pre veličinu ∑ m−1i=0 l ie i (λ, µsú Lagrangeove neurčité koeficienty):F = 1 mm−1∑i=0l i e i + λ(1mm−1∑i=0e i)+ µ(1mm−1∑i=0e 2 i − σ2 ). (3.24)Vypočítame parciálne derivácie funkcie F podl’a e i , i = 0, . . . , m−1 a položíme ich rovnýminule:∂F∂e i= 1 m (l i − λ − 2µe i ) = 0; i = 0, . . . , m − 1. (3.25)Sčítame rovnice (3.25) a vyjadríme koeficient λ.a tedam−1∑i=01m (l i − λ − 2µe i ) = 1 m−1∑mλ = 1 mi=0m−1∑i=0l i − λ − 2µ mm−1∑i=0e i = 0;l i . (3.26)Vrátime sa k sústave rovníc (3.25). Jednotlivé rovnice vynásobíme zodpovedajúcimi hodnotamie i a výsle<strong>do</strong>k spočítame cez všetky hodnoty i. DostávameUpravíme1mm−1∑i=0a určíme koeficient µ:()l i e i − λe i − 2µe 2 i = 1 m−1∑mi=0m−11 ∑l i e i = 2µ mmi=0µ = 12mσ 2 m−1l i e i − λ mm−1∑i=0e 2 i ,m−1∑i=0e i − 2µ mm−1∑i=0e 2 i = 0.∑l i e i . (3.27)Napokon vynásobíme jednotlivé rovnice sústavy (3.25) príslušnými hodnotami l i a výsledkynásobenia sčítame cez všetky i:1mm−1∑i=0)(l 2 i − λl i − 2µl i e i = 1 mm−1∑i=0i=0l 2 i − λ mDosadíme hodnoty konštánt µ, λ <strong>do</strong> (3.28) a upravíme(m−11 ∑l 2 im−i=0(m−11 ∑l 2 im−i=01m1mm−1∑i=0m−1∑i=0m−1∑i=0∑i=0l i − 2µ mm−1∑i=0) 2 (l i − 1 m−1) 2σ 2 m 2 l i e i = 0;) 2 (l i = 1 1σ 2 mm−1∑i=0l i e i) 2.l i e i = 0. (3.28)


44 KAPITOLA 3. NEROVNOMERNÉ KÓDY⎡⎣ 1 mm−1∑i=0(l 2 i − 1mm−1∑i=0) 2⎤(m−1l i⎦ · σ 2 1 ∑= Var(l)Var(e) =mi=0l i e i) 2.To znamená, že pre fixovanú hodnotu disperzie chýb, σ 2 , sa extrémne odchýlky cenykódu (v kladnom alebo zápornom smere) <strong>do</strong>sahujú pre kódy, ktoré majú vel’kú disperziudĺžok kó<strong>do</strong>vých slov. Ináč povedané, čím väčšie sú rozdiely v dĺžkach kó<strong>do</strong>vých slov,tým väčšiu ochýlku (zlepšenie alebo zhoršenie) ceny kódu môžu spôsobit’ chyby v pravdepo<strong>do</strong>bnostiachjednotlivých zdrojových symbolov. Príkla<strong>do</strong>m kódu so stabilnou cenou jeblokový kód, pre ktorý sa žiadne odchýlky v pravdepo<strong>do</strong>bnostiach neprejavia zmenouceny kódu. (Otázne však je, či pre skutočné rozdelenie pravdepo<strong>do</strong>bností bude pôvodnýkód optimálny. Tento problém naše odvodenie nerieši.)Príklad.Ilustrujeme predchádzajúce úvahy na Huffmanových kó<strong>do</strong>ch z príkladu 3.3.4.Pripomíname, že sme zostrojili dva optimálne Huffmanove kódy pre rozdelenie pravdepo<strong>do</strong>bnostíP, pričom kód V mal kó<strong>do</strong>vé slová dĺžok {1, 2, 3, 4, 5, 5} a kód V′ mal kó<strong>do</strong>véslová dĺžok {2, 2, 3, 3, 3, 3}. V prvom prípade bola disperzia dĺžok kó<strong>do</strong>vých slov Var(l) =209 , v druhom Var(l′ ) = 2 9. V nasledujúcej tabul’ke uvádzame príklad chýb v pravdepo<strong>do</strong>bnostiachźdrojových symbolov, ktoré viedli k rozličným odchýlkam cien kó<strong>do</strong>v.p i l i l ′ ie i △ i △ ′ i0.375 1 2 −0.1250 −0.1250 −0.2500.250 2 2 0 0 00.125 3 3 0 0 00.125 4 3 0 0 00.0625 5 3 +0.0625 +0.3125 +0.18750.0625 5 3 +0.0625 +0.3125 +0.18750 +0.500 +0.125Vplyv chýb v pravdepo<strong>do</strong>bnostiach symbolov na cenu Huffmanovho kódu.Huffmanov kód je pomerne o<strong>do</strong>lný voči malým odchýlkam v pravdepo<strong>do</strong>bnostiachzdrojových symbolov. Ak chceme minimalizovat’ vplyv týchto odchýlok na cenu kódu,pri konštrukcii Huffmanovho kódu budeme zarad’ovat’ vypočítanú pravdepo<strong>do</strong>bnost’ <strong>do</strong>zoznamu tak vysoko, ako sa len bude dat’.3.3.6 Kó<strong>do</strong>vanie Markovovského zdrojaMatematický model, ktorý sma používali až <strong>do</strong>teraz na popis zdroja informácie, bolznačne zjednodušený. V textoch zapísaných v prirodzenom jazyku sú medzi jednotlivýmiznakmi závislosti, ktoré sme <strong>do</strong>teraz zanedbávali. Napríklad v slovenčine sa pomäkkých spoluhláskach takmer nikdy nepíše ypsilon, po tvrdých spoluhláskach zasamäkké i, v textoch sa nevyskytujú viac ako tri za sebou idúce samohlásky ani dlhé postupnostizložené zo samotných spoluhlások a pod. Popísat’ však <strong>do</strong>statočne presne takétozákonitosti prirodzeného jazyka by bolo <strong>do</strong>st’ náročné. Pre naše potreby vystačímes omnoho jednoduchším matematickým modelom a zdroj budeme popisovat’ pomocouMarkovovských ret’azcov. Budeme predpokladat’, že zdroj S v diskrétnych časovýcho


3.3. KVÁZIOPTIMÁLNE KÓDY A OPTIMÁLNY KÓD 45okamihoch (taktoch, krokoch) generuje symboly zo zdrojovej abecedy Σ S = {s 0 , . . . , s q−1 };činnost’ zdroja budeme popisovat’ pomocou postupnosti náhodných premenných S t , t =0, . . . , 7 ktorá spĺňa nasledujúcu podmienku: pre l’ubovol’né prirodzené číslo n a l’ubovol’-né čísla i 0 , . . . , i n+1 ∈ {0, . . . , q − 1} platíP(S n+1 = s in+1 |S 0 = s i0 , . . . , S n = s in ) = P(S n+1 = s in+1 |S n = s in ). (3.29)Podmienka 3.29 vyjadruje skutočnost’, že pravdepo<strong>do</strong>bnost’ výskytu symbolu v (n + 1)-vom kroku závisí len od toho, aký symbol bol na výstupe zdroja v predchádzajúcomkroku n. Postupnost’ náhodných premenných ktorá spĺňa podmienku 3.29 sa nazývaMarkovovský ret’azec. Analogicky, zdroj S ktorý spĺňa podmienku 3.29, budeme nazývat’Markovovským zdrojom. Podmienené pravdepo<strong>do</strong>bnosti P(S n+1 = s in+1 |S n = s in ) sanazývajú pravdepo<strong>do</strong>bnost’ami prechodu. Pravdepo<strong>do</strong>bnosti prechodu vo všeobecnostizávisia od parametra n (znaky sa vyskytujú s inými pravdepo<strong>do</strong>bnost’ami napríklad vhlavičkých ako v textoch programov). Budeme však predpokladat’, že pravdepo<strong>do</strong>bnostiprechodu nezávisia od časového parametra n. Takýto Markovovský zdroj sa nazývahomogénny. Zdroj S popíšeme pomocou matice pravdepo<strong>do</strong>bností prechodu. Kvôlizjednodušeniu zápisu budeme pravdepo<strong>do</strong>bnost’ P(S n+1 = s j |S n = s k ) označovat’ symbolomp j,k . Matica pravdepo<strong>do</strong>bností prechodu zdroja S bude mat’ nasledujúci tvar:M =⎛⎞p 0,0 p 1,0 . . . p q−1,0⎜ p 0,1 p 1,1 . . . p q−1,1⎟⎝⎠p 0,q−1 p 1,q−1 . . . p q−1,q−1Matica M má všetky prvky nezáporné a súčet prvkov v l’ubovol’nom riadku je rovný 1.(Takáto matica sa nazýva stochastická.) Ak poznáme symbol, ktorý sa objavil na výstupezdroja, pomocou matice pravdepo<strong>do</strong>bností prechodu M vieme určit’ pravdepo<strong>do</strong>bnostivýskytu symbolov na výstupe zdroja v nasledujúcom i v d’alších časových okamihoch.Nech sa v 0-tom kroku objavil na výstupe zdroja symbol s 0 . Potom sa v nasledujúcomkroku budú na výstupe zdroja objavovat’ symboly zo zdrojovej abecedy s pravdepo<strong>do</strong>bnost’ami(1, 0, . . . , 0) × M = (p 0,0 , p 1,0 , . . . , p q−1,0 ).Rozdelenie pravdepo<strong>do</strong>bností symbolov na výstupe zdroja v d’alšom kroku by sme vypočítaliako súčin rozdelenia pravdepo<strong>do</strong>bností v 1. kroku a matice M:(p 0,0 , p 1,0 , . . . , p q−1,0 ) × M = (1, 0, . . . , 0) × M 2 .(Namiesto toho, aby sme v kaž<strong>do</strong>m kroku prácne počítali súčin vektora a matice M,využijeme poznatok, že matica pravdepo<strong>do</strong>bností prechodu po m krokoch sa rovná m-tej mocnine matice pravdepo<strong>do</strong>bností prechodu po jednom kroku; M. [14].) Ilustrujemeuvedené pojmy na príklade.Príklad. Uvažujeme Markovovský zdroj S so štvorprvkovou abece<strong>do</strong>u Σ S = {a, b, c, d}.Vzt’ahy medzi symbolami sú popísané pomocou nasledujúcej matice pravdepo<strong>do</strong>bností7 rozdelenie pravdepo<strong>do</strong>bností symbolov s 0 , . . . , s q−1 v t-tom kroku budeme označovat’ nasle<strong>do</strong>vne:{p (t)0 , . . . , p(t) q−1 }.


46 KAPITOLA 3. NEROVNOMERNÉ KÓDYprecho<strong>do</strong>v:M =⎛⎜⎝0.1 0.4 0.2 0.30.5 0.1 0.2 0.20.5 0.2 0.2 0.10.6 0.1 0.2 0.1⎞⎟⎠Nech p = (1, 0, 0, 0) je rozdelenie pravdepo<strong>do</strong>bností symbolov v kroku 0. Potom rozdeleniepravdepo<strong>do</strong>bností symbolov v kroku 1 bude (0.1, 0.4, 0.2, 0.3). Vypočítame niekol’komocnín matice M :M 16 =M 8 =⎛⎜⎝⎛⎜⎝M 4 =M 2 =⎛⎜⎝⎛⎜⎝0.49 0.15 0.20 0.160.32 0.27 0.20 0.210.31 0.27 0.20 0.220.27 0.30 0.20 0.23⎞⎟⎠0.3933 0.2160 0.2000 0.19070.3619 0.2379 0.2000 0.20020.3597 0.2394 0.2000 0.20090.3524 0.2445 0.2000 0.2031⎞⎟⎠0.37199797 0.23084535 0.20000000 0.197156680.37092176 0.23159571 0.20000000 0.197482530.37084603 0.23164851 0.20000000 0.197505460.37059591 0.23182290 0.20000000 0.197581190.3712427184 0.2313719296 0.2000000000 0.19738535200.3712414540 0.2313728112 0.2000000000 0.19738573480.3712413650 0.2313728732 0.2000000000 0.19738576170.3712410712 0.2313730782 0.2000000000 0.1973858506V postupnosti matíc je vidiet’ istú zákonitost’—ako keby matice konvergovali k nejakejlimitnej matici. Pozrieme sa na túto skutočnost’ z iného hl’adiska. Ako ovplyvnívýskyt konkrétneho symbolu v 0-tom kroku rozdelenie pravdepo<strong>do</strong>bností výskytu symboluv n-tom kroku? V nasledujúcej tabul’ke je uvedené rozdelenie pravdepo<strong>do</strong>bností(náhodnej premennej) S 16 za predpokladu, že S 0 = a (b, c, d).⎞⎟⎠⎞⎟⎠p a p b p c p dS 0 = a 0.3712427184 0.2313719296 0.2000000000 0.1973853520S 0 = b 0.3712414540 0.2313728112 0.2000000000 0.1973857348S 0 = c 0.3712413650 0.2313728732 0.2000000000 0.1973857617S 0 = d 0.3712410712 0.2313730782 0.2000000000 0.1973858506Vidíme, že že rozdelenie pravdepo<strong>do</strong>bností symbolov v 16-tom kroku nezávisí od toho,aký symbol bol na výstupe zdroja v nultom kroku. Markovovský zdroj popísaný v príklade3.3.6 je zvláštnym prípa<strong>do</strong>m tzv. ergodického Markovovského zdroja. Definujemeergodický Markovovský zdroj formálne.


3.3. KVÁZIOPTIMÁLNE KÓDY A OPTIMÁLNY KÓD 47Definícia 3.3.1. Nech rozdelenie pravdepo<strong>do</strong>bností náhodnej premennej S n konvergujek limitnému rozdeleniu pravdepo<strong>do</strong>bností; t.j.limn→∞ p(n) k= p k ; k = 0, . . . , q − 1a limitné rozdelenie pravdepo<strong>do</strong>bností {p 0 , . . . , p q−1 } nezávisí od počiatočného rozdeleniapravdepo<strong>do</strong>bností symbolov, potom sa Markovovský zdroj nazýva ergodickým Markovovskýmzdrojom.Z hl’adiska kó<strong>do</strong>vania nás zaujíma pre<strong>do</strong>všetkým spomínané limitné rozdelenie pravdepo<strong>do</strong>bností.Ak je zdroj S ergodický, tak takéto limitné rozdelenie pravdepo<strong>do</strong>bností existujea musí spĺňat’ nasledujúci vzt’ah:(p 0 , . . . , p q−1 ) × M = (p 0 , . . . , p q−1 ). (3.30)Podmienku, ktorú musí spĺňat’ zdroj na to, aby bol ergodický, stanovuje nasledujúcaveta.Veta 3.3.5. (Markovova, [14]) Nech je S Markovovský zdroj s abece<strong>do</strong>u Σ S = {s 0 , . . . , s q−1 }a p (m)j,kje pravdepo<strong>do</strong>bnost’ prechodu s j → s k po m krokoch. Ak existujú také prirodzenéčísla s > 0, k 0 ≥ 0, že ∀j, j = 0, . . . , q − 1 platí p (s)j,k 0> 0; t.j. v matici M s existuje aspoňjeden stĺpec, ktorý má všetky prvky kladné, tak potom je Markovovský zdroj S ergodický,t.j. existujú limitné pravdepo<strong>do</strong>bnostilimn→∞ p(n) j,k = p k, k = 0, . . . , q − 1,nezávislé na indexe j. Postupnost’ p 0 , . . . , p q−1 je jediné nezáporné riešenie sústavy rovnícktoré vyhovuje podmienkeq−1∑p k = p j p j,k , k = 0, . . . , q − 1,j=0q−1∑p j = 1.j=0T.j. limitné rozdelenie p 0 , . . . , p q−1 je stacionárnym rozdelením pravdepo<strong>do</strong>bností Markovovskéhozdroja.Poznámka. Stacionárne rozdelenie pravdepo<strong>do</strong>bností je počiatočné rozdelenie pravdepo<strong>do</strong>bností,pri ktorom majú všetky (náhodné premenné) S n , n = 0, . . . rovnaké rozdeleniepravdepo<strong>do</strong>bností.Ak teda v matici M alebo jej niektorej nenulovej mocnine existuje stĺpec, v ktoromsú všetky prvky nenulové, potom je zdroj S ergodický a riešením sústavy (3.30) nájdemestacionárne limitné rozdelenie pravdepo<strong>do</strong>bností. Pripomíname, že matica M nie je regulárna,a preto sústavu (3.30) treba riešit’ za predpokladup 0 + · · · + p q−1 = 1.


48 KAPITOLA 3. NEROVNOMERNÉ KÓDYPríklad. Nájdeme stacionárne limitné rozdelenie pravdepo<strong>do</strong>bností ergodickéhoMarkovovského zdroja S z príkladu 3.3.6. (Ergodickost’ Markovovského zdroja S vyplývaz toho, že už v samotnej matici M sú všetky prvky kladné.) Riešime sústavu rovnícp a = 0.1 ∗ p a + 0.5 ∗ p b + 0.5 ∗ p c + 0.6 ∗ p dp b = 0.4 ∗ p a + 0.1 ∗ p b + 0.2 ∗ p c + 0.1 ∗ p dp c = 0.2 ∗ p a + 0.2 ∗ p b + 0.2 ∗ p c + 0.2 ∗ p dp d = 0.3 ∗ p a + 0.2 ∗ p b + 0.1 ∗ p c + 0.1 ∗ p d1 = p a + p b + p c + p dRiešením tejto sústavy je vektorP = (p a = 0.3712418301, p b = 0.2313725490, p c = 0.2000000000, p d = 0.1973856209).Poznanie limitného rozdelenia pravdepo<strong>do</strong>bností možno využit’ na zostrojenie Huffmanovhokódu Markovovského zdroja S. V našom prípade by Huffmanov kód bol blokovýkód dĺžky 2 s cenou L(V, P) = 2. Huffmanov kód Markovovského zdroja S však nevyužívalvzt’ahy medzi jednotlivými symbolmi. Navrhneme efektívnejšie kó<strong>do</strong>vanie Markovovskéhozdroja S . Najprv zostrojíme Huffmanove kódy V a , V b , V c , V d pre rozdelenia pravdepo<strong>do</strong>bnostíP( |a), P( |b), P( |c), P( |d). Jednotlivé kódy a ich ceny sú uvedené v tabul’ke.a b c d L(V x , P)V a 001 1 000 01 1.9V b 1 001 01 000 1.8V c 1 01 000 001 1.8V d 0 100 11 101 1.6vytvorenú Markovovským zdrojom S budeme kó-Postupnost’ symbolov s i0 s i1 . . . s im<strong>do</strong>vat’ nasle<strong>do</strong>vne:1. prvý symbol, s i0 zakódujeme pomocou pevne stanoveného kódu, napríklad V s0 ;2. i-ty symbol postupnosti zakódujeme pomocou kódu V si−1 ; i = 1, . . . m.Pri dekó<strong>do</strong>vaní najprv dekódujeme prvý symbol,s i0 , zakó<strong>do</strong>vaný pomocou kódu V s0 ; najeho základe určíme kód V si0 , ktorým je kó<strong>do</strong>vaný druhý symbol, s i1 , atd’. Kód Markovovskéhozdroja budeme kvôli jednoduchosti nazývat’ Markovovským kó<strong>do</strong>m.Príklad. Nech postupnost’ ababcadadca vytvoril Markovovský zdroj z príkladu 3.3.6.Jeho kó<strong>do</strong>vanie je popísané v nasledujúcej tabul’ke.znak a b a b c a d a d c apoužitý kód V a V a V b V a V b V c V a V d V a V d V ckó<strong>do</strong>vé slovo 001 1 1 1 01 1 01 0 01 11 1Na zakó<strong>do</strong>vanie postupnosti dĺžky 11 sme potrebovali 17-bitový ret’azec.


3.4. KÓDOVANIE POMOCOU ORÁKULA 49Cena kódu Markovovského zdroja závisí od cien čiastkových kó<strong>do</strong>v V si a limitnéhorozdelenia pravdepo<strong>do</strong>bností a dá sa vypočítat’ na základe nasledujúceho vzt’ahu:q−1∑L(M, V) = p i L(P( |s i ), V si ).i=0Porovnáme na záver cenu Hufmannovho kódu (pre limitné rozdelenie pravdepo<strong>do</strong>bností),entropiu limitného rozdelenia pravdepo<strong>do</strong>bností a cenu kódu Markovovskéhozdroja z predchádzajúceho príkladu.entropia limitného rozdelenia 1.945755388cena Huffmanovho kódu 2.000000000cena Markovovského kódu 1.797647058Využitím závislostí medzi jednotlivými symbolmi sme <strong>do</strong>stali cenu kódu, ktorá je výraznenižšia ako entropia limitného rozdelenia pravdepo<strong>do</strong>boností. 83.4 Kó<strong>do</strong>vanie pomocou orákulaHuffmanov kód využíval to, že sme poznali rozdelenie pravdepo<strong>do</strong>bností symbolov vzdrojovom texte; Markovovský kód zasa vychádzal z poznania štatistických zákonitostímedzi symbolmi, ktoré nasle<strong>do</strong>vali bezprostredne za sebou. Bolo by možné zostrojit’aj iné kódy, ktoré by využívali iné zákonitosti v zdrojových textoch. Uvedieme jednuvšeobecnú metódu kó<strong>do</strong>vania, tzv. kó<strong>do</strong>vanie s predpoved’ou, ktorá zahŕňa viacerošpeciálnych prípa<strong>do</strong>v. Podstata tejto metódy spočíva v nasledujúcom (Obr. 3.3): ZdrojS generuje binárnu postupnost’ α = a 0 a 1 . . . , orákulum O 1 sa pokúša „uhádnut’“ výstupzdroja S a generuje binárnu postupnost’ β = b 0 b 1 . . . . Obe postupnosti sa následnesčítavajú bit po bite modulo 2 a výsledná postupnost’ {a i ⊕ b i } i≥0 vstupuje <strong>do</strong> kódera.Ak sa orákulu podarí „uhádnut’“ správne hodnotu symbolu a i generovaného zdrojom,a i ⊕ b i = 0. Postupnost’ α ⊕ β vstupujúca <strong>do</strong> kódera pozostáva zo súvislých postupnostípozostávajúcich zo samých núl, ktoré sú oddelené jednotkami. Kóder zakóduje pozíciejednotiek a pošle ich po prenosovom kanáli príjemcovi. Dekóder príjemcu transformujekó<strong>do</strong>vanú správu opät’ <strong>do</strong> tvaru postupností núl oddelených jednotkami;{a i ⊕ b i } i≥0 . Tátopostupnost’ vstupuje <strong>do</strong> člena realizujúceho sčítanie modulo 2, v ktorom sa sčítava svýstupom orákula O 2 generujúceho tú istú binárnu postupnost’ β = b 0 b 1 . . . ako orákulumO 1 . Výsledkom je postupnost’ {a i ⊕ b i ) ⊕ b i } i≥0 = {a i } i≥0 ; t.j postupnost’ generovanázdrojom S. Doplníme niektoré predpoklady a ukážeme, aké výsledky sa dajú <strong>do</strong>siahnut’omocou kó<strong>do</strong>vania s predpoved’ou. Predpokladáme, že orákulump O 1 „uhádne“ správnyvýsle<strong>do</strong>k (jeden bit generovaný zdrojom S ) s pravdepo<strong>do</strong>bnost’ou p a generuje opačnúhodnotu s pravdepo<strong>do</strong>bnost’ou q = 1 − p. Ďalej predpokladáme, že výsle<strong>do</strong>k hádaniasymbolu v i-tom kroku neovplyvní výsle<strong>do</strong>k hádania v d’alších krokoch.Pozrime sa teraz na kó<strong>do</strong>vanie postupnosti {a i ⊕b i } i≥0 . V závislosti od kvality orákula(vyjadrenej pravdepo<strong>do</strong>bnost’ou p) budú sa v binárnej postupnosti vyskytovat’ kratšie8 ktorá závislosti medzi jednotlivými symbolmi nezohl’adňuje.


50 KAPITOLA 3. NEROVNOMERNÉ KÓDY✓✏ ✓✏✓✏S ✲ + ✲ kóder ✲ dekóder ✲ + ✲✒✑ ✒✑✒✑✓✏ ✻✓✏ ✻O 1O 2✒✑✒✑Obrázok 3.3: Kó<strong>do</strong>vanie s predpoved’oualebo dlhšie postupnosti núl ukončené jednotkami:α ⊕ β = 000001001100000000000010000100000010010010100011...Takúto postupnost’ možno jednoznačne určit’ postupnost’ou prirodzených čísel, n 0 , n 1 , . . .vyjadrujúcich dĺžky nulových podpostupností. Pre vyššie uvedenú binárnu postupnost’α ⊕ β bude postupnost’ prirodzených čísel vyzerat’ nasle<strong>do</strong>vne:5, 2, 0, 12, 4, 6, 2, 2, 1, 3, 0, . . . .Existuje viacero možností kó<strong>do</strong>vania postupnosti n 0 , n 1 , . . . . Kvôli jednoduchosti použijemena začiatok blokový kód dĺžky k. Ked’že binárne slovo dĺžky k <strong>do</strong>káže rozlíšit’ 2khodnôt, postupnosti 0 n 1 kde n ≥ 2 k sa už pomocou jedného kó<strong>do</strong>vého slova nedajú zakó<strong>do</strong>vat’.Označíme symbolom C kó<strong>do</strong>vú transformáciu realizovanú kóderom, potom Cmožno definovat’ nasle<strong>do</strong>vne:{ n ak n < 2C(0 n k − 1,1) =2 k − 1C(0 n−2k +1 ) ak n ≥ 2 k − 1.Binárna postupnost’0 } .{{ . . 0}0 } .{{ . . 0}0 } .{{ . . 0}12 k −1 2 k −1 2 k −2bude kó<strong>do</strong>vaná binárne zapísanou trojicou čísel 2 k − 1, 2 k − 1, 2 k − 2 dĺžky 3k. Už z tohtojednoduchého príkladu je zrejmé, že efektívnost’ kó<strong>do</strong>vania s predpoved’ou bude závisiet’od výberu parametra k. Ukážeme, ako na základe p vybrat’ optimálnu hodnotu parametrak. Postupnosti 0 j 1 sa vyskytujú s pravdepo<strong>do</strong>bnost’ami p j q j = 0, 1, . . . . Ked’že∑p j q = q ∑ p j =q1 − p = 1,j≥0 j≥0množina postupností {0 j 1} j≥0 s pravdepo<strong>do</strong>bnost’ami P(0 j 1) = p j q tvorí pravdepo<strong>do</strong>bnostnýpriestor. Vypočítame dĺžky kó<strong>do</strong>v jednotlivých postupností a potom určíme strednúhodnotu dĺžky kó<strong>do</strong>vej postupnosti potrebnej na zakó<strong>do</strong>vanie jednej postupnosti 0j 1. Vnasledujúcej tabul’ke sú uvedené dĺžky kó<strong>do</strong>v postupností 0j 1 pre jednotlivé hodnoty j(označme kvôli zjednodušeniu zápisu symbolom m hodnotu 2 k − 1):dĺžka postupnosti dĺžka kódu0 . . . m − 1 km . . . 2m − 1 2k2m . . . 3m − 1 3k


3.4. KÓDOVANIE POMOCOU ORÁKULA 51Stredná hodnotu dĺžky kó<strong>do</strong>vej postupnosti potrebnej na zakó<strong>do</strong>vanie jednej postupnosti0 j 1 je[] []k q + pq + · · · + p m−1 q + 2k p m q + p m+1 q + · · · + p 2m−1 q +[]+3k p 2m q + p 2m+1 q + · · · + p 3m−1 q + · · · = kq 1 − pm []1 + 2p m + 3 2m + . . . =1 − pk=1 − q m .Na zaklade výrazuvýpočet minima výrazuk1−q mk1−q mnájdeme optimálnu hodnotu dĺžky bloku k. Ked’že analytickýby mohol byt’ príliš zložitý,(1 − p 2k −1 ) −1+kp 2k −1 2 k ln(2) ln(p)(1 − p 2 k −1 ) 2= 0vypočítame hodnoty výrazuk1−q m pre rozličné p a k a určíme optimálne k:p 0.5 0.6 0.7 0.8 0.9 0.95 0.99 0.999k = 1 2.0 2.5 3.3 5.0 10 20 100 1000k = 2 2.29 2.55 3.04 4.09 7.38 14.02 67.33 667.33k = 3 3.02 3.09 3.27 3.80 5.75 9.94 44.16 429.86k = 4 4.00 4.00 4.02 4.15 5.04 7.45 28.58 268.54k = 5 5.00 5.00 5.00 5.00 5.20 6.28 18.68 163.72k = 6 6.00 6.00 6.00 6.00 6.00 6.24 12.79 98.22k = 7 7.00 7.00 7.00 7.00 7.00 7.01 9.71 58.66k = 8 8.00 8.00 8.00 8.00 8.00 8.00 8.66 35.52k = 9 9.00 9.00 9.00 9.00 9.00 9.00 9.05 22.48k = 10 10.00 10.00 10.00 10.00 10.00 10.00 10.00 15.61k = 11 12.63


52 KAPITOLA 3. NEROVNOMERNÉ KÓDY


Kapitola 4Metódy kompresie údajov4.1 Slovníkové metódy kompresie dátV tejto kapitole uvedieme niektoré slovníkové metódy kompresie dát. Tieto metódy sasnažia využit’ na kompresiu skutočnost’, že v dátach sa častokrát opakujú rovnaké postupnostiznakov.4.2 LZ77Autormi tohto algoritmu sú Lempel a Ziv (v roku 1977). Mnohé d’alšie slovníkové algoritmyboli inšpirované práve LZ77. Pri popise algoritmu budeme používat’ nasledujúcepojmy:• Pozícia – aktuálna pozícia, na ktorej sa pri kó<strong>do</strong>vaní/dekó<strong>do</strong>vaní nachádzame. Začínamena prvom znaku a postupne pokračujeme až k poslednému znaku vstupnéhotextu.• Okno – posledných w spracovaných znakov (pri kompresii). Znak na pozícii sa <strong>do</strong>okna už nepočíta.• Buffer – postupnost’ znakov vo vstupnom texte začínajúca pozíciou.4.2.1 Kompresia (kó<strong>do</strong>vanie)Označme vstupný (komprimovaný) text T a nech jeho dĺžka je n. Nech p ∈ {0, . . . , n − 1}označuje pozíciu. To znamená, že okno je postupnost’ (podret’azec) T[p − w, . . . , p − 1] abuffer T[p, . . . , n − 1]. Ak p < w, tak je okno, prirodzene, kratšie. Hlavná myšlienkaalgoritmu spočíva v tom, že hl’adáme najdlhší ret’azec v okne, ktorý je zároveň prefixombuffra. Teda hl’adáme maximálne k ≤ n − p také, že existuje i ∈ {p − w, . . . , p − k}:T[i, . . . , i + k − 1] = T[p, . . . , p + k − 1]. (4.1)53


54 KAPITOLA 4. METÓDY KOMPRESIE ÚDAJOVp-wip……………oknobufferPostup pri kompresii je nasledujúci:1. p = 12. pokial’ je p < n opakujeme:(a) nájdeme i a k podl’a (4.1)(b) výstupom je trojica〈i − (p − w) + 1, k, T[p + k]〉(c) p ← p + k + 1Prvý člen vo výstupnej trojici označuje index v okne, číslovaný pre aktuálne okno od1, kde začína nájdený najdlhší zhodný ret’azec. Tento spôsob zaručuje, že index je vždyprvok z {1, . . . , w}. Uvedený postup nerieši niektoré situácie, ktoré pri kompresii môžunastat’. Prípad k = 0 nastane, ak sa v okne nenachádza znak T[p]. Vtedy dáme na výstuptrojicu 〈0, 0, T[p]〉. Ak najdlhší podret’azec „vyčerpá“ všetky znaky z buffra, t.j. k = n − p,tak zhodu skrátime o 1 a na výstup dáme trojicu 〈i − (p − w) + 1, k − 1, T[n − 1]〉.Príklad: Nech T = aababbcbababcb (n = 14). Tabul’ka ukazuje priebeh činnosti algoritmu,pričom zhoda udáva najdlhší nájdený ret’azec v okne. Vzhl’a<strong>do</strong>m na malý rozsahpríkladu nie je vel’kost’ okna obmedzená.p T[p] zhoda výstup0 a − 〈0, 0, a〉1 a a 〈1, 1, b〉3 a ab 〈2, 2, b〉6 c − 〈0, 0, c〉7 b bab 〈3, 3, a〉11 b bcb 〈6, 2, b〉4.2.2 Dekompresia (dekó<strong>do</strong>vanie)Dekóvanie je jednoduché. Po<strong>do</strong>bne ako pri kó<strong>do</strong>vaní si budujeme a udržiavame okno, vtomto prípade to bude posledných w znakov daných na výstup. Na začiatku je, prirodzene,prázdne. Postupne čítame trojice zo vstupu a na výstup dáme príslušný ret’azec z okna(určený indexom a dĺžkou) <strong>do</strong>plnený znakom z trojice. Ak má vstupná trojica tvar〈0, 0, x〉, tak je výstupom samotný znak x.


4.2. LZ77 554.2.3 PoznámkyLZ77 je relatívne rýchly algoritmus, pričom dekó<strong>do</strong>vanie je ovel’a rýchlejšie ako kó<strong>do</strong>vanie,ked’že nie je potrebné vyhl’adávat’ najdlhší zhodný podret’azec a len sa „vypisuje“.Podstatnou z hl’adiska rýchlosti kó<strong>do</strong>vania a <strong>do</strong>siahnutého kompresného pomeru jevol’ba vel’kosti okna. Dlhé okno umožňuje nachádzat’ lepšie zhody, ale zároveň podstatnezvyšuje časovú zložitost’ kó<strong>do</strong>vania. Navyše, dlhšie okno zvyšuje počet bitov potrebnýchna zápis indexu a dĺžky vo výstupe (prvý a druhý prvok výstupnej trojice). Krátke oknonaopak „zahadzuje“ potenciálne cenné informácie o prechádzajúcej po<strong>do</strong>be textu skoro,čím obmedzuje možnost’ nájst’ dlhšie ret’azce zhody a predlžuje výstupný text. Na druhejstrane krátke okno znižuje časovú zložitost’ a <strong>do</strong>vol’uje použit’ na zápis indexu a dĺžkymenší počet bitov.Použitie okna v LZ77 zabezpečuje, že algoritmus je orientovaný na využitie poslednevidených znakov. Teda charakteristiky zo začiatku textu neberieme <strong>do</strong> úvahy. To môžebyt’ pri niektorých typoch dát podstatnou výho<strong>do</strong>u.LZ77 je možné rôzne modifikovat’ – použit’ cyklické okno, variabilne menit’ vel’kost’okna a po<strong>do</strong>bne. Medzi významnejšie úpravy patrí spracovanie výstupu d’alšími algoritmami.Dá sa očakávat’, že žiadna z troch súradníc výstupnej trojice nie je rovnomernedistribuovanou náhodnou premennou. Preto môžeme použit’ štatistické kó<strong>do</strong>vanie (napr.Huffmanovo, aritmetické) na následnú transformáciu jednotlivých „stôp“ výstupu.4.2.4 LZSSDôležitým algoritmom odvodeným z LZ77 je LZSS. LZSS rieši problém znakov, ktoré sanevyskytujú v okne inak ako LZ77. LZSS si stanoví, akú minimálnu dĺžku musí mat’ret’azec zhody. Ak je nájdený ret’azec kratší, tak na výstup ide samotný znak (T[p])a posunieme pozíciu d’alej. Ak má ret’azec <strong>do</strong>statočnú dĺžku, dáva na výstup dvojicu〈i − (p − w), k〉 (bez d’alšieho znaku, preto aj posun p je iný: p ← p + k). Teda LZSS dávana výstup dva typy informácií. Aby ich bolo možné rozlíšit’ pri dekó<strong>do</strong>vaní, pridáme pre<strong>do</strong>ba typy identifikačný bit.Uved’me príklad činnosti LZSS pre vstupný text T = aababbcbababcb (rovnaký akov príklade pre LZ77). Minimálna poža<strong>do</strong>vaná vel’kost’ zhody je 2.p T[p] zhoda výstup0 a − 0, a1 a a 0, a2 b − 0, b3 a ab 1, 〈1, 2〉5 b b 0, b6 c − 0, c7 b bab 1, 〈2, 3〉10 a ab 1, 〈1, 2〉12 c cb 1, 〈6, 2〉LZSS vo všeobecnosti <strong>do</strong>sahuje lepšie kompresné pomery ako LZ77, s porovnatel’ný-


56 KAPITOLA 4. METÓDY KOMPRESIE ÚDAJOVmi pamät’ovými a časovými nárokmi. Dekó<strong>do</strong>vanie je vel’mi jednoduché a rýchle. Pretoslúži ako základ pre d’alšie známe algoritmy – ARJ (kombinácia LZSS s Huffmanovýmkó<strong>do</strong>vaním), PKZip a pod. Odlišnosti iných algoritmov môžu spočívat’ vo vel’kosti okna,v spracovaní výstupov (pozícií) a znakov štatistickým kó<strong>do</strong>vaním (napr. Huffmanovým),v spôsobe posunu okna a jeho premenlivej vel’kosti, v spôsobe určenia minimálnej dĺžkyret’azca zhody a pod.4.3 LZWAutorom algoritmu je Welch (1984). LZW je v podstate vylepšením algoritmu LZ78.Špeciálna implementácia LZW sa používa na kompresiu v grafickom formáte GIF. Inývariant používa utilita compress v UNIXových systémoch. Algorimus si počas spracovávaniavstupu buduje slovník, ktorý využíva na kó<strong>do</strong>vanie. Pri popise algoritmu budemepoužívat’ nasledujúce pojmy:• Slovník – postupnost’ ret’azcov• Kó<strong>do</strong>vé slovo – index (pozícia) konkrétneho ret’azca v slovníku4.3.1 Kompresia (kó<strong>do</strong>vanie)Symbolom + označíme zret’azenie dvoch ret’azcov, teda x + y označuje zret’azenie ret’azcovx a y. Nech D je slovník kó<strong>do</strong>vých slov a nech D(x) označuje kó<strong>do</strong>vé slovo ret’azca xv slovníku D. Postup pri kó<strong>do</strong>vaní je nasledujúci:1. zaradíme všetky znaky abecedy <strong>do</strong> D2. p ← (inicializujeme p ako prázdny ret’azec)3. pokial’ nie sme na konci vstupu:(a) c ← d’alší znak zo vstupu(b) ak je p + c v D:p ← p + c(c) inak:dáme na výstup D(p)pridáme p + c <strong>do</strong> Dp ← c4. dáme na výstup D(p)Poznamenajme, že uvedený postup nepočíta s prázdnym vstupom. Demonštrujme sipostup kó<strong>do</strong>vania LZW na príklade.


4.3. LZW 57Príklad: Nech T = aababbcbababcb je vstupný text. Tabul’ka ukazuje priebeh činnostialgoritmu, pričom stĺpec „slovník“ uvádza kó<strong>do</strong>vé slovo a prislúchajúci ret’azec pridaný<strong>do</strong> slovníka v danom kroku výpočtu. Na začiatku obsahuje slovník tri znaky. Stĺpec prehodnotu p udáva túto hodnotu na konci spracovania vstupného znaku v premennej c.c slovník p výstup0, a1, b2, ca − aa 3, aa a 0b 4, ab b 0a 5, ba a 1b − abb 6, abb b 4c 7, bc c 1b 8, cb b 2a − bab 9, bab b 5a − bab − babc 10, babc c 9b − cb− 84.3.2 Dekompresia (dekó<strong>do</strong>vanie)Dekó<strong>do</strong>vanie prebieha analogicky ako kó<strong>do</strong>vanie. Konštruujeme slovník, ktorý následnepoužívame na dekó<strong>do</strong>vanie a ret’azce zodpovedajúce kó<strong>do</strong>vým slovám dávame na výstup.Na začiatku je opät’ slovník naplnený všetkými znakmi abecedy.Pri dekó<strong>do</strong>vaní môžu nastat’ dva prípady: kó<strong>do</strong>vé slovo sa v slovníku nachádza alebonie. Ak je vstupné kó<strong>do</strong>vé slovo už v slovníku, vieme dat’ na výstup príslušný ret’azec.Zároveň vieme, že pred kó<strong>do</strong>vaním tohto ret’azca sme <strong>do</strong> slovníka zaradili ret’azec, ktorýaj teraz potrebujeme <strong>do</strong> D <strong>do</strong>stat’. Tento ret’azec pozostáva z ret’azca určeného prechádzajúcimkó<strong>do</strong>vým slovom a prvým znakom ret’azca určeného aktuálnym kó<strong>do</strong>vým slovom.Druhý prípad (vstupné kó<strong>do</strong>vé slovo nie je v slovníku) môže nastat’, lebo bu<strong>do</strong>vanieslovníka je pri dekó<strong>do</strong>vaní oneskorené. Nastane však len v tom prípade, ked’ pri kó<strong>do</strong>vanídáme na výstup kó<strong>do</strong>vé slovo, ktoré bolo <strong>do</strong> slovníka pridané ako posledné. Tovšak znamená, že v texte sa vyskytoval za sebou dvakrát rovnaký ret’azec. Preto jeprvý znak ret’azca prislúchajúceho vstupnému kó<strong>do</strong>vému slovu zhodný s prvým znakomret’azca určeného predchádzajúcim kó<strong>do</strong>vým slovom. Teda vieme, aký ret’azec potrebujemepridat’ <strong>do</strong> slovníka a následne aj vypísat’ na výstup. Nasledujúce obrázky ilustrujúoba uvedené prípady (označenia sú prebrané z nižšie uvedeného popisu algoritmu).


58 KAPITOLA 4. METÓDY KOMPRESIE ÚDAJOVp’c’……c<strong>do</strong> slovníkap’…c<strong>do</strong> slovníkac’= p’…Pre zjednodušenie zápisu označme D(x ′ ) ret’azec prislúchajúci kó<strong>do</strong>vému slovu x ′ , tedaopačné zobrazenie ako pri kó<strong>do</strong>vaní. Postup pri dekó<strong>do</strong>vaní je nasledujúci (premennés čiarkou označujú kó<strong>do</strong>vé slová, bez čiarky sú to ret’azce):1. zaradíme všetky znaky abecedy <strong>do</strong> D2. c ′ ← prvé kó<strong>do</strong>vé slovo zo vstupu3. dáme na výstup D(c ′ )4. pokial’ nie sme na konci vstupu:(a) p ′ ← c ′(b) c ′ ← d’alšie kó<strong>do</strong>vé slovo zo vstupu(c) ak je D(c ′ ) v D:dáme na výstup D(c ′ )p ← D(p ′ )c ← prvý znak z D(c ′ )pridáme p + c <strong>do</strong> D(d) inak:p ← D(p ′ )c ← prvý znak z D(p ′ )dáme na výstup p + c (zhodné s D(c ′ ))pridáme p + c <strong>do</strong> DPríklad: Nech abeceda je {a, b, c} a nech postupnost’ kó<strong>do</strong>vých slov (0, 0, 1, 4, 1, 2, 8, 9, 3)je vstupný text. Poznamenajme, že postupnost’ je na začiatku zhodná s výstupom predchádzajúcehopríkladu (pre kontrolu) a na záver sa odlišuje (pre lepšiu demonštráciupostupu). Tabul’ka ukazuje priebeh činnosti algoritmu pri dekó<strong>do</strong>vaní. Stĺpce p, p′ a czobrazujú hodnoty premenných na konci spracovania vstupného kó<strong>do</strong>vého slova.


4.4. ARITMETICKÉ KÓDOVANIE 59vstup p ′ p c slovník výstup0, a1, b2, c0 − a0 0 a a 3, aa a1 0 a b 4, ab b4 1 b a 5, ba ab1 4 ab b 6, abb b2 1 b c 7, bc c8 2 c c 8, cc cc9 8 cc c 9, ccc ccc3 9 ccc a 10, ccca aa4.3.3 PoznámkyVýhoda LZW oproti LZ77 spočíva najmä v rýchlosti kó<strong>do</strong>vania, pretože sa porovnávamenší počet ret’azcov. Modifikácie LZW môžu zahŕňat’ premenlivú dĺžku zápisu kó<strong>do</strong>výchslov (v závislosti na aktuálnej vel’kosti D), odstraňovanie starých ret’azcov zoslovníka a po<strong>do</strong>bne.4.4 Aritmetické kó<strong>do</strong>vanieAritmetické kó<strong>do</strong>vanie je alternatívou k Huffmanovmu kó<strong>do</strong>vaniu. Odstraňuje niektoréjeho ne<strong>do</strong>statky – oddel’uje pravdepo<strong>do</strong>bnostný model zdroja od procesu kó<strong>do</strong>vania (pretosa dá l’ahšie upravit’ na adaptívnu verziu) a nevyžaduje celý počet bitov na kó<strong>do</strong>vaniekaždého znaku (preto je v situáciach ako p a = 1 10 , p b = 9 10výhodnejšie). Spoločnou črtouaritmetického a Huffmanovho kó<strong>do</strong>vania je rovnaký model zdroja – pravdepo<strong>do</strong>bnostivýskytov znakov zdrojovej abecedy (nezávislé). Ked’že pri kó<strong>do</strong>vaní nevyužívajú žiadnekontextové informácie (pozičné závislosti znakov), zvyknú sa označovat’ ako „zero-ordercoders“. Do tejto skupiny patrí aj Shannonov-Fanov kód.4.4.1 Kompresia (kó<strong>do</strong>vanie)Pri kompresii najskôr určíme pravdepo<strong>do</strong>bnosti výskytu jednotlivých znakov zdrojovejabecedy. Nech {c 1 , c 2 , . . . c n } je zdrojová abeceda a nech p 1 , p 2 , . . . p n sú príslušné pravdepo<strong>do</strong>bnosti.Proporčne, podl’a pravdepo<strong>do</strong>bností rozdelíme interval 〈0, 1) na n častí:I 1 = 〈0, p 1 )I 2 = 〈p 1 , p 1 + p 2 )I 3 = 〈p 1 + p 2 , p 1 + p 2 + p 3 ).I n = 〈p 1 + p 2 + · · · + p n−1 , 1).


60 KAPITOLA 4. METÓDY KOMPRESIE ÚDAJOVOznačme p ′ k = ∑ ki=1 p i, pričom p ′ 0= 0. Zároveň symbolom |〈d, h)| označíme dĺžkuintervalu, t.j. hodnotu h − d. Algoritmus na začiatku vychádza z intervalu I = 〈0, 1). Poprečítaní prvého znaku sa interval zúži na príslušnú čast’, podl’a tohto znaku. Teda akje znak na vstupe c k , zúžime interval na I k . Čítaním d’alších znakov nad’alej intervalzužujeme:cI = 〈d, h) ↦−→k〈d + p′k−1 |I|, d + p ′ k |I|). (4.2)Výstupom je l’ubovol’né číslo z výsledného intervalu (najlepšie to, ktoré má najkratšízápis). Hlavná myšlienka spočíva v tom, že znaky, ktoré majú vysokú pravdepo<strong>do</strong>bnost’,zužujú interval najmenej. Čím je interval menší, tým viac bitov potrebujeme na zápisniektorého z čísel, ktoré <strong>do</strong>ň patria (očakávaný počet potrebných bitov je log 21|I| ).1. I ← 〈0, 1)2. pokial’ nie sme na konci vstupu(a) načítame d’alší znak – c k(b) upravíme interval I podl’a (4.2)3. dáme na výstup l’ubovol’né číslo z intervalu IPríklad: Nech vstupným textom je ret’azec aababbcbababcb. Potom pravdepo<strong>do</strong>bnostivýskytu jednotlivých znakov zdrojovej abecedy {a, b, c} sú p a = 5 14 , p b = 7 14 a c = 2 14 .Nasledujúca tabul’ka ukazuje zmenu intervalu I počas spracúvania vstupu. Dolné ahorné hranice sú počítané na 14 desatinných miest.c I〈0 , 1)a 〈0, 00000000000000 , 0, 35714285714286)a 〈0, 00000000000000 , 0, 12755102040816)b 〈0, 04555393586006 , 0, 10932944606414)a 〈0, 04555393586006 , 0, 06833090379009)b 〈0, 05368856726364 , 0, 06507705122865)b 〈0, 05775588296543 , 0, 06345012494794)c 〈0, 06263666180758 , 0, 06345012494794)b 〈0, 06292718435771 , 0, 06333391592789)a 〈0, 06292718435771 , 0, 06307244563277)b 〈0, 06297906338452 , 0, 06305169402205)a 〈0, 06297906338452 , 0, 06300500289792)b 〈0, 06298832749645 , 0, 06300129725315)c 〈0, 06299944443076 , 0, 06300129725315)b 〈0, 06300010615304 , 0, 06300103256424)Potom napríklad číslo 0, 063000679016 . . . je z výsledného intervalu a jeho binárny rozvojje 0, 00010000001000001101. Teda výsledkom kó<strong>do</strong>vania je uvedený dvadstat’bitový ret’azec(bez 0 pred desatinnou čiarkou). Len pre porovnanie, Huffmanov kód potrebuje 21 bitov(a = 10, b = 0, c = 11).


4.4. ARITMETICKÉ KÓDOVANIE 61Spracovanie vstupu bca ilustruje aj nasledujúci obrázok:hcb c abda4.4.2 Dekompresia (dekó<strong>do</strong>vanie)Pri dekó<strong>do</strong>vaní postupujeme analogicky, ako pri kó<strong>do</strong>vaní. Na začiatku nastavíme intervalI = 〈0, 1). Na vstupe máme číslo x ∈ I. Pre zistenie prvého znaku je potrebnéurčit’, v ktorom z potenciálnych n intervalov I 1 , . . . , I n sa x nachádza. Príslušný interval(povedzme I k ) určuje znak (c k ) a zároveň umožní zúžit’ I (I ↦→ I k ).Po<strong>do</strong>bne postupujeme d’alej. Pre aktuálny interval I určujeme k také, že x je prvkomintervalu, ktorý toto k „vyrobí“ z intervalu I podl’a (4.2). Na výstup dáme c k a zúžime I.Otázkou je, ako zistit’, že sme už dekó<strong>do</strong>vali posledný znak. Možné sú dve riešenia:1. Pridáme <strong>do</strong> abecedy špeciálny znak „EOF“ (koniec súboru) a pri dekó<strong>do</strong>vaní postupujemeaž <strong>do</strong>vtedy, kým tento znak nedekódujeme.2. Spolu s výsledným číslom dáme pri kó<strong>do</strong>vaní na výstup aj dĺžku kó<strong>do</strong>vaného ret’azca.Teda dekóder skončí po vypísaní daného počtu znakov.4.4.3 Implementačné poznámkyAritmetické kó<strong>do</strong>vanie môžeme efektívne realizovat’ pomocou celočíselnej aritmetiky.Interval 〈0, 1) nahradíme intervalom celých čísel, napríklad 〈0x0000, 0xffff) (vyjadrenéhexadecimálne, teda 〈0, 65535). Základné pozorovanie, ktoré umožní ostat’ počas celéhovýpočtu len v tomto intervale: ak sa začiatočné čísla (napr. bity) <strong>do</strong>lnej a hornej hraniceaktuálneho intervalu zhodujú, už ostanú rovnaké. Dôvod je prostý: interval sa počaskó<strong>do</strong>vania zužuje, preto zhody na začiatku sa už nezmenia. To znamená, že ak takútozhodu zaznamenáme, môžme ju z oboch hraníc intervalu odstránit’ (a dat’ na výstup).Napríklad, ak po úprave intervalu <strong>do</strong>staneme h = 0x6807 a d = 0x4af1, tieto sazhodujú na prvých dvoch bitoch (01), ktoré dáme na výstup a následne upravíme hranice– h = 0xa01f, d = 0x2bc4. Hornú hranicu <strong>do</strong>pĺňame jednotkami a <strong>do</strong>lnú nulami.Prirodzene, dekóder musí pri práci s intervalmi aplikovat’ rovnaký postup.Problém môže nastat’, ak pri zužovaní intervalu <strong>do</strong>stávame (binárne) h = 1000zzz ad = 0111www. V takomto prípade nielen nevieme čo dat’ na výstup (kam sa nakoniec„preklopí“ najvyšší bit), ale aj strácame presnost’ (dĺžku intervalu). Riešenie spočíva vtom, že v týchto situáciach odstránime úvodné nulové bity z h a úvodné jednotkové z d:


62 KAPITOLA 4. METÓDY KOMPRESIE ÚDAJOVh = 1zzz a d = 0www. Popritom si zapamätáme počet takto odstránených bitov a ked’sa najbližšie zhodnú najvyššie bity hraníc, budeme vediet’, kol’ko a akých bitov dat’ navýstup.4.4.4 PoznámkyAritmetické kó<strong>do</strong>vanie, po<strong>do</strong>bne ako Huffmanovo sa zvyčajne nepoužíva samostatne, alevystupuje ako súčast’ zložitejších kompresných algoritmov (najčastejšie ako záverečnáfáza). Môžeme ho kombinovat’ so slovníkovými metódami (napr. LZARI je kombináciaLZSS a aritmetického kó<strong>do</strong>vania), v štatistických metódach vyšších rá<strong>do</strong>v (napr. PPM)aj v iných metódach (pozri napr. čast’ 4.5).Problémom aritmetického kó<strong>do</strong>vania je rýchlost’ – ktorá nie je príliš vel’ká. Kompresnýpomer je zvyčajne o čosi lepší ako pri Huffmanovom kó<strong>do</strong>vaní (ale nie o vel’a).Jednoduché je modifikovat’ aritmetické kó<strong>do</strong>vanie na adaptívnu verziu. Jednoducho začnemes rovnomerne distribuovanými pravdepo<strong>do</strong>bnost’ami a každý načítaný znak zovstupu najskôr spracujeme (zúžime interval), a potom príslušne upravíme pravdepo<strong>do</strong>bnosti(teda zväčšíme početnost’ tohto znaku). Samozrejme, aj Huffmanovo kó<strong>do</strong>vanie jemožné upravit’ na adaptívne, avšak nie tak priamočiaro.Adaptívne verzie aritmetického alebo Huffmanovho kó<strong>do</strong>vania majú výhodu v tom,že nie je potrebné prenášat’ frekvenčnú tabul’ku znakov a pri kó<strong>do</strong>vaní nemusíme čítat’vstup dvakrát (najskôr na zistenie frekvenčnej tabul’ky a potom na samotné kó<strong>do</strong>vanie).4.5 BWTBWT (Burrows-Wheeler Transformation) v podstate nie je algoritmus na kompresiu dát.Je to invertovatel’ná transformácia, ktorá ret’azec znakov transformuje na iný ret’azecznakov. Výstupný ret’azec je potom vhodnejší na kompresiu ako pôvodný ret’azec. Metódakompresie dát využíva BWT ako úvodnú transformáciu, nasle<strong>do</strong>vanú napríklad MTF(pozri čast’ 4.5.3) a štatistickým kóderom nultého rádu tak, ako je to zobrazené naobrázku. Prirodzene, možné sú aj d’alšie modifikácie.vstupBWTMTFARIHUFvýstup4.5.1 Kó<strong>do</strong>vanieTransformácia pracuje nad blokom dát (ret’azcom znakov) dĺžky n. Vytvoríme z ret’azcan ret’azcov dĺžky n tak, že vstupný ret’azec rotujeme. Získané ret’azce utriedime. Výstupomtransformácie je ret’azec pozostávajúci z posledných znakov v ret’azcoch (teda ak


4.5. BWT 63prejdeme v poradí utriedenia po ret’azcoch a vypíšeme ich posledné znaky) a z pozíciepôvodného vstupného ret’azca medzi utriedenými ret’azcami.Hlavná myšlienka BWT spočíva v tom, že rovnaké kontexty (podret’azce vstupu) súzvyčajne uvádzané rovnakými znakmi (je to po<strong>do</strong>bná úvaha ako pri znakoch za kontextami).Rovnaké kontexty dáme k sebe triedením. Znaky, ktoré sú pred týmito kontextamisú na konci ret’azcov. Teda na konci ret’azcov môžeme očakávat’ častý výskyt rovnakýchznakov vedl’a seba.Príklad: Nech vstupným textom je ret’azec aababbcbababcb. Potom utriedenie jednotlivýchrotácií <strong>do</strong>padne takto (i označuje pozíciu začínajúceho znaku v pôvodnom ret’azci):i ret’azec0 aababbcbababcb1 ababbcbababcba8 ababcbaababbcb3 abbcbababcbaab10 abcbaababbcbab13 baababbcbababc7 bababcbaababbc2 babbcbababcbaa9 babcbaababbcba4 bbcbababcbaaba11 bcbaababbcbaba5 bcbababcbaabab12 cbaababbcbabab6 cbababcbaababbVýstupom z BWT je v tomto prípade ret’azec babbbccaaaabbb a pozícia, na ktorej sanechádza pôvodný ret’azec, teda 0.4.5.2 Dekó<strong>do</strong>vaniePri dekó<strong>do</strong>vaní máme k dispozícii ret’azec zložený z posledných znakov utriedenýchret’azcov a index, kde treba hl’adat’ pôvodný ret’azec. Modelujme dekó<strong>do</strong>vanie na tabul’ke,akú sme použili v príklade kó<strong>do</strong>vania. Teda poznáme posledný stĺpec znakov. Poznámeaj prvý stĺpec, stačí znaky len utriedit’.Pozrime sa na posledný znak v prvom riadku (inými slovami prvý znak v poslednomstĺpci). Nech je to x. Vieme, že toto x je ten istý znak, ktorý sa ako prvé x vyskytne vprvom stĺpci. Dôvod je ten, že za ním v ret’azci nasleduje lexikograficky najmenší ret’azec(inak by nebol v prvom riadku) a najmenší ret’azec spomedzi ostatných začínajúcich xmusí nasle<strong>do</strong>vat’ aj za znakom, ktorý je prvým výskytom x v prvom stĺpci (inak by tonebol prvý výskyt). Túto pozíciu x v prvom stĺpci si označme ako obsadenú.Zoberieme druhý znak v poslednom stĺpci, nech je to y. Opät’ hl’adáme v prvom stĺpciprvý neobsadený výskyt znaku y. Postupujeme takto d’alej, až kým neurčíme pre všetky


64 KAPITOLA 4. METÓDY KOMPRESIE ÚDAJOVznaky z posledného stĺpca, ktorým znakom z prvého stĺpca zodpovedajú.Teraz rekonštruujeme ret’azec v prvom riadku. Ked’že vieme, že posledný znak vriadku je v ret’azci pred prvým znakom v riadku, <strong>do</strong>kážeme spätne prejst’ a odzadurekonštruovat’ poža<strong>do</strong>vaný ret’azec. Potom ho stačí len zrotovat’, utriedit’ a vybrat’ výstupnýret’azec zo správnej pozície.Drobný problém v prezentovanej rekonštrukcii by mohol nastat’, ak sú prvý znaka posledný v prvom riadku zhodné. Potom ale celý ret’azec obsahuje len tento znak amôžeme sa podl’a toho zariadit’.Poznamenajme, že v praktickej implementácii BWT sa dekó<strong>do</strong>vanie dá robit’ na jedenprechod v lineárnom čase O(n).Príklad: Ilustrujme dekó<strong>do</strong>vanie na výstupe príkladu kó<strong>do</strong>vania, teda máme na vstuperet’azec babbbccaaaabbb a pozíciu 0. Rekonštruujeme prvý stĺpec a potom dekó<strong>do</strong>vanieprebieha naznačeným spôsobom podl’a šípiek (šípky označujú zodpovedajúcimsi znakom). Čísla pri znakoch hovoria o poradí znakov pri spätnej rekonštrukcii.14a13ab1a146ab711ab124ab51bc 27bc 812ba135ba610ba113ba49bb102cb 38cb94.5.3 MTFMTF (Move to front) je heuristika, ktorou sa snažíme pozičnú blízkost’ rovnakých znakovpretransformovat’ <strong>do</strong> štatistickej významnosti znakov. MTF nekomprimuje text, alevytvára predpoklady na úspešnú aplikáciu štatistických kóderov nultého rádu tým, žesa snaží znižovat’ entropiu.MTF má pole, v ktorom sú usporiadané znaky. Po prečítaní znaku dá na výstup index(pozíciu) tohto znaku v poli a zároveň znak presunie v poli na začiatok. Takto pokračuje,až kým nevyčerpá celý vstup.Príklad: Demonštrujme si MTF na príklade výstupu z BWT, teda na ret’azci aababbcbababcb.Stĺpec „pole“ ukazuje poradie prvkov v poli po spracovaní príslušného znaku.


4.5. BWT 65pole výstupabcb bac 1a abc 1b bac 1b bac 0b bac 0c cba 2c cba 0pokr.pole výstupa acb 2a acb 0a acb 0a acb 0b bac 2b bac 0b bac 0Hoci náš príklad nie je ideálnym na demonštráciu výhod MTF, porovnajme entropiepôvodného a nového ret’azca:( 5H14 , 714 , 2 )≈ 0, 437114( 8H14 , 314 , 3 )≈ 0, 431814Teda MTF sa snaží posúvat’ aktuálne spracúvané znaky na začiatok pol’a a zabezpečit’častý výskyt nízkych indexov vo výstupe. Ked’ vo vstupe prejdeme na iný blok rovnakýchznakov, až na prvý index opät’ <strong>do</strong>stávame na výstup nízke hodnoty. Výsledkom je zníženieentropie a môže nasle<strong>do</strong>vat’ úspešná aplikácia štatistického kó<strong>do</strong>vania.Dekó<strong>do</strong>vanie MTF prebieha po<strong>do</strong>bne ako kó<strong>do</strong>vanie. Začneme s utriedeným pol’omznakov. Prečítame index zo vstupu. Príslušný znak z pol’a dáme na výstup. Zároveňpresunieme znak na začiatok pol’a a načítame d’alší index zo vstupu. Toto opakujeme,až kým neprečítame celý vstup.4.5.4 PoznámkyIná možnost’ pri spracovaní výstupu BWT (namiesto MTF, prípadne navyše k MTF) jepoužit’ RLE. RLE (Run Length Encoding) je jednoduchý spôsob kó<strong>do</strong>vania, ked’ namiestoret’azca rovnakých znakov dávame na výstup len jeden znak a dĺžku ret’azca.Časovo najnáročnejšou operáciou v BWT je triedenie pri kó<strong>do</strong>vaní. Dá sa napríkladpoužit’ kombinácia radix-sortu (napr. na prvé dva znaky) s následným quicksortom (nautriedenie vnútri skupín). Prirodzene, pri kó<strong>do</strong>vaní nie je ani potrebné vytvárat’ d’alšieret’azce – stačí správne indexovat’ <strong>do</strong> pôvodného ret’azca.Príkla<strong>do</strong>m praktického použitia BWT je program Bzip2, ktorý je kombináciou BWT,MTF a Huffmanovho kó<strong>do</strong>vania.


66 KAPITOLA 4. METÓDY KOMPRESIE ÚDAJOV


Kapitola 5Kó<strong>do</strong>vanie zvuku a obrazuV tejto kapitole budeme hovorit’ o efektívnych metódach kó<strong>do</strong>vania obrazovej informáciea zvuku (hudby).67


68 KAPITOLA 5. KÓDOVANIE ZVUKU A OBRAZU


Kapitola 6Kolmogorovská zložitost’ ahranice kompresie údajovPozrieme sa, ako to vyzerá so stlačitel’nost’ou informácie vo všeobecnosti a ukážeme, ževäčšina údajov je nestlačitel’ná.69


70KAPITOLA 6. KOLMOGOROVSKÁ ZLOŽITOSŤ A HRANICE KOMPRESIE ÚDAJOV


Čast’ IISamoopravné kódy71


Kapitola 7Základné princípysamooopravných kó<strong>do</strong>vPri konštrukcii nerovnomerných kó<strong>do</strong>v v predchádzajúcej kapitole sme predpokladali, žeprenosový kanál realizuje identickú transformáciu; t.j. že sa správa pri prenose nemení.Tento optimistický predpoklad nebýva v reálnom živote naplnený. Preto sa budeme zaoberat’takým zápisom informácie, ktorý umožní kontrolovat’ zmeny, ku ktorým <strong>do</strong>šlov priebehu prenosu informácie. 1 Najprv zavedieme model prenosového kanála, ktorýnám umožní matematicky popísat’ výskyt chýb pri prenose správ. Potom ukážeme, akomožno pridaním <strong>do</strong>plnkovej informácie (zväčšením redundancie správ) zvýšit’ jej o<strong>do</strong>lnost’voči chybám. Na geometrickom modeli kódu ukážeme, aké podmienky musí spĺňat’kód, ktorý má odhal’ovat’/opravovat’ istý počet chýb a uvedieme základný vzt’ah medziredundanciou a opravnou schopnost’ou kódu. Potom budeme konštruovat’ jednoduchérovnomerné (blokové) kódy, ktoré budú schopné odhal’ovat’ chyby (t.j. príjemca budeschopný zistit’, či v prijatom slove vznikli určité chyby alebo nie) alebo ich <strong>do</strong>koncaopravovat’ (príjemca bude pri dekó<strong>do</strong>vaní schopný rekonštruovat’ pôvodne odvysielanékó<strong>do</strong>vé slovo) a popíšeme efektívne metódy kó<strong>do</strong>vania a dekó<strong>do</strong>vanie informácie pomocoutakýchto kó<strong>do</strong>v.7.1 Binárny symetrický kanál bez pamäteNa rozdiel od nerovnomerných kó<strong>do</strong>v nebudeme skúmat’ zdroj informácie, ale prenosovýkanál. Na popis prenosového kanála na ktorý pôsobí šum spôsobujúci chyby v prenášanýchsprávach zavedieme model, ktorý budeme nazývat’ q-nárnym symetrickým prenosovýmkanálom bez pamäte. Špeciálnym a najčastejšie používaným q-nárnym symetrickýmprenosovým kanálom bez pamäte je binárny (q = 2) symetrický kanál bez pamäte, ktorýje zobrazený na obrázku 7.1. Upresníme teraz predstavu o tom, aké chyby môžu vznikat’pri prenose správ q-nárnym symetrickým prenosovým kanálom bez pamäte. Budeme1 Pripomíname, že z hl’adiska kó<strong>do</strong>vania nie je principiálny rozdiel, či ide o prenos informácie v čase alebov priestore. Aj preto sa v tejto kapitole budeme zaoberat’ kó<strong>do</strong>vaním informácie pre prenášanie v priestore,ale riešenia, ktoré navrhneme budú rovnako <strong>do</strong>bré aj pre ochranu informácie prenášanú v čase.73


74 KAPITOLA 7. ZÁKLADNÉ PRINCÍPY SAMOOOPRAVNÝCH KÓDOVp1 ❞❍✲ ❞❍❍❍❍❍❍❍❍❍❍❍❍ ✟✯ 11-p1-p❞ ✟ ✟✟✟✟✟✟✟✟✟✟✟✟ ✲❍❥0 ❞ 0pObrázok 7.1: Binárny symetrický kanál bez pamätepredpokladat’, že pri prenose správ• <strong>do</strong>chádza k zámene jedného prenášaného symbolu kó<strong>do</strong>vej abecedy na iný symbolkó<strong>do</strong>vej abecedy,• žiaden symbol nie je o<strong>do</strong>lnejší voči chybe ako iný symbol; symbol sa prenáša správnes pravdepo<strong>do</strong>bnost’ou p a transformuje sa pri prenose na ktorýkol’vek iný symbols pravdepo<strong>do</strong>bnost’ou 1−pq−1 ;• výsle<strong>do</strong>k prenosu jedného symbolu neovplyvňuje to, či bude nasledujúci symbolprenesený správne alebo nie.Kódy opravujúce chyby predstavujú rozličné algebraické štruktúry ako vektorovépriestory, okruhy polynómov, ideály a po<strong>do</strong>bne. Aby mohli kó<strong>do</strong>vé slová bez problémovtvorit’ takéto algebraické štruktúry, budeme predpokladat’, že kó<strong>do</strong>vá abeceda je podmnožinouprirodzených čísel; Σ = {0, . . . , q − 1}. Aj ked’ teoretické konštrukcie budemerobit’ pre všeobecný prípad, v d’alšom výklade sa budeme najčastejšie zaoberat’ binárnymikódmi, ktoré sa v súčasnosti najčastejšie používajú.V čom je podstata kó<strong>do</strong>v odhal’ujúcich, resp. opravujúcich chyby? Ak by sme na kó<strong>do</strong>vaniespráv používali úplné kódy, pri prenose správ by sa jedno kó<strong>do</strong>vé slovo mohlov dôsledku šumu nahradit’ iným kó<strong>do</strong>vým slovom a príjemca by mal problém určit’, čiprijal odvysielané kó<strong>do</strong>vé slovo, alebo <strong>do</strong>šlo k chybe pri prenose. Preto nie je možnépri komunikácii prostredníctvom kanála so šumom používat’ úplné kódy. Podstata kó<strong>do</strong>vodhal’ujúcich a opravujúcich chyby je v tom, že množina kó<strong>do</strong>vých slov tvorí lenpodmnožinu všetkých možných slov a tak, ked’ dôjde počas prenosu správy ku chybe,prijaté slovo s vel’kou pravdepo<strong>do</strong>bnost’ou nie je kó<strong>do</strong>vým slovom. Zdôrazňujeme slovás vel’kou pravdepo<strong>do</strong>bnost’ou, pretože nie je vylúčené, že počas prenosu vznikne chyba,ktorá prenášané kó<strong>do</strong>vé slovo transformuje na iné kó<strong>do</strong>vé slovo. Pri konštrukciisamoopravných kó<strong>do</strong>v sa snažíme minimalizovat’ pravdepo<strong>do</strong>bnost’ takejto možnosti.Vychádzame z toho, že pre (binárny) prenosový kanál platí p >> 1 − p 2 ; t.j. je pravdepo<strong>do</strong>bnejšie,že pri prenose kó<strong>do</strong>vého slova vznikne menej chýb. Ilustrujeme to na príklade.Príklad. Uvažujme binárny symetrický kanál bez pamäte s parametrami p = 0.99,1 − p = 0.01, binárny blokový kód dĺžky 15 opravujúci tri chyby. V nasledujúcej tabul’kesú uvedené pravdepo<strong>do</strong>bnosti chýb2 V podstate však stačí, aby p ≠ 1 − p.


7.2. GEOMETRICKÁ INTERPRETÁCIA SAMOOPRAVNÉHO KÓDU 75počet chýb pravdepo<strong>do</strong>bnost’0 (0.99) 15 0.8600583546412891 15 · (0.99) 14 · (0.01) 0.130311871915347(215)2 · (0.99)13 · (0.01) 2 0.009213970741489(315)3 · (0.99)12 · (0.01) 3 0.000403305116631)> 3· (0.99)15−j · (0.01) j 0.000012497585244∑j>3( 15jPravdepo<strong>do</strong>bnost’ toho, že v prenášanom slove vzniknú 4 a viac chýb je síce nenulová0.000012497585244 ale podstatne menšia ako to, že v slove budú najviac 3 chyby, ktoré sapri dekó<strong>do</strong>vaní dajú opravit’.7.2 Geometrická interpretácia samoopravného kóduSkôr ako pristúpime ku popisu a konštrukcii samoopravných kó<strong>do</strong>v, využijeme geometrickúinterpretáciu kódu a vysvetlíme princíp kó<strong>do</strong>v opravujúcich a odhal’ujúcich chyby.Predpokladáme, že máme zostrojit’ kód dĺžky n opravujúci t chýb. (Na začiatku kvôlizjednodušeniu popíšeme konštrukciu binárneho kódu opravujúceho 1 chybu a potomkonštrukciu zovšeobecníme.) Zavedieme najprv dva dôležité pojmy, ktoré budeme prikoštrukcii samoopravného kódu potrebovat’.Definícia 7.2.1. Nech sú u, v dva vektory vektorového priestoru V; nech u = (u 1 , . . . u n );v = (v 1 , . . . v n ). Hammingovou váhou vektora u nazveme prirodzené číslo wt(u), definovanénasle<strong>do</strong>vne:n∑wt(u) = (u i ≠ 0)Hammingovou vzdialenost’ou vektorov u, v nazveme prirodzené číslo d(u, v);id(u, v) = wt(u − v) =n∑(a j ≠ b j ).j=1Hammingova váha vektora je počet jeho nenulových zložiek a Hammingova vzdialenost’dvoch vektorov udáva, v kol’kých zložkách sa tieto dva vektory odlišujú. Vrát’mesa teraz ku konštrukcii binárneho samoopravného kódu opravujúceho 1 chybu 3 . Zostrojímeho tak, že budeme postupne vyberat’ kó<strong>do</strong>vé slová. Ako prvé kó<strong>do</strong>vé slovo v 0môžeme vybrat’ l’ubovol’ný binárny vektor z množiny {0, 1} n . Bez ujmy na všeobecnostimôžeme vybrat’ v 0 = (0, . . . , 0); t.j. nulový vektor. Vyberieme teraz druhé kó<strong>do</strong>vé slovov 1 . Predpokladajme, že d(v 0 , v 1 ) = 1 a položme v 1 = (1, 0, . . . , 0). Potom však existujechyba (ktorú budeme reprezentovat’ binárnym vektorom) váhy 1 ktorá transformujekó<strong>do</strong>vé slovo v 1 na kó<strong>do</strong>vé slovo v 0 :3 Vzhl’a<strong>do</strong>m na typ chýb, ktorými sa budeme zaoberat’, budeme pojmy "t chýbä "chyba váhy t"používat’ako synonymá.


76 KAPITOLA 7. ZÁKLADNÉ PRINCÍPY SAMOOOPRAVNÝCH KÓDOVv 0 000 . . . 0v 1 100 . . . 0e 1 100 . . . 0v 1 ⊕ e 1 000 . . . 0 = v 0To znamená, že ak kód opravuje jednu chybu, tak potom d(v 0 , v 1 ) > 1. Nech d(v 0 , v 1 ) =2 a vyberme ako druhé kó<strong>do</strong>vé slovo napríklad v 1 = (1, 1, 0, . . . , 0). Žiadna chyba váhy1 nemôže transformovat’ slovo v 1 na slovo v 0 . Čo sa však stane, ak sme prijali slovo0100 . . . 0? Existujú dve rovnako pravdepo<strong>do</strong>bné možnosti (a množstvo menej pravdepo<strong>do</strong>bnýchiných):v 0 000 . . . 0v 1 110 . . . 0e 1 100 . . . 0e 2 010 . . . 0v 0 ⊕ e 1 = 100 . . . 0 = v 1 ⊕ e 2v i ⊕ e j = 100 . . . 0 e j = v i ⊕ 100 . . . 0Ak sme teda prijali slovo 0100 . . . 0, je zrejmé, že to nie je kó<strong>do</strong>vé slovo a odhalili sme chybu,ale nevieme ju opravit’ a určit’ odvysielané kó<strong>do</strong>vé slovo. Ak stačí, aby kód odhal’ovalchyby váhy 1, vektor v 1 = (110 . . . 0) môže byt’ kó<strong>do</strong>vým slovom. Ak požadujeme, aby kó<strong>do</strong>pravoval chyby váhy t ≥ 1, vektor v 1 = (110 . . . 0) a žiaden vektor váhy 2 nemôže byt’kó<strong>do</strong>vým slovom. Nech teda d(v 0 , v 1 ) = 3 a v 1 = (1, 1, 1, 0, . . . , 0). Chybou váhy 1 sa slovov 1 transformuje v najhoršom prípade na slovo váhy 2, ale chybou váhy 1 sa zo slova v 0stane vektor váhy 1:v 0 0000 . . . 0v 1 1110 . . . 0e 1 1000 . . . 0e 2 0100 . . . 0e 3 0110 . . . 0v 0 ⊕ e 1 = 1000 . . . 0 wt(v 0 ⊕ e 1 ) = 1v 1 ⊕ e 3 = 1000 . . . 0v 1 ⊕ e 2 = 1010 . . . 0 wt(v 1 ⊕ e 2 ) = 2Ak sme prijali slovo 1000 . . . 0, dekódujeme ho na základe toho, žeP(1000 . . . 0|v 0 ) > P(1000 . . . 0|v 1 ),ako v 0 . (Ak použijeme hodnoty n = 15, p = 0.99 z predchádzajúceho príkladu, takP(1000 . . . 0|v 0 ) = 0.00868745812768978 > 0.0000877521022998968 = P(1000 . . . 0|v 1 ),a teda pravdepo<strong>do</strong>bnost’ toho, že bolo odvysielané slovo v 0 je podstatne väčšia.) Zovšeobecnímeteraz našu konštrukciu na prípad, ked’ má kód opravovat’ chyby váhy t > 1.Ukázalo sa, že rozhodujúcim parametrom, od ktorého závisí opravná schopnost’ kódu jeminimálna vzdialenost’ kó<strong>do</strong>vých slov. Zavedieme pre tento pojem špeciálne označenie:minimálnou vzdialenost’ou kódu C nazveme prirodzené číslod ∗ = min d(u, v).u,v∈C


7.2. GEOMETRICKÁ INTERPRETÁCIA SAMOOPRAVNÉHO KÓDU 77Ak by bola minimálna vzdialenost’ kódu C d ∗ ≤ t tak potom chybou váhy menšejalebo rovnej t by sa mohlo transformovat’ jedno kó<strong>do</strong>vé slovo na iné kó<strong>do</strong>vé slovo. Akd ∗ = t + 1, kód C <strong>do</strong>káže odhal’ovat’ chyby váhy t. Na to, aby kód C opravoval chyby váhyt musí byt’ d ∗ ≥ 2t + 1.Popri samoopravnej schopnosti (danej minimálnou vzdialenost’ou kódu) je zaujímavoukvantitatívnou charakteristikou kódu, ktorá vyjadruje jeho efektívnost’, počet kó<strong>do</strong>výchslov. Extrémnym prípa<strong>do</strong>m je kód dĺžky 2n + 1 ktorý má dve kó<strong>do</strong>vé slová(napr. 0 . . . 0 a 1 . . . 1). Tento kód má síce maximálnu opravnú schopnost’ (je schopnýopravovat’ n chýb), ale na prenos jedného bitu správy potrebuje 2n + 1 kó<strong>do</strong>výchsymbolov. Pri konštrukcii samoopravných kó<strong>do</strong>v sa snažíme o kompromis medzi opravnouschopnost’ou a mohutnost’ou kódu. Kol’ko kó<strong>do</strong>vých slov môže vlastne obsahovat’samoopravný kód dĺžky n opravujúci t chýb? Pozrieme sa najprv na binárny prípad.Množina binárnych vektorov (neskôr ukážeme, že sa jedná o vektorový priestor), z ktorejvyberáme kó<strong>do</strong>vé slová, má 2 n prvkov. Označíme symbolom B r (v) množinu vektorov;B r (v, r) = {u|u ∈ {0, 1} n & d(u, v) ≤ r},ktorú budeme nazývat’ gul’ou s polomerom r a stre<strong>do</strong>m v. Je zrejmé, že pre 0 ≤ r ≤ tplatí∀u, v ∈ C; (u ≠ v) ⇒ B r (u) ⋂ B r (v) = ∅a mohutnost’ B(v) je|B r (v| =r∑j=0( nj).Ak by kód C mal maximálny počet kó<strong>do</strong>vých slov (pre dĺžku kódu n a opravnú schopnost’t), potom by množina vektorov {0, 1} n musela byt’ pokrytá disjunktnými gul’ami polomerut so stredami v kó<strong>do</strong>vých slovách. Mohutnost’ kódu C by v takomto prípade bola|C| =2 n∑ tj=0( nj).2Je zrejmé, že je len málo takých hodnôt n, t pre ktoré by bol podieln|S(v,r)|celočíselný.Ak by sme sa však aj uspokojili s kó<strong>do</strong>m menšej mohutnosti, zostáva otázkou, ako hozostrojit’. Úplné preberanie neprichádza <strong>do</strong> úvahy, nakol’ko jeho zložitost’ je odvodená odčísla(2 n )2⌊ ∑ ntj=0 ( n j) ⌋ ,ktoré je už pre relatívne malé hodnoty n, t vel’ké (pozri nasledujúcu tabul’ku). V tejtokapitole sa budeme zaoberat’ metódami systematického vytvárania samoopravnýchkó<strong>do</strong>v.


78 KAPITOLA 7. ZÁKLADNÉ PRINCÍPY SAMOOOPRAVNÝCH KÓDOVn t mohutnost’ početkódumožných kó<strong>do</strong>v7 1 16 933430212012621774007 2 4 106680007 3 2 812815 5 6 171857424069145502713446415 4 16 8413732123974805236379052905176580137165242881749473138892815 3 56 0.9837970552 × 10 17815 2 270 0.7332302377 × 10 67815 1 2048 0.1094851418 × 10 3326Poznámka. Aká bude mohutnost’ samoopravných kó<strong>do</strong>v nad inou ako binárnou abece<strong>do</strong>u?Mohutnost’ gule s polomerom t vo vektorovom priestore {0, . . . , q − 1} jet∑j=0( nj)(q − 1) j .Ak q > 2 nestačí len vybrat’ j zložiek vektora ( ( )nj ), ktoré treba zmenit’, ale je potrebné ajurčit’ ktorým z ostatných q−1 symbolov sa má pôvodný symbol nahradit’. Pre mohutnost’q-kódu V dĺžky n, opravujúceho t chýb platí|V| ≤∑ tj=0q n( nj)(q − 1) j .Vrát’me sa ešte ku geometrickému modelu samoopravných kó<strong>do</strong>v, aby sme zaviedliniekol’ko dôležitých pojmov, ktoré majú názornú geometrickú interpretáciu. Predstavmesi, že je daný q-árny samoopravný kód V dĺžky n opravujúvci t chýb. Kódu V zodpovedámnožina bo<strong>do</strong>v-vektorov vektorového priestoru GF(q) n . Vytvoríme gule polomeru 1 sostredmi v kó<strong>do</strong>vých slovách ( „kó<strong>do</strong>vé“ gule). Postupne budeme zväčšovat’ polomery „kó<strong>do</strong>vých“gulí: r = 2, 3, . . . , t − 1. Prvá dôležitá hodnota polomeru je t. To je maximálnahodnota, pri ktorej sú sféry so stredmi v kó<strong>do</strong>vých slovách ešte disjunktné. Hodnota tsa nazýva aj hranicou sférického uloženia kódu (sphere packing bound). Pri dekó<strong>do</strong>vanísa všetky vektory z gule B t (u) zobrazia na vektor u. Vo väčšine kó<strong>do</strong>v gule polomeru tso stredmi v kó<strong>do</strong>vých slovách. nepokryjú všetky vektory vektorového priestoru GF(q) n .To znamená, že budú existovat’ slová-vektory, ktoré nepatria <strong>do</strong> žiadnej gule a pri dekó<strong>do</strong>vanísa nezobrazia na žiadne kó<strong>do</strong>vé slovo. Ak by sme d’alej zväčšovali polomer gulí(r = t + 1, . . . , T), po konečnom počte krokov <strong>do</strong>spejeme <strong>do</strong> štádia, ked’ každý vektorvektorového priestoru GF(q) n patrí aspoň <strong>do</strong> jednej gule B T (u). Minimálna hodnotapolomeru, pri ktorej sa <strong>do</strong>sahuje, žeGF(q) n = ⋃ u∈VB T (u)sa nazýva hranicou pokrytia kódu V. Teraz môžeme formalizovat’ aj intuitívne predstavyo efektívnosti kó<strong>do</strong>vania.


7.3. JEDNODUCHÉ KÓDY ODHAL’UJÚCE/OPRAVUJÚCE CHYBY 79Definícia 7.2.2. Kód V sa nazýva <strong>do</strong>konalý, ak sa hranica sférického uloženia rovnáhranici pokrytia kódu V.Ináč povedané, kód V je <strong>do</strong>konalý, ak každý vektor vektorového priestoru GF(q) n sanachádza vo vzdialenosti nanajvýš t od práve jedného kó<strong>do</strong>vého slova. Ako sa ukáženeskôr, <strong>do</strong>konalých kó<strong>do</strong>v je málo.Skôr ako sa budeme zaoberat’ systematicky metódami konštrukcie rozličných samoopravnýchkó<strong>do</strong>v, uvedieme niekol’ko jednoduchších príkla<strong>do</strong>v kó<strong>do</strong>v opravujúcich aleboodhal’ujúcich chyby a ilustrujeme na nich už zavedené, resp. zavedieme niektoré novépojmy. Odteraz sa až <strong>do</strong> odvolania budeme opät’ zaoberat’ binárnymi kódmi.7.3 Jednoduché kódy odhal’ujúce/opravujúce chyby7.3.1 Testovanie parity.Nech je daná množina binárnych vektorov dĺžky n. Pridáme ku každému vektoru n + 1-bit tak aby počet jednotkových bitov vo vektore (dĺžky n + 1) bol párny. Kó<strong>do</strong>vé slovábudú potom vyzerat’ nasle<strong>do</strong>vne (<strong>do</strong>plnený bit je oddelený medzerou):01000011100001010 001011010010101011 1. . .Doplnený bit sa nazýva paritným bitom. Ak v kó<strong>do</strong>vom slove vznikne pri prenose chybanepárnej váhy (1, 3, 5, . . . ) počet jednotkových bitov v prijatom slove bude nepárny a príjemcabude vediet’, že nastala chyba (aj ked’ ne<strong>do</strong>káže určit’, kde.) Ak by však pri prenosenastala chyba nepárnej váhy (2, 4, . . . ), v prijatom slove bude párny počet jednotkovýchbitov a príjemca bude prijaté slovo považovat’ za kó<strong>do</strong>vé slovo. Ak sa vrátime k predchádzajúcemupríkladu (p = 0.99, n = 15), tak pravdepo<strong>do</strong>bnost’ neodhalenej chyby je0.009226196681.7.3.2Obdĺžnikové kódy.Uvažujme opät’ binárne zapísanú informáciu, ktorú chceme upravit’ <strong>do</strong> formy umožňujúcejopravit’ aspoň jednu chybu (chybu váhy 1). Zapíšeme informáciu <strong>do</strong> obdĺžnikovejmatice typu m × n a pridáme k nej jeden kontrolný ria<strong>do</strong>k a jeden kontrolný stĺpec.0110101010 11110000111 01010101010 10010000111 0Na i-tom mieste kontrolného stĺpca sa bude nachádzat’ paritný bit i-teho riadku (a i,10 =a i,0 ⊕· · ·⊕a i,9 ), na j-tom mieste kontrolného riadku sa bude nachádzat’ paritný bit j-teho


80 KAPITOLA 7. ZÁKLADNÉ PRINCÍPY SAMOOOPRAVNÝCH KÓDOVstĺpca (a 3,j = a 0,j ⊕ · · · ⊕ a 2,j ). Predpokladajme, že nastala chyba váhy 1 napríklad namieste (0, 4). Príjemca vyčísli kontrolné sumy pre riadky aj stĺpce prijatej matice a zistípozíciu chyby:0110001010 1 11110000111 0 01010101010 1 00010000111 0 00000100000 0Všimneme si, že ak vznikne chyba váhy 1 v kontrolnom riadku alebo v kontrolnom stĺpci,pozícia chyby sa určí úplne rovnako, ako v prípade chyby v ïnformačnom"symbole:0110101010 1 01110000111 0 01010101010 1 00010000110 0 10000000001 0Obdĺžnikový kód je schopný opravovat’ chyby váhy 1. Čo sa stane, ak v kó<strong>do</strong>vom slovevznikne chyba väššj váhy? Predpokladajme, že vznikla chyba váhy 2:0110101010 1 11110000111 0 01010101010 1 00010000110 0 11000000001 0Vyčíslením kontrolných súm príjemca zistí, že vznikla chyba väčšej váhy. Ak by aj uhá<strong>do</strong>l,že ide o chybu váhy 2, nevie či chyby vznikli v symboloch a 0,0 , a 3,9 alebo a 3,0 , a 0,9 .Ak by chyba váhy 2 vznikla v tom istom riadku (stĺpci), na kotrolnej sume príslušnéhoriadku (stĺpca) by sa to neprejavilo, a príjemca by vedel akurát povedat’, že v niektorýchstĺcoch (riadkoch) vznikla chyba väčšej váhy.1110101011 1 01110000111 0 01010101010 1 00010000111 0 01000000001 0Samoopravné kódy sa zakladajú na tom, že• nie každé možné slovo je kó<strong>do</strong>vým slovom;• kó<strong>do</strong>vé slová sú „<strong>do</strong>st’ d’aleko od seba“.Minimálna vzdialenost’ kódu vyjadrená pomocou Hammingovej vzdialenosti kó<strong>do</strong>výchslov nám umožnila precizovat’ význam slov „<strong>do</strong>st’ d’aleko od seba“. Pomocou obdĺžnikovýchkó<strong>do</strong>v ilustrujeme pojem „redundancie (nadbytočnosti)“, ktorý upresňuje prvú požiadavkukladenú na samoopravné kódy. V kó<strong>do</strong>vom slove obdĺžnikového kódu rozlišujemedva druhy symbolov: informačné (pomocou nich sa zapisuje informácia, ktorú má


7.4. HAMMINGOV KÓD 81kó<strong>do</strong>vé slovo preniest’) a kontrolné symboly (zaznamenávajúce štruktúru kó<strong>do</strong>vého slova.)Dĺžka kó<strong>do</strong>vého slova sa zvykne označovat’ symbolom n, počet informačných symbolovk a počet kontrolných symbolov je potom n − k. Samoopravný kód, ktorý má dĺžkun a počet informačných symbolov k sa označuje aj ako (n, k)-kód. Počet kontrolnýchsymbolov sa nazýva absolútnou redundanciou kódu. Kódy s rozličnými dĺžkami môžumat’ rozličné počty kontrolných symbolov. Aby ich bolo možné porovnávat’ z hl’adiska redundancie,zavádzame pojem relatívnej redundancie kódu, definovanej ako podiel počtun−kkontrolných symbolov k celkovej dĺžke kó<strong>do</strong>vého slova;n= 1 − k n. Určíme absolútnua relatívnu nadbytočnost’ obdĺžnikových kó<strong>do</strong>v. Predpokladajme kvôli jednoduchosti, žekó<strong>do</strong>vé slovo obdĺžnikového kódu má tvar štvorcovej matice4 typu m × m. Táto maticaobsahuje štvorcovú podmaticu (m−1)×(m−1) informačných symbolov a 2m−1 kontrolnýchsymbolov. Relatívna nadbytočnost’ štvorcového kódu je 2m−1 = 2 m 2 m − 1 . Pre vel’kém 2m je relatívna nadbytočnost’ štvorcového kódu zanedbatel’ná.V prípade obdĺžnikového kódu bolo možné rozlíšit’ informačné a kontrolné symboly.Existujú samoopravné kódy, pre ktoré takéto rozdelenie symbolov kó<strong>do</strong>vého slova neexistuje.Aby bolo možné vyjadrit’ redundanciu aj pre tieto kódy, zovšeobecníme pojemredundancie nasledujúcim spôsobom.Definícia 7.3.1. Nech V je kód dĺžky n nad abece<strong>do</strong>u {0, . . . , q − 1}. (Relatívnou) redundancioukódu V jeR(V) = log q |V| .nRedundancia kódu úzko súvisí s d’alším dôležitým pojmom, pomocou ktorého sa vyjadrujeefektívnost’ kódu; s prenosovou rýchlost’ou. Prenosová rýchlost’ kódu je číslo zintervalu < 0, 1 >, ktoré je definované akopočet prenesených informačných symbolovcelkový počet prenesených symbolov= 1 − R.V d’alšom sa budem zaoberat’ kódmi, ktoré majú vysoké prenosové rýchlosti a zároveň<strong>do</strong>bré opravné schopnosti. Začneme zaujímavým kó<strong>do</strong>m opravujúcim jednu chybu.7.4 Hammingov kódHammingove kódy sú binárne (n, k)-kódy, s parametrami n = 2 m −1, m ≥ 3, m ∈ N, k =2 m −1−m opravujúce chyby váhy 1. Princíp vytvárania Hammingových kó<strong>do</strong>v, kó<strong>do</strong>vaniea dekó<strong>do</strong>vanie ilustrujeme na Hammingovom (15, 11)-kóde.Predpokladajme, že sme už vytvorili kó<strong>do</strong>vé slovo v = (v 1 , . . . , v 15 ). Z jednotlivýchkomponentov kó<strong>do</strong>vého slova vytvoríme 4 kontrolné sumy s 0 , s 1 , s 2 , s 3 , pomocou ktorýchbudeme schopní rozlišovat’ 16 rozličných udalostí: pri prenose nenastala žiadna chyba,nastala chyba váhy 1 v 1., . . . , 15. komponente kó<strong>do</strong>vého slova. Zavedieme dva potrebnépojmy a potom vytvoríme kontrolné sumy. Symbolom σ(i, n) budeme označovat’ n-bitový4 v takomto prípade hovoríme o štvorcovom kóde


82 KAPITOLA 7. ZÁKLADNÉ PRINCÍPY SAMOOOPRAVNÝCH KÓDOVvektor, ktorý je binárnou reprezentáciou čísla i. Nech sú u = (u 1 , . . . , u n ), v = (v 1 , . . . , v n )dva binárne vektory, symbolom u&v budeme označovat’ vektor u&v = (u 1 v 1 , . . . , u n v n ).Pre j = 0, 1, 2, 3 platí:⊕s j =v i ,t.j.σ(i,4)&σ(2 j ,4)=σ(2 j ,4)s 0 = v 1 ⊕ v 3 ⊕ v 5 ⊕ v 7 ⊕ v 9 ⊕ v 11 ⊕ v 13 ⊕ v 15s 1 = v 2 ⊕ v 3 ⊕ v 6 ⊕ v 7 ⊕ v 10 ⊕ v 11 ⊕ v 14 ⊕ v 15s 2 = v 4 ⊕ v 5 ⊕ v 6 ⊕ v 7 ⊕ v 12 ⊕ v 13 ⊕ v 14 ⊕ v 15s 3 = v 8 ⊕ v 9 ⊕ v 10 ⊕ v 11 ⊕ v 12 ⊕ v 13 ⊕ v 14 ⊕ v 15 .Všimnime si, že komponent v i sa vyskytuje práve vo wt(σ(i, 4)) kontrolných sumách.Ked’že existujú práve štyri binárne vektory dĺžky 4 s Hammingovou váhou 1 reprezentujúcečísla 1, 2, 4, 8, každý z komponentov v 1 , v 2 , v 4 , v 8 vystupuje v jednej kontrolnej sume.To znamená, že ak zvolíme hodnoty komponentov v 3 , v 5 , v 6 , v 7 , v 9 , v 10 , v 11 , v 12 , v 13 , v 14 , v 15kó<strong>do</strong>vého slova l’ubovol’ne, vhodnou vol’bou komponentov v 1 , v 2 , v 4 , v 8 <strong>do</strong>siahneme, žekontrolné sumy budú pre kó<strong>do</strong>vé slovo nulové: s 0 = s 1 = s 2 = s 3 = 0. Stačí položit’:v 1 = v 3 ⊕ v 5 ⊕ v 7 ⊕ v 9 ⊕ v 11 ⊕ v 13 ⊕ v 15v 2 = v 3 ⊕ v 6 ⊕ v 7 ⊕ v 10 ⊕ v 11 ⊕ v 14 ⊕ v 15v 4 = v 5 ⊕ v 6 ⊕ v 7 ⊕ v 12 ⊕ v 13 ⊕ v 14 ⊕ v 15v 8 = v 9 ⊕ v 10 ⊕ v 11 ⊕ v 12 ⊕ v 13 ⊕ v 14 ⊕ v 15 .Kó<strong>do</strong>vanie správ pomocou Hammingovho (15, 11)-kódu prebieha tak, že sa správanajprv rozdelí na bloky dĺžky 11 a tie sa <strong>do</strong>plnia 4 kontrolnými symbolmi na kó<strong>do</strong>véslovo:1 1 1 1 0 0 0 0 1 1 1 informačný vektor1 1 1 1 0 0 0 0 1 1 1 informačný vektor1 1 0 1 kontrolný vektor1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 kó<strong>do</strong>vé slovoDekó<strong>do</strong>vanie Hammingovho (15, 11)-kódu. Predpokladajme, že pri prenose kó<strong>do</strong>véhoslova vznikla chyba váhy 1 v i-tom komponente kó<strong>do</strong>vého slova; t.j. bolo prijatéslovov 0 , . . . , v i−1 , v i ⊕ 1, v i+1 , . . . , v 15 .Chyba spôsobí, že všetky kontrolné sumy, ktoré obsahujú komponent v i na<strong>do</strong>budnú hodnotu1. To sú však práve tie sumy s j , pre ktoré σ(i, 4)&σ(2 j , 4) = σ(2 j , 4); t.j. binárnyvektor s = (s 3 , s 2 , s 1 , s 0 ) predstavuje číslo σ(i, 4). Vektor hodnôt jednotlivých kontrolnýchsúm sa nazýva syndróm chyby. V našom prípade syndróm chyby predstavuje pozíciu,na ktorej chyba váhy 1 v kó<strong>do</strong>vom slove vznikla, resp. nulová hodnota syndrómu chybyznamená, že bolo prijaté kó<strong>do</strong>vé slovo.Príklad. Predpokladajme, že chyba vznikla v 13. komponente kó<strong>do</strong>vého slova. Potombolo prijaté slovo:v 1 , . . . , v 12 , v 13 ⊕ 1, v 14 , v 15 .


7.4. HAMMINGOV KÓD 83Kontrolné sumy na<strong>do</strong>búdajú hodnoty:s 0 = v 1 ⊕ v 3 ⊕ v 5 ⊕ v 7 ⊕ v 9 ⊕ v 11 ⊕ (v 13 ⊕ 1) ⊕ v 15 = 1s 1 = v 2 v 3 ⊕ v 6 ⊕ v 7 ⊕ v 10 ⊕ v 11 ⊕ v 14 ⊕ v 15 = 0s 2 = v 4 ⊕ v 5 ⊕ v 6 ⊕ v 7 ⊕ v 12 ⊕ (v 13 ⊕ 1) ⊕ v 14 ⊕ v 15 = 1s 3 = v 8 ⊕ v 9 ⊕ v 10 ⊕ v 11 ⊕ v 12 ⊕ (v 13 ⊕ 1) ⊕ v 14 ⊕ v 15 = 1Hammingov kód nie je schopný opravovat’ chyby váhy ≥ 2. Pri dekó<strong>do</strong>vaní sa takétochyby bud’ vôbec neodhalia alebo sa interpretujú ako chyby váhy 1:1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 kó<strong>do</strong>vé slovo1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 chybový vektor0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 prijaté slovo0 0 0 0 syndróm chyby0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 predpokladaná chyba0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 dekó<strong>do</strong>vané slovo1 1 1 0 1 1 1 1 0 0 0 0 1 1 1 kó<strong>do</strong>vé slovo1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 chybový vektor0 0 1 0 1 1 1 1 0 0 0 0 1 1 1 prijaté slovo0 0 1 1 syndróm chyby0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 predpokladaná chyba0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 dekó<strong>do</strong>vané slovoPorovnáme ešte redundanciu Hammingových R H a obdĺžnikových kó<strong>do</strong>v R O.n a × b (n − k) H (n − k) O R H R O7 (∗) 2 × 4 3 5 0.4285 0.625015 3 × 5 4 7 0.2666 0.466631 (∗) 4 × 8 5 10 0.1612 0.312563 7 × 9 6 15 0.0952 0.2380127 (∗) 8 × 16 7 23 0.0551 0.1796255 15 × 17 8 31 0.0313 0.1215511 16 × 32 9 72 0.0176 0.14091023 31 × 33 10 63 0.0097 0.0615V prípa<strong>do</strong>ch označených hviezdičkou neexistujú obdĺžnikové kódy potrebnej dĺžky (n jeprvočíslo), a preto sme Hammingove kódy dĺžky n porovnávali s obdĺžnikovými kódmidĺžky n + 1. Aj pre n = 511 má obdĺžnikový kód dĺžky 512 rozmerov 16 × 32 menšiuredundanciu (0.0917) ako obdĺžnikový kód dĺžky 511 rozmerov 7 × 73.Poznámka. Pre Hammingove kódy platí (n = 2 m − 1, m ≥ 3)[( ( n n+ | 20)1)]n ,a teda Hammingove kódy sú <strong>do</strong>konalé binárne kódy.


84 KAPITOLA 7. ZÁKLADNÉ PRINCÍPY SAMOOOPRAVNÝCH KÓDOV


Kapitola 8Lineárne kódyPredchádzajúce konštrukcie samoopravných kó<strong>do</strong>v (obdĺžnikové kódy, Hammingove kódy)nám umožnili zostrojit’ samoopravné kódy opravujúce chyby váhy 1. Ak je všakpravdepo<strong>do</strong>bnost’ chyby pri prenose znaku <strong>do</strong>statočne vysoká, budeme na zaistenie spol’ahlivéhoprenosu správ takýmto prenosovým kanálom potrebovat’ samoopravné kódy svyššou opravnou schopnost’ou. Vychádzajúc z geometrickej predstavy o samoopravnýchkó<strong>do</strong>ch by sme teoreticky mohli skonštruovat’ potrebný samoopravný kód, ale je otáznejednak to, či by sa táto konštrukcia dala uskutočnit’ v rozumnom čase a či by pre taktozostrojený kód existovali efektívne metódy kó<strong>do</strong>vania a dekó<strong>do</strong>vania. Schodnejšou cestoupre konštrukciu samoopravného kódu je nájst’ vhodnú algebraickú štruktúru a jejprvky použit’ ako kó<strong>do</strong>vé slová. Prvé čo nás napadne, je zobrat’ konečnú grupu a ako kódpoužit’ nejakú jej vhodnú podgrupu. Kódy, ktorých slová s nejakou binárnou operácioutvoria grupu, skutočne existujú a nazývajú sa grupové kódy.Príklad. Nech je (G, +) konečná grupa s (napríklad) aditívnou operáciou. Množina(G n , ⊕) je grupa, ktorej prvkami sú usporiadané n-tice prvkov grupy G a operácia⊕ je odvodená z aditívnej operácie grupy G nasle<strong>do</strong>vne: nech u = (u 1 , . . . , u n av = (v 1 , . . . , v n ) sú prvky G n , potom u ⊕ v = (u 1 + v 1 . . . u n + v n ). Je zrejmé, že operácia⊕ je asociatívna, množina G n je uzavretá vzhl’a<strong>do</strong>m na operáciu ⊕, neutrálnymprvkom v G n vzhl’a<strong>do</strong>m na opráciu ⊕ je vektor (0, . . . , 0), kde 0 je neutrálny prvok grupyG a napokon,k l’ubovol’nému prvku (u 1 , . . . , u n ) ∈ G n existuje (−u 1 , . . . , −u n ) ∈ G n , kde−u i je opačný prvok k prvku u i , i = 1, . . . , n. 1Aby sme <strong>do</strong>siahli poža<strong>do</strong>vanú efektívnost’ kó<strong>do</strong>vania a dekó<strong>do</strong>vania, budeme na konštrukciusamoopravných kó<strong>do</strong>v používat’ o niečo zložitejšie štruktúry, ako sú grupy.Predpokladáme, že je dané konečné pole GF(q), kde q je mocnina nejakého prvočísla p.(Najčastejšie budeme pracovat’ s q = p = 2.) Množina GF(q) n n-tíc (vektorov) nad pol’omGF(q) s aditívnou operáciou "+" (sčítanie po zložkách) a multiplikatívnou operáciou "·" (násobeniezložiek vektora prvkom pol’a GF(q)) tvorí vektorový priestor. Lineárnym kó<strong>do</strong>mnad abece<strong>do</strong>u GF(q) je l’ubovol’ný vektorový (lineárny) podpriestor vektorového priestoruGF(q) n . Ak je dimenzia vektorového podpriestoru C rovná k, lineárny kód C sa nazýva1 Tam, kde to nepovedie k ne<strong>do</strong>rozumeniu, budeme v dalšom aditívnu operáciu nad vektormi označovat’symbolom "+"85


86 KAPITOLA 8. LINEÁRNE KÓDYlineárnym (n, k)-kó<strong>do</strong>m.Príklad. Nech q = 2, n = 8. Pozrieme sa najprv na dva extrémne prípady. Ak k = 8,kód C má 2 8 = 256 kó<strong>do</strong>vých slov. Tento kód pozostáva zo všetkých možných binárnychvektorov/slov dĺžky 8, má prenosovú rýchlost’ 1 ale jeho opravná schopnost’ je nulová.Druhým extrémnym prípa<strong>do</strong>m je lineárny (8, 0) kód, ktorý má dimenziu 0, jediné kó<strong>do</strong>véslovo (napríklad v 0 = (00000000)), ale je na prenos informácie prakticky bezcenný,lebo ne<strong>do</strong>káže preniest’ jediný bit informácie 2 Prakticky použitel’ný kód s najmenšímpočtom kó<strong>do</strong>vých slov je lineárny (8, 1 kód, s mohutnost’ou 2. Tento kód obsahuje dvekó<strong>do</strong>vé slová: nulové slovo v 0 = (00000000) a nenulové slovo v 1 . Slovo v 1 môžeme vybrat’l’ubovol’ne, pretože v 1 + v 1 = (00000000) a tak konštruovat’ kódy s rozličnými opravnýmischopnost’ami. Položíme v 1 = (11111111) a <strong>do</strong>stávame kód s maximálnou vzdialenost’oud = 8 rozpoznávajúci chyby váhy ≤ 7 a opravujúci chyby váhy ≤ 3. Prenosová rýchlost’tohto kódu je 1/8 a redundancia 7/8.8.1 Základné vlastnosti linerárnych kó<strong>do</strong>vLinerny kód je teda l’ubovol’ná neprázdna množina vektorov (n-tíc) C taká, že pre l’ubovol’név 1 , . . . , v m ∈ C, a 1 , . . . , a m ∈ GF(q) patrí aj lineárna kombinácia a 1 v 1 + · · · + a m v m<strong>do</strong> množiny C. To znamená, že pre l’ubovol’né kó<strong>do</strong>vé slovo u a prvok a ∈ GF(q) patrí <strong>do</strong>kódu C aj slovo au a pre l’ubovol’né dve kó<strong>do</strong>vé slová u, v je potom aj u + v a u − v kó<strong>do</strong>véslovo kódu C. Ked’že pre l’ubovol’né u ∈ C platí u − u = 0, nulové slovo patrí vždy <strong>do</strong> kóduC. Vzhl’a<strong>do</strong>m na tieto skutočnosti sa štúdium viacerých vlastností lineárnych kó<strong>do</strong>vredukuje na skúmanie vzt’ahov medzi nulovým kó<strong>do</strong>vým slovom a ostatnými kó<strong>do</strong>výmslovami lineárneho kódu C.Veta 8.1.1. Nech je C lineárny kód. Potom pre minimálnu vzdialenost’ d ∗ kódu C platínasledujúci vzt’ahd ∗ = min d(u, v) = min wt(u).u,v∈C u≠0∈CDôkaz. Nech sú u, v dve slová, ktorých vzdialenost’ sa rovná minimálnej vzdialenostikódu C: d(u, v) = d ∗ . Slovo u − v je tiež kó<strong>do</strong>vé slovo a pre jeho váhu platí wt(u − v) =d(u, v) = d ∗ . Na druhej strane, ak by v kóde C existovalo nenulové kó<strong>do</strong>vé slovo ws váhou wt(w) < d ∗ , potom by aj d(w, 0) < d ∗ čo je v spore s definíciou minimálnejvzdialenosti.Ak si dáme <strong>do</strong> súvislosti geometrickú interpretáciu samoopravných kó<strong>do</strong>v s tvrdenímvety, tak vidíme, že na zostrojenie samoopravného kódu opravujúceho chyby váhy t stačízostrojit’ lineárny kód s minimálnou váhou w ∗ ≥ 2t + 1.Budeme pokračovat’ v skúmaní lineárnych kó<strong>do</strong>v. Pripomenieme, že skalárny súčindvoch vektorov u = (u 1 , . . . , u n a v = (v 1 , . . . , v n je definovaný ako〈u, v〉 = u 1 v 1 + · · · + u n v n .2 Aj takto kód sa však dá použit’ v špeciálnych prípa<strong>do</strong>ch, napríklad pri testovaní prenosového kanála.


8.1. ZÁKLADNÉ VLASTNOSTI LINERÁRNYCH KÓDOV 87Nech C je lineárny podpriestor vektorového priestoru GF(q) n . Dá sa l’ahko overit’, žemnožina C ⊥ , definovaná nasle<strong>do</strong>vneC ⊥ = {u ∈ GF(q) n ; ∀ v ∈ C 〈u, v〉 = 0}tvorí lineárny podpriestor vektorového priestoru GF(q) n . (Podpriestor C ⊥ sa nazývaortogonálny <strong>do</strong>plnok podpriestoru C.) Kedže C ⊥ je lineárny podpriestor vektorovéhopriestoru GF(q) n , predstavuje podl’a definície lineárneho kódu taktiež lineárny kód, ktorýbudeme nazývat’ duálnym kó<strong>do</strong>m kódu C.Poznámka. To, že je C ⊥ ortogonálnym <strong>do</strong>plnkom lineárneho podpriestoru C neznamená,že sú tieto podpriestory disjunktné. Zrejme 0 ∈ C ⊥ ⋂ C a existujú <strong>do</strong>koncalineárne kódy, pre ktoré platí C ⊥ = C (samoduálne lineárne kódy.)Vd’aka tomu, že lineárny kód C predstavuje lineárny podpriestor vektorového priestoruGF(q) n , možno ho popísat’ efektívnejšia, ako tie blokové kódy, ktoré nemali žiadnurozumnú štruktúru a bolo ich potrebné popísat’ vymenovaním všetkých kó<strong>do</strong>výchslov. Lineárny podpriestor je jednoznačne zadaný pomocou množiny vektorov, ktoráho generuje. Spomedzi všetkých množín vektorov, generujúcich daný lineárny podpriestor(lineárny kód) C vyberieme množinu s minimálnym počtom prvkov 3 , bázu avektory prvky bázy zapíšeme ako riadky matice G. Matica G sa nazýva generujúcoumaticou lineárneho kódu C, pretože l’ubovol’ný vektor-kó<strong>do</strong>vé slovo kódu C možno zapísat’pomocou lineárnej kombinácie riadkov-vektorov matice G. Ak je C lineárnym podpriestoromdimenzie k vektorového priestoru dimenzie n, tak jeho generujúca matica Gmá k (lineárne nezávislých) riadkov a n stĺpcov. Pripomíname, že samotný kód C mápotom q k kó<strong>do</strong>vých slov.Generujúca matica umožňuje efektívne vytváranie kó<strong>do</strong>vých slov. L’ubovol’ný vektori ∈ GF(q) k ; i = (i 1 , . . . , i k ) môžeme chápat’ ako k-ticu informačných symbolov (informačnývektor) a transformovat’ ho na kó<strong>do</strong>vé slovo nasledujúcim spôsobomu = iG,kde G je generujúca matica lineárneho (n, k) kódu. Pripomíname, že existuje viacerospôsobov výberu generujúcej matice G lineárneho kódu a tak sa informačnému vektorui v závislosti od výberu G vo všeobecnosti priradia rozličné slová. V časti ?? sa budemepodrobnejšia zaoberat’ vplyvom výberu generujúcej matice na vlastnosti lineárneho kódu.Ako vyzerá kó<strong>do</strong>vanie správy 4 pomocou lineárneho (n, k) kódu? Postupnost’ znakovsprávy sa rozdelí na bloky dĺžky k a tie sa postupne vynásobia generujúcou maticou G atak sa transformujú na postupnost’ kó<strong>do</strong>vých slov, obr. 8.1Ilustrujeme kó<strong>do</strong>vanie správy pomocou lineárneho kódu na nasledujúcom jednoduchompríklade.Príklad. Hammingove kódy opravujúce chyby váhy 1 sú lineárne kódy. Kvôli zjednodušeniuvýpočtov zoberieme kratší Hammingov kód, ako sme skonštruovali v časti 7.4;3 pripomíname, že takýchto množín je viac a tak vyberieme l’ubovol’nú z nich.4 predpokladáme, že správa je zapísaná ako postupnost’ znakov - prvkov GF(q)


88 KAPITOLA 8. LINEÁRNE KÓDYi 1 . . . i k i k+1 . . . i 2k i 2k+1 . . . i 3k i 3k+1 . . .↓ ↓ ↓ ↓iG iG iG . . .↓ ↓ ↓ ↓u 1 . . . i n u n+1 . . . u 2n u 2n+1 . . . u 3n u 3n+1 . . .Obrázok 8.1: Kó<strong>do</strong>vanie správy pomocou lineárneho kódu s generujúcou maticou GHammingov (7, 4) kód C. Kód C je binárny kód dĺžky 7 s minimálnou vzdialenost’ou d∗ =3; kó<strong>do</strong>vé slovo má 4 informačné a 3 kontrolné symboly. Nech sú i 1 , i 2 , i 3 , i 4 informačnésymboly kó<strong>do</strong>vého slova u = (u 1 , . . . , u 7 ). Položíme u 3 = i 1 , u 5 = i 2 , u 6 = i 3 , u 7 = i 4 .Hodnoty kontrolných symbolov u 1 , u 2 , u 4 vypočítame pomocou troch kontrolných súm("+öznačuje súčet modulo 2):u 1 + u 3 + u 5 + u 7 = 0 u 1 = i 1 + i 2 + i 4u 2 + u 3 + u 4 + u 7 = 0 u 2 = i 1 + i 3 + i 4u 4 + u 5 + u 6 + u 7 = 0 u 4 = i 2 + i 3 + i 4Nulový vektor spĺňa vyššie uvedené vzt’ahy a teda nulové slovo je kó<strong>do</strong>vým slovom Hammingovho(7, 4) kódu. Nech sú u, v dve kó<strong>do</strong>vé slová Hammingovho (7, 4) kódu; t.j.u = (u 3 + u 5 + u 7 , u 3 + u 4 + u 7 , u 3 , u 5 + u 6 + u 7 , u 5 , u 6 , u 7 ),v = (v 3 + v 5 + v 7 , v 3 + v 4 + v 7 , v 3 , v 5 + v 6 + v 7 , v 5 , v 6 , v 7 ).Potom súčet vektorovu + v = (u 3 + u 5 + u 7 + v 3 + v 5 + v 7 , u 3 + u 4 + u 7 + v 3 + v 4 + v 7 , u 3 + v 3 ,u 5 + u 6 + u 7 + v 5 + v 6 + v 7 , u 5 + v 5 , u 6 + v 6 , u 7 + v 7 ) =(u 3 + v 3 + u 5 + v 5 + u 7 + v 7 , u 3 + v 3 + u 4 + v 4 + u 7 + v 7 , u 3 + v 3 ,u 5 + v 5 + u 6 + v 6 + u 7 + v 7 , u 5 + v 5 , u 6 + v 6 , u 7 + v 7 )tiež spĺňa kontrolné sumy a teda patrí <strong>do</strong> kódu C. Tým sme <strong>do</strong>kázali, že l’ubovol’nálineárna kombinácia vektorov-slov kódu C je kó<strong>do</strong>vým slovom (pripomíname, že GF(2) 7s operáciami modulárneho sčítania po zložkách je vektorový priestor a koeficienty vlineárnej kombinácii sú prvky pol’a GF(2), t.j. prvky množiny {0, 1}, a teda aj to, že Hammingovkód je lineárny kód. (Hammingov (7,4) kód je uvedený v nasledujúcej tabul’ke).0000000 1110000 1001100 01010101101001 0111100 1011010 00110011100110 0100101 1000011 00101101010101 0110011 0001111 1111111Generujúca matica Hammingovho (7,4)-kódu vyzerá nasle<strong>do</strong>vne:


8.1. ZÁKLADNÉ VLASTNOSTI LINERÁRNYCH KÓDOV 89G =⎡⎢⎣1110000100110001010101101001⎤⎥⎦Vytvoríme kó<strong>do</strong>vé slovo pre informačný vektor i = (1111):⎡ ⎤1110000(1111)⎢ 1001100⎥⎣ 0101010 ⎦ = (1111111).1101001Pri dekó<strong>do</strong>vaní správ zakó<strong>do</strong>vaných pomocou lineárneho kódu C možno výhodnepoužit’ generujúcu maticu duálneho kódu C ⊥ , ktorú označíme symbolom H. Ak je Clineárny (n, k)-kód, C ⊥ je lineárny (n, n − k)-kód a generujúca matica kódu C ⊥ má n − kriadkov a n stĺpcov, pričom riadky matice H tvoria vektory bázy lineárneho podpriestoruC ⊥ . Ked’že C je ortogonálny <strong>do</strong>plnok lineárneho podpriestoru C ⊥ , každý vektor (kó<strong>do</strong>véslovo) u ∈ C je ortogonálny na l’ubovol’ný vektor v ∈ C ⊥ a špeciálne, na l’ubovol’nývektor-ria<strong>do</strong>k matice H. To znamená, že u je kó<strong>do</strong>vé slovo práve vtedy, akuH ⊤ = 0kde 0 je v tomto prípade nulový vektor dĺžky n − k Ked’že matica H umožňuje overit’, čije nejaké slovo kó<strong>do</strong>vým slovom kódu C, nazýva sa kontrolnou maticou kódu C. Pripomínameešte, že generujúca matica G kódu C je kontrolnou maticou jeho duálneho kóduC ⊥ .Príklad. Kontrolná matica Hammingovho (7, 4) kódu z príkladu 8.1 má tvar⎡ ⎤1010101H = ⎣ 0110011 ⎦0001111Na základe kontrolnej matice je možné určit’ minimálnu vzdialenost’ príslušnéholineárneho kódu.Veta 8.1.2. Lineárny kód C nad pol’om GF(q) obsahuje nenulové kó<strong>do</strong>vé slovo váhy menšejalebo rovnej w práve vtedy, ak jeho kontrolná matica H obsahuje w lineárne závislýchstĺpcov.Dôkaz Označme vektory-stĺpce kontrolnej matice H symbolmi h 1, . . . , h n ;H = [h 1 ⊤ , . . . , h n ⊤ ].Nech v množine vektorov {h 1 , . . . , h n } existuje w lineárne závislých vektorov h i1 , . . . , h iw ;t.j. existujú také konštanty a i1 , . . . , a iw ∈ GF(q), žea i1 h i1 + . . . , a iw h iw = 0


90 KAPITOLA 8. LINEÁRNE KÓDYMedzi konštantami a i1 , . . . , a iw ∈ GF(q) je aspoň jedna nenulová, a teda vektor a ktoréhokomponenty na pozíciách i 1 , . . . , i w na<strong>do</strong>búdajú v poradí hodnoty a i1 , . . . , a iw a ostatnékomponenty sú nulové, predstavuje nenulové kó<strong>do</strong>vé slovo váhy ≤ w, nakol’koaH ⊤ = a i1 h i1 + . . . , a iw h iw = 0.Na druhej strane, nech v kóde C existuje kó<strong>do</strong>vé slovo a váhy w s nenulovými komponentamia i1 , . . . , a iw . Ked’že a je kó<strong>do</strong>vé slovo, platí preňaH ⊤ = a i1 h i1 + . . . , a iw h iw = 0;t.j. vektory-stĺpce kontrolnej matice h i 1, . . . , h iw sú lineárne závislé.Dôsle<strong>do</strong>k. Lineárny kód C s kontrolnou maticou H má minimálnu vzdialenost’ w právevtedy, ak je v matici H l’ubovol’ných w − 1 stĺpcov lineárne nezávislých a v H existuje wlineárne záviských stĺpcov.To znamená, že ak chceme zostrojit’ lineárny (n, k)-kód C opravujúci chyby váhy aspoňt, musíme skonštruovat’ maticu H typu (n−k)×n, v ktorej je l’ubovol’ných 2t stĺpcovlineárne nezávislých a použit’ ju ako kontrolnú maticu kódu C. Ked’že medzi vektormidĺžky n − k môže byt’ nanajvýš n − k lineárne nezávislých vektorov, matica H môžu byt’nezávislé nanajvýš všetky (n−k)-tice stĺpcov ale l’ubovol’ná (n−k+1)-tica stĺpcov maticeH je lineárne závislá. Tým sme <strong>do</strong>kázali nasledujúcu vetu.Veta 8.1.3 (Singeltonova hranica). Pre minimálnu vzdialenost’ (minimálnu váhu) lineárneho(n, k)-kódu platí nasledujúca nerovnost’d ∗ ≤ 1 + n − k.L’ubovol’ný lineárny kód s minimálnou vzdialenost’ou, ktorá spĺňa rovnost’d ∗ = 1 + n − ksa nazýva lineárnym kó<strong>do</strong>m s maximálnou vzdialenost’ou. Zo Singeltonovej hranice vyplýva,že na to, aby kód bol schopný opravovat’ chyby váhy t musí v kó<strong>do</strong>vom slove byt’aspoň 2t kontrolných symbolov; t.j aspoň dva kontrolné symboly na chybu v jednom komponentekó<strong>do</strong>vého slova. Väčšina samoopravných kó<strong>do</strong>v má viac kontrolných symbolov.Aj ked’ je l’ubovol’ná n × k matica, ktorej riadky tvoria bázu lineárneho podpriestorudimenzie k generujúcou maticou lineárneho (n, k)-kódu, kvôli zjednodušeniu výpočtovupravíme generujúcu maticu na nasledujúci štandardný tvar; G = [I k .P], kde I k je jednotkovámatica rádu k a P je matica typu k × (n − k). (Výho<strong>do</strong>u štandardného tvarugenerujúcej matice je o.i. aj to že sa z nej dá jednoducho odvodit’ kontrolná matica.)Ukážeme, že pre l’ubovol’ný lineárny (n, k)-kód generovaný generujúcou maticou G existujelineárny (n, k)-kód generovaný generujúcou maticou v štandardnom tvare s rovnakýmiparametrami.Nech je lineárny G generujúca matica lineárneho (n, k)-kódu C. Riadky matice Gtvoria bázu lineárneho podpriestoru C. Z lineárnej algebry je známe (pozri napr. [4]), žeak vektory bázy transformujeme pomocou nasledujúcich transformácií


8.1. ZÁKLADNÉ VLASTNOSTI LINERÁRNYCH KÓDOV 91• vektor nahradíme jeho nenulovým násobkom;• k vektoru bázy pripočítame l’ubovol’nú lineárnu kombináciu ostatných vektorov,výsledná množina vektorov bude tvorit’ bázu pôvodného lineárneho priestoru. To znamená,že l’ubovol’ná matica G ′ , ktorú <strong>do</strong>staneme z generujúcej matice G pomocou vyššieuvedených elementárnych operácií nad riadkami, je generujúcou maticou pôvodného kóduC.Ďalšou transformáciou generujúcej matice je výmena jej stĺpcov. Nech je G = [g 1g 2. . . g n ] generujúca matica kódu C. Predpokladajme kvôli jednoduchosti, že v generujúcejmatici G vymeníme prvý a druhý stĺpec, t.j. <strong>do</strong>stávame maticu G′′ = [g 2 g 1 . . . g n ]. Jezrejmé, že riadky matice G ′′ sú lineárne nezávislé, a teda matica G ′′ je generujúcoumaticou lineárneho (n, k)-kódu, ktorý označíme symbolom C ′′ . Nech je i = (i 1 . . . i k )l’ubovol’ný informačný vektor. Pre vektor i zostrojíme kó<strong>do</strong>vé slová tak v kóde C ako aj vC ′′ :iG = (〈i, g 1 〉, 〈i, g 2 〉, . . . , 〈i, g n 〉) = u = (u 1 , u 2 , . . . , u n );iG ′′ = (〈i, g 2 〉, 〈i, g 1 〉, . . . , 〈i, g n 〉) = u ′′ = (u 2 , u 1 , . . . , u n ).Z vyššie uvedeného vyplýva, že výmena i-teho a j-teho stĺpca generujúcej matice kóduC zodpovedá s výmenou i-teho a j-teho komponentu v kó<strong>do</strong>vých slovách kódu C. Nechje π l’ubovol’ná permutácia množiny 1 . . . n a nech sú u, v l’ubovol’né kó<strong>do</strong>vé slová kóduC, resp. u ′′ , v ′′ im prislúchajúce kó<strong>do</strong>vé slová kódu C ′′ , ktorý <strong>do</strong>staneme permutácioukomponentov kó<strong>do</strong>vých slov permutáciou π potomd(u, v) =∑1≤i≤n(u i ≠ v i ) =∑π(i),1≤i≤n(u π(i) ≠ v π(i) ) = d(u ′′ , v ′′ )To znamená, že kódy, ktoré <strong>do</strong>staneme z kódu C pomocou elementárnych operácií nadriadkami a permutácii stĺpcov generujúcej matice G majú rovnaké parametre (počet kó<strong>do</strong>výchslov, minimálnu vzdialenost’) ako kód C a preto ich budeme nazývat’ ekvivalentnýmikódmi. Pomocou vyššie popísaných transformácií nad riadkami a stĺpcami generujúcejmatice možno l’ubovol’nú generujúcu maticu transformovat’ na tvarG = [I k .P],kde I k je jednotková matica rádu k a P je matica typu k × (n − k). Generujúca matica vtvare G = [I k .P] sa nazýva generujúcou maticou v systematickom tvare. Ak G = [I k .P],príslušná kontrolná matica má tvarH = [−P ⊤ .I n−k ],nakol’ko GH ⊤ = −P + P = 0. Ak má kód generujúcu maticu v systematickom tvare, tak vjeho kó<strong>do</strong>vých slovách nasledujú kontrolné symboly až za informačnými. Takýto kód saniekedy nazýva systematickým kó<strong>do</strong>m [2, 1].


92 KAPITOLA 8. LINEÁRNE KÓDYPoznámka. Jacobus van Lint [15] definuje systematický kód odlišne: kód C je systematickýv k komponentoch, ak |C| = q k a pre l’ubovol’ný výber hodnôt v daných kkomponentoch existuje práve jedno kó<strong>do</strong>vé slovo. Ked’že lineárny systematický (n, k)-kód podl’a našej definície je systematickým kó<strong>do</strong>m aj podl’a van Linta (ale nie naopak),budeme sa pridržiavat’ zavedenej definície systematického kódu.Veta 8.1.4. Ku každému lineárnemu kódu existuje ekvivalentný systematický lineárnykód.Dôkaz. Nech je C l’ubovol’ný lineárny (n, k)-kód s generujúcou maticou G. Potomgenerujúcu maticu G možno transformovat’ na maticu G ′′ v systematickom tvare, ktoráje generujúcou maticou kódu ekvivalentnému kódu C. Ked’že G ′′ je systematickom tvare,kód ktorý generuje je systematický.Poznámka. Z predchádzajúcej vety vyplýva, že ak to bude potrebné, môžeme bez ujmyna všeobecnosti predpokladat’, že lineárny kód je systematický.8.2 Dekó<strong>do</strong>vanie lineárnych kó<strong>do</strong>vNech je daný lineárny kód C a nech u ∈ C je odvysielané kó<strong>do</strong>vé slovo. Predpokladajme,že pri prenose slova u vznikla chyba e v jej dôsledku bolo prijaté slovo w = u + e. Akotabul’ku dekó<strong>do</strong>vania budeme na dekó<strong>do</strong>vanie lineárnych kó<strong>do</strong>v budeme používat’ tzv.maticu štandardného rozkladu, ktorú vytvoríme tak, že faktorizujeme aditívnu grupu(GF(q) n , +) podl’a C a za reprezentantov jednotlivých tried rozkladu vyberieme vektoryminimálnej váhy, ktoré sa v daných triedach rozkladu nachádzajú. Rozklad potom zapíšemev po<strong>do</strong>be matice, kde v prvom stĺpci sú uvedení reprezentanti tried rozkladu a vprvom riadku kó<strong>do</strong>vé slová kódu C:v 0 v 1 v 2 . . . v q k −1e 1 v 1 + e 1 v 2 + e 1 . . . v q k −1 + e 1e 2 v 1 + e 2 v 2 + e 2 . . . v q k −1 + e 2... ..e q n−k −1 v 1 + e q n−k −1 v 2 + e q n−k −1 . . . v q k −1 + e q n−k −1Dekó<strong>do</strong>vanie pomocou tabul’ky dekó<strong>do</strong>vania vyzerá nasle<strong>do</strong>vne: nájdeme v tabul’keprijaté slovo w. Ak sa w nachádza v stĺpci j dekódujeme ho ako kó<strong>do</strong>vé slovo v j; t.j. akokó<strong>do</strong>vé slovo, ktoré sa nachádza v prvom riadu a j-tom stĺpci tabul’ky dekó<strong>do</strong>vania. Jezrejmé, že dekó<strong>do</strong>vanie pomocou tabul’ky dekó<strong>do</strong>vania naráža na niekol’ko problémov.Prvým je možnost’ nesprávneho dekó<strong>do</strong>vania prijatého slova. Ak pri prenose kó<strong>do</strong>véhoslova u vznikne chyba v + e, kde v je kó<strong>do</strong>vé slovo, tak sa prijaté slovo w = u + (v + e)dekóduje nesprávne na kó<strong>do</strong>vé slovo u + v. Kritériá správneho dekó<strong>do</strong>vania lineárneho 5kódu pomocou tabul’ky dekó<strong>do</strong>vania uvádza nasledujúca veta.5 tvrdenie vety platí pre blokový kód nad GF(q)


8.2. DEKÓDOVANIE LINEÁRNYCH KÓDOV 93Veta 8.2.1. Ak sa matica štandardného rozkladu používa ako matica dekó<strong>do</strong>vania lineárnehokódu, tak sa prijatý wektor w dekóduje na odvysielaný vektor (kó<strong>do</strong>vé slovo) u právevtedy, ak chyba w − u, ktorá vznikla pri prenose je reprezentantom niektorej triedy rozkladu.Dôkaz. Nech je e i = w − u reprezentantom niektorej triedy rozkladu. Potom prijatývektor w patrí <strong>do</strong> triedy [e i ] a v tabul’ke dekó<strong>do</strong>vania sa nachádza v stĺpci určenom vektoromu = w − e i , a teda bude dekó<strong>do</strong>vaný správne.Nech na druhej strane e i = w − u nie je reprezentantom niektorej triedy rozkladu; t.j.prijaté slovo w patrí <strong>do</strong> triedy [e j ], i ≠ j. Potom sa však w nachádza v stĺpci zodpovedajúcomkó<strong>do</strong>vému slovu w − e j , a teda sa dekóduje nesprávne.Z vety 8.2.1 vyplýva, že nie je možné vylúčit’ možnost’ nesprávneho dekó<strong>do</strong>vanialineárneho kódu. Predpokladajme, že prenosový kanál je q-nárny symetrický kanál 6a potom vhodnou vol’bou reprezentantov tried rozkladu môžeme minimalizovat’ pravdepo<strong>do</strong>bnost’nesprávneho dekó<strong>do</strong>vania. Využijeme nasledujúci dôsle<strong>do</strong>k predchádzajúcejvety.Dôsle<strong>do</strong>k vety 8.2.1 (Lineárny) kód opravuje chyby váhy ≤ t práve vtedy, ak súreprezentantami tried rozkladu všetky vektory váhy t a menšej.Kód, definujúci rozklad, v ktorom sú reprezentantmi tried rozkladu všetky vektoryváhy t a menšej, sa nazýva <strong>do</strong>konalým kó<strong>do</strong>m. Ak sa dekó<strong>do</strong>vanie prijatého slovarobí na základe maximálnej pravdepo<strong>do</strong>bnosti (t.j. prijaté slovo sa dekóduje na kó<strong>do</strong>véslovo, ktoré bolo s najvyššou pravdepo<strong>do</strong>bnost’ou odvysielané), tak pravdepo<strong>do</strong>bnost’ nesprávnehodekó<strong>do</strong>vania <strong>do</strong>konalého kódu je minimálna. Problém je v tom, že <strong>do</strong>konalýlineárny (n, k)-kód nad GF(q) opravujúci chyby váhy ≤ t, musí spĺňat’ nasledujúcu podmienku:t∑j=0( nj)(q − 1) j = q n−ka kó<strong>do</strong>v, ktorých parametre túto podmienku spĺňajú takmer niet (ako sme už spomínali,jedinými známymi <strong>do</strong>konalými kódmi sú Hammingove kódy a Golayov kód). Pretosa podmienka o reprezentantoch tried rozkladu mierne oslabuje a zavádza sa pojemkvázi<strong>do</strong>konalého kódu ako kódu definujúceho rozklad, v ktorom sú reprezentantmi triedrozkladu všetky vektory váhy t a menšej a niekol’ko vektorov váhy t + 1. Ilustrujemezavedené pojmy na nasledujúcom príklade.Príklad.[2] Lineárny (5,2)-kód C s generujúcou maticouG =[ 1011101101]6 Pripomíname, že pri prenose slova q-nárnym symetrickým kanálom je pravdepo<strong>do</strong>bnost’ toho, ževznikne chyba menšej váhy väčšia, ako pravdepo<strong>do</strong>bnost’ toho, že vznikne chyba väčšej váhy.


94 KAPITOLA 8. LINEÁRNE KÓDYa kontrolnou maticouH =⎡⎣111001001011001má minimálnu vzdialenost’ 3 a umožňuje opravovat’ chyby váhy 1. Matica štandardnéhorozdelenia kódu C vyzerat’ nasle<strong>do</strong>vne:⎤⎦00000 10111 01101 1101000001 10110 01100 1101100010 10101 01111 1100000100 10011 01001 1111001000 11111 00101 1001010000 00111 11101 0101000011 10100 01110 1100100110 10001 01011 11100Kód C je kvázi<strong>do</strong>konalý kód, pretože okrem nulového vektora a piatich vektorov váhy1 sú reprezentantami tried rozkladu aj dva vektory váhy 2. Kód opravuje všetky chybyváhy 1 a dve z desiatich možných chýb váhy 2. Pravdepo<strong>do</strong>bnost’ nesprávneho dekó<strong>do</strong>vaniakó<strong>do</strong>vého slova preneseného binárnym symetrickým kanálom (s pravdepo<strong>do</strong>bnost’ousprávneho prenosu znaku p = 0.99) je 0.0007860898.Matica štandardného rozkladu môže byt’ pre praktické používanie príliš vel’ká. Využijemeteraz to, že dekódujeme lineárny kód a na jeho dekó<strong>do</strong>vanie zostrojíme podstatnemenšiu tabul’ku dekó<strong>do</strong>vania. Predpokladajme znova, že bolo odvysielané kó<strong>do</strong>vé slovou a že pri prenose nastala chyba e, v dôsledku ktorej bolo prijaté slovo w = u + e.Vynásobíme prijaté slovo kontrolnou maticou a <strong>do</strong>stávame(u + e)H ⊤ = uH ⊤ + eH ⊤ = 0 + eH ⊤ = s,kde s je vektor dĺžky n − k, nazvaný syndrómom chyby. Ako sme videli, syndróm chybynezávisí od odvysielaného kó<strong>do</strong>vého slova, ale len od samotného chybového vektora e.Pozrime sa teraz na triedu rozkladu s reprezentantom e i :[e i ] = v 0 + e i , . . . , v q k −1 + e i.Pre l’ubovol’ný vektor w = v j + e i z triedy [e i ] platí(w)H ⊤ = v j H ⊤ + e i H ⊤ = 0 + e i H ⊤ = s i ;t.j. všetky vektory z triedy [e i ] majú rovnaký syndróm, s i . Ak budeme používat’ metódudekó<strong>do</strong>vania na základe maximálnej pravdepo<strong>do</strong>bnosti (prijaté slovo w dekó<strong>do</strong>vat’ na tokó<strong>do</strong>vé slovo, ktoré bolo odvysielané s najväčšou pravdepo<strong>do</strong>bnost’ou) tak:1. vypočítame syndróm (w)H ⊤ = s i ,2. v tabul’ke dekó<strong>do</strong>vania nájdeme reprezentanta triedy rozkladu, ktorej zodpovedásyndróm s i ; e i ,


8.3. REED-MULLEROVE KÓDY 953. vypočítame kó<strong>do</strong>vé slovo: w − e i .Tabul’ka dekó<strong>do</strong>vania, ktorú sme použili v druhom kroku má q n−k riadkov a dva stĺpce;v prvom sú uvedené syndrómy chýb a v druhom im prislúchajúci reprezentanti triedrozkladu.Príklad.[2] Lineárny (5,2)-kód C z predchádzajúceho príkladu má tabul’ku syndrómovpredstavitel’ triedy syndrómrozkladu00000 00000001 00100010 01000100 10001000 10110000 11100011 01100110 1108.3 Reed-Mullerove kódyV tejto časti uvedieme podrobnejšie jeden špeciálny prípad lineárnych kó<strong>do</strong>v, Reed-Mullerovekódy, ktoré majú jednoduchý popis a jednoduché dekó<strong>do</strong>vanie. Reed-Mullerovekódy sú charakterizované dvoma základnými parametrami - rá<strong>do</strong>m r a hodnotou m; 0 ≤r < m určujúcou dĺžku kó<strong>do</strong>vého slova. Existujú Reed-Mullerove kódy s rozličnýmidĺžkami kó<strong>do</strong>vých slov a rôznymi opravnými schopnost’mi. Reed-Mullerov kód s parametramir, m budeme označovat’ symbolom R(r, m). V nasledujúcej tabul’ke sú uvedenézákladné parametre kódu R(r, m).n = 2 mk = ∑ ( m)0≤j≤r jn − k = ∑ ( m)r


96 KAPITOLA 8. LINEÁRNE KÓDYAby sme mohli popísat’ konštrukciu generujúcej matice G kódu R(r, m), zavediemeoperáciu súčinu vektorov. Nech sú u = (a 1 , . . . , a n ) a v = (b 1 , . . . , b n ) dva vektory vektorovéhopriestoru V. Súčinom (pozor, nejedná sa ani o vektorový ani o skalárny súčinvektorov) vektorov u, v nazveme vektor uv = (a 1 b 1 , . . . , a n b n ). (Ide o súčin vektorovpo zložkách; v binárnom prípade môžeme pomocou konvencie jazyka C zapísat’ súčinvektorov u, v nasle<strong>do</strong>vne uv = u&v.) Podmatice G 0 , . . . , G r generujúcej matice G sú definovanénasle<strong>do</strong>vne:1. G 0 je jednotkový vektor dĺžky 2m ;2. G 1 je matica typu m × 2 m , ktorej stĺpcami sú všetky možné binárne vektory dĺžkym;3. G l , 1 ≥ l ≥ r je binárna matica typu ( ml)× 2 m ; riadkami podmatice G l sú všetkyvektory, ktoré sú výsledkom súčinu l vektorov z matice G 1 .Ilustrujeme konštrukcie generujúcej matice Reed-Mullerových kó<strong>do</strong>v na príklade R(3, 4).Príklad.⎡G 0 = [ 1111111111111111 ] ⎤⎡⎤0000000011111111G 1 = ⎢ 0000111100001111⎥⎣ 0011001100110011 ⎦0101010101010101⎡⎤00000000000011110000000000110011G =G 2 =0000000001010101⎢ 0000001100000011⎥⎣ 0000010100000101 ⎦0001000100010001⎡⎤0000000000000011⎢⎣G 3 = ⎢ 0000000000000101⎥ ⎥⎣ 0000000000010001 ⎦ ⎦0000000100000001Generujúca matica kódu R(3, 4) je matica typu (15, 16). To znamená, že kód R(3, 4) má 15informačných a 1 kontrolný symbol. (Kód R(3, 4) je triviálny kód s testom parity, schopnýmodhal’ovat’ chyby párnej váhy.) Neskôr zostrojíme aj netriviálny Reed-Mullerovkód a na ňom ilustrujeme metódy kó<strong>do</strong>vania a dekó<strong>do</strong>vanie informácie. SkonštruujemeR(2, 4), Reed-Mullerov kód rádu 2 dĺžky 16 s generujúcou maticou typu (11, 16) :⎡ ⎤G 0G = ⎣ G 1⎦G 2Z konštrukcie generujúcej matice Reed-Mullerovko kódu vyplýva, že R(r − 1, m) jemožné zostrojit’ z R(r, m) tak, že sa z generujúcej matice G kódu R(r, m) vynechá podmaticaG r . To ale znamená, že R(r−1, m) ⊂ R(r, m), a teda minimálna vzdialenost’ d ∗ kóduR(r, m) nemôže byt’ väčšia ako je minimálna vzdialenost’ kódu R(r − 1, m). Ukážeme,


8.3. REED-MULLEROVE KÓDY 97žed ∗ = 2 m−r .Každý ria<strong>do</strong>k podmatice G s generujúcej matice G kódu R(r, m) má váhu 2 m−s , 0 ≤ s ≤r < m. Ked’že aj riadky generujúcej matice predstavujú kó<strong>do</strong>vé slová kódu R(r, m),d ∗ ≤ 2 m−r .Ukážeme, že kód R(r, m) opravuje chyby váhy 2 m−r−1 − 1 a teda jeho minimálna vzdialenost’nie je menšia ako 2 m−r − 1. Vzhl’a<strong>do</strong>m na to, že kód R(r, m) obsahuje len slovápárnej váhy, z vyšie uvedeného potom vyplýva, že d ∗ = 2 m−r . Ked’že Reed-Mullerovekódy sú lineárne kódy, mohli by sme pre kód R(r, m) zostrojit’ kontrolnú maticu a nadekó<strong>do</strong>vanie prijatých slov použit’ klasickú metódu dekó<strong>do</strong>vania lineárnych kó<strong>do</strong>v. Reednavrhol zvláštnu metódu dekó<strong>do</strong>vania Reed-Mullerových kó<strong>do</strong>v, ktorá umožňuje rekonštruovat’informačné symboly na základe prijatého slova priamo, bez toho, aby bolo potrebnévypočítat’ syndróm chyby a určovat’ vektor chýb. Popíšeme teraz Ree<strong>do</strong>vu metódu dekó<strong>do</strong>vania.Nech je daný informačný vektor i = (i 0 , . . . , i k−1 ). Vzhl’a<strong>do</strong>m na štruktúru generujúcejmatice kódu R(r, m), rozdelíme aj informačný vektor na bloky vel’kost’ou zodpovedajúcepodmaticiam G j generujúcej matice: i = (i 0 , i 1 , . . . , i r ). Pripomíname, že blok i l budemat’ dĺžku ( )ml . Kó<strong>do</strong>vé slovo u zodpovedajúce informačnému vektoru i zostrojíme tak,že vynásobíme informačný vektor generujúcou maticou kódu:⎡u = iG = (i 0 , i 1 , . . . , i r ) × ⎢⎣⎤G 0G 1⎥. ⎦G rPredpokladajme, že pri prenose kó<strong>do</strong>vého slova <strong>do</strong>šlo ku chybám, v dôsledku ktorýchbolo prijaté slovo v = u + e, wt(e) < 2 m−r−1 . Podstata Ree<strong>do</strong>vho algoritmu spočíva vtom, že sa pomocou kontrolných súm, ktorých argumentami sú symboly prijatého slovav určia informačné symboly bloku i r a potom sa vypočíta slovo⎡ ⎤G 0v (1) G 1= v − i r G r = (i 0 , . . . , i r−1 ) × ⎢ ⎥⎣ . ⎦ + e,G r−1ktoré je „pokazeným“ kó<strong>do</strong>vým slovom kódu R(r − 1, m). Po<strong>do</strong>bným spôsobom postupneurčíme hodnoty informačných symbolov z blokov i r−1 , . . . , i 1 . Hodnotu poslednéhoinformačného bitu, i 0 = i 0 určíme zo slovav (r) = v (r−1) − i 1 G 1 = i 0 × G 0 + e.Ak i 0 = 0, v (r) = e, v opačnom prípade v (r) = e. To znamená, že ak wt(v (r) ) < 2 m−1 , i 0 =0; v opačnom prípade i 0 = 1. Otvorenou otázkou zostáva, ako zostavit’ kontrolné sumyna výpočet informačných symbolov i 1 , . . . , i k−1 . Riešenie tohto problému ilustrujeme naavizovanom príklade dekó<strong>do</strong>vania kódu R(2, 4).


98 KAPITOLA 8. LINEÁRNE KÓDYPríklad. Nech je C Reed-Mullerov kód rádu 2, dĺžky 16. Generujúca matica kódu C, <strong>do</strong>plnenákvôli názornosti o ria<strong>do</strong>k obsahujúci kó<strong>do</strong>vé slovo a stĺpec obsahujúci informačnývektor, je uvedená v nasledujúcej tabul’ke.Nech jev 0 v 1 v 2 v 3 v 4 v 5 v 6 v 7 v 8 v 9 v 10 v 11 v 12 v 13 v 14 v 15i 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1i 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1i 2 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1i 3 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1i 4 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1i 5 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1i 6 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1i 7 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1i 8 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1i 9 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1i 10 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1i = (1 0011 100001)informačný vektor, potom kó<strong>do</strong>vé slovo prislúchajúce vektoru i jeu = (1000 1000 1000 0111).Predpokladajme, že pri prenose vznikla chyba e váhy 1;a bolo prijaté slovoe = (0001 0000 0000 0000),v = u + e = (1001 1000 1000 0111).Pri konštrukcii kontrolných sú, budeme vychádzat’ zo vzt’ahu u = iG; t.j. zo vzt’ahovmedzi informačnými symbolmi a symbolmi kó<strong>do</strong>vého slova:u 0 = i 0u 1 = i 0 + i 4u 2 = i 0 + i 3u 3 = i 0 + i 3 + i 4 + i 10. . .u 15 = i 0 + i 1 + · · · + i 10Vyjadríme neznáme hodnoty informačných symbolov i 5 , . . . , i 10 pomocou známych symbolovprijatého slova:i 10 = v 0 + v 1 + v 2 + v 3i 10 = v 4 + v 5 + v 6 + v 7i 10 = v 8 + v 9 + v 10 + v 11i 10 = v 12 + v 13 + v 14 + v 15


8.3. REED-MULLEROVE KÓDY 99Všimneme si, že každý symbol prijatého slova vystupuje práve v jednej kontrolnej sume.To znamená, že ak pri prenose vznikla chyba váhy 1, chyba ovplyvní výsle<strong>do</strong>k právejednej kontrolnej sumy. Hodnotu i 10 určíme „hlasovaním“; v našom prípade sú hodnotykontrolných súm 0, 1, 1, 1 a teda i 10 = 1. Po<strong>do</strong>bne zostavíme kontrolné sumy pre informačnésymboly i 9 , i 8 , i 7 , i 6 , i 5 a určíme hodnoty uvedených informačných symbolovi 9 = v 0 + v 1 + v 4 + v 5 = 0i 9 = v 2 + v 3 + v 6 + v 7 = 1i 9 = v 8 + v 9 + v 12 + v 13 = 0i 9 = v 10 + v 11 + v 14 + v 15 = 0i 8 = v 0 + v 2 + v 4 + v 6 = 0i 8 = v 1 + v 3 + v 5 + v 7 = 1i 8 = v 8 + v 10 + v 12 + v 14 = 0i 8 = v 9 + v 11 + v 13 + v 15 = 0i 7 = v 0 + v 1 + v 8 + v 9 = 0i 7 = v 2 + v 3 + v 10 + v 11 = 1i 7 = v 4 + v 5 + v 12 + v 13 = 0i 7 = v 6 + v 7 + v 14 + v 15 = 0i 6 = v 0 + v 2 + v 8 + v 10 = 0i 6 = v 1 + v 3 + v 9 + v 11 = 1i 6 = v 4 + v 6 + v 10 + v 12 = 0i 6 = v 5 + v 7 + v 13 + v 15 = 0i 5 = v 0 + v 4 + v 8 + v 12 = 1i 5 = v 1 + v 5 + v 9 + v 13 = 1i 5 = v 2 + v 6 + v 10 + v 14 = 1i 5 = v 3 + v 7 + v 11 + v 15 = 0i 9 = 0i 8 = 0i 7 = 0i 6 = 0i 5 = 1Blok i 2 = (100001) informačných symbolov vynásobíme podmaticou G 2 generujúcej maticeG a výsle<strong>do</strong>k odpočítame od prijatého slova v:v = 1001 1000 1000 0111i 2 G 2 = 0001 0001 0001 1110v (1) = v − i 2 G 2 = 1000 1001 1001 1001


100 KAPITOLA 8. LINEÁRNE KÓDYPripomíname, že slovo v (1) je kó<strong>do</strong>vé slovo kódu R(1, 4) „pokazené“ chybou e. Zostavímekontrolné sumy na výpočet informačných symbolov i 1 , . . . , i 4 :i 4 = 1v 0 + v 1 = 1 v 2 + v 3 = 0v 4 + v 5 = 1 v 6 + v 7 = 1v 8 + v 9 = 1 v 10 + v 11 = 1v 12 + v 13 = 1 v 14 + v 15 = 1i 3 = 1v 0 + v 2 = 1 v 1 + v 3 = 0v 4 + v 6 = 1 v 5 + v 7 = 1v 8 + v 10 = 1 v 9 + v 11 = 1v 12 + v 14 = 1 v 13 + v 15 = 1i 2 = 0v 0 + v 4 = 0 v 1 + v 5 = 0v 2 + v 6 = 0 v 3 + v 7 = 1v 8 + v 12 = 0 v 9 + v 13 = 0v 10 + v 14 = 0 v 11 + v 15 = 0i 1 = 0v 0 + v 8 = 0 v 1 + v 9 = 0v 2 + v 10 = 0 v 3 + v 11 = 1v 4 + v 12 = 0 v 5 + v 13 = 0v 6 + v 14 = 0 v 7 + v 15 = 0Vynásobíme blok i 1 = (0011) informačných symbolov podmaticou G 1 generujúcej maticekódu C a výsle<strong>do</strong>k odčítame od vektora v (1) :v (1) = 1000 1001 1001 1001i 1 G 1 = 0110 0110 0110 0110v (2) = v (1) − i 1 G 1 = 1110 1111 1111 1111Napokon určíme i 0 . Váha wt(v (2) ) = 15 > 8, a to znamená, že i 0 = 1.


Kapitola 9Cyklické kódyLineárne kódy, ktoré sme štu<strong>do</strong>vali v predchádzajúcej časti, boli príkla<strong>do</strong>m samoopravnýchkó<strong>do</strong>v, ktoré sa dali efektívne konštruovat’ a pre ktoré existovali efektívne metódykó<strong>do</strong>vania a (aspoň principiálne efektívne metódy) dekó<strong>do</strong>vania. Pri štúdiu lineárnychkó<strong>do</strong>v sme zaviedli základné parametre samoopravných kó<strong>do</strong>v (opravná schopnost’, minimálnavzdialenost’, prenosová rýchlost’ a i.) a určili vzt’ahy medzi nimi. Z praktickéhohl’adiska je však najmä dekó<strong>do</strong>vanie dlhších lineárnych kó<strong>do</strong>v výpočtovo náročné. Pretoje potrebné hl’adat’ iné triedy samoopravných kó<strong>do</strong>v, ktoré by zachovávali <strong>do</strong>bré vlastnostilineárnych kó<strong>do</strong>v a vyznačovali sa aj výpočtovo efektívnymi metódami dekó<strong>do</strong>vania.Cyklické kódy, ktoré sú podtrie<strong>do</strong>u lineárnych kó<strong>do</strong>v, vd’aka silnejšej algebraickejštruktúre, čiastočne spĺňajú uvedené požiadavky.Definícia 9.0.1. Lineárny kód C nazveme cyklickým kó<strong>do</strong>m, ak pre l’ubovol’né kó<strong>do</strong>véslovo u = (u 0 , u 1 , . . . , u n−1 ) ∈ C platí u ′ = (u n−1 , u 0 , u 1 , . . . , u n−2 ) ∈ C.Názov cyklický kód vyplýva z toho, že operácia na slovách(u 0 , u 1 , . . . , u n−1 ) → (u n−1 , u 0 , u 1 , . . . , u n−2 )predstavuje cyklický posun kó<strong>do</strong>vého slova. Na cyklické kódy sa môžeme teda dívat’ akona lineárne podpriestory vektorového priestoru GF(q)nspĺňajúce <strong>do</strong>datočnú podmienkuna uzavretost’ vzhl’a<strong>do</strong>m na cyklickú posun kó<strong>do</strong>vých slov. Z hl’adiska konštrukcie, kó<strong>do</strong>vaniaale najmä dekó<strong>do</strong>vania bude efektívnejšia polynomická reprezentácia cyklickýchkó<strong>do</strong>v; t.j. reprezentácia kó<strong>do</strong>vých slov z C ⊂ GF(q) n pomocou polynómov z faktorovéhookruhu GF(q)[x]/x n − 1.Príklad. Uvažujme Hammingov (15, 11) kód, ktorý sme zaviedli v časti 7.4 s kontrolnoumaticou⎡⎤1 0 1 0 1 0 1 0 1 0 1 0 1 0 1H = ⎢ 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1⎥⎣ 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 ⎦0 0 0 0 0 0 0 1 1 1 1 1 1 1 1Permutáciou stĺpcov kontrolnej matice H <strong>do</strong>staneme kontrolnú maticu H′ kódu, ktorý101


102 KAPITOLA 9. CYKLICKÉ KÓDYje ekvivalentný pôvodnému Hammingovmu (15, 11) kódu:H ′ = H =⎡⎢⎣1 0 0 0 1 0 0 1 1 0 1 0 1 1 10 1 0 0 1 1 0 1 0 1 1 1 1 0 00 0 1 0 0 1 1 0 1 0 1 1 1 1 00 0 0 1 0 0 1 1 0 1 0 1 1 1 1Stĺpce kontrolnej matice H′ môžeme chápat’ dvojako: bud’ ako vektory dĺžky 4 nad pol’omGF(2), alebo ako prvky pol’a GF(2 4 ). Nech je α primitívny prvok pol’a GF(2 4 ), potom stĺpcekontrolnej matice H ′ môžeme vyjadrit’ pomocou mocnín prvku α nasle<strong>do</strong>vne:[H ′ = α 0 , α 1 , α 2 , α 3 , α 4 , α 5 , α 6 , α 7 , α 8 , α 9 , α 10 , α 11 , α 12 , α 13 , α 14] .Ako bude vyzerat’ dekó<strong>do</strong>vanie? Nech u = (u 0 , u 1 , . . . , u 14 ) ∈ C je kó<strong>do</strong>vé slovo. PotomuH ′⊤ = 0.Posledný vzt’ah môžeme rozpísat’ nasle<strong>do</strong>vne:uH ′⊤ = u 0 α 0 + u 1 α 1 + u 2 α 2 + u 3 α 3 + u 4 α 4 + u 5 α 5 + u 6 α 6 + u 7 α 7 + u + 8α 8 + u 9 α 9 ++ u 10 α 10 + u 11 α 11 + u 12 α 12 α 13 + u 14 α 14 = 0.⎤⎥⎦ .Zavedieme teraz prirodzenú korešpondenciu medzi kó<strong>do</strong>vými slovami Hammingovho(15, 11) kódu a polynómami z okruhu polynómov GF(2)[x]/x 15 − 1:(u 0 , u 1 , . . . , u 14 ) ↔ u 0 + u 1 x + u 2 x 2 + · · · + u 14 x 14 ,resp. vo všeobecnom prípade vektor v = v 0 , . . . , V n−1 nad pol’om GF(q) budeme reprezentovat’polynómom v 0 + v 1 x + · · · + v n−1 x n−1 z okruhu polynómov GF(q)[x]/x n − 1. Vrát’mesa ku príkladu. Násobenie vektora v kontrolnou maticou H ′ predstavuje vyčíslenie hodnotypolynómu v(x) v prvku α ∈ GF(2 4 ). Je zrejmé, že prijaté slovo v je kó<strong>do</strong>vým slovomHammingovho (15, 11) kódu práve vtedy, ak v(α) = 0. Polynómy zodpovedajúce kó<strong>do</strong>výmslovám, budeme nazývat’ kó<strong>do</strong>vými polynómami.V predchádzajúcom prípade sme od kontrolnej matice nad pol’om GF(q) prešli k takejreprezentácii kontrolnej matice, v ktorej celému vektoru-stĺpcu zodpovedal jeden prvoknejakého rozšírenia pôvodného pol’a (prvok pol’a GF(q m )). Toto však nie je jedinámožnost’, ako vyjadrit’ kontrolnú maticu ako maticu nad rozšírením pôvodného pol’a.Predpokladajme, že je daná kontrolná matica H typu (n − k) × n nad pol’om GF(q) a číslo(n − k) je delitel’né m; t.j. (n − k) = mr. Vektor-stĺpec dĺžky (n − k) môžeme rozbit’ na rblokov dĺžky m a každý blok reprezentovat’ prvkom pol’a GF(qm ):Kontrolná matica H sa potom transformuje na nasledujúcu maticu:⎡H = ⎢⎣⎤β 11 β 12 . . . β 1nβ 21 β 22 . . . β 2n⎥. . . . . . ⎦ ;β r1 β r2 . . . β rn


103kde β ij ∈ GF(q m ), i = 1 . . . , r; j = 1, . . . , n. Namiesto pôvodnej kontrolnej matice typu(n − k) × n nad pol’om GF(q) <strong>do</strong>stávame kontrolnú maticu typu r × n nad pol’om GF(q m );kde r = (n − k)/m. Aby sme pri dekó<strong>do</strong>vaní mohli nahradit’ násobenie prijatého slovau kontrolnou maticou <strong>do</strong>sadzovaním prvkov pol’a GF(q m ) <strong>do</strong> polynómu u(x), budemekontrolnú maticu H zapisovat’ v tvare⎡H = ⎢⎣γ 0 1γ 1 1. . . γ n−11γ 0 2γ 1 2. . . γ n−12. . . . . .γ 0 r γ 1 r . . . γ n−1rkde γ 1 , . . . , γ r ∈ GF(q m ). Parametre n, q, m nie sú celkom nezávislé. Na začiatok budemepredpokladat’, že n = q m − 1, neskôr ukážeme, aké d’alšie hodnoty môže dĺžka kóduna<strong>do</strong>búdat’.Dekó<strong>do</strong>vanie prijatého slova u = (u 0 , u 1 , . . . , u n−1 ) možno realizovat’ dvojako: prijatéslovo vynásobíme kontrolnou maticou H v ktorej prvky γ j inahradíme príslušnýmivektormi dĺžky m nad pol’om GF(q) a vypožítame syndróm s;s = uH ⊤ .V druhom prípade násobeniu prijatého vektora (slova) u kontrolnou maticou H nadpol’om GF(q m ) zodpovedá <strong>do</strong>sadzovanie prvkov γ 1 , . . . , γ r ∈ GF(q m ) <strong>do</strong> polynómu u(x):⎤⎥⎦ ;uH ⊤ =u 0 γ 0 1 + u 1γ 1 1 + · · · + u n−1γ n−11= u(γ 1 ),u 0 γ 0 2 + u 1γ 1 2 + · · · + u n−1γ n−12= u(γ 2 ),..u 0 γ 0 r + u 1 γ 1 r + · · · + u n−1 γ n−1r = u(γ 2 r).Podmienka uH ⊤ = 0 je ekvivalentná tomu, že prvky γ 1 , . . . , γ r ∈ GF(q m ) sú korenepolynómu u(x). Ilustrujeme uvedenú konštrukciu na príklade.Príklad. Nech je α primitívny prvok pol’a GF(2 4 ), nech n = 15. Položíme γ 1 = α, γ 2 = α 3a zostrojíme kontrolnú maticu H (15, 7)-kódu:[ α0αH =1 α 2 α 3 α 4 α 5 α 6 α 7 α 8 α 9 α 10 α 11 α 12 α 13 α 14 ]α 0 α 3 α 6 α 9 α 12 α 15 α 18 α 21 α 24 α 27 α 30 α 33 α 36 α 39 α 42Prvky pol’a GF(2 4 ) môžeme reprezentovat’ pomocou binárnych vektorov dĺžky 4 (pozritabul’ku 15.6). Kontrolná matica bude potom binárnou maticou typy 8 × 15:⎡⎤1 0 0 0 1 0 0 1 1 0 1 0 1 1 10 1 0 0 1 1 0 1 0 1 1 1 1 0 00 0 1 0 0 1 1 0 1 0 1 1 1 1 0H =0 0 0 1 0 0 1 1 0 1 0 1 1 1 11 0 0 0 1 1 0 0 0 1 1 0 0 0 1⎢ 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1⎥⎣ 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 ⎦0 1 1 1 1 0 1 1 1 1 0 1 1 1 1


104 KAPITOLA 9. CYKLICKÉ KÓDYPri štúdiu Bose-Chandhury-Hocquenghemových (BCH) kó<strong>do</strong>v v nasledujúcej podkapitoleukážeme, že kód z predchádzajúceho príkladu je BCH kód (15, 7) opravujúcichyby váhy 2.9.1 Polynomický popis cyklických kó<strong>do</strong>vV tejto časti popíšeme najprv algebraickú štruktúru cyklických kó<strong>do</strong>v a potom ukážeme,ako na základe týchto poznatkov možno konštruovat’ cyklické kódy. Budeme uvažovat’cyklický kód C dĺžky n nad pol’om GF(q). Pripomenieme, že cyklický kód C je lineárnympodpriestorom vektorového priestoru dimenzie n nad pol’om GF(q) a že C je uzavretý nacyklický posun svojich prvkov. Vektorový priestor GF(q) n možno prirodzeným spôsobomzobrazit’ na faktorový okruh polynómov GF(q)[x]/x n − 1:∀u ∈ GF(q) n ; u = (u 0 , u 1 , . . . , u n−1 ) ↔ u 0 + u 1 x + u 2 x 2 + · · · + u n−1 x n−1Dá sa l’ahko overit’, že faktorový okruh polynómov GF(q)[x]/x n − 1 má vlastnosti vektorovéhopriestoru. Naviac, vo faktorovom okruhu GF(q)[x]/x n − 1 je definované (modulárne)násobenie polynómov:∀a(x), b(x) ∈ GF(q)[x]/x n − 1 : a(x) · b(x) = a(x) · b(x) (mod x) n − 1.Zostáva nájst’ vyjadrenie cyklického posunu pomocou operácií nad polynómami v okruhuGF(q)[x]/x n −1. Cyklický posun vektora u zodpovedá súčinu polynómov x·u(x). Skutočne,pričomx · u(x) = u n−1 x n + u n−2 x n−1 + · · · + u 1 x 2 + u 0 x (mod x n − 1),u n−1 x n +u n−2 x n−1 + . . . +u 1 x 2 + u 0 x : (x n − 1) = u n−1− u n−1 x n +u n−1u n−2 x n−1 + . . . +u 1 x 2 + u 0 x + u n−1Cyklický kód môžeme teraz charakterizovat’ nasledujúcim spôsobom:Veta 9.1.1. Nech GF(q)[x]/x n − 1 je faktorový okruh polynómov nad pol’om GF(q). Podmnožinapolynómov C ⊂ GF(q)[x]/x n − 1 tvorí cyklický kód práve vtedy, ak1. C je aditívna podgrupa okruhu GF(q)[x]/x n − 1,2. ak u(x) ∈ C a a(x) ∈ GF(q)[x]/x n − 1, taka(x) · u(x) (mod x n − 1) ∈ C.


9.1. POLYNOMICKÝ POPIS CYKLICKÝCH KÓDOV 105Dôkaz. Cyklický kód je zároveň lineárnym kó<strong>do</strong>m. To znamená, že C tvorí aditívnupodgrupu okruhu GF(q)[x]/x n − 1. Z lineárnosti kódu C vyplýva, že aj súčin l’ubovol’néhoprvku a ∈ GF(q) a polynómu u(x) ∈ C patrí <strong>do</strong> C. Z cyklickosti C vyplýva, že pre u(x) ∈ Caj x k · u(x) ∈ C. To znamená, že pre l’ubovol’ný polynóm a(x) ∈ GF(q)[x]/x n − 1; a(x) =a 0 + a 1 x + · · · + a n−1 x n−1 patria aj polynómy a 0 · u(x), a 1 x · u(x), . . . , a n−1 x n−1 · u(x) <strong>do</strong> Ca z toho, že C je aditívna grupa vyplýva, že aja 0 · u(x) + a 1 x · u(x) + · · · + a n−1 x n−1 · u(x) = a(x) · u(x) ∈ C.Opačne, nech C spĺňa uvedené dve podmienky. Z prvej vyplýva, že C je uzavretá nasčítanie a z druhej, že C je uzavretá na násobenie skalárom (ostatné vlastnosti násobeniaa sčítania sa <strong>do</strong> C prenášajú z okruhu GF(q)[x]/x n − 1). To znamená, že C tvorí lineárnypodpriestor (lineárny kód). Z druhej podmienky naviac vyplýva, že C je uzavretá nacyklický posun; t.j. C je cyklický kód.Poznámka.hlavný ideál.Množina C tvorí ideál okruhu GF(q)[x]/x n − 1. Neskôr <strong>do</strong>kážeme, že C jePreskúmame teraz množinu C podrobnejšie. Budeme v nej hl’adat’ polynóm g(x),ktorý je nenulový, normovaný a má spomedzi všetkých (nenulových) prvkov-polynómovmnožiny C minimálny stupeň. Ked’že C je neprázdna množina, nenulový normovanýpolynóm g(x) minimálneho stupňa existuje. Ukážeme, že je daný jednoznačne. Predpokladajmeopak, t.j. že v C existujú dva rôzne polynómy g 1 (x) a g 2 (x) poža<strong>do</strong>vanýchvlastností. Potom aj ich rozdiel, polynóm g 1 (x) − g 2 (x) patrí <strong>do</strong> C. Ale polynómy g 1 (x)a g 2 (x) majú ten istý stupeň a sú normované. To znamená, že ich rozdiel je nenulovýpolynóm nižšieho stupňa, z ktorého po vydelení koeficientom pri najvyššej mocninemožno vytvorit’ normovaný nenulový polynóm nižšieho stupňa ako je stupeň polynómovg 1 (x) a g 2 (x). Spor. Polynóm g(x) je teda daný jednoznačne a z dôvodu, ktorý zakrátkouvedieme, nazýva sa generujúcim polynómom kódu C Preskúmame vzt’ah polynómu g(x)a ostatných prvkov (polynómov) kódu C. Nech je u(x) nenulový kó<strong>do</strong>vý polynóm kódu C.Potom existujú polynómy q(x) a r(x) také, žeu(x) = q(x)g(x) + r(x) mod x n − 1,pričom deg(r(x) < deg(g(x)). Ked’že g(x) ∈ C, tak potom podl’a vety 9.1.1 aj q(x)g(x) ∈ C.To však znamená, že aju(x) − q(x)g(x) ∈ C,nakol’ko ide o rozdiel dvoch kó<strong>do</strong>vých slov a C je cyklický a teda aj lineárny kód. Aleu(x) − q(x)g(x) = r(x)a deg(r(x) < deg(g(x)). To by znamenalo, že v kóde C existuje polynóm nižšieho stupňaako je stupeň generujúceho polynómu. To však je možné len v prípade, ked’ r(x) = 0.Potom však pre l’ubovol’ný kó<strong>do</strong>vý polynóm u(x) z C platíTým sme <strong>do</strong>kázali nasledujúcu vetuu(x) = q(x)g(x).


106 KAPITOLA 9. CYKLICKÉ KÓDYVeta 9.1.2. Nech C ⊆ GF(q)[x]/x n − 1 je cyklický kód dĺžky n. Potom v kóde C existujejediný nenulový normovaný polynóm g(x) stupňa n − k taký, žeC = {a(x)g(x);a(x) ∈ GF(q)[x], deg(g(x)) < k}.Ked’že cyklický kód je jednoznačne zadaný svojím generujúcim polynómom, ponúkajúsa prirodzené otázky, či sa tento vzt’ah nedá využit’ pri konstrukcii, kó<strong>do</strong>vaní i dekó<strong>do</strong>vanícyklických kó<strong>do</strong>v a ak áno, ako. Odpoved’ na tieto otázky budeme hl’adat’ vnasledujúcej časti tejto kapitoly. Začneme základnou otázkou: aké vlastnosti musí mat’polynóm, aby bol generujúcim polynómom cyklického kódu? Odpoved’ na táto otázkudáva nasledujúca veta.Veta 9.1.3. Cyklický kód Cak g(x)|x n − 1.dĺžky n s generujúcim polynómom g(x) existuje práve vtedy,Dôkaz. Predpokladajme, že C ⊆ GF(q)[x]/x n − 1 je cyklický kód dĺžky n s generujúcimpolynómom g(x). Platíx n − 1 = q(x)g(x) + r(x),kde q(x), r(x) ∈ GF(q)[x]/x n − 1 a deg(r(x)) < deg(g(x)). Ked’že platía deg(r(x)) < n, tak potomx n − 1 = 0 mod x n − 10 = (q(x)g(x) + r(x)) mod x n − 1 = (q(x)g(x)) mod (x n − 1) + r(x).Kód C je cyklický a g(x) je jeho generujúci polynóm, preto aj (q(x)g(x)) mod x n − 1 jekó<strong>do</strong>vý polynóm kódu C. Ked’že 0 je tiež kó<strong>do</strong>vý polynóm, potom aj r(x) = 0 − q(x)g(x)musí byt’ kó<strong>do</strong>vým polynómom kódu C. To je však možné len v prípade, ked’ r(x) = 0, atedax n − 1 = q(x)g(x).Nech opačne g(x) ∈ GF(q)[x], g(x)|x n − 1, deg(g(x)) = n − k. Množina polynómov C ={a(x)g(x); a(x) ∈ GF(q)[x], deg(g(x)) < k} je podl’a vety 9.1.1 cyklickým kó<strong>do</strong>m.To, že polynóm g(x) delí polynóm x n − 1 znamená, že existuje polynóm, označíme hoako h(x), taký, že x m − 1 = g(x)h(x). Ak je g(x) generujúcim polynómom cyklického kóduC, tak potom sa polynóm h(x) nazýva kontrolným polynómom cyklického kódu C. Po<strong>do</strong>bneako generujúci polynóm, zohráva aj kontrolný polynóm v teórii lineárnych kó<strong>do</strong>v dôležitúúlohu.Pozrime sa teraz na polynóm x n − 1 nad pol’om GF(q). Vyjadríme x n − 1 ako súčinireducibilných polynómov nad pol’om GF(q):x n − 1 = f 1 (x) · f 2 (x) · · · · · f l (x).Generujúci polynóm g(x) cyklického kódu dĺžky n nad pol’om GF(q) sa dá potom vyjadrit’ako súčin vybraných ireducibilných polynómov z rozkladu x n − 1:g(x) = f i1 (x) · f i2 (x) . . . f ij (x).


9.2. MATICOVÝ POPIS CYKLICKÝCH KÓDOV 107Ked’že polynóm x n − 1 má l ireducibilných faktorov nad pol’om GF(q), existuje 2 l rozličnýchgenerujúcich polynómov a práve tol’ko cyklických kó<strong>do</strong>v dĺžky n nad pol’om GF(q).Cyklický kód však tvoria kó<strong>do</strong>vé polynómy, ktoré sú násobkami generujúceho polynómu;u(x) = a(x)g(x). Kó<strong>do</strong>vý polynóm má stupeň nanajvýš n − 1. Ak bude mat’ generujúcipolynóm stupeň n − k, tak potom kód bude obsahovat’ 2 k kó<strong>do</strong>vých slov. Z toho vyplýva,že niektoré polynómy nebudú generovat’ použitel’né kódy. Ilustrujeme vytváraniecyklických kó<strong>do</strong>v pomocou generujúcich polynómov na príklade [1].Príklad. Uvedieme všetky binárne cyklické kódy dĺžky 7. Polynóm x7 − 1 1 má tri ireducibilnéfaktory 2 x 7 − 1 = (x + 1)(x 3 + x + 1)(x 3 + x 2 + 1).To znamená, že teoreticky existuje 8 binárnych cyklických kó<strong>do</strong>v dĺžky 7.generujúci polynóm kontrolný polynóm kód1 x 7 − 1 C 1x + 1 (x 3 + x + 1)(x 3 + x 2 + 1) C 2(x 3 + x + 1) (x + 1)(x 3 + x 2 + 1) C 3(x 3 + x 2 + 1) (x + 1)(x 3 + x + 1) C 4(x + 1)(x 3 + x + 1) (x 3 + x 2 + 1) C 5(x + 1)(x 3 + x 2 + 1) (x 3 + x + 1) C 6(x 3 + x + 1)(x 3 + x 2 + 1) (x + 1) C 7x 7 − 1 1 C 8• kód C 1 pozostáva zo všetkých binárnych vektorov dĺžky 7, jeho opravná schopnost’je nulová.• kód C 2 je kód s testom na paritu a má 64 kó<strong>do</strong>vých slov dĺžky 7 (párnej váhy)• kódy C 3 a C 4 sú Hammingove (7,4) kód opravujúce jednu chybu. Majú 16 kó<strong>do</strong>výchslov• kódy C 5 a C 6 sú duálne kódy k Hamingovému (7,4) kódu, majú 8 kó<strong>do</strong>vých slov• kód C 7 má dve kó<strong>do</strong>vé slová 0000000, 1111111, opravuje 3 chyby a nazýva sa kód sopakovaním (repetition code).• kód C 8 má jediné kó<strong>do</strong>vé slovo 0000000 a je prakticky nepoužitel’ný.9.2 Maticový popis cyklických kó<strong>do</strong>vCyklické kódy sú podmnožinou lineárnych kó<strong>do</strong>v. Lineárne kódy je možné zadat’ pomocougenerujúcej, resp. kontrolnej matice. Jeden typ kontrolnej matice pre cyklické kódy1 pripomíname, že nad pol’om GF(2) x 7 − 1 = x 7 + 12 o ireducibilite polynómov (x 3 + x + 1), (x 3 + x 2 + 1) sa presvedčíme l’ahko; ak by totiž boli reducibilné,museli by mat’ aspoň jeden faktor stupňa 1, a teda ako koreň prvok z pol’a GF(2).


108 KAPITOLA 9. CYKLICKÉ KÓDYsme už uviedli v úvode tejto kapitoly. Medzitým sme zistili, že cyklické kódy je možnépopísat’ pomocou generujúcich a kontrolných polynómov. Ukážeme teraz, aký je vzt’ahmedzi generujúcim plonómom agenerujúcou maticou a kontrolným polynómom a kontrolnoumaticou cyklického kódu. Uvažujme cyklický kód C dĺžky n nad pol’om GF(q)s generujúcim polynómom g(x) stupňa n − k a kontrolným polynómom h(x). Ked’žecyklický kód C pozostáva zo všetkých násobkov generujúceho polynómu g(x), kó<strong>do</strong>výmipolynómami budú aj polynómy g(x), x · g(x), . . . , x k−1 · g(x). Ukážeme, že polynómyg(x), x · g(x), . . . , x k−1 · g(x), resp. vektory ich koeficientov sú lineárne nezávislé. Predpokladajmeopak, potom by musela existovat’ k-tica prvkov a 0 , . . . , a k−1 ∈ GF(q), s aspoňjedným nenulovým prvkom taká, že (v polynomickom vyjadrení)Zo vzt’ahu 9.1však vyplýva, žea 0 · g(x) + a 1 · x · g(x) + · · · + a k−1 · x k−1 · g(x) = 0 (9.1)(a 0 + a 1 · x + · · · + a k−1 · x k−1 ) · g(x) = 0,resp.(a 0 + a 1 · x + · · · + a k−1 · x k−1 ) = 0,čo je však v spore s nenulovost’ou vektora prvkov a 0 , . . . , a k−1 . To znamená, že vektorykoeficientov polynómov g(x), x · g(x), . . . , x k−1 · g(x) sú nezávislé a ked’že cyklický kód C jezároveň lineárny kód dimenzie k, vektory koeficientov polynómov g(x), x · g(x), . . . , x k−1 ·g(x) tvoria jeho bázu. Táto báza zapísaná v po<strong>do</strong>be matice predstavuje generujúcumaticu cyklického kódu C:G =⎡⎤0 . . . 0 0 g n−k g n−k−1 . . . g 2 g 1 g 00 . . . 0 g n−k g n−k−1 g n−k−2 . . . g 1 g 0 00 . . . g n−k g n−k−1 g n−k−2 g n−k−3 . . . g 0 0 0⎢⎥⎣ .. ⎦g n−k . . . . . . 0 0 0(9.2)Teraz zostrojíme kontrolnú maticu cyklického kódu C pomocou jeho kontrolného polynómuh(x).Ked’že h(x)|x n − 1 existuje lineárny kód C ′ s generujúcim polynómom h(x).Generujúcu maticu H ′ kódu C ′ možno taktiež vyjadrit’ v tvare 9.2. Kód C ′ však nie jeduálnym kó<strong>do</strong>m kódu C, pretože G · H ′⊤ ≠ 0, a teda matica H ′ nie je kontrolnou maticoukódu C. Ukážeme, že kontrolná matica cyklického kódu C odvodená z jeho kontrolnéhopolynómu h(x) existuje a má tvarH =⎡0 . . . 0 0 h k h k−1 . . . h 2 h 1 h 00 . . . 0 h k h k−1 h k−2 . . . h 1 h 0 00 . . . h k h k−1 h k−2 h k−3 . . . h 0 0 0⎢⎣ ..h k . . . . . . 0 0 0⎤⎥⎦(9.3)


9.3. KÓDOVANIE POMOCOU CYKLICKÝCH KÓDOV 109Potrebujeme <strong>do</strong>kázat’, že G·H ⊤ = 0. Využijeme skutočnost’, že h(x)·g(x) = 0 mod x n −1.To znamená, žeg 0 h 0 = 1,(g 0 h 1 + g 1 h 0 ) = 0,(g 0 h 2 + g 1 h 1 + g 2 h 0 ) = 0,. . .(g n−k−1 h k + g n−k h k−1 ) = 0,g n−k h k = 1.(9.4)Súčinom matíc G · H ⊤ je matica typu (n − k) × (n − k) ktorú možno zapísat’ v tvareG · H ⊤ =⎡⎢⎣⎤a n−1 a n−2 . . . a ka n−2 a n−3 . . . a k−1⎥.. ⎦a n−k a n−k−1 . . . a 1(9.5)kdea m =m∑g m−i h i , 0 < m < n.i=0Zo vzt’ahov 9.4 vyplýva, že a m = 0 pre m = 1, . . . , n − 1 a teda matica 9.3 je kontrolnoumaticou kódu C. Ukážeme, že lineárny kód C ⊥ , duálny ku kódu C je zároveň cyklickýkód s generujúcim polynómom x k · hx −1 . Stačí ukázat’, že polynóm x k · hx −1 delí polynómx n −1. Vyjadríme polynóm x n −1 v po<strong>do</strong>be súčinu generujúceho a kontrolného polynómux n − 1 = g(x) · h(x), <strong>do</strong>sadíme x := x −1 a výslednú rovnost’ vynásobíme polynómom x n .Dostávame rovnost’x n · g(x −1 ) · h(x −1 ) = x n−k g(x −1 ) · c k · h(x −1 ) = 1 − x n .Z poslednej rovnosti vyplýva, že polynómom x k · h(x −1 ) delí polynóm x n − 1.Poznámka. Kód C ′ zadaný generujúcou maticou H ′ sa niekedy tiež nazýva duálnymkó<strong>do</strong>m kódu C. V skutočnosti sa však nejedná o duálny kód (pretože G · H ′⊤ ≠ 0) ale idelen o kód ekvivalentný s duálnym kó<strong>do</strong>m C ⊥ .9.3 Kó<strong>do</strong>vanie pomocou cyklických kó<strong>do</strong>vSprávu, ktorú potrebujeme zakó<strong>do</strong>vat’ pomocou cyklického (n, k)-kódu C (s generujúcimpolynómom g(x) stupňa n − k rozdelíme na postupnost’ disjunktných blokov dĺžky k(informačné vektory). Každému informačnému vektoru i = (i 0 , . . . , i k−1 ) priradíme informačnýpolynóm i(x) = i 0 + i 1 · x + · · · + i k−1 · x k−1 stupňa nanajvýš k − 1.Ked’že kó<strong>do</strong>véslová (polynómy) cyklického kódu C sú násobkami generujúceho polynómu g(x), stačíinformačný polynóm vynásobit’ generujúcim polynómom a <strong>do</strong>staneme kó<strong>do</strong>vý polynómkódu Cu(x) = i(x) · g(x).


110 KAPITOLA 9. CYKLICKÉ KÓDYTakýto spôsob kó<strong>do</strong>vania je korektný, ale je nesystematický, pretože z kó<strong>do</strong>vého polynómuu(x) sa nedá bezprostredne určit’ informačný polynóm i(x). Existuje aj systematickýspôsob kó<strong>do</strong>vania, ktorého podstata je nasle<strong>do</strong>vná:• Informačný polynóm i(x) vynásobíme polynómom x n−k .• Vypočítame x n−k · i(x) mod g(x)• Od polynómu x n−k ·i(x) odčítame x n−k ·i(x) mod g(x) a <strong>do</strong>stávame hl’adané kó<strong>do</strong>véslovo x n−k · i(x) − x n−k · i(x) mod g(x).Ked’že stupeň polynómu x n−k · i(x) mod g(x)je nanajvýš n − k − 1 a prvky informačnéhovektora tvoria v kó<strong>do</strong>vom slove koeficienty pri mocninách x n−k , . . . , x n−1 , v kó<strong>do</strong>vomslove sú jednoznačne oddelené informačné a „kontrolné“ symboly tak, ako smepoža<strong>do</strong>vali, obr. 9.1.i(x)−x n−k · i(x) mod g(x)Obrázok 9.1: Kó<strong>do</strong>vé slovo systematického cyklického kódu9.4 Dekó<strong>do</strong>vanie cyklických kó<strong>do</strong>vKed’že cyklické kódy sú podmožinou lineárnych kó<strong>do</strong>v, možno na ich dekó<strong>do</strong>vanie použit’tie isté metódy ako na dek=o<strong>do</strong>vanie lineárnych kó<strong>do</strong>v. Pri dekó<strong>do</strong>vaní lineárnych kó<strong>do</strong>vs väčšou opravnou schopnost’ou sme narážali na to, že si bolo potrebné pamätat’ rozsiahludekó<strong>do</strong>vaciu tabul’ku (obsahujäcu zoznam syndrómov chýb a im prislúchajúcichchybových vektorov). Využijeme algebraickú štruktúru cyklických kó<strong>do</strong>va na zostrojenieefektívnejšieho algoritmu dekó<strong>do</strong>vania. Predpokladajme, že informácia, ktorú spracovávame,je zapísaná vo forme polynómov. Do popisu spracovania zahrnieme aj kó<strong>do</strong>vaniespráv:1. informačný vektor i transformujeme na informačný polynóm i(x),2. informačný polynóm (napríklad nesystematicky) transformujeme na kó<strong>do</strong>vý polynóm:u(x) = i(x) · g(x) s vektorom koeficientov u,3. koeficienty kó<strong>do</strong>vého polynómu sa prenášajú prenosovým kanálom. Počas prenosuvznikne chyba e, ktorá transformuje prenášané kó<strong>do</strong>vé slovo na slovo v = u + e. Vpolynomickom vyjadrení v(x) = u(x) + e(x).4. Príjemca interpretuje prijaté slovo v ako polynóm v(x), vydelí prijatý polynómgenerujúcim polynómom a vypočíta zvyšok po delení:v(x) mod g(x) = (u(x) + e(x)) mod g(x) = u(x) mod g(x) + e(x) mod g(x) == e(x) mod g(x) = s(x).


9.4. DEKÓDOVANIE CYKLICKÝCH KÓDOV 111názov označenie stupeňgenerujúci polynóm g(x) n − kkontrolný polynóm h(x) kinformačný polynóm i(x) k − 1kó<strong>do</strong>vý polynóm u(x) n − 1chybový polynóm e(x) n − 1prijatý polynóm v(x) n − 1syndrómový polynóm s(x) n − k − 1Tabul’ka 9.1: Polynómy cyklických kó<strong>do</strong>vVýsledkom delenia je polynóm s(x), ktorý sa nazýva syndrómový polynóm. Je zrejmé,že deg(s(x)) < deg(g(x)). Ked’že l’ubovol’né kó<strong>do</strong>vé slovo u(x) je násobkomgenerujúceho polynómu g(x), u(x) mod g(x) = 0 a teda syndrómový polynóm nezávisíod odvysielaného kó<strong>do</strong>vého polynómu, ale len od polynómu chýb.Skôr ako budeme pokračovat’ vo výklade, uvedieme kvôli prehl’adnosti zoznam polynómov,ktoré sa používajú pri popise, kó<strong>do</strong>vaní a dekó<strong>do</strong>vaní cyklického (n, k)-kódu.Aby bolo možné používat’ syndrómový polynóm s(x) na určenie chyby e(x), potrebujememat’ záruku, že syndróm chyby určuje chybu 3 jednoznačne; t.j. že neexistujú dverôzne chyby váhy menšej alebo rovnej opravnej schopnosti kódu s tým istým syndrómom.Túto dôležitú vlastnost’ cyklických kó<strong>do</strong>v sformulujeme a <strong>do</strong>kážeme v nasledujúcej vete.Veta 9.4.1. Nech je d minimálna vzdialenost’ cyklického kódu C, potom každému polynómuchýb váhy menšej ako d/2 zodpovedá práve jeden syndrómový polynóm.Dôkaz. Každému chybovému polynómu e(x) zodpovedá nejaký syndrómový polynóms(x) = e(x) mod g(x). Predpokladajme, že existujú dva rozličné chybové polynómy váhymenšej ako d/2; e 1 (x) ≠ e 2 (x) s tým istým syndrómovým polynómom s(x). To znamená,žeale potom je rozdiel chybových polynómove 1 (x) = q 1 (x) · g(x) + s(x)e 2 (x) = q 2 (x) · g(x) + s(x)e 1 (x) − e 2 (x) = (q 1 (x) − q 2 (x)) · g(x) (9.6)násobkom generujúceho polynómu, a teda kó<strong>do</strong>vým slovom. Ale polynóm e 1 (x) − e 2 (x)má váhu < d, čo je v spore s minimálnou váhou kódu C. To znamená, že e 1 (x)−e 2 (x) = 0,resp. e 1 (x) = e 2 (x).Príklad. Uvažujeme (7, 4) Hammingov cyklický kód s generujúcim polynómom g(x) =x 3 + x + 1. Tento kód má minimálnu vzdialenost’ 3, a opravuje chyby váhy 1. Všetky3 po<strong>do</strong>bne ako pri lineárnych kó<strong>do</strong>ch, aj tu sa rozumie chyba váhy menšej alebo rovnej opravnej schopnostikódu


112 KAPITOLA 9. CYKLICKÉ KÓDYchybové polynómy váhy nanajvýš 1 a im prislúchajúce syndrómové polynómy sú uvedenév tabul’kechybový polynóm e(x) syndrómový polynóm s(x)0 01 1xxx 2 x 2x 3 x + 1x 4x 2 + xx 5 x 2 + x + 1x 6 x 2 + 1Príklad spracovania (kó<strong>do</strong>vanie, prenos a dekó<strong>do</strong>vanie) správ pomocou Hammingovhokódu je uvedený v tabul’kevektor/polynóm označenie vektor polynóm spôsob výpočtuinformačný i(x) 1011 x 3 + x + 1kó<strong>do</strong>vý u(x) 1000101 x 6 + x 2 + 1 u(x) = i(x) · g(x)odvysielaný u(x) 1000101 x 6 + x 2 + 1chybový e(x) 0010000 x 4prijatý v(x) 1010101 x 6 + +x 4 + x 2 + 1 v(x) = u(x) + e(x)syndrómový s(x) 110 x 2 + x v(x) mod g(x)chybový e(x) 0010000 x 4 s(x) ↔ e(x)opravený u(x) 1000101 x 6 + x 2 + 1 u(x) = v(x) − e(x)informačný i(x) 1011 x 3 + x + 1 i(x) = u(x) ÷ g(x)Použitie polynomickej reprezentácie kódu umožnilo nahradit’ maticové oprácie (násobenievektorov generujúcou, resp. kontrolnou maticou) jednoduchšie realizovatel’nýmnásobením a resp. delením generujúcim polynómom, ale základný problém dekó<strong>do</strong>vanialineárnych kó<strong>do</strong>v—potrebu rozsiahlej dekó<strong>do</strong>vacej tabul’ky—nevyriešilo. Využijemeteraz silnejšiu algebraickú štruktúru cyklických kó<strong>do</strong>v na návrh efektívnejšej metódydekó<strong>do</strong>vania.Predpokladajme, že kó<strong>do</strong>vé slovo u(x) bolo pri prenose modifikované chybou e(x) av dôsledku toho bolo prijaté slovo v(x) = u(x) + e(x). Základná myšlienka dekó<strong>do</strong>vaniaspočíva v tom, že pri cyklickom posune prijatého slova sa súčasne posúva kó<strong>do</strong>vé slovoaj chyba:x · v(x) = x · u(x) + x · e(x) mod x n − 1.To znamená, že po istom počte cyklických posunov prijatého slova <strong>do</strong>staneme slovo,ktoré bude predstavovat’ kó<strong>do</strong>vé slovo (kó<strong>do</strong>vý polynóm), v ktorom bude chybou modifikovanýkoeficient pri mocnine x n−1 (a možno aj niektoré iné koeficienty). Ak by smetúto chybu <strong>do</strong>kázali odhalit’ a opravit’, potom by stačilo cyklicky posunút’ opravené slovoo patričný počet miest, aby sme <strong>do</strong>stali pôvodne odvysielané kó<strong>do</strong>vé slovo u(x). Čopotrebujeme na to, aby sme <strong>do</strong>kázali odhalit’ chybu v koeficiente pri najvyššej mocnineprijatého polynómu? Stačilo by na to mat’ zoznam syndrómov chýb zodpovedajúcichvšetkým (daným kó<strong>do</strong>m opravitel’ným) kó<strong>do</strong>vým slovám e(x), e n−1 ≠ 0. Potombude stačit’ posúvat’ prijaté slovo, vyčísl’ovat’ v kaž<strong>do</strong>m kroku syndróm chyby a porovnávat’ho s redukovanou tabul’kou syndrómov. Na tejto myšlienke je postavený Meggitov


9.4. DEKÓDOVANIE CYKLICKÝCH KÓDOV 113algoritmus dekó<strong>do</strong>vania cyklických kó<strong>do</strong>v, ktorý bol publikovaný v roku 1960. Meggitovalgoritmus naviac využíva tú skutočnost’, že na výpočet postupnosti syndrómovpolynómov v(x), x · v(x), . . . , x n−1 · v(x) nie je potrebné počítat’ ((x j · v(x) mod x n − 1)mod g(x), j = 0, . . . , n − 1, ale stačí počítat’ (x j · s(x) mod g(x). Toto zjednodušenie sazakladá na tvrdení nasledujúcej vety.Veta 9.4.2. Nech je daný cyklický kód C s generujúcim polynómom g(x) a nech je v(x)polynóm prijatý po odvysielaní (nejakého) kó<strong>do</strong>vého slova kódu C. Nech je s(x) syndrómovýpolynóm polynómu v(x), potom má polynóm x · v(x) mod x n − 1 (cyklický posunprijatého slova) syndrómový polynóm x · s(x) mod g(x).DôkazNech je v(x) = v 0 + v 1 · x + · · · + v n−1 · x n−1 prijatý polynóm. Platív(x) = q(x) · g(x) + s(x).Cyklický posun prijatého slova je (v polynomickom vyjadrení):x · v(x) mod x n − 1 = v n−1 + v 0 · x + v 1 · x 2 + · · · + v n−2 · x n−1 == x · v(x) − v n−1 · (x n − 1) = x · v(x) − v n−1 · g(x)h(x) == x · (q(x) · g(x) + s(x)) − v n−1 · g(x)h(x) = x · s(x) + x · q(x) · g(x) − v n−1 · g(x)h(x) == x · s(x) + g(x) · (x · q(x) − v n−1 · h(x)) = x · s(x) mod g(x).Uvedieme teraz Meggitov algoritmus dekó<strong>do</strong>vania cyklických kó<strong>do</strong>v. Kvôli jednoduchostivýkladu sa obmedzíme na binárne cyklické kódy; zovšeobecnenie Meggitovho algoritmuna q-árne cyklické kódy ponecháme na čitatel’a. Predpokladáme, že• C je cyklický (n,k)-kód nad pol’om GF(2) s generujúcim polynómom g(x)• bol odvysielaný kó<strong>do</strong>vý polynóm u(x),• pri prenose vznikla (kó<strong>do</strong>m C korigovatel’ná) chyba e(x), v dôsledku čoho bol prijatýpolynóm v(x).Meggittov algoritmus dekó<strong>do</strong>vania binárnych cyklických kó<strong>do</strong>v [1][1 ] Vytvor dekó<strong>do</strong>vaciu tabul’ku obsahujúcu všetky syndrómy, zodpovedajúce predstavitel’omtried rozkladu faktorového okruhu GF(2)[x]/x n − 1, podl’a cyklickéhokódu C; chybovým polynómom stupňa n − 1.[2 ] Vydel’ prijatý polynóm v(x) generujúcim polynómom g(x) a vypočítaj syndrómovýpolynóm: s(x) = v(x) mod g(x).[3 ] Porovnaj syndróm s(x) so syndrómami v dekó<strong>do</strong>vacej tabul’ke; ak sa s(x) nachádzav dekó<strong>do</strong>vacej tabul’ke, oprav (aktuálne) najvyšší koeficient prijatého polynómuv(x):v(x) ← v(x) + x n−1 .


114 KAPITOLA 9. CYKLICKÉ KÓDY[4 ]Vykonaj cyklický posun prijatého polynómu:v(x) ← x · v(x) mod x n − 1a cyklický posun syndrómu podl’a generujúceho polynómu g(x):s(x) ← x · s(x)mod g(x).Ak sa krok 4 vykonal n−1-krát, vykonaj posledný cyklický posun polynómu v(x) a skonči.(Dekó<strong>do</strong>vané slovo predstavujú koeficienty polynómu v(x).) V opačnom prípade pokračujkrokom 3.Poznámka. Meggittov algoritmus sa dá vel’mi efektívne realizovat’ pomocou dekodérazaloženého na posuvných registroch s lineárnou spätnou väzbou (linear feedback shiftregister, LFSR), pomocou ktorých sa vykonávajú cyklické posuny, modulárne násobeniea delenie polynómov. Nie je problém v prípade potreby modifikovat’ najvyšší bit,ktorý LFSR obsahuje, ale konštrukcia LFSR by sa skomplikovala, ak by bolo potrebnézabezpečit’, aby bolo možné v kaž<strong>do</strong>m kroku menit’ l’ubovol’né bity LFSR. Preto sa v 3.kroku koriguje len aktuálne najvyšší bit slova, ktoré register obsahuje, hoci syndrómovýpolynóm jednoznačne určuje aj prípadné d’alšie chyby. Na druhej strane, ked’že sa v3. kroku opravuje len najvyšší bit spracovávaného slova, dekó<strong>do</strong>vacia tabul’ka nemusíobsahovat’ chybové polynómy.Ilustrujeme teraz Meggittov algoritmus na príklade [1].Príklad. Uvažujme binárny cyklický (15,7)-kód C s generujúcim polynómom g(x) =x 8 + x 7 + x 6 + x 4 + 1, opravujúci chyby váhy 2. Dekó<strong>do</strong>vacia tabul’ka obsahuje 15 syndrómovýchpolynómov. Kvôli názornosti v nej uvádzame aj syndrómom prislúchajúcechybové polynómy, ktoré však v d’alšom pri dekó<strong>do</strong>vaní nebudeme používat’.chybový polynóm syndrómový polynóm syndrómx 14 x 3 + x 5 + x 6 + x 7 000101111 + x 14 1 + x 3 + x 5 + x 6 + x 7 10010111x + x 14 x + x 3 + x 5 + x 6 + x 7 01010111x 2 + x 14 x 2 + x 3 + x 5 + x 6 + x 7 00110111x 3 + x 14 x 5 + x 6 + x 7 00000111x 4 + x 14 x 3 + x 4 + x 5 + x 6 + x 7 00011111x 5 + x 14 x 3 + x 6 + x 7 00010011x 6 + x 14 x 3 + x 5 + x 7 00010101x 7 + x 14 x 3 + x 5 + x 6 00010110x 8 + x 14 1 + x 3 + x 4 + x 5 10011100x 9 + x 14 1 + x + x 3 + x 4 + x 7 11011001x 10 + x 14 x + x 2 + x 3 01110000x 11 + x 14 x + x 2 + x 4 + x 5 + x 6 + x 7 01101111x 12 + x 14 x + x 4 + x 6 + x 7 01001011x 13 + x 14 x 2 + x 3 + x 4 + x 7 00111001


9.4. DEKÓDOVANIE CYKLICKÝCH KÓDOV 115Predpokladáme, že bolo odvysielané slovo u(x), počas prenosu vznikla chyba e(x) abolo prijaté slovo v(x):u(x) 100011111101110 1 + x 4 + x 5 + x 6 + x 7 + x 8 + x 9 + x 11 + x 12 + x 13e(x) 000010000100000 x 4 + x 9v(x) 100001111001100 1 + x 5 + x 6 + x 7 + x 8 + x 11 + x 12 + x 13V nasledujúcej tabul’ke sú uvedené hodnoty koeficientov spracovávaného polynómuv(x) a syndrómu s(x) v jednotlivých krokoch algoritmu. Kvôli stručnosti uvádzame lenvektory koeficientov príslušných polynómov, pričom koeficienty pri najvyšších mocnináchsú vpravo.krok v(x) s(x) s(x) ∈ DT?0. 1000 0111 1001 110 1100 0110 −1. 0100 0011 1100 111 0110 0011 −2. 1010 0001 1110 011 1011 1010 −3. 1101 0000 1111 001 0101 1101 −4. 1110 1000 0111 100 1010 0101 −5. 0111 0100 0011 110 1101 1001 ̌6. 1011 1010 0001 111 1110 0111 −7. 1101 1101 0000 111 1111 1000 −8. 1110 1110 1000 011 0111 1100 −9. 1111 0111 0100 001 0011 1110 −10. 1111 1011 1010 000 0001 1111 ̌11. 1111 1101 1101 000 1000 0100 −12. 0111 1110 1110 100 0100 0010 −13. 0011 1111 0111 010 0010 0001 −14. 0001 1111 1011 101 1001 1011 −15. 1000 1111 1101 110 −Poznámka. Vrát’me sa ešte k predchádzajúcemu príkladu. Z porovnania zložitostidekó<strong>do</strong>vania uvedeného (15,7)-kódu pomocou štandardnej metódy dekó<strong>do</strong>vania lineárnychkó<strong>do</strong>v a Meggittovej metódy, jednoznačne vychádza lepšie Meggittova metóda. Štandardnátabul’ka dekó<strong>do</strong>vania obsahuje 256 dvojíc (syndróm, chyba), zatial’ čo Meggittovdekóder pracuje s tabul’kou pozostávajúcou z 15 položiek (syndrómov). Meggittovametóda umožňuje opravit’ všetky chyby váhy najviac 2; t.j. 121 rozličných chýb. Chybyváhy väčšej ako 2 Meggittov dekóder neopravuje. Ak sa na (15,7)-kódu pozeráme ako nalineárny kód, tak zostávajúcich 135 tried štandardného rozkladu vektorového priestoruGF(2) 15 podl’a kódu má ako predstavitel’ov vektory-chyby váhy väčšej ako 2. Ked’žebinárnych vektorov dĺžky 15 váhy 3 je 455, v ideálnom prípade (ak by predstavitel’miostávajúcich tried rozkladu boli chybové vektory váhy 3), by dekóder lineárneho kóduumožnil popri chybách váhy 0,1 a 2 opravit’ asi 30% chýb váhy 3.Cyklický posun prijatých slov kó<strong>do</strong>vaných pomocou cyklických kó<strong>do</strong>v možno využit’na ešte efektívnejšie dekó<strong>do</strong>vanie, ako poskytuje Meggittov dekóder v prípade, ak sa


116 KAPITOLA 9. CYKLICKÉ KÓDYchyby v prijatom slove nenachádzajú príliš d’aleko od seba. V takomto prípade je možnépoužit’ metódu nazývanú error trapping , ktorú podrobnejšie popíšeme v nasledujúcejčasti.9.5 Error trapping dekó<strong>do</strong>vanieError trapping dekó<strong>do</strong>vanie („chytanie/lapanie“ chýb) je metóda dekó<strong>do</strong>vania cyklickýchkó<strong>do</strong>v. Vhodná je pri kó<strong>do</strong>ch opravujúcich jednu, prípadne dve chyby a v situáciach, ked’očakávame výskyt chýb na blízkych pozíciach v kó<strong>do</strong>vom slove (tzv. burst chyby).Budeme predpokladat’, že C je cyklický (n, k) kód nad GF(2) opravujúci t chýb. Tedakó<strong>do</strong>vé slová v C majú dĺžku n a k informačných symbolov. Nech g(x) je generujúcipolynóm kódu C . Metóda error trapping funguje správne vtedy, ak je najviac t chýbrozmiestnených na najviac n − k susedných pozíciach.nx xxx x xn – k∑Nech f(x) = a 0 + a 1 x + a 2 x 2 + · · · + a n x n je polynóm nad GF(2). Označme wt(()f(x)) =i a i jeho váhu. Nech w je slovo s najviac t chybami. Potom platia nasledujúce tvrdenia.Lema 1. Ak je váha syndrómu slova w najviac t, tak chybový polynóm je rovný syndrómu.Dôkaz. Označme s(x) syndróm a e(x) príslušný chybový polynóm slova w. Potom platí:s(x) = e(x) mod g(x).Inak povedané, e(x) = q(x)g(x) + s(x). Z predpokladu o počte chýb vo w vyplýva, žewt(e(x)) ≤ t. Navyše vieme, že wt(s(x)) ≤ t (predpoklad lemy). Teda váha e(x) − s(x)je najviac 2t. Kód C opravuje t chýb, teda minimálna vzdialenost’ l’ubovol’ných dvoch kó<strong>do</strong>výchslov je aspoň 2t + 1. Ked’že e(x) − s(x) je kó<strong>do</strong>vé slovo (je to násobok generujúcehopolynómu) s váhou najviac 2t a 0 je tiež kó<strong>do</strong>vé slovo, <strong>do</strong>stávame:e(x) − s(x) = 0.Odtial’ bezprostredne vyplýva tvrdenie lemy.Lema 2. Ak sú chyby na najviac n − k susedných pozíciach, tak existuje cyklický posunw, ktorý má syndróm váhy najviac t.Dôkaz. Vezmime taký cyklický posun w, pre ktorý sú chyby „najviac vpravo“ (formálne,stupeň chybového polynómu pre príslušný cyklický posun je minimálny). Označmetakýto posun w ′ a prislúchajúci chybový polynóm e ′ (x). Podl’a predpokladu lemy je


9.5. ERROR TRAPPING DEKÓDOVANIE 117deg(e ′ (x)) ≤ n − k − 1, kde symbolom deg označujeme stupeň polynómu. Pre syndróms ′ (x) máme:s ′ (x) = e ′ (x) mod g ′ (x).Ked’že g(x) je generujúcim polynómom kódu C , deg(g(x)) = n − k. Preto s ′ (x) = e ′ (x). Pozohl’adnení predpokladu o počte chýb vo w <strong>do</strong>stávame wt(s ′ (x))) ≤ t.Predchádzajúce dve lemy poskytujú teoretické zdôvodnenie pre error trapping dekó<strong>do</strong>vaniecyklických kó<strong>do</strong>v (samozrejme, pri splnení predpokla<strong>do</strong>v o umiestnení chýb vdekó<strong>do</strong>vanom slove w). Postupne skušame pre všetky rotácie w ′ slova w:1. s ′ (x) ← w ′ (x) mod g(x)2. ak wt(s ′ (x)) ≤ t (podl’a lemy 2):(a) oprav w ′ : w ′ (x) ← w ′ (x) + s ′ (x) (lema 1)(b) w ← aplikuj „inverznú“ rotáciu na w ′(c) koniecPod pojmom inverzná rotácia máme na mysli to, že ak sme w ′ <strong>do</strong>stali z w cyklickým posunomo p pozícií <strong>do</strong>l’ava, tak teraz opravené w ′ posunieme cyklicky o p pozícií <strong>do</strong>prava.Na konci <strong>do</strong>staneme vo w opravené slovo.Príklad. Uvažujme binárny cyklický kód (15, 7) opravujúci 2 chyby, s generujúcimpolynómomg(x) = x 8 + x 7 + x 6 + x 4 + 1.V tomto prípade bude error trapping metóda dekó<strong>do</strong>vania úspešná pre tie dvojice chýb,ktoré sú od seba vzdialené (cyklicky) o najviac 15 − 7 = 8 pozícií. A to sú všetkySamozrejme, slová s jednou (alebo <strong>do</strong>konca žiadnou) chybou <strong>do</strong>káže error trappingdekó<strong>do</strong>vat’ vždy.Príklad. Uvažujme binárny cyklický kód (15, 5) opravujúci 3 chyby, s generujúcimpolynómomg(x) = x 10 + x 8 + x 5 + x 4 + x 2 + x + 1.Vzdialenost’ chýb musí byt’ v tomto prípade najviac 15 − 5 = 10. Pre chyby váhy menšejako 3 je podmienka triviálne splnená. Demonštrujme si príklad <strong>do</strong>kó<strong>do</strong>vania na slovew = 100000100010110. Poznamenajme, že pri výpočtoch budeme polynómy reprezentovat’ako vektory ich koeficientov (pre prehl’adnejší zápis). Postupne rotujeme w <strong>do</strong>l’ava,počítame syndróm a hl’adáme taký, ktorý má váhu najviac 3:


118 KAPITOLA 9. CYKLICKÉ KÓDYposun: 01000001000101101010011011110010011001101010011011111010111010101001101111110001101posun: 10000010001011011000101101posun: 200001000101101010100110111101101101posun: 3000100010110100101001101111011011010posun: 400100010110100010100110111101101101001010011011110000011Váha syndrómu pre posun 4 je rovná 3. Takže môžeme opravit’ slovo w ′ = 001000101101000⊕10000011 = 001000111101011 a posunút’ ho naspät’ (o 4 pozície <strong>do</strong>prava). Teda opravenéslovo w je:101100100011110.Urobme ešte skúšku správnosti, ked’ skúsime vydelit’ toto slovo generujúcim polynómom(pre kó<strong>do</strong>vé slovo očakávame zvyšok 0):10110010001111010100110111101001101110101001101110V prípade binárneho cyklického (15, 5) kódu môže nastat’ práve pät’ rozmiestnení 3chýb, ked’ tieto neležia v úseku dĺžky 10. Jedno rozmiestnenie je nakreslené na nasledujúcomobrázku, ostatné sú jeho cyklickými posunmi.x x xPravdepo<strong>do</strong>bnost’, že takáto situácia nastane pri náhodnej vol’be práve 3 chýb je5/ ( 153)∼ 0, 011.


9.6. GOLAYOV KÓD 1199.6 Golayov kódV časti 7.2 sme zaviedli pojem <strong>do</strong>konalého kódu a následne sme ukázali, že Hammingovekódy sú <strong>do</strong>konalé binárne kódy. Okrem triviálnych kó<strong>do</strong>v nepárnej dĺžky pozostávajúcichz dvoch kó<strong>do</strong>vých slov s maximálnou možnou vzdialenost’ou slov sa nám iné <strong>do</strong>konalékódy nepodarilo nájst’. To naznačuje, že <strong>do</strong>konalých kó<strong>do</strong>v nemusí byt’ vel’a, resp. že iné<strong>do</strong>konalé kódy ani nemusia existovat’. V tejto časti najprv popíšeme netriviálny binárnycyklický <strong>do</strong>konalý kód opravujúci 3 chyby a potom v nasledujúcej časti uvedieme výsledkyo (ne-)existencii <strong>do</strong>konalých kó<strong>do</strong>v.Nutnou podmienkou existencie <strong>do</strong>konalého q-árneho kódu opravujúceho t chýb jesplnenie rovnostit∑( ) nq n | (q − 1) j ,jj=0t.j. mohutnost’ „kó<strong>do</strong>vej gule“ musí byt’ mocninou q. Táto podmienka je splnená pre n =23, q = 2 a t = 3, nakol’ko( ) ( ) ( ) ( )23 23 23 23+ + + = 2 11 .0 1 2 3Ukážeme, že kód s uvedenými parametrami skutočne existuje. Ide o Golayov binárnycyklický (23,12)-kód opravujúci tri chyby.Najprv nájdeme generujúci polynóm daného kódu. (Pripomíname, že by to mal byt’polynóm stupňa 11 nad pol’om GF(2), ktorý delí polynóm x 23 − 1). Rozložíme polynómx 23 − 1 na vhodné činitele:kdex 23 − 1 = (x − 1) · g(x) · ˜g(x),g(x) = 1 + x 2 + x 4 + x 5 + x 6 + x 10 + x 11 (9.7)˜g(x) = 1 + x + x 5 + x 6 + x 7 + x 8 + x 11 (9.8)Vyberieme ako generujúci polynóm cyklického kódu C a ukážeme, že že tento kód skutočneopravuje 3 chyby. Kedže generujúci polynóm g(x) má 7 nenulových koeficientov,mainimálna vzdialenost’ kódu C nemôže presiahnut’ hodnotu 7. Ukážeme, že minimálnavzdialenost’ kódu C je skutočne 7. Kód C je lineárny, a preto by stačilo zostrojit’ jehokontrolnú maticu a ukázat’, že jej l’ubovol’ných 6 stĺpcov je lineárne nezávislých. To byvšak znamenalo preverit’ ( )236 = 100947 možností čo by sa pomocou počítača dalo spravit’.Uvedieme iný, rafinovanejší kombinatorický dôkaz [2]), ktorého podstata spočíva v tom,že vylúčime existenciu kó<strong>do</strong>vých slov váhy menšej ako 7 v kóde C. 4 Dôkaz rozdelímena tri časti, v ktorých postupne ukážeme, že kód C neobsahuje slová1. váhy menšej alebo rovnej 4;2. váhy 2,6,10,14,18,22;4 Idea dôkazu sa nikde inde nevyužíva, a preto dôkaz možno pri prvom čítaní preskočit’.


120 KAPITOLA 9. CYKLICKÉ KÓDY3. váhy 1,5,9,13,17,21.Najprv ukážene, že g(x) a ˜g(x) sú ireducibilné polynómy nad pol’om GF(2), potom sapozrieme na korene týchto polynómov v rozšírenom poli GF(2 11 ). Nech je α generátorcyklickej grupy pol’a GF(2 11 ). To znamená, že rád prvku α je 2 11 − 1 = 2047. Číslo 2047sa dá rozložit’ na súčin prvočísel 23 · 89. Potom prvok β = α 89 aj inverzný prvok k prvkuβ, prvok β −1 = α 1958 pol’a GF(2 11 ) majú rád 23. Označme minimálne polynómy prvkov βa β −1 symbolmi m β (x), resp. m β −1(x). Koreňmi minimálneho polynómu m β (x) sú prvkyβ 2 , β 4 , β 8 , β 16 , β 32) = β 9 , β 64 = β 18 , β 128 = β 13 , β 256 = β 3 , β 512 = β 6 , β 1024 = β 12 , β 2048 = β,a koreňmi minimálneho polynómu m β −1(x) sú všetky prvky pol’a GF(2 11 ) tvaru (β −1 ) 2j j =1, 2, . . . ; t.j. prvkyβ 22 , β 19 , β 15 , β 7 , β 14 , β 5 , β 10 , β 20 , β 17 , β 11 .Oba minimálne polynómy m β (x), m β −1(x) majú po 11 koreňov; t.j. majú stupeň 11 adajú sa vyjadrit’ ako súčin lineaárnych činitel’ov:m β (x) = (x − β) · (x − β 2 ) · · · · · (x − β 12 )m β −1(x) = (x − β 22 ) · (x − β 19 ) · · · · · (x − β 11 )Ked’že multiplikatívna podgrupa pol’a GF(2 11 ) generovaná prvkom β má prvočíselný rád(23), každý z prvkov β, β 2 , . . . , β 22 má rád 23, a teda polynóm x−β j delí polynóm (x−β 23 ),j = 1, . . . , 22 a, samozrejme, aj polynóm x − 1 delí polynóm (x − β 23 ). To znamená, žepolynóm (x − β 23 ) môžeme vyjadrit’ v tvare súčinu(x − β 23 ) = m β (x) · m β −1(x)(x − 1).Rozklad polynómu na súčin ireducibilných polynómov (nad daným pol’om) je jednoznačný,a to znamená, žem β (x) · m β −1(x) = g(x) · ˜g(x),resp. (napríklad)m β (x) = g(x)˜g(x) = m β −1(x),t.j. generujúce polynómy g(x) a ˜g(x) sú zároveň minimálnymi polynómami prvkov βa β −1 pol’a GF(2 11 ). Teraz vylúčime existenciu nenulových kó<strong>do</strong>vých slov váhy menšejalebo rovnej 4 v kóde C.Lema 3. Cyklický kód C s generujúcim polynómom g(x) neobsahuje nenulové kó<strong>do</strong>véslová váhy menšej alebo rovnej 4.Dôkaz. Ked’že prvky β, β 2 , β 3 , β 4 sú koreňmi generujúceho polynómu g(x) a každý kó<strong>do</strong>výpolynóm je násobkom generujúceho polynómu, musia byt’ uvedené prvky koreňmikaždého kó<strong>do</strong>véhom polynómu kódu C. V maticovom vyjadrení to vyzerá nasle<strong>do</strong>vne: akje u(x) kó<strong>do</strong>vý polynóm kódu C, tak u · H ⊤ = 0, kde u je vektor koeficientov kó<strong>do</strong>véhopolynómu u(x) a H je matica tvaru⎡1 β β 2 . . . β 22 ⎤H = ⎢ 1 β 2 β 4 . . . β 21⎥⎣ 1 β 3 β 6 . . . β 20 ⎦1 β 4 β 8 . . . β 19


9.6. GOLAYOV KÓD 121Matica H je zrejme kontrolnou maticou kódu C. Ak vyberieme l’ubovol’né 4 stĺpce maticeH, <strong>do</strong>stávame štvorcovú podmaticu, ktorej determinant sa dá vyjadrit’ v tvareβ i 1β i 2β i 3β i 41 1 1 1β 2i 1β 2i 2β 2i 3β 2i 4β 3i 1β 3i 2β 3i 3β 3i 4= β 4(i 1+i 2 +i 3 +i 4) ·β i 1β i 2β i 3β i 4β 2i 1β 2i 2β 2i 3β 2i 4.∣ β 4i 1β 4i 2β 4i 3β 4i 4 ∣∣ β 3i 1β 3i 2β 3i 3β 3i 4 ∣Determinant na pravej strane je Vandermon<strong>do</strong>v determinant, ktorého hodnota∏(β i j− β i l)j>lje nenulová, nakol’ko β i j≠ β i lak j ≠ l. To znamená, že l’ubovol’ná štvorcová podmatica4 × 4 kontrolnej matice H je regulárna, resp. minimálna vzdialenost’ kódu C je aspoň5.Teraz vylúčime existenciu kó<strong>do</strong>vých slov váhy 2,6,10,14,18,22.Lema 4. Nech C je cyklický (23,12) kód s generujúcim polynómom g(x) a nech je u(x)kó<strong>do</strong>vý polynóm párnej váhy. Potom je váha kó<strong>do</strong>vého polynómu u(x) delitel’ná 4.Dôkaz. Nech je u(x) = u 0 + u 1 x + . . . u 22 x 22 kó<strong>do</strong>vý polynóm kódu C. V dôkaze budemevyužívat’ obe interpretácie kó<strong>do</strong>vých slov - aj polynomickú, aj vektorovú. Označíme pretosymbolom u = (u 0 , u 1 , . . . , u 22 ) kó<strong>do</strong>vé slovo–vektor koeficientov–kó<strong>do</strong>vého polynómuu(x). Ked’že C je cyklický kód, kó<strong>do</strong>vý polynóm u(x) sa dá vyjadrit’ v po<strong>do</strong>be súčinuu(x) = g(x) · a(x),kde a(x)je polynóm nad GF(2). Ak je váha kó<strong>do</strong>vého slova u párna, tak je hodnota ∑ i u ipárna, resp.∑u i = 0 mod 2. (9.9)iDosadíme <strong>do</strong> kó<strong>do</strong>vého polynómu u(x) hodnotu 1 a na základe 9.9 <strong>do</strong>stávameu(1) = u 0 + u 1 + · · · + u 22 = 0 mod 2.To znamená, že 1 je koreňom kó<strong>do</strong>vého polynómu u(x), resp., žeu(1) = g(1) · a(1) = 0 (9.10)Ked’že prvok 1 nie je koreňom generujúceho polynómu g(x), zo vzt’ahu 9.10 vyplýva, žeprvok 1 je koreňom polynómu a(x), a kó<strong>do</strong>vý polynóm možno rozložit’ na súčin nasledujúcichčinitel’ov:u(x) = g(x) · b(x) · (x − 1). (9.11)Uvažujeme teraz zrkadlový obraz kó<strong>do</strong>vého slova u, slovo u R = u 22 . . . u 1 u 0 . Slovu u Rpriradíme polynómũ(x) = ũ 0 + ũ 1 x + · · · + ũ 21 x 21 + ũ 22 x 22 = (9.12)= u 22 + u 21 x + · · · + u 1 x 21 + u 0 x 22 . (9.13)


122 KAPITOLA 9. CYKLICKÉ KÓDYDá sa l’ahko overit’, že pre koeficienty polynómov ũ(x) a u(x) platía samotné polynómy sú spojené vzt’ahomũ i = u 22−i , i = 0, . . . , 22; (9.14)ũ(x) = x 22 · u(x −1 ). (9.15)V d’alšom budeme kombinovat’ polynómy ũ(x) a u(x). Prvok β −1 (= β 22 ) je koreňompolynómu ũ(x), pretože podl’a 9.15ũ(β −1 ) = β −22 · u(β) = 0.Minimálnym polynómom prvku β −1 je polynóm ˜g(x). Ak β −1 je koreňom polynómu ũ(x),tak ˜g(x) delí ũ(x); t.j. existuje polynóm ã(x) taký, žeTeraz vynásobíme polynómy ũ(x) a u(x):ũ(x) = ˜g(x) · ã(x). (9.16)ũ(x) · u(x) = ˜g(x) · ã(x) · g(x) · b(x) · (x − 1) = ˜g(x) · g(x) · (x − 1) · b(x) · ã(x) == (x 23 − 1) · b(x) · ã(x). (9.17)Vyjaríme súčin polynómov ũ(x) a u(x) explicitne, aby sme mohli kombinovat’ ich koeficientyũ(x) · u(x) = ũ 0 · u 0 + (ũ 0 · u 1 + ũ 1 · u 0 ) · x + (ũ 0 · u 2 + ũ 1 · u 1 + ũ 2 · u 0 ) · x 2 ++ (ũ 0 · u 3 + ũ 1 · u 2 + ũ 2 · u 1 + ũ 3 · u 0 ) · x 3 + · · · + ũ 22 · u 22 · x 44 .Využijeme vzt’ah 9.14, v súčine polynómov ũ(x) a u(x) nahradíme koeficienty ũ i „obyčajnými“koeficientami a vyjadríme ho v tvare konvolúcie postupností koefiecientov.∑44∑22ũ(x) · u(x) = u i · u 22+i−j · x j .j=0 i=0Kvôli zjednodušeniu úprav položíme u i = 0 pre (i < 0) ∨ (i > 22). Rozšírime terazsumačný rozsah premennej i v poslednej sumeũ(x) · u(x) =∑44∞∑j=0 i=−∞u i · u 22+i−j · x j (9.18)a rozdelíme sumačný rozsah premennej j na tri disjunktné intervaly: (0 ≤ j ≤ 44) = (0 ≤j < 22) ∨ (j = 22) ∨ (23 ≤ j ≤ 44). Potom sa súčin polynómov ũ(x) a u(x) rozpadáva na trisumy:ũ(x) · u(x) =∑21∞∑j=0 i=−∞u i · u 22+i−j · x j +∞∑i=−∞u 2 i · x22 +∑44j=23 i=−∞∞∑u i · u 22+i−j · x j (9.19)


9.6. GOLAYOV KÓD 123Koeficienty u i sú prvky pol’a GF(2), a preto u 2 i= u i. Kó<strong>do</strong>vé slovo u má párnu váhu ateda druhá suma v súčine 9.19 je nulová 5∞∑i=−∞u 2 i · x22 = x 22 ·∞∑i=−∞u i = 0.Teraz upravíme 1. a 3. sumu v súčine 9.19. Posunieme hranice sumácie v prvej zuvedených súm substitúciou j := j − 1, resp. j := j + 22 v druhej sume:ũ(x) · u(x) =∑22∞∑j=1 i=−∞u i · u 23+i−j · x j−1 +22∑∞∑j=1 i=−∞Teraz zavedieme substitúciu i := i + j v druhej sume 9.20a upravímeũ(x) · u(x) =∑22∞∑j=1 i=−∞u i · u 23+i−j · x j−1 +22∑∞∑j=1 i=−∞u i · u i−j · x j+22 (9.20)u i · u i+j · x j+22 (9.21)=22∑ũ(x) · u(x) =−[ ∞∑22∑∞∑u i · u 23+i−j · x j−1 +22∑j=1 i=−∞j=1 i=−∞22∑22∞∑∑u i · u i+j · x j−1 +∞∑j=1 i=−∞j=1 i=−∞u i · u 23+i−j + u i · u i+j]· x j−1 + ⎣j=1 i=−∞j=1 i=−∞⎡22∑∞∑u i · u i+j · x j−1 −u i · u i+j · x j+22 =⎤∞∑u i · u i+j · x j−1 ⎦ · (x 23 − 1) (9.22)Súčin polynómov ũ(x)·u(x) je podl’a vzt’ahu 9.17 delitel’ný polynómom (x 23 −1) Z rovnosti9.22 vyplýva, že aj polynóm[∑22∑ ∞]u i · u 23+i−j + u i · u i+j · x j−1 (9.23)j=1i=−∞musí byt’ násobkom polynómu (x 23 − 1). Polynóm 9.23 má však stupeň menší ako 23, aak má byt’ násobkom polynómu (x 23 − 1), musí byt’ nulový. To znamená, že∞∑i=−∞u i · u 23+i−j + u i · u i+j = 0 mod 2, j = 1, . . . , 22. (9.24)Ak v sústave 9.24 prejdeme od modulárnej k celočíselnej aritmetike, sústavu rovníc 9.24možno zapísat’ nasle<strong>do</strong>vne∞∑i=−∞5 v modulárnej aritmetike nad pol’om GF(2).u i · u 23+i−j + u i · u i+j = 2d j ; d j ∈ Z, j = 1, . . . , 22. (9.25)


124 KAPITOLA 9. CYKLICKÉ KÓDYAk vo vzt’ahu 9.25 zavedieme substitúciu j := 23 − j, <strong>do</strong>stávame2d j−23 =∞∑i=−∞u i · u i+j + u i · u 23+i−j = 2d j ; d j ∈ Z, j = 1, . . . , 22. (9.26)To znamená, že d j = d j−23 pre j = 1, . . . , 22. Spočítame teraz hodnotu súčtu súm z 9.25 vceločíselnom obore22∑∞∑j=1 i=−∞u i · (u 23+i−j + u i+j ) = 222∑j=1∑11d j = 4 d j = 4d, (9.27)kde d je nejaké celé číslo. Rozdelíme sumu 9.27 na dve sumy. Vzhl’a<strong>do</strong>m na to, že každýzo suman<strong>do</strong>v obsahuje faktor u 0 , môžeme zúžit’ sumačný rozsah premennej i na interval0 ≤ i ≤ 22. Potom v prvej sume použijeme substitúciu j := 23 − j∑22∞∑j=1 i=−∞∑22∑22u i · (u 23+i−j + u i+j ) = u i · u i+j +j=1 i=0j=122∑22∑j=1 i=0u i · u i+j . (9.28)Všimneme si, že sumy v pravej časti rovnosti (9.27) obsahujú všetky dvojice u i · u j také,že i ≠ j; t.j.22∑∞∑22∑ ∑u i · (u 23+i−j + u i+j ) = u i · u j = 4d. (9.29)j=1 i=−∞Nech je wt([)u] = w. Sumu (9.29) rozložíme na dve sumy podl’a toho, akú hodnotuna<strong>do</strong>búda u i : a upravíme:22∑i=0∑u i · u j = ∑ ij≠ii=0∑u i · u j · (u i = 0) + ∑ ij≠i= 0 + ∑ i(u i = 1) ∑ j≠iu j = ∑ ij≠i∑u i · u j · (u i = 1) =j≠i(u i = 1) · (w − 1) = w · (w − 1).Z posledného vzt’ahu a z (9.29) <strong>do</strong>stávame, žew · (w − 1) = 4d.Ked’že Hammingova váha slova u je párna, hodnota w − 1 je nepárna, a teda w musí byt’delitel’né 4.Golayov kód teda neobsahuje slová párnej váhy, ktorá nie je delitel’ná 4. To znamená,že spomedzi kandidátov na kó<strong>do</strong>vé slová vypadávajú slová váh 2, 6, 10, 14, 18, 22. Potenciálneváhy kó<strong>do</strong>vých slov sú teda 5, 7, 8, 9, 11, 12, 13, 15, 16, 19, 20, 21, 23. Problematickésú slová váhy 5, pretože ak by Golayov kód obsahoval také kó<strong>do</strong>vé slová, znamenaloby to, že jeho minimálna vzdialenost’ je 5. Existenciu kó<strong>do</strong>vých slov váhy 5 (a d’alších)vylúčime v nasledujúcej leme.Lema 5. Golayov kód neobsahuje kó<strong>do</strong>vé slová váh 1, 5, 9, 13, 17, 19, 20, 21.


9.7. DOKONALÉ A KVÁZIDOKONALÉ KÓDY 125Dôkaz.Pripomenieme, že polynóm x 23 − 1 sa dá vyjadrit’ v po<strong>do</strong>be súčinux 23 − 1 = (x − 1) · g(x) · ˜g(x).To znamená, že polynómf(x) = x 23 − 1/(x − 1) = 1 + x + x 2 + x 3 + · · · ∗ x 22je kó<strong>do</strong>vým slovom Golayovho kódu, nakol’kox 23 − 1/(x − 1) = g(x) · ˜g(x).Golayov kód je zároveň lineárnym kó<strong>do</strong>m, a to znamená, že súčet dvoch kó<strong>do</strong>vých slov(kó<strong>do</strong>vých polynómov)je opät’ kó<strong>do</strong>vým slovom (polynómom). To znamená, že pre l’ubovol’nýkó<strong>do</strong>vý polynóm u(x) je aj polynóm u(x) + f(x) kó<strong>do</strong>vým polynómom. Kó<strong>do</strong>vý polynómf(x) má Hammingovu váhu 23; Hammingova váha kó<strong>do</strong>vého polynómu u(x) + f(x) je23 − wt(u). Ak teda Golayov kód neobsahuje slová váhy w, nemôže obsahovat’ ani slováváhy 23 − w. Z tohto faktu a z liem 3 a 4 vyplýva tvrdenie našej lemy. Teraz môžemesformulovat’ základné tvrdenie o Golayovom kóde.Veta 9.6.1. Binárny Golayov (23, 12) kód je <strong>do</strong>konalý kód opravujúci 3 chyby.Dôkaz. Vyplýva priamo z tvrdení liem 3, 4 a 5.Blahut [2] pomocou počítača analyzoval váhy slov Golayovho kódu. Výsledky jehoskúmania sú uvedené v nasledujúcej tabul’keváha počet slov0 17 2538 50611 128812 128815 50616 25323 1spolu 4096Tabul’ka 9.2: Váhy slov Golayovho (23,12)-kódu9.7 Dokonalé a kvázi<strong>do</strong>konalé kódy


126 KAPITOLA 9. CYKLICKÉ KÓDY


Kapitola 10Bose-Chandhury-HocquenghemovekódyBose-Chandhury-Hocquenghemove (BCH) kódy 1 tvoria pomerne rozsiahlu podtriedu cyklickýchkó<strong>do</strong>v, ktoré sa vd’aka svojim <strong>do</strong>brým vlastnostiam často používajú v praxi asú predmetom intenzívneho teoretického štúdia. Záujem o BCH kódy vyplýva podl’a [2]najmä z toho, že1. BCH kódy existujú pre pomerne rozsiahlu množinu parametrov (dĺžka, minimálnavzdialenost’ a i.); a už pre malé dĺžky (kódu) existujú <strong>do</strong>bré BCH kódy,2. pre BCH kódy existujú jednoduché metódy kó<strong>do</strong>vania a dekó<strong>do</strong>vania,3. podtrie<strong>do</strong>u BCH kó<strong>do</strong>v sú známe kódy Reed-Solomona, ktoré sú nelineárne, v niektorýchparametroch optimálne samoopravné kódy a4. štúdium BCH kó<strong>do</strong>v je <strong>do</strong>brým zákla<strong>do</strong>m pre pochopenie zložitejších kó<strong>do</strong>v.Výklad BCH kó<strong>do</strong>v začneme konštrukciou binárnych BCH kó<strong>do</strong>v opravujúcich 2 chyby.Potom zavedieme BCH kódy formálne a <strong>do</strong>kážeme vetu o minimálnej vzdialenostiBCH kódu. V d’alšom sa budeme zaoberat’ rozličnými metódami dekó<strong>do</strong>vania BCH kó<strong>do</strong>va kapitolu zavŕšime čast’ou venovanou spomínamím Reed-Solomonovým kó<strong>do</strong>m.10.1 Binárne BCH kódy opravujúce 2 chybyBCH kódy sú zovšeobecnením Hammingových kó<strong>do</strong>v. Kým však Hammingove kódy majúdĺžky qm −1 a opravujú jednu chybu 2 , BCH kódy sú podstatne rozmanitejšie: existujú1 BCH kódy objavil v roku 1959 A. Hocquenghem a nezávisle od neho v roku 1960 R.C.Bose a D.K.Ray-Chaurhuri.2 my sme sa zaoberali binárnymi Hammingovými kódmi127


128 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYBCH kódy rôznych dĺžok nad pol’om GF(q), q ≠ 2, ktoré opravujú t chýb, t > 1. Skôr, akosa budeme konštrukciou, vlastnost’ami a dekó<strong>do</strong>vaním BCH kó<strong>do</strong>v zaoberat’ vo všeobecnosti,pozrieme sa na zvláštny prípad BCH kó<strong>do</strong>v—binárne BCH kódy opravujúce 2chyby a ilustrujeme na nich konštrukcie, ktoré budeme v d’alších častiach tejto kapitolypoužívat’.Vrát’me sa k Hammingovmu (15, 11) kódu zo začiatku kapitoly 9. Tento kód smezadali pomocou kontrolnej matice H ′ , ktorá sa dala interpretovat’ dvojako: bud’ akomatica typu (4, 14) nad pol’om GF(2), alebo ako matica typu (1, 14) nad pol’om GF(2 4 ).V druhom prípade sa kontrolná matica redukovala na 1 ria<strong>do</strong>k, obsahujúci postupnost’mocnín primitívneho prvku α pol’a GF(2 4 ):H ′ = [1 α α 2 . . . α 14 ]a dekó<strong>do</strong>vanie prijatého slova v = (v 0 , v 1 , . . . , v 14 ) = u + e; t.j. výpočetv · H ′⊤ = u · H ′⊤ + e · H ′⊤ ,sa dalo interpretovat’ ako vyčíslenie hodnoty polynómu v(x) = v 0 + v 1 · x + v 2 · x 2 + · · · +v 14 · x 14 v prvku α; t.j. výpočet hodnoty v(α). Ak počas prenosu kó<strong>do</strong>vého slova nevzniklachyba (resp. vznikla chyba, ktorá odvysielané kó<strong>do</strong>vé slovo u transformovala na inékó<strong>do</strong>vé slovo v) tak v(α) = 0. Predpokladajme, že počas prenosu vznikla chyba váhy 1;t.j. chybový polynóm bude mat’ tvar e(x) = x i . Potom po <strong>do</strong>sadení prvku α <strong>do</strong> prijatéhopolynómu v(x) <strong>do</strong>stávame hodnotu syndrómuv(α) = u(α) + e(α) = e(α) = α i .Poznámka. V d’alšom budeme kvôli jednoduchosti hodnoty jednotlivých zložiek syndrómuoznačovat’ symbolmi S i ; v(α i ) = S i , i = 1, 2, . . . . Pripomíname, že hodnoty S i niesú koeficientami syndrómového polynómu s(x), ale tak syndróm S 1 , . . . ako aj syndrómovýpolynóm s(x) nesú tú istú informáciu.V prípade Hammingovho kódu informácia, ktorú obsahuje syndróm S 1 postačuje naurčenie chyby. Stačí určit’ hodnotu exponentu (S 1 = α i ) čo sa dá spravit’ napríklad pomocoutabul’ky a potom negovat’ i-ty bit prijatého slova. Prejdeme teraz od konkrétnehoHammingovmu (15, 11) kódu k všeobecnému Hammingovmu kódu dĺžky n = 2m − 1 skontrolnou maticouH = [1 α α 2 . . . α n−1 ]a pozrieme sa na to, čo by sa stalo, keby počas prenosu vznikli v odvysielanom kó<strong>do</strong>vomslove dve chyby. Neche(x) = x i 1+ x i 2.Dosadením prvku α <strong>do</strong> prijatého polynómu <strong>do</strong>stávame hodnotuv(α) = e(α) = α i 1+ α i 2.Táto hodnota na určenie pozícií chýb nestačí a preto potrebujeme nájst’ d’alšie vzt’ahymedzi α i 1, α i 2. Skúsime rozšírit’ kontrolnú maticu H pridaním d’alšieho riadku tak, abynásobenie prijatého vektora kontrolnou maticou viedlo k sústave rovníc s neznámymi


10.1. BINÁRNE BCH KÓDY OPRAVUJÚCE 2 CHYBY 129α i 1, α i 2. Nový ria<strong>do</strong>k kontrolnej matice bude mat’ rovnaký tvar ako ria<strong>do</strong>k pôvodnejkontrolnej matice; t.j. 1 β β 2 . . . β n−1 . Ak β = α j , (α je primitívny prvok pol’a GF( m ))tak súčin v · H ⊤ možno zapísat’ v po<strong>do</strong>be sústavy dvoch rovnícv(α) = S 1 ,v(β) = v(α j ) = S jAko vybrat’ prvok β? Je zrejmé, že β ≠ α, pretože v opačnom prípade by kontrolná maticaH obsahovala dva rovnaké riadky a súčin v·H ⊤ by vie<strong>do</strong>l k „sústave“ dvoch identickýchrovníc. Ako sa ukáže neskôr β nemôže patrit’ <strong>do</strong> množiny (cyklu) α, α 2 , α 4 , . . . α 2j , . . . ,pretože v tomto prípade by rovnice v sústave zadanej súčinom v · H ⊤ boli závislé. Toznamená, že spomedzi kandidátov na prvok β vypadli α, α 2 a prvým prirodzeným kandidátomje α 3 . Kontrolná matica bude po rozšírení vyzerat’ nasle<strong>do</strong>vne: 3H =[ 1 α α2. . . α n−1 ]1 α 3 α 6 . . . α 3(n−1) .Kontrolná matica H určuje cyklický kód C, ktorý sa vyznačuje tým, že všetky kó<strong>do</strong>vépolynómy majú korene α, α 3 , pretože[] []u ∈ C ↔ u · H ⊤ = 0 ↔ u(α) = u(α 3 ) = 0 .To znamená, že generujúcim polynómom kódu C budeg(x) = lcm(m α (x), m α 3(x)),resp. kedže minimálne polynómy prvkov α, α 3 sú rôzne, nemôžu mat’ spoločný faktor, atedag(x) = m α (x) · m α 3(x)).Ak pri prenose kó<strong>do</strong>vého slova vznikli 2 chyby; e(x) = x i 1+ x i 2, tak pri dekó<strong>do</strong>vanívyčíslime hodnotu prijatého polynómu v(x) v prvkoch α, α 3 a <strong>do</strong>stávame sústavuv(α) = e(α) = α i 1+ α i 2Aby sme trocha zjednodušili zápis, zavedieme označeniev(α 3 ) = e(α 3 ) = α 3i 1+ α 3i 2. (10.1)X 1 = α i 1, X 2 = α i 2a prepíšeme sústavu (10.1) <strong>do</strong> prehl’adnejšej po<strong>do</strong>by:X 1 + X 2 = S 1X 3 1 + X3 2 = S 3 . (10.2)Hodnoty X 1 , X 2 ∈ GF(2 m ) sa nazývajú lokátory chýb. Ak sa nám totiž podarí na základesyndrómu vypočítat’ hodnoty lokátorov chýb X 1 , X 2 , tak potom vypočítame log α (X 1 ) = i 1a log α (X 2 ) = i 2 a tak určíme pozície i 1 , i 2 na ktorých vznikli chyby. Sústavu (10.2) nebudemeriešit’ priamo, ale spravíme trochu umelý krok. Zavedieme pomocný polynóm3 Kontrolná matica H zapísaná v binárnej po<strong>do</strong>be nad pol’om GF(2) má 2m riadkov.


130 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYΛ(x) nad pol’om GF( m ), ktorého koreňmi budú práve lokátory chýb a ukážeme, že pomocouhodnôt syndrómu <strong>do</strong>kážeme vyjadrit’ koeficienty uvedeného polynómu:Λ(x) = (x − X 1 )(x − X 2 ) = x 2 + (X 1 + X 2 ) · x + X 1 · X 2 . (10.3)Potrebujeme nájst’ explicitné vyjadrenie súčinu X 1 · X 2 z (10.3) pomocou známych hodnôtsyndrómu. SpočítameS 3S 1= X3 1 + X3 2X 1 + X 2= X 2 1 + X 1 · X 2 + X 2 2 = (X 1 + X 2 ) 2 + X 1 · X 2 = S 2 1 + X 1 · X 2 .Teraz vyjadríme súčin lokátorovX 1 · X 2 = S 3S 1+ S 2 1 = S 3 + S 3 1S 1.Nakoniec vyjadríme explicitne pomocou syndrómu koeficienty polynómu lokátorov chýb:Λ(x) = x 2 + S 1 · x + S 3 + S 3 1S 1. (10.4)Ked’že koeficienty polynómu Λ(x) <strong>do</strong>kážeme vyjadrit’ pomocou hodnôt syndrómu, polynómlokátorov chýb <strong>do</strong>kážeme na základe prijatého slova zostrojit’ a nájdením jeho koreňovurčit’ aj pozície, na ktorých sú v prijatom chyby. Korene polynómu Λ(x) možno v prípademalého m nájst’ úplným preberaním. Existujú však aj efektívne metódy faktorizáciekvadratických polynómov nad pol’om GF(2 m ), pomocou ktorých možno nájst’ korenepolynómu Λ(x) rýchlejšie ako úplným preberaním. Zostrojený kód opravuje 2 chyby.Pozrime sa ešte na to, čo sa stane, ak pri prenose vzniknú chyby inej váhy ako 2.Chyba váhy 0 V tomto prípade je chybový polynóm e(x) nulový, v(x) = u(x) aS 1 = v(α) = v(α 3 ) = S 3 = 0.Chyba váhy 1 Chybový polynóm e(x) = x i a syndróm bude vyzerat’ nasle<strong>do</strong>vne:S 1 = v(α) = α i ;S 3 = v(α 3 ) = α 3i = S 3 1 .Chyba váhy > 2 Uvedený BCH kód opravuje chyby váhy 2. To znamená, že jeho minimálnavzdialenost’ je 5. Chyby váhy 3 a väčšej kód môže odhalit’, ale ne<strong>do</strong>kážesprávne opravit’.Zhrnieme teraz získané poznatky a uvedieme dekóder binárneho BCH kódu opravujúceho2 chyby [16].1. Vypočítaj hodnoty syndrómuv(α) = S 1 v(α 3 ) = S 3


10.1. BINÁRNE BCH KÓDY OPRAVUJÚCE 2 CHYBY 1312. Ak S 1 = S 3 = 0, bolo prijaté kó<strong>do</strong>vé slovo. (Predpokladáme, že pri prenose nevzniklachyba).3. Ak S 1 ≠ 0 a S 3 = S 3 1, predpokladáme, že pri prenose vznikla chyba váhy 1. Lokátorchyby je S 1 = x 1 a hodnota log α S 1 = i určuje miesto, na ktorom v prijatom slovevznikla chyba.4. Ak S 1 ≠ 0 a S 3 ≠ S 3 1, predpokladáme, že pri prenose vznikla chyba váhy 2. Zostrojímepolynóm lokátorov chýb Λ(x) a nájdeme jeho korene. Ak má Λ(x) dva rozličnékorene X 1 ≠ X 2 , tak chyby nastali na pozíciách i 1 , i 2 ; X 1 = α i 1, X 2 = α i 2. V opačnomprípade (polynóm lokátorov chýb Λ(x) nemá dva rozličné korene) nastala počasprenosu neopravitel’ná (ale odhalitel’ná) chyba.5. Ak S 1 = 0, S 3 ≠ 0, počas prenosu <strong>do</strong>šlo ku chybe váhy ≥ 3. Túto sme síce pridekó<strong>do</strong>vaní odhalili, ale ne<strong>do</strong>kážeme ju opravit’.Ilustrujeme popísanú metódu na príklade.Príklad. Zostrojíme binárny BCH (15,7)-kód opravujúci 2 chyby a ukážeme, ako sadekódujú prijaté slová, zat’ažené chybami váhy 0,1,2 a 3. Budeme potrebovat’ konečnépole GF(2 4 ). Jeho konštrukcia je podrobne popísaná časti 15.4 a preto len pripomenieme,že stačí faktorizovat’ okruh polynómov GF(2)[x] vhodným ireducibilným polynómomstupňa 4 nad pol’om GF(2). Vyberieme polynóm 1+x+x 4 a faktorový okruh polynómovGF(2)[x]/1 + x + x 4 predstavuje hl’adané pole. Označíme symbolom α primitívnyprvok pol’a GF(2 4 ). Prvky pol’a GF(2 4 ) vyjadrené v binárnom tvare a pomocou mocnínprimitívneho prvku sú uvedené v tabul’ke 15.6. Zostrojíme generujúci polynóm BCH(15,7)-kódu. Minimálne polynómy prvkov α, α 3 súa generujúci polynóm bude mat’ tvarm α (x) = 1 + x + x 4 ,m α 3(x) = 1 + x + x 2 + x 3 + x 4g(x) = lcm (m α (x), m α 3(x)) = m α (x) · m α 3(x) == 1 + x 4 + x 6 + x 7 + x 8 .Potrebujeme ešte nejaké kó<strong>do</strong>vé slovo. Vynásobíme generujúci polynóm vhodným informačnýmpolynómom a <strong>do</strong>stávameu(x) = (1 + x + x 5 ) · g(x) = 1 + x + x 4 + x 6 + x 11 + x 12 + x 13 .Budeme predpokladat’, že pri prenose kó<strong>do</strong>vého slova u(x) vznikla chyba e(x) a boloprijaté slovo v(x) = u(x) + e(x).Chyba váhy 0 e(x) = 0, v(x) = u(x). Využijeme binárnu reprezentáciu prvkov pol’aGF(2 4 ) (tabul’ka 15.6) a vypočítame syndróm chyby. (Pri výpočtoch budeme využívat’,že pole GF(2 4 ) má charakteristiku 2, t.j. pre l’ubovol’ný prvok β ∈ GF(2 4 ) platí


132 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYβ + β = 0 a že α j = α j mod 15 .) Výpočet kvôli stručnosti uvádzame v tabul’kovejforme.v(x) v(α) v(α 3 )1 1 0001 1 0001x α 0010 α 3 1000x 4 α 4 0011 α 12 1111x 6 α 6 1100 α 3 1000x 11 α 11 1110 α 3 1000x 12 α 12 1111 α 6 1100x 13 α 13 11101 α 9 1010S 1 = 0000 S 3 = 0000Ked’že syndróm chyby je nulový, predpokladáme, že bolo prijaté odvysielané kó<strong>do</strong>véslovo (polynóm) u(x) = 1 + x + x 4 + x 6 + x 11 + x 12 + x 13 . Informačný polynómpotom <strong>do</strong>staneme vydelením prijatého polynómu generujäcim polynómom:i(x) = u(x) : g(x) = 1 + x + z 5 .Chyba váhy 1 e(x) = x 11 , bolo prijaté slovo (polynóm)v(x) = 1 + x + x 4 + x 6 + x 12 + x 13 .Vypočítame syndrómv(x) v(α) v(α 3 )1 1 0001 1 0001x α 0010 α 3 1000x 4 α 4 0011 α 12 1111x 6 α 6 1100 α 3 1000x 12 α 12 1111 α 6 1100x 13 α 13 11101 α 9 1010S 1 = 1110 S 3 = 1000Syndróm chyby na<strong>do</strong>búda v tomto prípade hodnoty S 1 = α ( 11), S 3 = α 3 . Obe zložkysyndrómu sú nenulové, ale (α) 11 ) 3 = α 33 = α 3 , a teda S 3 = S 3 1. To znamená že vprijatom slove je chyba váhy 1. Ked’že S 1 = α ( 11), chybový vektor je e(x) = x 11 .Opravíme prijaté slovo:v(x) + e(x) = u(x) = 1 + x + x 4 + x 6 + x 11 + x 12 + x 13 .Chyba váhy 2 e(x) = x 7 + x 12 , bolo prijaté slovo (polynóm)v(x) + e(x) = u(x) + e(x) = 1 + x + x 4 + x 6 + x 7 + x 11 + x 13 .


10.1. BINÁRNE BCH KÓDY OPRAVUJÚCE 2 CHYBY 133Vypočítame syndrómv(x) v(α) v(α 3 )1 1 0001 1 0001x α 0010 α 3 1000x 4 α 4 0011 α 12 1111x 6 α 6 1100 α 3 1000x 7 α 7 1011 α 6 1100x 11 α 11 1110 α 3 1000x 13 α 13 11101 α 9 1010S 1 = 0100 S 3 = 0000t.j. S 1 = α 2 , S 3 = 0. Ked’že S 1 ≠ 0 a S 3 ≠ S 3 1, predpokladáme, že v slove v(x) je chybaváhy 2. Zostrojíme polynóm lokátorov chýb (10.4)Λ(x) = α 4 + α 2 · x + x 2a postupným prehl’adávaním pol’a GF(2 4 ) nájdeme jeho korene.v(0) = α 4 α 4 ≠ 0v(1) = α 4 + α 2 + 1 = α 5 ≠ 0v(α) = α 4 + α 3 + α 2 = α 12 ≠ 0v(α 2 ) = α 4 + α 4 + α 4 = α 4 ≠ 0v(α 3 ) = α 4 + α 5 + α 6 = α 14 ≠ 0v(α 4 ) = α 4 + α 6 + α 8 = α 9 ≠ 0v(α 5 ) = α 4 + α 7 + α 10 = α 12 ≠ 0v(α 6 ) = α 4 + α 8 + α 12 = α 14 ≠ 0v(α 7 ) = α 4 + α 9 + α 14 = 0 ̌Našli sme prvý koreň, α 7 . Ušetríme si d’alšie prehl’adávanie a vydelíme polynómlokátorov chýb polynómom x + α 7 . DostávameΛ(x) = (x + α 7 ) · (x + α 12 ),t.j. koreňmi polynómu Λ(x) sú α 7 , α 12 . Z toho vyplýva, že e(x) = x 7 + x 12 . Opravímeprijaté slovov(x) + e(x) = u(x) = 1 + x + x 4 + x 6 + x 11 + x 12 + x 13 .Chyba váhy 3 Nech e(x) = x 11 + x 12 + x 13 a bolo prijaté slovo v(x) = 1 + x + x 4 + x 6 .Syndróm chyby v tomto prípade budev(x) v(α) v(α 3 )1 1 0001 1 0001x α 0010 α 3 1000x 4 α 4 0011 α 12 1111x 6 α 6 1100 α 3 1000S 1 = 1100 S 3 = 1110


134 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYt.j. S 1 = α 6 , S 3 = α 11 a S 3 ≠ S 3 1. Usúdime, že pri prenose nastala chyba váhy 2.Zostrojíme polynóm lokátorov chýbΛ(x) = α 2 + α 6 · x + x 2a určíme jeho korene. Tými sú prvky α 7 , α 10 , ktoré určujú chybový polynóm e ′ (x) =x 7 + x 10 . Prijaté slovo upravíme na kó<strong>do</strong>vé slovov(x) + e ′ (x) = 1 + x + x 4 + x 6 + x 7 + x 10 ,ktorý sa však nezhoduje s odvysielaným kó<strong>do</strong>vým slovom u(x).Tým istým spôsobom, ako sme zostrojili binárny kód opravujúci 2 chyby, možnozostrojit’ aj BCH kód opravujúci tri chyby (kontrolná matica sa rozšíri o 3. ria<strong>do</strong>k:1, α 5 , α 10 , . . . , α 5(n−1) ). My sa touto konštrukciou nebudeme zaoberat’, prípadných záujemcovodkazujeme na [16] a prikročíme k formalizácii a zovšeobecneniu BCH kó<strong>do</strong>v.10.2 Definícia BCH kó<strong>do</strong>vBCH kódy sú cyklické kódy nad pol’om GF(q), ktoré sú definované pomocou prvkov zrozšírenia pôvodného pol’a, GF(q m ).Definícia 10.2.1. Nech β ∈ GF(q m ) je prvok rádu n; t je l’ubovol’né prirodzené a ll’ubovol’né celé číslo. Potom cyklický kód C s generujúcim polynómomg(x) = lcm { m β l+1(x), m β l+2(x) . . . , m β l+2t(x) } ,kde m β j(x) je minimálny polynóm prvku β j , sa nazýva BCH kó<strong>do</strong>m.Ak n = q m − 1; t.j. β je primitívny prvok pol’a GF(q m ), BCH kód dĺžky n sa nazývaprimitívnym BCH kó<strong>do</strong>m. Parameter l sa často kladie rovným nule (v mnohých alenie všetkých prípa<strong>do</strong>ch to vedie ku konštrukcii generujúceho polynómu minimálnehostupňa). BCH kódy s hodnotou parametra l = 0 sa nazývajú BCH kódmi v úzkom zmysle.Uvedieme niekol’ko príkla<strong>do</strong>v rôznych BCH kó<strong>do</strong>v. Začneme binárnym kó<strong>do</strong>m dĺžky 15,na ktorom budeme neskôr demonštrovat’ metódy dekó<strong>do</strong>vania BCH kó<strong>do</strong>v.Príklad. Nech q = 2, l = 0, t = 3, m = 4. BCH kód s danými parametrami existuje,je to binárny (15,5) kód opravujúci 3 chyby. Zadáme ho pomocou jeho generujúcehopolynómu. Ked’že ide o primitívny BCH kód, budeme potrebovat’ prvok rádu 15, t.j.primitívny prvok pol’a GF(2 4 ). Nechje α daný primitívny prvok. Koreňmi generujúcehopolynómu budú prvky α, α 2 , α 3 , α 4 , α 5 , α 6 ; t.j. enerujúci polynóm budeg(x) = lcm {m α (x), m α 2(x), . . . , m α 6(x)} .Prvky α, α 2 , α 4 však majú ten istý minimálny polynóm, po<strong>do</strong>bne prvky α 3 , α 6 ;α, α 2 , α 4 ↔ m α (x) = 1 + x + x 4 ,α 3 , α 6 ↔ m α 3(x) = 1 + x + x 2 + x 3 + x 4 ,α 5 ↔ m α 5(x) = 1 + x + x 2 .


10.3. HRANICA BCH KÓDOV 135To znamená, žeg(x) = (1 + x + x 4 ) · (1 + x + x 2 + x 3 + x 4 ) · (1 + x + x 2 ) == 1 + x + x 2 + x 4 + x 5 + x 8 + x 10 . (10.5)10.3 Hranica BCH kó<strong>do</strong>vVyužijeme skutočnost’, že cyklické kódy sú zároveň lineárne kódy, určíme rang kontrolnejmatice BCH kódu a potom na základe vety 8.1.2 a jej dôsledku určíme minimálnuvzdialenost’ BCH kó<strong>do</strong>v, resp. jej <strong>do</strong>lný odhad.Veta 10.3.1. Nech je g(x) generujúci polynóm BCH kódu C dĺžky n, s koreňmi βl+1 , . . . ,β l+2t , kde β je prvok rádu n pol’a GF(q m ). Potom minimálna vzdialenost’ d kódu C jeaspoň 2t + 1.Dôkaz.Kontrolnú maticu BCH kódu C možno zapísat’ v tvareH =⎡⎢⎣1 β (l+1) β 2(l+1) . . . β (n−1)(l+1) ⎤1 β (l+2) β 2(l+2) . . . β (n−1)(l+2)⎥.. ⎦1 β (l+2t) β 2(l+2t) . . . β (n−1)(l+2t)Ukážeme, že l’ubovol’ná štvorcová podmatica typu (2t, 2t) kontrolnej matice H je regulárna;t.j. že l’ubovol’ných 2t stĺpcov kontrolnej matice je lineárne nezávislých (a tedaminimálna váha kódu C je aspoň 2t + 1). Určíme hodnotu determinantu štvorcovej podmaticetvorenej vybranými stĺpcami j 1, h 2 , . . . , j 2t kontrolnej matice H:⎡β j 1(l+1)β j 2(l+1). . . β j ⎤2t(l+1)β j 1(l+2)β j 2(l+2). . . β j 2t(l+2)det ⎢⎥⎣ .. ⎦ =β j 1(l+2t)β j 2(l+2t). . . β j 2t(l+2t)⎡β j 1(l+1)β j 2(l+1). . . β j ⎤2t(l+1)= β 2t(j 1+j 2 +···+j 2t )·(l+1) β j 1(l+2)β j 2(l+2). . . β j 2t(l+2)det ⎢⎥⎣ .. ⎦ .β j 1(l+2t)β j 2(l+2t). . . β j 2t(l+2t)Druhá matica je Vandermon<strong>do</strong>va matica, ktorej determinant má tvar∏i>k( )β j i− β j k. (10.6)Ked’že β je prvok rádu n, prvky β j 1, . . . , β j 2t(10.6) je rôzny od nuly.sú navzájom rôzne, a teda determinant


136 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYPoznámka. Hodnota 2t + 1 garantovaná predchádzajúcou vetou sa nazýva konštrukčnouvzdialenost’ou BCH kódu. Je daná dĺžkou súvislej postupnosti mocnín prvku β(β l+1 , . . . , β l+2t ), ktoré sú koreňmi generujúceho polynómu kódu. Ale ked’že generujúcipolynóm g(x) je definovaný ako najmenší spoločný násobok minimálnych polynómovsvojich koreňov a minimálne polynómy prvkov β l+1 , . . . , β l+2t nie sú vo všeobecnostilineárne, môžu mat’ aj iné korene, ktoré „predĺžia“ postupnost’ βl+1 , . . . , β l+2t . Potombude skutočná minimálna vzdialenost’ kódu väčšia ako jeho konštrukčná vzdialenost’.Existujú odhady skutočnej minimálnej vzdialenosti BCH kó<strong>do</strong>v. Skôr, ako sa nimi budemezaoberat’, uvedieme niekol’ko príkla<strong>do</strong>v, na ktorých ilustrujeme rozdiel medzi konštrukčnoua minimálnou vzdialenost’ou BCH kódu.Príklad. Uvažujme binárny BCH kód C dĺžky 31 (v úzkom zmysle) opravujúci 4 chyby,Nech α je primitívny prvok pol’a GF(2 5 ). Koreňmi generujúceho polynómu g(x) kódu Cmusia byt’ prvky α, α 2 , . . . , α 8 pol’a GF(2 5 ); resp. generujúci polynóm g(x) možno definovat’akog(x) = lcm m α (x), m α 2(x), . . . , m α 8(x),kde m α j(x) je minimálny polynóm prvku α j . Bez toho, aby sme zostrojili generujúcipolynóm g(x), ukážeme, že minimálna vzdialenost’ kódu C prevyšuje konštrukčnú vzdialenost’.Využijeme na to skutočnost’, že ak má v poli charakteristiky 2 polynóm f(x)koreň β, tak potom má aj korene β 2 , β 4 , . . . , β 2j , . . . . Rozdelíme prvky pol’a GF(2 5 ) <strong>do</strong> tried(cyklov); <strong>do</strong> jednej triedy dáme všetky prvky β, β 2 , β 4 , . . . , β 2j , . . . . kde β ∈ GF(2 5 ). Je zrejmé,že každej triede rozkladu zodpovedá jeden (minimálny) polynóm, ktorého koreňmisú práve prvky z danej triedy.triedaminimálnypolynóm0 m 0 (x)1 m 1 (x)α α 2 α 4 α 8 α 16 m α (x)α 3 α 6 α 12 α 24 α 17 m α 3(x)α 5 α 10 α 20 α 9 α 18 m α 5(x)α 7 α 14 α 28 α 25 α 19 m α 7(x)α 11 α 22 α 13 α 26 α 21 m α 11(x)α 15 α 30 α 29 α 27 α 23 m α 15(x)Z uvedenej tabul’ky rozkladu pol’a GF(2 5 ) vyplýva, žeg(x) = m α (x) · m α 3(x) · m α 5(x) · m α 7(x)a polynóm g(x) má teda okrem poža<strong>do</strong>vaných koreňov α, α 2 , . . . , α 8 aj korene α 9 a α 10 .To však znamená, že minimálna vzdialenost’ BCH kódu C je 11. Pre zaujímavost’ <strong>do</strong>počítameaj hodnoty jeho ostatných parametrov: stupeň generujúceho polynómu je 20, a tedapočet informačných symbolov v kó<strong>do</strong>vom slove je 11. Kód C je teda binárny (31,11) BCHkód (v úzkom zmysle) opravujúci 5 chýb.Rozdiel medzi konštrukčnou a minimálnou vzdialenost’ou BCH kódu môže byt’ vel’ký.Berlekamp uvádza príklad binárneho BCH kódu v úzkom zmysle dĺžky 212 −1 s konštrukčnouvzdialenost’ou 768, ktorého skutočná minimálna vzdialenost’ je 819 ([7]). Uvedené


10.4. PETERSON-GORENSTEIN-ZIERLEROV ALGORITMUS DEKÓDOVANIA BCH KÓDOV137príklady môžu vzbudit’ pochybnosti o tom, aká je výpovedná hodnota <strong>do</strong>lnej hranice BCHpre opravnú schopnost’ BCH kódu. V práci [12] je uvedená rozsiahla tabul’ka, ktorúzostavil Chen, obsahujúca všetky binárne cyklické kódy nepárnej dĺžky (n ≤ 65) spolu sich najdôležitejšími parametrami, vrátane <strong>do</strong>lnej hranice BCH a skutočnej minimálnejvzdialenosti. Hranica BCH sa od skutočnej minimálnej vzdialenosti odlišuje pomernečasto a v niektorých prípa<strong>do</strong>ch aj <strong>do</strong>st’ výrazne. Vzt’ah medzi hranicou BCH a skutočnouminimálnou vzdialenost’ou pre pomerne širokú podtriedu BCH kó<strong>do</strong>v vyjadruje nasledujúcaveta [12].Veta 10.3.2. Nech je d BCH konštrukčná vzdialenost’ primitívneho BCH kódu nad pol’omGF(q). Potom pre minimálnu vzdialenost’ d tohto kódu platíd ≤ q · d BCH + q − 2.Dôkaz. Neuvádzame, čitatel’ ho môže nájst’ v práci [12].Poznámka. V binárnom prípade skutočná minimálna vzdialenost’ (primitívneho) BCHkódu neprevyšuje dvojnásobok konštrukčnej vzdialenosti.10.4 Peterson-Gorenstein-Zierlerov algoritmus dekó<strong>do</strong>vaniaBCH kó<strong>do</strong>vBCH kódy sú cyklické kódy, a preto na ich dekó<strong>do</strong>vanie je možné použit’ l’ubovol’númetódu dekó<strong>do</strong>vania cyklických kó<strong>do</strong>v. Existujú však efektívnejšie metódy dekó<strong>do</strong>vania,navrhnuté špeciálne pre BCH kódy. V tejto časti popíšeme Peterson-Gorenstein-Zierlerov algoritmus dekó<strong>do</strong>vania.Predpokladáme, že je daný BCH kód C dĺžky n opravujúci t chýb nad pol’om GF(q),s generujúcim polynómom g(x) Kvôli zjednodušeniu výkladu budeme tiež predpokladat’,že C je BCH kód v úzkom zmysle, t.j. že koreňmi g(x) súprvky β, β 2 , . . . , β 2t .(Prvok βnemusí byt’ primitívnym prvkom pol’a GF(q m ); zrejme stačí, aby jeho rád n delil q m − 1.)Nech bolo odvysielané slovo u(x) a počas prenosu nastala chyba váhy ν, 0 ≤ ν ≤ t, ktorúzapíšeme v po<strong>do</strong>be chybového polynómu:e(x) = e 0 + e 1 x + e 2 x 2 + · · · + e n−1 x n−1 .Chybový polynóm má práve ν koeficientov nenulových. Označme tieto koeficienty e i1 , . . . , e iνa vynechajme v e(x) nulové členy. Chybový polynóm bude po redukcii vyzerat’ nasle<strong>do</strong>vnee(x) = e i1 x i 1+ e i2 x i 2+ · · · + e iν x i ν. (10.7)Prijali sme polynóm (slovo) v(x) = u(x)+e(x). Pre prijaté slovo v(x) možno vypočítat’ dvarozličné syndrómy:• syndrómový polynóm s(x) = v(x) mod g(x) a


138 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDY• syndróm (S 1 , S 2 , . . . , S 2t ), ktorého zložky (parciálne syndrómy) sa dajú vypočítat’ zovzt’ahu S j = v(β j ) = e(β j ). Pripomenieme, že pre tento syndróm platí aj[S 1 , S 2 , . . . , S 2t ] = [v 0 , v 1 , . . . , v n−1 ] · H ⊤ ,kde H je kontrolná matica kódu C a (v 0 , v 1 , . . . , v n−1 ) prijaté slovo (koeficienty prijatéhopolynómu).Vypočítame parciálne syndrómy <strong>do</strong>sadením koreňov generujúceho polynómu <strong>do</strong> prijatéhopolynómu v(x):S j = v(β j ) = e i1 β i 1+ e i2 β i 2+ · · · + e iν β i ν, j = 1, . . . , 2t.Aby sme zjednodušili zápis, zavedieme po<strong>do</strong>bne ako v prípade binárnych BCH kó<strong>do</strong>vnové označenie:• hodnoty β i 1, . . . , β i νoznačíme symbolmi X 1 , . . . , X ν ; X k = β i ka nazveme lokátormichýb;• hodnoty chýb označíme symbolmi Y k ; e i1 = Y 1 , . . . , e iν = Y ν .Pripomíname, že lokátory chýb sú prvky pol’a GF( m ) a hodnoty chýb sú prvky pol’a GF(q).Parciálne syndrómy môžeme potom vyjadrit’ pomocou sústavy rovníc:S 1 = Y 1 X 1 + . . . + Y ν X νS 2 = Y 1 X 2 1+ . . . + Y ν X 2 ν. ..S 2t = Y 1 X 2t1+ . . . + Y ν X 2tν(10.8)Našou úlohou je nájst’ na základe známych hodnôt syndrómu S 1 , . . . , S 2t neznáme hodnotylokátorov chýb a hodnôt chýb: X 1 , <strong>do</strong>ts, X ν ; Y 1 , <strong>do</strong>ts, Y ν . Ukžeme, že systém rovníc(10.8) má práve jedno riešenie. Vzhl’a<strong>do</strong>m na nelineárnost’ systému (10.8) by jeho priameriešenie bolo náročné. Preto po<strong>do</strong>bne ako v predchádzjúcej časti zavedieme pomocnýpolynóm Λ(x) lokátorov chýb; tentoraz však v mierne modifikovanej po<strong>do</strong>be: jeho koreňminebudú lokátory chýb, ale prevrátené hodnoty lokátorov chýb.Λ(x) = (1 − xX 1 )(1 − xX 2 ) . . . (1 − xX ν ) = 1 + λ 1 x + λ 2 x 2 + · · · + λ ν x ν . (10.9)Ak by sme poznali koeficienty λ 1 , . . . , λ ν , <strong>do</strong>kázali by sme zostrojit’ polynóm Λ(x) a (napríkladúplným preberaním) nájst’ jeho korene X −11 , . . . , X−1 ν . Problém je v tom, že nepoznámeani len stupeň ν polynómu Λ(x), t.j. váhu chyby ktorá vznikla pri prenose. Ukážeme,ako sa dajú určit’ koeficienty polynómu Λ(x) na základe známych hodnôt parciálnychsyndrómov S 1 , . . . , S 2t pomocou riešenia systému lineárnych rovníc. Ked’že koreňmipolynómu Λ(x) sú prevrátené hodnoty lokátorov chýb, platíΛ(X −1i) = 1 + λ 1 X −1i+ λ 2 X −2i+ · · · + λ ν X −νi= 0, i = 1, . . . , ν (10.10)Zbavme sa záporných mocnín lokátorov chýb tým, že vynásobíme rovnice sústavy 10.10členmi Y i X j+νi, kde 1 ≤ j ≤ ν:


10.4. PETERSON-GORENSTEIN-ZIERLEROV ALGORITMUS DEKÓDOVANIA BCH KÓDOV139Y i X j+νi+ λ 1 Y i X j+ν−1i+ λ 2 Y i X j+ν−2i+ · · · + λ ν Y i X j i= 0, i = 1, . . . , ν (10.11)Teraz sčítame 10.12 cez iν∑ν∑ν∑ν∑Y i X j+νi+ λ 1 Y i X j+ν−1i+ λ 2 Y i X j+ν−2i+ · · · + λ ν Y i X j i = 0 (10.12)i=1i=1i=1Ale (pozri 10.8) posledná rovnost’ predstavujei=1S j+ν + λ 1 S j+ν−1 + λ 2 S j+ν−2 + · · · + λ ν S j = 0,resp. po presunutí člena S j+ν na pravú stranu a preusporiadaní ostatných členov nal’avej strane rovnice <strong>do</strong>stávameS j λ ν + S j+1 λ ν−1 + · · · + λ 1 S j+ν−1 = −S j+v . (10.13)ked’že λ ≤ ν, pre 1 ≤ j ≤ ν, indexy zložiek syndrómu zo sústavy (10.13) sú z intervalu〈1, 2t〉 a teda v sústave (10.13) sa vyskytujú len známe hodnoty syndrómu S 1 , . . . , S 2t .Sústavu (10.13) možno prehl’adnejšie zapísat’ v maticovej forme:⎡⎢⎣⎤S 1 S 2 . . . S ν−1 S νS 2 S 3 . . . S ν S ν+1S 3 S 4 . . . S ν+1 S ν+2⎥.. ⎦S ν S ν+1 . . . S 2ν−2 S 2ν−1⎡·⎢⎣λ νλ ν−1λ ν−2.λ 1⎤⎡=⎥ ⎢⎦ ⎣−S ν+1−S ν+2−S ν+3.−S 2ν⎤. (10.14)⎥⎦Kvôli zjednodušeniu zápisu v d’alšom texte zavedieme nasledujúce označenie⎡⎤S 1 S 2 . . . S ν−1 S νS 2 S 3 . . . S ν S ν+1S 3 S 4 . . . S ν+1 S ν+2= M⎢⎥ ν . (10.15)⎣ .. ⎦S ν S ν+1 . . . S 2ν−2 S 2ν−1Ak by matica M ν bola regulárna, tak by bolo možné riešit’ sústavu 10.14. V nasledujúcejleme <strong>do</strong>kážeme, za akých podmienok je M ν regulárna.Lema 6. Nech pri prenose kó<strong>do</strong>vého slova <strong>do</strong>šlo k chybe váhy ν ≤ t. Potom je matica M νregulárna a matica M µ , kde µ > ν singulárna.DôkazMaticu M µ , 0 ≤ ν ≤ µ ≤ t močno rozložit’ na súčin troch matíc;M µ = A · B · A ⊤ ,kde⎡A =⎢⎣ .1 1 1 . . . 1X 1 X 2 X 3 . . . x µX 2 1X 2 2X 2 3. . . x 2 µ.X µ−11X µ−12X µ−13. . . x µ−1µ⎤⎥⎦


140 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYa B je diagonálna maticaZrejme⎡B =⎢⎣⎤X 1 Y 1 0 0 . . . 00 X 2 Y 2 0 . . . 00 0 X 3 Y 3 . . . 0⎥.. ⎦0 0 0 . . . X ν Y νdet(M µ ) = det(A) · det(B) · det(A ⊤ ).Ak µ > ν, medzi hodnotami chýb Y 1 , . . . , Y µ je aspoň jedna nulová. To znamená, že vmatici B sa na diagonále vyskytuje aspoň jedna nulová hodnota a jej determinant jenulový. Na druhej strane, ak µ = ν, det(B) ≠ 0 a ked’že A je Vandermon<strong>do</strong>va matica alokátory chýb X 1 , . . . , X µ sú rôzne, det(A) = det(A ⊤ ) ≠ 0.Získané poznatky využijeme pri návrhu dekódera BCH kó<strong>do</strong>v.Peterson-Gorenstein-Zierlerov dekóder1. Na základe prijatého slova v(x) vypočítaj syndróm S 1 , . . . , S 2t ; S j = v(β j ).2. Nájdi najväčšie prirodzené ν také, že matica M ν je regulárna.3. Vyrieš systém lineárnych rovníc 10.14 a urči koeficienty λ 1 , . . . , λ ν . Zostroj polynómlokátorov chýb Λ(x).4. Nájdi korene polynómu lokátorov chýb Λ(x) (úplným preberaním, alebo faktorizáciou)a urči pozície chýb. Ak je daný BCH kód binárny, tak invertuj bity na pozíciáchurčených lokátormi chýb a skonči, ináč pokračuj krokom 5.5. Vyrieš systém lineárnych rovníc pre hodnoty chýbY 1 X 1 + Y 2 X 2 + . . . + Y ν X ν = S 1Y 1 X 2 1+ Y 2 X 2 2+ . . . + Y ν X 2 ν = S 2(10.16)..Y 1 X ν 1+ Y 2 X ν 2+ . . . + Y ν X ν ν = S νK úplnosti popísanej metódy zostáva ešte ukázat’, že systém (10.16) má jediné riešenie.Lema 7. Ak sú X 1 , . . . , X ν rozličné lokátory chýb, tak potom má systém (10.16) jedinériešenie.DôkazDeterminant sústavy (10.16) sa dá upravit’ na Vandermon<strong>do</strong>v determinant⎡⎤⎡⎤X 1 X 2 . . . X ν1 1 . . . 1X 2 1X 2 2. . . X 2 νdet ⎢⎥⎣ .. ⎦ = (X X 1 X 2 . . . X ν1X 2 . . . X ν ) det ⎢⎥⎣ .. ⎦X ν 1X ν 2. . . X ν νX ν−11X ν−12. . . X ν−1ν


10.4. PETERSON-GORENSTEIN-ZIERLEROV ALGORITMUS DEKÓDOVANIA BCH KÓDOV141Ked’že lokátory chýb sú nenulové a rôzne, determinant sústavy (10.16) je nenulový, ateda sústava (10.16) má riešenie.Ilustrujeme použitie PGZ dekódera na niekol’kých príkla<strong>do</strong>ch.Príklad. Uvažujeme binárny (15,5) BCH kód z predchádzajúceho príkladu. Nech boloodvysielané kó<strong>do</strong>vé slovou(x) = 1 + x 3 + x 5 + x 10 + x 11 + x 12 + x 14a pri prenose vznikla chyba e(x) v dôsledku čoho bolo prijaté slovo v(x) = u(x) + e(x).1. Chyba váhy 0. Syndróm chyby jeS 1 = S 2 = S 3 = S 4 = S 5 = S 6 = 0.Ked’že syndróm chyby je rovný nule, predpokladáme, že pri prenose ne<strong>do</strong>šlo kchybe a prijaté kó<strong>do</strong>vé slovo je zhodné s odvysielaným.2. Chyba váhy 1; napr. e(x) = x 14 , bolo prijaté slovo v(x) = 1 + x 3 + x 5 + x 10 + x 11 + x 12 .Určíme počet chýb, ν.S 1 = α 14 S 2 = α 13 S 3 = α 12 S 4 = α 11 S 5 = α 10 S 6 = α 9⎡M 3 = ⎣α 14 α 13 α 12 ⎤α 13 α 12 α 11 ⎦ .α 12 α 11 α 10Ale det M 3 = 0. Vytvoríme maticu M 2 a vypočítame determinant tejto matice:[ α14αM 2 =13 ]α 13 α 12 .Ked’že det M 2 = 0 v prijatom slove je najviac jedna chyba. Ale M 1 = α 14 ≠ 0, ateda predpokladáme, že v prijatom slove je chyba váhy 1, S 1 = X 14 , t.j. e(x) = x 14 aodvysielané slovo bolo u(x) = 1 + x 3 + x 5 + x 10 + x 11 + x 12 + x 14 .3. Chyba váhy 2. Chybový polynóm je (napr.) e(x) = x 3 + x 7 ; bolo prijaté slovoSyndróm chyby jeUrčíme počet chýb, ν.v(x) = 1 + x 5 + x 7 + x 10 + x 11 + x 12 + x 14 .S 1 = α 4 S 2 = α 8 S 3 = α 5 S 4 = α S 5 = α 10 S 6 = α 10⎡M 3 = ⎣α 4 α 8 α 5 ⎤α 8 α 5 α ⎦ .α 5 α α 10Ked’že det M 3 = 0, vytvoríme maticu M 2 a vypočítame jej determinant:[ α4αM 2 =8 ]α 8 α 5 ; det M 2 = α 3 ≠ 0.


142 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYV prijatom slove je pravdepo<strong>do</strong>bne chyba váhy 2. Určíme koeficienty polynómulokátorov chýb:[ α4αdet8 ]α 8 α 5λ 2 = [ α5αdet8 ] = α13α 3 = α10 .α α 5Po<strong>do</strong>bne[ α4αdet5 ]α 8 αλ 1 = [ α5αdet8 ] = α7α 3 = α4 .α α 5Vyjadríme polynóm lokátorov chýb a nájdeme jeho korene:Λ(x) = 1 + α 4 x + α 10 x 2 .Korene polynómu Λ(x) sme našli úplným preberaním (a faktorizáciou polynómu);na tomto mieste uvedieme len jeho výsle<strong>do</strong>k:Λ(α 12 ) = 1 + α + α 4 = 0, Λ(α 8 ) = 1 + α 12 + α 4 11 = 0;t.j. hl’adané korene sú α 12 , α 8 a chyby vznikli na pozíciách 3 (α 12 = α −3 ) a 7 (α 7 =α −8 ).4. Chyba váhy 3. Predpokladajme kvôli jednoduchosti, že e(x) = x 5 + x 10 + x 13 a boloprijaté slovov(x) = 1 + x 3 + x 11 + x 12 + x 13 + x 14 .Syndróm chyby jeS 1 = α 6 S 2 = α 12 S 3 = α 9 S 4 = α 9 S 5 = α 10 S 6 = α 3 .Ked’že det M 3 = 1, predpokladáme, že počas prenosu vznikla chyba váhy 3. Vypočítamekoeficienty polynómu lokátorov chýb a zostavíme Λ(x):Λ(x) = 1 + α 6 x + α 6 x 2 + α 13 x 3 .Koreňmi polynómu Λ(x) sú α 10 , α 5 , α 2 , ktoré určujú polynóm chýb e(x) = x 5 + x 10 +x 13 . Odčítame chybový polynóm od prijatého slova a <strong>do</strong>staneme kó<strong>do</strong>vé slovo, oktorom predpokladáme, že sa zhoduje s odvysielaným kó<strong>do</strong>vým slovom.Na záver uvedieme ešte príklad konštrukcie a dekó<strong>do</strong>vania ternárneho BCH kódu.Príklad. 4 Skonštruujeme ternárny BCH kód dĺžky 26 opravujúci tri chyby. Najprvzostrojíme pole GF(3 3 ) tak,že faktorizujeme okruh polynómov nad pol’om GF(3) ireducibilnýmpolynómom tretieho stupňa x 3 + 2x + 1. Tento polynóm je zároveň primitívnympolynómom a jeho koreň, ktorý označíme symbolom α, je primitívnym prvkom pol’aGF(3 3 ) = GF(3)[x]/x 3 + 2x + 1. Na získanie lepšej predstavy o poli GF(3 3 ) vyjadrímevšetky jeho nenulové prvky pomocou mocnín primitívneho prvku, lídra triedy rozkladu


10.4. PETERSON-GORENSTEIN-ZIERLEROV ALGORITMUS DEKÓDOVANIA BCH KÓDOV1430 0 0 000α 0 1 1 001α 1 x α 010α 2 x 2 α 2 100α 3 x +2 α +2 012α 4 x 2 +2x α 2 +2α 120α 5 2x 2 +x +2 2α 2 +α +2 212α 6 x 2 +x +1 α 2 +α +1 111α 7 x 2 +2x +2 α 2 +2α +2 122α 8 2x 2 +2 2α 2 +2 202α 9 +x +1 +α +1 011α 10 x 2 +x α 2 +α 110α 11 x 2 +x +2 α 2 +α +2 112α 12 x 2 +2 α 2 +2 102α 13 2 2 002α 14 2x 2α 020α 15 2x 2 2α 2 200α 16 2x +1 2α +1 021α 17 2x 2 +x 2α 2 +α 210α 18 x 2 +2x +1 α 2 +2α +1 121α 19 2x 2 +2x +2 2α 2 +2α +2 222α 20 2x 2 +x +1 2α 2 +α +1 211α 21 x 2 +1 α 2 +1 101α 22 2x +2 2α +2 022α 23 2x 2 +x 2α 2 +α 210α 24 2x 2 +2x +2 1α 2 +2α +1 221α 25 2x 2 +2 1α 2 +1 201α 26 1 1 001Tabul’ka 10.1: Pole GF(3 3 ).


144 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYfaktorového okruhu-pol’a GF(3)[x]/x 3 + 2x + 1, lineárnej kombinácie mocnín primitívnehoprvku a vektora koeficientov tejto lineárnej kombinácie. (Vo výpočtoch budeme všakvyužívat’ prvú a poslednú reprezentáciu prvkov pol’a.)Nájdeme vhodný generujúci polynóm BCH kódu. V tabul’ke sú uvedené minimálnepolynómy jednotlivých prvkov konečného pol’a GF(3 3 ) (vrátane nulového):0 xα 0 x + 2α 1 α 3 α 9 x 3 + 2x + 1α 2 α 6 α 18 x 3 + x 2 + x + 2α 4 α 12 α 10 x 3 + x 2 + 2α 5 α 15 α 19 x 3 + 2x 2 + x + 1α 7 α 21 α 11 x 3 + x 2 + 2x + 1α 8 α 24 α 20 2x 3 + x 2 + x + 1α 13 x + 1α 14 α 16 α 22 2x 3 + x + 1α 17 α 25 α 23 x 3 + 2x 2 + 1Ked’že kód, ktorý konštruujeme, má opravovat’ 3 chyby, koreňmi generujúceho polynómumusí byt’ postupnost’ šiestich za sebou nasledujúcich mocnín primitívneho prvku α.Nech sú to napríklad prvky α, α 2 , . . . , α 6 . Potom je podl’a definície BCH kódu generujúcimpolynómom kódu polynómg(x) = lcm (m α (x), . . . , m α 6(x)) = (x+2)(x 3 +2x+1)(x 3 +x 2 +x+2)(x 3 +x 2 +2)(x 3 +2x 2 +x+1).Koreňom generujúceho polynómu je však aj prvok α 0 , a teda minimálna vzdialenost’konštruovaného BCH kódu je 8. Kód zadaný generujúcim polynómom g(x) je ternárny(26,13) BCH kód v úzkom zmysle opravujúci chyby <strong>do</strong> váhy 3 a odhal’ujúci chyby váhy 4.Teraz ukážeme ako vyzerá kó<strong>do</strong>vanie a dekó<strong>do</strong>vanie ternárnej informácie pomocouternárneho (26,13) BCH kódu. Nech je i(x) = x 11 + 2x 10 + 2x 9 + x 8 + x 5 + 2x 4 + 2x 3 + x 2informačný polynóm. Pri systematickom kó<strong>do</strong>vaní najprv vypočítame polynóm r(x):r(x) = (x 11 + 2x 10 + 2x 9 + x 8 + x 5 + 2x 4 + 2x 3 + x 2 ) ∗ x 13 ) mod g(x) == x 24 + 2x 23 + 2x 22 + x 21 + x 18 + 2x 17 + 2x 16 + x 15 mod g(x) == 2x 12 + 2x 11 + x 10 + 2x 9 + 2x 6 + 2x 4 + x 3 + 2x 2 + 1a potom kó<strong>do</strong>vé slovo c(x) vyjadríme akoc(x) = i(x) ∗ x 13 − r(x) = x 24 + 2x 23 + 2x 22 + x 21 + x 18 + 2x 17 + 2x 16 + x 15 ++ x 12 + x 11 + 2x 10 + x 9 + x 6 + x 4 + 2x 3 + x 2 + 2Nech pri prenose vznikla chyba váhy 3 zadaná chybovým polynómom e(x) = x 14 +2x 12 +x 9a bol prijatý polynómv(x) = x 24 +2x 23 +2x 22 +x 21 +x 18 +2x 17 +2x 16 +x 15 +2x 14 +x 11 +2x 10 +2x 9 +x 6 +x 4 +2x 3 +x 2 +2.4 Tento príklad je upravenou verziou <strong>do</strong>mácej úlohy, ktorú vypracovala Monika


10.4. PETERSON-GORENSTEIN-ZIERLEROV ALGORITMUS DEKÓDOVANIA BCH KÓDOV145Zistíme či nastala chyba a ak áno, opravime ju.S 1 , . . . S 6 ; S i = v(α i ), i = 1, . . . , 6.Vypočítame hodnoty syndrómuS 1 = α 19 S 2 = α 2 S 3 = α 5S 4 = α 0 S 5 = α 8 S 6 = α 6Teraz zostrojíme maticu M 3 a vypočítame jej determinant:⎡⎤ ⎡S 1 S 2 S 3α 19 α 2 α 5 ⎤det M 3 = det ⎣ S 2 S 3 S 4⎦ = det ⎣ α 2 α 5 α 0 ⎦ = α 11S 3 S 4 S 5 α 5 α 0 α 8Determinant matice M 3 nie je nulový a na základe toho predpokladáme, že pri prenosevznikli tri chyby. Hladáme teraz kubický polynóm lokátorov chybΛ(z) = 1 + λ 1 z + λ 2 z 2 + λ 3 z 3 = (1 − x 1 z)(1 − x 2 z)(1 − x 3 z)Pre hladané koeficienty platí nasledujúca sústava rovníc:S 1 λ 3 + S 2 λ 2 + S 3 λ 1 + S 4 λ 0 = 0S 2 λ 3 + S 3 λ 2 + S 4 λ 1 + S 5 λ 0 = 0S 3 λ 3 + S 4 λ 2 + S 5 λ 1 + S 6 λ 0 = 0resp.α 19 λ 3 + α 2 λ 2 + α 5 λ 1 + α 0 = 0α 2 λ 3 + α 5 λ 2 + α 0 λ 1 + α 8 = 0α 5 λ 3 + α 0 λ 2 + α 8 λ 1 + α 6 = 0Riešením tejto sústavy <strong>do</strong>stávame:λ 3 = α 22 λ 2 = α 22 λ 1 = α 15 λ 0 = α 0a polynóm lokátorov chýb budeΛ(z) = 1 + α 15 z + α 22 z 2 + α 22 z 3 .Koreňmi polynómu Λ(z) sú prvky α 12 , α 14 , α 17 a teda chyby vznikli pri x 26−12 , x 26−14 , ax 26−17 . Pri binárnom kóde by sme v tomto momente skončili, pretože odhalenie pozíciechyby stačí aj na opravenie tejto chyby. V ternárnom prípade však ešte treba zistit’, akáchyba nastala. Označme si teda Y 1 , Y 2 , Y 3 koeficienty, ktoré boli v chybovom polynómepostupne pri členoch X 1 , X 2 , X 3 . Tieto sú viazané vzt’ahmi, vyjadrenými v nasledujúcejsústave (10.16):α 12 Y 1 + α 14 Y 2 + α 9 Y 3 = α 19α 24 Y 1 + α 2 Y 2 + α 18 Y 3 = α 2α 10 Y 1 + α 16 Y 2 + α 1 Y 3 = α 5Riešením tejto sústavy rovníc je: Y 1 = 2, Y 2 = 2 a Y 3 = 1 a teda chyba, ktorá nastalaje e(x) = X 1 Y 1 + X 2 Y 2 + X 3 Y 3 = 2x 14 + 2x 12 + x 9 .


146 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYPrijatý polynóm v(x) upravíme na kó<strong>do</strong>vý polynóm u(x) = v(x) − e(x) a vypočítameinformačný polynóm u(x) div x (26−13) = i(x) = x 11 + 2x 10 + 2x 9 + x 8 + x 5 + 2x 4 + 2x 3 + x 2 .Informačný polynóm i(x) = x 11 + 2x 10 + 2x 9 + x 8 + x 5 + 2x 4 + 2x 3 + x 2 budeme tentorazkó<strong>do</strong>vat’ nesystematicky, vynásobením generujúcim polynómom: c(x) = g(x) · i(x). Vnašom prípade <strong>do</strong>stávame kó<strong>do</strong>vé slovoc(x) = x 24 + 2x 23 + x 22 + 2x 21 + x 20 + 2x 19 + x 17 + x 16 + x 15 + 2x 14 + x 12 ++ 2x 10 + 2x 9 + x 7 + 2x 6 + x 5 + 2x 4 + 2x 2 .Nech pri prenose vznikla chyba e(x) = 2x 7 + x. Potom bolo prijaté slovov(x) = x 24 + 2x 23 + x 22 + 2x 21 + x 20 + 2x 19 + x 17 + x 16 + x 15 + 2x 14 ++ x 12 + 2x 10 + 2x 9 + 2x 6 + x 5 + 2x 4 + 2x 2 + x.Zistíme či v prijatom slove nastala chyba. Syndróm chyby slova v(x) jeS 1 = α 24 , S 2 = α 10 , S 3 = α 20 , S 4 = α 14 , S 5 = α 25 , S 6 = α 4 .Ked’že syndróm je nenulový, prijaté slovo je zat’ažené nejakou chybou. Určíme váhuchyby, ν. Zostavíme maticu M 3 a vypočítame jej determinant:⎡det M 3 = det ⎣α 24 α 10 α 20 ⎤α 10 α 20 α 14 ⎦ = 0.α 20 α 14 α 25Yo znamená, že váha chyby je menšia než 3. Zostavíme teda maticu M 2 a vypočítame jejdeterminant:[ α24αdet M 2 ==10 ]α 10 α 20 = α 17 ≠ 0.Z toho, že je matica M 3 singulárna a matica M 2 regulárna, vyplýva, že pri prenosevznikli pravdepo<strong>do</strong>bne dve chyby. Na ich určenie potrebujeme zostrojit’ polynóm lokátorovchýbRiešením sústavy rovnícurčíme koeficienty polynómu Λ(x)Λ(x) = 1 + λ 1 x + λ 2 x 2 .α 24 λ 2 + α 10 λ 1 + α 20 = 0α 10 λ 2 + α 20 λ 1 + α 14 = 0λ 2 = α 8 , λ 1 = α 25 , λ 0 = 1.Dostávame polynómλ(x) = 1 + α 25 x + α 8 x 2


10.5. INÉ METÓDY DEKÓDOVANIA BCH KÓDOV 147ktorého korene sú X 1 = α 1 a X 2 = α 7 .Potrebujeme už len zistit’ aké chyby nastali. Znova budeme riešit’ sústavu rovníc(10.16)α 1 Y 1 + α 7 Y 2 = α 24α 7 Y 1 + α 14 Y 2 = α 10Riešením tejto sústavy rovníc je Y 1 = 1 a Y 2 = 2. Chybový polynóm je e(x) = 2x 7 +1x a kó<strong>do</strong>vé slovo c(x) = v(x) − e(x). Nakoniec určíme informačné slovo. Kedže bolopoužité nesystematické kó<strong>do</strong>vanie informačné slovo (polynóm) <strong>do</strong>staneme vynásobenímkó<strong>do</strong>vého slova c(x) kontrolným polynómom h(x). V našom prípade h(x) = x 13 + x 11 +x 9 + 2x 7 + 2x 6 + x 2 + 2x + 1 a informačný polynóm jeh(x)u(x) = x 11 + 2x 10 + 2x 9 + x 8 + x 5 + 2x 4 + 2x 3 + x 2 .10.5 Iné metódy dekó<strong>do</strong>vania BCH kó<strong>do</strong>vVýpočtovo najnáročnejšou čast’ou Peterson-Gorenstein-Zierlerovho algoritmu je riešeniesústavy lineárnych rovníc 10.14. Ak túto sústavu riešime výpočtom inverznej maticesyndrómov, zložitost’ výpočtu je O(ν 3 ), čo pre vel’ké hodnoty ν môže byt’ príliš vel’a.Všimnime si však štruktúru matice syndrómov zo sústavy 10.14. Nech S 1 , S 2 , . . . , S 2νje postupnost’ hodnôt syndrómov aΛ(x) = 1 + λ 1 x + λ 2 x 2 + · · · + λ ν x νje polynóm lokátorov chýb. Riadky matice syndrómov tvoria súvislé podpostupnostidĺžky ν postupnosti hodnôt syndrómu: prvý ria<strong>do</strong>k matice syndrómov tvorí podpostupnost’S 1 , . . . , S ν , druhý podpostupnost’ S 2 , . . . , S ν+1 , až napokon posledný ria<strong>do</strong>k maticesyndrómov tvorí podpostupnost’ S ν , . . . , S 2ν−1 . Naviac, hodnoty S ν+1 , . . . , S 2ν možno vyjadrit’pomocou predchádzajúcich ν hodnôt syndrómu jednotným spôsobom:S j = −ν∑λ i S j−i ; j = ν + 1, . . . , 2ν. (10.17)i=1Berlekamp využil štruktúru matice syndrómov a navrhol efektívny algoritmus na riešeniesústavy 10.14. Massey preformuloval pôvodné Berlekampove riešenie <strong>do</strong> zrozumitel’nejšejpo<strong>do</strong>by, v ktorej ho budeme prezentovat’ aj my. Budeme postupovat’ nasle<strong>do</strong>vne:najprv uvedieme princíp algoritmu, potom ilustrujeme na príklade aké problémyalgoritmus rieši. Napokon popíšeme algoritmus formálne a <strong>do</strong>kážeme jeho korektnost’ aoptimálnost’.Ak zrušíme obmedzenie na j, rekurentný vzt’ah 10.17 popisuje nekonečnú postupnost’S 1 , S 2 , . . . generovanú posuvným registrom s lineárnou spätnou väzbou (linear feedbackshift register, LFSR), ktorá je zadaná polynómom lokátorov chýb Λ(x), obr. 10.1 Na to,aby sme určili polynóm lokátorov chýb Λ(x), potrebujeme nájst’ najkratší LFSR, ktorýgeneruje postupnost’ S 1 , S 2 , . . . , S 2ν .


148 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDY✓✏ ✓✏✛ + ✛ + ✛✒✑✤✜✻✒✑✤✜✻−λ 1 −λ 2✣✢ ✣✢✻ ✻❄✲ S j−1 S j−2✓✏✛ + ✛✒✑✤✜✻✻✤✜−λ ν−1 −λ ν✣✢ ✣✢✻ ✻S j−ν+1S j−ν ✲ S j−ν−1 . . . S 2 S 1Obrázok 10.1: LFSR so spätnou väzbou zadanou Λ(x)✲ 0 ✲ Λ (1) (x) = 1 + xObrázok 10.2: LFSR R (1)Podstata Barlekamp-Masseyovho algoritmu spočíva v iteratívnej konštrukcii registra(LFSR) generujúceho postupnost’ hodnôt syndrómov S 1 , S 2 , . . . , S 2ν ; S j ∈ GF(q). Ak súznáme registre R (j) generujúce počiatočné podpostupnosti S 1 , S 2 , . . . , S j ; j = 1, . . . ,r − 1,tak register R (r) generujúci podpostupnost’ S 1 , S 2 , . . . , S r−1 , S r sa bud’ zhoduje s registromR (r−1) , alebo sa dá zostrojit’ úpravou registra R (r−1) pomocou niektorého z predchádzajúcichregistrov. Modifikácia registra R (r−1) musí zaručit’, aby nový register, R(r)spĺňalnasledujúce dve požiadavky:1. aby správne generoval prvých r členov postupnosti,2. aby sa dĺžka registra R(r) zväčšila oproti registru R (r−1) minimálne.Tento postup budeme opakovat’ <strong>do</strong>vtedy, kým nezostrojíme register R (2ν) minimálnejdĺžky, ktorý generuje postupnost’ S 1, S 2 , . . . , S 2ν .Skôr ako formálne popíšeme Berlekamp-Masseyov algoritmus a <strong>do</strong>kážeme jeho korektnost’,ilustrujeme jeho činnost’ na príklade. Kvôli jednoduchosti budeme pracovat’ spol’om GF(2).Príklad. Nech je daná postupnost’ 0, 0, 1, 0, 1, 1, 0, 1, 0, 1. Nájdeme register R (10) , ktorýju bude generovat’. Register R(1)dĺžky 1 so spätnou väzbou 1 + x a počiatočným stavom0, obr. 10.2 generuje postupnost’ {0} k≥1 . (Ten istý register by z počiatočného stavu 1generoval postupnost’ {1} k≥1 .) To znamená, že R (1) generuje správne prvé dva členy postupnosti,ale chybne generuje tretí (R (2) = R (1) ). Musíme zväčšit’ dĺžku registra R(2) aprípadne modifikovat’ jeho spätnú väzbu tak, aby sme zostrojili register R (3) . Najprvukážeme, že žiaden register dĺžky 2 nemôže generovat’ podpostupnopst’ 001. Predpokladajmeopak. Nech je R LFSR dĺžky 2 so spätnou väzbou Λ(x) = 1 + λ 1x + λ 2 x 2 . Aby


10.5. INÉ METÓDY DEKÓDOVANIA BCH KÓDOV 149R správne generoval prvé dva členy postupnosti, jeho počiatočný stav musí byt’ 00, alepotom tretí prvok postupnosti má hodnotu 0λ 1 + 0λ 2 a to je pri l’ubovol’nom výbere hodnôtλ 1 , λ 2 vždy 0. To znamená, že register R (3) musí mat’ dĺžku aspoň 3 a na to, abyúspešne generoval postupnost’ 0, 0, 1, musí mat’ počiatočný stav (zapísané sprava <strong>do</strong>l’ava)100. Spätná väzba v prvých troch taktoch neovplyvní výstup registra R (3) , a teda prel’ubovol’ný polynóm spätnej väzbyΛ(x) = 1 + λ 1 x + λ 2 x 2 + λ 3 x 3bude register R (3) s počiatočným stavom 100 generovat’ postupnost’ 001. 5 Vyberieme R (3)so spätnou väzbou zadanou plynómom 1 + x 3 . Tento register bude správne generovat’aj štvrtý prvok postupnosti, 0, ale v piatom takte dôjde ku chybe a je potrebná korekciaspätnej väzby a možno aj predĺženie registra. Ukážeme, čo znamená modifikácia spätnejväzby registra. Register R (3) , obr. 10.3 generuje postupnost’ 0, 0, 1, 0, 0, 1, 0, 0, 1, ....Jedným z možných riešení je predĺžit’ register na dĺžku 5 a nastavit’ ako jeho počiatočný✲✲1 0 0 0, 0, 1, 0, 0, . . .Obrázok 10.3: LFSR R (3)stav postupnost’, ktorú má generovat’. Tento register by (bez ohl’adu na to, ako by smezvolili spätnú väzbu) generoval poža<strong>do</strong>vanú postupnost’. Skúsime teraz nájst’ kratšíregister, generujúci postupnost’ 0, 0, 1, 0, 1. Výstup registra R (4) = R(3)spĺňa nasledujúcirekurentný vzt’ah:S j+3 = S j , j = 1, 2, . . . .V prvých 3 taktoch sa na výstupe registra R (4) objavujú jednotlivé bity jeho počiatočnéhostavu, v 4. takte je výstupom (správna) hodnota, ktorá bola vypočítaná v 1. takte(S 4 = S 1 ), problematická hodnota 0, ktorá sa na výstupe registra objaví v 5. takte,bola vypočítaná v 2. takte. Ak nejako zmeníme spätnú väzbu registra a zachováme jehodĺžku a počiatočný stav, výstup registra v prvých troch taktoch sa nezmení ale môže sazmenit’ aj výstup v 4. a 5. takte (výstup registra v d’alších taktoch nás v tomto momentenezaujíma). K spätnej väzbe registra môžeme pridat’ členy x, x 2 , x 3 alebo nejakúich kombináciu. Potrebujeme <strong>do</strong>siahnut’, aby príspevok pridaných členov spätnej väzbybol v prvých 2 taktoch 0, 1. Pozrieme sa na to, aké hodnoty budú generovat’ možné členyspätnej väzby v prvých 2 taktoch, ak bol počiatočný stav registra R (4) 001.x 1, 0x 2 0, 1x 3 0, 0Poža<strong>do</strong>vanú postupnost’ nachádzame v druhom riadku; ak pridáme <strong>do</strong> polynómu spätnejväzby člen x 2 , hodnota generovaná spätnou väzbou v prvých dvoch taktoch bude S 1 +S 2 , S 2 +S 3 , resp. 0, 1 čo zabezpečí správne generovanie 4. a 5. člena postupnosti. Výslednýregister R (5) je na obrázku 10.4. Register R (5) správne generuje aj 6. prvok postupnosti,5 Ešte raz pripomenieme, že stav registra sa zapisuje sprava <strong>do</strong>l’ava a postupnost’ ktorú generuje vopačnom poradí, t.j. zl’ava <strong>do</strong>prava.


150 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDY✓✏+✒✑✲1 0 0✲0, 0, 1, 0, 1, 1, 1, . . .Obrázok 10.4: LFSR R (5)ale chyba nastáva v 7. takte. Opät’ je potrebná korekcia spätnej väzby. Problém však jev tom, že žiaden LFSR dĺžky 3 postupnost’ 0010110 ne<strong>do</strong>káže generovat’. Ak by existovalregister R dĺžky 3 s polynómom spätnej väzbyΛ(x) = 1 + λ 1 x + λ 2 x 2 + λ 3 x 3a počiatočným stavom 1, 0, 0 a generoval správne 4., 5., 6. a 7, prvok postupnosti, jehospätná väzba by musela spĺňat’ nasledujúce podmienkyλ 1 = 0,λ 2 = 1,λ 1 + λ 3 = 1,λ 1 + λ 2 = 0Z prvej, druhej a štvrtej podmienky vyplýva spor. Skúsme teraz predĺžit’ register o 1;nech je R LFSR dĺžky 4, so spätnou väzbou 1 + x2 + x 3 a počiatočným stavom 0100.Register R generuje postupnost’ 0, 0, 1, 0, 1, 1, 1, . . . ; chyba, ktorá sa objavila na výstupev 7. takte vznikla v 3. takte. Aby sme ju opravili, potrebujeme k spätnej väzbe pridat’členy, ktoré by z počiatočného stavu 0100 generovali postupnost’ 0, 0, 1. V nasledujúcejtabul’ke sú uvedené postupnosti generované potenciálnymi členmi spätnej väzby:x 0, 1, 1x 2 1, 0, 1x 3 0, 1, 0x 4 0, 0, 1Do úvahy prichádza bud’ člen x 4 , alebo kombinácia x + x 3 + x 4 - obe riešenia zabezpečujúkorekciu 7. generovaného prvku postupnosti. Vyberieme „opticky“ jednoduchšie riešeniea ako polynóm spätnej väzby registra R (5) vyberieme Λ(x) = 1 + x 2 + x 3 + x 4 , obr. 10.5.✓✏ ✓✏+ +✒✑ ✒✑✻✻ ✻✲0 1 0 0✲ 0, 0, 1, 0, 1, 1, 0 . . .Obrázok 10.5: LFSR R (7)Register R (7) sa v 8. takte <strong>do</strong>púšt’a chyby. Chybná hodnota bola vytvorená v 4. takte.Do spätnej väzby registra R (7) potrebujeme <strong>do</strong>plnit’ členy, ktoré by z počiatočného


10.5. INÉ METÓDY DEKÓDOVANIA BCH KÓDOV 151stavu 0100 generovali postupnost’ 0, 0, 0, 1. Príspevky potenciálnych prvkov spätnej väzbyuvádzame v nasledujúcej tabul’kex 0, 1, 1, 0x 2 1, 0, 1, 1x 3 0, 1, 0, 1x 4 0, 0, 1, 0Poža<strong>do</strong>vanú korekciu 0, 0, 0, 1 generuje kombinácia x + x 3 + x 4 . Register R (8) má dĺžku4, spätnú väzbu Λ(x) = 1 + x + x 2 a z počiatočného stavu 0100 generuje postupnost’0, 0, 1, 0, 1, 1, 0, 1. Chyba však nastáva už v nasledujúcom 9. takte. Žiaden register dĺžky4 nebude generovat’ postupnost’ 0, 0, 1, 0, 1, 1, 0, 1, 0. Zoberieme register R dĺžky 5 so spätnouväzbou Λ(x) = 1+x+x 2 , ktorý bude z počiatočného stavu 10100 generovat’ postupnost’0, 0, 1, 0, 1, 1, 0, 1, 1. Hodnota, ktorá sa na výstupe registra R objavila v 9. takte, bola generovanáv 4. takte. Na jej korigovanie potrebujeme <strong>do</strong> spätnej väzby pridat’ členy, ktoréby generovali postupnost’ 0, 0, 0, 1. Pomocou nasledujúcej tabul’kyx 1, 1, 0, 1x 2 0, 1, 1, 0x 3 1, 0, 1, 1x 4 0, 1, 0, 1x 5 0, 0, 1, 0nájdeme potrebnú korekciu: x 2 + x 4 + x 5 . Register R(9)dĺžky 5 so spätnou väzbouΛ(x) = 1 + x + x 4 + x 5 generuje prvých 9 prvkov postupnosti, ale chyba nastáva v poslednom,10 prvku postupnosti. Chybná hodnota bola vytvorená v 5. kroku, a to znamená,že potrebujeme korigovat’ spätnú väzbu registra R (9) tak, aby korekcia generovala postupnost’0, 0, 0, 0, 1. Z tabul’kyx 1, 1, 0, 1, 0x 2 0, 1, 1, 0, 1x 3 1, 0, 1, 1, 0x 4 0, 1, 0, 1, 1x 5 0, 0, 1, 0, 1vyplýva, že poža<strong>do</strong>vaná korekcia pozostáva z členov x + x 2 + x 3 . Register (obr. 10.6) ämá dĺžku 5, spätnú väzbu Λ(x) = 1 + x + x2 + x 3 + x 4 + x 5 a z počiatočného stavu 10100generuje postupnost’ 0, 0, 1, 0, 1, 1, 0, 1, 0, 1.✓✏ ✓✏ ✓✏ ✓✏+ + + +✒✑ ✒✑ ✒✑ ✒✑✻✻ ✻ ✻ ✻✲1 0 1 0 0✲ . . . 1010110100Obrázok 10.6: LFSR R (10)Ako sme videli v predchádzajúcom príklade, najväčším problémom pri konštrukciiregistra bolo jednak rozhodnút’, či je potrebné a ak, tak o kol’ko predĺžit’ register a


152 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYnájst’ vhodnú modifikáciu spätnej väzby. V príklade sme tento problém zakaždým nejakovyriešili, ale jednak to nebolo systematické riešenie a jednak sme nemali záruku,či získané riešenie (LFSR) bolo optimálne. Berlekamp-Masseyov algoritmus umožňujejednoznačne stanovit’ či treba, a ak áno, tak ako je potrebné v jednotlivých taktoch modifikovat’aktuálnu spätnú väzbu registra, aby sme našli optimálne riešenie. Zavediemeniekol’ko formálnych označení a popíšeme kl’účový krok Berlekamp-Masseyovho algoritmupresnejšie. LFSR R dĺžky L so spätnou väzbou zadanou polynómom Λ(x) budemeoznačovat’ R : (L, Λ(x)) a skutočnot’, že LFSR R generuje postupnost’ S 1 , . . . S k označímeR : (L, Λ(x)) gen↔ S 1 , . . . , S k Nech je daná postupnost’ S 1 , . . . prvkov pol’a GF(q). Predpokladáme,že pre k = 1, . . . , r − 1 sú už známe registre (LFSR)R (1) : (L 1 , Λ (1) (x))R (2) : (L 2 , Λ (2) (x))R (r−1) : (L r−1 , Λ (r−1) (x))gen↔ S 1gen↔ S 1 , S 2. . .gen↔S 1 , S 2 , . . . S r−1a pomocou nich zostrojíme registerR (r) : (L r , Λ (r) (x)) gen↔ S 1 , S 2 , . . . , S r .Necháme najprv register R (r−1) vypočítat’ ešte jeden (r-tý) prvok. Jeho hodnota bude∑r−1S ′ r = − λ (r−1)iS r−i .i=1Teraz porovnáme vypočítanú hodnotu S ′ r so skutočnou hodnotou S r . Rozdiel medzi týmitohodnotami označíme symbolom ∆ r :∑r−1∆ r = S r − S ′ r = S r +i=1λ (r−1) ∑r−1iS r−i =i=0λ (r−1)iS r−i ,pri poslednej úprave sme využili to, že λ 0 = 1. Ak ∆ r = 0, register R (r−1) správne generovalaj r-tý prvok postupnosti, a tedaR (r) = R (r−1) : (L r−1 , Λ (r−1) (x)) gen↔ S 1 , S 2 , . . . S r .Ak ∆ r ≠ 0, musíme spravit’ korekciu spätnej väzby registra R (r−1) a prípadne zväčšit’jeho dĺžku. Nová spätná väzba je zadaná polynómomΛ (r) (x)) = Λ (r−1) (x)) + A · x l · Λ (m−1) (x)). (10.18)V definícii polynómu Λ (r) (x)) v (10.18) vystupuje niekol’ko záhadných parametrov, ktorýchvýznam a hodnoty zakrátko určíme. Zatial’ prezradíme, že A ∈ GF(q), l je prirodzené


10.5. INÉ METÓDY DEKÓDOVANIA BCH KÓDOV 153číslo a Λ (m−1) (x)) je jeden z polynómov spätnej väzby, ktorý bol zostrojený pri predchádzajúcichiteráciách. Vypočítame rozdiel medzi hodnotou S r a hodnotou r-tého prvkugenerovaného registrom so spätnou väzbou zadanou polynómom (10.18):∑r−1∑r−1∑r−1∆ ′ r = λ (r) S r−i = λ (r−1) S r−i + A · λ (m−1) S r−i−l (10.19)i=0i=0Teraz potrebuje zvolit’ parametre m, A, l tak, aby ∆ ′ r = 0. Vyberieme m < r také, že∆ m ≠ 0. Položíme l = r − m a nakoniec A = −∆ r /∆ m . Upravíme 10.19 a <strong>do</strong>stávame∆ ′ r = ∆ r − ∆ r∆ m· ∆ m = 0.Zostrojený register R (r) : (L r , Λ (r) (x)) je teda generátorom postupnosti S 1 , S 2 , . . . , S r . Ostalaešte otvorená jedna otázka, a to výber m, na ktorý sme zatial’ nekládli žiadne podmienky.Ako <strong>do</strong>kážeme neskôr, ak vyberieme najväčšie m také, že r > m a L m > L m−1 ,<strong>do</strong>stávame generátor R (r) minimálnej dĺžky.Teraz, ked’ už máme <strong>do</strong>statočnú predstavu o činnosti Berlekamp-Masseyovho algoritmu,môžeme ho popísat’ formálne a <strong>do</strong>kázat’ jeho korektnost’ a optimálnost’. Formuláciavety a jej dôkazu je s malými modifikáciami prebratá z [2].Veta 10.5.1. (Berlekamp-Massey) Nech je daná postupnost’ S 1 , . . . , S 2t prvkov pol’a GF(q),nech pre počiatočné podmienky λ (0) (x) = 1, B (0) (x) = 1 a L 0 = 0 pre r = 1, . . . , 2t∆ r =i=0i=0∑r−1λ (r−1)iS r−i ; (10.20)L r = δ r (r − L r−1 ) + (1 − δ r )L r−1 ; (10.21)Λ (r) (x) = Λ (r−1) (x) − ∆ r · x · B (r−1) (x); (10.22)B (r) (x) = ∆ −1r · δ r · Λ (r−1) (x) + (1 − δ r ) · x · B (r−1) (x); (10.23)pričomδ r ={1 ak ∆ r ≠ 0&2L r−1 ≤ r − 1,0 ináč.Potom Λ (2t) (x) je polynóm minimálneho stupňa, ktorého koeficienty spĺňajú nasledujúcepodmienkyλ (2t)∑r−10= 1, S r + λ (2t)iS r−i , r = L 2t + 1, . . . , 2t.i=1Formulácia vety je na prvý pohl’ad zložitá. V podstate však ide o iteratívnu konštrukciupolynómu spätnej väzby generátora postupnosti S 1 , . . . , S 2t popísanú vzt’ahom 10.18.Veličina δ r indikuje, kedy <strong>do</strong>chádza k predĺženiu registra a zložito vyzerajúci polynómB (r) (x) vyjadruje aktuálnu korekciu polynómu spätnej väzby (ak je korekcia potrebná).Pripomíname, že ∆ r = 0 len v tom prípade, ked’ δ r = 0. To nám umožňuje definovat’hodnotu δ r /∆ r = 0 v prípade, ked’ δ r = 0.


154 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYSamotný dôkaz vety rozdelíme na dôkazy dvoch pomocných tvrdení. V prvej lemeodhadneme z<strong>do</strong>la dĺžku L r registra R (r) pomocou dĺžky L r−1 jeho bezprostredného predchodcu,registra R (r−1) . V druhej leme zostrojíme pomocou Berlekamp-Masseyovho algoritmugenerátor postupnosti S 1 , . . . , S r , a <strong>do</strong>kážeme, že jeho dĺžka L r bude <strong>do</strong>sahovat’<strong>do</strong>lný odhad z prvej lemy, čím zavŕšime dôkaz optimálnosti Berlekamp-Masseyovho algoritmu.Lema 8. Nech R (r−1) : (L r−1 , Λ (r−1) (x)) je LFSR minimálnej dĺžky, ktorý generuje postupnost’S 1 , . . . , S r−1 a nech R (r) : (L r , Λ (r) (x)) je LFSR minimálnej dĺžky, ktorý generujepostupnost’ S 1 , . . . , S r , pričom Λ (r−1) (x)) ≠ Λ (r) (x)). PotomL r ≥ max (L r−1 , r − L r−1 ) . (10.24)Dôkaz.Musíme <strong>do</strong>kázat’ dve nerovnosti1. L r ≥ (L r−1 ,2. L r ≥ r − L r−1 .Prvá nerovnost’ je zrejmá, pretože ak register generuje nejakú postupnost’, tak potomgeneruje aj jej počiatočnú podpostupnost’. Ostáva <strong>do</strong>kázat’ druhú nerovnost’. Ak byL r−1 ≥ r,potom by L r ≥ r − r = 0, čo je triviálne. Preto budeme predpokladat’, žeL r−1 < r.Druhú nerovnost’ teraz <strong>do</strong>kážeme sporom; budeme predpokladat’, že druhá nerovnost’neplatí; t.j. žeL r < r − L r−1 ,resp.L r ≤ r − 1 − L r−1 .Pozrieme sa teraz na postupnost’ generovanú registrom R (r−1) . Z predpokla<strong>do</strong>v lemyvyplýva, že register R (r−1) generuje prvých r − 1 prvkov postupnostiale negeneruje r-tý:L∑r−1S j = − λ (r−1)iS j−i , j = L r−1 + 1, . . . , r − 1; (10.25)i=1L∑r−1S r ≠ − λ (r−1)iS r−i . (10.26)i=1Register R (r) generuje prvých r členov postupnosti:∑L rS j = − λ (r)iS j−i , j = L r + 1, . . . , r.i=1


10.5. INÉ METÓDY DEKÓDOVANIA BCH KÓDOV 155Vyjadríme S r∑L rS r = − λ (r)iS r−i (10.27)V sume 10.27 vystupujú členy S r−Lr , . . . , S r−1 . Ale podl’a predpokladui=1r − L r ≥ r − (r − 1 − L r−1 ) = L r−1 + 1,a to znamená, že každý z členov S r−Lr , . . . , S r−1 môžeme vyjadrit’ pomocou 10.25. Dostávame∑L rS r = − λ (r)L r Lk S ∑r−k = λ (r) ∑ r−1kλ (r−1)iS r−k−i .k=1Zmeníme poradie sumácie a <strong>do</strong>stávameS r =L r−1∑i=1λ (r−1)i∑L rk=1k=1i=1Lλ (r)k S ∑ r−1r−k−i = −Dostali sme spor s (10.26), čím je tvrdenie lemy <strong>do</strong>kázané.i=1λ (r−1)iS r−i .Z predchádzajúcej lemy vyplýva, že ak pri konštrukcii LFSR generujúceho postupnost’S 1 , . . . , S r zostrojíme v r-tom kroku register dĺžky L r = max(L r−1 , r − L r−1 ), r =1, 2, . . . , tak je tento register optimálny. Ostáva <strong>do</strong>kázat’, že LFSR konštruované pomocouBerlekamp-Masseyovho algoritmu túto podmienku spĺňajú.Lema 9. Nech: (L j , Λ (j) (x)) gen↔ S 1 , S 2 , . . . , S j , j = 1, 2 . . .je postupnost’ registrov generujúcich počiatočné podpostupnosti postupnosti {S k } k≥1 . Akv registri R (r) tejto postupnosti <strong>do</strong>šlo k zmene spätnej väzby v porovnaní s predchádzajúcimregistrom;Λ (r) (x) ≠ Λ (r−1) (x),tak pre dĺžku registra R(r) platíL r = max(L r−1 , r − L r−1 )a l’ubovol’ný LFSR dĺžky L r generujúci postupnost’ S 1 , S 2 , . . . , S r je registrom-generátoromminimálnej dĺžky.LFSR R (r) zostrojený podl’a Berlekamp-Masseyovho algoritmu je generátorom minimálnejdĺžky postupnosti S 1, S 2 , . . . , S r .Dôkaz. Z predchádzajúcej lemy vyplýva, že dĺžka registra R(r) nemôže byt’ menšia nežmax(L r−1 , r − L r−1 ). Ak sa preto podarí ukázat’, že L r = max(L r−1 , r − L r−1 ), bude toznamenat’, že register R (r) je generátorom (postupnosti S 1 , S 2 , . . . , S r ) minimálnej dĺžky.Ukážeme, že pre r = 1, 2, . . . sa dá zostrojit’ generátor minimálnej dĺžky. Dôkaz budemeviest’ matematickou indukciou vzhl’a<strong>do</strong>m na dĺžku generovanej postupnosti.Pre k = 1 tvrdenie platí, lebo L 0 = 0, L 1 = 1.


156 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYPredpokladajme, že pre k = 1, . . . , r − 1 sú už zostrojené registreR (k) : (L k , Λ (jk) (x)) gen↔ S 1 , S 2 , . . . , S ka zakaždým, ked’ <strong>do</strong>šlo k zmene spätnej väzby; t.j. ak Λ (k) (x) ≠ Λ (k−1) (x) platíL∑r−1S j +i=1Lλ (r−1) ∑ r−1iS j−i =L k = max(L k−1 , k − L k−1 ).Teraz vyjadríme rozdiel medzi hodnotami, ktoré generuje register R (r−1) v jednotlivýchtaktoch a príslušnými členmi postupnosti {S j } j≥1 .{0 j = L r−1 + 1, . . . , r − 1i=0λ (r−1)iS j−i =∆ r j = r.Register R (r−1) správne generuje prvých r − 1 členov postupnosti {S j } j≥1 . Ak ∆ r = 0, takR (r−1) správne generuje aj r-tý člen postupnosti aL∑m−1S j +i=1L r = L r−1 ; Λ (r) = Λ (r−1) .Ak ∆ r =≠ 0 musíme spravit’ korekciu spätnej väzby a zostrojit’ nový register. Poslednázmena dĺžky registra nastala v kroku m. Potom{0 j = L m−1 + 1, . . . , m − 1λ (m−1)iS j−i =∆ m ≠ 0 j = m.Využijeme indukčný predpoklad a vyjadríme L r−1 pomocou L m−1 :Zostrojíme nový polynóm spätnej väzbyL r−1 = L m = max(L m−1 , m − L m−1 ) = m − L m−1 .Džka registra R (r) je L r = deg Λ (r) (x). Ked’žeaΛ (r) (x) = Λ (r−1) (x) − ∆ r∆ m· x r−m Λ (m−1) (x).deg Λ (r−1) (x) ≤ L r−1deg(x r−m Λ (m−1) (x)) ≤ r − m + L m−1 ,pre dĺžku registra R(r) <strong>do</strong>stávame nasledujúci horný odhadL r ≤ max(L r−1 , r − m + L m−1 ) ≤ max(L r−1 , r − L r−1 ).Ukážeme, že register R (r) generuje postupnost’ S 1 , S 2 , . . . , S r . Vyjadríme rozdiel medzihodnotami generovanými registrom R (r) v jednotlivých taktoch a príslušnými členmi postupnostiS 1 , S 2 , . . . , S r .()⎡⎤∑L rS j − − λ (r)∑L riS j−i = S j + λ (r−1)iS j−i − ∆ L∑m−1r⎣S j−r+m + λ (m−1)∆iS j−r+m−i⎦ =mi=1i=1i=1{0 j = L r−1 + 1, . . . , r − 1=∆ r − ∆ r∆ m · ∆ m = 0 j = r.


10.6. ZVLÁŠTNOSTI DEKÓDOVANIA BINÁRNYCH BCH KÓDOV 157Ked’že register R (r) generuje postupnost’ S 1 , S 2 , . . . , S r , podl’a predchádzajúcej lemyTo znamená, žeL r ≥ max (L r−1 , r − L r−1 ) .L r = max (L r−1 , r − L r−1 )a register R (r) : (L r , Λ (r) (x)) je optimálny LFSR generujúci postupnost’ S 1 , S 2 , . . . , S r ; resp.R (2t) : (L 2t , Λ (2t) (x)) je optimálny LFSR generujúci postupnost’ S 1 , S 2 , . . . , S 2t .Vrátime sa k príkladu zo začiatku paragrafu a zostrojíme LFSR pomocou BerlekampMasseovho algoritmu.Príklad. Nech je daná binárna postupnost’ 0, 0, 1, 0, 1, 1, 0, 1, 0, 1. V tabul’ke 10.2 súuvedené hodnoty parametrov Berlekamp-Masseyovho algoritmu v jednotlivých krokochvýpočtu.r ∆ r δ r L r Λ (r) (x) B (r) (x)0 0 0 0 1 11 0 0 0 1 x2 0 0 0 1 x 23 1 1 3 1 + x 3 14 0 0 3 1 + x 3 x5 1 0 3 1 + x 2 + x 3 x 26 0 0 3 1 + x 2 + x 3 x 37 1 1 4 1 + x 2 + x 3 + x 4 1 + x 2 + x 38 1 0 4 1 + x + x 2 x + x 3 + x 49 1 1 5 1 + x + x 4 + x 5 1 + x 2 + x 310 1 0 5 1 + x 2 + x 3 + x 4 + x 5 x + x 3 + x 4Tabul’ka 10.2: Berlekamp-Massey10.6 Zvláštnosti dekó<strong>do</strong>vania binárnych BCH kó<strong>do</strong>v10.7 Reed-Solomonove kódyŠpeciálnym prípa<strong>do</strong>m BCH kó<strong>do</strong>v sú Reed-Solomonove kódy, ktoré, ako zakrátko ukážeme,sú z istého hl’adiska optimálne.Definícia 10.7.1. Reed-Solomonov kód (RS kód) je primitívny BCH kód dĺžky n = q − 1nad pol’om GF(q).Ked’že RS kódy tvoria podtriedu BCH kó<strong>do</strong>v, RS kód opravujúci t chýb možno zadat’generujúcim polynómom g(x) s koreňmi α j0+1 , α j0+2 , . . . , α j0+2t , kde α je primitívny prvokpol’a GF(q). Kvôli zjednodušeniu položíme j 0 = 0 a nájdeme explicitné vyjadreniegenerujúceho polynómu. Generujúci polynóm BCH kódu je definovaný ako najmenšíspoločný násobok minimálnych polynómov svojich koreňov. Minimálnym polynómom


158 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDYprvku α i pol’a GF(q) je polynóm m α i(x) = x − α i nad pol’om GF(q). To však znamená, žegenerujúci polynóm g(x) bude súčinom minimálnych polynómov svojich koreňov:g(x) = (x − α)(x − α 2 ) . . . (x − α 2t ).Určíme opravné schopnosti RS kódu. Konštrukčná vzdialenost’ RS-kódu ako špeciálnehoprípadu BCH kódu je d ≥ 2t + 1. Na druhej strane, g(x) je kó<strong>do</strong>vým slovom a jeho váhaneprevyšuje 2t + 1 (túto hodnotu by polynóm g(x) <strong>do</strong>siahol v prípade, ak by boli všetkyjeho koeficienty nenulové). Stupeň generujúceho polynómu cyklického kódu zodpovedápočtu kontrolných symbolov. To znamená, žedeg(g(x)) = 2t = n − k,resp. n − k + 1 = 2t + 1. RS kód je zároveň lineárnym kó<strong>do</strong>m a pre lineárne kódy platíSingeltonova hranica d ≤ n − k + 1. To znamená, že minimálna vzdialenost’ RS kódu jed = n − k + 1. Tým sme <strong>do</strong>kázali nasledujúcu vetu.Veta 10.7.1. RS kód má minimálnu vzdialenost’ n − k + 1 a je kó<strong>do</strong>m s maximálnou(minimálnou) vzdialenost’ou.Z uvedenej vety vyplýva, že pre dané n, k neexistuje kód, ktorého minimálna vzdialenost’by bola väčšia ako minimálna vzdialenost’ RS kódu. Túto skutočnost’ všaknemožno preceňovat’, pretože často potrebujeme zostrojit’ kód s parametrami n ′ , k ′ prektoré neexistuje RS kód, ale existujú iné, <strong>do</strong>statočne <strong>do</strong>bré samoopravné kódy.RS kódy nie sú binárne, ale ked’ zvolíme q = 2 m , symboly kó<strong>do</strong>vej abecedy možnopriamo nahrádzat’ binárnymi vektormi dĺžky m. Uvedieme niekol’ko príkla<strong>do</strong>v RS kó<strong>do</strong>va potom sa budeme zaoberat’ ich praktickým použitím pri opravovaní zhlukov chýb.Príklad. Začneme krátkym RS kó<strong>do</strong>m. Nech q = 8. Pole GF(2 3 ) zostrojíme faktorizáciouokruhu polynómov GF(2) ireducibilným polynómom x 3 + x + 1. Prvky pol’a GF(2 3 )vyjadrené pomocou mocnín primitívneho prvku α a lineárnych kombinácií mocnín primitívnehoprvku α sú uvedené v nasledujúcej tabul’ke:α i α 2 α 1 α 0 α i α 2 α 1 α 0α 0 0 0 1 α 4 1 1 0α 1 0 1 0 α 5 1 1 1α 2 1 0 0 α 6 1 0 1α 3 0 1 1 α 7 0 0 11. RS kód opravujúci chybu váhy 1 je zadaný generujúcim polynómom s koreňmiα, α 2 ;g(x) = (x − α)(x − α 2 ) = x 2 + α 4 · x + α 3 .2. RS kód opravujúci chybu váhy 2 je zadaný generujúcim polynómom s koreňmiα, α 2 , α 3 , α 4 ;g(x) = (x − α)(x − α 2 )(x − α 3 )(x − α 4 ) = x 4 + α 3 x 3 + x 2 + αx + α 3 .


10.7. REED-SOLOMONOVE KÓDY 159Ked’že generujúci polynóm má stupeň 4, informačný polynóm bude mat’ stupeň 2.Nech i(x) = α 4 x 2 + α 2 x + α 6 . Kó<strong>do</strong>vým polynómom budei(x) · g(x) = x 6 α 4 + x 5 α 6 + x 4 α 2 + x 3 α 5 + x 2 α 5 + xα 4 + α 2 .Ak vyjadríme kó<strong>do</strong>vé slovo v tvare vektora a nahradíme prvky pol’a GF(2 3 ) binárnymivektormi dĺžky 3, <strong>do</strong>stávame binárny vektor dĺžky 21:110 101 100 111 111 110 100.Pozrieme sa ešte na RS kód dĺžky 15 nad pol’om GF(24 ), opravujúci 3 chyby. Tento kódbude zadaný generujúcim polynómom g(x) s koreňmi α, α 2 , . . . , α 6 ;g(x) = (x − α)(x − α 2 )(x − α 3 )(x − α 4 )(x − α 5 )(x − α 6 ).a bude opravovat’ chyby váhy ≤ 3. Pri binárnom zápise kó<strong>do</strong>vých slov <strong>do</strong>stávame zRS 15, 9) kódu (60, 36) kód. Ak by sme RS kód chceli použit’ na kó<strong>do</strong>vanie informácieprenášanej kanálom, na ktorý pôsobí biely šum, binárny zápis kó<strong>do</strong>vých slov je skôrnevýho<strong>do</strong>u. Ak totiž v kó<strong>do</strong>vom slove (dĺžky 60) vznikne chyba váhy 4 alebo väčšej,zmení pravdepo<strong>do</strong>bne viac než 3 hexadecimálne symboly kó<strong>do</strong>vého slova, čo prevýšiopravnú schopnost’ daného RS kódu. V mnohých aplikáciách je však predpoklad onezávislosti chýb neopodstatnený: ak dôjde k poškodeniu CD, elektrickému výboju aleboporuche, tieto udalosti ovplyvnia pravdepo<strong>do</strong>bne niekol’ko susedných znakov kó<strong>do</strong>véhoslova. Takýmto chybám sa hovorí zhluky chýb (burst errors), a RS kódy sa dajú výhodnepoužit’ práve na ochranu informácie prenášanej kanálom, v ktorom <strong>do</strong>chádza k zhlukomchýb.Definícia 10.7.2. (Cyklickým) zhlukom chýb dĺžky t


160 KAPITOLA 10. BOSE-CHANDHURY-HOCQUENGHEMOVE KÓDY


Kapitola 11Modifikácie samoopravnýchkó<strong>do</strong>vNiekedy sa stane, že nevieme nájst’ <strong>do</strong>brý samoopravný kód, ktorý vyhovuje presnenaším potrebám, ale vieme o existencii <strong>do</strong>brého samoopravného kódu, ktorého parametresa od nami poža<strong>do</strong>vaných hodnôt vel’mi neodlišujú. Vzniká prirodzená otázka, či saznámy kód nedá upravit’ tak, aby si zachoval svoje <strong>do</strong>bré vlastnosti a zároveň splnil našepožiadavky. Ako zakrátko uvidíme, metódy umožňujúce transformácie samoopravnýchkó<strong>do</strong>v skutočne existujú. V tejto krátkej kapitole stručne popíšeme šest’ základnéýchmetódy úprav samoopravných kó<strong>do</strong>v. Budeme pracovat’ prevažne s lineárnymi kódmi;nie však preto, že by sa dané metódy nedali použit’ na úpravy nelineárnych kó<strong>do</strong>v, alepreto, že v prípade lineárnych kó<strong>do</strong>v majú modifikácie, ktoré budeme uvádzat’, vel’mijednoduchú interpretáciu. Metódy modifikácie samoopravných kó<strong>do</strong>v možno nájst’ praktickyv l’ubovol’nej monografii venovanej kó<strong>do</strong>vaniu; čitatel’ovi pre podrobnejšie štúdiumproblematiky odporúčame vynikajúco spracovanú kapitolu v [7], resp. prednášky [?], zktorých sme prebrali niektoré príklady.Lineárny kód C má tri základné parametre: dĺžku n, počet informačných symbolov(= dimenzia lineárneho podpriestoru) k a počet kontrolných symbolov n − k. Podstatazákladných metód modifikácie spočíva v tom, že sa jeden z troch uvedených parametrovfixuje a ostatné dva sa menia. Celkovo teda máme 6 základných možností ktoré kvôliprehl’adnosti uvádzame v nasledujúcej tabul’ke (ked’že slovenská terminológia zatial’ neexistuje,budeme sa pridržiavat’ aglického označenia):No. Názov metódy n k n − k1. augmenting zväčšenie - ↑ ↓2. expurgating zmenšenie - ↓ ↑3. extending rozšírenie ↑ - ↑4. puncturing zúženie ↓ - ↓5. lengthening predĺženie ↑ ↑ -6. shortening skrátenie ↓ ↓ -Pripomenieme, že lineárne (n, k) kódy je možné zadat’ generujúcou maticou G typu k × nalebo kontrolnou maticou H typu n − k × n. Vo všeobecnosti sa pri zmenách počtov161


162 KAPITOLA 11. MODIFIKÁCIE SAMOOPRAVNÝCH KÓDOVinformačných a kontrolných symbolov a nemennej dĺžke kó<strong>do</strong>vých slov pridávajú alebovynechávajú riadky v generujúcej/kontrolnej matici; pri zmenách dĺžky kó<strong>do</strong>vého slovasa pridávajú alebo vynechávajú stĺpce generujúcej/kontrolnej matice. Pozrieme sa terazna jednotlivé metódy modifikácie kó<strong>do</strong>v podrobnejšie.Metódy Lengthening a ShorteningPri predlžovaní a skracovaní kódu sa mení celková dĺžka kódu a počet informačnýchsymbolov, zostáva zachovaný počet kontrolných symbolov. Pri predlžovaní (lengthening)zväčšujeme dĺžku kódu (a počet informačných symbolov) a ku kódu pridávame nové kó<strong>do</strong>véslová; pri skracovaní (shortening) kódu naopak odstraňujeme informačné symbolya tak z pôvodného kódu odstraňujeme kó<strong>do</strong>vé slová.Predlžovanie lineárnych kó<strong>do</strong>v sa robí pridávaním rovnakého počtu riadkov a stĺpcovku generujúcej matici. Štandardný spôsob predlžovania lineárnych kó<strong>do</strong>v spočíva vpridaní nulového stĺpca ku generujúcej matici a následne v <strong>do</strong>plnení nulového riadka,ktorý však má nenulovú hodnotu v poslednom (pridanom) stĺpci. Skracovanie lineárnehokódu je predstavuje inverzný postup k predlžovaniu kódu. Najprv upravíme generujúcumaticu kódu tak, aby obsahovala jeden ria<strong>do</strong>k, ktorý má nulové hodnoty na všetkých miestachs výnimkou posledného. Odstránením tohto riadku a posledného stĺpca z generujúcejmatice <strong>do</strong>staneme generujúcu maticu skráteného kódu. Iná možnost’ skracovania apredlžovania kódu spočíva vo vynechávaní resp. pridávaní vybraných stĺcov kontrolnejmatice.Príklad (skrátenie kódu). Uvažujme Hammingov (15,11) binárny kód zadaný kontrolnoumaticouH =⎡⎢⎣1 0 0 0 1 0 0 1 1 0 1 0 1 1 10 1 0 0 1 1 0 1 0 1 1 1 1 0 00 0 1 0 0 1 1 0 1 0 1 1 1 1 00 0 0 1 0 0 1 1 0 1 0 1 1 1 1⎤⎥⎦ . (11.1)Odstránením stĺpcov 12,13 a 14 <strong>do</strong>stávame (12,8) kód opravujúci 1 chybu, zadanýkontrolnou maticou⎡⎤1 0 0 0 1 0 0 1 1 0 1 1H ′ = ⎢ 0 1 0 0 1 1 0 1 0 1 1 0⎥⎣ 0 0 1 0 0 1 1 0 1 0 1 0 ⎦ .0 0 0 1 0 0 1 1 0 1 0 1Zostrojený kód má dve prednosti: informačný vektor má dĺžku 8 a ked’že sme z pôvodnejkontrolnej matice odstránili stĺpce maximálnej váhy, zjednodušili sa kontrolné sumy(namiesto pôvodných 8 členov obsahujú teraz 5 a 6 členov). Na druhej strane, početkó<strong>do</strong>vých slov klesol z pôvodných 2048 na 256.Príklad (predĺženie kódu). (n − 1, k) Reed-Solomonov kód predĺžime pridaním dvochnových informačných symbolov a zostrojíme Reed-Solomonov kód s parametrami (n +1, k + 2). Aby sme zaistili opravovanie chýb v <strong>do</strong>plnených symboloch kó<strong>do</strong>vých slov, novéinformačné symboly musíme zaradit’ aj <strong>do</strong> kontrolných súm. To <strong>do</strong>siahneme <strong>do</strong>plnením


163kontrolnej matice o také dva nové stĺpce, aby sme neznížili rang kontrolnej matice:⎡1 α α 2 . . . α n−2 ⎤ ⎡1 0 1 α α 2 . . . α n−2 ⎤1 α 2 α 4 . . . α 2(n−2)H = ⎢⎥⎣ .. ⎦ ⇒ 0 0 1 α 2 α 4 . . . α 2(n−2)⎢⎥⎣ .. ⎦ .1 α 2t α 4t . . . α 2t(n−2) 0 1 1 α 2t α 4t . . . α 2t(n−2)Metódy Augmenting a ExpurgatingPri týchto modifikáciách si kód zachováva nemennú dĺžku kó<strong>do</strong>vého slova, ale menísa počet kontrolných a informačných symbolov. Ked’ sa zväčšuje počet informačnýchsymbolov (augmenting), rastie aj počet kó<strong>do</strong>vých slov, ale zmenšuje sa počet kontrolnýchsymbolov a môže sa zmenšit’ (a spravidla sa aj zmenšuje) minimálna vzdialenost’ a týmaj opravná schopnost’ kódu. Naopak, pri zväčšovaní počtu kontrolných symbolov (expurgating)v slove sa zmenšuje počet informačných symbolov, klesá počet kó<strong>do</strong>vých slov amôže sa zväčšit’ minimálna vzdialenost’ kódu.V prípade lineárneho kódu sa metódy Augmenting a Expurgating realizujú jednoducho:ak chceme kód zväčšit’, pridáme <strong>do</strong> generujúcej matice nový ria<strong>do</strong>k (často sa pridávajednotkový ria<strong>do</strong>k); ak potrebujeme kód zmenšit’, z generujúcej matice odstraňujemeriadky, resp. pridávame riadky <strong>do</strong> kontrolnej matice kódu. Metódu Augmenting smepoužili pri konštrukcii Reed-Mullerových kó<strong>do</strong>v; ku generujúcej matici kódu R(r − 1, m)sme pridali maticu G r a <strong>do</strong>stali generujúcu maticu kódu R(r, m):⎡ ⎤⎡ ⎤ GG 00G 1G 1G = ⎢ ⎥⎣ . ⎦ ⇒ ⎢ ..⎥⎣ GG r−1⎦r−1G rPôvodný R(r − 1, m) kód mal dĺžku 2m a mal ∑ ( m)0≤j


164 KAPITOLA 11. MODIFIKÁCIE SAMOOPRAVNÝCH KÓDOVDôležitá metóda zmenšenia kódu sa zakladá na výbere podmnožiny kó<strong>do</strong>vej abecedya vylúčení všetkých slov pôvodného kódu, ktoré obsahujú aj iné symboly. Presnejšie,nech je dané konečné pole F a nech je C kód nad pol’om F. Nech je G podpole pol’a F. Podkó<strong>do</strong>mkódu C nad podpol’om G nazveme množinu kó<strong>do</strong>vých slov kódu C, ktorých všetkyzložky patria <strong>do</strong> podpol’a G. Takýto podkód „zdedil“ mnohé <strong>do</strong>bré vlastnosti pôvodnéhokódu a mohol na<strong>do</strong>budnút’ aj d’alšie <strong>do</strong>bré vlastnosti. Túto metódu sme využilipri konštrukcii Reed-Solomonových kó<strong>do</strong>v.Metódy Extending a PuncturingV obidvoch prípa<strong>do</strong>ch si kód zachováva počet informačných symbolov (a zároveň ajpočet kó<strong>do</strong>vých slov). Mení sa dĺžka kó<strong>do</strong>vého slova a počet kontrolných symbolov.Ked’ sa kód rozširuje (extension), pridávajú sa nové kontrolné symboly. Pri redukciisa naopak počet kontrolných symbolov v kó<strong>do</strong>vých slovách zmenšuje. Pri znižovaní počtukontrolných symbolov môže dôjst’ k zníženiu minimálnej vzdialenosti a pri pridávaníkontrolných symbolov sa minimálna vzdialenost’ kódu môže zväčšit’. Rozšírenielineárneho kódu sa dá realizovat’ <strong>do</strong>plnením nového stĺpca generujúcej matice, naopakredukcia lineárneho kódu sa realizuje odstránením stĺpca generujúcej matice. Lineárny(n,k)-kód C možno rozšírit’ tak, že sa ku každému kó<strong>do</strong>vému slovu v = (v 1 , . . . , v n ) pridánový kontrolný symbol v n+1 , ktorý je lineárnou kombináciou symbolov pôvodného slova;v n+1 = a 1 v 1 + a 2 v 2 + · · · + a n v n .Vektor a 1 , . . . , a n by nemal patrit’ <strong>do</strong> duálneho kódu C ⊥ , pretože v tom prípade by v n+1 =0. Požiadavky na výber vektora a sa analyzujú v [7], my sa nimi zaoberat’ nebudeme.Pri rozširovaní lineárnych kó<strong>do</strong>v sa najčastejšie ku kó<strong>do</strong>vým slovám pridáva paritnýsymbol; t.j. kó<strong>do</strong>vé slovo v = (v − 1, . . . , v n , v n+1 ) potom spĺňa nasledujúcu rovnost’n+1∑v 1 = 0.i=1(V tomto prípade vektor a = (−1, . . . , −1).)


Kapitola 12Prínos kó<strong>do</strong>vaniaKed’ na prenos správ použávame komunikačný kanál na ktorý vplýva nejaký zdroj šumu,hrozí že šum modifikuje prenášanú správu <strong>do</strong> takej miery, že príjemca nebude schopnýzrekonštruovat’ pôvodne odvysielanú správu. Existujú principiálne dva spôsoby, akoeliminovat’ alebo aspoň znížit’ riziko modifikácie, ktoré by spôsobilo nesprávnu interpretáciuprijatej správy;• zvýšenie o<strong>do</strong>lnosti signálov voči šumu a• použitie samoopravných kó<strong>do</strong>v.Doteraz sme sa zaoberali takmer výlučne riešeniami založenými na použití samoopravnýchkó<strong>do</strong>v. Sú však situácie, kedy samoopravný kód ne<strong>do</strong>káže zaistit’ potrebnú úroveň spol’ahlivostikomunikácie, inokedy je jednoduchšie zvýšit’ robustnost’ vysielaného signálu (napríkladzvýšit’ hlasitost’ vysielania v hlučnom prostredí) alebo je výhodné kombinovat’ technické(použitie robustnejších signálov na prenos správ) a matematické riešenie (samoopravnýkód). Predpokladajme, že našou úlohou je pre daný komunikačný systém nájst’ optimálneriešenie, ktoré by zaistilo poža<strong>do</strong>vanú úroveň bezpečnosti komunikácie (vyjadrenúnapríklad pravdepo<strong>do</strong>bnost’ou nesprávneho dekó<strong>do</strong>vania alebo interpretácie prijatéhoslova), pričom máme možnost’ ovplyvňovat’ robustnost’ signálov prostredníctvomzmien výkonu vysielača a použit’ nejaký samoopravný kód. Aby sme <strong>do</strong>kázali posúdit’príspevok použitia samoopravného kódu k zmene 1 spol’ahlivosti komunikácie, budemev tejto kapitole štu<strong>do</strong>vat’ vzt’ah medzi energiou signálu pripadajúceho na jeden symbolprenášanej správy (kó<strong>do</strong>vanej alebo nekó<strong>do</strong>vanej) a pravdepo<strong>do</strong>bnost’ou nesprávnehodekó<strong>do</strong>vania prijatého slova. 2Na zjednodušenie výkladu prijmeme nasledujúce predpoklady:• kó<strong>do</strong>vá abeceda je binárna,• vysielač má ohraničený (konštantný výkon) a na prenos jedného bitu pripadá energiaE b joulov,1 zýšeniu alebo zníženiu2 Výklad vychádza z práce [15] a využíva matematický aparát teórie signálov z práce [5]165


166 KAPITOLA 12. PRÍNOS KÓDOVANIA• na prenos správ sa používajú amplitú<strong>do</strong>vo modulované signály; 1 je reprezentovanásignálom S hodnotou √ E b a 0 je reprezentovaná signálom s hodnotou − √ E b .Poznámka. Signál reprezentujúci 1 môžeme popísat’ funkciou S(t) (impulzom) s obdĺžnikovýmpriebehom:{√Eb −1/2 < t < 1/2,S(t) =0 ináč.Množstvo energie pripadajúcej na impulz je [5] tak, ako sme predpokladali E b :∫ ∞−∞S(t) 2 dt = E b∫ 1/2−1/2dt = E b .Predpokladáme d’alej, že na prenosový kanál pôsobí zdroj bieleho Gaussovského aditívnehošumu 3 . Výsledkom jeho pôsobenia je náhodný signál N(t) (noise), ktorý sa pripočítavak signálu prenášajúcemu správu. Aby sme sa nemuseli zaoberat’ časovou alebo spektrálnoureprezentáciou signálu S(t) a šumu N(t), signálu (aj šumu) na intervale jednotkovejdĺžky priradíme číselné hodnoty S resp. N (dané napríklad priemernou hodnotou príslušnéhosignálu na intervale, alebo hodnotou ktorú na<strong>do</strong>búda v strede intervalu). Šumpotom môžeme chápat’ ako náhodnú premennú s normálnym rozdelením so strednouhodnotou 0 a disperziou σ 2 . Hodnoty signálu a šumu sa sčítavajú a výsledná hodnotaS + N sa interpetuje (demodulátorom) nasle<strong>do</strong>vne{1 S + N > 0,S + N →0 ináč.Je zrejmé, že demodulátor chybne interpretuje prijatý signál vtedy, ak sa v dôsledkušumu mení znamienko signálu, t.j. pôvodne kladná hodnota signálu reprezentujúceho1 sa pripočítaním hodnoty šumu zmenila na zápornú, ktorá reprezentuje 0 a vice versa.To znamená, že, napríklad pri prenose 0 hodnota šumu musela prevýšit’ √ E b a priprenose 1 dôjde ku chybe, ak N < − √ E b . Využijeme to, že náhodná premenná N popisujúcapôsobenie šumu má normálne rozdelenie a vyčíslime pravdepo<strong>do</strong>bnost’ toho, že šumna<strong>do</strong>búda vyššie uvedené hodnoty.P(N > √ E b ) =P(N < − √ E b ) =1√2πσ∫ ∞√ Ebe −t2 2σ 2 dt = 1 − Φ1√2πσ∫ √ E b−∞e −t2 2σ 2 dt = Φ(−(√Eb√Ebσ 2 )σ 2 ), (12.1), (12.2)kde Φ(x) je distribučná funkcia normálneho rozdelenia. Zo symetrie hustoty normálnehorozdelenia vyplýva, že P(N > √ E b ) = P(N < − √ (√ )EE b ) = 1 − Φ b. Zaujímavý jeσ 2argument funkcie Φ; pomer E b /σ 2 sa nazýva pomer signálu k šumu (signal to noise3 presnú charakteristiku takého šumu možno nájst’ v [5]


167ratio), SRN a ako sa ukáže neskôr, pomocou neho sa dá kvantitatívne vyjadrit’ o<strong>do</strong>lnost’signálu voči šumu.Vyjadrili sme pravdepo<strong>do</strong>bnost’ vzniku chyby pri prenose jedného bitu. Aby smemohli určit’ efekt kó<strong>do</strong>vania, predpokladajme, že nekó<strong>do</strong>vaná správa pozostáva zo slovdĺžky k bitov. Na kó<strong>do</strong>vanie použijeme (n, k) kód, takže pri prenesení n-bitového kó<strong>do</strong>véhoslova prenesieme v skutočnosti len k informačných bitov; ak by sme nezmenilimodulátor ani vysielač, prenosová rýchlost’ by po kó<strong>do</strong>vaní na<strong>do</strong>budla hodnotu R = k/n.Aby sme toto zníženie prenosovej rýchlosti kompenzovali, musíme za jednotku času preniest’1/R = n/k bitov kó<strong>do</strong>vého slova. Ked’že vysielač má konštantný výkon, znamenáto, že po takejto úprave bude množstvo energie pripadajúce na jednotkový signál (signálreprezentujúci jeden bit prenášanej správy) RE b , t.j. menšie. Tým sa zníži aj robustnost’signálu a pravdepo<strong>do</strong>bnost’ toho, že pri prenose jedného bitu dôjde vplyvom šumuk chybe stúpne na(√ )p ′ REbe = 1 − Φσ 2 . (12.3)Na prvý pohl’ad to nevyzerá <strong>do</strong>bre, pretože zjavne p e < p ′ e. Efekt samoopravného kó<strong>do</strong>vaniasa však prejaví až pri dekó<strong>do</strong>vaní slov. Porovnáme pravdepo<strong>do</strong>bnosti chybného dekó<strong>do</strong>vania/interpretácieprijatého slova v prípade ked’ na jeho zápis pri prenose nebol/bolpoužitý samoopravný kód. V prvom prípade prenášame slovo dĺžky k a interpretujemeho správne, ak pri prenose nevznikla žiadna chyba. V druhom prípade prenášame slovodĺžky n a chyba dekó<strong>do</strong>vania nastane vtedy, ak počas prenosu v slove vzniklo viac chýb,ako dekóder <strong>do</strong>kázal opravit’. Ilustrujeme tieto skutočnosti na dvoch príkla<strong>do</strong>ch.Príklad. [15] Kozmická sonda Mariner, vypustená v roku 1969 používala na kó<strong>do</strong>vanieobrazov (32, 6)-kód opravujúci chyby váhy 7 a menšej. Predpokladajme, že tolerovatel’nápravdepo<strong>do</strong>bnost’ nesprávneho dekó<strong>do</strong>vania slova je 10 −4 . Bez použitia samoopravnýchkó<strong>do</strong>v bude mat’ prenášané slovo dĺžku 6 bitov a ak je pravdepo<strong>do</strong>bnost’ chyby v jednombite p e , pravdepo<strong>do</strong>bnost’ chyby v slove budeP e = 1 − (1 − p e ) 6 ≤ 10 −4 (12.4)Z nerovnosti 12.4 vyjadríme p e : 1−10 −4 ≤ (1−p e ) 6 ; potom (1−10 −4 ) 1/6 ≤ 1−p e a napokonp e ≤ 1−(1−10 −4 ) 1/6 = 1.66674·10 −5 . Aby sme <strong>do</strong>siahli poža<strong>do</strong>vanú spol’ahlivost’ prenosu,hl’adáme takú hodnotu pomeru signál/šum E b /σ 2 , abyp e ≈ 10−46= 1 − Φ(√Ebσ 2 ); t.j. Φ(√Ebσ 2 )= 1 − 10−46= 0.999983;Platí Φ(4.15) = .9999833763, a teda E b /σ 2 ≈ 4.15 2 = 17.22. Pravdepo<strong>do</strong>bnost’ chyby vjednom bite sa pri použití 32 bitového samoopravného kódu výrazne zvýši (lebo R = 6/32)a <strong>do</strong>siahnep ′ e = 1 − Φ( √ 17.22 ∗ 6/32) = 1 − Φ(1.79687) = 0.0361757483.Kód však má opravnú schopnost’ 7 a to znamená, že ak v prenášanom slove nevznikneviac ako 7 chýb, dekóder <strong>do</strong>káže prijaté slovo dekó<strong>do</strong>vat’ správne. Pravdepo<strong>do</strong>bnost’


168 KAPITOLA 12. PRÍNOS KÓDOVANIAvzniku aspoň 8 chýb v slove jeP ′ E = 32∑i=8( ) 32(p ′ie) i (1 − p ′ e) 32−i = 0.00001413616427,čo je podstatne lepšie ako poža<strong>do</strong>vaná hodnota 10 −4 . (Pri použití „mäkkých“ metód demoduláciea dekó<strong>do</strong>vania sa dá <strong>do</strong>siahnut’ <strong>do</strong>konca až hodnota PE ′ = 2 · 10−11 [15]).Uvedieme ešte jeden príklad. Binárny BCH (15,5) kód opravujúci tri chyby nám<strong>do</strong>bre poslúžil napríklad pri výklade metód dekó<strong>do</strong>vania BCH kó<strong>do</strong>v. Ale pomohol bynám zvýšit’ spol’ahlivost’ prenosu údajov z Marinera?Príklad. Aby sme mohli porovnat’ „kvality“ BCH (15,5) kódu s kó<strong>do</strong>m použitým nakó<strong>do</strong>vanie údajov Marinera, zachovajme úroveň spol’ahlivosti P E = 10 −4 . Pri prenosebez použitia samoopravného kódu budeme prenášat’ 5 bitové slová a pravdepo<strong>do</strong>bnost’chybného prenosu 1 bitu <strong>do</strong>siahne p e = 2 · 10 −5 = 1 − Φ(4.107479655) a pomer signál/šumbude E b /σ 2 = 16.87138910. Pri použití uvedeného binárneho (15,5) kódu sa prenosovárýchlost’ zníži na tretinu (R = 5/15). Vyjadríme pravdepo<strong>do</strong>bnosti p ′ e a PE ′ :ap ′ e = 1 − Φ(2, 37145448) = 0.0088591145P ′ E = 0.7776185512 · 10−5 .Pravdepo<strong>do</strong>bnost’ chybného dekó<strong>do</strong>vania prijatého slova bude teda pri použití binárnehoBCH (15,5) kódu 12 krát nižšia v porovnaní s pravdepo<strong>do</strong>bnost’ou chybnej interpretácieprijatej pätice (nekó<strong>do</strong>vaných) informačných bitov.Napriek optimistickým výsledkom predchádzajúcich príkla<strong>do</strong>v, oužitie samoopravnýchkó<strong>do</strong>v nemusí zaistit’ zvýšenie spol’ahlivosti komunikácie; resp. presnejšie povedané, žekaždý samoopravný kód má svoj rozsah použitia a jeho použitie mimo tohto rozsahumôže <strong>do</strong>konca znížit’ 4 spol’ahlivost’ komunikácie.Čo sa dá spravit’ v prípade, ak pomocou samoopravného kódu zvýšime spol’ahlivost’prenosu nad stanovenú hodnotu (vyjadrenú pravdepo<strong>do</strong>bnost’ou nesprávneho dekó<strong>do</strong>vaniaprijatého slova, P E )? Ak nám stanovená hranica spol’ahlivosti prenosu postačuje,môžeme znížit’ množstvo energie použité na prenos jedného bitu• znížením výkonu vysielača,• zvýšením počtu bitov prenesených za časovú jednotku.Ked’že v obidvoch prípa<strong>do</strong>ch ide o stanovenia množstva energie/signál prenášajúci 1 bit,ktoré postačuje na <strong>do</strong>siahnutie želanej hodnoty P E , stačí sa zaoberat’ prvým prípa<strong>do</strong>m. Vprípade sondy Mariner na <strong>do</strong>siahnutie poža<strong>do</strong>vanej úrovne P E = 10 −4 postačuje hodnotaSRN 14.83. Použitie samoopravného kódu v tomto prípade malo pozitívny efekt, ktorý sa<strong>do</strong>konca dá vyjadrit’ aj kvantitatívne - pomerom SRN(bez kó<strong>do</strong>vania):SRN(s kó<strong>do</strong>vaním);4 použitie samoopravného kódu možno kombinovat’ aj so zmenou iných parametrov komunikačného systému,čo môže ovplyvnit’ rozsah použitel’nosti kódu


169kód t coding gainHammingov(7, 4) 1 3.066127697Hammingov(15, 11) 1 2.824701569Hammingov(31, 26) 1 2.615760124BCH(15, 5) 3 5.750883407Golayov(23, 12) 3 5.447658460RM(2, 4)∗ 1 −2.398093804Mariner(32, 6) 7 0.6489199602Tabul’ka 12.1: Efektívnost’ vybraných samoopravných kó<strong>do</strong>vv našom prípade je hodnota pomeru 1.1611. Na <strong>do</strong>siahnutie poža<strong>do</strong>vanej spol’ahlivostiprenosu by teda bolo možné znížit’ výkon vysielača asi o 15%. „Pomer pomerov“, ktorýsme pred chvíl’ou zaviedli sa skutočne používa na meranie efektu kó<strong>do</strong>vania.Pomer SRN(nekó<strong>do</strong>vaného)/SRN(kó<strong>do</strong>vaného) prenosu pre rovnakú pravdepo<strong>do</strong>bnost’chyby dekó<strong>do</strong>vania prijatého slova 5 sa nazýva prínos kó<strong>do</strong>vania (coding gain) .Prínos kó<strong>do</strong>vania sa vyjadruje v decibeloch (dB) a vypočítava sa ako desat’násobokhodnoty dekadického logaritmu z pomeru SRN(nekó<strong>do</strong>vaného)/SRN(kó<strong>do</strong>vaného). V prípadekó<strong>do</strong>bania prenosu Marinera je prínos kó<strong>do</strong>vania 0.65 dB. Pre BCH (15, 5) kód jeprínos kó<strong>do</strong>vania ešte väčší (5.75 dB. V tabul’ke 12.1 sú pre porovnanie uvedené niektorézo samoopravných kó<strong>do</strong>v, ktorými sme sa <strong>do</strong>teraz zaoberali a hodnoty code gain preP E = 10 − 4. Pri Reed Mullerovém kóde je minimálna vzdialenost’ 4, ale opravná schopnost’kódu je len 1.Na záver tejto kapitoly ešte pripomenieme, že to, že prínos kó<strong>do</strong>vania je kladný 6 nemusísamo o sebe byt’ <strong>do</strong>statočným dôvo<strong>do</strong>m na použitie samoopravného kódu. Samoopravnékódy si o.i. vyžadujú (softvérovo alebo hardvérovo realizovaný)kóder a dekóder, čo sa prejavujetak na cene komunikačného systému, ako aj na čase spracovania správ. Ten istýefekt, ako zavedenie samoopravných kó<strong>do</strong>v môžeme <strong>do</strong>siahnut’ použitím iného komunikačnéhokanála alebo iných signálov, ktoré sú o<strong>do</strong>lnejšie voči šumu. Pri hl’adaní optimálnehoriešenia na zaistenie poža<strong>do</strong>vanej úrovne spol’ahlivosti komunikácie je potrebnézvažovat’ tak technické možnosti a ohraničenia, ako aj možnosti samoopravných kó<strong>do</strong>v.5 ak nebolo použité kó<strong>do</strong>vanie, tak chyba dekó<strong>do</strong>vania znamená, že nastala chyba v l’ubovol’nom biteprenášaného slova6 SRN(nekó<strong>do</strong>vaného)>SRN(kó<strong>do</strong>vaného) prenosu


170 KAPITOLA 12. PRÍNOS KÓDOVANIA


Kapitola 13Shannonova teorémaSamoopravné kódy umožňujú zvýšit’ pravdepo<strong>do</strong>bnost’ správneho dekó<strong>do</strong>vania prijatejinformácie. Cena, ktorú za to treba zaplatit’, je <strong>do</strong>plnenie informačných symbolov okontrolné. V malých kó<strong>do</strong>ch, ktoré sme konštruovali v predchádzajúcich kapitolách bolpodiel kontrolných symbolov na celkovej dĺžke slova pomerne značný. Zdalo by sa, žeopravná schopnost’ a rýchlost’ prenosu sú v nepriamej úmere; t.j. že podiel počtu informačnýchsymbolov na celkovej dĺžke kó<strong>do</strong>vého slova sa bude nutne zmenšovat’ sovzrastajúcou minimálnou vzdialenost’ou kódu. Prekvapujúci výsle<strong>do</strong>k prináša klasickáShannonova veta. Ukazuje sa, že pre mnohé prenosové kanály je možné• prenášat’ informáciu rýchlost’ou blízkou prenosovej rýchlosti kanála;• pravdepo<strong>do</strong>bnost’ chybného dekó<strong>do</strong>vania prijatej informácie možno stlačit’ pod l’ubovol’nemalú, <strong>do</strong>predu zadanú hodnotu.V tejto časti vyslovíme a <strong>do</strong>kážeme Shannonovu vetu. Najprv uvedieme a vysvetlímepredpoklady Shannonovej vety a pripomenieme pojmy, ktoré budeme pri jej dôkaze potrebovat’.Budeme predpokladat’, že prenosový kanál, ktorý sa používa na prenos správ (kó<strong>do</strong>vanejinformácie) je binárny symetrický kanál bez pamäte; t.j. na kó<strong>do</strong>vanie správ sapoužíva binárna abeceda a prenosy jednotlivých binárnych symbolov sa uskutočňujú snasledujúcimi pravdepo<strong>do</strong>bnost’ami:p : 0 → 0, 1 → 11 − p = q : 0 → 1, 1 → 0Budeme pracovat’ s kó<strong>do</strong>m C = {x 1 , . . . , x M }, ktorý má M kó<strong>do</strong>vých slov dĺžky n. Predpokladáme,že kó<strong>do</strong>vé slová kódu C sa na výstupe zdroja informácie vyskytujú rovnakočasto; t.j., že∀x i ∈ C; P(x i ) = 1/M.Predpokladajme, že bolo odvysielané kó<strong>do</strong>vé slovo x i a prijaté slovo y. Prijaté slovo y sadekóduje ako kó<strong>do</strong>vé slovo x j také, žeP(y|x j ) = maxx k ∈C {P(y|x k)}.171


172 KAPITOLA 13. SHANNONOVA TEORÉMAPrijaté slovo sa teda dekóduje na základe maximálnej pravdepo<strong>do</strong>bnosti; ak vzniknechyba malej váhy, prijaté slovo sa dekóduje správne, ak vznikne chyba väčšej váhy,ako je opravná schopnost’ použitého kódu, prijaté slovo sa dekóduje nesprávne. Odhadnemepravdepo<strong>do</strong>bnost’ nesprávneho dekó<strong>do</strong>vania prijatého slova. Pravdepo<strong>do</strong>bnost’ nesprávnehodekó<strong>do</strong>vania odvysielaného (a šumom pri prenose modifikovaného kó<strong>do</strong>véhoslova) x i označíme symbolom P i . Pravdepo<strong>do</strong>bnost’ nesprávneho dekó<strong>do</strong>vania prijatéhoslova pri použití kódu C jeP C = 1 M∑P i .MUvažujme teraz množinu C, množinu všetkých binárnych kó<strong>do</strong>v, ktoré majú M slov dĺžkyn a zavedieme:P ∗ (M, n, q) = minC∈C {P C}.Pre konkrétny kód C je dĺžka kódu nemenná. V Shannonovej knštrukcii budeme potrebovat’parameter n menit’. Predpokladáme, že v závislosti od n sa bude menit’ aj početkó<strong>do</strong>vých slov; t.j., M = M(n). Kvôli stručnosti budeme namiesto M(n) písat’ len M n ;i=1P ∗ (M n , n, q) = minC∈C {P C}.Pripomenieme ešte, že Hammingova vzdialenost’ dvoch vektorov u, v, ktorú označujemesymbolom d(u, v) je daná počtom zločiek, v ktorých sa oba vektory líšia. Gul’ou so stre<strong>do</strong>mv bode (vektore) x a polomerom r označíme množinu vektorovB r (x) = {y ∈ {0, 1} n ;d(x, y) ≤ r}.Napokon, rýchlost’ prenosu R kódu C definujeme ako podiel |C|/2 n .Veta 13.0.2 (Shannonova teoréma). Nech je prenosová rýchlost’ kódu 0 ≤ R ≤ 1 + p lg p +q lg q a mohutnost’ kódu M = 2 ⌊R·n⌋ , potompre n → ∞.P ∗ (M n , n, q) → 0Dôkaz.(Pravdepo<strong>do</strong>bnost’ toho, že v kó<strong>do</strong>vom slove x i vznikne pri prenose k chýb, jen)k · p n−k (1 − p) k . Táto hodnota závisí len od parametrov p, n a nezávisí od toho, akéslovo bolo odvysielané. Zavedieme náhodnú premennú ξ p,n , vyjadrujúcu počty chýb vodvysielaných slovách;( nP(ξ p,n = k) = · pk)n−k (1 − p) k .Je zrejmé, že náhodná premenná ξ p,n má binomické rozdelenie pravdepo<strong>do</strong>bností sostrednou hodnotou E(ξ p,n ) = nq a disperziou Var(ξ p,n ) = npq. Pre l’ubovol’nú náhodnúpremennú ζ so strednou hodnotou E(ζ), disperziou Var(ζ) a l’ubovol’né reálne čísloα > 0 platí (Čebyševova nerovnost’)P(|ζ − E(ζ)| > α) < Var(ζ)α 2 .


173Položíme v Čebyševovej nerovnosti α = √ 2npq/ε, ζ = ξ p,n a upravíme:P(|ξ p,n − nq| > √ 2npq/ε) nq + √ 2npq/ε) < ε 2 .Všimneme si, že ak n → ∞, 0 < p, q < 1 a ε > 0 sú konštanty,ξ p,n = nq + O( √ (n)),t.j. dá sa očakávat’, že v prenášanom slove vznikne asi nq chýb. Položímet = ⌊nq + √ 2npq/ε⌋a zistíme, aká je pravdepo<strong>do</strong>bnost’ toho, že pri prenose vznikne v slove viac chýb ako t.Zavedieme dve funkcie. Prvá je indikátor, ktorý pre dvojicu vektorov u, v určí, či súvo vzdialenosti ≤ t alebo nie:{0 d(u, v) > tf(u, v) =1 d(u, v) ≤ tPre l’ubovol’né kó<strong>do</strong>vé slovo x i ∈ C a l’ubovol’ný binárny vektorzavedieme nasledujúcu funkciu:dĺžky n, y ∈ {0, 1}ng i (y) = 1 − f(y, x i ) + ∑ j≠if(y, x j ).Posledná funkcia si zaslúži podrobnejšie vysvetlenie: ak je x i odvysielané a y prijatéslovo, tak môžu nastat’ tri možnosti:1. x i je jediné kó<strong>do</strong>vé slovo také, že d(x i , y) ≤ t. Potom f(x i , y) = 1, ale ∀j ≠i f(x j , y) = 0. To znamená, že v tomto prípadeg i (y) = 1 − 1 + 0 = 02. d(x i , y) ≤ t a existuje ešte aspoň jedno kó<strong>do</strong>vé slovo x j ; j ≠ i také, že d(x j , y) ≤ t.Potomg i (y) = 1 − 1 + 1 + ∑ f(y, x k ) = 1 + ∑ f(y, x k ).k≠i,jk≠i,jSuma ∑ k≠i,j f(y, x k) je nezáporná, a teda v tomto prípadeg i (y) ≥ 1.


174 KAPITOLA 13. SHANNONOVA TEORÉMA3. d(x i , y) > t; t.j. f(x i , y) = 0 ag i (y) = 1 − 0 + ∑ f(y, x j ) = 1 + ∑ f(y, x j ).j≠ij≠iSuma ∑ j≠i f(y, x j) je nezáporná, a teda aj v tomto prípade g i (y) ≥ 1.Funkcia g i (y) teda na<strong>do</strong>búda hodnotu 0 v prípade, ak prijaté slovo y leží vo vzdialenostimenšej alebo rovnej t od kó<strong>do</strong>vého slova x i a leží vo vzdialenosti väčšej ako t od ostatnýchkó<strong>do</strong>vých slov. V opačnom prípade na<strong>do</strong>búda hodnotu väčšiu alebo rovnú jednej.Pristúpime teraz k dôkazu Shannonovej vety. Vyberieme kó<strong>do</strong>vé slová kódu C náhodnea nezávisle na sebe:C = {x 1 , . . . , x M }.Predpokladáme, že sme odvysielali kó<strong>do</strong>vé slovo x i a prijali slovo y. Prijaté slovo dekódujemenasle<strong>do</strong>vne:• Ak existuje jediné kó<strong>do</strong>vé slovo x j také, že d(x j , y) ≤ t dekódujeme prijaté slovo akox j . Ak i = j, dekó<strong>do</strong>vali sme správne, v opačnom prípade sme sa <strong>do</strong>pustili chybydekó<strong>do</strong>vania.• Ak existuje niekol’ko kó<strong>do</strong>vých slov ležiacich vo vzdialenosti ≤ t od prijatého slovay; resp neexistuje žiadne kó<strong>do</strong>vé slovo, ktoré by ležalo vo vzdialenosti ≤ t odprijatého slova y 1 ) vyhlásime chybu.Aká je pravdepo<strong>do</strong>bnost’ chybného dekó<strong>do</strong>vania?P i≤==∑P(y|x i ) · g i (y) =y∈{0,1} n ⎡⎤∑P(y|x i ) · ⎣1 − f(y, x i ) + ∑ f(y, x j ) ⎦ =y∈{0,1} n j≠i∑P(y|x i ) · [1 − f(y, x i )] +∑P(y|x i ) · f(y, x j )y∈{0,1} n j≠iPrvá suma z výrazu *** sa dá zapísat’ takto∑y∈{0,1} n ∑y∈{0,1} n P(y|x i ) · [d(x i , y) > t] = P(d(x i , y) > t).Posledný výraz vyjadruje pravdepo<strong>do</strong>bnost’ toho, že prijaté slovo nepatrí <strong>do</strong> gule B t (x i )a dá sa odhadnút’ zhora nasle<strong>do</strong>vneP(d(x i , y) > t) < 1 2 ε,1 kód C sme vytvárali náhodne


175pretože to, že d(x i , y) > t znamená, že pri prenose (slova x i ) vznikla chyba váhy väčšejako t. Spočítame pravdepo<strong>do</strong>bnost’ nesprávneho dekó<strong>do</strong>vania prijatého slova, ak boloodvysielané niektoré kó<strong>do</strong>vé slovo.P C = 1 M ·M∑P i ≤ 1 2 ε + 1 Mi=1M∑∑ ∑i=1 y∈{0,1} n j≠iP(y|x i ) · f(y, x j )Hlavná myšlienka dôkazu spočíva v tom, žeP ∗ (M n , n, q) ≤ E(P C ),t.j. minimálnu hodnotu chyby dekó<strong>do</strong>vania možno odhadnút’ zhora strednou hodnotouchyby dekó<strong>do</strong>vania, ktorú berieme cez všetky možné kódy C:⎡⎤P ∗ (M n , n, q) ≤ E ⎣ 1 2 ε + 1 M∑ ∑P(y|x i ) · f(y, x j ) ⎦ .M∑i=1 y∈{0,1} n j≠iUpravíme *** pomocou nasledujúcich pravidiel pre strednú hodnotu:• pre l’ubovol’nú konštantu c, E(c) = c;• pre l’ubovol’né dve náhodné premenné ϕ, ψ, E(ϕ + ψ) = E(ϕ) + E(ψ).DostávameP ∗ (M n , n, q) ≤ 1 2 ε + 1 M∑M∑∑i=1 y∈{0,1} n j≠iE [P(y|x i ) · f(y, x j )] .Zmeníme poradie sumácie tak, aby sme najprv počítali sumu vzhl’a<strong>do</strong>m na y ∈ {0, 1} n :P ∗ (M n , n, q) ≤ 1 2 ε + 1 MM∑ ∑ ∑i=1 j≠iy∈{0,1} n E [P(y|x i ) · f(y, x j )] .Vnútornú sumurozdelíme na dve časti∑y∈{0,1} n E [P(y|x i ) · f(y, x j )] =∑y∈{0,1} n E [P(y|x i ) · f(y, x j )]∑y∈{0,1} n ∩B t (x j )E [P(y|x i ) · f(y, x j )]+∑y∉{0,1} n ∩B t (x j )Ked’že f(y, x j ) = 0 pre y ∉ {0, 1} n ∩ B t (x j ), a f(y, x j ) = 1 pre y ∈ {0, 1} n ∩ B t (x j )∑∑E [P(y|x i ) · f(y, x j )] =E [P(y|x i )] .y∈{0,1} n y∈{0,1} n ∩B t (x j )Podmienenú pravdepo<strong>do</strong>bnost’ P(y|x i ) vyjadríme nasle<strong>do</strong>vne:P(y|x i ) = P(y, x i)P(x i ) .E [P(y|x i ) · f(y, x j )]


176 KAPITOLA 13. SHANNONOVA TEORÉMAAle P(x i ) = 1/M, a teda∑Dosadíme *** <strong>do</strong> vzt’ahu ***:y∈{0,1} n E [P(y|x i ) · f(y, x j )] = M ·∑y∈{0,1} n ∩B t (x j )E(P(y, x i )).P ∗ (M n , n, q) ≤ 1 M 2 ε + ∑ ∑i=1a upravíme trojitú sumu. Postupne <strong>do</strong>stávameM∑(M − 1)∑i=1 y∈{0,1} n ∩B t (x j ) j≠i∑y∈{0,1} n ∩B t (x j ) i=1(M − 1)∑j≠i y∈{0,1} n ∩B t (x j )∑M∑E(P(y, x i )) = (M − 1)M∑E(P(y, x i )) = (M − 1)∑y∈{0,1} n ∩B t (x j )E(2 −n ) = (M − 1) · |B t|2 n .E(P(y, x i ))∑i=1 y∈{0,1} n ∩B t (x j )∑y∈{0,1} n ∩B t (x j )E(P(y, x i )) =E(P(y)) =Pre pravdepo<strong>do</strong>bnost’ P ∗ (M n , n, q) sme zatial’ odvodili nasledujúci horný odhadP ∗ (M n , n, q) ≤ 1 2 ε + (M − 1) · |B t|2 n .Upravíme *** (najprv logaritmujeme, potom vydelíme n):P ∗ (M n , n, q) − 1 2 ε ≤ (M − 1) · |B t|2 nlg(P ∗ (M n , n, q) − 1 2 ε) ≤ lg(M − 1) + lg(|B t|) − nlg(P ∗ (M n , n, q) − 1 2 ε)n≤ lg M n + lg(|B t|)n− 1Ostáva odhadnút’ výraz lg |B t|n. Odhadneme najprv mohutnost’ gule s polomerom t (vbinárnom vektorovom priestore dimenzie n) zhora (pripomíname, že t < n/2)|B t | =t∑( nk)k=0( n≤ t ≤t)1 2 n · n!t!(n − t)! < 1 2 n ·Teraz na základe *** zostrojíme horný odhad pre lg |B t|lg |B t |nn nt t (n − t) n−t = 1 2 n 1) t ( )1 −t (n−t).n :( tn≤1 [lg 1 n 2 n − t lg t (n − (n − t) lg 1 − t )]=n= − 1 n + lg nn − t n lg t (1n − − t ) (lg 1 − t )n nn


177Pripomíname, že t = ⌊nq + √ 2npq/ε⌋. Odhadneme výrazy t n lg t n a ( 1 − t n)lg(1 −tn):tn = ⌊nq + √ 2npq/ε⌋ntn lg t [n = q + O( 1 √n)]lgPo<strong>do</strong>bne odhadneme výraz ( 1 − n) t ( )lg 1 −tn)(1 − t ) (lg 1 − t n n= nq + √ 2npq/ε + O(1)n[ ( )] 1q + O √n = q lg q + O( ) 1= p lg p + O √n .( ) 1= q + O √n( ) 1 √n .Pripomenieme ešte, že prenosová rýchlost’ kódu je 0 ≤ R ≤ 1 + p lg p + q lg q a mohutnost’kódu je M = 2 ⌊R·n⌋ , t.j. existuje kladná konštanta β > 0 taká, že R = 1+p lg p+q lg q−β.Potomlg M nn=lg 2⌊n(1+plg p+q lg q−β)⌋n=⌊n(1 + p lg p + q lg q − β)⌋n≤ (1 + p lg p + q lg q − β)Teraz <strong>do</strong>sadíme odhady *** <strong>do</strong> ***lg(P ∗ (M n , n, q) − 1 2 ε)n≤ (1 + p lg p + q lg q − β) −≤ lg M [( )]n1n − 1 + p lg p + q lg q + O √n ≤[( )] ( )111 + p lg p + q lg q + O √n = −β + O √n .Nakoniec odhadneme zhora samotnú pravdepo<strong>do</strong>bnost’ P ∗ (M n , n, q):lg(P ∗ (M n , n, q) − 1 2 ε) ≤ −βn + O (√ n ) = −β ′ nP ∗ (M n , n, q) ≤ 1 2 ε + 2−β′n .kde β ′ > 0 je konštanta. Veta je <strong>do</strong>kázaná.


178 KAPITOLA 13. SHANNONOVA TEORÉMA


Kapitola 14Hranice parametrovsamoopravných kó<strong>do</strong>vPozrieme sa najmä na <strong>do</strong>lné odhady minimálnej vzdialenosti kó<strong>do</strong>v.179


180 KAPITOLA 14. HRANICE PARAMETROV SAMOOPRAVNÝCH KÓDOV


Čast’ IIIMatematické základy teóriekó<strong>do</strong>vania181


183Konštrukcia kó<strong>do</strong>v, skúmanie ich vlastností a návrh efektívnych metód kó<strong>do</strong>vaniaa dekó<strong>do</strong>vania si vyžadujú pomerne rozsiahle ve<strong>do</strong>mosti z matematiky, informatiky aniektorých technických vied. Predpokladáme, že čitatel’ absolvoval základné kurzy zmatematiky (najmä z algebry a lineárnej algebry) a má aspoň základné poznatky zteórie pravdepo<strong>do</strong>bnosti. V tejto časti uvedieme prehl’ad tých poznatkov z matematiky,ktoré čitatel’ potrebuje na štúdium našej knihy. Prehl’ad matematiky má slúžit’ na rýchlepripomenutie si zabudnutých poznatkov, prípadne <strong>do</strong>plnenie chýbajúcich fragmentovznalostí, ale v žiadnom prípade nemá ambíciu nahradit’ systematický výklad uvedenejproblematiky ako je napríklad [8, 9]. Čitatel’ovi, ktorý má záujem o hlbšie štúdium problematikyuvedenje v tejto kapitole, resp. objavil vo svojich ve<strong>do</strong>mostiach hlbšie medzery,odporučíme práce, v ktorých nájde potrebné informácie spracované v <strong>do</strong>stupnej forme.


184


Kapitola 15AlgebraKonštrukcie viacerých kó<strong>do</strong>v vychádzajú z takých algebraických štruktúr, ako sú grupy,vektorové priestory, konečné polia, konečné geometrie a iné. Zavedieme tieto algebraickéštrukúry a popíšeme ich najdôležitejšie vlastnosti.Budeme predpokladat’, že čitatel’ovi sú známe pojmy množiny, podmnožiny, usporiadanejdvojice, kartézskeho súčinu množín, relácie a zobrazenia, pozri napr. ??.15.1 GrupyNech je M nejaká množina. Zobrazenie f : M × M → M budeme nazývat’ binárnouoperáciou na množine M. Často budeme pracovat’ s nejakými podmnožinami základnejmnožiny a vtedy môže dôjst’ k prípadu, ked’ výsle<strong>do</strong>k operácie nad prvkami z podmnožinyuž nebude prvkom danej podmnožiny. Ak pre l’ubovol’né dva prvky x, y ∈ M ′ a binárnuoperáciu f platí f(x, y) ∈ M ′ , budeme hovorit’, že množina M ′ je uzavretá vzhl’a<strong>do</strong>mna binárnu operáciu f. Algebraickou štruktúrou alebo algebraickým systémom budemenazývat’ množinu M s jednou alebo viacerými operáciami na M.V d’alšom nebudeme skúmat’ nejaké abstraktné binárne operácie, ale takmer výlučnesa budeme zaoberat’ aditívnymi a multiplikatívnymi operáciami. Preto budeme namiestozápisu f(x, y) používat’ pre binárnu operáciu tradičné označenie x ◦ y, kde ◦ označujeoperátor "+"v prípade aditívnej operácie a "*"v prípade multiplikatívnej operácie.Príklad. Symbolmi N, Z, Q, R budeme (aj v d’alších častiach knihy, ak nebude povedanéinak) označovat’ množiny prirodzených, celých, racionálnych a reálnych čísel. Pripomíname,že nula (0) je prirodzené číslo. Na množine R definujeme štandardným spôsobomoperácie sčítania ("+"), odčítania ("), násobenia ("*") a na množine R − {0} aj operáciudelenia ("/"). Potom1. množiny N, Z, Q, R sú uzavreté vzhl’a<strong>do</strong>m na operácie + a *;2. množiny Z, Q, R sú uzavreté vzhl’a<strong>do</strong>m na operáciu -;3. množiny Q − {0}, R − {0} sú uzavreté vzhl’a<strong>do</strong>m na operáciu /.185


186 KAPITOLA 15. ALGEBRAOperácia ◦ na množine M sa nazýva• asociatívnou, ak pre l’ubovol’né prvky a, b, c ∈ M platí:a ◦ (b ◦ c) = (a ◦ b) ◦ c• komutatívnou, ak pre l’ubovol’né prvky a, b ∈ M platí:a ◦ b = b ◦ a.Množina M s operáciou ◦ (v d’alšom budeme takúto algebraickú štruktúru označovat’(M, ◦)) sa nazýva pologrupou, ak je M uzavretá vzhl’a<strong>do</strong>m na operáciu ◦ a operácia ◦ je(na M) asociatívna.Prvok u ∈ (M, ◦) nazýva neutrálnym prvkom množiny M vzhl’a<strong>do</strong>m na operáciu ◦,ak pre l’ubovol’ný prvok a ∈ M platí a ◦ u = u ◦ a = a. Pologrupa (M, ◦) s neutrálnymprvkom u sa nazýva monoi<strong>do</strong>m.Nech je a l’ubovol’ný prvok monoidu (M, ◦), potom prvok b ∈ (M, ◦), pre ktorý platía ◦ b = b ◦ a = u,sa nazýva opačným alebo inverzným prvkom prvku a 1Príklad. Uvažujme množinu Q racionálnych čísel s operáciami sčítania a násobenia.Neutrálnym prvkom pre operáciu sčítania je číslo 0, pre operáciu násobenia je neutrálnymprvkom číslo 1. Pre l’ubovol’né racionálne číslo a existuje opačné číslo −a ∈ Q. Aka ≠ 0, tak pre a existuje inverzné číslo 1/a.Ďalší pojem je natol’ko dôležitý, že si zasluhuje explicitnú definíciu.Definícia 15.1.1. Množina G s operáciou ◦, ktorá spĺňa nasledujúce podmienky1. G je uzavretá vzhl’a<strong>do</strong>m na operáciu ◦,2. operácia ◦ je asociatívna,3. G obsahuje neutrálny prvok vzhl’a<strong>do</strong>m na operáciu ◦,4. ku každému prvku množiny G existuje opačný prvok vzhl’a<strong>do</strong>m na operáciu ◦sa nazýva grupou.1 pojem opačný prvok sa zvykle používat’ v súvislosti s aditívnou operáciou a pojem inverzný prvok zasav súvislosti s multiplikatívnou operáciou.


15.1. GRUPY 187Poznámka. Je zrejmé, že pologrupa, v ktorej ku každému prvku existuje opačný prvok,je grupou.Ak je operácia ◦ grupy (G, ◦) komutatívna, grupa (G, ◦) sa nazýva komutatívnou aleboabelovskou grupou.Príklad. (Komutatívnymi) grupami sú napríklad nasledujúce algebraické štruktúry:(Z, +), (Q, +), (R, +), (Q − {0}, ∗), (R − {0}, ∗). Uvedieme ešte jednu, menej obvyklú grupu.Množina Z 3 = {0, 1, 2} s operáciou modulárneho sčítania ⊕ definovaného nasledujúcoutabul’kou je komutatívna grupa:⊕ 0 1 20 0 1 21 1 2 02 2 0 1Grupa, ktorá má konečný počet prvkov, sa nazýva konečnou grupou. Počet prvkovkonečnej grupy G budeme označovat’ symbolom |G| a nazývat’ rá<strong>do</strong>m grupy. V grupemôže existovat’ podmnožina prvkov, ktoré spolu s operáciou defiinovanou na nadmnožinetvoria grupu. Takáto podmnožina s operáciou prevzatou s grupy (nadmnožiny) sa budenazývat’ podgrupou. Zrejme najmenšou podgrupou grupy je jednoprvková množina obsahujúcaneutrálny prvok grupy. Definujeme teraz pojem podgrupy exaktne.Nech je (G, ◦) grupa. Podmnožina G 1 ⊂ G, taká, že G 1 , ◦ je grupa, sa nazýva podgrupougrupy G. Podgrupu možno charakterizovat’ aj nasledujúcim spôsobom (predpokladajme,že operácia ◦ je aditívna):Veta 15.1.1. Podmnožina G 1 grupy (G, +) s operáciou + je podgrupou (grupy G) právevtedy, ak pre l’ubovol’né prvky a, b ∈ G 1 platí a − b ∈ G 1 .Dôkaz. Ak je (G 1 , +) podgrupou, tak spĺňa všetky štyri axiómy grupy. To znamená. žepre l’ubovol’ný prvok b ∈ G 1 je aj −b ∈ G 1 ; a pre l’ubovol’né dva prvky z G 1 je prvkom G 1aj ich súčet.Nech na druhej strane platí, že ak a, b ∈ G 1 tak potom aj a − b ∈ G 1 . Zoberiemel’ubovol’ný prvok a ∈ G 1 , podl’a predpokladu je aj a−a = 0 prvkom G 1 . To však znamená,že pre l’ubovol’ný prvok c ∈ G 1 je aj k nemu opačný prvok c = 0 − c ∈ G 1 ; resp. prel’ubovol’né prvky a, b ∈ G 1 je aj a + b = a − (−b) ∈ G 1 . To znamená, že G 1 je uzavretávzhl’a<strong>do</strong>m na asociatívnu operáciu +, obsahuje neutrálny prvok a ku každému prvkuobsahuje opačný prvok. T.j. (G 1 , +) je grupa.Poznámka. Tvrdenie predchádzajúcej vety možno zovšeobecnit’ nasle<strong>do</strong>vne: PodmnožinaG 1 grupy (G, ◦) s operáciou ◦ je podgrupou (grupy G) práve vtedy, ak pre l’ubovol’néprvky a, b ∈ G 1 platí a ◦ b ′ ∈ G 1 , kde b ′ je opačný/inverzný prvok k prvku b.Príklad. 1. Uvažujme množinu Z 6 = {0, 1, 2, 3, 4, 5} s operáciou + definovanou nasle-


188 KAPITOLA 15. ALGEBRA<strong>do</strong>vne:+ 0 1 2 3 4 50 0 1 2 3 4 51 1 2 3 4 5 02 2 3 4 5 0 13 3 4 5 0 1 24 4 5 0 1 2 35 5 0 1 2 3 4Je zrejmé, že (Z 6 , +) je grupa. Jej podgrupami sú nasledujúce množiny {0}, {0, 3}, {0, 2, 4}s operáciou +.2. Nech je m l’ubovol’né celé číslo. Dá sa l’ahko ukázat’, že množnina mZ = {0, m, −m,2m, −2m, . . . } všetkých celočíselných násobkov čísla m tvorí s operáciou + aditívnu grupu,ktorá je podgrupou aditívnej grupy celých čísel (Z, +). (Stačí <strong>do</strong>kázat’, že rozdiel l’ubovol’-ných dvoch celočíselných násobkov čísla m je opät’ celočíselným násobkom čísla m.)Uvažujme teraz grupu (G, ∗) s multiplikatívnou operáciou, nech je a ∈ G l’ubovol’nýprvok, a m ∈ N. Definujeme mocniny prvku a nasle<strong>do</strong>vne:1. a 0 = 1, kde 1 je neutrálny prvok grupy G vzhl’a<strong>do</strong>m na multiplikatívnu operáciu,2. a m+1 = a m ∗ a = a} ∗ a ∗ {{· · · ∗ a},m+13. a −m = (a −1 ) m = a} −1 ∗ ·{{ · · ∗ a −1} .mKvôli zjednodušeniu označenia budeme namiesto a 1 písat’ len a. Po<strong>do</strong>bnm spôsobommožno zaviest’ "mocniny"prvku a v prípade aditívnej operácie:1. a 0 = 0, kde 0 je neutrálny prvok grupy G vzhl’a<strong>do</strong>m na aditívnu operáciu,2. a m+1 = a m + a =}a + a +{{· · · + a},m+13. a −m = (−a) m = −a − a − · · · − a} {{ }mTam kde nebude potrebné odlišovat’ multiplikatívne a aditívne grupy, budeme používat’terminológiu multiplikatívnych grúp (inverzný prvok, jednotkový prvok, mocninaprvku a pod.)Definícia 15.1.2. Nech je (G, ∗) grupa s multiplikatívnou operáciou, potom sa grupa Gnazýva cyklickou grupou, ak existuje taký prvok g ∈ G, že pre l’ubovol’né a ∈ G existujeprirodzené číslo j ∈ N také, že a = g j ; t.j., že všetky prvky grupy G možno vyjadrit’ vpo<strong>do</strong>be mocnín prvku g. Prvok g sa nazýva generátorom cyklickej grupy G a cyklickágrupa generovaná prvkom a sa označuje symbolom (a).


15.1. GRUPY 189Príklad. 1. Uvažujeme množinu Z 5 = {0, 1, 2, 3, 4} s multiplikatívnou operáciou ∗ definovanoutabul’kou∗ 0 1 2 3 40 0 0 0 0 01 0 2 3 4 52 0 2 4 1 33 0 3 1 4 24 0 4 3 2 1(Z 5 , ∗) je síce len monoid, ale ak z neho odstránime problematický prvok 0, pre ktorý v(Z 5 , ∗) neexistuje inverzný prvok, <strong>do</strong>stávame multiplikatívnu grupu (Z 5 − {0}, +). Tátogrupa je cyklická a prvky 2, 3, 4 sú jej generátormi.2. Grupa (Z 6 , +) z príkladu 15.1 je cyklická. jej generátorom sú prvky 1, 5.3. Aditvna grupa celých čísel (Z, +) je cyklická, jej generátormi sú čísla 1, −1.Uvažujme konečnú grupu (G, ∗) a prvok a ∈ G. Množina mocnín {a, a 2 , . . . } je vdôsledku konečnosti G a uzavretosti G vzhl’a<strong>do</strong>m na operáciu ∗ konečná a s operáciou∗ tvorí podgrupu nazývanú podgrupou generovanou prvkom a. Pre l’ubovol’né a ∈ Gexistuje prirodzené číslo k také, že a k = 1, kde 1 je neutrálny prvok gupy G. Je zrejmé,že podgrupa generovaná prvkom a má prvky a, a 2 , . . . , a k = 1. Rá<strong>do</strong>m prvku a ∈ Gbudeme nazývat’ rád podgrupy generovanej prvkom a. Množinu mocnín a, a 2 , . . . , a k = 1budeme nazývat’ cyklom.Budeme skúmat’ niektoré vzt’ahy medzi grupami a ich pologrupami. Na to potrebujemezaviest’ pojem rozkladu alebo faktorizácie grupy.Nech je M l’ubovol’ná množina. Potom M = {M 1 , . . . M i ⊆ M} systém podmožínmnožiny M sa nazýva rozkla<strong>do</strong>m množiny M, ak spĺňa nasledujúce tri podmienky:1. ∀i M i ≠ ∅,2. ⋃ i M i = M,3. M i⋂Mj = ∅; i ≠ j.Prvky systému M budeme nazývat’ triedami rozkladu.Existujú zvláštne relácie na množine, ktoré definujú rozklady tejto množiny.Nech je M l’ubovol’ná množina. Potom relácia R ⊆ M × M na množine M nazývareláciou ekvivalencie (ekvivalenciou) , ak1. pre l’ubovol’né x ∈ M, (x, x) ∈ R (reflexívnost’),2. pre l’ubovol’né x, y ∈ M platí, ak (x, y) ∈ R, tak potom aj (y, x) ∈ R (symetria),3. pre l’ubovol’né x, y, z ∈ M platí, ak (x, y) ∈ R a (y, z) ∈ R tak potom aj (x, z) ∈ R(tranzitívnost’).


190 KAPITOLA 15. ALGEBRAPoznámka. Relácia ekvivalencie sa zvykne označovat’ symbolom ∼ alebo ≡. Namiesto≡ (x, y) budeme písat’ x ≡ y.Príkla<strong>do</strong>m ekvivalencie je rovnost’. Relácia ekvivalencie určuje rozklad množiny.Triedy rozkladu množiny M určené reláciou ekvivalencie ≡ na množine M sa nazývajútriedami ekvivalencie a sú definované nasle<strong>do</strong>vne:[a] = {x ∈ M; x ≡ a};t.j. jednu triedu rozkladu/ekvivalencie tvoria všetky tie prvky množiny M, ktoré súnavzájom ekvivalentné. Trieda rozkladu je jednoznačne určená l’ubovol’ným svojím prvkom,a preto sa z každej triedy rozkladu vyberie nejaký prvok, ktorý reprezentuje danútriedu, nazývaný reprezentantom alebo predstavitel’om triedy.Príklad. Nech je m ∈ N prirodzené číslo, m > 1. Relácia ≡ definovaná na množinecelých čísel nasledujúcim spôsoboma ≡ b ⇔ m|(a − b)je ekvivalencia. Rozklad množiny celých čísel definovaný touto ekvivalenciou pozostávaz tried [0], ...[m − 1]. Prvkami triedy ekvivalencie [t] sú všetky celé čísla, ktoré majúrovnaký zvyšok po delení číslom m ako reprezentant triedy. Túto ekvivalenciu budemeešte potrebovat’, a preto pre ňu zavedieme špeciálne označenie; to že pre celé čísla a, bplatí m|(a − b), budeme označovat’ nasle<strong>do</strong>vnea ≡ b mod m.Uvažujme grupu (G, ∗) a nejakú jej podgrupu (H, ∗); H = {h 1 . . . h k }. Zostrojíme terazrozklad grupy G nasledujúcim spôsobom:1. prvou trie<strong>do</strong>u rozkladu je podgrupa H; reprezentantom tejto triedy rozkladu je prvok1;2. predpokladáme, že sme zostrojili i−1 tried rozkladu; ak existuje prvok a i ∈ G, torýnepatrí <strong>do</strong> žiadnej z prvých i − 1 tried rozkladu, vyberieme ho ako reprezentantai-tej triedy, ktorú zostrojíme nasledujúcim spôsobom:[a i ] = a i ∗ h 1 , . . . , a i ∗ h k3. krok (2) opakujeme <strong>do</strong>vtedy, kým budú existovat’ prvky množiny G, ktoré nepatria<strong>do</strong> žiadnej triedy rozkladu.Je zrejmé, že triedy [a i ] sú neprázdne a že každý prvok množiny G patrí <strong>do</strong> niektorejtriedy. Ukážeme ešte, že [a i ] ⋂ [a j ] = ∅ i ≠ j. Predpokladajme opak, t.j. že existuje prvokx ∈ [a i ] ⋂ [a j ]. To však znamená, že existujú prvky h r , h s ∈ H také, žex = a i ∗ h r = a j ∗ h s .Ked’že G je grupa, obsahuje prvok a −1i, inverzný k prvku a i . To znamená, žea −1i∗ (a i ∗ h r ) = (a −1i∗ a i ) ∗ h r = h r = a −1i∗ (a j ∗ h s ) = (a −1i∗ a j ) ∗ h s ;


15.1. GRUPY 191t.j. (a −1i∗ a j ) ∈ H, a teda a i ∈ a j ∗ H, z čoho vyplýva, že [a i ] = [a j ]. Systém {[a i ]} i tedanaozaj predstavuje rozklad grupy G, ktorý budeme nazývat’ rozkla<strong>do</strong>m grupy G podl’apodgrupy H. Rozklad grupy podl’a podgrupy je uvedený v nasledujúcej tabul’ke.h 1 h 2 . . . h ka 2 a 2 ∗ h 1 a 2 ∗ h 2 . . . a 2 ∗ h k. . . . . . .a i a i ∗ h 1 a i ∗ h 2 . . . a i ∗ h k. . . . . . .a m a m ∗ h 1 a m ∗ h 2 . . . a m ∗ h kPoznámka. V prípade ak multiplikatívna operácia ∗ nie je komutatívna, bude potrebnérozlišovat’ násobenie sprava a zl’ava, pretože vo všeobecnosti a ∗ H ≠ H ∗ a. Triedya∗H (H∗a) budeme nazývat’ l’avými, resp.pravými triedami rozkladu. Podgrupa H grupy(G, ∗) sa nazýva normálna, ak pre každý prvok a ∈ G platí a ∗ H = H ∗ a; t.j. ak sa pravéa l’avé triedy rozkladu grupy G podl’a H rovnajú. My budeme pracovat’ s abelovskýmigrupami, ktorých podgrupy sú normálne podgrupy.Z konštrukcie rozkladu konečnej grupy podl’a jej podgrupy vyplýva nasledujúci klasickývýsle<strong>do</strong>k.Veta 15.1.2 (Lagrange). Rád konečnej grupy je celočíselným násobkom rádu každej jejpodgrupy.Pripomíname, že rád prvku bol definovaný ako rád podgrupy, ktorú daný prvok generoval.Z Lagrangeovej vety potom vyplýva nasledujúciDôsle<strong>do</strong>k. Rád každého prvku konečnej grupy G je delitel’om rádu grupy G.Vrát’me sa ešte k systému tried, vytvorených pri rozklade grupy G podl’a normálnejpodgrupy H; ktorý budeme označovat’ symbolom G/H;G/H = {[a i ] = a i ∗ H} i .Definujeme na systéme G/H binárnu operáciu ∗ nasle<strong>do</strong>vne:[a i ] ∗ [a j ] = [a i ∗ a j ].Dá sa l’ahko overit’, že (G/H, ∗) tvorí grupu, ktorú budeme nazývat’ faktorovou grupou(grupy G podl’a (normálnej) podgrupy H).Príklad. Faktorizujeme grupu (Z, +) podl’a podgrupy (2Z, +), kde 2Z je množina všetkýchpárnych celých čísel. Rozklad Z/2Z bude mat’ dve triedy, 2Z, Z − 2Z, pričom trieda Z − 2Zpozostáva zo všetkých nepárnych celých čísel. Vyberme ako reprezentantov tried rozkladučísla 0, 1. Potom 2Z = [0] a Z − 2Z = [1]. Operácia sčítania na Z/H je definovanánasledujúcou tabul’kou:+ [0] [1][0] [0] [1][1] [1] [0]


192 KAPITOLA 15. ALGEBRAFaktorová grupa (Z/2Z, +) zodpovedá (až na označenie prvkov) grupe (Z 2 , ⊕), kde Z 2 ={0, 1} a ⊕ označuje sčítanie mod 2.Zovšeobecníme predchádzajúci príklad. Pre l’ubovol’né prirodzené číslo m ≥ 2 2označíme symbolom (Z m , +) faktorovú grupu (Z/mZ, +) s operáciou sčítania mod m.Kvôli zjednodušeniu zápisu budeme prvky množiny Z m označovat’ symbolmi 0, . . . , m−1.Grupy Z m budeme v d’alšom často používat’.15.2 OkruhyDoteraz sme sa zaoberali algebraickými štruktúrami s jednou binárnou operáciou. Vtejto časti zavedieme agebraické štruktúry s dvoma binárnymi operáciami - sčítaním anásobením.Definícia 15.2.1. Okruh (A, +, ·) je množina A spolu s dvoma binárnymi operáciami,označenými ako + a ·, ktorá spĺňa nasledujúce podmienky:1. A je abelovská grupa vzhl’a<strong>do</strong>m na aditívnu operáciu +,2. multiplikatívna operácia · je asociatívna, t.j. pre l’ubovol’né a, b, c ∈ A platí (a · b) ·c = a(·b · c);3. platí distributívny zákon; t.j. pre l’ubovol’né a, b, c ∈ A platí a · (b + c) = a · b + a · ca (b + c) · a = b · a + c · a.Okruh (A, +.·) budeme kvôli zjednodušeniu zápisu označovat’ symbolom A, symbolom0 budeme označovat’ neutrálny prvok vzhl’a<strong>do</strong>m na aditívnu operáciu a symbolom 1neutrálny prvok vzhl’a<strong>do</strong>m na multiplikatívnu operáciu (ak okruh taký prvok obsahuje);opačný prvok k prvku a vzhl’a<strong>do</strong>m na aditívnu operáciu budeme označovat’ symbolom−a. Namiesto a+(−b) budeme písat’ a−b a súčin a·b budeme stručnejšie zapisovat’ akoab. Dá sa l’ahko odvodit’, že pre l’ubovol’né a, b ∈ A platí a·0 = 0 a (−a)b = a(−b) = −ab.Ak ab = c, budeme hovorit’, že prvky a, b sú delitel’mi prvku c. Je zrejmé, že 1 · c = c;t.j. prvky 1 a c sú delitel’mi c. Ak sú delitele a, b, rôzne od prvkov c, 1 tak sa nazývajúvlastnými delitel’mi prvku c.Teraz zavedieme niektoré algebraické štruktúry, ktoré majú okrem vlastností okruhuaj d’alšie vlastnosti.Definícia 15.2.2. Okruh A sa nazýva1. unitárnym, ak v A existuje prvok 1, neutrálny prvok vzhl’a<strong>do</strong>m na multiplikatívnuoperáciu;2. komutatívnym okruhom, ak je operácia · komutatívna;3. oborom integrity, ak je komutatívnym unitárnym okruhom, 1 ≠ 0 a z rovnosti ab = 0vyplýva a = 0 alebo b = 0,2 Posúdenie prípa<strong>do</strong>v m ≤ 1 ponechávame na čitatel’a


15.2. OKRUHY 1934. telesom, ak je (A − {0}, ·) multiplikatívna grupa,5. pol’om, ak je komutatívnym telesom.Kl’účovým pojmom, s ktorým budeme v teórii samoopravných kó<strong>do</strong>v neustále pracovat’,je pojem (konečného) pol’a. Konečným poliam sa budeme v tejto kapitole venovat’podrobnejšie, a preto si len stručne zrekapitulujeme vlastnosti pol’a. Pole je algebraickáštruktúra s aditívnou a multiplikatívnou operáciou. Tvorí abelovskú grupu vzhl’a<strong>do</strong>mna aditívnu operáciu a jeho nenulové prvky tvoria abelovskú grupu vzhl’a<strong>do</strong>m na multiplikatívnuoperáciu. Obe operácie sú navzájom zviazané distributívnym zákonom:a(b + c) = ab + ac. Pole je aj oborom integrity, to znamená, že nemá vlastných delitel’ovnuly; resp. z toho, že ab = 0 vyplýva a −1 ab = b = 0; resp. abb −1 = a = 0.Vrátime sa ešte k pojmu okruhu. Po<strong>do</strong>bne ako sme pre grupu definovali pojem podgrupy,zavedieme pre okruh najprv pojem po<strong>do</strong>kruhu a potom definujeme po<strong>do</strong>kruhy sošpeciálnymi vlastnost’ami.Definícia 15.2.3. Podmnožina S okruhu A sa nazýva po<strong>do</strong>kruhom okruhu A, ak je uzavretávzhl’a<strong>do</strong>m na operácie + a · a tvorí vzhl’a<strong>do</strong>m na tieto operácie okruh.Pri konštrukcii polynómov budeme potrebovat’ k po<strong>do</strong>kruhu pridávat’ nové prvky.Nasledujúca veta [8] hovorí, ako to možno urobit’ tak, aby výsledná algebraická štruktúrazostala okruhom.Veta 15.2.1. Nech A je po<strong>do</strong>kruh unitárneho komutatívneho okruhu (B, +, ·) a nech 1 ∈A. Potom pre l’ubovol’ný prvok b ∈ B je najmenší po<strong>do</strong>kruh generovaný množinou A ∪ {b}okruh C, +·), kdeC = {a 0 + a 1 b + · · · + a n b n ; n ∈ N, a 0 , a 1 , . . . , a n ∈ A}.Dôkaz. Dá sa l’ahko overit’, že (C, +, ·) je okruh. Ked’že A∪{b} ⊆ B, (C, +, ·) je po<strong>do</strong>kruhokruhu (B, +, ·). Ukážeme, že (C, +, ·) je najmenší po<strong>do</strong>kruh okruhu (B, +, ·) obsahujúcimnožinu A ∪ {b}. Predpokladajme, že existuje okruh (C ′ , +, ·) taký, že A ∪ {b} ⊆ C ′ ⊂ C ⊆B. Nech d ∈ C − C ′ , potom existuje m ∈ N a prvky a i ∈ A, i = 0 . . . m také, žed = a 0 + a 1 b + · · · + a m b m .Kedže b ∈ C ′ a (C ′ , +, ·) je okruh, potom pre l’ubovol’né k ∈ N aj b k ∈ C ′ a teda aja k b k ∈ C ′ pre a k ∈ A ⊆ C ′ . To znamená, že d ∈ C ′ . Dostávame spor s predpokla<strong>do</strong>m, čo<strong>do</strong>kazuje platnost’ vety.Poznámka. Po<strong>do</strong>kruh (C, +, ·) generovaný množinou A ∪ {b} budeme označovat’ symbolom(A[b], +, ·).Definícia 15.2.4. Po<strong>do</strong>kruh J okruhu A sa nazýva ideálom ak pre každé a ∈ J a r ∈ Aplatí ar ∈ J a ra ∈ J.


194 KAPITOLA 15. ALGEBRAPríklad. Uvažujme okruh (Z, +, ·). Množina všetkých párnych čísel tvorí po<strong>do</strong>kruh(Z 2 , +, ·) okruhu Z. Ked’že súčin l’ubovol’ného celého čísla a párneho čísla je párne číslo,(Z 2 , +, ·) je ideálom okruhu Z.Pri štúdiu vlastností tzv. cyklických kó<strong>do</strong>v budeme pracovat’ s algebraickou štruktúrounazvanou okruhom hlavných ideálov.Definícia 15.2.5. Nech je A komutatívny okruh. Ideál J okruhu A sa nazýva hlavnýmideálom, ak v okruhu A existuje prvok a, ktorý je generátorom cyklickej grupy ideálu J.Ideál J sa nazýva hlavným ideálom generovaným prvkom a.Definícia 15.2.6. Komutatvny okruh A nazývame okruhom hlavných ideálov, ak je každýideál okruhu A hlavný.Grupy bolo možné faktorizovat’ podl’a ich normálnych podgrúp a vytvárat’ faktorovégrupy. Po<strong>do</strong>bne je možné faktorizovat’ okruhy. Úlohu normálnej podgrupy pri faktorizáciiokruhov zohráva ideál.Veta 15.2.2. Nech je I ideál okruhu A, +, ·); nech [a] = {a+I, a ∈ A} je trieda rozkladu A/Iaditívnej grupy (A, +) podl’a normálnej podgrupy (I, +) obsahujúca prvok (reprezentanta)a. Potom množina A/I tried rozkladu s operáciami +, · definovanými nasle<strong>do</strong>vne[a] + [b] = [a + b],[a] · [b] = [a · b],kde a, b ∈ A, tvorí okruh. Ak je okruh A komutatívny, tak je aj okruh (A/I, +, ·) komutatívny.Dôkaz. Je priamočiary; stačí overit’ platnost’ axióm okruhu pre (A/I, +, ·). Prenechámepreto túto úlohu čitatel’ovi.Poznámka. Okruh (A/I, +, ·) nazýva faktorovým okruhom okruhu A podl’a I.Príklad. Uvažujme aditívnu faktorovú grupu (Z/Z q , +) Táto grupa má q prvkov: [0], . . . [q−1]; [j] = {m ∈ Z; m mod q = j; j = 0, . . . q − 1}. Operácia násobenia prvkov faktorovejgrupy (Z/Z q , +) je asociatívnaa platí distributívny zákon∀[a], [b], [c] ∈ Z/Z q ; [a] · ([b] · [c]) = ([a] · [b]) · [c]∀[a], [b], [c] ∈ Z/Z q ; [a] · ([b] + [c]) = ([a] · [b]) + [a] · [c],([b] + [c]) · [a] = [b] · [a] + [c] · [a].To znamená, že Z/Z q s uvedenou aditívnou a multiplikatívnou operáciou tvorí faktorovýokruh (Z/Z q , +, ·).Nie všetky okruhu celých čísel sa prenášajú automaticky <strong>do</strong> faktorového okruhu(Z/Z q , +, ·). Okruh celých čísel je oborom integrity, t.j. z rovnosti a · b = 0 vyplýva,že aspoň jeden z prvkov a, b je nulový. Uvažujme teraz faktorový okruh (Z/Z 6 , +, ·). Jezrejmé, že [2][3] = [2 · 3] = [6] = [0], pričom [2] ≠ [0], [3] ≠ [0].Na záver tejto časti zavedieme ešte jeden dôležitý pojem.


15.3. POLYNÓMY A OKRUHY POLYNÓMOV 195Definícia 15.2.7. Nech je R l’ubovol’ný okruh a existuje také kladné celé číslo n, že prel’ubovol’né r ∈ R platí nr = 0. Potom najmenšie také číslo n sa nazýva charakteristikouokruhu R. O okruhu R v takom prípade hovoríme, že má kladnú charakteristiku. Akkladné celé číslo n s poža<strong>do</strong>vanými vlastnost’ami neexistuje, hovoríme, že okruh R mácharakteristiku 0.Príklad. Okruhy komplexných, reálnych, racionálnych, celých, prirodzených čísel majúcharakteristiku 0, okruh (Z/Z 6 , +, ·) má charakteristiku 6.Charakteristika okruhu nie je nezávislá od ostatných vlastností okruhu.Veta 15.2.3. Nech je R ≠ {0} obor integrity s jednotkou a kladnou charakteristikou. Potomje charakteristika R prvočíslo.Dôkaz. Ked’že R obsahuje nenulové prvky, R má charakteristiku n ≥ 2. Ak by n neboloprvočíslo, dalo by sa zapísat’ v po<strong>do</strong>be súčinu celých čísel, n = km, kde k, m ∈ Z, 1 k 2 , že k 1 e = k 2 e. Potom(k 1 − k 2 )e = 0, a teda dané pole má kladnú charakteristiku.15.3 Polynómy a okruhy polynómovĎalším dôležitým pojmom teórie samoopravných kó<strong>do</strong>v je pojem polynómu. Kó<strong>do</strong>vé slovása dajú reprezentovat’ pomocou polynómov, syndrómy chýb sa dajú vypočítat’ <strong>do</strong>sadzovanímistých hodnôt <strong>do</strong> plynómov reprezentujcich prijaté slová a pozície chýb v kó<strong>do</strong>výchslovách sa dajú určit’ pomocou koreňov polynómu nazývaného lokátorom chýb.Zavedieme preto pojem polynómu a popíšeme najdôležitejšie vlastnosti polynómov.Nech je A unitárny komutatívny okruh 3 a nech je B jeho po<strong>do</strong>kruh, obsahujúci jednotkovýprvok. Nech x ∈ A − B je l’ubovol’ný prvok. Prvky po<strong>do</strong>kruhu B[x] sa podl’a vety3 v d’alšom budeme najčastejšie predpokladat’, že A je pole


196 KAPITOLA 15. ALGEBRA15.2.1 dajú vyjadrit’ v tvarea 0 + a 1 x + a 2 x 2 · · · + a n x n ; a k ∈ B, n ∈ N; (15.1)pričom pre n > 0 predpokladáme, že a n ≠ 0. V niektorých prípa<strong>do</strong>ch by výber prvkux mohol viest’ k nejednoznačnosti vyjadrenia prvkov z okruhu B[x]. Predpokladajme, žeexistuje prvok, označme ho symbolom a(x), ktorý je možné vyjadrit’ v tvare 15.1 dvomarozličnými spôsobmia(x) = a 0 + a 1 x + a 2 x 2 · · · + a n x n = b 0 + b 1 x + b 2 x 2 · · · + b m x m .Bez ujmy na všeobecnosti budeme predpokladat’, že n ≥ m. Ukážeme, že jednoznačnost’vyjadrenia prvku a(x) je ekvivalentná jednoznačnosti vyjadrenia nulového prvku okruhuB[x] v tvare 15.1. Vypočítame rozdiel dvoch rozličných reprezentácií prvku a(x):0 = a(x) − a(x) = a 0 + a 1 x + a 2 x 2 · · · + a n x n − (b 0 + b 1 x + b 2 x 2 · · · + b m x m ) == (a 0 − b 0 ) + (a 1 − b 1 )x + (a 2 − b 2 )x 2 · · · + (a m − b m )x m + a m+1 x m+1 +· · · + a n x n . (15.2)Z rovnosti 15.2 vyplýva, že l’ubovol’ný prvok okruhu B[x] je možné vyjadrit’ jednoznačnev tvare 15.1 práve vtedy, ak rovnost’platí práve vtedy, ak0 = c 0 + c 1 x + · · · c n x nc 0 = c 1 · · · = c n = 0. (15.3)Ak totiž platí 15.3, pre vyjadrenie a(x) platí n = m a a k = b k k = 0, . . . , n. Prvokx ∈ A, pre ktorý je možné nulový prvok okruhu B[x] vyjadrit’ jednoznačne, t.j. platí15.3, sa nazýva transcendentým prvkom nad B; v opačnom prípade sa x nazýva algebraickýmprvkom nad B. Ak je prvok x transcendentný nad okruhom B, budemeokruh B[x] nazývat’ okruhom polynómov neurčitej x nad B. Prvky okruhu B[x] budemenazývat’ polynómami v neurčitej/premennej x, alebo len stručne, polynómami. Nech jea(x) ∈ B[x] polynóm, a(x) = a 0 + a 1 x + a 2 x 2 · · · + a n x n . Prvky a 0 , . . . , a n ∈ B nazývamekoeficientami a sčítance a k x k členmi polynómu. Ak n ≠ 0, číslo n nazývamestupňom polynómu, koeficient a n vedúcim koeficientom a člen a n x n vedúcim členompolynómu a(x). Stupeň polynómu f(x) budeme označovat’ symbolom deg(f(x)). Polynómf(x) = 0 nazvame nulovým polynómom a stupeň nulového polynómu definujeme akodeg(0) = −∞. Ak je vedúci člen polynómu a(x), a n = 1, polynóm a(x) nazývamenormovaným polynómom. Uvedieme ešte, že ak sú a(x), b(x) dva polynómy, a(x) =a 0 + a 1 x + · · · + a n x n ; b(x) = b 0 +b 1 x + · · · + b m x m , tak ich súčinom je polynóm a(x)b(x) =a 0 b 0 + (a 1 b 0 + a 0 b 1 )x + · · · + (a 0 b k + a 1 b k−1 + · · · + a k b 0 )x k + · · · + a n b m x m+n .Príklad. Množiny reálnych R a racionálnych Q čísel s operáciami sčítania a násobeniatvoria okruhy. Je zrejmé, že okruh racionálnych čísel je po<strong>do</strong>kruhom reálnych čísel.Vyberieme rôzne reálne čísla x a vytvoríme okruhy Q[x].1. Vyberme najprv ako neurčitú racionálne číslo; x ∈ Q. Potom však Q[x] = Q, leboa 0 + a 1 x + · · · + a n x n ∈ Q pre x, a k ∈ Q.


15.3. POLYNÓMY A OKRUHY POLYNÓMOV 1972. Položíme teraz x = √ ( √2 ) 2k2; je zrejmé, že x ∉ Q. Nakol’ko však = 2 k ∈ Q,Q[x] = {a 0 + a 1√2; a0 , a 1 ∈ Q}. Naviac, napríklad prvok 4 sa dá vyjadrit’ v tvare15.2.1 viacerými spôsobmi: 4 = 4 + 0x + 0x 2 + · · · = 2 + 0x + 1x 2 = 2x 2 = x 4 , atd’.3. Napokon, položme x = e. Prvok e je transcendentný a okruh Q[e] tvoria prvky,ktoré sa dajú jednoznačne vyjadrit’ v tvarea 0 + a 1 e + · · · + e n e n ; n ∈ N, a k ∈ Q.V d’alšom sa budeme zaoberat’ delitel’nost’ou polynómov, a preto budeme skúmat’polynómy nad nejakým pol’om F. Okruh polynómov nad pol’om F budeme označovat’symbolom F[x].Definícia 15.3.1. Nech je F[x] okruh polynómov nad pol’om F a nech sú f(x), g(x) polynómyz okruhu F[x]. Budeme hovorit’, že polynóm g(x) delí polynóm (je delitel’om polynómu)f(x), ak v okruhu F[x] existuje taký polynóm q(x), že f(x) = g(x) · q(x).Je zrejmé, že každý polynóm je delitel’ný sebou samým, resp. (vzhl’a<strong>do</strong>m na to, že Fje pole) prvkami pol’a F, ktoré predstavujú v okruhu F[x] polynómy nultého stupňa, resp.konštanty. Tieto delitele sú triviálne delitele polynómu. Ak polynóm f(x) nemá v okruhuF[x] iných delitel’ov okrem triviálnych, budeme ho nazývat’ ireducibilným polynómom vokruhu F[x]. Polynóm, ktorý nie je ireducibilný, budeme nazývat’ reducibilným polynómom.Pripomíname, že ireducibilita polynómu sa vzt’ahuje na istý okruh polynómov.Napríklad, polynóm f(x) = x 2 − 2 je ireducibilný v okruhu polynómov Q[x], ale v okruhuR[x] 4 má netriviálne delitele x − √ 2 a x + √ 2. Nech je f(x) = f 0 + f 1 x + · · · + f n x nje l’ubovol’ný polynóm okruhu F[x]. Pre l’ubovol’ný prvok a ∈ F definujeme hodnotuf(a) = f 0 + f 1 a + · · · + f n a n . Potom polynóm f(x) predstavuje zobrazenie (polynomickúfunkciu) f : F → F. Hodnotu f(a) budeme nazvat’ hodnotou polynómu f(x) pre prvok a.Dôležité sú tie prvky pol’a F, ktoré sa polynomickou funkciou zobrazujú na nulový prvokpol’a F.Definícia 15.3.2. Nech je f[x] okruh polynómov nad pol’om F a nech f(x) ∈ F[x] je polynóm.Prvok a ∈ F budeme nazývat’ koreňom polynómu f(x), ak f(a) = 0.V okruhu polynómov nemôžeme vo všeobecnosti zaviest’ delenie polynónov, ale po<strong>do</strong>bneako pre okruh celých čísel môžeme aj v okruhu polynómov F[x] zaviest’ delenie sozvyškom.Veta 15.3.1 (O delitel’nosti polynómov). Nech sú f(x), g(x) l’ubovol’né polynómy nad pol’omF a nech g(x) ≠ 0. Potom v okruhu F[x] existujú polynómy q(x), r(x) také, žef(x) = q(x)g(x) + r(x), (15.4)kde deg(r(x)) < deg(g(x)) a polynómy q(x), r(x) sú určené jednoznačne.4 stačil by aj okruh polynómov Q[ √ 2][x]


198 KAPITOLA 15. ALGEBRADôkaz.Budeme robit’ indukciou vzhl’a<strong>do</strong>m na stupeň polynómu f(x).1. Nech deg(f(x)) < deg(g(x)). Potom q(x) = 0 a r(x) = f(x).2. Predpokladajme, že tvrdenie vety platí pre deg(f(x)) ≥ deg(g(x)); deg(f(x)) < n.3. Dokážeme platnost’ tvrdenia vety pre deg(f(x)) = n, deg(f(x)) ≥ deg(g(x)). Nechf(x) = f n x n + · · · + f 1 x + f 0 ; g(x) = g m x m + · · · + g 1 x + g 0 , n > m. Odčítameod polynómu f(x) polynóm f n g −1m x n−m · g(x), kde g −1m je prvok pol’a F inverzný kvedúcemu koeficientu polynómu g(x) a <strong>do</strong>staneme polynóm f 1 (x). Tento polynómmá stupeň deg(f 1 (x)) < n, a teda podl’a indukčného predpokladu existujú taképolynómy q 1 (x), r 1 (x) nad pol’om F, žef 1 (x) = q 1 (x)g(x) + r 1 (x).Potom však možno v tvare 15.4 vyjadrit’ aj polynóm f(x):f(x) = f 1 (x) + f n g −1m x n−m · g(x) = (f n g −1m x n−m + q i (x)) · g(x) + r 1 (x);t.j. r(x) = r 1 (x) a q(x) = f n g −1m x n−m + q i (x).Predpokladajme ešte, že existujú polynómy q ′ (x) ≠ q(x) a r ′ (x) ≠ r(x), také, žePotom všakq ′ (x)g(x) + r ′ (x) = f(x) = q(x)g(x) + r(x).0 = q(x)g(x) + r(x) − q(x) ′ g(x) − r ′ (x) = (q(x) − q ′ (x))g(x) + (r(x) − r ′ (x)).Predpokladajme, ža polynóm (r(x) − r ′ (x)) je nenulový. Ked’že polynóm (q(x) − q ′ (x))g(x)je bud’ nulový, alebo má stupeňdeg((q(x) − q ′ (x))g(x)) ≥ deg(g(x)) > max{deg(r(x)), deg(r ′ (x))} ≥ deg(r(x) − r ′ (x)),<strong>do</strong>stávame, že (q(x)−q ′ (x))g(x)+(r(x)−r ′ (x)) ≠ 0. Spor. To znamená, že (r(x)−r ′ (x)) = 0a (q(x) − q ′ (x))g(x) = 0. Ked’že g(x) ≠ 0, musí byt’ (q(x) − q ′ (x) = 0, a teda polynómy q(x)(podiel) a r(x) (zvyšok) sú určené jednoznačne.Vrátime sa ku skúmaniu vlastností okruhu polynómov F[x]. Zo skutočnosti, že vokruhu F[x] je definované delenie so zvyškom (veta 15.3.1), vyplýva známy fakt, že každýideál okruhu F[x] je hlavný; t.j. že okruh F[x] je okruhom hlavných ideálov.Veta 15.3.2. Nech je F[x] okruh polynómov nad pol’om F. Potom je F[x] okruhom hlavnýchideálov.Dôkaz. Ukážeme, že pre každý ideál J ≠ (0) okruhu F[x] existuje jednoznačne určenýnormovaný polynóm g(x) ∈ F[x] taký, že J = (g(x)). Ked’že F je pole, okruh F[x] jeoborom integrity. Nech je J =≠ (0) ideál okruhu F[x] a nech je h(x) polynóm najmenšiehostupňa, ktorý sa v J nachádza; nech je b vedúci koeficient polynómu h(x). Položímeg(x) = b −1 h(x). Je zrejmé, že g(x) ∈ J a g(x) je normovaný polynóm. Zoberieme teraz


15.3. POLYNÓMY A OKRUHY POLYNÓMOV 199l’ubovol’ný polynóm f(x) ∈ J a vyjadríme ho v tvare 15.4: f(x) = q(x)g(x) + r(x), pričomdeg(r(x)) < deg(g(x)) = deg(h(x)). Ked’že J je ideál, polynóm f(x) − q(x)g(x) = r(x) ∈ J.Nakol’ko h(x) bol polynóm najmenšieho stupňa v J, polynóm r(x) je nulový. To znamená,že (l’ubovol’ný polynóm z ideálu J) f(x) je násobkom polynómu g(x) a teda, J = (g(x).Ostáva ešte ukázat’ jednoznačnost’ výberu polynómu g(x). Predpokladajme, že existujeiný normovaný polynóm g 1 (x) ∈ F[x], ktorý je generátorom ideálu J. Potom však g(x) =c 1 (x)g 1 (x) a g 1 (x) = c 2 (x)g(x). Z uvedených rovností vyplýva, že g(x) = c 1 (x)c 2 (x)g(x),a teda polynómy c 1 (x), c 2 (x) sú konštantné. Ked’že obidva polynómy g(x), g 1 (x) sú normované,c 1 c 2 = 1, a teda g(x) = g 1 (x). Tým je <strong>do</strong>kázaná jednoznačnost’ určenia generátoraideálu J.Každý nenulový polynóm f(x) okruhu F[x] definuje (hlavný) ideál, (f(x)). Rozložímeteraz okruh F[x] podl’a ideálu (f(x)); triedy rozkladu budú množiny polynómov g(x) +(f(x)), kde g(x) ∈ F[x]. (Triedu rozkladu g(x)+(f(x)) budeme označovat’ symbolom [g(x)].)Dve triedy rozkladu, [a(x)], [b(x)] sa budú zho<strong>do</strong>vat’ práve vtedy, ak a(x) − b(x) ∈ (f(x));t.j. ak f(x)|(a(x)(¯x). Táto podmienka sa dá vyjadrit’ aj tak, že polynómy a(x), b(x) dávajúpo delení polynómom f(x) rovnaký zvyšok. Každá z tried rozkladu [g(x)] obsahujejediný polynóm r(x) ∈ F[x], stupňa deg(r(x)) < deg(f(x)). Tento polynóm sa dá vypočítat’ako zvyšok po delení polynómu g(x) polynómom f(x) a nazýva sa reprezentantomtriedy [g(x)]. Ukžeme ešte, že v každej triede rozkladu sa nachádza jediný polynómstupňa < deg(f(x)). Predpokladajme opak, t.j. nech r 1 (x), r(x) ∈ [g(x)] sú dva polynómystupňa < deg(f(x)), ktoré patria <strong>do</strong> tej istej triedy. Ale potom platí f(x)|r(x) − r 1 (x) adeg(r(x) − r 1 (x)) < deg(f(x)). To znamená, že r(x) − r 1 (x) = 0 a r(x) = r 1 (x). Ked’že každátrieda rozkladu obsahuje jediný polynóm stupňa < deg(f(x)), môžeme explicitne charakterizovat’triedy rozkladu F[x]/(f(x)): sú to množiny polynómov r(x) + (f(x)), kde r(x) ∈F[x] a deg(r(x)) < deg(f(x)). Ak na triedach z rozkladu F[x]/(f(x)) definujeme operáciesčítania a násobenia tradičným spôsobom; t.j. pre l’ubovol’né [a(x)], [b(x)] ∈ F[x]/(f(x))položíme[a(x)] + [b(x)] = [a(x) + b(x)], [a(x)] · [b(x)] = [a(x) · b(x)],<strong>do</strong>stávame okruh, ktorý budeme nazývat’ faktorovým okruhom polynómov nad pol’omF podl’a polynómu f(x). Faktorové okruhy polynómov budeme v d’alšom využívat’ prikonštrukcii konečných polí.Po<strong>do</strong>bne ako v okruhu celých čísel, môžeme aj v okruhu polynómov nad pol’om F zaviest’pojem najväčšieho spoločného delitel’a a najmenšieho spoločného násobku polynómov.Definícia 15.3.3. Nech je F[x] okruh polynómov nad pol’om F a nech sú f(x), g(x) polynómyz okruhu F[x].1. Normovaný polynóm d(x) ∈ F[x] nazveme najväčším spoločným delitel’om polynómovf(x), g(x), ak d(x)|f(x), d(x)|g(x) a pre l’ubovol’ný polynóm h(x) ∈ F[x], ktorý delípolynómy f(x), g(x) platí h(x)|d(x). Najväčší spoločný delitel’ polynómov f(x), g(x)budeme označovat’ symbolom gcd(f(x), g(x))2. Normovaný polynóm a(x) ∈ F[x] nazveme najmenším spoločným násobkom polynómovf(x), g(x) (označenie lcm(f(x), g(x))), ak f(x)|a(x), g(x)|a(x) a pre l’ubovol’nýpolynóm b(x) ∈ F[x], ktorý je delitel’ný polynómami f(x), g(x) platí, že a(x)|b(x).


200 KAPITOLA 15. ALGEBRAVeta 15.3.3. Nech sú f(x), g(x) dva nenulové polynómy okruhu F[x]. Potom existujú taképolynómy a(x), b(x), žegcd(f(x), g(x)) = a(x)f(x) + b(x)g(x).Dôkaz. Uvažujme množinu polynómov J = {c 1 (x)f(x) + c 2 (x)g(x)} c 1 (x), c 2 (x) ∈ F[x].Je zrejmé, že J je ideál a že J ≠ (0). Okruh F[x] je okruhom hlavných ideálov, a pretoexistuje d(x) ∈ F[x], ktorý generuje ideál J. Vzhl’a<strong>do</strong>m na to, ako sú vyjadrené prvkyideálu J z toho, že d(x) ∈ J vyplýva existencia polynómov a(x), b(x) takých, že d(x) =a(x)f(x)+b(x)g(x). Ukážeme ešte, že d(x) = gcd(f(x), g(x)). Oba polynómy f(x),g(x) patria<strong>do</strong> J, a preto d(x)|f(x) a d(x)|g(x). Ak by existoval iný (normovaný) polynóm, d 1 (x) taký,že (d 1 (x)) = J, d 1 (x)|d(x) a d(x)|d 1 (x), t.j. d(x) = d 1 (x).Najväčší spoločný delitel’ dvoch polynómov f(x), g(x) ∈ F[x] možno vypočítat’ pomocouEukli<strong>do</strong>vho algoritmu. Predpokladajme kvôli jednoduchosti, že g(x) ≠ 0 a že g(x) nie jedelitel’om polynómu f(x), potom budeme postupne delit’:f(x) = q 1 (x)g(x) + r 1 (x) 0 ≤ deg(r 1 (x)) < deg(g(x))g(x) = q 2 (x)r 1 (x) + r 2 (x) 0 ≤ deg(r 2 (x)) < deg(r 1 (x))r 1 (x) = q 3 (x)r 2 (x) + r 3 (x) 0 ≤ deg(r 3 (x)) < deg(r 2 (x))..r s−2 = q s (x)r s−1 (x) + r s (x) 0 ≤ deg(r s (x)) < deg(r s−1 (x))r s−1 = q s+1 (x)r s (x).V tejto postupnosti sú q 1 (x), . . . , q s+1 (x); r 1 (x) . . . , r s (x) polynómy okruhu F[x]. Kedžedeg(g(x)) je konečný a v kaž<strong>do</strong>m kroku sa stupeň polynómu r i (x) zmenšuje, procedúrapo konečnom počte krokov skončí. Nech má polynóm r s (x) vedúci koeficient a, potomnajväčší spoločný delitel’ polynómov f(x), g(x) vyjadríme nasle<strong>do</strong>vne: gcd(f(x), g(x)) =a −1 r s (x). Normované polynómy f(x), g(x) ∈ F[x] nazveme nesúdelitel’nými (relativelyprime), ak gcd(f(x), g(x) = 1.Dôležitú úlohu pri štúdiu vlastností okruhu polynómov F[x] zohrávajú ireducibilnépolynómy. Každý polynóm z F[x] sa dá totiž jednoznačne vyjadrit’ ako súčin ireducibilnýchpolynómov. Skôr ako formulujeme a <strong>do</strong>kážeme tento poznatok, využijeme vetu odelitel’nosti polynómov na ustanovenie vzt’ahu medzi koreňmi polynómu a delitel’nost’oupolynómu.Veta 15.3.4. Nech je f(x) l’ubovol’ný polynóm nad pol’om F a nech je c l’ubovol’ný prvokpol’a F. Potom polynóm (x − c) delí polynóm f(x) práve vtedy, ak je c koreňom polynómuf(x).Dôkaz. Nech polynóm (x − c) delí polynóm f(x), potom existuje taký polynóm f 1 (x), žef(x) = (x − c)f 1 (x). Potom však f(c) = (c − c)f 1 (c) = 0, a teda c je koreňom polynómu f(x).Nech na druhej strane f(c) = 0; t.j. prvok c je koreňom polynómu f(x). Podl’a vety 15.3.1sa polynóm f(x) dá vyjadrit’ nasle<strong>do</strong>vne:f(x) = (x − c)q(x) + r(x),


15.4. KONEČNÉ POLIA 201pričom deg(r(x)) < deg(x − c) = 1. To však znamená, že r(x) musí byt’ konštantnýpolynóm. Ale f(c) = (c − c)q(c) + r(c) = r(c) = 0, a teda r(x) = 0.Veta 15.3.5. Nech sú f 1 (x), . . . , f m (x) ∈ F[x], nech je g(x) ∈ F[x] ireducibilný polynóm.Potom platí: ak g(x) delí súčin f 1 (x) · f 2 (x) . . . f m (x), tak potom g(x) delí aspoň jeden zpolynómov f 1 (x), . . . , f m (x).Dôkaz.Veta 15.3.6 (O jednoznačnej faktorizácii polynómov). Nech je f(x) ∈ F[x] l’ubovol’nýpolynóm stupňa deg(f(x)) ≥ 0. Potom sa f(x) dá zapísat’ v tvare súčinuf(x) = af 1 (x) e1 · · · f m (x) e m, (15.5)kde a ∈ F, e 1 , . . . , e m ∈ N a f 1 (x), . . . , f m (x) sú navzájom rôzne normované ireducibilnépolynómy z F[x]. Naviac, odhliadnuc od poradia činitel’ov v rozklade 15.5, je rozkladpolynómu f(x) určený jednoznačne.Dôkaz budeme viest’ matematickou indukciou vzhl’a<strong>do</strong>m na stupeň polynómu. Prípadn = 1 je triviálny, nakol’ko polynómy stupňa 1 sú ireducibilné nad F[x]. Predpokladajme,že sa l’ubovol’ný polynóm stupňa menšieho ako n dá zapísat’ v tvare 15.5. Ukážeme, žeaj polynóm stupňa n možno rozložit’ na súčin ireducibilných polynómov v tvare 15.5. Akje f(x) ireducibilný polynóm, stačí ho normovat’, t.j. vyjadrit’ v tvare a −1 f(x), kde a jevedúci koeficient polynómu f(x). Ak polynóm f(x) nie je ireducibilný, možno ho vyjadrit’v tvare súčinu aspoň dvoch polynómov; f(x) = g 1 (x)g 2 (x). Oba polynómy g 1 (x), g 2 (x)majú stupeň 1 ≤ deg(g 1 (x)), deg(g 2 (x)) < n, a preto ich podl’a indukčného predpokladumožno vyjadrit’ v tvare 15.5.Ostáva ukázat’ jednoznačnost’ rozkladu 15.5. Predpokladajme, že existujú dva rozličnérozklady polynómu f(x); t.j.f(x) = af 1 (x) e1 · · · f m (x) em = bg 1 (x) d1 · · · g s (x) ds . (15.6)Vedúce koeficienty v rozličných vyjadreniach toho istého polynómu sa musia zho<strong>do</strong>vat’,preto a = b. Zoberieme teraz napríklad polynóm f 1 (x). Ked’že f 1 (x) delí polynóm f(x),musí delit’ aj g 1 (x) d 1· · · g s (x) d s. Ale f(x) je ireducibilný polynóm, a potom podl’a predchádzajúcejvety musí delit’ niektorý z polynómov g j (x), napríklad g k (x). Ale aj g k (x)je ireducibilný nad F[x], a teda f 1 (x) = cg k (x), kde c ∈ F. Oba polynómy f 1 (x), g k (x) súnormované, a teda f 1 (x) = g k (x). Vydelíme rovnost’ 15.6 polynómom f 1 (x)(= g k (x)) aanalogickým spôsobom budeme riešit’ novú identitu. Nakol’ko v kaž<strong>do</strong>m kroku sa znížistupeň polynómov v identite, po konečnom počte iterácií <strong>do</strong>staneme identitu 1 = 1. Týmsme <strong>do</strong>kázali, že obe faktorizácie polynómu f(x) sú, až na poradie činitel’ov v súčine,identické.15.4 Konečné poliaPole, ako sme uviedli v definícii 15.2.2, je okruh, ktorého množina nenulových prvkovtvorí komutatívnu grupu vzhl’a<strong>do</strong>m na multiplikatívnu operáciu. Príkladmi polí sú


202 KAPITOLA 15. ALGEBRAmnožiny komplexných, reálnych a racionálnych čísel s operáciami sčítania a násobenia.Na druhej strane, celé čísla tvoria okruh (<strong>do</strong>konca obor integrity), ale nie pole. Spomínanépolia sú nekonečné. V teórii kó<strong>do</strong>vania pracujeme a konečnými množinami, a pretobudeme využívat’ polia s konečným počtom prvkov — konečné polia. Uvedieme najprvkonečné polia založené na okruhu celých čísel a potom sa budeme zaoberat’ konečnýmipol’ami vychádzajúcimi z okruhu polynómov.Pripomenieme, že (Z, +, ·) je okruh (obor integrity) a (Z/Z q , +, ·) je faktorový okruh,ktorého prvkami sú triedy rozkladu [0], . . . , [q − 1]. Kým okruh (Z, +, ·) nemohol byt’pol’om (s výnimkou 1 a -1 inverzné prvky k celým číslam nie sú celé čísla), faktorovýokruh (Z/Z q , +, ·) za istých podmienok môže byt’ pol’om .Veta 15.4.1. Faktorový okruh (Z, +, ·) je pol’om práve vtedy, ak je q prvočíslo.Dôkaz. Nech je q prvočíslo. Potrebujeme ukázat’, že ku každému nenulovému prvkuokruhu (Z/Z q , +, ·) existuje v tomto okruhu inverzný prvok. Pripomenieme najprv, ženulovým prvkom okruhu (Z/Z q , +, ·) je [0] a jednotkovým trieda [1]. Nech je s celé číslo,s ∈ {1, . . . , q − 1}. Ked’že q je prvočíslo, platí gcd(s, q) = 1 a teda existujú také dve celéčísla a, b, žeaq + bs = gcd(s, q) = 1.To znamená, že[1] = [aq + bs] = [aq] + [bs] = [0] + [bs] = [bs] = [b][s],a teda [b] je inverzným prvkom k prvku [s] a faktorový okruh (Z/Z q , +, ·) je pol’om.Na druhej strane, predpokladajme, že okruh (Z/Z q , +, ·) je pole, ale q nie je prvočíslo,t.j. q je zložené číslo a dá sa zapísat’ ako súčin čísel q = q 1 q 2 , kde 1 < q 1 , q 2 < q. Kedže(Z/Z q , +, ·) je pole, k nenulovému prvku [q 1 ] existuje v poli inverzný prvok, [q −11]. Potomplatíspor.[0] ≠ [q 2 ] = [q 1 ][q −11 ][q 2] = [(q 1 · q −11 ) · q 2] = [q 1 · (q −11· q 2 )] = [q 1 · q] = [0],Zjednodušíme trocha výpočty v poli (Z/Z q , +, ·) zavedením vhodnejšej reprezentácie.Uvažujme množinu celých čísel F q = {0, . . . , q − 1} a definujeme operácie sčítania ⊕ anásobenia ⊗ prvkov z F q nasle<strong>do</strong>vne (a, b ∈ F q ):a ⊕ b = (a + b) mod q, a ⊗ b = ab mod q.Definujeme teraz zobrazenie ϕ : Z/Z q → F q ;bijekcia. Ukážeme, že je aj homomorfizmus:ϕ([a]) = a mod q. Je zrejmé, že ϕ jeϕ([a] + [b]) = ϕ([a + b]) = a + b mod q = a ⊕ b = ϕ([a]) ⊕ ϕ([b])ϕ([a][b]) = ϕ([a · b]) = a · b mod q = a ⊗ b = ϕ([a]) ⊗ ϕ([b]).Z vyššie uvedeného vyplýva, že ϕ je izomorfizmus, (F q , ⊕, ⊗) je konečné pole a polia(Z/Z q , +, ·) a (F q , ⊕, otimes) sú izomorfné. Pole (F q , ⊕, ⊗) budeme nazývat’ Galoisovým


15.4. KONEČNÉ POLIA 203pol’om a označovat’ symbolom GF(q). Tam, kde to nepovedie k ne<strong>do</strong>rozumeniu, budemeoperácie pol’a GF(q) označovat’ štandardným spôsobom — ako + a ·.Po<strong>do</strong>bne ako sme zaviedli konečné polia GF(q) pomocou okruhu celých čísel, zavediemeteraz rozšírenia konečných polí pomocou okruhu polynómov.Veta 15.4.2. Nech je F[x] okruh polynómov nad pol’om F, f(x) ∈ F[x] a F[x]/(f(x)) je faktorovýokruh polynómov nad pol’om F. Potom F[x]/(f(x)) je pol’om práve vtedy, ak jepolynóm f(x) ireducibilný polynóm okruhu F[x].Dôkaz. Predpokladajme, že polynóm f(x) je ireducibilný polynóm okruhu F[x]. Ukážeme,že k l’ubovol’nému nenulovému prvku faktorového okruhu F[x]/(f(x)) existuje v tomtookruhu inverzný prvok; t.j.∀(g(x)) ∈ F[x]/(f(x)); (g(x)) ≠ (0)∃(h(x)) ∈ F[x]/(f(x)); (f(x))(h(x)) = (1)Nech (g(x)) ∈ F[x]/(f(x)) je l’ubovol’ný nenulový prvok faktorového okruhu. Bez ujmyna všeobecnosti môžeme predpokladat’, že deg(g(x)) < deg(f(x)). Ked’že polynóm f(x)je ireducibilný polynóm nad pol’om F, gcd(f(x), g(x)) = 1 a existujú také dva polynómya(x), b(x) ∈ F[x], žea(x)f(x) + b(x)g(x) = gcd(f(x), g(x)) = 1.To znamená, že(a(x)f(x) + b(x)g(x)) = (a(x)f(x)) + (b(x)g(x)) = (0) + (b(x))(g(x)) = (b(x))(g(x)) = (1)a prvok (b(x)) je inverzným prvkom prvku (g(x)) faktorového okruhu F[x]/(f(x)).Opačne, nech faktorový okruhu F[x]/(f(x)) je pole a nech polynóm f(x) je reducibilnýpolynóm okruhu F[x].To znamená, že v okruhu F[x] existujú polynómy f 1 (x) a f 2 (x) také,že f(x) = f 1 (x)f 2 (x) a 0 < deg(f 1 (x)), deg(f 2 (x)) < deg(f(x)). Ked’že F[x]/(f(x)) je pole kprvku (f 1 (x)) ∈ F[x]/(f(x)) existuje v tomto poli inverzný prvok, trieda (f 1 (x) −1 ). Potomplatíspor.(0) ≠ (f 2 (x)) = (1)(f 2 (x)) = (f 1 (x) −1 )(f 1 (x))(f 2 (x)) = (f 1 (x) −1 f 1 (x)f 2 (x)) == (f 1 (x) −1 f(x)) = (f 1 (x) −1 )(0) = (0)Z predchádzjúcej vety vyplýva, že ak je dané konečné pole GF(q) a polynóm f(x) ∈GF(q)[x] ireducibilný v okruhu polynómov GF(q)[x], tak môžeme skonštruovat’ konečnépole GF(q)[x]/(f(x)), ktoré bude mat’ rád q deg(f(x)) . Otvorenou zostáva otázka, či existujúireducibilné polynómy potrebných stupňov. Skôr, ako sa budeme zaoberat’ týmitoproblémami, ilustrujeme na príklade konštrukciu konečného pol’a pomocou faktorovéhookruhu polynómov.Príklad. Pri konštrukcii tzv. BCH kó<strong>do</strong>v budeme využívat’ konečné pole GF(2 4 ). Prijeho konštrukcii budeme vychádzt’ z binárneho konečného pol’a GF(2). Potrebujeme


204 KAPITOLA 15. ALGEBRANo stupeň polynóm rozklad poznámka1 0 0 0 prvok pol’a2 0 1 1 prvok pol’a3 1 x x ireducibilný4 1 x + 1 x + 1 ireducibilný5 2 x 2 x · x reducibilný6 2 x 2 + 1 (x + 1) 2 reducibilný7 2 x 2 + x x · (x + 1) reducibilný8 2 x 2 + x + 1 x 2 + x + 1 ireducibilný9 3 x 3 x · x · x reducibilný10 3 x 3 + 1 (x + 1)(x 2 + x + 1) reducibilný11 3 x 3 + x x(x + 1) 2 reducibilný12 3 x 3 + x 2 x 2 (x + 1) reducibilný13 3 x 3 + x + 1 x 3 + x + 1 ireducibilný14 3 x 3 + x 2 + 1 x 3 + x 2 + 1 ireducibilný15 3 x 3 + x 2 + x x · (x 2 + x + 1) reducibilný16 3 x 3 + x 2 + x + 1 (x + 1) 3 reducibilnýTabul’ka 15.1: Polynómy stupňa 0, 1, 2, 3 nad pol’om GF(2)nájst’ ireducibilný polynóm stupňa 4 nad pol’om GF(2). Polynóm stupňa 4 nad binárnympol’om má tvara 0 + a 1 x + a 2 x 2 + a 3 x 3 + a 4 x 4 , a i ∈ {0, 1}, i = 0, . . . , 4.Aby mal polynóm poža<strong>do</strong>vaný stupeň (4), a 4 = 1 a na výber ostatných 4 koeficientovzostáva 2 4 = 16 možností. Aby bol hl’adaný polynóm ireducibilný, nesmie byt’ delitel’nýiným polynómom nižšieho stupňa. To znamená, že stačí overit’, či je daný polynómdelitel’ný ireducibilnými polynómami stupňa 1 a 2. V tabul’ke 15.1 uvádzame polynómystupňa 3 a menšieho nad pol’om GF(2).Preveríme teraz 16 polynómov stupňa 4 nad pol’om GF(2) na delitel’nost’ ireducibilnýmipolynómami stupňa 0, 1, 2, 3. Výsledky sú uvedené v tabul’ke 15.2.Okruh polynómov GF(2)[x] budeme faktorizovat’ pomocou ireducibilného polynómuf(x) = x 4 + x + 1. Prvkami pol’a GF(2)[x]/x 4 + x + 1 sú triedy rozkladu okruhu polynómovGF(2)[x] podl’a ireducibilného polynómu f(x). V jednej triede rozkladu sú tie polynómyokruhu polynómov GF(2)[x], ktorých rozdiel je delitel’ný polynómom f(x). Je zrejmé, žev každej triede rozkladu existuje práve jeden polynóm stupňa 3 alebo menšieho, ktorýbudeme nazývat’ predstavitel’om triedy. Ked’že polynómov okruhu GF(2)[x] stupňa 3 amenšieho je 16, pole GF(2)[x]/x 4 + x + 1 obsahuje 16 prvkov. V tabul’ke 15.3 uvádzameprvky pol’a GF(2)[x]/x 4 +x+1; prvok (trieda rozkladu) je reprezentovaný predstavitel’omtriedy.Kvôli lepšiemu prehl’adu zhrnieme najdôležitejšie poznatky o konečných poliach vnasledujúcej tabul’ke [2]. Čast’ z nich sme už <strong>do</strong>kázali, <strong>do</strong>kazovaním ostatných poznatkovsa budeme zaoberat’.


15.4. KONEČNÉ POLIA 205No stupeň polynóm rozklad poznámka1 4 x 4 x 4 R2 4 x 4 + 1 (x + 1) 4 R3 4 x 4 + x x · (x + 1)(x 2 + x + 1) R4 4 x 4 + x + 1 x 4 + x + 1 I5 4 x 4 + x 2 x 2 · (x + 1) 2 R6 4 x 4 + x 2 + 1 (x 2 + x + 1) 2 R7 4 x 4 + x 2 + x x · (x 3 + x + 1) R8 4 x 4 + x 2 + x + 1 (x + 1) · (x 3 + x 2 + 1) R9 4 x 4 + x 3 x · (x 3 + x 2 + 1) R10 4 x 4 + x 3 + 1 x 4 + x 3 + 1 I11 4 x 4 + x 3 + x x · (x 3 + x 2 + 1) R12 4 x 4 + x 3 + x 2 x 2 (x 2 + x + 1) R13 4 x 4 + x 3 + x + 1 (x + 1) 2 · (x 2 + x + 1) R14 4 x 4 + x 3 + x 2 + 1 (x + 1) · (x 3 + x + 1) R15 4 x 4 + x 3 + x 2 + x x · (x + 1) 3 R16 4 x 4 + x 3 + x 2 + x + 1 x 4 + x 3 + x 2 + x + 1 ITabul’ka 15.2: Polynómy stupňa 4 nad pol’om GF(2)1 (x)2 (x 2 )3 (x 3 )4 (x + 1)5 (x 2 + x)6 (x 3 + x 2 )7 (x 3 + x + 1)8 (x 2 + 1)9 (x 3 + x)10 (x 2 + x + 1)11 (x 3 + x 2 + x)12 (x 3 + x 2 + x + 1)13 (x 3 + x 2 + 1)14 (x 3 + 1)15 (1)16 (0)Tabul’ka 15.3: Prvky pol’a GF(2)[x]/x 4 + x + 1


206 KAPITOLA 15. ALGEBRA1. Rád (počet prvkov) l’ubovol’ného konečného pol’a je mocninou prvočísla.2. Pre l’ubovol’né prvočíslo p a celé kladné číslo m je najmenším podpol’om pol’a GF(p m )pole GF(p). Prvky pol’a GF(p) sa nazývajú celými číslami pol’a GF(p m ) a číslo pjeho charakteristikou3. V konečnom poli charakteristiky 2 pre l’ubovol’ný prvok pol’a β platí β = −β.4. Pre l’ubovol’né prvočíslo p a celé kladné číslo m existuje konečné pole s p m prvkami.5. Každé konečné pole GF(q) obsahuje aspoň jeden primitívny prvok.6. Kad každým konečným pol’om existuje pre l’ubovol’né kladné celé číslo m primitívnypolynóm stupňa m.7. Každý primitívny prvok pol’a GF(q) má nad l’ubovol’ným podpol’om pol’a GF(q)ireducibilný minimálny polynóm.8. Dve konečné polia s tým istým počtom prvkov sú izomorfné.9. Pre l’ubovol’né q, ktoré je mocninou prvočísla a l’ubovol’né celé kladné číslo m jepole GF(q) podpol’om pol’a GF(q m ) a pole GF(q m ) je rozšírením pol’a GF(q).10. Ak číslo n nie je delitel’om čísla m, tak pole GF(q n ) nie je podpol’om pol’a GF(q m ).11. Pre l’ubovol’ný prvok pol’a GF(q m ) stupeň jeho minimálneho polynómu nad GF(q)delí m.Konečné pole predstavuje aditívnu abelovskú grupu a množina jeho nenulových prvkovje multiplikatívna abelovská grupa. V d’alšom budeme pracovat’ s multiplikatívnougrupou konečného pol’a.Veta 15.4.3. Nech je GF(q) konečné pole a β 1 , . . . , β q−1 sú jeho nenulové prvky. Potomplatíx q−1 − 1 = (x − β 1 )(x − β 2 ) . . . (x − β q−1 ).Dôkaz. Stačí ukázat’, že l’ubovol’ný nenulový prvok pol’a GF(q) je koreňom polynómux q−1 − 1. Uvažujme prvok β. Jeho mocniny β, β 2 , . . . , β h = 1 tvoria podgrupu multiplikatívnejgrupy pol’a GF(q). Rád podgrupy, generovanej prvkom β delí rád multiplikatívnejgrupy pol’a GF(q); h|(q − 1). To znamená, že existuje kladné celé číslo k také,že hk = (q − 1). Potom však β q = β hk = (β h ) k = 1 k = 1, a teda β je koreňom polynómux q−1 − 1.Reprezentácia konečných polí pomocou tried polynómov bola trocha neprehl’adná.Ukážeme, že multiplikatívna grupa konečného pol’a je cyklická a budeme reprezentovat’(nenulové) prvky konečného pol’a mocninami generátora jeho cyklickej multiplikatívnejgrupy.Veta 15.4.4. Multiplikatívna grupa konečného pol’a GF(q) je cyklická.


15.4. KONEČNÉ POLIA 207Dôkaz. Budeme postupovat’ podl’a [2]. Multiplikatívna grupa konečného pol’a GF(q)má rád q − 1. Ak by bolo číslo q − 1 prvočíslo (napr. 3, 7, 31, 127, . . . ), tvrdenie vety by bolotriviálne. Podl’a predchádzajúcej vety musí rád každého nenulového prvku delit’ q − 1.To znamená, že nenulové prvky majú bud’ rád 1 alebo rád q − 1. Jednotkový prvok pol’aGF(q) má rád 1 a všetky ostatné nenulové prvky majú rád q − 1 a teda sú generátormimultiplikatívnej grupy konečného pol’a GF(q).Nech je číslo q − 1 zložené. Potom ho možno jednoznačne rozložit’ na súčin prvočísel:q − 1 = p ν 11 · · · pν ssPolynóm x (q−1)/p i− 1 môže mat’ najviac (q − 1)/p i koreňov, to znamená, že v poli GF(q)existuje nenulový prvok, ktorý nie je koreňom polynómu x (q−1)/p i− 1. Označíme tentoprvok symbolom a i . Je zrejmé, že pre l’ubovol’né i, i = 1, . . . , s existuje nenulový prvoka i pol’a GF(q) taký, že a (q−1)/p ii≠ 1. Na základe prvkov a i zostrojíme teraz prvky b i a bpol’a GF(q):b i = a (q−1)/pν iiia b = b 1 b 2 . . . b sa ukážeme, že rád prvku b je q − 1; t.j. že b je generátor multiplikatívnej grupy pol’aGF(q) a tým aj to, že táto grupa je cyklická.Najprv ukážeme, že rád prvku b i je p ν ii. Platí(b pν iii=a (q−1)/pν iii) pν ii= a (q−1)i= 1.To znamená, že rád prvku b i delí p ν ii, t.j. má tvar pn ii, pričom n i ≤ ν i . Predpokladajme,že n i < ν i . Potom by ajb pν i −1ii= b pn ii·p ν i −n iii=(b pn iii) pν i −n ii= (1) pν i −n ii = 1.Ale(b pν i −1ii=a (q−1)/pν iii) pν i −1i= a (q−1)/p ii≠ 1.To znamená, že n i = ν i . Teraz ukážeme, že rád prvku b sa rovná q − 1. Predpokladajme,že rád prvku b je n; t.j. b n = 1. Pre l’ubovol’né i = 1, . . . , s platíb n·pν 11 ···pν ss/p ν ii = 1.Vyjadríme teraz prvok b pomocou prvkov b i a využijeme to, že b pν iii= 1:(b 1 b 2 . . . b s ) n·pν 1· (b i ) n·pν 1= (1) n·pν 21 ···pν ss2 ···pν ss. . . (1) n·pν 11 ···pνs s/p ν ii = (b 1 ) n·pν 11 ···pνs s/p ν ii/p ν ii (b i+1 ) pν i+1i+1 n·pν 11 ···pν ss /(p ν i+1/p ν ii . . . (1) n·pν 11 ···pν s−1s−11 ···pν ss/(pν ii ) = (b i ) n·pν 1i+1 ·pν ii/p ν iipν i−1i−1 · (b i ) n·pν 11 ···pν ss/(p ν ii ) = 1.. . . (b i−1 ) pν i−1i−1 n·pν 1) . . . (b s ) pν ss n·p ν 11 ···pν ss1 ···pνs s1 ···pν s−1s−1/(p ν i−1i−1 ·pν ii ) ·/pν ii =/p ν ii (1) n·pν 11 ···pν ss /(p ν i+1i+1 ·pν ii ) . . .


208 KAPITOLA 15. ALGEBRAZ toho, že rád prvku b i je p ν iia z poslednej rovnosti vyplýva, že, že p ν iidelí n pre i, . . . , s.Čísla p ν iisú však navzájom nesúdelitel’né, a to znamená, žen = p ν 11 · · · pν ss = q − 1.Prvok b rádu q − 1, ktorého existenciu sme <strong>do</strong>kázali v predchádzajúcej vete, je primitívnymprvkom pol’a GF(q). Tým sme zároveň <strong>do</strong>kázali nasledujúce dôležité tvrdenie.Dôsle<strong>do</strong>k 2. V kaž<strong>do</strong>m konečnom poli existuje primitívny prvok.Vrátime sa k pol’u GF(2 4 ) = GF(2)[x]/x 4 + x + 1 z príkladu 15.4 a nájdeme jeho primitívnyprvok. Pole GF(2 4 ) sme zostrojili faktorizáciou okruhu polynómov GF(2)[x] pomocoupolynómu f(x) = x 4 + x + 1. Uvažujme teraz prvok (x) pol’a GF(2 4 ); (x) predstavujetriedu polynómov z okruhu GF(2)[x], ktoré po delení polynómom f(x) dávajú zvyšok x.Dosadíme prvok (x) <strong>do</strong> polynómu f(x). Vzhl’a<strong>do</strong>m na uzavretost’ pol’a GF(2 4 ) na sčítaniea násobenie <strong>do</strong>staneme opät’ prvok pol’a GF(2 4 ). Pripomenieme ešte, že pre l’ubovol’néa(x), b(x) ∈ GF(2)[x] platí(a(x)) + (b(x)) = (a(x) + b(x)),(a(x))(b(x)) = (a(x)b(x)).Postupne <strong>do</strong>stávamef((x)) = (x) 4 + (x) + 1 = (x 4 ) + (x + 1) = (x 4 + x + 1) = (0).To znamená, že prvok (x) je koreňom polynómu x 4 +x+1. Označíme prvok (x) symbolomα a ukážeme, že (zho<strong>do</strong>u okolností) je α primitívnym prvkom pol’a GF(2 4 ). Vyjadrenieprvkov pol’a GF(2 4 ) v po<strong>do</strong>be mocnín primitívneho prvku α je uvedené v tabul’ke 15.6V prvom stĺpci tabul’ky 15.6 je exponent mocniny primitívneho prvku α, v druhom jeuvedená mocnina α i , v tret’om je binárny kód príslušného prvku a vo štvrtom je prvok α ivyjadrený v po<strong>do</strong>be lineárnej kombinácie mocnín prvkov α 3 , α 2 , α 1 , α 0 . Posledný stĺpecsi zasluhuje vysvetlenie. Zápis prvkov konečného pol’a pomocou mocnín primitívnehoprvku umožňuje jednoducho realizovat’ násobenie prvkov pol’a. Pre l’ubovol’né dva prvkypol’a α i , α j ∈ GF(2 4 ) platí α i α j = α i+j = α (i+j) mod 15 . Na druhej strane, aj ked’ je poleGF(2 4 ) aditívna abelovská grupa, určit’ prvok, ktorý predstavuje súčet α i + α j nie je pritejto reprezentácii prvkov pol’a GF(2 4 )jednoduché.Ukážeme, že sa každý prvok pol’a GF(2 4 ) dá zapísat’ pomocou lineárnej kombinácieprvkov α 3 , α 2 , α 1 , α 0 jednoznačným spôsobom. Nulový prvok pol’a sa dá zapísat’ v po<strong>do</strong>belineárnej kombinácia s nulovými koeficientami. Vieme, že 1 = α 0 a predpokladajme, žesa všetky mocniny α i , 0 ≤ i ≤ n dajú vyjadrit’ v tvare lineárnej kombinácie prvkovα 3 , α 2 , α 1 , α 0 . Ukážeme, že potom takto dá vyjadrit’ aj prvok α n+1 . Nech α n = a 3 α 3 +a 2 α 2 + a 1 α 1 + a 0 . Potomα n+1 = α n · α = a 3 α 4 + a 2 α 3 + a 1 α 2 + a 0 α.Ked’že α je koreňom polynómu x 4 + x + 1, platí α 4 + α + 1 = 0 a (ked’že pole GF(2 4 ) mácharakteristiku 2, a teda −α 4 = α 4 )platí α 4 = α + 1. Využijeme tento vzt’ah a upravímelineárnu kombináciu pre α n+1 :α n+1 = a 2 α 3 + a 1 α 2 + a 0 α + a 3 (α + 1) = a 2 α 3 + a 1 α 2 + (a 0 + a 3 )α + a 3 .


15.4. KONEČNÉ POLIA 2090 α 0 0001 11 α 1 0010 α2 α 2 0100 α 23 α 3 1000 α 34 α 4 0011 +α +15 α 5 0110 α 2 +α6 α 6 1100 α 3 +α 27 α 7 1011 α 3 +α +18 α 8 0101 α 2 +19 α 9 1010 α 3 +α10 α 10 0111 α 2 +α +111 α 11 1110 α 3 +α 2 +α12 α 12 1111 α 3 +α 2 +α +113 α 13 1101 α 3 +α 2 +114 α 14 1001 α 3 +115 α 15 0001 1Tabul’ka 15.4: Reprezentácia nenulových prvkov GF(2 4 )Ostáva ešte ukázat’, že vyjadrenie α i je jednoznačné. Predpokladajme opak, t.j.Potom všakα i = a 3 α 3 + a 2 α 2 + a 1 α 1 + a 0 = b 3 α 3 + b 2 α 2 + b 1 α 1 + b 0 .0 = a 3 α 3 + a 2 α 2 + a 1 α 1 + a 0 − b 3 α 3 + b 2 α 2 + b 1 α 1 + b 0 == (a 3 − b 3 )α 3 + (a 2 − b 2 )α 2 + (a 1 − b 1 )α 1 + (a 0 − b 0 ).Z poslednej rovnosti vyplýva, že a 3 = b 3 , a 2 = b 2 , a 1 = b 1 , a 0 = b 0 , a teda vyjadrenieprvku pol’a v po<strong>do</strong>be lineárnej kombinácie mocnín primitívneho prvku je jednoznačné.Poznámka. Ak budeme reprezentovat’ prvky pol’a GF(2 4 ) pomocou 4-bitových celýchčísel, výpočet α i+1 možno realizovat’ nasle<strong>do</strong>vne:if (a > 7) then : a 3 = 1a = (a


210 KAPITOLA 15. ALGEBRANa konštrukciu konečného pol’a nám stačil l’ubovol’ný ireducibilný polynóm. V príklade,ktorý sme uviedli, bol koreň ireducibilného polynómu použitého na vytvorenie pol’azároveň aj primitívnym prvkom zostrojeného pol’a. Takýto polynóm sa nazýva primitívnympolynómom.Definícia 15.4.1. Nech je dané konečné pole GF(q) a ireducibilný polynóm f(x) nad týmtopol’om. Polynóm f(x) sa nazýva primitívnym polynómom nad pol’om GF(q), ak koreňomjpolynómu f(x) v rozšírení pol’a GF(q), poli GF(q)[x]/f(x) je primitívny prvok pol’aGF(q)[x]/f(x).Pripomíname, že nie každý ireducibilný polynóm f(x) nad pol’om GF(q) je zároveňprimitívnym polynómom. Na druhej strane, pre l’ubovol’né konečné pole GF(q) existujúprimitívne polynómy (nad pol’om GF(q)) l’ubovol’ného stupňa.Príklad. Uvažujme ireducibilný polynóm f(x) = x 4 + x 3 + x 2 + x + 1 nad pol’om GF(2).Tento polynóm má v poli GF(2)[x]/x 4 +x 3 +x 2 +x+1 korene (x) = β; β 2 , β 3 , β 4 . Využijemevzt’ah β 4 + β 3 + β 2 + β + 1 = 0 a vyjadríme β 4 pomocou lineárnej kombinácie nižšíchmocnín prvku β: β 4 = β 3 + β 2 + β + 1. Jednotlivé mocniny sú uvedené v tabul’ke 15.5.0 β 0 0001 11 β 1 0010 β2 β 2 0100 β 23 β 3 1000 β 34 β 4 1111 β 3 +β 2 +β +15 β 5 0001 1Tabul’ka 15.5: Mocniny prvku β pol’a GF(2 4 )Prvok β má teda rád 5. (Pomocou tabul’ky 15.5 l’ahko <strong>do</strong>kážeme, že rád 5 majú ajostatné korene polynómu f(x), prvky β 2 , β 3 , β 4 ). Ireducibilný polynóm x 4 + x 3 + x 2 + x + 1nad pol’om GF(2) teda nie je primitívny.V d’alšej časti budeme pokračovat’ v skúmaní základných vlastností konečných polí.Vieme, že charakteristika konečného pol’a je prvočíslo. V akom vzt’ahu je pole GF(p m ) scharakteristikou p s konečným pol’om GF(p)?Veta 15.4.6. Nech je GF(q) l’ubovol’né konečné pole, potom GF(q) obsahuje jediné konečnépole, ktorého rád je charakteristikou pol’a GF(q).Dôkaz. Nech je 1 jednotka konečného pol’a GF(q). Sumu 1 + 1 + · · · + 1} {{ }označíme symbolomn a zostrojíme postupnost’0, 1, 2, 3 . . . , p − 1, p = 0.nTáto postupnost’ je konečná (lebo GF(q) je konečné pole) jej prvky tvoria aditívnu cyklickúgrupu G. Sčítanie prvkov je v grupe G definované ako súčet celých čísel mod p.Využijeme to, že v poli GF(q) platí distributívny zákon a zavedieme násobenie v grupe Gpomocou sčítania mod p nasle<strong>do</strong>vne (α, β ∈ G):


15.5. VEKTOROVÉ PRIESTORY 2111. α · 1 = α,2. α · (β + 1) = α · β + α.<strong>do</strong>končit’ podl’a NiederreiteraV tabul’kách 15.1 a 15.2 sme uviedli ireducibilné polynómy stupňa 2, 3, 4 nad pol’omGF(2). V poli GF(2 4 ) sa však tieto ireducibiné polynómy dali rozložit’ na súčin lineárnychčinitel’ov ??. Tento príklad ilustruje skutočnost’, že ireducibilné polynómy nad pol’omGF(q) môžu byt’ reducibilné nad vhodným rozšírením pol’a GF(q). Pri konštrukcii cyklickýchkó<strong>do</strong>v budeme potrebovat’ zostrojit’ polynóm nad nejakým konečným pol’om spredpísanými koreňmi; pozrieme sa preto na takéto polynómy podrobnejšie. Zavediemenejprv jeden dôležitý pojem.Definícia 15.4.2. Nech je GF(q) konečné pole a GF(Q) je jeho rozšírenie; nech α ∈ GF(Q).Normovaný polynóm m α (x) nad GF(q) budeme nazývat’ minimálnym polynómom prvkuα nad pol’om GF(q), ak platí1. m α (α) = 0,2. ak existuje polynóm a(x) nad GF(q) taký, že a(α) = 0, tak potom m α (x)|a(x).Minimálny polynóm prvku α nad pol’om GF(q) je teda normovaný polynóm najmenšiehostupňa nad pol’om GF(q), ktorého koreňom je prvok α. Minimálny polynóm prvku α vždyexistuje a je daný jednoznačne.Príklad. Minimálne polynómy prvkov pol’a GF(2 4 ) nad pol’om GF(2) sú uvedené v tabul’ke??Poznámka. Čast’ venovaná konečným poliam bola spracovaná na základe [2] a [10].Čitatel’ovi, zaujímajúcemu sa o teóriu konečných polí odporúčame <strong>do</strong> pozornosti najmäprácu [10]. Zaujímavý pohl’ad na konečné polia a ich aplikácie v kryptológii ponúka ajpráca [?].15.5 Vektorové priestoryZrejme najznámym príkla<strong>do</strong>m vektorového priestoru je trojrozmerný Eukli<strong>do</strong>vský priestor,ktorý vystupuje v mnohých úlohách stre<strong>do</strong>školskej matematiky a fyziky. Eukli<strong>do</strong>vskýpriestor možno zovšeobecnit’ na n-rozmerný vektorový priestor nad pol’om reálnych čísel,ktorý taktiež nachádza uplatnenie v mnohých aplikáciách. V teórii kó<strong>do</strong>vania nebudemepracovat’ s vektorovými priestormi nad reálnymi číslami, ale budeme využívat’ trochaabstraktnejšie vektorové priestory nad konečnými pol’ami. Tieto vektorové priestorysú zákla<strong>do</strong>m pre konštrukciu vel’mi dôležitých samoopravných kó<strong>do</strong>v, pre tzv. lineárnekódy. Zavedieme najprv základné pojmy a potom preskúmame vlastnosti vektorovýchpriestorov, ktoré budeme potrebovat’ (napríklad) pre konštrukciu, kó<strong>do</strong>vanie a dekó<strong>do</strong>vanielineárnych kó<strong>do</strong>v.


212 KAPITOLA 15. ALGEBRAprvok minimálny polynóm0 xα 0 x + 1α 1 x 4 + x + 1α 2 x 4 + x + 1α 3 x 4 + x 3 + x 2 + x + 1α 4 x 4 + x + 1α 5 x 2 + x + 1α 6 x 4 + x 3 + x 2 + x + 1α 7 x 4 + x 3 + 1α 8 x 4 + x + 1α 9 x 4 + x 3 + x 2 + x + 1α 10 x 2 + x + 1α 11 x 4 + x 3 + 1α 12 x 4 + x 3 + x 2 + x + 1α 13 x 4 + x 3 + 1α 14 x 4 + x 3 + 1Tabul’ka 15.6: Minimálne polynómy prvkov pol’a GF(2 4 )Definícia 15.5.1. Nech je F l’ubovol’né pole. Nech V je množina, na ktorej je definovanábinárna operácia +, a nech pre každé a ∈ F a v ∈ V existuje prvok a · v ∈ V, pričom preaditívne a multiplikatívne operácie platia nasledujúce podmienky:1. (V, +) je abelovská grupa; pre l’ubovol’né u, v ∈ V a l’ubovol’né a, b ∈ F2. a · (u + v) = a · u + a · v;3. (a + b) · v = a · v + b · v;4. (a · b) · u = a(b · u);5. 1 · u = u,kde 1 je jednotkový prvok pol’a F. Potom V je vektorový priestor nad pol’om F. Prvkymnožiny V sa nazývajú vektory a prvky pol’a F skaláry.Poznámka. Všimnite si, že v definícii vektorového priestoru nad pol’om F vystupujúdve rôzne aditívne operácie (sčítanie v poli F a sčítanie v grupe (V, +)) a dve takisto rozličnémultiplikatívne operácie ("vnútorné násobenie prvkov pol’a a "vonkajšie násobenievektora skalárom.) Z kontextu bude spravidla jasné, o akú operáciu sa jedná, apreto na označenie oboch aditívnych operácií budeme používat’ symbol "+". Budeme sapridŕžat’ zaužívaného označenia a operátor "·"budeme vynechávat’ tak pri označovaní"vonkajšiehoäko aj "vnútorného"násobenia. Aby sme odlíšili vektory a skaláry, budemevektory sádzat’ bol<strong>do</strong>m.Príklad. 1. Nech je F l’ubovol’né pole a n > 1 je l’ubovol’né prirodzené číslo. Potom symbolomF n označíme množinu všetkých usporiadaných n-tíc prvkov pol’a F. Definujeme


15.5. VEKTOROVÉ PRIESTORY 213operácie sčítania n-tíc a násobenia n-tíc prvkom pol’a nasle<strong>do</strong>vne: pre l’ubovol’né prvky(n-tice) u, v ∈ F n ; u = (u 1 , . . . , u n ), v = (v 1 , . . . , v n ) a l’ubovol’ný prvok c ∈ F platíu + v = (u 1 + v 1 , . . . , u n + v n ), cu = (cu 1 , . . . , cu n ).Dá sa l’ahko overit’, že F n s takto definovanými operáciami je vektorový priestor.2. Trocha netradičným príkla<strong>do</strong>m vektorového priestoru je faktorový okruh polynómovF[x]/(x n − 1), pozostávajúci z tried reprezentovaných polynómami nad pol’om Fstupňa menšieho než n.Nech je daný vektorový priestor V nad pol’om F, nech sú u 1 , . . . , u m ∈ V l’ubovol’névektory a nech sú a 1 , . . . , a m ∈ F l’ubovol’né skaláry. Vektorv = a 1 u 1 + · · · + a m u mbudeme nazývat’ lineárnou kombináciou vektorov u 1 , . . . , u m . Množina vektorov u 1 , . . . , u msa nazýva lineárne závislou, ak existuje množina skalárov a 1 , . . . , a m ∈ F, z ktorých jeaspoň jeden nenulový a0 = a 1 u 1 + · · · + a m u m .Ak množina vektorov u 1 , . . . , u m ∈ V nie je lineárne závislá, budeme o nej hovorit’, že jelineárne nezávislá. Je zrejmé, že ak má byt’ nejaká množina vektorov lineárne nezávislá,nesmie obsahovat’ nulový vektor a žiaden z jej vektorov sa nesmie dat’ vyjadrit’ vpo<strong>do</strong>be lineárnej kombinácie ostatných vektorov. Množinu všetkých lineárnych kombináciívektorov u 1 , . . . , u m ∈ V {a 1 u 1 + · · · + a m u m , a 1 . . . , a m ∈ F} budeme označovat’symbolom [u 1 , . . . , u m ]. Budeme hovorit’, že množina vektorov u 1 , . . . , u m generuje vektorovýpriestor W, ak sa každý vektor z W dá vyjadrit’ v po<strong>do</strong>be lineárnej kombinácievektorov u 1 , . . . , u m ; t.j.∀v(v ∈ W → v ∈ [u 1 , . . . , u m ]).Je zrejmé, že ten istý vektorový priestor možno generovat’ pomocou viacerých generujúcichmnožín vektorov. Budú nás zaujímat’ mohutnosti generujúcich množín vektorovvektorového priestoru.Veta 15.5.1 (Steinitzova veta.). Nech je vektorový priestor V nad pol’om F generovanýmnožinou lineárne nezávislých vektorov u 1 , . . . , u n a nech sú vektory v 1 , . . . , v k ∈ V lineárnenezávislé. Potom k ≤ n a existuje n−k vektorov u i takých, že [v 1 , . . . , v k , u i1 , . . . , u in−k ] =V.Dôkaz. Budeme postupne nahrádzat’ vektory u i vektormi v j v množine generujúcejvektorový priestor V. Dôkaz budeme potom robit’ matematickou indukciou vzhl’a<strong>do</strong>m napočet vektorov v i v množine vektorov generujúcich vektorový priestor V.Množina u 1 , . . . , u n generuje V; t.j. [u 1 , . . . , u n ] = V. Pridajme <strong>do</strong> generujúcej množinyvektor v 1 . Ked’že v 1 ∈ V a v 1 ≠ 0 existuje lineárna kombináciav 1 = a 1 u 1 + · · · + a n u n ,taká, že medzi koeficientami a 1 . . . , a n je aspoň jeden nenulový. Bez ujmy na všeobecnostimôžeme predpokladat’, že a 1 ≠ 0. Potom môžeme vyjadrit’ vektor u 1 pomocoulineárnej kombinácieu 1 = v 1 + a −11 a 2u 2 · · · + a −11 a nu n .


214 KAPITOLA 15. ALGEBRAZ toho vyplýva, že množina v 1 , u 2 , . . . , u n generuje vektorový priestor V.Predpokladajme, že množina vektorov v 1 , . . . , v s−1 , u s , . . . , u n generuje vektorový priestorV,Definícia 15.5.2. Vektorový priestor V nad pol’om F sa nazýva konečnorozmerný, akexistujú vektory u 1 , . . . , u n ∈ V také, že [u 1 , . . . , u n ] = V. Ak vektorový priestor nie jekonečnorozmerný, nazývame ho nekonečnorozmerným vektorovým priestorom.Definícia 15.5.3. Nech je vektorový priestor V nad pol’om F konečnorozmerný. Vektoryu 1 , . . . , u n ∈ V nazývame bázou vektorového priestoru V, ak1. [u 1 , . . . , u n ] = V,2. vektory u 1 , . . . , u n sú lineárne nezávislé.Jeden a ten istý (konečnorozmerný) vektorový priestor môže mat’ viacero rozličnýchbáz. Podstatné je, že všetky budú mat’ rovnaký počet prvkov.Veta 15.5.2. Nech je V konečnorozmerný vektorový priestor nad pol’om F. Potom všetkybázy vektorového priestoru V majú rovnaký počet prvkov.Počet prvkov bázy (konečnorozmerného) vektorového priestoru teda nezávisí od výberubázy. Zavedieme na jeho označenie špeciálny pojem.Definícia 15.5.4. Dimenzia konečnorozmerného vektorového priestoru je počet prvkovniektorej z jeho báz. Dimenzia nulového vektorového priestoru je 0. Dimenzia nekonečnorozmernéhovektorového priestoru je ∞.15.6 Lineárna algebra


Kapitola 16Entropia a množstvo informáciePri riešení niektorých problémov potrebujeme určit’ množstvo informácie obsiahnuté vúdajoch. Predpokladajme, že na začiatku nemáme o údajoch žiadnu informáciu, t.j. údajemôžu byt’ ktorýmkol’vek prvkom nejakej množiny textov (údaje môžu byt’ napríklad všifrovej po<strong>do</strong>be a my nepoznáme ani použitý šifrovací algoritmus a nemáme k dispozíciidešifrovací kl’úč). Môžeme nanajvýš odhadnút’ potenciálnu množinu otvorených textov,ktorých zašifrovaním vznikli naše údaje. Potom získame nejakú informáciu (napr. odĺžke a formáte údajov). Táto informácia redukuje počiatočnú neurčitost’ - množinamožných textov vyhovujúcich získanej informácii je menšia ako pôvodná množina textov.Takto budeme postupovat’ až <strong>do</strong> okamihu, ked’ jednoznačne určíme údaje a neredukujemeneurčitost’ na nulovú hodnotu. Kvantitatívna miera informácie obsiahnutej v údajochsa teda dala určit’ pomocou miery neurčitosti. Na meranie neurčitosti sa používaentropia. Zavedieme najprv entropiu a pomocou nej aj kvantitatívnu mieru informácie.Nech je daný zdroj S, s abece<strong>do</strong>u Σ S = {s 0 , . . . , s m−1 } a rozdelením pravdepo<strong>do</strong>bnostíP = {p 0 , . . . , p m−1 }. Na začiatku budeme predpokladat’, že je rozdelenie pravdepo<strong>do</strong>bnostírovnomerné, t.j. že sa všetky symboly zdrojovej abecedy vyskytujú v textoch rovnakočasto. Funkcia, označme ju pracovne symbolom f, ktorá má merat’ neurčitost’ zdroja,musí spĺňat’ nasledujúce prirodzené podmienky:1. jej hodnota nesmie závisiet’ od symbolov 1 ale len od rozdelenia pravdepo<strong>do</strong>bnostíP,2. funkcia je monotónne rastúca vzhl’a<strong>do</strong>m na počet symbolov zdrojovej abecedy 23. aditívnost’: ak sú S 1 , S 2 dva nezávislé zdroje, tak potomf(S 1 , S 2 ) = f(S 1 ) + f(S 2 ).Vyššie uvedené požiadavky spĺňa logaritmická funkcia. R.V.L. Hartley (1928) definovallogaritmickú mieru informácie (mieru neurčitosti) zdroja S s m-prvkovou abece<strong>do</strong>u a1 symboly môžu byt’ reprezentované číslami2 pripomíname, že rozdelenie pravdepo<strong>do</strong>bností je rovnomerné215


216 KAPITOLA 16. ENTROPIA A MNOŽSTVO INFORMÁCIErovnomerným rozdelením pravdepo<strong>do</strong>bnosti nasle<strong>do</strong>vne:H(S) = log(m).Základ logaritmov neovplyvňuje podstatne hodnotu entropie, vzhl’a<strong>do</strong>m na to, že prelogaritmy o zákla<strong>do</strong>ch a, b platílog a x = (log a b) log b x.Jednotkou miery informácie (neurčitosti) je v závislosti od použitého základu logaritmovbit (binárne logaritmy) nat (prirodzené logaritmy) a Hartley (dekadické logaritmy).Množstvo informácie sa najčastejšie vyjadruje v bitoch alebo jednotkách od nich <strong>do</strong>vedených.Akú informáciu nesie jeden symbol v prípade, ked’ rozdelenie pravdepo<strong>do</strong>bností zdrojanie je rovnomerné? Informačný obsah budeme tak ako v predchádzajúcom prípademerat’ znížením neurčitosti, ktorá závisí od pravdepo<strong>do</strong>bnosti výskytu symbolu. Predpokladajmenapríklad, že zdroj má generovat’ jednu z množiny možných správ, možnésprávy máme usporiadané lexikograficky. Na výstupe zdroja sa objaví symbol s i0 . Pozriemesa na dve krajné možnosti: ak sa všetky správy začínajú symbolom s i0 , jeho objavenieneredukovalo množinu možných správ a teda symbol s i0 nenesie žiadnu informáciu.Druhá krajná možnost’ - existuje jediná správa, začínajúca symbolom s i0 ; t.j. v tomtoprípade je množstvo informácie obsiahnuté v s i0 maximálne (rovné logaritmu počtumožných správ). Definujeme množstvo informácie v s i0 akolog 1/p i0 ,kde p i0 = p(s i0 ). V prípade rovnomerného rozdelenia pravdepo<strong>do</strong>bností niesol každýsymbol rovnaké množstvo informácie. V prípade nerovnomerného rozdelenia pravdepo<strong>do</strong>bnostísymbolov tomu tak nie je a má zmysel sa zaoberat’ strednou hodnotou množstvainformácie, t.j. hodnotouH r (S) =m−1∑i=0p i log r 1/p i .Funkcia H r (S) sa nazýva entropiou zdroja S. Entropiu zdroja ako prvý definoval C. Shannon.Pozrieme sa teraz na vlastnosti entropie. Začneme skúmaním funkcie p lg 1/p.Vypočítame deriváciu funkcie p lg 1/p a určíme jej extrémy (obr. 1):d(p lg 1/p)dp= lg 1/p − lg e = 0,ked’že funkcia p lg 1/p je rastúca na intervale 〈0, 1/e) a klesajúca na intervale (1/e, 1〉,na<strong>do</strong>búda v bode p = 1/e maximum (≈ 0.5307378454). V bode 0 na<strong>do</strong>búda funkcia p lg 1/pna<strong>do</strong>búda hodnotu 0 (L´Hospitalovo pravidlo). Často budeme pracovat’ so zdrojom, ktorýmá binárnu abecedu a rozdelenie pravdepo<strong>do</strong>bností p, 1 − p. Entropia sa v tomto prípadedá vyjadrit’ formulou:H 2 (p) = p lg 1/p + (1 − p) lg 1/(1 − p).Funkcia H 2 (p) (obr. 2) <strong>do</strong>sahuje maximálnu hodnotu (=1) pre p = (1 − p) = 1/2.Zhrnieme stručne podstatné vlastnosti entropie.


2170.50.40.30.20.100.2 0.4 0.6 0.8 1pObrázok 16.1: Graf funkcie p · lg1/p10.80.60.40.20 0.2 0.4 0.6 0.8 1pObrázok 16.2: Graf funkcie H 2 (p)


218 KAPITOLA 16. ENTROPIA A MNOŽSTVO INFORMÁCIEVeta 16.0.1. Nech je daný zdroj S, s abece<strong>do</strong>u Σ S = {s 0 , . . . , s m−1 } a rozdelením pravdepo<strong>do</strong>bnostíP = {p 0 , . . . , p m−1 }, m ≥ 1; entropia zdroja H 2 (S) je definovaná formulouPotom pre H 2 (S) platí:H 2 (S) =m−1∑i=0p i lg 1/p i .1. H 2 (S) je reálna nezáporná funkcia,2. H 2 (S) = 0 práve vtedy, ak existuje také i, že p i = 1 a p j = 0 pre i ≠ j,3. H 2 (S) ≤ m.Dôkaz. Prvé dve tvrdenia sú očividné a ich dôkazy prenechávame čitatel’ovi. Dokážemetretie tvrdenie. Použijeme Lagrangeovu metódu neurčitých koeficientov. Nechf(p 0 , p 1 , . . . , p m−1 ) = 1 m−1ln 2 ·∑i=0p i ln(1/p i ) + λ ·( m−1)∑p i − 1i=0Vypočítame parciálne derivácie funkcie f(p 0 , p 1 , . . . , p m−1 ) a položíme ich rovné nule:Z poslednej rovnosti vyplýva∂f= 1∂p i ln 2 [ln(1/p i) − 1] + λ = 0, i = 0, . . . m − 1.λ = 1ln 2 [1 − ln(1/p i)] i = 0, . . . m − 1.Ked’že λ je konštanta, to znamená, že pre l’ubovol’né i, j platí p i = p j a teda p i = 1/m prei = 0, . . . , m − 1. To znamená, že entropia <strong>do</strong>sahuje maximálnu hodnotu H 2 (S) = m prerovnomerné rozdelenie pravdepo<strong>do</strong>bností.


Zoznam obrázkov2.1 Shannonov model komunikačného systému . . . . . . . . . . . . . . . . . . 112.2 Zovšeobecnený model komunikačného systému . . . . . . . . . . . . . . . . 122.3 Signál . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142.4 Šum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.5 Prijatý signál . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163.1 Ohodnotený binárny strom . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2 Konečný automat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.3 Kó<strong>do</strong>vanie s predpoved’ou . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527.1 Binárny symetrický kanál bez pamäte . . . . . . . . . . . . . . . . . . . . . 768.1 Kó<strong>do</strong>vanie správy pomocou lineárneho kódu s generujúcou maticou G . . 909.1 Kó<strong>do</strong>vé slovo systematického cyklického kódu . . . . . . . . . . . . . . . . . 11210.1 LFSR so spätnou väzbou zadanou Λ(x) . . . . . . . . . . . . . . . . . . . . . 15010.2 LFSR R (1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15010.3 LFSR R (3) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15110.4 LFSR R (5) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15210.5 LFSR R (7) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15210.6 LFSR R (10) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15316.1 Graf funkcie p · lg1/p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21916.2 Graf funkcie H 2 (p) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219219


220 ZOZNAM OBRÁZKOV


Zoznam tabuliek9.1 Polynómy cyklických kó<strong>do</strong>v . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139.2 Váhy slov Golayovho (23,12)-kódu . . . . . . . . . . . . . . . . . . . . . . . 12710.1 Pole GF(3 3 ). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14510.2 Berlekamp-Massey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15912.1 Efektívnost’ vybraných samoopravných kó<strong>do</strong>v . . . . . . . . . . . . . . . . . 17115.1 Polynómy stupňa 0, 1, 2, 3 nad pol’om GF(2) . . . . . . . . . . . . . . . . . . 20615.2 Polynómy stupňa 4 nad pol’om GF(2) . . . . . . . . . . . . . . . . . . . . . . 20715.3 Prvky pol’a GF(2)[x]/x 4 + x + 1 . . . . . . . . . . . . . . . . . . . . . . . . . 20715.4 Reprezentácia nenulových prvkov GF(2 4 ) . . . . . . . . . . . . . . . . . . . 21115.5 Mocniny prvku β pol’a GF(2 4 ) . . . . . . . . . . . . . . . . . . . . . . . . . . 21215.6 Minimálne polynómy prvkov pol’a GF(2 4 ) . . . . . . . . . . . . . . . . . . . 214221


Indexabeceda, 5zdroja, 9zdrojová, 9chyba dekódera, 15dĺžka slova, 5dekó<strong>do</strong>vanieúplné, 15na základe maximálnej pravdepo<strong>do</strong>bnosti,14neúplné, 15dekó<strong>do</strong>vanie error trapping, 116demodulátor, 12error trapping, 116informácia, 9iterácia jazyka, 6kladná, 6nezáporná, 6jazyk nad abece<strong>do</strong>u, 6kódblokový, 17nerovnomerný, 17prefixový, 22rovnomerný, 17rozdelitel’ný, 17Shannonov, 26sufixový, 23kód s opakovaním, 107kó<strong>do</strong>vaniezdroja, 10zdrojovej informácie, 10kompresia, 10bezstratová, 10so stratou informácie, 10komunikácia, 9222komunikačný systém, 9Shannonov model, 9MLD, 14nerovnost’ Kraftova - McMillanova , 23podslovo, 6koncové, 6počiatočné, 6vlastné, 6polynóm generujúci, 105polynóm kontrolný, 106prefix, 6prenosový kanál, 11prijímač, 12redundancia, 10rozdelitel’nost’ kódu, 17slovo, 5prázdne, 5zrkadlový obraz, 6správa, 9sufix, 6šum, 12údaje, 9zdrojšumu, 12informácie, 9zlyhaniedekódera, 15zret’azenie slov, 5


Literatúra[1] Adamek J. Foundation of Coding. John Wiley, Chichester, 1991.[2] Blahut R.E. Theory and practice of error control codes. Addison Wesley, 1984. ruskýpreklad, Moskva, Mir 1986.[3] Hamming R.W. Coding and Information Theory. Prentice Hall, New Jersey, 1980.[4] Havel V. and Holenda J. Lineární algebra. SNTL, Praha, 1-st edition, 1984.[5] Hoffner V. Úvod <strong>do</strong> teorie signálú. SNTL, Praha, 1-st edition, 1979.[6] Jablonskij S.V. and Lupanov O.B. Diskrétna matematika a matematické otázky kybernetiky.Mir, 1974, Moskva. (V ruštine).[7] Hall J.I. Notes on coding theory. www.math.msu.edu˜jhall, 2003. prednášky.[8] Katriňák T. et al. Algebra a teoretická aritmetika, volume 1. SNTL a Alfa, Praha,Bratislava, 1-st edition, 1985.[9] Katriňák T. et al. Algebra a teoretická aritmetika, volume 2. SNTL a Alfa, Praha,Bratislava, 1-st edition, 1986.[10] Lidl R. and Niederreiter H. Introduction to finite fields and their applications. CambridgeUniversity Press, Cambridge, revised edition, 1994.[11] MacKay D.J.C. Information Theory, Inference and Learning Algorithms. CambridgeUniversity Press, Cambridge, 4-th edition, 2005.[12] Peterson W.W. and Wel<strong>do</strong>n E.J. Error Correctin Codes. MIT Press, Cambridge, 2-ndedition, 1972.[13] Rektorys K. et al. Přehled užité matematiky. SNTL, Praha, 4-th edition, 1981.[14] Rényi A. Teorie pravděpo<strong>do</strong>bnosti. Academie, Praha, 1972.[15] van Lint J.H. Introduction to Coding Theory. Springer Verlag, Berlin, 3-rd edition,1999.[16] X.Xxx. Error-correcting codes. www.xxx.edu, 2002. rukopis prenášok.223

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!