**Př. 1**: $\mathbb{Z}_{5}$

$$
A = \begin{bmatrix}
1 & 4 & 1 & 1 & 1 \\
2 & 4 & 0 & 0 & 1 \\
0 & 2 & 1 & 1 & 1
\end{bmatrix}
\begin{matrix}
\cdot \space 2 \\
\cdot \space 1 \\
\cdot \space 4
\end{matrix}
$$

$$
u = \begin{bmatrix}
2 & 1 & 4
\end{bmatrix}^\text{T}
$$


Získání vektoru $v$:
- násobíme matici $A$ vektorem $u$
	- $v = G^\text{T} \cdot u$
	- vynásobíme řádky a sečteme sloupce

$$
\begin{bmatrix}
2 & 3 & 2 & 2 & 2 \\
2 & 4 & 0 & 0 & 1 \\
0 & 3 & 4 & 4 & 4
\end{bmatrix}
$$
$$
\begin{bmatrix}
4 & 0 & 1 & 1 & 2
\end{bmatrix}^\text{T}
$$

Kontrolní matice:

$$
H_{A} = \begin{bmatrix}
1 & 2 & 0 & 1 & 0 \\
1 & 2 & 1 & 0 & 0
\end{bmatrix}
$$

$$
H_{A} \cdot v = \begin{bmatrix}
0 & 0
\end{bmatrix}^\text{T}
$$

Chybový vektor:

$$
e = \begin{bmatrix}
0 & 2 & 0 & 0 & 0
\end{bmatrix}
$$

$$
w = v + e = \begin{bmatrix}
4 & 2 & 1 & 1 & 2
\end{bmatrix}^\text{T}
$$

Syndrom:
$$
s = H \cdot w = \begin{bmatrix}
4 & 4
\end{bmatrix}^\text{T}
$$

**Př. 2**: Navrhněte binární lineární kód, který umožní zakódovat šestiprvkové informační části tak, aby bylo možné **současně** opravovat jednoduché a detekovat dvojité chyby.

Pozn.: Musíme vyjít od toho, jakou musí mít kód minimální Hammingovskou vzdálenost $d_{0}$. Potom si uvědomíme, jestli existují nějaké standardní kódy, které to splňují. Pokud neexistují, tak použijeme opakovací kód.

Požadavky:
- jednoduchá chyba - opravit
- dvojitá chyba - detekovat

Použitelné kódy:
- $d_{0} = 1 \dots$ _nedává smysl_
- $d_{0} = 2 \dots$ parita
- $d_{0} = 3 \dots$ Hammingův kód (i zkrácený)
- $d_{0} = 4 \dots$ rozšířený Hammingův kód (i zkrácený)
- $d_{0} \geq 5 \dots$ opakovací kód

$$
e_{i} = \begin{bmatrix}
0 & \dots & 0 & 1 & 0 & \dots & 0
\end{bmatrix}^\text{T}
$$

$$
s = H \cdot w = H \cdot (v + e_{i}) = H \cdot v + H \cdot e_{i} = H \cdot e_{i} = H_{0,i}
$$

$$
H = \left[\begin{array}{c:c}
-B^\text{T} & I_{n-k}
\end{array}\right]
$$
- v matici $H$ jsou sloupce s více než jednou jedničkou

$$
G = \left[\begin{array}{c:c}
I_{k} & B
\end{array}\right]
$$
- v $B$ alespoň dvě jedničky

Opravování jednonásobných chyb:
- $k = 6$ (počet informačních prvků)
- počet syndromů $2^r \geq 1 + k+r$
	- 1 syndrom pro bezchybný přenos
	- $k+r$ syndromů pro každý prvek
	- $r = n-k$

Hledání $r$:
- $2^r \geq 1 + 6 + r$
- $2^r \geq r + 7$
- $r = 4$

$$
G = \left[\begin{array}{cccccc:cccc|c}
1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 \\
0 & 1 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 1 & 1 \\
0 & 0 & 1 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 1 \\
0 & 0 & 0 & 1 & 0 & 0 & 0 & 1 & 1 & 1 & 0 \\
0 & 0 & 0 & 0 & 1 & 0 & 1 & 0 & 0 & 1 & 1 \\
0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 1 & 0 & 1
\end{array}\right] \quad \begin{matrix}
3 \\
5 \\
6 \\
7 \\
9 \\
10
\end{matrix}
$$

Pozn.: Při vyplňování druhé části matice začínáme číslem 3 a nesmíme přidávat mocniny 2. Přidáme poslední sloupec, který je paritní, díky němuž můžeme detekovat dvojnásobné chyby.

Vytvoříme **kontrolní matici**:

$$
H_{R} = \left[\begin{array}{cccccc:ccccc}
0 & 0 & 0 & 0 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
0 & 1 & 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
1 & 0 & 1 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 0 \\
1 & 1 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 1 & 0 \\
1 & 1 & 1 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 1
\end{array}\right]
$$

