|
Пожалуйста, проясните ситуацию. Был выбран курс " Компьютерная алгебра" для самостоятельного изучения. Как теперь записаться на этот курс с целью получения диплома о повышении квалификации? На данный момент он имеет статус " изучаю". Если я пройду экзаменационный тест в таком статусе без оформления документов и оплаты диплома, придется ли еще раз регистрироваться на этот курс и заново проходить тестирование? |
Разложение многочленов на неприводимые множители по модулю p. Лемма Гензеля
Лемма Гензеля
Лемма Гензеля в своей классической формулировке, принятой в
алгебре и теории чисел, утверждает, что разложение полинома на взаимно простые
сомножители, выполненное по модулю простого числа
, можно
продолжить до
разложения в кольце
- адических чисел. Доказательство
ее можно найти,
например, в монографии Ван дер Вардена [4 с. 549]. Основу
доказательства
составляет итерационный процесс перехода от сравнения по модулю некоторой
степени числа
к сравнению по модулю большей степени
. Показывается, что этот
переход можно выполнить за конечное число шагов, вопросам сложности в
алгебраическом доказательстве уделяется мало внимания. Нас же в первую очередь
интересует алгоритм этого перехода с учетом возможности его практической
реализации и оценкой его времени работы.
Начнем с изложения леммы Гензеля в простейшем варианте: линейный подъем для двух сомножителей.
Предположим, что
и по модулю некоторой
степени
простого числа
получено разложение
на взаимно простые
множители:
, где
. Мы хотим
продолжить это сравнение до сравнения по модулю
.
На первом шаге мы должны получить разложение
,
что достигается применением алгоритма Берлекэмпа. Предположим, что мы нашли
также полиномы
и
, такие, что
![]() |
( 18.1) |
Эти полиномы можно найти, применяя в кольце
расширенный алгоритм Евклида к полиномам
и
.
Полиномы
и
определены неоднозначно, однозначность получается,
если мы
потребуем, чтобы их степени были ниже степеней полиномов
и
соответственно.
В частности, полиномы
и
можно
заменить их остатками от
деления на
и
в кольце ![F_p[x]](/sites/default/files/tex_cache/08046df968872bddd17f9de3e18ba88a.png)
Более того, без потери общности мы можем предполагать, что старшие
коэффициенты
полиномов
равны
, а старшие коэффициенты
полиномов
совпадают со
старшим коэффициентом полинома
. В дальнейшем мы считаем это
условие выполненным,
хотя оно может противоречить выбору систем представителей по
модулю
.
Полиномы
мы будем искать
в виде
,
. Сравнения


Обе части этого сравнения делятся на
. После деления
получаем сравнение
.
В правой части этого сравнения мы можем заменить
и
на
и
соответственно. Обозначим
. Домножим
сравнение (18.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}](/sites/default/files/tex_cache/fc67300a5b7b3b14fda5def92749bc4d.png)
Отметим, что для применения этого алгоритма для произвольного числа сомножителей нужно получить соответствующее представление единицы:
![1\equiv\sum_i\biggl(\prod_{j\ne i}g[j]\biggr)\tilde g[i] \pmod p,](/sites/default/files/tex_cache/3c19bf69de46e96036bfb9a3a6ef8ebe.png)
(индекс в квадратных
скобках означает
номер сомножителя).
Один из способов получения такого представления заключается в
поочередном выделении одного из делителей полинома
и
последовательном
применении расширенного алгоритма Евклида. Другой способ — искать
полиномы
в кольце
методом неопределенных
коэффициентов. Относительно этих коэффициентов получается система линейных
уравнений порядка
, условие невырожденности которой
совпадает с
условием, что полиномы
не имеют общих делителей. (Нетрудно
заметить, что
нам нужно решить задачу, эквивалентную разложению дроби
в сумму простейших.)Снова предполагаем, что старший коэффициент полинома
совпадает со
старшим коэффициентом полинома
, а старшие коэффициенты
остальных
сомножителей
равны
.
