Přidání 4. části poznámek z TI

This commit is contained in:
Filip Znachor 2024-01-18 07:33:41 +01:00
parent 3c374fdef0
commit bf2c303a5c

402
KIV TI/04. Kódování.md Normal file
View file

@ -0,0 +1,402 @@
# Kódování
Hlavní důvod pro kódování:
- přizpůsobení zdrojových řetězců vstupní abecedě kanálu
Další důvody:
- efektivnější využití sdělovacího kanálu či paměťového média
- zvýšení odolnosti dat proti rušení
- šifrování zpráv
**Kódování pro kanál bez šumu**
- předpoklad: kanál je stoprocentně spolehlivý
- zvyšuje efektivitu využití kanálu/média snižováním redundance
- umožňuje bezeztrátovou kompresi dat
**Kódování pro kanál se šumem**
- vkládá do zpráv redundantní informace
- za určitých pravděpodobnostních předpokladů umožňují
- detekci chyb (detekční kódy)
- opravy chyb (korekční = samoopravné kódy)
**Kódování** - definice
- $A = \{a_{1}, a_{2}, \dots, a_{r}\}$ - abeceda zdroje ($r$ prvků)
- $B = \{b_{1}, b_{2}, \dots, b_{s}\}$ - vstupní abeceda kanálu (kódová abeceda, $s$ prvků)
- $r > s$
+ kódováním znaků rozumíme prosté (injektivní) zobrazení $K : A \to B^+$
+ blokovým kódováním délky $n$ rozumíme zobrazení $K^* = A^* \to B^*$, jež je jednoznačně určeno kódováním znaků $K$ takto
+ $K^*(a_{1} a_{2} \dots a_{l}) = K(a_{1}) \cdot K(a_{2}) \cdot \dots \cdot K(a_{l}), \quad K^*(e) = e$
+ podmínka jednoznačné dekódovatelnosti
+ kódování retězců $K^*$ je prosté zobrazení
+ každý blokový kód je jednoznačně dekódovatelný
### Prefixové kódování
Prefixový kód je kód, ve kterém žádná kódová značka není začátkem jiné kódové značky.
- každý prefix. kód je jednoznačně dekódovatelný
- lze je dekódovat znak po znaku v reálném času přenosu bez nutnosti čekat na ukončení
Dekódování zvládne konečný automat s výstupní funkcí Mealyho typu
- **vstupní symboly**: vstupní abeceda kanálu
- **výstupní symboly**: zdrojová adresa a o neutrální symbol $u$
- **množina stavů** odpovídá prefixům kódových značek s výjimkou kódových značek samotných
- **počáteční stav** automatu S odpovídá předponě $e$
- přechodová funkce a výstupní funkce
- pokud je zpracován symbol, který doplní předponu reprezentovanou aktuálním stavem na kódovou značku, přejde automat do stavu S s tím, že vygenerovaný výstupní symbol odpovídá značce
- pokud doplněním nevzniká kódová značka, automat přejde do stavu odpovídajícímu nové předponě s tím, že na výstupu bude vygenerován neutrální symbol $u$
#### Kraftova nerovnost
$s^{-d_{1}} + s^{-d_{2}} + \dots + s^{-d_{r}} \leq 1$
- $s$ - počet prvků kódové abecedy
- $d_{i}$ - délka $i$-té kódové značky
- $r$ - počet prvků zdrojové abecedy
**Mc Millanova věta**
- Každé jednoznačně dekódovatelné kodování splňuje Kraftovu nerovnost.
Důsledek:
- prefixové kódy lze chápat jako dostatečně obecnou reprezentativní podtřídu jednoznačně dekódovatelných kódů (mají nejjednodušší mechanizmus dekódování)
- ke každému jednoznačně dekódovatelnému kódu existuje ekvivalentní prefixový kód
#### Kódy s minimální střední délkou
- pro efektivní využití kanálu vyžadováno, aby znaky s vyšší pravděpodobností měly menší délku a naopak
- exaktní ukazatel = střední délka kódové značky
- pro výpočet nutno znát pravděpodobnostní rozložení znaků zdrojové abecedy
$$
A = \{ a_{1}, a_{2}, \dots, a_{r} \}, \quad P(A) = (p(a_{1}), p(a_{2}), \dots, p(a_{r})), \quad\sum_{i=1}^{r} p(a_{i}) = 1
$$
Střední délka kódové značky kódu $K$ definována jako
$$\overline{d}(K) = \sum_{i=1}^r p(a_{i}) \cdot d(K(a_{i}))$$
- $a_{i}$ - písmeno zdrojové abecedy
- $p(a_{i})$ - pravděpodobnost výskytu písmena $a_{i}$ ve zprávách
- $K(a_{i})$ - kódová značka příslušející písmenu $a_{i}$
- $d(K(a_{i}))$ - délka kódové značky písmena $a_{i}$
**Huffmanův algoritmus konstrukce pref. kódu s min. střední délkou kódové značky**
- **vstupy**
- zdrojová abeceda $A$ o $r$ prvcích a její pravděpodobnostní rozložení $P(A)$
- kódová abeceda $B$ o $s$ prvcích
- **výstup**
- prefixové kódování $K : A \to B^+$ takové, že $\overline{d}(K)$ je minimální (tj. neexistuje jiíné kódování $K_{2}$, pro které by platilo $\overline{d}(K_{2}) < \overline{d}(K)$)
- **algoritmus**
1. prvky zdrojové abecedy seřadíme podle jejich pravděpodobnosti $p(a_{i})$ do nerostoucí posloupnosti
2. takto seřazené prvky rozdělíme do skupin
- začínáme od prvků s největší pravděpodobností
- skupiny budou mít $s - 1$ prvků
- výjimkou může být poslední skupina, která může mít $2 - s$ prvků
3. sdružíme prvky v poslední skupině a nahradíme je sdruženou skupinou, kterou zařadíme podle její součtové pravděpodobnosti na správné místo v posloupnosti
4. sdružíme posledních $s$ prvků v posloupnosti a nahradíme je sdruženou skupinou, kterou zařadíme podle její součtové pravděpodobnosti na správné místo do posloupnosti
5. bod 4 opakujeme, dokud nezískáme jedinou sdruženou skupinu se součtem 1
6. zpětným chodem po větvích $s$-árního stromu vytvořeného v bodech 3 až 5 přiřadíme kódové značky listům stromu, tj. znakům kódové abecedy
### Bezpečnostní kódy
**Modelové důsledky šumu**
- **záměna vyslaného znaku za jiný znak**
- příčiny: vnější elmg. rušení, tepelný šum, kosmické záření, ...
- **porušení synchronizace** (tj. ztráta znaku/vytvoření falešného znaku)
- příčiny: chyba přenosového kanálu
- bráno jako mimořádná událost, řešeno jinak než kódováním
**Detekce chyb v kódech**
- vložení redundance, například parity
- všechny n-tice je možné rozložit na dvě třídy
- **množina kódových značek**
- přijato v pořádku nebo došlo k takové chybě, že se vytvořila jiná kódová značka (není ji možné detekovat)
- **množina nekódových značek**
- při přenosu došlo k chybě, kterou příjemce detekuje
- společná vlastnost kódových značek může být např. sudý počet 1 ve značce (chybu v jedné pozici můžeme detekovat)
- kód tedy detekuje jednoduché chyby
+ $t$-násobnou chybou rozumíme libovolnou chybu, kde je počet chybně přenesených prvků menší nebo roven $t$
+ kód $t$-násobnou chybu detekuje právě tehdy, když je při přijmutí kódové značky s $t$-násobnou chybou vždy přijata nekódová značka
#### Hammingova vzdálenost
Hammingovou vzdáleností slov $u$ a $v$ stejné délky je počet pozic, ve kterých se slova liší.
**Minimální Hammingovou vzdáleností** kódu $K$ je nejmenší Hammingova vzdálenost mezi dvěma kódovými značkami kódu $K$.
- rozhoduje o tom, jaké chyby je kód schopen detekovat
- značení $d_{0}$
Blokový kód s minimální Hammingovou vzdáleností $d_{0}$ detekuje všechny chyby s násobností $t<d_{0}$.
- $d_{0} = 2 \implies$ detekuje jednoduché chyby
**Opravování chyb**
- za určitých podmínek je možné chyby i opravovat
- symetrický binární sdělovací kanál s bitovou chybovostí p - pravděpodobnost, že při přenostu **jednoho konkrétního** prvku došlo k chybě
- statisticky nezávislé chyby
- kód $K$ opravuje $t$-násobnou chybu právě tehdy, jestliže při vysílání libovolné kódové značky $v \in K$ a při libovolné $t$-násobné chybě má přijaté slovo $w \in T^n$ Hammingovu vzdálenost od vyslané kódové značky $v$ menší než od libovolné jiné kódové značky
- platí tedy: $\forall \, x \in K : x \neq v \implies d(v, w) < d(x, w)$
Blokový kód $K$ s minimální Hammingovou vzdáleností $d_{0}$ opravuje všechny chyby s násobností $t < d_{0} / 2$. Jinak řečeno, pro opravu $t$-násobné chyby musí mít minimální Hammingovou vzdálenost $d_{0} \geq 2 \cdot t + 1$.
Opakovací kód **liché** délky $n$ opravuje všechny chyby s násobností $t \leq \frac{n-1}{2}$, opakovací kód **sudé** délky $n$ opravuje všechny chyby s násobností $t \leq \frac{n-2}{2}$.
#### Binární lineární kód
Binární kód $K$ je lineárním kódem, jestliže je podprostorem lineárního prostoru $Z_{2}^n$.
- dimenze $k$ lineárního kódu = počet informačních prvků
- název: lineární (n, k) kód
Blokový kód s $K \subseteq T^n$ délky $n$ má $k$ informačních znaků (a $r = n-k$ kontrolních znaků) právě tehdy, jestliže existuje prosté zobrazení $\varrho$ množiny všech slov délky $k$ na množinu kódových značek $K$, tedy $\varrho : T^k \to K$.
- $\varrho : T^k \to K$ - kódování informačních znaků
- $u \in T^k$ - informační část
- $v \in K, v = \varrho(u)$ - kódová značka
- $(n, k)$ kód - kód s $k$ informačními a $n-k$ kontrolními znaky
Termín dekódování má dva významy:
- $\delta : T^n \to K$ - umožňuje opravy $t$-násobných chyb
- $\varrho^{-1} : K \to T^k$ - z kódové značky extrahuje informační část
Dekódování
- zpracování přijaté n-tice $u' = \varrho^{-1}(\delta(w))$, kde
- $w \in T^n$ je přijatá n-tice (ovlivněná šumem)
- $\delta(w) \in K$ je přijatá n-tice po opravě chyby (tedy kódová značka)
- $u' \in T^k$ je informační část extrahovaná z přijaté n-tice po opravě
Značení
- $u$ typu $k/1$ (sloupec o $k$ prvcích) - informační část
- $v$ typu $n/1$ (sloupec o $n$ prvcích) - kódová značka
- $e$ typu $n/1$ (sloupec o $n$ prvcích) - chybový vektor
- $w$ typu $n/1$ (sloupec o $n$ prvcích) - přijatá n-tice
- $s$ typi $(n-k)/1$ (sloupec o $n-k$ prvcích) - syndrom
- výsledek kontroly přijaté n-tice
- vektory se zapisují transponovaně do řádků
**Kontrolní matice**
- značena $H$, typu $(n-k)/n$
- vlastnosti
- řádky jsou lineárně nezávislé
- slovo $w$ je kódovou značkou, pokud $s = H \cdot w = 0$
**Generující matice**
- značena $G$, typu $k/n$
- každým řádkem je jeden prvek báze lineárního kódu
- kódování informační části: $v = G^T \cdot u$
- vlastnosti
- řádky jsou lineárně nezávislé
- každé kódové slovo je lineární kombinací řádků a je jednoznačně určeno informačními znaky
- ke generující matici $G$ vždy existuje kontrolní matice $H$ s vlastností $H \cdot G^T = 0$, není ale určena jednoznačně, může jich existovat více
**Minimální Hammingova vzdálenost v lineárním kódu $K$**
- min. Hammingova vzdálenost v kódu $K$: $d_{0}(K) = \min_{u,v \in K, u\neq v} d(u,v)$
- v případě, že $K$ je lineární kód
- $u$ a $v$ jsou kódové značky, které určují $d_{0}(K)$
- kódovými značkami je i opačná značka ($-u$) a součtová značka $v + (-u) = v-u$
- platí $d_{0} = d(u, v) = d(u-u, v-u) = d(0, v-u) = \Vert v-u\Vert$
- $\Vert v-u\Vert$ představuje počet nenulových prvků ve značce $v-u$, tj. Hammingovu váhu značky $v-u$
- minimální Hammingova vzdálenost v lineárním kódu je rovna minimální Hammingově váze nenulové značky
**Opravování chyb** podle syntromu
- dekóder provádí operaci $s = H \cdot w$
- pokud je $s = 0$, $w$ je kódovou značkou
- v opačném případě je detekována chyba
- pomocí hodnoty $s$ je možné zjistit místo chyby a opravit ji
- důsledek linearity kódu
- $s = H\cdot w = H\cdot(v+e) = H\cdot v + H\cdot e = 0 + H\cdot e = H\cdot e$
- syndrom závisí pouze na chybovém vektoru (ne na přijaté značce)
- lineární kód není schopen odhalit chyby s chybovým vektorem ve tvaru kódové značky
- podle syndromu určíme chybový vektor
- chybovým vektorům přiřadíme syndromy
- zobrazení $\omega : T^n \to T^{n-k}, \omega(e) = H \cdot e$
- ze syndromu nelze chybový vektor určit jednoznačně
- určíme tedy nepravděpodobnější chybový vektor
- z možných chybových vektorů vybereme $\hat{v}$ s nejmenší Hammingovou vahou
- reprezentanta dané chybové třídy (určené syndromem)
- chybu poté opravíme takto:
- $s = H\cdot w = s_{j}, \quad \hat{v} = w - \omega^{-1}(s_{j}) = w - \hat{e_{j}}$
- $\hat{v}$ je opravená kódová značka (nejpravděpodobněji odesílaná značka)
Počet zabezpečovacích prvků vs. násobnost opravovaných chyb
- binární lineární (n, k) kód
- pro opravu **t-násobných** chyb musí platit
- $2^{n-k} \geq 1 + n + {n \choose 2} + \dots + {n \choose t}$
- $1$ - nulový syndrom
- $n$ - syndromy pro chybové vektory s vahou 1
- $n \choose 2$ - syndromy pro chybové vektory s vahou 2
- $n \choose t$ - syndromy pro chybové vektory s vahou t
- počet kontrolních prvků je určen počtem informačních prvků a násobností opravovaných chyb
#### Hammingovy kódy
- opravují jednoduché chyby a přitom mají minimální redundanci pro opravu jednoduchých chyb
- v případě jednoduché chyby v $i$-tém znaku syndrom odpovídá $i$-tému sloupci kontrolní matice
**Kontrolní matice**
- nesmí obsahovat nulový sloupec
- nesmí obsahovat stejné sloupce
- obsahuje ve sloupcích všechna nenulová slova dané délky a žádné z nich se neopakuje
Při počtu kontrolních znaků $r = n-k$ pro binární Hammingův kód platí
- počet různých syndromů: $2^r$
- počet sloupců matice $H$: $2^r - 1$ (bez nulového slova)
- počet znaků v kódové značce: $n = 2^r - 1$
- počet informačních znaků ve značce: $k = n-r$
- platí rovnost $2^r = k + r + 1$
+ s roustoucím $r$ roste efektivita kódu
**Konstrukce matic**
- pro zadaný počet kontrolních prvků $r$ spočítáme $k$ z rovnosti $2^r = k + r + 1$
- systematická generující matice má $k$ řádků, $k+r$ sloupců a tvar $G = [I_{k}|B]$
- $I_{k}$ - jednotková matice řádu $k$
- řádky submatice $B$ budou naplněny $r$-bitovými řetězcemi, kde jsou alespoň dvě jedničky
- systematická matice $H$ má $r$ řádků a $k+r$ sloupců a tvar $H = [-B^T|I_{n-k}]$
- neexistuje nenulová značka (řádek) s menším počtem jedniček než tři $\implies d_{0} = 3$
**Zkracování H. kódů**
- je možné kódovat jen informační části o délce $k$ získané z rovnice $2^r = k + r + 1$ ($k = 4, 11, 26, 57, \dots$)
- pro jinou hodnotu $k$ provedeme zkrácení kódu
- najdeme počet zabezpečovacích znaků $r$ vyhovující nerovnici $2^r \geq k + r + 1$
- zkonstruujeme matice $G$ a $H$ pro $r$ zabezpečovacích prvků
- z matic vypustíme řádky a sloupce odpovídající nepotřebným informačním prvkům (z matice $G$ řádky, z matice $H$ sloupce)
**Rozšiřování kódů**
- lineární kód s lichou minimální Hammingovou vzdáleností $d_{0}$ lze rozšířit přidáním dalšího zabezpečovacího prvku - celkové kontroly parity (doplnění 0 nebo 1 na sudý počet jedniček ve značce)
- minimální Hammingova vzdálenost kódu po rozšíření bude $d_{0}+1$
- bude možné detekovat další násobnost chyb
- Pozor: u sudého se $d_{0}$ nezvětší
- rozšířený Hammingův kód umí
- jednoduché chyby opravovat a současně dvojité chyby detekovat nebo
- pouze detekovat trojité chyby
#### Ekvivalentní kódy
Dva blokové kódy $K$ a $K'$ délky $n$ jsou ekvivalentní, jestliže zároveň
- existuje vzájemně jednoznačné přiřazení mezi kódovými značkami obou kódů
- odpovídající si značky se navzájem liší jen záměnou pořadí prvků
Ke každému lineárnímu kódu existuje ekvivalentní systematický kód.
Postup
- $G$ má $k$ lineárně nezávislých řádků, $n > k$, matice má tedy i $k$ lineárně nezávislých sloupců
- pokud je lineárně nezávislých prvních $k$ sloupců $G$, vytvoříme matici $G'$ ekvivalentními řádkovými úpravami matice $G$
- tím získáme jinou bázi prostoru kódových značek generovaných maticí $G$, tedy jinou bázi téhož kódu
- pokud prvních k sloupců matice $G$ není lineárně nezávislých, provedeme takovou permutaci sloupců matice $G$, abychom dostali nezávislé sloupce do prvních k pozic; pak vytvoříme systematickou matici $G'$ ekvivalentními řádkovými úpravami (sloupcově permutované) matice $G$
- v tomto případě budou množiny značek generované maticemi $G$ a $G'$ různé, ale bude mezi nimi existovat vzájemně jednoznačné zobrazení dané provedenou záměnou sloupců matice
- kódy tedy budou ekvivalentní
#### Perfektní kódy
Lineární kód je perfektní pro opravu $t$-násobných chyb, jestliže všechna chybová slova váhy $\leq t$ jsou reprezentanty chybových tříd a neexistují žádné jiné chybové třídy.
- každému syndromu přísluší jedinečný chybový vektor váhy $\leq t$
- každému chybovému vektoru váhy $\leq t$ přísluší jedinečný syndrom
Perfektní kódy mají ze všech kódů pro opravu t-násobných chyb minimální redundanci.
Existuje jich jen málo
- Hammingovy kódy pro opravu jednoduchých chyb
- Golayovy kódy pro opravu trojnásobných chyb
- opakovací kódy s délkou značky $n = 2 \cdot t + 1$ pro opravu t-násobných chyb
**Oprava chyb u opakovacích kódů**
- předpokládejme systematický opakovací kód pro přenos čtyřprvkových informačních částí ($k = 4$) pro opravu dvojitých chyb ($t = 2$)
- potřebná minimální vzdálenost: $d_{0} = 2 \cdot t + 1 = 5$
- potřebný počet opakování = 5 $\implies$ délka značky $n = 5\cdot k = 20$
- jeden informační prvek je roven (v případě bezchybného přenosu) všem jeho 4 kopiím
- v případě chyby vybereme většinovou hodnotu
**Golayovy kódy**
- $G_{23}$ - pro opravu trojnásobných chyb
- generující matice s rozměry 12/23
- čtvercová submatice $B$ řádu 11 vznikla cyklickými posuvy prvního řádku doprava
- jedničky v prvním řádku na pozicích kvadrátů prvků tělese $Z_{11}$ (0, 1, 3, 4, 5, 9)
- každý chybový vektor váhy $t \leq 3$ generuje jiný syndrom
- kód tedy opravuje trojnásobné chyby
- $G_{24}$ - vznikne rozšířením kódu $G_{23}$ o celkovou kontrolu parity
- generující matice má rozměry 12/24
- v posledním řádku podmatice $B$ bude 11 jedniček
- jako kontrolní matici lze použít $H_{24} = G_{24}$
**Reed-Mullerovy kódy** $K_{r,m}$
- třída nesystematických kódů, které umožňují opravy předem zadaného počtu chyb
- současně jsou relativně snadné na dekódování
- vytvoření generující matice
- pro libovolná čísla $m \in N$ a $r \in N_{0}$, kdy $0 \leq r \leq m$, lze zkonstruovat matici o $n = 2^m$ sloupcích jako blokovou matici
- do matice $G$ se postupně dávají řádky z matic $G_{0}, G_{1}, \dots, G_{r}$
- $G_{0}$ obsahuje samé jedničky
- $G_{1}$ obsahuje polovinu nul a polovinu jedniček, poté další řádky, kde se poloviny opět rozdělují na poloviny
- $G_{2}$ obsahuje součin 1. a 2., 2. a 3., 3. a 1. řádku matice $G_{1}$
- $G_{3}$ obsahuje součin 1., 2. a 3. řádku matice $G_{1}$
- obecně platí
- $K_{0,m}$ - opakovací kód
- $K_{m-2,m}$ - rozšířený Hammingův kód
- $K_{m-1,m}$ - paritní kód
- $K_{m,m}$ je $Z_{2}^n$, kde $n = 2^m$
#### Cyklické kódy
Jsou zvláštním případem lineárních kódů.
- platí vše, co pro lineární kódy + něco navíc
S každou značkou $v \in K$ je prvkem kódu i cyklický posuv značky.
Značky budou reprezentovány polynomy místo vektorů.
- $v = [v_{0}v_{1}\dots v_{i}\dots v_{n-1}]^T$
- $v(x) = v_{0} + v_{1}x + \dots + v_{i}x^i + \dots + v_{n-1}x^{n-1}$
Násobení polynomů nad $x^n-1$:
- řeší se tím problém přetečení při posunu doprava (násobení)
- zavedeno speciální násobení $u(x) * v(x)$
- vlastnost $x^n = x^0 = 1$
**Generující mnohočlen** $g(x)$
- množina značkových polynomů tvořena všemi násobky generujícího
- polymony $g(x), x \cdot g(x), \dots, x^{k-1} \cdot g(x)$ tvoří bázi kódu $K$
- generující mnohočlen je nerozložitelný a primitivní (je dělitelem polynomu $x^n - 1$)
**Nesystematický cyklický kód**
- matice je tvořena polynomem a jeho posunem doprava na každém dalším řádku
- z tvaru matice $G$ je zřejmé, že se jedná o nesystematický polynom
- řádky v matici: $b_{0}, b_{1}, \dots, b_{k-1}$
**Kódování informační části**
- $v = \varrho(u) = u_{0} \cdot b_{0} + u_{1} \cdot b_{1} + \dots + u_{k-1} \cdot b_{k-1}$
- $v(x) = u_{0} \cdot g(x) + u_{0} \cdot x g(x) + \dots + u_{k-1} \cdot x^{k-1} g(x) = u(x) \cdot g(x)$
- u cyklických kódů přebírá úlohu generující matice generující mnohočlen $g(x)$
- informační část o $k$ prvcích převedeme na informační mnohočlen $u(x)$
- $u = [u_{0}u_{1}\dots u_{k-1}] \approx u(x) = u_{0} + u_{1} \cdot x + \dots + u_{k-1} \cdot x^{k-1}$
- zakódujeme: $v(x) = u(x) \cdot g(x)$
**Kontrola přijaté značky**
- u cyklických kódů se používá místo kontrolní matice kontrolní mnohočlen
- je jednoznačně určen generujícím mnohočlenem $g(x)$
- $h(x) = (x^n - 1) : g(x)$
- vždy beze zbytku
- každý značkový polynom $v(x) \in K$ vyhovuje podmínce $h(x) * v(x) = 0$
- kontrolní matici sestavíme z koeficientů kontrolního mnohočlenu $h(x)$
- vložíme do prvního řádku od konce (postupně $h_{0}, h_{1}, \dots, h_{k}$)
- na dalších řádkách posuneme o jednu pozici doleva
#### Systematické cyklické kódy
- tvoří se z nesystematických kódů
- prvky vektorů indexujeme zprava
- $u = [u_{k-1} u_{k-2} \dots u_{0}]$
**Kódování informační části**
- tento mnohočlen se poté vynásobí členem $x^{n-k}$
- projeví se to doplněním nul zprava k informační části
- vynásobený polynom se poté vydělí mnohočlenem $g(x)$
- pro podíl $q(x)$ a zbytek $r(x)$ poté platí
- $u(x) \cdot n^{n-k} = q(x) * g(x) + r(x)$
- levá strana rovnosti po přičtení $-r(x)$ je násobkem generujícího mnohočlenu $g(x)$
- je mnohočlenem reprezentujícím **kódovou značku**
- efektem je složení značky ze dvou částí
- informační a zabezpečovací
- kód takto vytvořený je proto systematický
**Kontrola přijaté značky**
- kontroluje se dělením generujícím mnohočlenem
- zbytek vyjde nulový, pokud nedošlo k chybě
**Důsledek cykličnosti**
- umožňují detekovat shluky chyb
- shlukovou chybou délky $b$ rozumíme takové chybové slovo $e$, jehož všechny chybové prvky ležé v úseku ohraničeném indexy $i$ a $i+b-1$, přičemž krajní prvky shluku jsou nenulové
- **cyklické kódy detekují všechny shluky chyb délky $b \leq n-k$**