Групповые коды
Полиномиальные коды
При полиномиальном кодировании каждое сообщение отождествляется с многочленом, а само кодирование состоит в умножении на фиксированный многочлен. Полиномиальные коды - блочные и отличаются от рассмотренных ранее только алгоритмами кодирования и декодирования.
Пусть
- двоичное сообщение. Тогда
сопоставим ему многочлен
. Все вычисления
происходят в поле классов вычетов по модулю 2, т. е. от результата любой
арифметической операции берется остаток от его деления на 2.
Например, последовательности 10011 при
соответствует
многочлен
.
Зафиксируем некоторый многочлен степени
,

кодирует слово сообщения
многочленом
или кодовым словом
из коэффициентов этого многочлена
. Условия
и
необходимы, потому что в противном случае
и
не будут
нести никакой информации, т.к. они всегда будут нулями.Пример. Рассмотрим кодирующий многочлен
.
Сообщение 01011, отвечающее многочлену
, будет закодировано
коэффициентами многочлена
, т.е.
.
Полиномиальный код с кодирующим многочленом
степени
является матричным кодом с кодирующей матрицей
размерности
:

-й строке - это
последовательность коэффициентов кодирующего многочлена, расположенных с
-го по
-й
столбцах.Например,
-код с кодирующим многочленом
отвечает матрице

;
;
;
;
;
;
;
.Полиномиальные коды являются групповыми.
Это следует из того, что коды, получаемые матричным кодированием, - групповые.
Рассмотрим
-код с кодирующим многочленом
. Строка ошибок
останется необнаруженной в том и только в том
случае, если соответствующий ей многочлен
делится на
.
Действительно,
делится на
тогда и только
тогда, когда
делится на
. Поэтому любая
ошибка, многочлен которой не делится на
, будет обнаружена и, соответственно,
любая ошибка, многочлен которой делится на
, не может быть
обнаружена.
Таким образом, обнаружение ошибки при использовании полиномиального кода с
кодирующим многочленом
может быть реализовано при помощи
алгоритма деления многочленов с остатком: если остаток ненулевой, то при передаче
произошло искажение данных.
Коды Хэмминга можно строить как полиномиальные, например, кодирующий
многочлен
определяет совершенный
-код, отличный от
рассмотренного ранее.
Вообще же, если кодирующий многочлен
, порождающий
соответствующий
-код, не является делителем ни одного из многочленов вида
при
, то минимальное расстояние между кодовыми словами
порожденного им кода не меньше 3.
Пусть
- минимальное расстояние между кодовыми
словами, оно равно минимуму среди весов ненулевых кодовых слов. Предположим
.
Тогда существует
такой, что
и
степень
не больше
. Вес
равен 2, поэтому
и
. Следовательно,
, что означает, что
должен делиться на
, а это невозможно по условию. Если предположить, что
, то это
приведет к утверждению о том, что
должен делиться на
, что тоже
противоречит условию. Итак,
.
Кодирующий многочлен
определяет
совершенный
-код Голея (Golay) с минимальным расстоянием
между кодовыми словами 7.
В 1971 году финскими и советскими математиками было доказано320 , что кроме кодов Хэмминга и Голея других совершенных кодов нет.
Наиболее интересными среди полиномиальных кодов являются циклические коды, в которых вместе с любым кодовым словом вида
есть кодовое слово
.
Упражнение 43
По кодирующему многочлену
построить полиномиальные
коды для двоичных сообщений 0100, 10001101, 11110.
Упражнение 44 Принадлежат ли коду Голея кодовые слова 10000101011111010011111 и 11000111011110010011111?