Опубликован: 04.03.2008 | Уровень: профессионал | Доступ: платный

Лекция 10: Алгоритмы факторизации, основанные на выборе малого вектора в решетке

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >

А40. АЛГОРИТМ (неприводимый-множитель (f, h, g, p)).

\begin{equation*}
\text{Дано:\quad  $ p\in \mathbb Z  $ , $ f, h\in\mathbb Z [x] $ }\\
         \text{ \qquad  $ h $  -  неприводимый по модулю $ p $ многочлен, делящий  $ f $  по модулю  $ p $ }}\\
\text{Надо: \qquad  $ g $  - неприводимый над  $ \mathbb Z  $ многочлен, делящий  $ f $  и делящийся
           по модулю  $ p $  на  $ h $ .}}\\ 
\text{Обозначения:\quad  $ n== f $ .степень}\\
                  \text{\qquad  $ l == h $ .степень}\\
\text{Переменные:\qquad целое $ k $} \\
                 \text{\qquad решетка $ L $} \\
\text{Начало}\\
\text{найден множитель := "нет"}\\
\text{цикл для $ m $ от $ l $ до $ n-1 $ пока  не найден 
множитель}\\
\text{\qquad вычислить $ k $ , такое, чтобы выполнялось неравенство
(21.30)}\\
\text{\qquad пользуясь леммой Гензеля, поднять сравнение $   h\cdot u\equiv  
f\kern-1pt \pmod {\kern-1pt p} $ }\\
\text{\qquad \qquad    до сравнения по модулю $  p^k $ }\\
\text{\qquad получить базис решетки $ L $ по формулам (21.25)}\\
\text{\qquad редуцировать базис решетки $ L $ }\\
\text{если $ L $ .базис[1] удовлетворяет (21.31) то}\\
\text{\qquad \qquad  $ g $ .степень $ := m $} \\
\text{\qquad \qquad  $ g $ .коэффициенты $ := L $ .базис[1]}\\
\text{\qquad \qquad найден множитель := "да"}\\
\text{конец если}\\
\text{конец цикла}\\
\text{Конец}
\end{equation*}

Недостаток этого алгоритма заключается в том, что для каждого значения m нужно применять алгоритм Гензеля, строить новую решетку и редуцировать ее базис. Следующее предложение позволяет применять алгоритм построения редуцированного базиса решетки только один раз для максимального возможного значения m=n-1.

21.6. ПРЕДЛОЖЕНИЕ. Предположим, что обозначения выбраны так же, как и в предложении 21.5, и что выполнены те же предположения. Предположим кроме того, что существуют индексы j, такие, что

\begin{equation}
    |b_j | < \genfrac(){}{}{p^{kl}}{|f|^m}^{1/n}    . 
\end{equation} ( 21.32)

Пусть t - наибольшее значение j, для которого выполнено (21.32). Тогда

\deg (h_0 ) = m+1-t,\\
    h_0  =НОД(b_1 ,\dots, b_t )
и неравенство (21.32) выполнено для всех j, таких, что 1\leq j\leq t.

ДОКАЗАТЕЛЬСТВО. Пусть J обозначает множество индексов j   \in  \{
1,\dots,m\}, для которых выполнено неравенство (21.32), \# J - мощность множества J. Тогда h_0 делит b_j для любого j   \in   J, следовательно, h_0 делит многочлен h_1 =НОД(\{  b_j\mid   j 
\in  J\}  ). Положим s = m -\deg (h_1 ). Поскольку \deg (b_j) \leq
m для всех j\in J, эти многочлены принадлежат \mathbb Z -модулю \mathbb Z _s [x]\cdot h_1 (x), ранг которого равен s  +  1  =  m  +  1  -\deg(h_1  ). В силу линейной независимости векторов b_j получаем

\begin{equation}
  \# J \leq  m+1-\deg(h_1 ). 
\end{equation} ( 21.33)
Применяя результат задачи 7.6 к многочленам h_0 x^i, получаем
\[
 \|h_0 x^i \| = \|h_0 \| \leq  \binom{2m}m^{1/2}   \cdot \|f\|\quad\text{для
всех}\quad i \geq 0.
Для 0 \leq  i \leq  m-\deg(h_0 ) имеем h_0 x^i \in L, так что из предложения 19.9 получаем
\|b_j \| \leq  2^{m/2}   \cdot \binom{2m}m^{1/2}   \cdot
\|f\|\quad \text{для}\quad 1\leq j\leq  m-\deg(h_0 ).

Из неравенства (21.30) следует, что индексы от 1 до m  +  1-  \deg(h_0) принадлежат множеству J. Поскольку h_1 делится на h_0 и выполняется неравенство (21.33), получаем \{1,\dots,  m+1-\deg(h_0  )\} 
\subset  J, откуда \deg (h_0) =\deg (h_1 )=m+1-t.

Остается установить, что h_1 с точностью до знака совпадает с h_0. Для этого достаточно показать, что многочлен h_1 примитивный, т.е. наибольший общий делитель его коэффициентов равен 1, а примитивность многочлена h_1 легко вытекает из примитивности хотя бы одного b_j, j
\in J.

Возьмем произвольный индекс j \in J и пусть d_j 
=\text{cont}\,(b_j  ). Тогда многочлен b_j /d_j делится на h_0, следовательно, b_j  /d_j  \in  L, так как h_0 \in L. Поскольку b_j принадлежит базису решетки L, получаем d_j = 1.

Полученный результат используется в следующем алгоритме.

А41. АЛГОРИТМ (неприводимый-множитель (f, h, g, p)).

\begin{equation*}
\text{Дано:\quad  $ p\in\mathbb Z  $ , $ f,h\in\mathbb Z [x] $} \\
\text{\qquad  $ h $  -  неприводимый по модулю $ p $ многочлен, делящий $ f $ по модулю $ p $ }}\\
\text{Надо: \qquad  $ g $  -  неприводимый над $ \mathbb Z  $ многочлен, делящий $ f $ и делящийся
         по модулю $ p $ на $ h $ .}}\\
\text{Обозначения:\quad  $ n == f $ .степень}\\
        \text{\qquad  $ l == h $ .степень}\\
\text{Переменные:\quad
        \qquad цел $ k,t $} \\
        \text{\qquad решетка $ L $ }\\
\text{Начало}\\
\text{найден множитель := "нет"}\\
\text{вычислить $ k $ , такое, чтобы выполнялось неравенство (21.30) для $ m=n-1 $ }\\
\text{пользуясь леммой  Гензеля, поднять  сравнение $  h\cdot u\equiv   f \pmod p $   до сравнения по модулю $ p^k $ }\\
\text{построить базис решетки $ L $ по формулам (21.25)}\\
\text{редуцировать базис решетки $ L $} \\
\text{найти максимальное значение $ t $ , для которого $ L $ .базис $ [t] $ удовлетворяет (21.31)}\\
\text{если  $ t > 0 $  то} \\
\text{\qquad  $ g $ .степень $ := n-t $} \\
\text{\qquad  $ g $ .коэффициенты $:= НОД$ ( $ L $ .базис[1], \dots, $ L $ .базис[t])}\\
\text{\qquad найден множитель := "да"}\\
\text{конец если }\\
\text{ Конец }
\end{equation*}
< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Марина Подлевских
Марина Подлевских

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

Александр Марушко
Александр Марушко
Россия
Стешков Антон
Стешков Антон
Россия, г. Гуково