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

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

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

Архимедова метрика

При использовании архимедовой метрики на поле рациональных чисел \mathbb Q в качестве полного нормированного расширения поля \mathbb Q возьмем поле комплексных чисел K. В комплексном случае неприводимый многочлен h(x)
\in K[x] является линейным, мы можем считать его нормированным, т.е. h(x)  = 
x-\alpha для некоторого \alpha  \in  \C. Вычисление \alpha сводится к нахождению комплексного корня многочлена f, что можно сделать с произвольной наперед заданной точностью. Решетка L совпадает в этом случае с \mathbb Z -модулем всех многочленов с целыми коэффициентами степени \leq n. Норму многочлена g  \in
L определим следующим образом: ||g||^2 = \|g\|^2 + c\cdot
|g(\alpha  )|^2, где |\ | - норма комплексного числа, \| \| - обычная евклидова норма на пространстве многочленов, а c=c(f) - некоторая константа, зависящая от исходного многочлена f. При вычислениях на ЭВМ \alpha задается в виде s+t\cdot i, где s и t - рациональные числа. Пусть S - точность вычисления \alpha, т.е. |\alpha - (s+t\cdot i)| <
2^{-S}. Введенная выше норма будет зависеть от точности, с которой вычислено значение корня \alpha. Таким образом, для обоснования алгоритма достаточно показать, что для произвольно заданного многочлена f(x)  \in  \mathbb Z [x] можно явно вычислить положительные числа S, c и B, такие, что норма \|\  \|, которая определена значением корня \alpha многочлена f, вычисленного с точностью 2^{-S}, и константой c, удовлетворяет условиям:

\begin{equation}
  2^n\cdot ||g||^2 < B 
\end{equation} ( 21.1)
если g - минимальный многочлен для \alpha над \mathbb Z , n - ранг решетки L,
\begin{equation}
  ||p||^2 > B 
\end{equation} ( 21.2)
для любого многочлена p \in \mathbb Z [x], не делящегося на g.

После этого задача сводится к построению редуцированного базиса решетки. Цель данного раздела - показать, что числа B, c и S можно выбрать следующим образом:

B &= \binom{2n}{n}  {\|f\|}^2  + 1 ( 21.3)
c &\geq 2^{\frac{n^2}{2} + \frac{n}{2} + 4}B^{n+\frac12}
\|f\|^{n-1} ( 21.4)
S &\geq \log_2 (c\cdot 4n \|f\| (2 + \|f\|)^{n-1}) ( 21.5)
Обоснование такого выбора произведено позднее, сейчас же перепишем получившийся алгоритм с учетом выбора значений B, c, S. Отметим, что для использования приведенных выше формул нам удобно поменять местами некоторые команды алгоритма.

А38. АЛГОРИТМ (выделить-неприводимый-множитель).

\begin{equation*}\\
\text{Дано:\qquad $f(x) \in \mathbb Z [x], \deg f(x) = m$}\\
\text{Надо:\quad\qquad $g(x) \in \mathbb Z [x],g(x)$ неприводим в $\mathbb Z [x]$}\\
\text{Переменные:\quad решетка $L$} \\
                       \text{\qquad $S\in\mathbb Z $, $B,c\in\mathbb R $}\\
\text{Начало}\\
\text{$L$.ранг $:= m$}\\
\text{$n:=m-1$}\\
\text{$B:= \binom {2n}n  \|f\|^2 + 1 ;$}\\
\text{$\displaystyle    c := 2^{\frac{n^2}2 + \frac n2 + 4} B^{n+1/2}
\|f\|^{n-1}$}\\
\text{$S:=[\log_2 (c\cdot 4n \|f\|(2 + \|f\|)^{n-1})] + 1.$}\\
\text{найти комплексный корень $(f(x),\alpha,2^{-S})$}\\
\text{цикл для $i$ от $0$ до $n$ }\\
\text{\qquad $L$.базис$[i] := x^i$}\\
\text{конец цикла}\\
\text{редуцировать базис $(L)$}\\
\text{если $||L$.базис$[0]|| < B$ то}\\
\text{\qquad $g(x) := L$.базис$[0]$}\\
\text{иначе}\\
\text{\qquad $g(x) := f(x)$}\\
\text{конец если}\\
\text{Конец}
\end{equation*}

В получившейся версии алгоритма осталось детализировать два предписания:

  • найти комплексный корень (f(x),\alpha,2^{-S}) ;
  • редуцировать базис (L).

Нахождение комплексных корней многочлена представляет собой одну из классических задач вычислительной математики, мы не останавливаемся на ней. Алгоритм редуцирования базиса решетки изложен в параграфе 20.

Обоснование выбора значений B, c, S.

Пусть f \in \mathbb Z [x] - примитивный многочлен степени n и \alpha\in\C - корень многочлена f. Предположим, что h \in \mathbb Z [x] - минимальный многочлен для \alpha. Очевидно, что h - неприводимый множитель многочлена f. Цель этого параграфа состоит в том, чтобы показать, как вычисление \alpha с достаточной точностью дает нам возможность определить многочлен h.

В данном параграфе символ \delta используется для обозначения степени многочлена ( \delta f=\deg f, \delta h =\deg h и т.д.).

