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

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

< Лекция 9 || Лекция 10: 12345 || Лекция 11 >
Аннотация: В данной лекции рассматриваются алгоритмы факторизации, основанные на выборе малого вектора в решетке. Приведены практические примеры и алгоритмы, а также предоставлены задачи для самостоятельного рассмотрения

Теперь рассмотрим второй подход к решению задачи факторизации, предложенный в п. 16.1, а именно, выделяем неприводимый в \mathbb Z [x] делитель многочлена f(x) путем построения некоторой решетки и отысканием в ней "малого" вектора.

Общая схема факторизации

В самых общих чертах алгоритм выделения неприводимого множителя с использованием редуцированного базиса решетки имеет следующий вид:

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

\begin{equation*}\\
	\text{Дано:\quad$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{Начало}\\
	\text{выбрать полное нормированное поле $K$, содержащее $\mathbb Z $}\\
	\text{ограничить степень неприводимого множителя, например,}\\
	\text{\qquad $\deg g(x)\le n=m-1$}\\
	\text{определить достаточную точность вычислений}\\
	\text{найти с требуемой точностью неприводимый $h(x) \in
	K[x]$, делящий $f(x)$}}\\
	  \text{найти с требуемой точностью неприводимый $h(x) \in K[x]$, делящий}\\
	 \text{\qquad  $f(x)$}\\
	\text{\qquad //В результате дальнейших вычислений будет найден}\\
	\text{\qquad //неприводимый над $\mathbb Z $ многочлен, делящийся на $h(x)$.}\\
	\text{сформировать решетку $L$, ввести на ней норму $\|\ \|$}\\
	\text{\qquad //Искомый многочлен $g(x)$ должен принадлежать $L$}\\
	\text{\qquad //и быть в ней вектором минимальной длины}\\
	\text{оценить  норму  искомого  $g(x)$,}\\
	\text{\qquad //найти  $B$  такое,  что $\|g(x)\| &lt; B$}\\
	\text{если существует в $L$ вектор $v$, такой, что $\|v\| &lt; B$ то}\\
	\text{\qquad найти такой вектор $v$;}\\
	\text{\qquad $g(x) := v$}\\
	\text{иначе}\\
	\text{\qquad $g(x) := f(x)$}\\
	\text{конец если}\\
	\text{Конец}
	\end{equation*}

Некоторые дополнительные комментарии к сформулированному алгоритму.

Наиболее трудный этап в этом алгоритме заключается в нахождении минимального вектора решетки. Для решения этой задачи воспользуемся алгоритмом построения редуцированного базиса решетки. В общем случае этот алгоритм не позволяет находить минимальный вектор в решетке, но находит вектор, длина которого отличается от длины минимального не более, чем в 2^n раз, где n - размерность решетки. Таким образом, на вводимую норму \|\  \| накладывается более сильное условие: \|g(x)\| должна отличаться от нормы любого взаимно простого с g(x) многочлена w(x) \in  \mathbb Z [x] не менее, чем в 2^n раз. Константа B должна быть выбрана таким образом, чтобы выполнялись неравенства \|w(x)\| > B и \|g(x)\| < B и алгоритм построения редуцированного базиса решетки давал положительный ответ на вопрос о существовании вектора, длина которого меньше B, в том и только в том случае, когда \|g(x)\| < B. Искомая норма \|\ \| зависит от неприводимого над K[x] многочлена h(x), при этом нужно помнить, что многочлен h(x) мы вычисляем с некоторой точностью (не абсолютной), эта точность должна быть достаточно хорошей для того, чтобы сформулированные выше условия на \|\ \| остались справедливыми.

Нахождение с требуемой точностью неприводимого множителя h(x) \in
	K[x] можно разделить на два этапа: нахождение нулевого приближения и уточнение множителя.

Перепишем алгоритм A37 с учетом сделанных замечаний.

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

\begin{equation*}\\
\text{Дано:\quad $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{Начало}\\
\text{выбрать полное нормированное поле $K$, содержащее $\mathbb Z $}\\
\text{ограничить сверху степень неприводимого множителя}\\
\text{\qquad  натуральным числом $n$, например, $n:=m-1$}\\
\text{определить достаточную точность вычислений}\\
\text{найти нулевое приближение неприводимого $h(x) \in K[x]$}\\
\text{цикл пока не достигнута требуемая точность}\\
\text{\qquad уточнить $h(x) \in K[x]$}\\
\text{конец цикла}\\
\text{сформировать решетку $L$, ввести на ней норму $\|\ \|$}\\
\text{оценить  норму  искомого  $g(x)$: $\|g(x)\| < B$}\\
\text{редуцировать базис решетки $L$}\\
\text{если $L$.базис[0] $< B$ то}\\
\text{\qquad $g(x) := L$.базис[0]}\\
\text{конец если}\\
\text{Конец}
\end{equation*}

Рассмотрим основные особенности алгоритма факторизации при использовании архимедовой и p - адической метрики на поле \mathbb Q . В первом случае в качестве поля K выберем поле комплексных чисел \C, во втором - поле p - адических чисел R_p.

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

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