Опубликован: 04.03.2008 | Доступ: свободный | Студентов: 1644 / 54 | Оценка: 4.56 / 3.67 | Длительность: 30:07:00
ISBN: 978-5-9556-0099-4
Специальности: Программист, Математик
Лекция 8:

Разложение многочленов на неприводимые множители по модулю p. Лемма Гензеля

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >
Аннотация: В данной лекции рассматривается разложение многочленов не неприводимые множители по модулю, а также лемма Гензеля. Приведены практические примеры и алгоритмы, а также предоставлены задачи для самостоятельного рассмотрения

Разложение многочленов на неприводимые множители по модулю p

Этот раздел посвящен детализации предписания "нулевое приближение разложения". Разделим его на два этапа:

  1. разложить многочлен на неприводимые множители по модулю простого p ;
  2. найти добавочные множители v_i.

Результатом первого этапа будет целое r и вектор u элементов типа многочлен с индексом 1..r.

Результатом второго этапа должен явиться вектор v элементов типа \mathbb Z[x] с индексом 1..r, такой, что

\sum_{i=1}^r v_i(x) \prod_{\substack{j=1\\j\ne i}}^r
u_j(x)\equiv 1 \pmod p;
при этом на элементы вектора v накладываются условия
\deg v_i(x)<\deg u_i(x).
Вектор v понадобится нам в предписании "выполнить шаг итерации".

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

\frac1{\prod\limits_{i=1}^r u_i(x)}=\sum_{i=1}^r
\frac{v_i(x)}{u_i(x)}.
Можно также несколько раз воспользоваться расширенным алгоритмом Евклида.

Как и в случае простых чисел, задача разложения многочлена на простые множители безусловно сложнее, чем нахождение НОД, но если выполнять разложение по модулю некоторого простого числа, то оно осуществляется не так сложно, как можно было бы ожидать. Значительно проще найти простые множители произвольного многочлена степени n по модулю 2, чем с помощью любого из известных методов определить сомножители произвольного n -разрядного числа в двоичной системе счисления. Этот удивительный факт — следствие алгоритма разложения, открытого в 1967 году Элвином Р. Берлекэмпом.

Основными результатами, на которых основан алгоритм Берлекэмпа, является малая теорема Ферма и китайская теорема об остатках.

17.1. ТЕОРЕМА (Ферма малая). Если p - простое число, то для любого a\in\mathbb Z выполняется сравнение a^p\equiv a\pmod p.

17.2. ЗАМЕЧАНИЕ. Малая теорема Ферма может использоваться в алгоритмах проверки простоты натуральных чисел, а именно, если a^n\not\equiv a\pmod n для некоторого a\in\mathbb Z, то n - составное число. Существуют однако составные числа n, для которых a^n\equiv
a\pmod n для любого a\in\mathbb Z.

17.3. ОПРЕДЕЛЕНИЕ. Составное число n, такое, что сравнение a^n\equiv a\pmod
n выполняется для любого a\in\mathbb Z, называется кармайкловым.

17.4. УПРАЖНЕНИЕ. Найти несколько первых кармайкловых чисел.

17.5. ТЕОРЕМА (китайская об остатках для целых чисел). Пусть p_1,\dots,p_r - попарно взаимно простые целые числа. Для любого набора a_1,\dots,a_r целых чисел существует целое число c , такое, что c\equiv a_i\pmod{p_i} для любого i=1,\dots,r. Условием 0\le
c<\smash[b]{\prod\limits_{i=1}^r} p_i число c определяется однозначно.

17.6. ТЕОРЕМА (китайская об остатках для многочленов). Пусть k - поле и u_1(x),\dots,u_r(x) - попарно взаимно простые многочлены из k[x] . Для любого набора a_1(x),\dots,a_r(x) многочленов из k[x] существует многочлен c(x) , такой, что c(x)\equiv a_i(x)\pmod{u_i(x)} для любого i=1,\dots,r . Условием \deg c(x)<\smash[b]{\sum\limits_{i=1}^r} \deg u_i(x) многочлен c(x) определяется однозначно.

