Полиномиальные коды.

 

Определим полиномиальный (n,k)-код как множество всех многочленов степени n1 или меньше, делящихся на g(x). Степень g(x) равна . Например, если

 

то множество многочленов вида

 

 

образует (6,3)-код. Заметим, что существует ровно восемь различ­ных многочленов в соответствии с восемью различными способами выбора коэффициентов а0, а1, а2 в поле GF (2). Один из способов применения этого кода состоит в том, чтобы взять а0, а1, а2 в ка­честве информационных символов и выполнить соответствующие умножения. Результат будет

 

.

 

Устройство, производящее это умножение, показано на рис. 1. Хотя такой метод кодирования вполне пригоден, его недостаток состоит в том, что полученный код обычно оказывается несистема­тическим. (В данном примере код является систематическим в по­зициях 1, 5, 6; однако в общем случае это не так.)

Полиномиальные (n, k)-коды обладают тем свойством, что их всегдаможно сделать систематическими в первых k позициях. В рассматриваемом примере положим

 

b0 = а0 , b2 = а0 + а1, b2 = а1 + а2.

 

Решив систему уравнений относительно ai и подставив результат в (*), получим кодовый многочлен вида

 

с(x) =b0 + b1 x +b2 x2+ (b1 + b2)x3 + (bo+b1)x4 + (bo+b1+b2)x5.

 


Этот кодовый многочлен имеет обычный вид кода с проверками на четность, и можно заметить, что если поменять места­ми первый и второй проверочные символы, то полученный код будет совпадать с (6,3)-кодом с проверками на четность. С тем же успехом можно выбрать и другое множество информационных символов.

Рис. Схема для умножения произвольного мно­гочлена

ao+ a2x +a2x2 на g(x) = 1+x+x3

 

Например, выбрав последние три сим­вола, получим

c(x) = (b0 +b2) + (bo + b1 + b2)x + (b1 + b2)x2 + b0 x 3 + b1 x 4 + b2 x 5 (**)

Такой выбор обычно оказывается более предпочтительным по причинам, которые скоро станут ясными.

Очевидно, как построить кодер для каждого из систематиче­ских вариантов полученного кода. Вначале нужно выразить эле­менты ai в виде линейных комбинаций элементов bi, а затем ис­пользовать схему на рис. 1 для осуществления соответствующих умножений.

Второй метод, который, по существу, является объединением этих двух шагов, состоит в следующем. Предположим, что умно­жаем многочлен b0 + b1 x + b2 x2 на x 3, получая b0 х3 + b1 х4 + b2 х5. Раз­делив полученный многочлен на 1 + х + х3, найдем частное (bo+ b2) + b1x + b2x2 и остаток (b0+b2) + (b0 + b1 + b2)x+ (b1 + b2)x2. Заметим, что, прибавив остаток к делимому, получим кодовое сло­во (**) в систематическом виде. Эта процедура состоит в при­менении алгоритма Евклида, согласно которому

делимое = (частное) (делитель) + остаток.

В случае общего (n,k)-кода предварительное умножение всегда производится на xn-k Степень остатка всегда меньше степени де­лителя, которая равна п k. Поскольку кодируемая последователь­ность умножалась на xn-k, в делимое входят лишь члены степе­ни, не меньшей пk. Поэтому добавление остатка к частному не изменяет ни одного из членов в обоих многочленах. Выбирая в ка­честве делителя порождающий многочлен, можно добиться того, что результатом всегда будет кодовое слово.

 

Содержимое ячеек сдвиг
b2 b2
b1 b1 + b2 b2
bo + b2 bo+b1+b2 b1 + b2

Рис. Схема для одновременного умножения на х3 и деления на 1+x+x3

 

Схема, реализующая этот алгоритм для (6,3)-кода, показана на рис. 2. При использовании этой схемы последовательность b2, b1, b0 подается на вход по одному символу за такт. Содержи­мое различных ячеек после каждого сдвига показано на рис. 2. После трех сдвигов остаток (три проверочных символа) запоми­нается в трех ячейках регистра сдвига. Произведя длинные опе­рации деления, можно удостовериться в том, что соглас­но этой схеме операции сдвига и вычитания повторяются на каж­дом шаге. При необходимости частное может быть получено в ви­де последовательных членов в цепи обратной связи.

Рис. Регистр обратной связи и соответствующая последовательность состояний при поступлении на вход одного символа 1

Полезной может оказаться еще одна точка зрения. Сделаем, чтобы схема, изображенная на рис. 2, начала работать таким образом, чтобы в самой левой ячейке появился символ 1. Произ­водя в схеме несколько сдвигов и не подавая ничего на ее вход, будем получать содержимое регистров, показанное на рис. 3. Можно заметить, что полученные тройки совпадают со столбцами проверочной матрицы, и если остановиться после семи шагов, то полученная матрица будет совпадать с проверочной матрицей (7,4)-кода Хемминга. Сделав меньше семи шагов, получим прове­рочную матрицу укорочения этого кода. Заметим также, что, произведя больше семи сдвигов, получим уже встречавшиеся тройки. Полученную матрицу по-прежнему можно рассматривать как про­верочную матрицу кода, однако кодовое расстояние теперь умень­шилось до 2, поскольку один и тот же столбец повторился несколь­ко раз. Работу согласно схеме на рис. 2 можно также рассмат­ривать с помощью порождающей матрицы. Порождающая матри­ца (7,4)-кода Хемминга имеет вид