21.1. ПРЕДЛОЖЕНИЕ. Пусть s \in \mathbb Z , s \geq
0 и предположим, что \tilde \alpha удовлетворяет неравенству

\begin{equation}
      |\alpha  - \tilde \alpha | < 2^{-s} 
\end{equation} ( 21.6)
Тогда
\begin{equation}
   |h(\tilde \alpha)| < 2^{-s}\delta h \|f\| (2+\|f\|)^{\delta h-1} 
\end{equation} ( 21.7)

ДОКАЗАТЕЛЬСТВО. Для доказательства этого предложения нам потребуются оценки |\alpha |
\leq \|f\| (так как \alpha - корень многочлена f ) и оценки коэффициентов многочлена

h ( 21.8)
:
\begin{equation}
   |h_j| \leq   \binom {\delta h}j \cdot \|f\| 
\end{equation}

Собственно доказательство проводится путем разложения h в ряд Тейлора в окрестности точки \alpha и несложных вычислений с использованием приведенных оценок.

Следующий этап вычислений заключается в приближении с точностью 2^{-s} значений \tilde  \alpha  ^i рациональными числами с не слишком большими знаменателями (чтобы не проводить вычислений со слишком большими знаменателями). После этого, выбрав произвольным образом рациональное число c, можем вложить многочлены с целыми коэффициентами степени не выше m (рассматриваем случай m=\delta  f ) в (m+3) -мерное пространство над полем \mathbb Q , тогда образ модуля многочленов образует в этом пространстве решетку размерности m+1. Эту решетку обозначаем L. Наша задача заключается в выборе констант s и c таким образом, чтобы кратчайший вектор этой решетки давал нам неприводимый множитель многочлена f. (Квадрат нормы элемента решетки равен сумме квадрата нормы многочлена и приближенного значения квадрата модуля значения многочлена в точке \alpha, умноженного на c^2.)

21.2. ПРЕДЛОЖЕНИЕ. Пусть g \in \mathbb Z [x] - многочлен степени не выше m, такой, что НОД (h,g)=1. Предположим, что \delta h \leq m и что

\begin{equation}
  2^{\frac{m^2}2+\frac m2  +  4}  B^{1/2+m}  \|f\|^{m-1}  \leq  c  \leq 
\frac{2^s}{4m \|f\| (2+\|f\|)^{m-1}} 
\end{equation} ( 21.9)
где B=\binom {2m}m \|f\|^2 + 1. Тогда ||\hat h||^2 < 
B и ||\hat  g||^2\geq 2^m B.

ДОКАЗАТЕЛЬСТВО. Первым делом покажем, что ||\hat h||^2 < B. Так как ||\hat
h||^2 = \|h\|^2 + c^2 |\tilde h(\tilde \alpha )|^2 и |\tilde
h(\tilde \alpha
)| \leq |h(\tilde \alpha )| + |h(\tilde \alpha )-\tilde h(\tilde  \alpha 
)|, получаем

\begin{equation}
  ||\hat h||^2 \leq \|h\|^2 + c^2 (|h(\tilde \alpha )|^2+ 2  |h(\tilde  \alpha
  )| |h(\tilde \alpha )-\tilde h(\tilde \alpha )|+ + |h(\tilde  \alpha 
)-\tilde
  h(\tilde \alpha )|^2 )
\end{equation} ( 21.10)

Оценки на слагаемые:

|h(\tilde \alpha )| < \frac{1}{2c} ( 21.11)
|h(\tilde \alpha )-\tilde h(\tilde \alpha )| < \frac{1}{2c} ( 21.12)
\|h\|^2  \leq \binom {2\delta h}{\delta h} \|f\|^2 ( 21.13)

оставляются читателю в качестве упражнения.

Доказательство неравенства ||\hat g||^2  \geq 2^m B.

Предполагаем, что \|g\|^2 < 2^m B (в противном случае неравенство очевидно). Должны доказать, что c^2 |\tilde g(\tilde \alpha )|^2 \geq 2^m B. Поскольку

\begin{equation*}
    |g(\tilde \alpha )-\tilde g(\tilde \alpha )| \leq  2^{-s+\frac m2} \cdot
(m+1)\cdot B^{1/2}
\end{equation*} ( 21.14)
и 2^{-s}(m+1) \leq \frac 1c, то достаточно доказать неравенство c|g(\tilde\alpha )| \geq \qed 2(2^m B)^{1/2}.

Найдем a,b \in \mathbb Z [x], такие, что \delta a < \delta
g и \delta b  <  \delta
h, и ah + bg = r, где R \in \mathbb Z обозначает результант многочленов h и g. Из неравенства Адамара (19.3) следует, что абсолютные значения коэффициентов a и b ограничены величиной \|h\|^{m-1} \|g\|^m, а значит и 2^{\frac {m^2}2} B^m. Отсюда, пользуясь тем, что \|f\| - 1 
\geq  \|f\|/4, можно получить неравенство

\begin{equation}
  \max(|a(\tilde \alpha )|,|b(\tilde \alpha )|) < 2^{2+\frac {m^2}2} B^m
\|f\|^{m-1}
\end{equation} ( 21.15)

Отсюда |a(\tilde \alpha )h(\tilde \alpha )| < 1/2 и |g(\tilde \alpha )| \geq 1/(2|b(\tilde \alpha )|).

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Марина Подлевских
Марина Подлевских

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