Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
COD_POS_2004.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
316.93 Кб
Скачать

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

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

Линейный код С называется циклическим, если любой циклический сдвиг кодового слова также является кодовым словом , т.е. если с0с1. . . сn -1

принадлежит С, то и сn -1с0 . . . сn -2 принадлежит С.

Для описания циклических кодов сопоставим каждому кодовому слову с0с1. . . сn -1  GF n ( P ) полином степени n -1 :

с ( х ) = с 0 + с1 х + . . . + сn -1 х n -1 .

Тогда сумме двух кодовых слов будет соответствовать полином, представляющий сумму соответствующих им поиномов ( все вычисления здесь и ниже по модулю Р ). Причём сумма полиномов равна полиному, соответствующему некоторому кодовому слову. Однако произведение полиномов, каждый из которых имеет степень не больше n - 1, в общем случае не соответствует кодовому слову длины n, так как его степень может быть больше n - 1.

Так, например, код

С =0 0 0 , 0 1 1 , 1 0 1 , 1 1 0

является циклическим кодом длины 3 и его кодовым словам соответствуют полиномы:

0 , х + х 2 , 1 + х 2 , 1 + х .

Сумме кодовых слов 1 0 1 и 1 1 0 соответствует слово 0 1 1 , которому соответствует полином с ( х ) = х + х 2 , а произведению этих же слов не соответствует кодовое слово. Поэтому нам необходимо такое представление произведения полиномов, а именно по модулю полинома х n - 1, при котором результату будет соответствовать также полином степени не больше

n - 1.

В самом деле, если кодовому слову с 0с1. . . сn -1 соответствует полином

с ( х ) = с 0 + с1 х + . . . + сn -1 х n -1,

то циклическому сдвигу сn -1с0 . . . сn -2 будет соответствовать полином

х с ( х ) = с 0х + с1 х 2 + . . . + сn -1 х n = с n -1 + с 0 х + с1 х 2+ . . .

+ сn -2 х n -1+ сn -1 ( х n -1) = сn -1 + с 0 х + . . . + с n -2 х n -1

по модулю х n -1 .

Таким образом, умножению полинома с ( х ) на х соответствует циклическому сдвигу кодового слова.

Приведём практический способ построения циклического кода с помощью так называемого порождающего полинома.

Пусть

g ( x ) = g0 + g1 x + . . . + gr xr

некоторый делитель полинома х n - 1 степени r  1 - порождающий полином циклического кода длины n. Рассмотрим множество всех полиномов f(x) степени не выше n - 1 которые делятся на g( x ), т.е. множество полиномов с ( х ) = f ( x ) g ( x ). Каждому такому полиному

с ( x ) = с 0 + с1 х + . . . + сn -1 х n -1

сопоставим слово его коэффициентов с0с1. . . сn-1 и обозначим через С множество всех таких слов.

Покажем, что С является циклическим кодом длины n размерности n - r с порождающим полиномом g ( x ), причём сообщение f ( x ) кодируется словом с ( х ) = f ( x ) g ( x ).

Пусть с0с1. . . сn - 1 и d0d1 . . . dn - 1 - два произвольных слова из С, которым соответствуют полиномы

с 1( x ) = с 0 + с1 х + . . . + сn -1 х n -1 = f 1( x ) g ( x )

и

с 2( х ) = d0 + d1 х + . . . + dn - 1 х n -1 = f 2( x ) g ( x ) .

Тогда полином

