402 lines
22 KiB
Markdown
402 lines
22 KiB
Markdown
# 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$**
|
|
|