Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

pri_cod2

.pdf
Скачиваний:
6
Добавлен:
27.05.2015
Размер:
585.25 Кб
Скачать

уравнений:

8 a2+ b

 

 

 

 

 

 

 

 

2

= s1;

 

 

 

 

 

 

< a + b

 

= s2:

 

 

 

 

 

 

:

 

 

2

= a

2

2

,

Учитывая, что в поле из 16 элементов верно тождество (a + b)

 

 

+ b

придем к системе

8 a +2b

 

 

 

 

 

 

 

 

 

= s1;

 

 

 

 

 

 

< (s1)

 

= s2:

 

 

 

 

 

:

Последняя же система или не имеет решений, или имеет более одного решения. Поэтому “упрощенный“ вариант проверочной матрицы H не позволяет обнаруживать и исправлять ошибки.

Задача. Пусть F = GF (pr) конечное поле и задано квадратное уравнение

at2 + bt + c = 0;

где a; b; c 2 F и a 6= 0. Доказать, что при p > 2 корни этого уравнения можно

найти по формуле ¡b § pb2 ¡ 4ac t1;2 = 2a :

Доказать также, что при p = 2 применять эту формулу нельзя. Вычисления с помощью примитивного элемента.

Поясним как проще это сделать. Пусть первые четыре элемента столбцаэто 1,1,0,1. Тогда этот столбец построен по элементу a(x) = x3 +x2 +1 поля F . По таблице 16 определяем, что a(x) = x13. Поэтому

(a(x))3 = (x13)3 = x13¢3 = x39 = x15¢2+9 = (x15)2 ¢ x9 ´ 12 ¢ x9 = x9

Снова по таблице 16 находим x9 = x3+x, что соответствует вектору (1; 0; 1; 0). Поэтому последние элементы столбца таковы: 1, 0, 1, 0.

Векторное представление элементов поля используется в теории кодирования. Пусть вектор a, задаваемый равенством (2), соответствует очередному блоку кодируемых данных. Тогда этому блоку можно сопоставить элемент a(x) конечного поля F = GF (pr), определяемый равенством (2).

===================

1)

41

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

Пусть p простое число и n ¸ 2 целое число. Обозначим через M(p; n) множество многочленов, степень которых меньше n, с коэффициентами из множества f0; 1; : : : ; p ¡ 1g. Таким образом, M(p; n) состоит из многочленов с целыми коэффициентами вида

u(x) = u0x1 + u1x2 + : : : + u2x + u1;

(1)

где 0 · ui < p при всех i. Несложно проверить, что M(p; n) содержит ровно pn многочленов.

Пусть u(x) и v(x) элементы M(p; n). Тогда можно определить их сумму и произведение следующим образом:

(1)Рассматривая u(x) и v(x) как многочлены с целыми коэффициентами, находим их сумму, а затем каждый коэффициент суммы заменяем его остатком при делении на число p. Полученный многочлен и называем суммой u(x)©v(x) элементов u(x) и v(x).

(2)Рассматривая u(x) и v(x) как многочлены с целыми коэффициентами, находим произведение u(x) ¢ v(x) этих многочленов (по обычным правилам умножения многочленов), затем делим с остатком это произведение на многочлен xn ¡ 1 и в полученном остатке каждый коэффициент заменяем его остатком при делении на число p. Полученный многочлен называем произведением u(x) ¯ v(x) элементов u(x) и v(x).

Ясно, что вычисления с коэффициентами многочленов u(x) и v(x) производятся по модулю p. Множество M(p; n) с описанными операциями сложения и умножения будет кольцом. Напомним, что в алгебре кольцом называют такое множество K, в котором определены операции сложения и умножения, удовлетворяющие следующим свойствам:

(1)Сложение коммутативно и ассоциативно, то есть a + b = b + a и (a + b) + c = a + (b + c) для любых элементов a; b; c 2 K.

(2)Для любых элементов a; b 2 K уравнение a + x = b имеет в K единственное решение.

(3)Умножение дистрибутивно относительно сложения, то есть

(a + b)c = ac + bc для любых a; b; c 2 K.

42

