Samoopravné kódy, k čemu to je

Podobné dokumenty
[1] samoopravné kódy: terminologie, princip

[1] samoopravné kódy: terminologie, princip

Teorie informace a kódování (KMI/TIK) Reed-Mullerovy kódy

Odpřednesenou látku naleznete v kapitole 3.3 skript Diskrétní matematika.

8 Kořeny cyklických kódů, BCH-kódy

(ne)závislost. α 1 x 1 + α 2 x α n x n. x + ( 1) x Vektoru y = ( 1) y říkáme opačný vektor k vektoru y. x x = 1. x = x = 0.

1 Co jsou lineární kódy

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Hammingovy kódy. dekódování H.kódů. konstrukce. šifrování. Fanova rovina charakteristický vektor. princip generující a prověrková matice

Matematika IV 10. týden Kódování

BCH kódy. Alena Gollová, TIK BCH kódy 1/27

Soustavy linea rnı ch rovnic

[1] x (y z) = (x y) z... (asociativní zákon), x y = y x... (komutativní zákon).

Informatika Kódování. Obsah. Kód. Radim Farana Podklady předmětu Informatika pro akademický rok 2007/2008

Základní pojmy teorie množin Vektorové prostory

Generující kořeny cyklických kódů. Generující kořeny. Alena Gollová, TIK Generující kořeny 1/30

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

Cyklické kódy. Definujeme-li na F [x] n sčítání a násobení jako. a + b = π n (a + b) a b = π n (a b)

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

Teorie informace a kódování (KMI/TIK)

Báze a dimenze vektorových prostorů

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

Vektorový prostor. Př.1. R 2 ; R 3 ; R n Dvě operace v R n : u + v = (u 1 + v 1,...u n + v n ), V (E 3 )...množina vektorů v E 3,

Matice. Je dána matice A R m,n, pak máme zobrazení A : R n R m.

DEFINICE Z LINEÁRNÍ ALGEBRY

[1] Motivace. p = {t u ; t R}, A(p) = {A(t u ); t R} = {t A( u ); t R}

Necht L je lineární prostor nad R. Operaci : L L R nazýváme

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

[1] Vzhledem ke zvolené bázi určujeme souřadnice vektorů...

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Matematika 2 pro PEF PaE

Vlastní číslo, vektor

Lineární algebra Operace s vektory a maticemi

VEKTORY. Obrázek 1: Jediný vektor. Souřadnice vektoru jsou jeho průměty do souřadných os x a y u dvojrozměrného vektoru, AB = B A

7. Důležité pojmy ve vektorových prostorech

1 Báze a dimenze vektorového prostoru 1

3 Lineární kombinace vektorů. Lineární závislost a nezávislost

Teorie informace a kódování (KMI/TIK)

Samoopravné kódy. Katedra matematiky a Institut teoretické informatiky Západočeská univerzita

1 Linearní prostory nad komplexními čísly

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Lineární algebra nad obecným Z m, lineární kódy

Kapitola 11: Vektory a matice:

Hammingův odhad. perfektní kódy. koule, objem koule perfektní kód. triviální, Hammingův, Golayův váhový polynom. výpočet. příklad

transformace je posunutí plus lineární transformace má svou matici vzhledem k homogenním souřadnicím [1]

grupa těleso podgrupa konečné těleso polynomy komutativní generovaná prvkem, cyklická, řád prvku charakteristika tělesa

1 Determinanty a inverzní matice

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

0.1 Úvod do lineární algebry

Věta o dělení polynomů se zbytkem

ALGEBRA. Téma 5: Vektorové prostory

0.1 Úvod do lineární algebry

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici

Matice. Předpokládejme, že A = (a ij ) je matice typu m n: diagonálou jsou rovny nule.

Afinní transformace Stručnější verze

1 Řešení soustav lineárních rovnic

maticeteorie 1. Matice A je typu 2 4, matice B je typu 4 3. Jakých rozměrů musí být matice X, aby se dala provést

Kódování signálu. Problémy při návrhu linkové úrovně. Úvod do počítačových sítí. Linková úroveň

Kódováni dat. Kódy používané pro strojové operace

