6.5 KiB
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
vektoremu
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á smysld_{0} = 2 \dots
paritad_{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ý prvekr = 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 maticeG_{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