Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теоретико-числовые алгоритмы в криптографии.pdf
Скачиваний:
236
Добавлен:
23.03.2015
Размер:
2.46 Mб
Скачать

 

 

§ 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]. В следующей главе мы опишем эффективные алгоритмы для умножения больших целых чисел.