В теории кодирования, полиномиальный код - это тип линейного кода, чей набор допустимых кодовых слов состоит из этих полиномов (обычно некоторой фиксированной длины) которые делятся на заданный фиксированный полином (меньшей длины, называемый порождающим полиномом).
Содержание
- 1 Определение
- 2 Пример
- 3 Кодирование
- 4 Декодирование
- 5 Свойства полиномиальных кодов
- 6 Конкретные семейства полиномиальных кодов
- 7 Ссылки
Определение
Зафиксируйте конечное поле , элементы которого мы называем символами. Для построения полиномиальных кодов мы идентифицируем строку из символов с многочленом
Исправить целые числа и пусть будет некоторым фиксированным многочленом степени , называемый образующим полиномом. Код полинома, сгенерированный функцией , представляет собой код, кодовые слова которого являются в точности полиномами степени меньше , которые делятся (без остатка) на .
Пример
Рассмотрим код полинома над с , и порождающий многочлен . Этот код состоит из следующих кодовых слов:
Или явно написано:
Поскольку полиномиальный код определен над двоичным полем Галуа , полиномиальные элементы представлены в виде суммы по модулю -2, а окончательные многочлены:
Эквивалентно, выраженные как строки двоичных цифр, кодовые слова:
Это, как и любой полиномиальный код, действительно является линейным кодом, то есть линейные комбинации кодовых слов снова являются кодовыми словами. В случае, подобном этому, когда поле - GF (2), линейные комбинации находятся путем выполнения XOR кодовых слов, выраженных в двоичной форме (например, 00111 XOR 10010 = 10101).
Кодирование
В полиномиальном коде над с длиной кода и порождающий полином степени , там будет точно кодовых слов. Действительно, по определению является кодовым словом тогда и только тогда, когда оно имеет форму , где (частное) имеет степень меньше . Поскольку существует таких частных, существует такое же количество возможных кодовых слов. Поэтому простые (незакодированные) слова данных должны иметь длину
Некоторые авторы, такие как (Lidl Pilz, 1999), обсуждают только отображение как присвоение слов данных кодовым словам. Однако это имеет тот недостаток, что слово данных не появляется как часть кодового слова.
Вместо этого для создания систематического кода часто используется следующий метод: задано слово данных длины , сначала умножьте на , что приводит к сдвигу на слева. Как правило, не делится на , т. Е. Это не будет допустимое кодовое слово. Однако существует уникальное кодовое слово, которое можно получить, настроив крайние правые символы в . Чтобы вычислить его, вычислите остаток от деления на :
где имеет степень меньше . Кодовое слово, соответствующее слову данных , затем определяется как
Обратите внимание на следующие свойства:
- , который делится на . В частности, является допустимым кодовым словом.
- Поскольку имеет степень меньше , крайний левый символов согласен с соответствующими символами . Другими словами, первые символы кодового слова совпадают с исходным словом данных. Оставшиеся символы называются цифрами контрольной суммы или контрольными битами.
Пример
Для приведенного выше кода с , и порождающий многочлен , мы получаем следующее присвоение слов данных кодовым словам:
- 000 ↦ 000 00
- 001 ↦ 001 11
- 010 ↦ 010 01
- 011 ↦ 011 10
- 100 ↦ 100 10
- 101 ↦ 101 01
- 110 ↦ 110 11
- 111 ↦ 111 00
Декодирование
Ошибочное сообщение может быть обнаружено прямым способом с помощью полиномиального деления на порождающий полином, что приводит к ненулевому остатку.
Предполагая, что кодовое слово не содержит ошибок, систематический код может быть декодирован простым удалением цифр контрольной суммы.
Если есть ошибки, то перед декодированием следует выполнить исправление ошибок. Эффективные алгоритмы декодирования существуют для конкретных полиномиальных кодов, таких как коды BCH.
Свойства полиномиальных кодов
Как и для всех цифровых кодов, возможности обнаружения и исправления ошибок полиномиальных кодов определяются минимальным расстоянием Хэмминга кода. Поскольку полиномиальные коды являются линейными кодами, минимальное расстояние Хэмминга равно минимальному весу любого ненулевого кодового слова. В приведенном выше примере минимальное расстояние Хэмминга равно 2, поскольку 01001 - это кодовое слово, и нет ненулевого кодового слова с только одним набором битов.
Более конкретные свойства полиномиального кода часто зависят от конкретных алгебраических свойств его порождающего полинома. Вот несколько примеров таких свойств:
- Код полинома циклический тогда и только тогда, когда порождающий полином делит .
- Если порождающий полином примитивный, то результирующий код имеет расстояние Хэмминга не менее 3 при условии, что .
- В кодах БЧХ порождающий полином выбирается так, чтобы он имел определенные корни в поле расширения, таким образом, чтобы достигнуть большого расстояния Хэмминга.
Алгебраическая природа полиномиальных кодов с умно выбранными порождающими полиномами, также часто можно использовать для поиска эффективных алгоритмов исправления ошибок. Это имеет место для кодов BCH.
Конкретные семейства полиномиальных кодов
- Циклические коды - каждый циклический код также является полиномиальным кодом; популярным примером является код CRC.
- коды BCH - семейство циклических кодов с большим расстоянием Хэмминга и эффективными алгоритмами исправления алгебраических ошибок.
- Коды Рида – Соломона - важное подмножество кодов BCH с особенно эффективной структурой.
Ссылки
- WJ Гилберт и В.К. Николсон: Современная алгебра с приложениями, 2-е издание, Wiley, 2004.
- R. Lidl и G. Pilz. Прикладная абстрактная алгебра, 2-е издание. Wiley, 1999.