Кольцо всегда содержит нулевой элемент 0, который можно определить как такой (единственный) элемент кольца, для которого c + 0 = c при всех c 2 K.

Приведем примеры некоторых хорошо известных колец:

1)Кольцо Z целых чисел (с обычным сложением и умножением).

2)Кольцо многочленов (от переменной x).

3)Кольцо квадратных матриц фиксированного размера.

Ясно, что каждое поле является в то же время и кольцом. Обратное неверно. Так, в кольце не для каждого отличного от нуля элемента должен сущестовать обратный элемент. Умножение в кольце не обязано быть коммутативным или ассоциативным.

В рассматриваемом кольце M(p; n) есть единичный элемент, которым является многочлен, тождественно равный 1. Однако не каждый элемент обладает обратным. В частности, не имеет обратного элемента любой многочлен u(x) 2 M(p; n), для которого u(1) ´ 0 (mod p). Проверим это. Допустим, что u(x) удовлетворяет выписанному сравнению и имеет обратный элемент v(x) 2 M(p; n). Тогда u(x)¯v(x) = 1, то есть для некоторого многочлена q(x) с целыми коэффициентами справедливо сравнение

u(x) ¢ v(x) ´ (xn ¡ 1) ¢ q(x) + 1 (mod p):

Подставив в это сравнение x = 1, получим 0¢v(1) ´ (1n¡1)¢q(1)+1 (mod p), откуда 0 ´ 1 (mod p), что, очевидно, неверно. Полученное противоречие показывает, что u(x) не имеет обратного элемента.

Множество f0; 1; : : : ; p ¡ 1g можно рассматривать как поле Zp вычетов по модулю p. Можно также определить операцию умножения элемента u(x) кольца M(p; n) на элемент ¸ 2 Zp следующим образом:

При умножении многочлена u(x) на ¸ каждый коэффициент этого многочлена умножается на ¸, а затем заменяется своим остатком при делении на число p.

В этом случае M(p; n) станет векторным пространством над полем Zp. Элементы множества M(p; n) при этом называют векторами, а элементы поля Zp скалярами.

43

Многочлену u(x) = u0x1+u1x2+: : :+u2x+u1 из кольца M(p; n) поставим в соответствие вектор u = (u0; u1; u2; : : : ; u1), составленный из коэффициентов этого многочлена. Вектор u называется векторным представлением элемента u(x) кольца M(p; n). Соответствие u(x) ! u задает взаимно однозначное отображение ' кольца M(p; n) на векторное пространство Vn(Zp), состоящее из всех n-мерных векторов с компонентами из поля Zp (см. выше параграф 4.3). При этом для любых многочленов u(x); v(x) и любого скаляра ¸ 2 Zp верны следующие равенства:

8

< '(u(x) + v(x)) = '(u(x)) + '(v(x));

:'(¸u(x)) = ¸'(u(x)):

Пример 1. Пусть в кольце M(5; 3) заданы элементы u(x) = x2 + 2 и v(x) = 2x2 + 3x + 4. Найдем их сумму и произведение.

1) “Обычная“ сумма многочленов u(x) и v(x) равна

(x2 + 2) + (2x2 + 3x + 4) = 3x2 + 3x + 6:

Заменяя коэффициенты суммы их остатками при делении на 5, придем к многочлену 3x2 + 3x + 1, который и будет суммой u(x) © v(x) заданных элементов кольца M(5; 3).

2) “Обычное“ произведение многочленов u(x) и v(x) равно

u(x) ¢ v(x) = (x2 + 2) ¢ (2x2 + 3x + 4) = 2x4 + 3x3 + 8x2 + 6x + 8:

Делим это произведение с остатком на x3 ¡ 1:

2x4 + 3x3 + 8x2 + 6x + 8 = (x3 ¡ 1)(2x + 3) + (8x2 + 8x + 11)

Заменяя коэффициенты остатка (8x2 + 8x + 11) их остатками при делении на число 5, получим

u(x) ¯ v(x) = 3x2 + 3x + 1:

Полученные результаты в векторной форме можно записать так:

8

< (1; 0; 2) © (2; 3; 4) = (3; 3; 1); : (1; 0; 2) ¯ (2; 3; 4) = (3; 3; 1):