[1] LU rozklad A = L U


INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Modernizace studijního programu Matematika na PřF Univerzity Palackého v Olomouci CZ.1.07/2.2.00/28.

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

1 Vektorové prostory.

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

Učební texty k státní bakalářské zkoušce Matematika Vlastní čísla a vlastní hodnoty. študenti MFF 15. augusta 2008

uvedení do problematiky i Bezpečnostní kódy: detekční kódy = kódy zjišťující chyby samoopravné kódy = kódy opravující chyby příklady kódů:

1 Mnohočleny a algebraické rovnice

příkladů do cvičení. V textu se objeví i pár detailů, které jsem nestihl (na které jsem zapomněl) a(b u) = (ab) u, u + ( u) = 0 = ( u) + u.

7. Lineární vektorové prostory

1 Mnohočleny a algebraické rovnice

Matematika B101MA1, B101MA2

Soustavy lineárních rovnic

Hammingův kód. Vladislav Kosejk. České vysoké učení technické v Praze Fakulta jaderná a fyzikálně inženýrská Detašované pracoviště Děčín

a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:

ftp://math.feld.cvut.cz/pub/olsak/linal/

z textu Lineární algebra

Matematika 1 MA1. 2 Determinant. 3 Adjungovaná matice. 4 Cramerovo pravidlo. 11. přednáška ( ) Matematika 1 1 / 29

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...

Řešení. Hledaná dimenze je (podle definice) rovna hodnosti matice. a a 2 2 1

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Proudové šifry a posuvné registry s lineární zpětnou vazbou

Kódování Obsah. Reedovy-Solomonovy kódy. Radim Farana Podklady pro výuku. Cyklické kódy.

Způsoby realizace této funkce:

1 Soustavy lineárních rovnic

Výběr báze. u n. a 1 u 1

Lineární algebra : Báze a dimenze

1 Lineární prostory a podprostory

IB112 Základy matematiky

x 2 = a 2 + tv 2 tedy (a 1, a 2 ) T + [(v 1, v 2 )] T A + V Příklad. U = R n neprázdná množina řešení soustavy Ax = b.

Teorie kódování se zabývá tím, jak rychle a spolehlivě přenášet informace z jednoho místa na druhé. Mezi její aplikace patří například minimalizace

Matematika B101MA1, B101MA2

PROSTORY SE SKALÁRNÍM SOUČINEM. Definice Nechť L je lineární vektorový prostor nad R. Zobrazení L L R splňující vlastnosti

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

6.1 Vektorový prostor

Lineárníkódy. MI-AAK(Aritmetika a kódy)

Cyklické kódy. Alena Gollová, TIK Cyklické kódy 1/23

19. Druhý rozklad lineární transformace

Transkript:

Úvod do kódování samoopravné kódy: terminologie, princip blokové lineární kódy Hammingův kód cyklické kódy [1] Samoopravné kódy, k čemu to je BI-LIN, kody, 18, P. Olšák [2] Data jsou uložena (nebo posílána do linky) kodérem podle určitého pravidla (kódování). Posléze jsou čtena dekodérem a restaurována do původní podoby. Kodér může přidat k datům doplňující informaci (zhruba řečeno kontrolní součet) a umožnit tím dekodéru, aby poznal, zda při přenosu dat došlo k chybě. Dokonce při vhodně zvoleném kódování může dekodér chybu opravit. Kód je množina slov (tj. úseků dat), které může generovat kodér. Příklady kódů: ASCII (slova sedmibitová, ne všechna) Morseova abeceda (slova různě dlouhá, efektivní přenos) UTF-8 (slova různě dlouhá, délka rozpoznaná podle prefixu) a) kody, 18, b) P. Olšák, FEL ČVUT, c) P. Olšák 2010, d) BI-LIN, e) L, f) 2009/2010, g)ä. Viz p. d. 4/2010 Binární, blokový kód BI-LIN, kody, 18, P. Olšák [3] Lineární kód BI-LIN, kody, 18, P. Olšák [4] je kód, kde jsou všechna slova stejně dlouhá. Definice: Necht A je množina znaků (abeceda). Slovo je konečná posloupnost znaků z množiny A. Počet znaků ve slově je délka slova. Kód K je množina všech slov, která generuje kodér. Prvek kódu K se nazývá kódové slovo. Blokový kód K obsahuje jen slova stejné délky. Binární kód je kód se slovy nad abecedou A = {0, 1}. Příklady: ASCII je binární blokový kód délky 7. Moreseovka není binární a není blokový kód. UTF-8 je binární, ale ne blokový kód. Dále se budeme zabývat jen binárními blokovými kódy Binární blokový kód K délky n je podmnožinou lin. prostoru Z n 2. Definice: Je-li K lienární podprostor Z n 2, pak se kód nazývá lineární. Je-li dimenze kódu k, pak mluvíme o lineárním (n, k) kódu. Příklad: Kód s kontrolním bitem parity je lineární. Kodér přidává nulu nebo jedničku k informačním bitům tak, aby kódové slovo obsahovalo sudý počet jedniček. Množina všech slov délky n se sudým počtem jedniček je lineární podprostor lineárního prostoru Z n 2.

