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

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

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >

Лемма Гензеля

Лемма Гензеля в своей классической формулировке, принятой в алгебре и теории чисел, утверждает, что разложение полинома на взаимно простые сомножители, выполненное по модулю простого числа p, можно продолжить до разложения в кольце p - адических чисел. Доказательство ее можно найти, например, в монографии Ван дер Вардена [4 с. 549]. Основу доказательства составляет итерационный процесс перехода от сравнения по модулю некоторой степени числа p к сравнению по модулю большей степени p. Показывается, что этот переход можно выполнить за конечное число шагов, вопросам сложности в алгебраическом доказательстве уделяется мало внимания. Нас же в первую очередь интересует алгоритм этого перехода с учетом возможности его практической реализации и оценкой его времени работы.

Начнем с изложения леммы Гензеля в простейшем варианте: линейный подъем для двух сомножителей.

Предположим, что f(x)\in  \mathbb Z[x] и по модулю некоторой степени q=p^k простого числа p получено разложение f(x) на взаимно простые множители: f\equiv g_kh_k \pmod q, где g_k,h_k \in
\mathbb Z[x]. Мы хотим продолжить это сравнение до сравнения по модулю p^{k+1}.

На первом шаге мы должны получить разложение f\equiv g_1 h_1  \pmod 
p, что достигается применением алгоритма Берлекэмпа. Предположим, что мы нашли также полиномы \tilde g и \tilde h, такие, что

\begin{equation}
   1\equiv g_1\tilde g+ h_1 \tilde h \pmod p 
\end{equation} ( 18.1)

Эти полиномы можно найти, применяя в кольце F_p[x] расширенный алгоритм Евклида к полиномам h_1 и g_1. Полиномы \tilde g и \tilde  h определены неоднозначно, однозначность получается, если мы потребуем, чтобы их степени были ниже степеней полиномов h_1 и g_1 соответственно. В частности, полиномы \tilde g и \tilde h можно заменить их остатками от деления на h_1 и g_1 в кольце F_p[x]

Более того, без потери общности мы можем предполагать, что старшие коэффициенты полиномов h_k равны 1, а старшие коэффициенты полиномов g_k совпадают со старшим коэффициентом полинома f. В дальнейшем мы считаем это условие выполненным, хотя оно может противоречить выбору систем представителей по модулю p^k.

Полиномы g_{k+1},h_{k+1}\in \mathbb Z[x] мы будем искать в виде g_{k+1}=   g_k+\hat g_k p^k, h_{k+1}=h_k+\hat h_k
p^k. Сравнения

\begin{align*}
  f&\equiv g_{k+1}h_{k+1} \\
   &\equiv (g_k+\hat g_k p^k)(h_k+\hat h_k p^k) \\
   &\equiv g_k h_k+(\hat g_k h_k+\hat h_k g_k)p^k+\hat g_k\hat h_k p^{2k}
\pmod{p^{k+1}} \\
   &\equiv g_k h_k+(\hat g_k h_k+\hat h_k g_k)p^k \pmod{p^{k+1}}
\end{align*}
эквивалентны сравнению
f-g_k h_k\equiv (\hat g_k h_k+\hat h_k g_k)p^k
\pmod{p^{k+1}}.

Обе части этого сравнения делятся на p^k. После деления получаем сравнение \frac{f-g_k h_k}{p^k}\equiv (\hat g_k h_k+\hat h_k g_k) \pmod p. В правой части этого сравнения мы можем заменить g_k и h_k на g_1 и h_1 соответственно. Обозначим d_k=\frac{f-g_k
h_k}{p^k}. Домножим сравнение (18.1) на d_k и приравняем коэффициенты при g_1 и h_1. Получим \hat g_k \equiv d_k \tilde h \pmod{p,g_1}, \hat h_k \equiv d_k \tilde g \pmod{p,h_1}.

Итак, алгоритм линейного подъема Гензеля можно записать в следующем виде.

А30. АЛГОРИТМ (линейного подъема для двух сомножителей).

\begin{equation}\\
\text{Дано:\quad$f(x)$, $g_1(x)$,$h_1(x)$, $\tilde g(x)$, $\tilde h(x)\in \mathbb Z[x]$,}\\
                \text{\qquad $p \in \mathbb Z$  -  простое число, }\\
                \text{\qquad $f(x)\equiv g_1(x)h_1(x)  \pmod p$,} \\
                \text{\qquad $1\equiv g_1(x)\tilde g(x) + h_1(x)\tilde h(x)  \pmod
p$, $k\in \N$ }\\
\text{Надо:     \qquad $g$ и $h$ такие, что $f(x)\equiv g(x)h(x)  \pmod{p^k}$} \\
\text{Начало}\\
\text{$g:=g_1$}\\
\text{$h:=h_1$}\\
\text{цикл  для $t$ от $1$ до $k-1$}\\
\text{\qquad $d:=\dfrac{f-g\cdot h}{p^t} \pmod p$}\\
\text{\qquad $g_c:= d\cdot \tilde h \pmod{p, g_1}$}\\
\text{\qquad $h_c:= d\cdot \tilde g \pmod{p, h_1}$}\\
\text{\qquad $g:=g+g_c\cdot p^t$}\\
\text{\qquad $h:=h+h_c\cdot p^t$}\\
\text{конец цикла}\\
\text{Конец}
\end{equation}

Отметим, что для применения этого алгоритма для произвольного числа сомножителей нужно получить соответствующее представление единицы:

1\equiv\sum_i\biggl(\prod_{j\ne i}g[j]\biggr)\tilde g[i] \pmod p,
в котором \deg\tilde g[i]  <\deg g[i] (индекс в квадратных скобках означает номер сомножителя). Один из способов получения такого представления заключается в поочередном выделении одного из делителей полинома f и последовательном применении расширенного алгоритма Евклида. Другой способ — искать полиномы \tilde g[i] \pmod p в кольце F_p[x] методом неопределенных коэффициентов. Относительно этих коэффициентов получается система линейных уравнений порядка n=\deg f, условие невырожденности которой совпадает с условием, что полиномы g[i] не имеют общих делителей. (Нетрудно заметить, что нам нужно решить задачу, эквивалентную разложению дроби \frac1{\bigl(\prod\limits_ig[i](x)\bigr)} \pmod
p в сумму простейших.)

Снова предполагаем, что старший коэффициент полинома g[1] совпадает со старшим коэффициентом полинома f, а старшие коэффициенты остальных сомножителей g[i] равны 1.

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

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