255 lines
No EOL
6.5 KiB
Markdown
255 lines
No EOL
6.5 KiB
Markdown
**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 |