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

pri_cod2

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

Вычисления в конечных полях упрощаются, если использовать понятия и результаты теории сравнений.

1.1Сравнения в кольце целых чисел

Определение 1. Пусть m ¸ 2 целое число. Целые числа a и b называются сравнимыми по модулю m, если разность a¡b делится (нацело) на m. Запись a ´ b(mod m).

Лемма 5 a ´ b(mod m) тогда и только тогда, когда a и b дают одинаковые остатки при делении на m.

Лемма 6 Отношение сравнимости двух чисел по данному модулю рефлексивно, симметрично и транзитивно, то есть

a)a ´ a(mod m) при всех a;

b)если a ´ b(mod m), то b ´ a(mod m);

c)если a ´ b(mod m) и b ´ c(mod m), то a ´ c(mod m).

Лемма 7 Сравнения по одному и тому же модулю можно почленно складывать, вычитать, умножать, возводить в целую положительную степень (сохраняя при этом модуль). Члены сравнения можно переносить в другую часть с противоположным знаком. Члены сравнения и модуль можно умножать на целое положительное число.

Пример 3. Найдем остаток r при делении на 23 числа

A = 213 ¢ 472 ¢ 76 ¢ 812 ¢ 494 + 3156:

Сомножители дают при делении на m = 23 остатки 6, 12, 7, 7 и 11 соответственно, а число 315 остаток 16. Поэтому

A ´ 6 ¢ 12 ¢ 7 ¢ 7 ¢ 11 + 166 = (6 ¢ 12) ¢ (7 ¢ 7) ¢ 11 + (16 ¢ 16)3 = 72 ¢ 49 ¢ 11 + 2563 ´

´ 3 ¢ 3 ¢ 11 + 33 = 99 + 27 = 126 ´ 11 (mod 23):

Следовательно, остаток r равен 11.

31

Другой способ решения задачи (не использующий теории сравнений): 1) Производим арифметические действия и находим десятичную запись

числа A:

A = 979 994 635 165 833:

2) Делим с остатком число A на 23:

979 994 635 165 833 = 23 ¢ 42 608 462 398 514 + 11:

В итоге получаем тот же остаток 11.

 

 

Целое число b называют мультипликативным обратным для целого

 

числа a по модулю m, если ab ´ 1(mod m). Этот элемент обозначается

 

a¡1(mod m). Ясно, что если b = a¡1 (mod m), то a = b¡1 (mod m). Поэто-

 

му a и b взаимно обратны по модулю m. Например, числа 5 и 7 взаимно

 

обратны по модулю 17, поскольку 5 ¢ 7 = 35 ´ 1

(mod 17).

 

Предложение 2 a¡1(mod m) существует тогда и только тогда, когда

 

чис a и m взаимно просты.

 

 

При небольших m найти a¡1(mod m) можно, давая числу b значения

 

1, 2, 3, : : :, пока не придем к сравнению ab ´ 1

(mod m). Если b получило

 

значение, большее m, то обратного элемента нет. При больших m для поиска

N

a¡1(mod m) надо применить расширенный алгоритм Евклида [.....]

Сравнения по модулю m тесно связаны с кольцом Zm = f0; 1; 2; : : : ; m¡ 1g вычетов по модулю m. Пусть a; b; c 2 Zm. Тогда:

1)

a + b = c в кольце Zm тогда и только тогда, когда

 

a + b ´ c

(mod m).

2) a ¢ b = c в кольце Zm в том и только том случае, когда

 

a ¢ b ´ c

(mod m).

3)

b = a¡1

в кольце Zm тогда и только тогда, когда

 

b ´ a¡1

(mod m).

Пример 4.

Построим конечное поле из 52 = 25 элементов. Для этого

выберем неприводимый над полем Z5 многочлен g(x) = x2 + 2. Элементами

32

поля являются многочленами первой степени с коэффициентами из Z5. Все они представлены в следующей таблице:

0

1

2

3

4

 

 

 

 

 

x

x + 1

x + 2

x + 3

x + 4

 

 

 

 

 

2x

2x + 1

2x + 2

2x + 3

2x + 4

 

 

 

 

 