Generující a kontrolní matice BI-LIN, kody, 18, P. Olšák [5] BI-LIN, kody, 18, P. Olšák [6] Výpočet jedné matice, známe-li druhou Generující matice lineárního kódu K je matice, která v řádcích obsahuje bázi kódu. Kontrolní matice lineárního kódu K je matice H, pro kterou platí, že K je řešením soustavy H x = o. Příklad: Předpokládejme lineární (4, 3) kód s kontrolním bitem parity (přidávaný na konec slova za tři informační bity). Generující matice G a kontrolní matice H jsou: 1 0 0 1 G = 0 1 0 1, H = ( 1 1 1 1 ) 0 0 1 1 Pozorování: Generující matice (n, k) kódu je typu (k, n) a kontrolní matice je typu (n k, n). Platí: G H T = O. Je-li dána generující (resp. kontrolní) matice, vyřešíme homogenní soustavu rovnic s touto maticí a bázi řešení zapíšeme do řádků kontrolní (resp. generující) matice. Pro systematický kód dokonce platí: Je-li G = (E C), pak H = (C T E ). Kodér a dekodér BI-LIN, kody, 18, P. Olšák [7] Příklad: opakovací kód BI-LIN, kody, 18, P. Olšák [8] Kodér lin. (n, k) kódu může převzít kódované slovo u (délky k) a vytvořit z něj kódové slovo v (délky n) maticovým násobením: v = u G. Dekodér může zkontrolovat přijaté slovo w pomocí testu: H w T = o. Kódování je systematické, jsou-li informační bity (ze slova u ) beze změny zkopírovány do kódového slova a za nimi následují kontrolní bity. Pak může dekodér (po provedeném testu) rekonstruovat informační bity zkopírováním prvních k pozic přijatého slova. Pozorování: Kódování je systematické, je-li generující matice tvaru G = (E C). Přidávané kontrolní bity pak kodér spočítá pomocí vzorce v = u C. Kodér vezme kódované slovo u délky k a vytvoří kódové slovo délky n = 2k tak, kódové slovo je tvaru ( u, u ), tj. kódované slovo je zdvojené. Generující matice tohoto kódu je G = (E E) a kontrolní matice je také tvaru H = (E E). Uvědomte si, jak je kód pomocí G generován a jak je pomocí H kontrolován. Nevýhoda: příliš mnoho kontrolních bitů za málo muziky.