17.7. СЛЕДСТВИЕ. Пусть p - простое число, u_1(x),\dots,u_r(x) - попарно взаимно простые многочлены из F_p[x]. Для любого набора s_1,\dots,s_r целых чисел существует единственный многочлен v(x), такой, что

\begin{equation*}
  \gathered
  v(x)\equiv s_i\pmod{u_i(x)},\qquad 1\le i\le r, \\
  \deg v(x)<\sum_{i=1}^r \deg u_i(x).
  \endgathered
\end{equation*} ( 17.1)

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

Пусть p - простое число. Все рассматриваемые ниже операции с многочленами будут выполняться по модулю p.

Предположим, что задан многочлен u(x), коэффициенты которoго выбраны из множества \{0,
1,\dots, p-1\}. Считаем, что многочлен u(x) нормирован, т.e его старший коэффициент равен 1 и свободен от квадратов, если его рассматривать над полем F_p. Если это условие не выполнено, то можно воспользоваться результатом задачи 15.1.

17.8. ПРЕДЛОЖЕНИЕ. Для любого многочлена v(x)\in F_p[x]

\begin{equation*}
  v(x^p) =[v(x)]^p. 
\end{equation*} ( 17.2)

ДОКАЗАТЕЛЬСТВО. Для любых многочленов v_1(x) и v_2(x)\in\mathbb Z[x] по модулю p выполняются равенства

\begin{align*}
  (v_1(x)\cdot v_2(x))^p&= (v_1(x))^p\cdot (v_2(x))^p ,\\
  [v_1(x)+v_2(x)]^p&=v_1^p+ C_p^1v_1^{p-1}v_2+\dots+ v_2^p
           =v_1^p(x)+v_2^p(x),
\end{align*}
поскольку все биномиальные коэффициенты кратны p (т.е. в F_p обращаются в нуль). Далее, для всякого целого числа a по малой теореме Ферма имеем \smu{2} a^p\equiv a\pmod p. Поэтому, если \smu{2}
v(x)=v_mx^m+\cdots\cdots +v_0, то
\begin{align*}
   [v(x)]^p=(v_mx^m)^p+\dots+ (v_0)^p
        =v_mx^{mp}+\dots+ v_1x^p+v_0= v(x^p),
\end{align*}
что и доказывает ( 17.2 ).

Идея Берлекэмпа состоит в том, чтобы для нахождения неприводимых сомножителей u_1(x),\dots,u_r(x) многочлена f(x)\in
F_p[x] воспользоваться теперь китайской теоремой об остатках для многочленов, точнее, следствием 17.7. (Отметим, что сравнение выполняется в кольце многочленов с коэффициентами из конечного поля, т.е. утверждение g(x)\equiv h(x)\pmod{q(x)} означает, что разность g(x)-h(x) в кольце \mathbb Z[x] принадлежит идеалу, порожденному элементами q(x) и p.)

Если нам известен многочлен v(x), удовлетворяющий системе сравнений ( 17.1 ), то можно получить разложение f(x) на множители, используя тот факт, что если r\ge 2 и s_1\ne
s_2, то {НОД(f(x), v(x)-s_1)} делится на u_1(x) и не делится на u_2(x).}

Поскольку решение системы (17.1) может оказаться полезным для решения интересующей нас задачи разложения многочлена на множители, рассмотрим систему (17.1) более подробно. Прежде всего заметим, что решение v(x) этой системы удовлетворяет условию

(v(x))^p\equiv s_j^p\equiv s_j\equiv v(x)
\pmod{u_j(x)}\qquad\text{при}\quad 1\le j\le r,
поэтому
\begin{equation*}
  (v(x))^p\equiv v(x)\pmod{f(x)},\qquad \deg v < \deg f. 