3x

3x + 1

3x + 2

3x + 3

3x + 4

 

 

 

 

 

4x

4x + 1

4x + 2

4x + 3

4x + 4

 

 

 

 

 

Найдем сумму и произведение элементов a(x) = 2x + 3 и b(x) = 4x + 1. Имеем:

a(x) + b(x) = 6x + 4 ´ x + 4(mod 5), поэтому a(x) © b(x) = x + 4

a(x) ¢ b(x) = 8x2 + 14x + 3 ´ 3x2 + 4x + 3 = 3(x2 + 2) + (4x ¡ 3)

Остаток при делении a(x) ¢ b(x) на g(x) равен 4x ¡ 3. Так как 4x ¡ 3 ´ 4x + 2(mod 5), полуаем

a(x) ¯ b(x) = 4x + 2

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

(2; 3) © (4; 1) = (1; 4); (2; 3) ¯ (4; 1) = (4; 2)

Замечание. Пусть a(x) = a0x + a1 и b(x) = b0x + b1 элементы поля F = GF (52), построенного по неприводимому над Z5 многочлену g(x) = x2 + 2. Тогда

a(x) + b(x) =

(a0 + b0)x + (a1 + b1);

a(x) ¢ b(x) =

(a0b0)x2 + (a0b1 + a1b0)x + a1b1 =

=

(a0b0)(x2 + 2) + (a0b1 + a1b0)x + (a1b1 ¡ 2a0b0)

Из последнего равенства вытекает, что остаток при делении многочлена a(x)¢b(x) на g(x) равен (a0b1+a1b0)x+(a1b1¡2a0b0). Поэтому поле F = GF (52) можно описать так:

33

Элементами поля F являются упорядоченные пары с компонентами из Z5, а сложение и умножение пар задается формулами

(a0; a1) © (b0; b1) = (a0 + b0; a1 + b1);

(a0; a1) ¯ (b0; b1) = (a0b1 + a1b0; a1b1 ¡ 2a0b0);

причем в правых частях равенств сложение и умножение производятся по модулю 5.

Например, (2; 3) © (4; 1) = (2 + 4; 3 + 1) = (1; 4), (2; 3) ¯ (4; 1) = (2 ¢ 1 + 3 ¢ 4; 3 ¢ 1 ¡ 2 ¢ 2 ¢ 4) = (14; ¡13) = (4; 2). Подобное описание допускает любое конечное поле. Эти описания полезны при создании компьютерных программ для вычислений в конечных полях.

1.2Проверка неприводимости многочлена над полем

Напомним, что многочлен f(x) положительной степени называется приводимым над некоторым полем P , если найдутся многочлены g(x) и h(x) положительной степени с коэффициентами из этого поля, для которых в этом поле верно равенство f(x) = g(x)h(x). Многочлен f(x) положительной степени называется неприводимым над полем P , если он не является приводимым над этим полем, то есть его нельзя представить в виде произведения двух многочленов положительной степени с коэффициентами из этого поля.

Если многочлен f(x) можно представить в виде произведения трех или более многочленов положительной степени, то он приводим, поскольку его можно представить в виде f(x) = g(x)h(x), где g(x) первый множитель, а h(x) произведение всех остальных сомножителей. Многочлены нулевой степени (то есть константы), а также нулевой многочлен не относят ни к приводимым ни к неприводимым многочленам.

Отметим, что для любых многочленов f(x), g(x) и h(x) с целыми коэффициентами и любого простого числа p эквивалентны следующие условия:

1)В поле Zp вычетов по простому модулю p верно равенство f(x) = g(x)h(x).

2)Справедливо сравнение f(x) ´ g(x)h(x)(mod p).

34

Пример 5. Многочен x2 + 6x + 1 приводим над полем Z7, так как имеет место сравнение x2 + 6x + 1 ´ (x + 2)(x + 4)(mod 7).

Приводимые многочлены во многом похожи на составные числа, а неприводимые на простые числа. Ряд результатов о простых и составных числах можно перенести на приводимые и неприводимые многочлены. Например, основная теорема арифметики утверждает, что любое целое число n ¸ 2 или является простым или разлагается в произведение простых чисел. Для многочленов верен аналогичный результат: любой многочлен положительной степени или неприводим или разлагется в произведение неприводимых многочленов.