44

Замечание. Остаток при делении многочлена f(x) на xn ¡ 1 проще найти так: надо в многочлене f(x) заменить xn на 1, xn+1 на x, xn+2 на x2 и т.д., а затем привести подобные члены. Замены надо производить до тех пор, пока не получим многочлен, степень которого меньше n. Полученный многочлен и и будет искомым остатком. Так, в примере 1 произведение u(x) ¢ v(x) равно 2x4 + 3x3 + 8x2 + 6x + 8. Заменив в этом многочлене x3 на 1 и x4 на x, получим многочлен 2x + 3 + 8x2 + 6x + 8. После приведения подобных членов придем к многочлену 8x2 + 8x + 11, который и является остатком при делении произведения u(x) ¢ v(x) на x3 ¡ 1.

Пример 2. Найдем в кольце M(2; 4) сумму и произведение элементов u(x) = x2 + x + 1 и v(x) = x3 + x + 1.

1) Вычисляя “обычную“ сумму

u(x) + v(x) = (x2 + x + 1) + (x3 + x + 1) = x3 + x2 + 2x + 2

и заменяя каждый коэффициент этой суммы его остатком при делении на 2, получаем многочлен x3 + x2, который и будет суммой u(x) © v(x) элементов u(x) и v(x) кольца M(2; 4).

2) Находим “обычное“ произведение многочленов

u(x) ¢ v(x) = (x2 + x + 1) ¢ (x3 + x + 1) = x5 + x4 + 2x3 + 2x2 + 2x + 1

и делим это произведение с остатком на многочлен x4 ¡ 1:

x5 + x4 + 2x3 + 2x2 + 2x + 1 = (x4 ¡ 1)(x + 1) + (2x3 + 2x2 + 3x + 2):

Заменяя коэффициенты остатка (2x3 +2x2 +3x+2) их остатками при делении на 2, получим

u(x) ¯ v(x) = x:

В векторной форме полученные результаты можно записать так:

8

< (0; 1; 1; 1) © (1; 0; 1; 1) = (1; 1; 0; 0); : (0; 1; 1; 1) ¯ (1; 0; 1; 1) = (0; 0; 1; 0):

45

3.4Сравнения многочленов по модулю

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

3.4.1Сравнения многочленов по модулю m

Пусть m ¸ 2 целое число. Многочлены f1(x) и f2(x) с целыми коэффициентами называются сравнимыми по модулю m, если их разность является многочленом, все коэффициенты которого делятся на m. Записывается это так: f1(x) ´ f2(x)(mod m). Например, справедливы следующие сравнения

3x3 + 14x2 ¡ 7x + 9

´

4x6

+ 5x3 + x + 1

(mod 2);

3x3 + 14x2 ¡ 7x + 9

´

8x2

+ 2x + 15

(mod 3):

Любой многочлен f1(x) с целыми коэффициентами сравним по модулю m с некоторым (единственным) многочленом f2(x), коэффициенты которого принадлежат множеству f0; 1; : : : ; m¡1g. Для получения f2(x) надо каждый коэффициент многочлена f1(x) заменить его остатком при делении на m. Например, при m = 3 и f1(x) = 3x3 +14x2 ¡7x+9 получаем f2(x) = 2x2 +2x.

3.4.2Сравнения многочленов по модулю многочлена

Пусть f1(x), f2(x) и s(x) многочлены с целыми коэффициентами, причем степень s(x) больше нуля. Говорят, что многочлены f1(x) и f2(x) сравнимыми по модулю многочлена s(x), если их разность делится на многочлен s(x), то есть найдется такой многочлен u(x) с целыми коэффициентами, для которого выполнено равенство f1(x) ¡ f2(x) = s(x)u(x). Записывается этот факт так: f1(x) ´ f2(x) (mod s(x)). Например, из равенства

(2x3 ¡ 5x2 + 11x + 3) ¡ (¡7x2 + 13x + 5) = 2(x + 1)(x2 ¡ 1)

вытекает справедливость сравнения