\end{equation*} ( 17.3)

В поле F_p=\mathbb Z/p\mathbb Z выполняется разложение

x^p-x = (x-0)\cdot(x-1)\cdots (x-(p-1)),
доказательство которого восходит еще к Лагранжу (1771 год). Следовательно, любой многочлен v(x) удовлетворяет соотношению
\begin{equation*}
  (v(x))^p- v(x) = (v(x)-0) (v(x)-1)\cdots (v(x)-(p-1)), 
\end{equation*} ( 17.4)
в котором все операции выполняются по модулю p. Отсюда следует, что если многочлен v(x) удовлетворяет соотношению (17.3), то f(x) делит левую часть \vad равенства (17.4), а следовательно, любой неприводимый множитель многочлена f(x) должен делить один из p взаимно простых множителей в правой части равенства (17.4). Значит, все решения сравнения (17.3) должны представляться в виде (17.1) при некотором выборе значений s_1,\dots, s_r, т.е. у этого сравнения имеется ровно p^r решений. Таким образом, решения сравнения (17.3) дают нам ключ к отысканию разложения многочлена f(x) на неприводимые множители. Может показаться, что найти все решения сравнения (17.3) еще труднее, чем разложить f(x) на неприводимые множители, однако в действительности это не так, поскольку множество решений сравнений (17.3) замкнуто относительно сложения, следовательно, оно является векторным пространством над полем F_p=\mathbb Z/p\mathbb Z.

Пусть \deg f(x) = n ; рассмотрим матрицу размера n\times
n

\EuScript Q=\bmatrix
q_{0,0}&q_{0,1}&\hdots&q_{0,n-1}\\\vdots&\vdots&\ddots&\vdots\\q_{n-1,0}&q_{n-1,1}&\hdots&q_{n-1,n-1}\endbmatrix
элементы которой определяются соотношениями
x^{kp}\equiv q_{k,n-1}x^{n-1}+\dots + q_{k,1}x +
q_{k,0}\pmod{f(x)}.
Многочлен v(x)=v_{n-1}x^{n-1}+\dots +v_0 является решением сравнения (17.3) тогда и только тогда, когда выполняется векторное равенство
(v_0,\dots, v_{n-1})\cdot\cQ =(v_0,\dots,
v_{n-1}).

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

v(x)=\sum_j\kern-1pt v_jx^j =\sum_j\sum_k\kern-1pt v_kq_{k,j}x^j\equiv
\sum_k\kern-1pt v_kx^{kp} = v(x^p)\equiv [v(x)]^p\kern-1pt\pmod{\kern-2pt
f(x)}.

Построение матрицы \EuScript Q легко можно осуществить следующим образом. Для сравнительно малых p можно воспользоваться таким методом вычисления многочленов x^k\pmod{f(x)}. Пусть

f(x) =x^n+\dots + c_1 x + c_0;
и
x^k\equiv a_{k,n-1}x^{n-1}+\dots+ a_{k,1}x +a_{k,0}
\pmod{f(x)}.
Тогда
\begin{align*}
  x^{k+1}&\equiv a_{k,n-1}x^n+\dots+ a_{k,1}x^2+a_{k,0}x \\
    &\equiv a_{k,n-1}(-c_{n-1}x^{n-1}-\dots-c_1x-c_0)
      +a_{k,n-2}x^{n-1}+\dots+ a_{k,0}x \\
  &= a_{k+1,n-1}x^{n-1}+\dots+ a_{k+1,1}x+a_{k+1,0}x,
\end{align*}
где a_{k+1,j}= a_{k,j-1}-a_{k,n-1}c_j. По определению полагаем a_{k,-1}=0, так что a_{k+1,0}=-a_{k,n-1}c_0. Таким образом, алгоритм Берлекэмпа разложения многочлена на неприводимые множители состоит в следующем.

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >
Марина Подлевских
Марина Подлевских

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