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

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

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

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

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

Изложим теперь вариант леммы Гензеля, основанный на квадратичном подъеме, т.е. на переходе от сравнения по модулю q к сравнению по модулю q^2. Основное его отличие от линейного заключается в том, что сравнение 1\equiv
\sum\limits_i\prod\limits_{j\ne i}g_1[j](x)\tilde g[i](x)  \pmod  p, заменяется аналогичным сравнением по переменному модулю q. Естественно, что такое сравнение недостаточно выполнить один раз, необходимо вычислять его в основном цикле, что существенно повышает сложность этого цикла.

Рассмотрим задачу в следующей постановке.

  • Дано: полином f(x)\in \mathbb Z[x], число q взаимно простое с \textrm{lc} (f), разложение полинома f(x) на взаимно простые множители над кольцом вычетов по модулю q:
    \begin{equation}\
      f(x)\equiv u_1 (x)\dots u_r (x)  \pmod q. 
\end{equation} ( 18.2)
    Предполагается, что \textrm{lc} (u_1) = \textrm{lc} (f), а старшие коэффициенты всех остальных множителей равны 1. Кроме того, заданы значения переменных v_1, \dots, v_r типа полином, удовлетворяющие условиям:
    \begin{equation}
      \deg (v_i) < \deg (u_i ) \text{ для } 1\leq i\leq r 
\end{equation} ( 18.3)
    и
    \begin{equation}
     \sum_{i=1}^r v_i (x) \tilde u_i (x) \equiv 1 \pmod q, 
\end{equation} ( 18.4)
    где \tilde u_i (x) =\prod\limits^r_{j=1,j\ne i} u_j (x). Выше сказано, как найти полиномы v_i(x) для первого шага алгоритма (когда q = p является простым числом). Надо поднять это разложение до сравнения по модулю q^2, т.е. найти такие \hat u_1 (x),\dots,\hat u_r(x), что \textrm{lc}(\hat  u_1) 
=  \textrm{lc}  (f), старшие коэффициенты всех остальных множителей равны 1, и f(x)\equiv
      \hat u_1(x)\dots\hat u_r(x)  \pmod{q^2}. Требуется также найти новые значения переменных v_1, \dots, v_r, удовлетворяющие соотношениям (18.3) и (18.4), в которых полиномы u(x) заменены на \hat  u(x), а q заменено на q^2.

В рассматриваемом алгоритме факторизации q является степенью p, а множители u_1, \dots, u_r получаются подъемом неприводимых делителей f(x) по модулю p.

А32. АЛГОРИТМ (квадратичный подъем (q, f(x), u, v) ).

\begin{equation}\\
\text{Дано:\quad $f(x)\in \mathbb Z[x]$} \\
               \text{\qquad $q\in \mathbb Z$\qquad\qquad  // основание сравнения }\\
               \text{\qquad $u,v$  -  векторы типа $\mathbb Z[x]$ с
индексом $1..r$}\\
\text{Надо:     \qquad $q$  \qquad // новое значение основания сравнения} \\
               \text{\qquad $u,v$                   \qquad новые значения векторов}\\
\text{Переменные:\quad $t(x)\in \mathbb Z[x]$} \\
                      \text{\qquad $w$  -  вектор элементов  типа 
$\mathbb Z[x]$ с индексом $1..r$}\\ 
\text{Начало}\\                     
\text{$t(x) := (f(x) - \prod\limits_{i=1}^r u_i (x))   \pmod{q^2}$}\\
\text{$t(x) := t(x)/q$}\\
\text{цикл для $i$ от $1$ до $r$}\\
\text{\qquad $w_i(x) :=$ остаток от деления $t(x)\cdot v_i(x) $
                    на $u_i(x)$ по $\pmod q$}\\
\text{\qquad $u_i(x) := u_i(x) + q\cdot w_i(x)$}\\
\text{конец цикла }\\
\text{$t(x) := (1 - \sum\limits_{i=1}^r v_i(x) \tilde u_i(x))   
\pmod{q^2}$}\\
\text{$t (x) := t(x)/q$}\\
\text{цикл для $i$ от $1$ до $r$}\\
\text{\qquad $w_i(x) :=$ остаток от деления $t(x)\cdot v_i(x)$
                  на $u_i(x)$ по  $\pmod q$}\\
\text{\qquad $v_i(x) := v_i(x) + q\cdot w_i(x)$}\\
\text{конец цикла}\\
\text{Конец}
\end{equation}

Работа алгоритма начинается с вычисления вспомогательного многочлена t(x). Заметим, что из условий, наложенных на старшие коэффициенты, следует, что \deg t <
\deg f. Кроме того, из (18.2) следует, что t(x)\equiv 0\pmod q, поэтому деление во второй строке выполняется нацело. В первом цикле мы ищем многочлены \hat u_i (x) в виде u_i
(x) + q w_i  (x), для чего находим w_i (x), такие, что \deg w_i < \deg
u_i и

\begin{equation}
        \sum_i w_i (x) \tilde u_i (x)\equiv t(x) \pmod q. 
\end{equation} ( 18.5)
Условию (18.5) удовлетворяют многочлены t(x) v_i
(x), но для них не выполняется ограничение по степеням. При переходе от t(x)\cdot  v_i
        (x) к его остатку от деления на u_i(x) значение соответствующего слагаемого по модулю u_i(x) \tilde u_i(x) = 
\prod\limits_i
        u_i(x) не изменится. Выполнение равенства (18.5) после замены всех полиномов t\cdot
        v_i соответствующими остатками следует из того, что степени и левой, и правой его части меньше степени полинома f(x).

По завершении работы первого цикла многочлены \hat u_i(x) найдены, и мы переходим к модификации полиномов v_i. Снова вводим вспомогательный многочлен t(x). Из условий(18.3) следует, что \deg t < \deg f, а из (18.4) - что t(x)\equiv  0\pmod q, так что в следующей строке деление выполняется нацело.

В цикле мы ищем многочлены \hat v_i(x) в виде v_i(x) + 
q\cdot  w_i(x), для чего находим w_i(x), такие, что \deg w_i < \deg
u_i и

\begin{equation}
  \sum_i\tilde w_i(x)\cdot u_i(x)\equiv t(x) \pmod q 
\end{equation} ( 18.6)

Условию (18.6) удовлетворяют полиномы t(x)\cdot v_i
(x), но для них не выполняется ограничение по степеням; при переходе от t(x)\cdot
        v_i(x) к его остатку от деления на u_i(x) значение соответствующего слагаемого по модулю u_i(x)\tilde u_i(x)
=\prod\limits_i u_i(x) не изменится. Выполнение равенства (18.6) после замены всех полиномов t\cdot  v_i соответствующими остатками следует из того, что степени и левой, и правой его части меньше степени полинома f(x).

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

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