2x3 ¡ 5x2 + 11x + 3 ´ ¡7x2 + 13x + 5 (mod (x2 ¡ 1)):

46

Любой многочлен f(x) с целыми коэффициентами сравним по модулю s(x) со своим остатком при делении на многочлен s(x), поскольку из равенства f(x) = s(x)q(x) + r(x) следует f(x) ´ r(x) (mod s(x)). При этом r(x)

единственный многочлен, степень которого меньше степени многочлена s(x) и который сравним с f(x) по модулю многочлена s(x). Например, многочлен f(x) = 2x3 ¡ 5x2 + 11x + 3 сравним с многочленом 13x ¡ 2 по модулю s(x) = = x2 ¡ 1, поскольку 13x ¡ 2 остаток при делении f(x) на s(x):

f(x) = s(x) ¢ (2x ¡ 5) + (13x ¡ 2):

3.4.3Сравнения многочленов по модулю числа и многочлена

Пусть m ¸ 2 целое число и s(x) многочлен положительной степени с целыми коэфициентами. Пусть также f1(x) и f2(x) два многочлена с целыми коэффициентами. Говорят, что многочлены f1(x) и f2(x) сравнимыми по паре (модуль m, многочлен s(x)), если остаток при делении их разности на s(x) сравним с нулевым многочленом по модулю m. Записывается это так: f1(x) ´ f2(x)(mod m; s(x)).

Предложение 7 f1(x) ´ f2(x)(mod m; s(x)) тогда и только тогда, когда f1(x) ¡ f2(x) = s(x) ¢ q(x) + r(x) для некоторых многочленов q(x) и r(x) с целыми коэффициентами, причем все коэффиценты r(x) делятся на m.

За q(x) можно принять неполное частное, а за r(x) остаток при делении разности f1(x) ¡ f2(x) на многочлен s(x).

Предложение 8 Пусть m ¸ 2 целое число и s(x) многочлен положитель степени с целыми коэфициентами. Тогда для всякого многочлена f1(x) с целыми коэффициентами существует и единственен такой многочлен f2(x), что выполнены следующие свойства:

a)степень многочлена f2(x) меньше степени многочлена s(x);

b)коэффициенты f2(x) принадлежат множеству f0; 1; : : : ; m ¡ 1g;

c)f1(x) ´ f2(x)(mod m; s(x)).

47

Для получения f2(x) следует разделить с остатком f1(x) на s(x), а затем каждый коэффициент остатка r(x) при этом делении заменить его остатком при делении на число m.

Процедуру получения многочлена f2(x) по многочлену f1(x) называют

приведением многочлена f1(x) по модулям (m; s(x)).

Пример 3. Пусть f1(x) = 2x5+7x4¡5x3+10x+8, m = 4 и s(x) = x3+3x+1. Разделим f1(x) с остатком на s(x):

f1(x) = s(x) ¢ (2x2 + 7x ¡ 11) + (¡23x2 + 36x + 19):

Заменив коэффициенты остатка (¡23x2 +36x+19) из остатками при делении на m = 4, получим многочлен f2(x) = x2 + 3. Таким образом, справедливо сравнение

2x5 + 7x4 ¡ 5x3 + 10x + 8 ´ x2 + 3 (mod (4; x3 + 3x + 1)):

При построении циклических кодов в качестве модуля s(x) выбирают многочлен xn¡1, где n > 1 целое число. В этом случае получить многочлен f2(x) по многочлену f1(x) проще таким образом: в многочлене f1(x) заменить xn на 1, xn+1 на x, xn+2 на x2 и т.д., а затем привести подобные члены (по модулю m).

Пример 4. Пусть f1(x) = 2x7+7x6¡5x5+8x3+10x+8, m = 4 и s(x) = x5¡1. Заменяя в f1(x) x5 на 1, x6 на x и x7 на x2, придем к многочлену 2x2 + 7x ¡

5 + 8x3 + 10x + 8. После приведения подобных членов получаем многочлен 8x3 + 2x2 + 17x + 3. Заменяя в последнем многочлене коэффициенты на их остатки при делении на m = 4, получим f2(x) = 2x2 + x + 3. Справедливо, таким образом, сравнение