1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1

Если подать на вход символ 1 и сделать один сдвиг, то в соответ­ствующих ячейках появится набор 1 1 0. После второго сдвига появится набор 0 11, после третьего 1 1 1 и после четвертого 1 0 1. Эти четыре тройки совпадают с четырьмя строками прове­рочной части порождающей матрицы. При вводе в регистр после­довательности 1 0 0 0 (начиная с самого правого символа) полу­чим проверочную последова­тельность 1 1 0. Аналогич­но при вводе в регистр по­следовательности 0 0 0 1 появятся проверочные сим­волы 101. Кроме того, рас­сматриваемое устройство яв­ляется линейным, так что при вводе в регистр после­довательности 1 0 0 1 ре­зультатом будет 0 11. Эти проверочные символы воз­никают при сложении первой и четвертой строк порождающей матрицы.

 

 

Циклические коды.

 

При некоторых значениях п полиномиальные коды обладают свойством цикличности. Это значит, что циклическая перестановка
символов кодового слова вновь приводит к кодовому слову. При-
чина наличия такого свойства может быть проиллюстрирована на
примере уже рассмотренного порождающего многочлена 1+x+x3.

 

Заметим прежде всего, что 1+x+x3 точно делит многочлен 1х7. Это можно проверить непосредственным делением или с помощью схемы на рис. 3. Напомним, что эта схема порождает цикл длиной 7. Поэтому, если подать на вход символ 1, осуществить сдвиг семь раз и затем подать еще один символ 1 (т.е. разделить х7—1),второй входной символ сократит содержимое регистра и в качестве остатка получится нулевой многочлен.

Предположим теперь, что взято кодовое слово (7,4)-кода, по­рожденного многочленом 1 + х + х3, и сдвинуто циклически на один элемент вправо. Это значит, что каждый символ передвинут на одно место вправо и самый правый символ переведен на левый конец. Математически это эквивалентно умножению на х и заме­не х7 на 1, т. е. приведению многочлена по модулю х7—1. Предпо­ложим, что выбрано кодовое слово, самый правый символ которо-го) равен 1. Это кодовое слово может быть записано в виде

с(х) = (1+ х + х3)р(х),

где р(х) — многочлен степени 3.

Тогда хс(х)≡ хс(х) — (х7—1) тоd (х7 — 1).

Поскольку х7—1 делится на 1 + х + х3, многочлен в правой части этого равенства очевидно делится на 1+х+х3. Поэтому циклический сдвиг данного кодового слова снова дает кодовое слово. Заметим, что если самый правый символ кодового слова равен 0, то циклический сдвиг эквивалентен умножению на х и наше утверждение по-прежнему справедливо.

Полученный результат легко обобщить на произвольный (n,k)-код, для которого g(x) делит хn—1. Наименьшее значение п, для которого g(x) делит хn—1, обычно задает наибольшую полезную длину nmax кода. Причина этого состоит в том, что два информационных символа, расположенные друг от друга на расстоянии n+1, приведут к одним и тем же проверочным символам, так что полученный код будет характеризоваться кодовым расстоянием 2. Заметим также, что наибольшее возможное значение nmах равно 2m-1, где m — степень порождающего многочлена. Это вытекает из того, что nmax определяется как самый короткий цикл, который производится регистром сдвига, задаваемым g(x), когда на вход его поступает единвтенный символ 1. Поскольку этот регистр содержит m ячеек, он может находится не более чем в 2m-1 различных ненулевых состояниях. Поэтому наибольшее значение nmax=2m-1. Для некоторых многочленов циклы могут быть существенно короче, чем 2m-1. Можно легко проверить и убедиться, что, например, многочлен 1+x3+x6 порождает цикл длиной 9.

Полиномиальные коды, для которых n<nmax, как, например, рассмотренный (6,3)-код, называются укороченными циклическими или псевдоциклическими кодами. Для любого значения n всегда можно найти некоторый многочлен степени n делящийся на g(x). Использовав этот многочлен, можно рассмотреть класс перестановок, получающихся при умножении кодового слова на x и приведении результата по модулю этого многочлена. Хотя эта процедура, очевидно, приводит к кодовому слову, она не находит до сих пор существенного применения. Обычно укороченные циклические коды, рассматриваются как циклические путем добавления в конце кодового слова подходящего числа нулевых символов.

Код C называется циклическим кодом, если это (i) линейный код и циклический сдвиг на любое число разрядов кодового слова, является также кодовым словом. Например, если a0 a1 … an-1 принадлежит C, то и an-1 a0 a1 … an-2 принадлежит C.

Циклические коды были впервые исследованы Prange (1957). Было доказано, что практически любой специальный линейный код открытый ранее (напр. Хэмминга, Голея, Рида-Маллера) может быть преобразован в циклический.

Например, двоичный код {000, 101, 011, 011} циклический.

Двоичный линейный код {0000, 1001, 0110, 1111} не циклический, но он эквивалентен циклическому коду, т.к. перестановка 3 и 4 бита дает циклический код {0000, 1010, 0101, 1111}

 

Задачи

Определить циклический ли код, эквивалентен ли циклическому коду?

(i) двоичный код {0000, 1100, 0110, 0011, 1001}

(ii) двоичный код {00000, 10110, 01101, 110011}

(iii) троичный код {0000, 1122, 2211}

 








Дата добавления: 2016-06-13; просмотров: 2541;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.013 сек.