с 1( x )+с 2( х ) = ( с 0+d0 ) + ( с1+d1 )х + . . . + ( сn -1+dn - 1 n -1=

= g ( x ) (f 1( x )+f 2 ( x )),

которому соответствует слово (с0+d0) (с1+d1). . .(сn -1+dn - 1), также делится на g(x) и, следовательно,( с0+d0 )( с1+d1). . .( сn -1+dn-1) принадлежит С, т.е. С - линейный код.

Далее, если с0с1. . . сn - 1  С, то его циклический сдвиг сn -1с0 . . . сn -2 также принадлежит С, в чём легко убедиться.

Так, например, полином g ( x ) = 1 + х + х 3 над GF(2) порождает циклический код длины 7 с минимальным расстоянием 3, что представляет собой двоичный [7 , 4 , 3 ] - код Хэмминга.

Если

g ( x ) = g0 + g1 x + . . . + gr xr

п орождающий полином циклического кода С, то матрица

g0 g1 . . . gr 0 . . . 0 g(x) 0 . . . 0

0 g0 g1 . . . gr 0 . . . 0 0 хg(x) 0 . . . 0

G = . . . = . . .

0 . . .0 g0 g1 . . . gr 0 . . . 0хn - r - 1 g(x)

представляет собой порождающую матрицу циклического кода С, так как С - пространство строк матрицы G.

С другой стороны, для декодирования циклического кода С, определим проверочный полином и проверочную матрицу соответственно как:

h( x ) = (x n - 1) / g( x ) = h 0 + h 1x + . . . + h kx k , h k  0 , h k GF(P) ,

0 0 . . . 0 h k . . . h 2 h 1 h 0 0 0. . .0 h(x)

H = 0 h k . . . h 2 h 1 h 0 0 0 хh(x) 0

. . . = . . .

h k . . . h 2 h 1 h 0 0 0 . . . 0 х n - k - 1 h(x) 0 0 . . .0

Таким образом, мы имеем основные способы задания циклических кодов.

Ранее рассмотренные коды Хэмминга H r в самом деле суть циклические коды с порождающими полиномами g ( x ) равными примитивным полиномам полей Галуа. А для определения всех порождающих полиномов, в общем случае, необходимо иметь разложение полинома x n - 1 на простые множители над полем Галуа, что является особым вопросом исследования. Так, например,если

x n - 1 = g 1( x ) g 2( x ) . . . g m( x ),

над GF(q), то можно получить 2m различных порождающих полиномов

g( x ) и столько же циклических кодов.

2.4.1. Найти все делители полинома х 7 - 1 над GF(2).

2.4.2. Нормированный полином М( х ) с коэффициентами из GF(Р) наименьшей степени, для которого М() = 0 ,   GF(q) называется минимальным полиномом элемента . Доказать, что:

а ) М( х ) неприводим над GF(Р);

б ) степень минимального полинома примитивного элемента поля

GF(q) равна n ( такой полином называется примитивным );

в ) М( х ) = Мр ( х ).

2.4.3. Найти все примитивные полиномы заданной степени поля GF(Р).

2.4.4. Определить порождающий полином циклического[ 15 , 11 , 3 ]- кода Хэмминга H 4.

2.4.5. Разработать алгоритмы кодирования и декодирования циклических кодов.

2.4.6. Доказать, что если h ( x ) делится на хТ - 1, то минимальное расстояние не может быть больше чем n / Т.

2.4.7. Код С называется реверсивным, если для произвольного слова

с0с1. . . сn -1  С следует, что сn -1 . . .с1с0  С. Доказать, что циклический код реверсивен тогда и только тогда, когда все элементы, обратные корням его порождающего полинома, также являются корнями порождающего полинома.

2.4.8. Доказать, если - 1 равна некоторой степени q по модулю n, то каждый циклический код над GF(q) длины n реверсивен.

2.4.9. Доказать, что x n - 1 имеет n различных корней над GF(q).

2.4.10. Циклотомический класс С s по модулю n над GF(q) определяется как множество:

С s = { s , sq ,sq2, . . . , sqms - 1 } ,

где sqms  s (mod n ) , ( q , n ) = 1. Доказать, что

х n - 1 = П М s ( х ) ,

s

где s пробегает всё множество представителей по модулю n.

2.4.11. Определить проверочный полином для кода Хэмминга H 3 .

2.4.12. Доказать, что код Хэмминга H r является циклическим кодом с порождающим полиномом g (x)=М (х), где - примитивный элемент поля GF(q).

2.4.13. Построить наименьший циклический код, содержащее слово

0 0 1 1 0 1 0.

2.4.14. Разработать алгоритм разложения полинома х n - 1 над GF(q).

2.4.15.Определить минимальное расстояние циклического кода длины n.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]