Hammingova váha, vzdálenost BI-LIN, kody, 18, P. Olšák [9] Příklady BI-LIN, kody, 18, P. Olšák [10] Definice: Hammingova váha slova v je počet jeho nenulových znaků. Hammingova vzdálenost dvou slov v a w je počet pozic, kde jsou znaky odlišné (pro binární kód je to váha slova v + w). Kód K objevuje t chyb, pokud pro každé slovo u K a každé slovo e váhy menší nebo rovno t platí u + e K. Kód K opravuje t chyb, pokud pro každé slovo u K a každé slovo e váhy menší nebo rovno t platí: slovo u má od slova u + e nejmenší vzdálenost mezi kódovými slovy. Tvrzení 1: Je-li nejmenší vzdálenost mezi kódovými slovy d, pak kód objevuje d 1 chyb a opravuje t < d 2 chyb. Tvrzení 2: Nejmenší vzdálenost mezi kódovými slovy lineárního kódu je rovna nejmenší váze nenulového kódového slova. Kód s kontrolním bitem parity má nejmenší váhu nenulového slova 2, takže objevuje 2 1 = 1 chybu ve slově. Opravuje méně než 2/2 chyb, tedy neopravuje žádnou chybu. Opakovací kód má rovněž nejmenší váhu nenulového slova 2. Aby kód dokázal opravit jednu chybu ve slově, musí mít nejmenší váhu neulového slova rovnu třem. Syndrom BI-LIN, kody, 18, P. Olšák [11] Hammingův kód BI-LIN, kody, 18, P. Olšák [12] Dekodér vyhodnotí s = H w T. Tomuto vektoru s říkáme syndrom přijatého slova w. Přijaté slovo je kódové, právě když má nulový syndrom. Kód rozpozná chybu e, právě když s = H e T je nenulový vektor. Pozorování 1: Syndrom nezávisí na kódovém slově (jen na chybovém slově): H ( v + e ) T = H v T + H e T = o + H e T = H e T. Pozorování 2: Lin. kód má minimální vzdálenost dvou slov d, právě když každý výběr d 1 sloupců z kontrolní matice H je lineárně nezávislý. Jmenovitě: kód opravuje jednu chybu když každé dva sloupce kontrolní matice H jsou LN, tj. jsou nenulové a vzájemně různé (to v Z2 n k stačí). Kontrolní matice s touto vlastností je kontrolní matice Hammingova kódu. Sloupce kontrolní matice H jsou prvky Z n k 2. Počet nenulových a vzájemně různých sloupců je maximálně 2 n k 1. Počet sloupců udává délku kódu n, tedy n = 2 n k 1. Délku kódu je tedy vhodné volit jako mocninu dvou bez jedné. Dostáváme tak Hammingovy kódy: (7, 4), (15, 11), (31, 26), (63, 57),.... Příklad: Hammingův kód (7, 4) délka 7, informační bity 4: 1 0 0 0 0 1 1 0 0 0 1 1 1 1 H = 0 1 1 0 0 1 1, G = 0 1 0 0 1 0 1 0 0 1 0 1 1 0. 1 0 1 0 1 0 1 0 0 0 1 1 1 1 Výhoda tohoto uspořádání: index bitu, který je potřeba opravit, je zapsán v syndromu jako číslo ve dvojkové soustavě.

