# 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$**