$$
H = \left[\begin{array}{cccccc:cccc:c}
0 & 0 & 0 & 0 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
0 & 1 & 1 & 1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
1 & 0 & 1 & 1 & 0 & 1 & 0 & 0 & 1 & 0 & 0 \\
1 & 1 & 0 & 1 & 1 & 0 & 0 & 0 & 0 & 1 & 0 \\
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1
\end{array}\right]
$$

Přidáváme poslední řádek jedniček a poslední sloupec nul.

**Zakódování dat**:
- $u = \begin{bmatrix} 1 & 1 & 0 & 0 & 0 \end{bmatrix}^\text{T}$
- $v = \left[\begin{array}{cccccc:ccccc} 1 & 1 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 \end{array}\right]^\text{T}$
- pro zjištění druhé části $v$ sečteme první dva řádky matice $G_{R}$

**Jednoduchá chyba**:
- $e = \left[\begin{array}{ccccc:cccc} 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \end{array}\right]^\text{T}$
- $w = \left[\begin{array}{ccccc:cccc} 1 & 1 & 0 & 0 & 0 & 1 & 1 & 1 & 0 & 0 \end{array}\right]^\text{T}$
- $s = H_{R} \cdot w$

Pozn.: Při výpočtu sčítáme hodnoty ve sloupcích určených vektorem $w$ po jednotlivých řádcích, výsledkem je syndrom $s$.

$$
s = \begin{bmatrix}
1 & 0 & 0 & 0 & 0
\end{bmatrix}^\text{T}
$$

Pozn. 2: V případě jednoduché chyby je syndrom roven řádku kontrolné matice.

**Dvojitá chyba**:
- $e' = \left[\begin{array}{ccccc:cccc} 0 & 0 & 0 & 0 & 1 & 1 & 0 & 0 & 0 & 0 \end{array}\right]^\text{T}$
- $w' = \left[\begin{array}{ccccc:cccc} 1 & 1 & 0 & 0 & 1 & 1 & 1 & 1 & 0 & 0 \end{array}\right]^\text{T}$

$$
s' = \begin{bmatrix}
0 & 0 & 1 & 0 & 1
\end{bmatrix}^\text{T}
$$

Pozn.: Tento řádek v kontrolní matici nenajdeme.

**Př. 3**: Sdělovací kanál přenáší 120 binárních znaků za sekundu. Zdroj generuje 100 binárních znaků za vteřinu. Navrhněte lineární binární kód, který umožní opravovat jednoduché chyby.

Řešení: Hammingův kód vyhovující podmínce $2^r = k + r + 1$.

H. kód (7, 4) - 4 informační
- $100$ znaků/s $\implies 25$ znaků/s $\implies 25 \cdot 7$ znaků/s $= 175$ znaků/s
- kanál tento přenos nezvládne

| r   | k   | n   | $2^r$ | k/n                |
| --- | --- | --- | ----- | ------------------ |
| 3   | 4   | 7   | 8     | 0.57               |
| 4   | 11  | 15  | 16    | 0.73               |
| 5   | 26  | 31  | 32    | 0.838 $\geq 0.833$ | 

Redundance $\rho = 1-\frac{k}{n}$
- $\frac{k}{n}$ - informační poměr

Potřebujeme informační poměr lepší než $\frac{k}{n} \geq \frac{100}{120} = 0.833$.

Počet informačních znaků vygenerovaných za jednotku času ... $k = 100$
Počet znaků po zakódování ... $n = 120$

**Př. 4**: Navrhněte lineární kód, který umožní kódovat tříprvkové informační části tak, aby bylo možné **současně** opravovat dvojité a detekovat čtyřnásobné chyby.

Řešení: opakovací kód s počtem opakování 7

$$
G = \left[\begin{array}{ccc:c}
1 & 0 & 0 & 111111 &  &  \\
0 & 1 & 0 &  & 111111 &  \\
0 & 0 & 1 &  &  & 111111 
\end{array}\right]
$$

šířka: 21, výška: 3

$w = [w_{1} w_{2} w_{3} \dots w_{21}]^\text{T}$
- $\widehat u_{1} = w_{1}$
- $\widehat u_{1} = w_{4}$
- $\widehat u_{1} = w_{5}$
- $\widehat u_{1} = w_{6}$
- $\widehat u_{1} = w_{7}$
- $\widehat u_{1} = w_{8}$
- $\widehat u_{1} = w_{9}$

$\widehat u_{1} = \text{majorita}(\{w_{1}w_{4}w_{5}w_{6}w_{7}w_{8}w_{9}\})$
- opravuji
	- 7:0
	- 6:1
	- 5:2
- detekuji
	- 4:3