2x7 + 7x6 ¡ 5x5 + 8x3 + 10x + 8 ´ 2x2 + x + 3 (mod 4; x5 ¡ 1)

Отметим, что операции сложения и умножения в кольце M(p; n) удобнее определять с использованием сравнений многочленов по модулям. Пусть u(x) и v(x) элементы M(p; n). Тогда их сумму и произведение можно определить следующим образом:

48

(1) Сумма u(x) © v(x) это такой (единственный) элемент w(x) кольца M(p; n), для которого

u(x) + v(x) ´ w(x) (mod p; xn ¡ 1):

(2) Произведение u(x) ¯ v(x) это такой (единственный) элемент w(x) 2 M(p; n), для которого

u(x) ¢ v(x) ´ w(x) (mod p; xn ¡ 1):

В левых частях сравнений указаны сумма и произведение многочленов u(x) и v(x), которые рассматриваются как многочлены с целыми коэффициентами.

3.5Определение циклического кода

Пусть p простое число, n ¸ 2 целое число и g(x) и h(x) такие многочлены с коэффициентами из поля Zp, что

g(x)h(x) ´ xn ¡ 1 (mod p)

(2)

Циклический код C(x), построенный по числам p, n и многочленам g(x), h(x), определяется так:

C(x) = fg(x) ¯ '(x) : '(x) 2 M(p; n)g:

Иными словами, многочлен u(x) 2 M(p; n) является кодовым (то есть принадлежит коду C(x)) тогда и только тогда, когда найдется такой многочлен '(c) 2 M(p; n), для которого u(x) = g(x)¯'(x). Последнее равенство можно записать так:

u(x) ´ g(x)'(x)(mod p; xn ¡ 1):

(3)

Многочен g(x) называется порождающим многочленом циклического кода, а h(x) его проверочным многочленом. Пусть r = deg g(x) и k = deg h(x) степени многоченов g(x) и h(x) соответственно. Тогда кодовые слова кода C(x) будет состоять из n разрядов, из которых k будут информационными, а r проверочными. При этом n = r + k.

Пусть u(x) 2 M(p; n). Рассматривая u(x) и g(x) как многочлены с целыми коэффициентами, разделим с остатком u(x) на g(x). Пусть r(x)

49

полученный при этом остаток. Из сравнения (3) и определения кода C(x) вытекает

Предложение 9 u(x) 2 C(x) тогда и только тогда, когда все коэффициенты остатка r(x) делятся на p.

Из определения кода C(x) вытекают также следующие свойства:

Предложение 10 Пусть C(x) циклический код. Тогда:

(а) Если u1(x) 2 C(x) и u2(x) 2 C(x), то u1(x) + u2(x) 2 C(x);

(б) Если u(x) 2 C(x) и ¸ 2 Zp, то ¸u(x) 2 C(x);

(в) Если u(x) 2 C(x), то x ¢ u(x) 2 C(x).

Из (а) и (б) вытекает, что код C(x) образует векторное подпространство пространства M(p; n), то есть является линейным кодом.

Пусть ' : M(p; n) ! Vn(Zp) рассмотренное выше отображение, которое многочлену u(x) = u0x1 + u1x2 + : : : + u2x + u1 из кольца M(p; n) ставит в соответствие вектор u = (u0; u1; u2; : : : ; u1), u = '(u(x)). Положим

C = f'(u(x)) : u(x) 2 C(x)g:

Множество C является векторным представлением циклического кода C(x). Векторы u 2 C называют кодовыми векторами.

Из пунктов (а) и (б) предложения 4 вытекает, что код C линеен. Из пункта (в) того же предложения следует, что он удовлетворяет условию цикличности:

Если (u0; u1; u2; : : : ; u1) 2 C, то (u1; u2; : : : ; u1; u0; ) 2 C:

Иными словами, при циклическом сдвиге компонент кодового вектора на одну позицию влево получаем кодовый вектор.

Из условия цикличности несложно вывести

Предложение 11 Пусть u кодовый вектор циклического кода. Тогда при циклическом сдвиге компонент вектора u на любое число позиций (влево или вправо) получается кодовый вектор.

50

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