Rozšířený Hammingův kód BI-LIN, kody, 18, P. Olšák [13] Návrh počtu kontrolních bitů BI-LIN, kody, 18, P. Olšák [14] je Hammingův kód, ke kterému kodér přidává kontrolní bit parity. Například (8, 4) kód má matice 0 0 0 1 1 1 1 0 1 0 0 0 0 1 1 1 H = 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0, G = 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1. 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 Kód opraví jednu chybu (v prvních třech bitech je syndrom jako v (7, 4) kódu a čtvrtý bit musí být 1) a odhalí dvě chyby (v prvních třech bitech syndromu je nenulové číslo a čtvrtý bit je 0). Nejmenší vzdálenost dvou slov v tomto kódu je 4. Označme n délku binárního kódu, k dimenzi kódu (počet informačních bitů) a c = n k počet kontrolních bitů. Lineární kód nemůže opravit více rozdílných chyb než je počet nenulových syndromů. Těch je 2 c 1. Počet různých chyb s váhou jedna je n. Proto, chceme-li opravit jednu chybu, musí 2 c 1 n. Počet různých chyb (včetně stavu bez chyby ) s váhou nejvýše m je rovno ( ) ( ) ( ) n n n + + + 0 1 m Chceme-li opravovat m chyb ve slově, musí tedy počet kontrolních bitů splňovat: ( ) ( ) ( ) n n n 2 c + + + 0 1 m Kódy navržené tak, že zde nastává rovnost, se nazývají perfektní. Cyklické kódy BI-LIN, kody, 18, P. Olšák [15] Základní vlastnosti cyklického kódu BI-LIN, kody, 18, P. Olšák [16] jsou běžně užívané samoopravné kódy (např. při zápisu/čtení CD). Viz google: CRC (cyclic redundancy check). Definice: Kód K se nazývá cyklický, pokud je lineární a navíc je-li v kódové slovo, pak cyklický posun v je také kódové slovo. Vhodná matematická reprezentace slov délky n jsou polynomy: v = (a0, a 1, a 2..., a n 1 ) v(x) = a 0 + a 1 x + a 2 x 2 + + a n 1 x n 1 Cyklický posun slova v o jednu pozici popíšeme násobením polynomu v(x) polynomem x a ztotožněním x n = x 0, neboli násobením v okruhu Z p [x]/(x n 1). Od této chvíle nerozlišujeme mezi pojmem slovo a polynom. Definice: Nenulový polynom cyklického kódu nejmenšího stupně nazýváme generující polynom. Tvrzení: Je-li K cyklický kód délky n a g je jeho generující polynom, pak K = {f g; st f < n st g} Důkaz: v = (f m 1 x m 1 + + f 1 x + f 0 ) g je lineární kombinace cyklických posunů, takže leží v K. Obráceně, necht v K, pak vydělíme v polynomem g se zbytkem: v = f g + z, protože v K, f g K, musí z K. Protože st z < st g a polynom g má nejmenší stupeň, musí z = 0.

Vlastnosti generujícího polynomu BI-LIN, kody, 18, P. Olšák [17] Tvrzení: Necht g je generující polynom (n, k) cyklického kódu K. polynom g má stupeň n k, {g, x g, x 2 g,..., x k 1 g} je báze kódu, polynom x n 1 je dělitený polynomem g. Důkaz: K = {f g; st f < n st g}, takže dim K = n st g, neboli stupěň g = n dim K. Puntík druhý: zřejmé. Puntík třetí: polynom x n 1 vydělíme polynomem g se zbytkem. V polynomech mod x n 1 je zbytek roven f g, takže leží v kódu a má menší stupeň, než g, takže zbytek je nulový. BI-LIN, kody, 18, P. Olšák [18] Generující polynom: postačující podmínka Tvrzení: Aby byl polynom g generující polynom nějakého cyklického kódu, stačí, aby dělil polynom x n 1 beze zbytku. Důkaz: Zjistíme, že lin. obal všech cyklických posunů g neobsahuje nenulový polynom st. menšího než g. Necht f je libovolný polynom. f g = z mod (x n 1), tj. f g = u (x n 1) + z Je třeba ověřit, že z = 0 nebo st z st g. Protože je f g dělitelný g a u (x n 1) je dělitelný g, musí též z být dělitelný g, takže z = v g. Návrh cyklického kódu: Zvolíme délku bloku n, rozložíme polynom x n 1 na součin ireducibilních polynomů a generující polynom g zvolíme jako součin některých takto nalezených ireducibilních polynomů. Stupeň g je počet kontrolních bitů kódu. Úmluva: Všechny gen. polynomy stejného kódu se liší až na skalární násobek. Volme takový, co má u nejvyšší mocniny jedničku. Odhalení souvislé chyby BI-LIN, kody, 18, P. Olšák [19] Příklad: Cyklický Hammingův kód BI-LIN, kody, 18, P. Olšák [20] Souvislá chyba délky t je chyba měnící kódové slovo v úseku některých po sobě jdoucích t bitů, jinde je slovo nezměněno. Počet chyb (váha chybového slova) nemusí být t, ale je menší nebo rovna t. Pozorování: Cyklický (n, k) kód odhaluje všechny souvislé chyby délky n k. Důkaz: Na souvislou chybu e můžeme provést (opakovaně) cyklický posun a získat polynom e, který je stupně menšího než n k. Takže e ani e není kódové slovo. Poznámka: toto je důvod, proč se v praxi používají cyklické kódy. Chyby se totiž rády v konkrétním technickém prostředí soustřed ují do bloků (drupouty, škrábance na CD atd.). Existují cyklické (n, k) kódy, které navíc umějí opravit všechny souvislé chyby délky (n k)/2. Sestavme (7, 4) cyklický kód, který má generující polynom x 3 +x+1. Je to generující polynom, protože dělí polynom x 7 1. Kód má následující generující a kontrolní matici 1 1 0 1 0 0 0 1 0 1 1 1 0 0 G = 0 1 1 0 1 0 0 0 0 1 1 0 1 0, H = 0 0 0 1 1 0 1 1 1 1 0 0 1 0 0 1 1 1 0 0 1 takže vidíme, že H má různé a nenulové sloupce. Je to tedy Hammingův (7, 4) kód. Hammingův (7, 4) kód, který kóduje podle této G a používá tuto kontrolní matici H umí odhalit i tři souvislé chyby. Od Hammingova kódu ze strany [12] se liší pořadím bitů kódového slova.,

