Здесь c — примитивный корень порождающего многочлена g(x), а для проверочного многочлена h(x) берутся те степени c j, которые не вошли в многочлен g(x). Как видим, действия с многочленами во многом схожи с действиями над числами. Приводимый многочлен вида xq–1 – 1 играет роль составного числа a, его примитивные корни c1, c2, ... , cq –1 ассоциируются с простыми сомножителями p1,
p2, ..., pk, а последняя формула разложения на множители аналогична каноническому разложению составного числа a = p1n1 p2n2 ....pknk. Многочлены g(x) и h(x) играют роль двух делителей числа
a = g · h. Корни исходного многочлена играют роль базиса, по которому многочлены g(x) и h(x) могут быть разложены. Таким образом, теория полей многочленов смыкается с теорией линейных пространств. Покажем, как это осуществляется практически.
Если c — примитивный корень многочлена g(x), то
g(c) = g0 + g1c + g2c2 + ... + gncn = 0.
Выразим степени корней cn и cn+1 через линейную комбинацию младших степеней корней c, c2, ..., cn–1 (gn = 1):
cn = g0 + g1c + g2c2 + ... + gn–1cn–1,
cn+1 = g0c + g1c2 + g2c3 + ...
... + gn–1(g0 + g1c + g2c2 + ... + gn–1cn–1).
Следовательно, все степени ci при i > n линейно выражаются через первые n степеней; число таких комбинаций не превышает величину q – 1. Следует также иметь в виду, что не только g(c) = 0, но и
g(c2) = g(c3) = ... = g(cq–1) = 0.
Пример 1. Рассмотрим поле многочленов GF(q) по модулю неприводимого многочлена g(x) = x2 + x + 1. Пусть примитивным корнем многочлена g(x) является корень c, тогда g(c) = c2 + c + 1 = 0. Так как q =
23 = 8, то циклический порядок корня c равен q – 1 = 7. Все корни степени
i > 2 выражаются через c и c2, при этом g(c) берется за модуль:
c3 = (c3 + c + 1) · 1 + (c + 1) = c + 1,
c4 = (c3 + c + 1) · c + (c2 + c) = c2 + c,
c5 = (c3 + c + 1) · c2 + (c3 + c2) = c2 + c + 1,
c7 = (c3 + c + 1) · c3 + (c4 + c3) = c2 + 1.
Проверим, что числа c, c2 и c4 действительно являются корнями многочлена g(x) = x2 + x + 1:
g(c) = c3 + c + 1 = c + 1 + c + 1 = 0,
g(c2) = c6 + c2 + 1 = c2 + 1 + c2 + 1 = 0,
g(c4) = c12 + c4 + 1 = c5 + c4 + 1 = 0.
Отсюда порождающий многочлен g(x) раскладывается на следующие примитивные множители:
g(x) = x2 + x + 1 = (x + c)(x + c2)(x + c4),
на долю же проверочного многочлена h(x) приходятся все остальные степени корня c:
h(x) = (x + c3)(x + c5)(x + c6)(x + c7).
Таким образом, исходный приводимый многочлен x7 + 1 может быть разложен каноническим образом в расширенном поле
примитивных корней (аналог поля комплексных чисел):
x7 + 1 = (x + c)(x + c2)(x + c3)(x + c4)(x + c5)(x + c6)(x + c7),
и неканоническим, где в скобках стоят простые сомножители (аналог поля действительных чисел):
x7 + 1 = (x3 + x + 1)( x3 + x2 + 1)(x + 1),
а также в виде двух сомножителей:
x7 + 1 = g(x)h(x) = (x3 + x + 1)( x4 + x2 + x + 1).
Если в роли модуля будет выступать порождающий многочлен g(x) = x3 + x2 + 1, то его примитивный корень d даст несколько отличный цикл высших степеней корней, а именно:
d3 = d2 + 1, d4 = d2 + d + 1, d5 = d + 1, d6 = d2 + d,
во всем же остальном процедура не изменится.
Пример 2. Составим полную таблицу неприводимых многочленов gi(x) поля вычетов GF(24) по модулю g(x) = x4 + x + 1 над числовым полем GF(2) (табл. 2.82).
Таблица 2.82
Заполнение таблицы неприводимых многочленов начнем с исходного многочлена. Так как
g(x) = (x – c)(x – c2)(x – c4)(x – c8),
против степеней c, c2, c4 и c8 можно писать многочлен g(x). Далее, выразим все степени ci через c, c2 и c3, как это было сделано в предыдущем случае. Чтобы найти все остальные неприводимые множители, необходимо поступить следующим образом. Возьмем произвольный корень a = c14 = c3 + 1. Тогда
ga (x) = (x – a)(x – a2)(x – a4)(x – a8).
Так как
a2 = c28–15 = c13 = c3 + c2 + 1,
a4 = c56–45 = c11 = c3 + c2 + c,
a8 = c112–105 = c7 = c3 + c + 1,
можно написать
ga(x) = (x – c14)(x – c13)(x – c11)(x – c7) =
= [x2 – (c14 + c13)x + c12] · [x – c11] · [x – c7] =
= (x2 – c2x + c12) · (x – c11) · (x – c7) =
= [x3 – (c11 + c2)x2 + (c12 + c13)x – c8] · (x – c7) =
= (x3 – c9x2 + cx – c8) · (x – c7) =
= x4 – (c9 + c7)x3 + (c + c)x2 – (c8 + c8)x + c15.
Следовательно, против корней c7, c11, c13 и c14 ставим неприводимый многочлен ga(x) = x4 + x3 + 1. Затем берется следующий неизвестный корень и предыдущая процедура повторяется. Так происходит последовательное заполнение всей табл. 2.82. Проверка правильности нахождения состоит в выполнении основного тождества:
x15 + 1 = (x4 + x3 + 1)(x4 + x + 1)(x4 + x3 + x2 + x + 1)(x2 + x + 1)(x + 1).
Пример 3. Рассмотрим поле GF(32) по модулю g(x) = x2 + 1 над полем GF(3). Здесь многочлен g(x) является неприводимым, но он не является и порождающим или образующим многочленом поля, поскольку степени его корня дают единицу уже при c4, а не 8:
c2 = (c2 + 1) · 1 + 2 = 2,
c3 = (c2 + 1) · c + 2c = 2c,
c4 = (c2 + 1) · c2 + 1 = 1,
c5 = c, c6 = 2, c7 = 2c, c8 = 1.
Аналогичная ситуация возникает и в числовых полях, например, в поле GF(7) элемент 3 является образующим, так как его степени порождают все элементы поля:
31 = 3, 32 = 2, 33 = 6, 34 = 4, 35 = 5, 36 = 1,
тогда как элемент 2 уже не будет образующим; в самом деле, его степени не дают элементы 3, 5 и 6:
21 = 2, 22 = 4, 23 = 1, 24 = 2, 25 = 4, 26 = 1.
Поэтому исходным порождающим элементом нужно выбрать другой неприводимый многочлен, например, g(x) = x2 + x + 2. При составлении полной таблицы неприводимых многочленов (табл. 2.83) для случая поля
GF(3) действуем аналогично предыдущему примеру. Представителями классов вычетов по модулю 3 могут быть как числа 0, 1, 2, так и числа –1, 0, 1. Отсюда возникают две формы записи неприводимых многочленов с двумя проверочными соотношениями:
x8 + 2 = (x2 + x + 2)(x2 + 2x + 2)(x2 + 1)(x + 1)(x + 2),
x8 – 1 = (x2 + x3 – 1)(x4 – x – 1)(x2 + 1)(x + 1)(x – 1).
Таблица 2.83
Полные таблицы неприводимых многочленов и линейные комбинации корней для полей
GF(52), GF(33) и GF(25) приведены, соответственно, в табл. 2.84, 2.85 и 2.86.
Таблица 2.84
Таблица 2.85
Таблица 2.86
Для практического задания по теме составления полной таблицы неприводимых многочленов преподаватель может менять порождающий многочлен g(x); g(x) стоит в первых строчках приведенных таблиц; в этом случае происходит перегруппировка строк.