- •Предисловие
- •Тестирование чисел на простоту и построение больших простых чисел
- •Введение
- •Элементарные методы проверки простоты чисел
- •Тесты на простоту для чисел специального вида
- •Алгоритм Миллера
- •Вероятностные тесты на простоту
- •Современные методы проверки простоты чисел
- •Заключение. Детерминированный полиномиальный алгоритм проверки простоты чисел
- •Факторизация целых чисел с экспоненциальной сложностью
- •Введение. Метод Ферма
- •101.21.2(P-1)-метод Полларда
- •Алгоритм Ленстры
- •101.21.2(P+1)-метод Уильямса и его обобщения
- •Методы Шэнкса
- •Прочие методы. Заключение
- •Факторизация целых чисел с субэкспоненциальной сложностью
- •Введение
- •Метод Диксона. Дополнительные стратегии
- •Квадратичное решето
- •Алгоритмы решета числового поля
- •Заключение
- •Алгоритм Ленстры для факторизации целых чисел с помощью эллиптических кривых
- •Вычисление порядка группы точек эллиптической кривой над конечным полем
- •Тестирование чисел на простоту с помощью эллиптических кривых
- •Заключение
- •Алгоритмы дискретного логарифмирования
- •Введение. Детерминированные методы
- •Дискретное логарифмирование в полях Галуа
- •Дискретное логарифмирование и решето числового поля
- •Частное Ферма и дискретное логарифмирование по составному модулю
- •Заключение
- •Факторизация многочленов над конечными полями
- •Введение. Вероятностный алгоритм решения алгебраических уравнений в конечных полях
- •Решение квадратных уравнений
- •Алгоритм Берлекэмпа
- •Некоторые другие усовершенствования алгоритма Берлекэмпа
- •Заключение
- •Приведенные базисы решеток и их приложения
- •Введение. Решетки и базисы
- •LLL-приведенный базис и его свойства
- •Алгоритм построения LLL-приведенного базиса решетки
- •Некоторые приложения LLL-алгоритма
- •Заключение
- •Введение
- •LLL-алгоритм факторизации: разложение по простому модулю
- •LLL-алгоритм факторизации: использование решеток
- •LLL-алгоритм факторизации: подъем разложения
- •LLL-алгоритм факторизации: полное описание
- •Практичный алгоритм факторизации
- •Факторизация многочленов с использованием приближенных вычислений
- •Заключение
- •Введение. Дискретное преобразование Фурье и его свойства
- •Заключение
- •Целочисленная арифметика многократной точности
- •Введение. Сложение и вычитание
- •Умножение
- •Деление
- •Решение систем линейных уравнений над конечными полями
- •Введение
- •Решение систем линейных уравнений в целых числах
- •Гауссово и структурированное гауссово исключение
- •Алгоритм Ланцоша
- •Алгоритм Видемана
- •Другие методы. Заключение
|
|
§ 9.6. Заключение |
|
253 |
нахождения остатка Fij (x) требуется |
|
|
||
|
O(2i+1 log 2i+1 log log 2i+1) CA · A(2i+1) |
|||
сложений в T и |
O(2i+1 log 2i+1) CM · M(2i+1) |
|
||
|
|
|
||
умножений |
в T |
(CA и CM — некоторые |
постоянные). Поэтому для |
|
нахождения |
всех |
многочленов Fij (x) при |
заданных |
Gij (x) требуется |
|
t−1 |
t−1 |
CM · M(2i+1)2t−i |
|
не более, чем |
CA · A(2i+1)2t−i сложений в T и |
|||
|
=0 |
|
=0 |
|
|
i |
|
i |
|
умножений в T. Аналогично доказательству теоремы из предыдущего |
параграфа число сложений тогда оценится величиной CAtA(2t), а число умножений — величиной CMtM(2t), где CA и CM — некоторые постоянные. С учетом доказанной выше оценки сложности для вычисления всех многочленов Gij (X) и неравенства 2t 2n, из которого следует, что t= =O(log n), мы получаем утверждение теоремы в рассматриваемом случае.
|
n |
2 случай. Пусть многочлен F(x) задан в виде произведения (x−yi). |
|
|
i=1 |
Тогда |
мы уже показали, что коэффициенты многочлена Gt,1 (x) = |
2t |
n |
= |
= x2t−n (x − xk) могут быть вычислены в рамках указанного |
k=1 |
k=1 |
в утверждении теоремы количества сложений и умножений в T. После этого вычисления мы оказываемся в условиях 1 случая, для которого теорема уже доказана.
Теорема полностью доказана.
§ 9.6. Заключение
Применение дискретного преобразования Фурье в арифметике многочленов действительно является эффективным на практике. Дискретное преобразование Фурье можно также использовать в целочисленной арифметике. В частности, с его помощью доказывается теорема Шенха- ге—Штрассена: произведение двух n-разрядных двоичных чисел можно вычислить за O(n log n log log n) битовых операций. Однако на практике алгоритм Шенхаге—Штрассена неэффективен, хотя и имеет наилучшую известную оценку сложности среди алгоритмов умножения целых чисел. Постоянная в символе O(·) в указанной оценке сложности алгоритма слишком велика, что делает его практичным лишь для чисел, записываемых несколькими тысячами десятичных цифр, см. [60; 243; 292]. В следующей главе мы опишем эффективные алгоритмы для умножения больших целых чисел.