Будем выделять категории “качества” кодов:
Отдельно выделим
Большинство известных кодов являются линейными блочным кодами. Напомним,
линейная операция над любыми двумя разрешёнными кодовыми словами даёт разрешённое кодовое слово.
Множество \(R\) и две бинарных операции \(+\) и \(\cdot\) называются вместе кольцом, если:
Нетривиальное поле, очевидно, не может содержать менее двух элементов.
Поле \((F, +_F, \cdot_F)\), множество \(V\) и операции \(+: V\times V\to V,\) \(\cdot: F\times V \to V,\) такие, что:
Один из наиболее широко известных линейных кодов.
Классическая конструкция:
Код Хэмминга (7, 4)
“Классический” вариант (как у Хэмминга)
\[\mathbf H = \begin{pmatrix} 0 & 0 & 0 & 1 & 1 & 1 & 1 \\ 0 & 1 & 1 & 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 0 & 1 & 0 & 1 \\ \end{pmatrix}\]
Каноническая форма
\(\mathbf H = \left(\begin{array}{c} \\ \\ \\ \end{array}\right.\)
\(\begin{array}{cccc} 1 & 1 & 0 & 1 \\ 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 1 \\ \end{array}\;\;\)
\(\left.\begin{array}{|ccc} & 1 & 0 & 0 \\ & 0 & 1 & 0 \\ & 0 & 0 & 1 \\ \end{array} \right)\)
Порождающая матрица:
Каноническая форма
\[\mathbf G^\T = \]
\(\begin{matrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \hline \end{matrix}\)
\(\begin{array}{cccc} 1 & 1 & 0 & 1 \\ 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 1 \\ \end{array}\;\;\)
Каноническая форма
\[\mathbf G^\T = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \hline 1 & 1 & 0 & 1 \\ 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 1 \\ \end{pmatrix}\]
“Как у Хэмминга”
\[\mathbf G^\mathrm T = \begin{pmatrix} 1 & 1 & 0 & 1 \\ 1 & 0 & 1 & 1 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 1 & 1 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{pmatrix}\]
Сообщение \(\mathbf m\) | Код \(\mathbf G^\mathrm T \mathbf m\) |
---|---|
0000 | 0000000 |
0001 | 0001111 |
0010 | 0010011 |
0011 | 0011100 |
0100 | 0100101 |
0101 | 0101010 |
0110 | 0110110 |
0111 | 0111001 |
Сообщение \(\mathbf m\) | Код \(\mathbf G^\mathrm T \mathbf m\) |
---|---|
1000 | 1000110 |
1001 | 1001001 |
1010 | 1010101 |
1011 | 1011010 |
1100 | 1100011 |
1101 | 1101100 |
1110 | 1110000 |
1111 | 1111111 |
Синдром | Вектор ошибки |
---|---|
110 | 0000001 |
101 | 0000010 |
011 | 0000100 |
111 | 0001000 |
100 | 0010000 |
010 | 0100000 |
001 | 1000000 |
“Классический” вариант перестановкой бит
Сообщение \(\mathbf m\) | Код \(\mathbf G^\T \mathbf m\) |
---|---|
0000 | 0000000 |
0001 | 1101001 |
0010 | 0101010 |
0011 | 1000011 |
0100 | 1001100 |
0101 | 0100101 |
0110 | 1100110 |
0111 | 0001111 |
Сообщение \(\mathbf m\) | Код \(\mathbf G^\T \mathbf m\) |
---|---|
1000 | 1110000 |
1001 | 0011001 |
1010 | 1011010 |
1011 | 0110011 |
1100 | 0111100 |
1101 | 1010101 |
1110 | 0010110 |
1111 | 1111111 |
Синдром | Вектор ошибки |
---|---|
001 | 0000001 |
010 | 0000010 |
011 | 0000100 |
100 | 0001000 |
101 | 0010000 |
110 | 0100000 |
111 | 1000000 |
На практике – систематический подход, информационные и проверочные символы разделяются.
\[\mathbf G =\begin{bmatrix}\mathbf I_k | - \mathbf R \\\end{bmatrix},\] \[\mathbf R = \begin{pmatrix} \mathrm{rem}(x^n, g(x))\\ \mathrm{rem}(x^{n-1}, g(x))\\ \vdots\\ \mathrm{rem}(x^r, g(x))\\ \end{pmatrix}\]
Выбор порождающего многочлена не произволен.
\[\mathbf G = \begin{pmatrix} 0 & \cdots & 0 & 0 & g_r & \cdots & g_0 \\ 0 & \cdots & 0 & g_r & \cdots & g_0 & 0 \\ \vdots \end{pmatrix}\]
Введём функцию \[f(\mathbf x, \mathbf x') = \left\{\begin{align} 1, && \mathbf H (\mathbf x' -\mathbf x) = 0 \\ 0, && \mathbf H (\mathbf x' -\mathbf x) \neq 0 \end{align}\right.\]
Количество ошибок декодирования \(N_e\in \brace{0,1}\) для данного \(\mathbf x \in T\) тогда
\[N_e(\mathbf x) \le \sum_{\begin{align}\mathbf x'\in T\\\mathbf x'\neq \mathbf x\end{align}} f(\mathbf x, \mathbf x')\]
\[N_e(\mathbf x) \le \sum_{\begin{align}\mathbf x'\in T\\\mathbf x'\neq \mathbf x\end{align}} f(\mathbf x, \mathbf x')\]
Тогда усредняя по всем \(\mathbf x \in T\),
\[P_2 = \sum_{\mathbf x\in T} P(\mathbf x) N_e(\mathbf x)\]
\[P_2 \le \sum_{\mathbf x\in T} P(\mathbf x) \sum_{\begin{align}\mathbf x'\in T\\\mathbf x'\neq \mathbf x\end{align}} f(\mathbf x, \mathbf x').\]
Усредняя по всем матрицам \(\mathbf H\),
\[\bar P_2 \le \sum_{\mathbf H} P(\mathbf H) \sum_{\mathbf x\in T} P(\mathbf x) \sum_{\begin{align}\mathbf x'\in T\\\mathbf x'\neq \mathbf x\end{align}} f(\mathbf x, \mathbf x')\]
\[\bar P_2 \le \sum_{\mathbf x\in T} P(\mathbf x) \sum_{\begin{align}\mathbf x'\in T\\\mathbf x'\neq \mathbf x\end{align}} \sum_{\mathbf H} P(\mathbf H) f(\mathbf x, \mathbf x')\]
\[\bar P_2 \le \sum_{\mathbf x\in T} P(\mathbf x) \sum_{\begin{align}\mathbf x'\in T\\\mathbf x'\neq \mathbf x\end{align}} \sum_{\mathbf H} P(\mathbf H) f(\mathbf x, \mathbf x')\]
\[\bar P_2 \le \sum_{\mathbf x\in T} P(\mathbf x) \sum_{\begin{align}\mathbf x'\in T\\\mathbf x'\neq \mathbf x\end{align}} 2^{-M}\]
\[\bar P_2 \le \sum_{\mathbf x\in T} P(\mathbf x) (|T|-1) 2^{-M}\]
\[\bar P_2 \le (|T|-1) 2^{-M} \underset{\le 1}{\underbrace{\sum_{\mathbf x\in T} P(\mathbf x)}}\]
\[\bar P_2 \le (|T|-1) 2^{-M}\]
\[\bar P_2 \le |T| 2^{-M}\]
\[\bar P_2 < 2^{N(H(X)+\beta)-M}\]
\[\bar P_2 < 2^{N(H(X)+\beta)-M}\]
Отметим, что подставляя \(H(X) < M/N\) в \(\rho = 1 - M/N\):
\[\rho = 1 - M/N\]
\[M/N = 1 - \rho\]
\[H(X) < M/N = 1 - \rho\]
\[H(X) < 1 - \rho\]
\[\rho < 1 - H(X)\]
\[\rho < 1 - H_2(f)\]
Условие теоремы кодирования канала для ДСК.
Мы заодно доказали теорему о кодировании источника.