Generující a kontrolní matice BI-LIN, kody, 18, P. Olšák [21] Kodér a dekodér cyklického kódu BI-LIN, kody, 18, P. Olšák [22] Protože cyklický kód má bázi g, x g, x 2 g,..., x k 1 g, kde g je generující polynom, g(x) = g 0 +g 1 x+g 2 x 2 + +g n k x n k, je generující matice tvaru g 0 g 1 g 2... g n k 0 0... 0 0 0 g 0 g 1... g n k 1 g n k 0... 0 0 G = 0 0 g 0... g n k 2 g n k 1 g n k... 0 0...... 0 0 0...... g 0 g 1... g n k 1 g n k Polynom h = (x n 1)/g se nazývá kontrolní polynom. Dá se ukázat, že matice s koeficienty kontrolního polynomu h k, h k 1,..., h 1, h 0 umístěnými (v tomto pořadí) opakovaně podél vedlejší diagonály, je maticí kontrolní. Ta se v případě cyklických kódu v dekóderu příliš nevyužívá. Kódování podle generující matice není systematické. Kodér z informačních bitů u vytvoří kódové slovo u G. Fakticky tedy vytváří kódové slovo ve tvaru u g. Dekodér spočítá syndrom přijatého slova jako zbytek po dělení generujícím polynomem. Je-li nulový, je přijaté slovo kódové. Výsledek dělení obsahuje informační bity. Pozorování: Syndrom nezávisí na kódovaném slovu, ale pouze na chybě: f g + e = s 1 mod g, e = s 2 mod g, pak s 1 = s 2. Důkaz: f g + e = r 1 g + s 1, e = r 2 g + s 2. s 1 s 2 je násobek g se stupněm menším, takže s 1 s 2 = 0. Systematické kódování BI-LIN, kody, 18, P. Olšák [23] BI-LIN, kody, 18, P. Olšák [24] Zbytek po dělení polynomu polynomem Kodér z informačních bitů (u 1, u 2,..., u k ) sestaví polynom: u(x) = u 1 x n 1 + u 2 x n 2 + + u k 1 x n k+1 + u k x n k, vypočítá z jako zbytek po dělení u polynomem g a odešle kódové slovo u z. Proč je kódové? Je u = f g + z. Protože f g je násobek g, musí i u z být násobek g. Navíc součet u z nepoškodí posledních k informačních bitů. Dekodér spočítá syndrom s jako zbytek po dělení přijatého slova polynomem g. Je-li s = 0, je přijaté slovo kódové. Posledních k bitů obsahuje informaci. O analýze syndromu si povíme za chvíli. se v případě polynomů nad Z 2 hledá snadno. V příkladu zapisujeme bity v opačném pořadí než dosud, tj. (a n 1, a n 2,..., a 1, a 0 ) a n 1 x n 1 + a n 2 x n 1 + + a 1 x + a 0. Příklad: Necht g = (1011). Chceme kódovat informaci (1111). Sestavíme polynom u = (1111000) a dělíme ho polynomem g: kodér: dekodér: 1111000 1111111 1011 1011 0100000 0100111 1011 1011 0001100 0001011 1011 1011 0000111 = z, u z = 1111111 0000000 = s (syndrom)

