Хочу разобраться в том, как строятся коды Хэмминга в расширении конечного поля. Вектор
![$c$ $c$](https://dxdy-04.korotkov.co.uk/f/3/e/1/3e18a4a28fdee1744e5e3f79d13b9ff682.png)
над
![$GF(q)$ $GF(q)$](https://dxdy-02.korotkov.co.uk/f/5/1/0/5103e0b7e24c830b576d9c9f9641e8c982.png)
является кодовым словом тогда и только тогда, когда
![$cH^T = 0$ $cH^T = 0$](https://dxdy-04.korotkov.co.uk/f/3/5/a/35a9f21403d23baaf78919525ea5ed6a82.png)
. Например, выберем следующую проверочную матрицу
![$(7,4)$ $(7,4)$](https://dxdy-04.korotkov.co.uk/f/b/a/8/ba838d4a7273b733cf48706d7831274182.png)
-кода Хэмминга:
![$\begin{bmatrix}
1 & 0 & 0 & 1 & 0 & 1 & 1 \\
0 & 1 & 0 & 1 & 1 & 1 & 0 \\
0 & 0 & 1 & 0 & 1 & 1 & 1
\end{bmatrix}$ $\begin{bmatrix}
1 & 0 & 0 & 1 & 0 & 1 & 1 \\
0 & 1 & 0 & 1 & 1 & 1 & 0 \\
0 & 0 & 1 & 0 & 1 & 1 & 1
\end{bmatrix}$](https://dxdy-03.korotkov.co.uk/f/2/c/7/2c79f3ccbffd498c13262d9c377eca0d82.png)
Переходя в расширение поля, эту матрицу можно записать более компактно. Столбцы матрицы
![$H$ $H$](https://dxdy-04.korotkov.co.uk/f/7/b/9/7b9a0316a2fcd7f01cfd556eedf72e9682.png)
можно отождествить с элементами поля
![$GF(8)$ $GF(8)$](https://dxdy-01.korotkov.co.uk/f/0/2/a/02a2cf1574a600d5839ba2ac2e6cb0ec82.png)
. ТОгда, используя для построения поля
![$GF(8)$ $GF(8)$](https://dxdy-01.korotkov.co.uk/f/0/2/a/02a2cf1574a600d5839ba2ac2e6cb0ec82.png)
многочлен
![$p(z)=z^3 + z + 1$ $p(z)=z^3 + z + 1$](https://dxdy-02.korotkov.co.uk/f/1/f/e/1fe97740a3e1940cb986d37194f1759582.png)
и выбирая
![$z$ $z$](https://dxdy-04.korotkov.co.uk/f/f/9/3/f93ce33e511096ed626b4719d50f17d282.png)
в качестве представителя примитивного элемента
![$\alpha$ $\alpha$](https://dxdy-01.korotkov.co.uk/f/c/7/4/c745b9b57c145ec5577b82542b2df54682.png)
, перепишем матрицу в виде
![$H = [ \alpha^0 \alpha^1 \alpha^2 \alpha^3 \alpha^4 \alpha^5 \alpha^6]$ $H = [ \alpha^0 \alpha^1 \alpha^2 \alpha^3 \alpha^4 \alpha^5 \alpha^6]$](https://dxdy-03.korotkov.co.uk/f/a/8/b/a8b2885368c97578f09b4768c15af63982.png)
Формула
![$cH^T = 0$ $cH^T = 0$](https://dxdy-04.korotkov.co.uk/f/3/5/a/35a9f21403d23baaf78919525ea5ed6a82.png)
превращается в произведение векторов.
Я хочу пойти в обратном порядке: по многочлену построить проверочную и кодирующую матрицы. Для построения поля выберу тот же самый многочлен, получится та же самая матрица. А теперь я хочу закодировать и раскодировать сообщение. Так как этот код - циклический, процедуру кодирования можно записать так:
![$c(x) = a(x)g(x)$ $c(x) = a(x)g(x)$](https://dxdy-03.korotkov.co.uk/f/6/4/5/64583c7602a409f209c5e13f996d751682.png)
, где
![$g(x)=x^3 + x + 1$ $g(x)=x^3 + x + 1$](https://dxdy-02.korotkov.co.uk/f/d/1/2/d1203850a12b113a7ea593b05eb98ce682.png)
. Возьмем сообщение
![$i(x)=(1010) = x^3 + x$ $i(x)=(1010) = x^3 + x$](https://dxdy-04.korotkov.co.uk/f/7/9/9/799718ccef4913f3b36b12f3d6fa80f682.png)
. Тогда
![$i(x)g(x) = x^6 + x^3 +x^2 + x = 1001110$ $i(x)g(x) = x^6 + x^3 +x^2 + x = 1001110$](https://dxdy-04.korotkov.co.uk/f/b/d/a/bda9de16c92cf4301a18c1dcc5c6323f82.png)
. Далее используем проверочную матрицу, чтобы убедиться в том, что получилось кодовое слово. Используем матрицу, составленную из элементов расширения поля:
![$(0111001)\begin{bmatrix}
\alpha^0 \\
\alpha^1 \\
\alpha^2 \\
\alpha^3 \\
\alpha^4 \\
\alpha^5 \\
\alpha^6
\end{bmatrix} = \alpha^1 + \alpha^2 + \alpha^3 + \alpha^6 = \alpha^3$ $(0111001)\begin{bmatrix}
\alpha^0 \\
\alpha^1 \\
\alpha^2 \\
\alpha^3 \\
\alpha^4 \\
\alpha^5 \\
\alpha^6
\end{bmatrix} = \alpha^1 + \alpha^2 + \alpha^3 + \alpha^6 = \alpha^3$](https://dxdy-01.korotkov.co.uk/f/8/b/1/8b1452d784d8a1f11177d5445e5447a182.png)
Ошибка, должен был получиться ноль. Если записать биты бинарного представление многочленов в матрице в обратном порядке (от старшего к младшему), то получается то же самое, не ноль.
Где я ошибся:
-- 04.04.2023, 09:37 --Мои расчеты
![Изображение](https://i.ibb.co/Jz3CJvx/image.jpg)