При проверке приводимости или неприводимости многочлена полезно использовать следующие результаты:

Предложение 3 Многочен первой степени (вида ax+b, a =6 0) неприводим над любым полем.

Предложение 4 Пусть многочлен f(x) степени ¸ 2 имеет некоторый корень x0. Тогда f(x) приводим.

Доказательство. По теореме Безу f(x) делится на (x¡x0), то есть найдется многочлен g(x), для которого f(x) = (x ¡ x0)g(x). При этом степени множителей (x ¡ x0) и g(x) положительны.

Предложение 5 Пусть степень многочлена f(x) равна 2 или 3. Тогда f(x) приводим над некоторым полем тогда и только тогда, когда f(x) имеет корень в этом поле.

Доказательство. Если f(x) имеет корень, то он приводим по предыдущему предложению. Пусть теперь f(x) приводим. Тогда f(x) = g(x)h(x) для некоторых многочленов g(x), h(x) положительной степени. При этом хотя бы один из сомножителей имеет степень 1. Пусть, например, deg g(x) = 1. Тогда g(x) = ax + b, где a =6 0. В этом случае x0 = ¡a¡1b корень g(x). Но тогда f(x0) = g(x0)g(x0) = 0 ¢ h(x0) = 0, то есть x0 корень f(x).

35

Отметим, что существуют приводимые многочлены (степени ¸ 4), не имеющие корней. Таким является, например, f(x) = (x2 + 1)(x2 + 4) над полем Z7. Более общий результат: если многочен f(x) можно представить в виде произведения двух или более неприводимых многочленов, каждый из которых имеет степень ¸ 2, то f(x) приводим, но не имеет корней. N

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

многочленов степени ¸ 4. В связи с этим рассмотрим

Пример 6. Многочлен g(x) = x4 + x + 1 (из примера 7777) неприводим над Z2. Допустим, что он приводим. Тогда возможны два случая.

Случай 1. Для некоторых чисел ®, ¯, °, ®0, ¯0, °0, каждое из которых равно 0 или 1, справедливо сравнение

x4 + x + 1 ´ (®x2 + ¯x + °)(®0x2 + ¯0x + °0) (mod 2):

Раскрывая скобки и сравнивая старшие члены, а также свободные члены левой и правой частей сравнения, получим ®®0 ´ 1 (mod 2) и °°0 ´ 1 (mod 2), откуда ® = ®0 = ° = °0 = 1. Сравнивая теперь коэффициенты при x3, а также при x, придем к сравнениям ¯ + ¯0 ´ 1 (mod 2) и ¯ + ¯0 ´ 0 (mod 2). Полученные сравнения противоречат друг другу, поэтому этот случай невозможен.

Случай 2. Найдутся числа ® и ¯, каждое из которых равно 0 или 1, а также многочлен h(x) третьей степени, для которых справедливо сравнение

g(x) = x4 + x + 1 ´ (®x + ¯)h(x) (mod 2):

Ясно, что ® =6 0 (иначе степень g(x) была бы меньше 4). Поэтому ® = 1. Но тогда x0 = ¡¯ корень g(x). Однако g(0) = 1 0 (mod 2) и g(1) = 3 0 (mod 2). Полученное противоречие показывает, что и слечай 3 невоможен. Следовательно, многочлен g(x) = x4 + x + 1 неприводим над Z2.

Пример 7. Проверим, что многочлен f(x) = x3 + 6x2 + 8x + 4 приводим над полем Z11 и разложим его на непрводимые множители. Сначала выясним

36

имеет ли f(x) корни в этом поле. Найдем значения f(x) по модулю 11 при

x = 0; 1; 2; : : ::

8 f(0)

=

4

´

4

(mod 11);

 

 

>

 

 

´

 

 

 

>

 

 

 

 

 

>

 

 

 

 

 

 

>

=

19

 

8

(mod 11);

 

> f(1)

 

 

>

 

 

 

 

 

 

>

 

 

´

 

 

 