Analýza syndromu BI-LIN, kody, 18, P. Olšák [25] Analýza syndromu podle Meggitta BI-LIN, kody, 18, P. Olšák [26] Sestavíme tabulku chyb a jejich syndromů: e 1 s 1, e 2 s 2,..., e m s m. Tabulku vyplníme (dřív, než začneme kódovat) tak, že pro každou chybu e i spočítáme zbytek při dělení polynomem g a dostaneme s i. Kdybychom měli v paměti uloženu tuto tabulku, pak pro každý syndrom s i dekodér najde zpětně e i a přijaté slovo w opraví takto: v = w e i. Problém: pamět ová náročnost + nutnost pro každé přijaté slovo prohledat tabulku. Učiňme pozorování na příkladu (7, 4) cyklického kódu. Tabulka e i s 1, která obsahuje všechny chyby váhy 1, vypadá takto: e 1 = x 0 s 1 = 1 e 2 = x 1 s 2 = x e 3 = x 2 s 3 = x 2 e 4 = x 3 s 4 = x + 1 e 5 = x 4 s 5 = x 2 + x e 6 = x 5 s 6 = x 2 + x + 1 e 7 = x 6 s 7 = x 2 + 1... syndrom posledního bitu Pro syndromy platí: s i+1 = x s i mod g. Přitom s 8 = s 1. Je tedy možné protočit syndromy postupnou aplikací operace x s i mod g. V jednom okamžiku se z každého syndromu stane syndrom posledního bitu. Děláme-li současně cyklický posun přijatého slova, dostal se opravovaný bit na poslední pozici. Opravíme ho tam. Algoritmus podle Meggitta BI-LIN, kody, 18, P. Olšák [27] Korekce souvislých chyb BI-LIN, kody, 18, P. Olšák [28] Sestavme seznam všech syndromů, které odpovídají všem chybám, které mají na poslední pozici jedničku (seznam všech syndromů posledního bitu). Uložme tento seznam do paměti dekodéru. Seznam zdaleka neobsahuje všechny syndromy. Necht délka kódu je n. Dekodér provede postupně n cyklických posunů přijatého slova (tím ho dostane nakonec do původního stavu) a současně cyklicky protáčí syndrom podle vzorce s i+1 = x s i mod g. Kdykoli se sydrom shoduje s některým syndromem posledního bitu (ze seznamu), opraví dekodér poslední bit (cyklicky pounutého) přijatého slova. Opravuje-li kód jedinou chybu, obsahuje seznam jediný syndrom posledního bitu. Opravuje-li dvě chyby, pak seznam obsahuje n syndromů. Výpočet probíhá s lineární složitostí (existuje dobře popsaná hw implementace pomocí hradel). Existují cyklické kódy, které opravují souvislé chyby délky t. Dá se ukázat, že pro takové kódy platí: pokud při protáčení syndromu dospějeme k syndromu stupně menšího než t, pak lze naráz opravit v odpovídajícím (cyklicky posunutém) přijatém slově všechny kontrolní bity přímo podle (protočeného) syndromu. Inspirace: podívejte se na první řádek tabulky na str. [26].

Příklady větších cyklických kódů BI-LIN, kody, 18, P. Olšák [29] Golay code je perfektní kód opravující tři chyby. Je to cyklický (23, 12) kód s generujícím polynomem: 1 + x 2 + x 4 + x 5 + x 6 + x 10 + x 11 CRC 32 je metoda počítání kontrolních součtů (syndromů) dat libovolné délky s generujícím polynomem: 1 + x + x 2 + x 4 + x 5 + x 7 + x 8 + x 10 + x 11 + x 12 + x 16 + x 22 + x 23 + x 26 + x 32 K hlubšímu zkoumání této problematiky můžete použít: Jiří Adámek: Foundations of Coding, A Wiley-Interscience publication, 1991, ISBN 0-471-62187-0. Poznámka: Prof. Jiří Adámek byl v letech 1990 1994 vedoucí naší katedry, nyní působí na University of Braunschweig.