>

 

 

 

 

 

>

 

 

 

 

 

 

>

=

52

 

8

(mod 11);

 

> f(2)

 

 

<

 

 

 

 

 

 

> f(3)

=

109

 

10

(mod 11);

 

>

 

 

´

 

 

 

>

 

 

 

 

 

>

 

 

´

 

 

 

>

=

196

9

(mod 11);

 

> f(4)

 

>

 

 

 

 

 

 

>

 

 

´

 

 

 

>

 

 

 

 

 

>

 

 

 

 

 

 

>

 

 

 

 

 

 

>

=

319

 

0

(mod 11):

 

> f(5)

 

 

:

 

 

 

 

 

Таким образом, x0 = 5 корень f(x). По предложению ..... многочлен f(x) приводим. Для разложения этого многочлена на множители разделим f(x) на (x ¡ 5) с остатком, рассматривая f(x) и (x ¡ 5) как многочлены с целыми коэффициентами: f(x) = (5)(x2 +11x+63)+319. Заменяя коэффициенты многочленов остатками при делении на 11, получим f(x) ´ (x + 6)(x2 + 8)(mod 11), поэтому f(x) = (x + 6)(x2 + 8) над полем Z11. Теперь находим корень x0 = 5 многочлена x2+8 и делим g(x) с остатком на x¡5. Окончательный ответ таков: f(x) = (x + 6)2(x + 5) над полем Z11.

Замечание 1 При вычислении остатка при делении f(x0) на p полезно использовать свойства сравнений. Так, в примере 5 величину f(5)(mod 11) можно найти следующим образом:

f(5) = 53 + 6 ¢ 52 + 8 ¢ 5 + 4 = 25 ¢ 5 + 6 ¢ 25 + 40 + 4 ´

´3 ¢ 5 + 6 ¢ 3 + 7 + 4 = 15 + 18 + 11 ´

´4 + 7 + 0 ´ 0(mod 11)

Кроме того, при вычислении значения многочлена удобно использовать схему Горнера. Например, f(5)(mod 11) можно найти, заполняя клетки таблицы

 

1

6

8

4

 

 

 

 

 

x0 = 5

1

5 ¢ 1 + 6 ´ 0

5 ¢ 0 + 8 = 8

5 ¢ 8 + 4 ´ 0

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

37

Предложение 6 Для любого простого p и любого целого r ¸ 1 существует неприводимый над Zp многочлен степени r.

Приведем список некоторых неприводимых многочленов степени r · 4 для небольших модулей p:

Таблица 1

p

r = 2

r = 3

r = 4

 

 

 

 

 

 

 

 

2

x2 + x + 1

x3 + x + 1

x4 + x + 1

3

x2 + 1

x3 + 2x + 1

x4 + x + 2

5

x2 + 2

x3 + x + 1

x4 + 2

7

x2 + 1

x3 + 2

x4 + x + 2

11

x2 + 1

x3 + x + 4

x4 + x + 2

Задача. Найти все простые числа p < 100, для которых многочлен

x2 + 1 неприводим над полем Zp. 2

3

N

Отметим, что “похожий“ на x

+1 многочлен x

+1 приводим над любым

полем Zp это вытекает из разложения x3 + 1 = (x + 1)(x2 ¡ x + 1). Более общий результат: если многочлен степени ¸ 2 с целыми коэффициентами имеет целый корень, то он приводим над полем Zp при любом простом p.

1.3Линейный код, исправляющий 2 ошибки

Опишем линейный бинарный код C, исправляющий одну или две ошибки в кодовом слове. При построении кода используется конечное поле F из 16 элементов, которое было рассмотрено в примере 2. Это поле содержит нулевой элемент ®0 = 0 и 15 ненулевых элементов, которые обозначим ®1,

®2, : : :, ®15.

Проверочная матрица H кода C состоит из 15 столбцов высоты 8 из нулей и единиц. При j = 1; 2; : : : ; 15 столбец Hj соответствует элементу ®j и определяется следующим образом. Пусть

®j = a0x3 + a1x2 + a2x + a3

и

®j3 = ®j ¯ ®j ¯ ®j = b0x3 + b1x2 + b2x + b3:

38

Тогда столбец Hj состоит из элементов a0, a1, a2, a3, b0, b1, b2, b3 (в указанном порядке). Таким образом, для построения кода необходимо найти кубы всех ненулевых элементов поля F . Пусть, например, ®j = x3+x2+1. Рассматривая ®j = ®j(x) как многочлен с целыми коэффициентами, вычисляем

®j3 = x9 + 3x8 + 4x6 + 3x7 + 6x5 + 3x3 + 3x4 + 3x2 + 1:

При делении ®j3 на неприводимый многочлен g(x) = x4 + x + 1 (по которому построено поле F ) получаем остаток ¡3x3 ¡ 2x2 + x + 4. Заменив в остатке каждый коэффициент его остатком при делении на число p = 2, придем к многочлену x3 + x. Поэтому ®j ¯ ®j ¯ ®j = x3 + x. Следовательно, столбец Hj состоит из элементов 1, 1, 0, 1, 1, 0, 1, 0 (в указанном порядке).

Условно матрицу H можно записать так:

H =

0

3

3

3

3

1

:

 

@

®1

®2

®3

: : : ®15

A

 

 

®1

®2

®3

: : : ®15

 

Отметим, что первые 4 строки матрицы содержат все ненулевые столбцы высоты 4, составленные из нулей и единиц.

Длина n кодовых строк рассматриваемого бинарного линейного кода C равна числу столбцов проверочной матрицы H, то есть 15. Число проверочных разрядов r равно 8 (числу столбцов). Поэтому число k информационных разрядов равно n ¡ r = 15 ¡ 8 = 7. Следовательно, C является линейным (15; 7)-кодом.

Поиск и исправление ошибок

Пусть по каналу связи отправлено кодовое слово u (из 15 двоичных разрядов), а получено слово v = u + e, где e вектор ошибок. Допустим, что при передаче произошло 2 ошибки в разрядах с номерами i и j. Тогда вектор ошибок e содержит две единицы в i-ой и j-ой позиции, а остальные его компоненты нули. Синдром s вектора v равен сумме i-го и j-го столбцов матрицы H. Пусть столбец с номером i построен по элементу a 2 F , а столбец с номером j по элементу b 2 F . Тогда справедливо матричное равенство

s = 0@ s1 1A = 0@ a3 1A + 0@ b3 1A ;

s2 a b

39

где s1 столбец из первых четырех компонент синдрома s, а s2 столбец из его последних четырех компонент. Это уравнение равносильно системе

уравнений

8 a3+ b

 

 

 

3

= s1;

 

< a + b

 

= s2;

 

:

 

 

где a и b неизвестные элементы поля F .

Вполе F верно равенство 2 = 1 + 1 = 0, поэтому s21 = (a + b)2 =

=a2 +2ab+b2 = a2 +b2, откуда s2 = a3 +b3 = (a+b)(a2 ¡ab+b2) = s1(s21 ¡ab),

что дает ab = s2

+ s2

. Следовательно, a и b корни квадратного уравнения

s1

1

t2 + s1t +

Ãs1 + s12!

= 0:

 

 

 

 

 

 

s2

 

 

Первый корень находят подбором (подставляя вместо t элементы ®1, ®2, : : :), второй по теореме Виета. После того, как найдены корни, легко найти номера разрядов, в которых произошли ошибки, а затем исправить эти ошибки.

Случай одной ошибки рассматривается аналогично и приводит к такой

системе:

8 a3

= s1;

 

 

< a

= s2:

3

:

существует и единственно. В противном

Если (s2)

= s1, то решение a = s1

случае решений нет.

Схема поиска ошибок

1)Если s1 = 0 и s2 = 0, то принимается решение, что ошибок нет.

2)Если s1 = 0, s2 6= 0, то число ошибок не меньше трех.

3)Если s1 6= 0 и s2 = s31, то ошибка одна (в позиции, соответствующей элементу поля F с векторным представле-

нием s1).

4)Если s1 6= 0 и s2 6= s31, то имеются 2 ошибки и находятся они путем решения описанного выше квадратного уравнения.

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

40

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