2011 Вычислительные методы в дискретной математике №4(14)
ВЫЧИСЛИТЕЛЬНЫЕ МЕТОДЫ В ДИСКРЕТНОЙ МАТЕМАТИКЕ
УДК 519.7
РЕГУЛЯРНЫЕ ОЦЕНКИ СЛОЖНОСТИ УМНОЖЕНИЯ МНОГОЧЛЕНОВ И УСЕЧЕННОГО ДПФ1
И. С. Сергеев
Московский государственный университет им. М. В. Ломоносова, г. Москва, Россия
E-mail: [email protected]
Строятся схемы для умножения многочленов и усеченного ДПФ (дискретного преобразования Фурье), эффективные с точки зрения сложности и глубины или сложности и объема памяти. Как следствие, умножение многочленов суммарной степени n — 1, где n = 2ni + ... + 2ns, n1 > ... > ns, над кольцом, в котором обратима двойка, можно выполнить со сложностью M(ni) + ... + M(ns) + O(n)
арифметических операций в этом кольце и глубиной max{D(ni)} + O(logn), где
i
M(k) и D(k) — соответственно сложность и глубина схемы умножения по модулю x2 +1. Усеченное ДПФ порядка n (т.е. ДПФ порядка 2^og2nl, приведенное к векторам длины n) можно реализовать схемой сложности 1,5n log2 n + O(n) и объема памяти n + 1.
Ключевые слова: арифметические схемы, сложность, глубина, объем памяти, умножение, дискретное преобразование Фурье (ДПФ).
Введение
В настоящей работе рассматривается вопрос о построении схем для умножения многочленов со сложностью, регулярно (равномерно, гладко) зависящей от размерности входа (т.е. степеней многочленов). Типичной является ситуация, когда известны эффективные (базовые) схемы умножения по модулям х2 + 1, но требуется построить схему умножения многочленов произвольной суммарной степени n — 1 и чтобы при этом она имела сложность, асимптотически так же зависящую от n, как и в случае n = 2k (асимптотика, естественно, предполагается гладкой функцией). В теоретических работах эта цель обычно достигается видоизменением базового алгоритма умножения, например расширением его на модули вида xs2 + 1. Но подобные приемы обычно ухудшают уже второй член в оценке сложности. (Термин «второй член» здесь и далее употребляется неформально.) Интересно, что лучшего результата можно добиться, совсем не вмешиваясь в базовый алгоритм (используя его в качестве «черного ящика»). Для этого достаточно уметь эффективно приводить многочлен по набору
2* I 1
модулей х2 +1 и восстанавливать его по известным остаткам от деления на эти же модули. Об этом и пойдет речь далее.
хРабота выполнена при финансовой поддержке РФФИ, проекты 11-01-00508 и 11—01—00792—а, и программы фундаментальных исследований Отделения математических наук РАН «Алгебраические и комбинаторные методы математической кибернетики и информационные системы нового поколения» (проект «Задачи оптимального синтеза управляющих систем»).
Вышеуказанной задаче созвучна задача эффективной реализации усеченного ДПФ (в западной литературе TFT— Truncated Fourier Transform). Наиболее эффективно вычисляется ДПФ порядка степени двойки, поэтому в работе [1] предложено вместо ДПФ произвольного порядка n использовать n компонент ДПФ порядка 2 ^log2 n; соответствующее преобразование в [1] предложено называть усеченным ДПФ.
В работе строятся схемы для решения перечисленных задач, эффективные с точки зрения сложности (потенциально может сохраняться более одного члена из асимптотики сложности базовой схемы) и одновременно глубины или объема требуемой памяти. Постановка задачи о минимизации объема памяти позаимствована из [2].
Дополнительно рассмотрена задача эффективной реализации умножения многочленов при помощи схем умножения по модулям х2^3 + х3 +1. Такие схемы предложил использовать для умножения А. Шенхаге [3]. Метод Шенхаге обобщается на умножение по модулям x(p-1)^p + x(p-2)^p + ... + xp +1, где p — простое число [4]. Однако при p =3 это обобщение, по всей видимости, практического значения пока не имеет (см. также [5, 6]). Эти схемы обычно применяются тогда, когда двойка необратима в кольце коэффициентов, зато обратима тройка (популярный пример — конечные поля характеристики 2). В этом случае, как показано ниже, для умножения многочленов суммарной степени n — 1 можно построить схемы с регулярной оценкой сложности для n G U [2 ■ 3k, 3k+1) и с ухудшением асимптотики сложности в не более чем 4/3 раза
keN
для прочих n при условии, что базовые схемы не модифицируются.
Изложим существо вопроса более подробно, попутно вводя необходимые понятия.
Пусть K — коммутативное (и ассоциативное) кольцо с единицей. Элемент Z G K называется примитивным корнем степени N из единицы, если ZN = 1 и при любом простом p|N элемент ZN/p — 1 не является делителем нуля в K.
Дискретным преобразованием Фурье порядка N называется (KN ^ KN)-преобра-зование
n-1
ДПФ^С(То;..., YN-1) = (7о*,..., Yw-1^ Y* = Е YiZij,
i=0
где Z — примитивный корень степени N. Если элемент N = 1 + ... + 1 G K обратим, то существует обратное к ДПФ преобразование (называемое обратным ДПФ), удовлетворяющее соотношению ДПФ-1^ = (1/N)ДПФ^-i.
Удобно иметь в виду полиномиальную интерпретацию ДПФ как изоморфизма колец, отождествляя аргументы преобразования с вектором коэффициентов многочлена:
ДПФЛС : K[x]/(xN — 1) ^ KN, ДПФЛС№)) = (r(Z0),...,r(ZN-1)).
Подробнее о ДПФ см., например, в [6].
Для анализа эффективности обсуждаемых далее алгоритмов удобно использовать стандартную вычислительную модель схемы из функциональных элементов [7, 8] (далее просто схемы). А именно, рассматриваются схемы над арифметическим базисом {x ± y, xy} U {ax : a G K} (арифметические схемы). Для программистов ближе понятие неветвящейся программы: по существу, неветвящаяся программа (далее просто программа)—это схема, для которой фиксирована последовательность выполнения операций (срабатывания элементов схемы). Таким образом, одной схеме могут соответствовать несколько программ.
Стандартным образом определяются несколько мер сложности схем (программ). Собственно сложность — число функциональных элементов в схеме (программе). Глубина схемы — максимальное число элементов в ориентированной цепи, соединяющей
вход и выход схемы. Объем памяти программы — максимальное по всем итерациям число промежуточных данных (включая все уже вычисленные выходы), используемых в последующих итерациях. Несколько искусственно объем памяти схемы можно определить как минимальный объем памяти по всем программам, соответствующим данной схеме.
Содержательно сложность отвечает времени выполнения программы на однопроцессорной машине или площади микросхемы, реализующей схему; глубина отвечает времени срабатывания микросхемы или числу параллельных шагов, выполняемых многопроцессорной машиной; объем памяти в определении соответствует объему памяти, отводимому для хранения переменных при реализации программы на ЭВМ.
При анализе объема памяти процесс вычислений удобно представлять следующим образом. Промежуточные данные хранятся в ячейках памяти (емкость ячейки равна одному элементу кольца К). В начале работы ячейки содержат входные данные. Элементарные (базисные) операции выполняются последовательно. Каждая операция использует данные, находящиеся в памяти в момент ее выполнения. Результат выполнения операции сохраняется в некоторой ячейке.
Наиболее эффективно реализуется ДПФ порядка степени двойки. Как следствие, быстрые алгоритмы эффективно умножают многочлены суммарной степени п — 1, если п = 2к, в предположении, что кольцо коэффициентов или подходящее его расширение допускает ДПФ порядка степени двойки.
Как известно, методом Кули — Тьюки [9] ДПФ порядка 2к может быть реализовано схемой из &2к элементов сложения-вычитания, (к — 2)2к-1 + 1 элементов умножения на степени примитивного корня (степени 2к), глубины 2к—1 (если учитывать только аддитивные операции, то глубина равна к). Эта схема может быть перестроена так, чтобы с той же сложностью иметь объем памяти 2к + 1. Добавив к2к-1 элементов умножения на 2, объем памяти можно сократить до 2к; здесь имеется в виду, что основное преобразование схемы, ДПФ порядка 2 (ж, у) ^ (ж+у, ж—у), можно вычислить со сложностью 2 и объемом памяти 3 в цепочке (ж, у) ^ (х + у, ж, у) ^ (х + у, ж — у) или со сложностью 3 и объемом памяти 2 в цепочке (ж, у) ^ (ж + у, у) ^ (ж + у, 2у) ^ (ж + у, ж — у).
Обратное ДПФ можно реализовать так же, как и прямое, заменив ( на (-1 и выполнив в конце 2к умножений на константу 2-к Е К. Впрочем, часть этих умножений можно совместить с внутренними умножениями на степени примитивного корня.
Если п = 2к, то «по умолчанию» можно использовать алгоритм умножения многочленов суммарной степени 2 «1 — 1. Но при этом сложность алгоритма умножения
с ростом п растет нерегулярно, возникают примерно двукратные скачки при переходе через степени двойки. Известны приемы, позволяющие сгладить функцию сложности так, чтобы при любом п она асимптотически так же выражалась через п, как и в случае п = 2к. Например, ДПФ порядка степеней двойки можно заменить на ДПФ порядка з2г, где 5 ^ 21 [10], или чуть более общими многократными ДПФ [11]. Указанные приемы, однако, как правило, ухудшают второй по порядку роста член функции сложности и переносят скачки в него.
Другой подход предложил Ван дер Хувен в [1, 12], где реализуется усеченное ДПФ, вычисляющее значение ДПФ на некотором подмножестве точек из множества, соответствующего ДПФ порядка ближайшей сверху степени двойки. Усеченное ДПФ (УДПФ) порядка п определяется как набор из п некоторых компонент вектора ДПФ2Л(п), с (70,. . . ,7п-1, 0, ..., 0), где Л(п) = |"1о§2 п].
Ван дер Хувен [1] предложил в УДПФ включать компоненты — значения в точках Zp(i), i = 0,... , n— 1, где p(i) — число, двоичная запись которого получается из двоичной записи числа i дополнением нулями до Л(п) разрядов и последующим обращением.
Схема прямого УДПФ в методе [1] получается из схемы ДПФ порядка 2л(п) удалением «ненужных» элементов. Схема обратного УДПФ устроена несколько сложнее. Для обеих схем получена оценка сложности пЛ(п) + 2л(п) аддитивных операций и Г(пЛ(п) + 2л(п))/2] умножений на степени примитивного корня (умножения на степени двойки в расчете игнорируются, точнее, допускаются операции вида x ± 2sy). Глубина схемы прямого УДПФ равна Л(п); глубина схемы обратного УДПФ несколько больше, но также O(logn). Объем памяти этой схемы (точнее, схемы, перестроенной аналогично упомянутой выше схеме обычного ДПФ), как отмечено в [2], равен 2л(п). В [2] приведена конструкция схемы с объемом памяти n + O(1), однако большей асимптотической сложности, хотя по порядку и той же самой, O(nlogn).
С позиции задачи умножения многочленов близкие к использованию УДПФ идеи ранее высказывались в [13], где предлагалось выполнять умножение по двум модулям, допускающим быстрый алгоритм умножения, и окончательно восстанавливать произведение, опираясь на китайскую теорему об остатках, и позже в [5], где предлагалось использовать несколько модулей. На языке ДПФ это означает выбор УДПФ порядка l, где число l имеет малый (двоичный) вес.
В работе [14] предложено в качестве точек УДПФ порядка n выбирать корни мно-
2* I 1
гочленов x2 + 1 суммарной степени n.
Для дальнейшего анализа удобно ввести понятие нечетного ДПФ (НДПФ) порядка N:
НДПФЛС : K[x]/(xN + 1) ^ KN, НДПФЛС(r(x)) = (r(Z1), r(Z3),...,r(Z2N-1)),
где Z — примитивный корень степени 2N. Другими словами, компонентами НДПФ порядка N являются компоненты ДПФ порядка 2N, отличные от компонент ДПФ порядка N (если иметь в виду полиномиальную интерпретацию ДПФ). Простой способ реализации НДПФN)z состоит в композиции замены переменной x ^ Zx и ДПФ^2. Соответственно обратное НДПФ можно реализовать как композицию ДПФ-1^2 и замены переменной x ^ x/Z.
Пусть n = 2ni + ... + 2ns, где n1 > ... > ns. Схема УДПФ [14] строится из схем НДПФ порядков 2ni,... , 2ns плюс дополнительно используется 2л(п) + n аддитивных операций и n умножений. В схеме обратного УДПФ, помимо схем обратных НДПФ порядков 2ni,... , 2ns, используется 3 ■ 2л(п) + n аддитивных операций и n умножений. Указанные оценки сложности рассчитаны в [14] для чуть более общей задачи и могут быть уменьшены. Глубина и объем памяти схем [14] оцениваются приблизительно так же, как и для [1].
Далее получены несколько более точные оценки сложности данного УДПФ вместе с оценками глубины и показано, что УДПФ порядка n можно реализовать схемой с объемом памяти n (или n + 1) и дополнительной сложностью O(n).
Вопрос об оптимизации объема памяти естественно рассмотреть и в задаче умножения многочленов. В работе [2] на основе эффективной схемы для УДПФ построена схема умножения многочленов степени n/2 — 1 со сложностью O(nlog n) и объемом памяти 2n + O(1), причем n «ячеек» памяти, отводимых под хранение коэффициентов исходных многочленов, не модифицируются.
Из полученных далее оценок вытекает, в частности, что для умножения многочленов суммарной степени n — 1 можно построить схему сложности O(nlog n) и объема
памяти 2п. Запрет на переписывание коэффициентов исходных многочленов при этом не накладывается. Если иметь в виду, что фактически строится схема для умножения по модулю некоторого многочлена степени п, то объем памяти такой схемы не может быть далее понижен.
Результаты для задач реализации УДПФ и умножения многочленов формулируются в п. 1.1 и доказываются в п. 1.2. В п. 2 схемы для умножения многочленов строятся
2 3 к 3 к -1
из схем умножения по модулям ж + ж3 +1.
1. УДПФ и двоичный метод умножения
1.1. Основные результаты Пусть в нашем распоряжении есть схемы для НДПФ порядка 2к сложности Ф(к) = ФА(к) + Ф2(к) + Фс(к), глубины ^ф(к) и объема памяти ^ф(к). Здесь ФА(к) — число аддитивных элементов; Ф2(к) —число умножений на степени двойки; Фс(к) — число прочих скалярных умножений. Аналогичные обозначения со штрихами введем для параметров схем обратных НДПФ.
Зафиксируем обозначение п = 2П1 + ... + 2Пз, где п1 > ... > п8.
Теорема 1. Усеченное ДПФ порядка п можно реализовать схемой
а) из 2п + ЕФа(п^) аддитивных операций, ^ Ф2(пг) и ^ Фс (пг) умножений на
г гг
степени двойки и прочие константы соответственно, и глубины п1 +шах{^ф(пг) —пг} + 1;
г
б) из 4п — 2га1+1 + ^ ФА(пг) аддитивных операций, 4п — 3 ■ 2П1 + ^ Ф2(пг) и ^ Фс (пг)
г гг
умножений на степени двойки и прочие константы соответственно, и объема памяти п + шах{^ф(пг) — 2п}.
г
Обратное усеченное ДПФ порядка п можно реализовать схемой
а) из 4п — 3 ■ 2П1 + ^ ФА(пг) аддитивных операций, 2п — 2га1+1 + ^ Ф2(пг) и ^ Ф'с (пг)
г гг
умножений на степени двойки и прочие константы соответственно, и глубины п1 — п + +25 — 1 + шах{^ф(пг)};
г
б) из 4п — 2П1+1 + '¡Г, ФА(пг) аддитивных операций, 2п — 2П1+1 + ^ Ф;2(пг) и ^ Ф'с (пг)
г гг
умножений на степени двойки и прочие константы соответственно, и объема памяти п + шах{^ф (пг) — 2п}.
г
Теорема вытекает непосредственно из доказываемых ниже лемм 2 и 3. Конкретные оценки можно получить при подстановке параметров схем НДПФ, указанных во введении. Например, ФА(к) = ФА(к) = к2к, Фс(к) = Ф'с(к) = к2к-1, Ф2(к) = 0, Ф2(к) = 2к и либо ^ф(к) = ^ф(к) = 2к, либо ^ф(к) = (к) = 2к + 1.
Теперь пусть имеются схемы для умножения многочленов по модулям ж2 +1 с коэффициентами над кольцом, в котором обратим элемент 2. Сложность, глубину и объем памяти таких схем будем обозначать через М(к) = МА(к) + М2(к) + Мс(к) + М^(к), (к) и гм(к), где М^(к) обозначает число нескалярных умножений в схеме (остальные обозначения аналогичны введенным выше для схем НДПФ). Из лемм 2 и 3 также следует
Теорема 2. Для умножения многочленов суммарной степени п — 1 можно построить схему
а) из 6n—3■ 2ni + ^ MA(ni) аддитивных операций, 2n—2ni+1 + ^ М2(n^, ^ Mc(n^ и
j j j
Mn (nj) умножений на степени двойки, прочие константы и нескалярных умножений
j
соответственно, и глубины max{dM(nj) — nj} + 2n1 — ns + 2s;
б) из 12n — 6 ■ 2ni + M^A(nj) аддитивных операций, 10n — 8 ■ 2ni + ^ M2(nj),
jj Y Mc (nj) и Y Mn(nj) умножений на степени двойки, прочие константы и нескалярных jj
умножений соответственно, и объема памяти 2n + max{vM(nj) — 2ni+1}.
j
Учитывая, что s ^ n1 + 1, получаем
Следствие 1. Пусть М(k) = f (2k) и для любых x,y ^ 1 справедливо f (x + у) ^ ^ f (x) + f (y). Пусть также dM (k) — k ^ dM (l) — l и vM(k) — 2fc+1 ^ vM (l) — 21+1 при любых k ^ /. Тогда для умножения многочленов суммарной степени n — 1 можно построить схему
а) сложности f (n) + 8n — 5 ■ 2ni и глубины (n1) + 3n1 + 2;
б) сложности f (n) + 22n — 14 ■ 2ni и объема памяти 2n + (n1) — 2ni+1.
Выбирая ближайшее сверху к n число n', кратное 2ni—a(n), где a(n) —медленно растущая натуральная функция, и переходя к схеме умножения многочленов суммарной степени не выше n' — 1, получаем еще одно следствие из теоремы 2, п. а (используя неравенства n1 — ns ^ a(n), s ^ a(n) + 1):
Следствие 2. В условиях следствия 1 дополнительно предположим, что f (x)/x ^ то при x ^ то и f (x) = xO(1). Тогда для умножения многочленов суммарной степени n — 1 можно построить схему сложности не более (1 + o(1))f (n) и глубины не более (|_l°g2(n + o(n))_|) + o(log n).
Заметим, что предположения в формулировках следствий являются естественными. Во-первых, исходим из того, что схемы умножения по модулям x2 + 1 устроены единообразно. Во-вторых, предполагаем, что частично определенная функция сложности схем умножения М(k), k G {2j : i G N}, может быть доопределена до функции f (x), удовлетворяющей условию суперлинейности f (x + у) ^ f (x) + f (y) (следствие 1) и имеющей нелинейный рост (следствие 2). Первое из условий на f (x) фактически следует из второго, а второе опирается на широко распространенное предположение о нелинейности функции сложности умножения. Если какое-то из условий все же не может быть удовлетворено, то вместо f (x) можно взять подходящую функцию f> (x) ^ f (x), удовлетворяющую обоим условиям.
Конкретные оценки можно получить при подстановке известных параметров схем умножения по модулю x2 + 1 —они приводятся, например, в [5, 6, 14, 15].
Стандартным образом схему умножения по модулю x2 + 1 можно построить из двух схем НДПФ, схемы обратного НДПФ порядка 2k (если ДПФ порядка 2fc+1 существует в рассматриваемом кольце) и 2k нескалярных умножений, выполняемых на одном уровне. Подставляя известные параметры этих схем, в частности для схемы из п. б теоремы 2 получаем оценку сложности O(n log n) при объеме памяти 2n.
1.2. Вспомогательные утверждения
П—1
Пусть a(x) = Y аx1. Положим формально а = 0 при I ^ n. Введем обозначения 1=0
ак,г и bfc^:
2 —1 2 —1
a(x) mod (x2 — 1) = E afc;1x1, a(x) mod (x2 + 1) = Y bfc^x1.
1=0 1=0
Очевидно, что коэффициенты а&,г и Ь^г являются соответственно знакопостоянными и знакопеременными суммами коэффициентов а* с шагом 2й (по индексам):
а&,г = ай+1,г + ай+1,2к +г = Е а.?2к+г, Ь&,г = а&+и — а&+1,2к +г = Е (—1),? а^2к +г.
¿2к <п—г ¿2к <п—г
Следующая лемма используется в первую очередь при построении схем, эффективных с точки зрения памяти.
Лемма 1. Пусть п*+1 < к ^ п*. Справедливы следующие формулы:
2 г —1 1 2 ь х ь —1 ✓
^ " I Ьгаг,.7г2к +г + 2 ( Ьгаг-1, (2,?г-1+1)2пг +.?г2к+г +
¿г=0 У ¿¡-1=0 '
2пг —2—пг—1—1___1 .
+ 2 X! ( Ьгаг-2, (2^г-2+1)2пг-1 +(2^г-1+1)2"г +^г2к +г + ...
¿г-2=0 ^
2П1— п2— 1 — 1
. .. + 2 ^ Ьпь (2л + 1)2"2 +...+(2^'г-1+1)2пг +^г2к+г . " + 2"а2П1 +...+2"г +г;
¿1=0
1 / 2пг-1-пг-1_1
Ьщ,1 = Х/(-1)^ I X/ (Ь™г-ъ (2^г-1+^')2пг +г + ¿=0 у ¿г-1=0 ^
2пг—2—пг—1 —1 _1 .
+ 2 ( Ь™г-2, (2^г-2+1)2пг-1 +(2^г-1+^')2пг +г + ...
„=0 V
¿г-2=0
2п1-п2-1_1 \ \ \
... + 2 ^ Ьпь (2Л + 1)2П2 +...+(2^г-2+1)2пг-1 +(2^г-1+^')2пг +г ^^ J +
+ 2* 1 (й2"1 +...+2пг-1 +г — «2П1 +...+2пг +г) .
Доказательство. Первая из формул получается рекурсивным применением простых соотношений
= (ай+1,г + ай+1,2к +ь к е {п* : * = ^ ... ,
’ \Ь^,г + 2а^+1,2к+г, к е {п* : * = 1,...,з},
отталкиваясь от ага1+1,г = аг и учитывая, что аг = 0 при I ^ п. Вторая формула
получается из первой ввиду Ь„г,г = аПг+1,г — агаг+1,2"г +г. ■
Лемма 2. Пусть т ^ п. Тогда приведение многочлена степени т — 1 по модулям ж2"г + 1, * = 1,... , з, может быть выполнено схемой
а) из 2(т — 1) аддитивных элементов и глубины п1 — п + 1, причем коэффициенты остатка от деления на ж2"г + 1 вычисляются на глубине п1 — п* + 1;
б) из 2(2п — 2П1) аддитивных элементов, 4п — 3 • 2П1 умножений на степени двойки и объема памяти п.
Доказательство. Пункт а доказывает простая конструкция [14].
Несложно видеть, что все суммы а^г, где к = п + 1,... , п1, можно вычислить одной схемой сложности не выше т — 1, в которой на глубине не более I вычисляются а^г при к = п1 + 1 — /.
Искомые коэффициенты Ьпг,г получаются присоединением к построенной схеме элементов вычитания, расположенных на глубине п1 — п* + 1 в количестве
Поскольку 2пг > 2пг+1 +... + 2га®, для числа вычитаний (при подходящем г) получаем оценку
откуда следует оценка 2(т — 1) для сложности всей схемы.
Доказательство п. б достаточно провести для случая т = п. Перестроим схему из предыдущего пункта так, чтобы в ней явно вычислялись только те суммы а^г, для которых «достаточно памяти».
Обозначим Ь* = 2пг + ... + 2га®. При любом к = п1,... , п + 1 явно вычисляем суммы а^’0,... , а£’£г_1, где п*—1 ^ к > п*, учитывая, что п — Ь* прочих «ячеек памяти» отводится под хранение коэффициентов Ьп,г, где ^ < г.
Все вычисление удобно разбить на этапы, нумеруя их числами от п1 до п в порядке убывания. На этапе к вычисляются суммы а&,0,... ,а^,ьг_1 (где п*_1 ^ к > п*) и, если к е {п* : г = 1,... , в}, то вычисляются также коэффициенты Ь^,0,... , Ь^,2к_1.
Если сумма а^,г не вычисляется явно, то вместо нее используется правая часть формулы (обозначим ее ^г) из леммы 1, выражающая ее через уже вычисленные коэффициенты Ьп’¿, где п ^ к. Заметим, что поскольку I ^ Ь*+1 при п* ^ к > п*+1, то последнее слагаемое а2п1 +...+2«г +г в ^,г равно нулю.
Обозначим через р^ число переменных в формуле (это число не зависит от /, что следует из вида формулы). Тогда прибавление (вычитание) ^,г выполняется за р^ аддитивных операций и г умножений на степени двойки без дополнительной памяти, где п ^ к > п*+1.
Соответствующий способ проиллюстрируем на примере. Пусть требуется выполнить преобразование а ^ а + (Ь + 2с + 4д). Вычисления проведем в следующем по-
рядке: а, а + Ь, 2 1(а + Ь), с +2 1(а + Ь), 2 1(с + 2 1(а + Ь)), д + 2 1(с + 2 1(а + Ь)),
22(д + 2 _ 1(с + 2 _ 1(а + Ь))) = а + Ь + 2с + 4д.
Оценим сложность схемы. Рассмотрим этап с номером к, где п*_ 1 > к > п*. Доступны коэффициенты а&+1,0,... , а&+1,ьг _ 1, остальные а&+1,г выражаются формулами ^&+1,г. Заметим, что Ь* < 2гаг+1 ^ 2й. Тогда каждый из коэффициентов а^г, где I < Ь*, вычисляется как а^+1,г + ^&+1,2к +г со сложностью р^+1 аддитивных операций и г —1 умножений на степени двойки. Сложность этапа оценивается как ¿*р^+1 аддитивных операций и (г — 1)Ь* умножений на степени двойки.
Рассмотрим этап с номером к = п*. Доступны коэффициенты а&+1,0,... , а&+1,£г_ 1. При этом Ь* = 2й + Ь*+1. Сначала вычислим все Ь^г по формулам а^+1,г — а^+1,2к + при I < Ь*+1 и а^+1,г — ^^+1 2к +г при остальных /. При этом коэффициентами Ь^г «перезаписываются» а^+1,г, I ^ Ь*+1. Затем вычислим а^,г для I < Ь*+1 по формулам 2а^+1,г — Ь^,г. Сложность этапа оценивается как 2Ь*+1 + (2й — Ь*+1 )рй+1 аддитивных операций и (г — 1)2й — (г — 2)Ь*+1 = (г — 1)Ь* — (2г — 3)Ь*+1 умножений на степени
двойки.
Найдем рд.. Из вида формулы леммы 1 непосредственно следует, что
т — 2пг + 2пг+1 + ... + 2п ^ т — 1,
р = 2”1_гаг_(*_1) + 2”2_гаг_(*_2) + + 2™г-1_гаг_1 + 1 (1)
рй = 2пг_йрп. при п*+1 < к < п*.
Оценим суммарную аддитивную сложность вычислений. Сумма сложностей этапов п* — 1,... , п*+1 не превосходит
С* = ¿тр„г(1 + 2 + ... + 2Пг_Пг+1_2) + 2Ь*+2 + (2пг+1 — Ьг+2)2пг_пг+1_1р„г ^
^ рпг2Пг Пг+1 1(Ь*+1 — Ь*+2 + 2Пг+1 ) — р„г¿¿+1 + 2Ь*+2 = рпг (2Пг — Ь*+1) + 2Ь*+2.
При г ^ 1 последнее выражение не превосходит 2пгрпг, если учесть, что Ь*+1 > 2Ь*+2 и
рпг ^ 1.
Для сложности всех этапов, кроме этапа п1, используя (1), получаем оценку
С1 + ... + С5_1 = £ 2пгр„г = '¿1(2п1_(г_1) + 2п2_(*_2) + ... + 2пг) <
*=1 *=1
< (2п1 + 2п1_1 + ...) + (2п2 + 2п2_1 + ...) + ... + (2п + 2га'_1 + ...) < 2п.
Окончательно, оценивая сложность этапа п1 как 2Ь2 = 2(п — 2п1), получаем утвер-
ждение п. б в части аддитивной сложности.
Число умножений на степени двойки на этапах п* — 1,..., п*+1 оценим грубо как
^ = (п* — п*+1 — 1)гЬ*+1 + гЬ*+1 — (2г — 1)Ь*+2 ^
^ г(п* — п*+1)Ь*+1 ^ ¿2пг_пг+1 _12Пг+1+1 = ¿2пг.
Тогда для суммарного числа умножений на всех этапах, кроме этапа п1 , имеем оценку
Вх + ... + Д,_1 = 2п1 +2 • 2п2 + 3 • 2п3 + ... + (в — 1) • 2пз-1 =
= п + (п — 2п1) + (п — 2п1 — 2п2) + ... <
< п + (п — 2п1) + (1/2) (п — 2п1) + (1/2)2 (п — 2п1) + ... = п + 2(п — 2п1).
Добавляя п — 2п1 умножений на 2 на этапе п1, получаем итоговую оценку. ■
Лемма 3. Восстановление многочлена степени п — 1 по заданным остаткам по модулям ж2"г + 1, г = 1,... , в, может быть выполнено схемой
а) из 4п — 3 • 2п1 аддитивных элементов, 2(п — 2п1) умножений на степени двойки и глубины не более п1 — п + 2^ — 1;
б) из 2(2п — 2п1) аддитивных элементов, 2(п — 2п1) делений на 2 и объема памяти п.
Доказательство. Воспользуемся леммой 1, чтобы выразить разности
^*,г = а2п1 +...+2пг-1 +г — а2п1 +...+2пг +г, (2)
где г = 1,... , в — 1 и I = 0,...,Ь* — 1, через коэффициенты Ьга^.¿. Заметим, что вычитаемый коэффициент равен нулю при I ^ Ь*+1.
Для построения схемы из п. а вычисляем вспомогательные величины с*,г и д*,г, определяемые равенствами
2пг-1-пг-1 _1
д1,г Ьп1,г, с*,г — 1, ¿2пг+1 +г, д*,г Ь«.г,г + 2с*,2пг +г,
¿=0
где г ^ 2. Затем находим искомые коэффициенты Л^г по формулам Л^г = 21 г (6^,1 — -Яг + Сг,2"4 +1), а в случае г = 1 просто Л,1,г = 6га1,г.
Сложность вычислений, заключенная в формулах для с^г, г = 2,...,5 и I = = 0,... , 2”'4+1 — 1, оценивается как
^ 2п;+1(2^-1-га4“1 — 1) = £(2^- — 2га4+1) < п — 2(п — 2П1).
г=2 г=2
Сложность, заключенная в формулах для ^,г, г = 2,...,5 — 1 и I = 0,..., 2П — 1, оценивается как 2П2 + .. .+2га®-1 < п—2П1 аддитивных операций и столько же умножений на 2. Для завершения вычисления Л^,г нужно выполнить еще 2(2П2+.. .+2га®) = 2(п—2П1) аддитивных операций и п — 2П1 умножений на степени двойки.
Без труда проверяется, что с^,г при этом вычисляется на глубине п1 — п + г — 3 и, следовательно, Л^,г —на глубине п1 — п + г.
По набору несложно восстанавливаются коэффициенты многочлена а (ж). Коэффициенты а2п1 +...+2"г-1 +г просто совпадают с Л^,г при I ^ ¿¿+1. В частности, в случае г = 5 известны все коэффициенты. Это позволяет последовательно в порядке убывания г определить недостающие коэффициенты а2«1+...+2«г-1 +г, I = 0,... , Ь!+1 — 1, прямо по формулам (2) с общей сложностью
Ь8 + Ь,_1 + ... + Ь2 = 2П2 +2 ■ 2П3 + 3 ■ 2П4 + ... < 2(п — 2П1).
Глубина этих вычислений, очевидно, не превосходит 5 — 1.
Складывая все оценки, получаем утверждение п. а.
Для доказательства п. б построим схему, последовательно в порядке убывания г преобразующую каждый коэффициент ЪП1у1 по формуле леммы 1 в соответствующую разность Лг,г.
Несложно видеть, что преобразование каждого коэффициента выполняется за о аддитивных операций и г — 1 делений на 2, где о — число коэффициентов ,4 в правой части второй формулы леммы 1. Непосредственно проверяется, что
О = 2™1 _п^_(г_2) + 2П2_га4_(г_3) + + 2™г-1_Пг
Аддитивную сложность вычисления разностей теперь можно оценить как
£ 2ПО = £(2П1_(!_2) + 2П2_(!_3) + ... + 2^-) <
!=2 г=2
< (2П1 + 2П1_1 + ...) + (2П2 + 2П2_1 + ...) + ... + (2П + 2га'_1 + ...) < 2п.
Число делений на 2 оценивается как
£(г — 1)2п = 2П2 + 2 ■ 2П3 + 3 ■ 2П4 + ... < 2(п — 2П1).
г=2
Заключительная часть схемы такая же, как в п. а. ■
2. Троичный метод умножения
2.1. Основные результаты Здесь, если явно не оговаривается иное, будем полагать п = 2 (3П1 + 3П2 + ... + 3га®), где п1 > п2 > ... > п,. Заметим, что п € [2 ■ 3”4, 3П1+1).
Рассмотрим способ использования схем для умножения многочленов по модулям ж2^3 + ж3 +1 с коэффициентами над кольцом, в котором обратим элемент 3. Сложность, глубину и объем памяти таких схем будем обозначать через М(к) = = МА(к) + М3(к) + Мс (к) + Мм (к), ^м (к) и ^м (к), где МА(к) обозначает число аддитивных операций; М3(к) — число умножений на степени тройки; Мс(к) — число прочих скалярных умножений; Мм (к) — число нескалярных умножений.
Из лемм 5 и 6, приведенных ниже, вытекает
Теорема 3. Для умножения многочленов суммарной степени не выше п— 1 можно построить схему
а) из 5,5п — 5 ■ 3”4 + £ МА(пг) аддитивных операций, 1,5п — 3П1+1 + £ М3(пг),
г г
£ Мс (пг) и £ Мм(пг) умножений на степени тройки, прочие константы и нескалярных
г г
умножений соответственно, и глубины 4п1 + шах|^м(пг) — 2пг} — 2п, + 5 + 1. В случае
г
кольца характеристики 2 справедлива на 0,5п меньшая оценка аддитивной сложности;
б) из 15,5п — 19 ■ 3”4 + £ МА(пг) аддитивных операций, 4,75п — 8,5 ■ 3П1 + £ М3(пг),
г г
£ Мс (пг) и £ Мм(пг) умножений на степени тройки, прочие константы и нескалярных
гг
умножений соответственно, и объема памяти 2п + шах{г>м(пг) — 4 ■ 3п}.
г
Следствие 3. Пусть М(к) = / (2 ■ 3к), где для любых ж, у ^ 1 справедливо / (ж + у) ^ / (ж) + / (у). Пусть также ^м(к) — 2к ^ ^м(I) — 2/ и ^м(к) — 4■ 3к ^ гм(I) — 4■ 3г при любых к ^ /. Тогда для умножения многочленов суммарной степени не выше п — 1 можно построить схему
а) сложности /(п) + 7п — 8 ■ 3”4 и глубины ^м(п1) + 3п1 + 2, а в случае кольца характеристики 2 для сложности схемы справедлива оценка / (п) + 5(п — 3”4);
б) сложности /(п) + 20,25п — 27,5■ 3П1 и объема памяти 2п+^м(п1 — 4■ 3П1), а в случае кольца характеристики 2 сложность схемы не превосходит /(п) + 15,5п — 19 ■ 3”4.
В общем случае, а именно для п € и[3г, 2-3г), оценку сложности вида (1+ о(1))/(п),
г
не модифицируя базовый алгоритм умножения, получить пока не удается. Но можно доказать оценку (4/3 + о(1))/(п): справедливо
Следствие 4. Пусть в условиях следствия 3 дополнительно выполняется /(ж)/ж ^ то при ж ^ то и /(ж) = ж0(1). Тогда для умножения многочленов суммарной степени не выше п — 1 можно построить схему сложности не более
{(1+ о(1))/(п), 2 ■ 3к ^ п < 3к+1,
(2 — 3к/п + о(1)) /(п), 3к ^ п < 3к+1/2,
(2 ■ 3к/п + о(1)) /(п), 3к+1/2 < п < 2 ■ 3к
и глубины не более ^м(Llog3(2n + о(п))] — 1) + o(logп).
Доказательство. В первом случае конструкция та же, что и в следствии 2. В третьем случае используется схема умножения многочленов суммарной степени не более 2 ■ 3к — 1.
В случае п € [3к, 3к+1/2) рассмотрим ближайшее сверху число п', кратное 2■ 3к_а(п), где а(п) —медленно растущая натуральная функция. Если п' > 3к+1/2, то действуем, как в третьем случае.
Иначе, если п' < 3к+1/2, вычислим произведение по модулям ж2^3* + ж3* + 1, где г = к — 1,... , к — а(п), схемой сложности /(3к — 3к_а(п)) + О(п) и глубины 0(а(п)) методом теоремы 3.
Фактически это дает нам 3к — Зк—а(п) линейных уравнений на коэффициенты искомого произведения. Для получения оставшихся п" = п' — 3к + Зк-а(п) уравнений заметим, что п// = Ь + и, где
а(п)
2Ь, 2и Є {0} и [у [2 ■ 3к-І, 3к-І+1) І П {2 ■ зк-а(п)м|.
І=1
Действительно, любое натуральное число можно представить в виде суммы двух чисел, запись которых в системе счисления с основанием 3 состоит только из нулей и
Перемножая отдельно младшие части многочленов суммарной степени 2Ь — 2 и старшие части суммарной степени 2 и — 2, определяем Ь младших и и старших коэффициентов произведения. Это выполняется со сложностью f (2Ь) + f (2и) + 0(Ь + и) и глубиной 0(а(п)), согласно теореме 3.
Далее при помощи леммы 5 находим остатки от деления известной части искомого произведения на многочлены ж2^3* + ж3* + 1,1 = к — 1,..., к — а(п), откуда находим остатки от деления неизвестной части а(ж)жь, где deg а < п/ — Ь — и, на те же многочлены. Все это выполняется со сложностью 0(п) и глубиной 0(а(п)).
Многочлен f (ж) восстанавливается слегка модифицированным методом леммы 6 (см. ниже; эту модификацию несложно построить) также со сложностью 0(п) и глубиной 0(а(п)). Следствие доказано. ■
Конструкции и оценки сложностных характеристик схем умножения по модулю ж2^3 + ж3 +1 приводятся, например, в [5, 6, 14-16].
единиц. Все такие числа содержатся в множестве {0} и и [3і, 3І+1/2).
І=1
2.2. Вспомогательные утверждения
П— 1
Пусть а (ж) = £ а^ж1. Положим формально а^ = 0 при I ^ п. Введем обозначения
Коэффициенты а^,г и связывают простые соотношения
ак,1 = ак+1,1 + ак+1,3к+1 + а&+1,2-3к +Ь Ьк,г,1 = ак+1,г3к+1 — а&+1,2-3к+1.
На них основана
Лемма 4. Пусть п^+1 < к ^ п^. Справедливы следующие формулы:
Іі—1=0
3пі—2—— і —1 1
Іі—2=0 Х
+ЬПі—2, 1, (3Іі—2+2)3Пі—1 +(3Іі—1+2)3ПІ +Іі3к+1 + . . .
3п1-П2-1_ 1
и , 0, (3Л
. .. + 3 ^ (Ь™1, 0, (3Л+2)3"2 +...+(3^’*—1+2)3"* +^*3к +1 +
¿1=0
+ ЬП1,1, (3^1+2)3"2 +...+(3 —1 +2)3п* +¿¿3^+1) . . ^^ + 3"а2(3П1 +...+3"* )+1;
1 /3"г—1—п* —1_1 .
Ьп*,г,1 = Х^(— 1)¿ I (Ь™*—1, 0, (3^*—1+г+^'(2_г))3"
¿=0 у ¿¿—1=0 '
+Ьп*—1, 1, ^¿¿—1 +г+^'(2_г))3"* +1 +
3"*—2— "*—1 —1_1 .
+ 3 (Ь™*—2, 0, ^¿¿—2+2)3п*—1 +(3^-*—1 +г+^'(2_г))3"* +1 +
¿¿—2=0
+Ьп*—2, 1, ^¿¿—2+2)3п*—1 +(3^*—1+г+^'(2_г))3" +1 + ...
3"1 —п2—1_1
... + 3 X/ (Ь™1,0, (3Л+2)3"2 +...+(3^*—2+2)3п*—1 +(3^*—1+г+^-(2_г))3п* +1 +
¿1=0
+ЬП1, 1, (3Л+2)3"2 +...+(3^*—2+2)3п*—1 +(3^*—1+г+^'(2_г))3п* +1) . . ^ ^ +
+ 3 1 (а2(3п1 +...+3п*—1 )+г3"* +1 — а2(3"1 +...+3"*)+^ .
Доказательство. Доказательство полностью аналогично доказательству леммы 1, только используем соотношения
а = Г ак+1,1 + ак+1,3к +1 + ак+1, 2^3к +1, к ^ {п : * = 1,...,5}
, [Ь&,0,1 + Ьк,1,1 + 3ак+1, 23+1, к € {пг : * = ^. . . ,
учитывая, что аП1+1,1 = аг и, кроме того, аг = 0 при I ^ п. Вторая формула получается
из первой как 6га*,г,г = ап*+1,г3"* +1 — ап*+1,2^3" +1. ■
Лемма 5. Пусть т ^ 2п, а п и п — такие, как в теореме 3. Тогда приведение
2 3"* 3"*
многочлена степени не выше т — 1 по модулям ж23 + ж3 +1, * = 1,... , з, может быть выполнено схемой
а) из 2(т—1) аддитивных элементов и глубины 2(п1 — п8) + 1, причем коэффициенты остатка от деления на ж23"* + ж3"* + 1 вычисляются на глубине 2(п1 — п + 1). Кроме того, в случае кольца характеристики 2 для сложности схемы справедлива оценка
1,5(т — 1);
б) из 6п — 8 • 3п1 аддитивных элементов, 13п/8 — 11 • 3п1 /4 умножений на степени тройки и объема памяти п.
Доказательство. Все суммы а^, где к = п + 1,..., п1, можно вычислить одной схемой сложности не выше т—3га®+1, в которой глубина вычисления а^ не превосходит 2(п1 + 1 — к).
Коэффициенты бп*,?-,! остатка от деления на ж23 * + ж3 * + 1 получаются присоединением к построенной схеме элементов вычитания, расположенных на глубине 1 относительно ап*+1,1, в количестве
’0, т ^ 2 • 3п,
2(т — 2 • 3п), 2 • 3п ^ т ^ 3п*+1,
2 • 3п, т ^ 3п*+1.
Число вычитаний в двух последних случаях можно также оценить сверху как т — 3п*. Поскольку 3п* > 2(3п*+1 + ... + 3п®), для числа вычитаний (при подходящем г) получаем оценку
т — 3п + 2 (3п*+1 + ... + 3п) ^ т — 1,
откуда следует оценка 2(т — 1) для сложности всей схемы.
Если характеристика равна 2, то один из двух коэффициентов в каждой паре Ьп*,0,1, Ьп*,1,1 можно использовать при вычислении ап*,1 (кроме случая г = в). Для сложности схемы в этом случае имеем оценку т — 3п®+1 + 0,5(т — 1) + 3п® < 1,5(т — 1). П. а доказан.
Доказательство п. б достаточно провести для случая т = п. Перестроим схему из предыдущего пункта так, чтобы в ней явно вычислялись только те суммы а^д, для которых «достаточно памяти».
Обозначим Ь = 2(3п* + ... + 3п®). При любом к = п1,... , п + 1 мы явно вычисляем суммы а^,0,... , а*;,£*_1, где п*_1 ^ к > п*, учитывая, что п — Ь* прочих «ячеек памяти» отводится под хранение коэффициентов 6^. ,г1, где ] < г.
Все вычисление удобно разбить на этапы, нумеруя их числами от п1 до п в порядке убывания. На этапе к вычисляются суммы а&,0,... , а&,^-1, и если к € {п* : г = 1,... , в}, то вычисляются также коэффициенты Ьк,г,1, г € {0,1}, I = 0,..., 3к — 1.
Если сумма а^ не вычисляется явно, то вместо нее используется правая часть формулы (обозначим ее ф^) из леммы 4, выражающая ее через известные коэффициенты ,д,*, где п ^ к. Заметим, что поскольку I ^ Ь*+1 при п ^ к > п^+1, последнее слагаемое а2(3"1+...+3"*)+г в фкд равно нулю.
Обозначим через р^ число переменных в формуле ф^ (это число не зависит от /, что следует из вида формулы). Тогда прибавление (вычитание) ф^ выполняется за р^ аддитивных операций и * умножений на степени тройки без дополнительной памяти, где п ^ к > п^+1.
Оценим сложность схемы. Рассмотрим этап с номером к, где п^_1 > к > п*. Доступны коэффициенты ак+1,0,... , ак+1,^*_1, остальные ак+1,1 выражаются формулами ^к+1,1. Заметим, что Ь < 3п*+1 ^ 3к. Тогда каждый из коэффициентов а^, где I < Ь*, вычисляется как а&+1,я + ^к+1,3к+1 + фк+1,23к+ со сложностью 2р^+1 аддитивных операций и г — 1 умножений на степени тройки (умножения на степени тройки при прибавлении двух формул типа ф можно совместить). Сложность этапа оценивается как 2Ь^р^+1 аддитивных операций и (г — 1)Ь* умножений на степени тройки.
Рассмотрим случай к = п*. Доступны коэффициенты ак+1,0,... , ак+1,^*_1. При этом Ь* = 2 • 3к + Ь*+1. Сначала вычислим все ЬкуГ,1 по формулам ак+1,г3к+1 — ак+123к +1 при
I < Ь*+1 и ак+1г3к +1 — фк+1,2^3к +г при прочих /. При этом коэффициентами 6к,г,г перезаписываются а^+у, I < 2 • 3к. Затем вычислим а^д для I < Ь*+1 по формулам 3ак+1,23к+1 + 6к,0,г + Ьк,1,1. Сложность этапа оценивается как 4Ь*+1 + 2(3к — Ь*+1)рк+1 аддитивных операций и 2(г — 1)3к — (2г — 3)Ь*+1 умножений на степени тройки. Эта оценка справедлива и в случае к = п1, так как можно положить рП1+1 = 0.
Найдем рк. Из вида формулы леммы 4 непосредственно следует, что
рп = 2 (3п1_п*_(*_1) + 3п2_п*_(г_2) + ... + 3п*—1_п*_1 + 1) , (3)
а рк = 3п кр„* при п*+1 < к < п*.
Оценим суммарную аддитивную сложность вычислений. Сумма сложностей этапов п* — 1,... , п*+1 не превосходит
С* = 2^+^(1 + 3 + ... + 3Пг-щ+1-2) + 4Ьг+2 + 2(3щ+1 — ¿г+2)3Пг-Пг+1-1рщ ^
^ 2Рпг 3’г П"+1 1 ^ ^ ¿*+1 — ^+2 + 3П"+^ — Рпг ¿*+1 + 4^г+2 =
= 2Рпг 3П Пг+1 1 ^2 ' 3Пг+1 — ^ ¿*+2^ — Рщ ¿*+1 + 4^г+2 =
= Рщ (4 ' 3”"г 1 — ¿г+23П Пг+1 1 — ^г+1) + 4^г+2.
При г ^ 1 последнее выражение не превосходит 4-3Пг-1рщ , если учесть, что Ь*+1 > 3Ь*+2 и Рщ ^ 1.
Для сложности всех этапов, кроме этапа п1, используя (3), получаем оценку
С1 + ... + Св_1 = 4 £ 3пг-1 Рпг = 8 Е(3П1- + 3П2-(*-1) + ... + 3пг-1) <
*=1 *=1
< 8 ((3п1-1 + 3п1-2 + ...) + (3п2-1 + 3п2-2 + ...) + ... + (3п8-1 + 3п8-2 + ...)) < 2п.
Окончательно, оценивая сложность этапа п1 как 4Ь2 = 4(п — 2 ■ 3п1), получаем утверждение п. б в части аддитивной сложности.
Число умножений на степени тройки на этапах п*,... , п*+1 + 1 оценивается как
^ = (п* — п*+1 — 1)гЬ*+1 + 2(г — 1)3Пг — (2г — 3)Ь*+1 =
= г(пг — пг+1)^г+1 + (г — 1)(^г — 4^г+1).
Сумму первых слагаемых можно оценить как
' ' 1 '
Е г(п* — пг+1)Ьг+1 ^ £ ¿3Пг-Пг+1-1(3Пг+1+1/2) = - £ г3щ <
*=1 *=1 2 *=1
< 1 ((3п1 + 3п2 + ...) + (3п2 + 3П3 + ...) + ...) <
< 1 (п + <п/2 — 3’“) + 1 (п/2 — 3щ) + = П + |(”'/2 — 3п1 )•
Сумму вторых слагаемых оценим грубо как
(¿2 — 4^з) + 2(Ьэ — 4^4) + 3(^4 — 4^5) + ... ^ ¿2 = п — 2 ■ 3п1.
Складывая последние две оценки, завершаем доказательство п. б. ■
Лемма 6. Восстановление многочлена степени п — 1 по заданным остаткам от
2-3пг 1 3пг 11*1 /"
деления на многочлены X + х3 +1, г = 1, . . . , 5, может быть выполнено схемой
а) из 3,5п — 5 ■ 3’1 аддитивных элементов, 1,5(п — 2 ■ 3’1) умножений на степени тройки и глубины 2(п1 — п8) + 5 + 1;
б) из 3,5п — 3’1+1 аддитивных элементов, 1,5(п — 2 ■ 3’1) делений на 3 и объема
памяти п.
Доказательство. Из леммы 4 выразим разности
^.,г,г = а2(3п1 +...+3пг-1 )+г3пг +1 — а2(3п1 +...+3пг )+Ь (4)
где г = 1, . . . , 5 — 1, Г € {0, 1} и I = 0, . . . , ¿г — 1, через коэффициенты 6П.,д,4. Заметим, что вычитаемый коэффициент равен нулю при I ^ ¿¿+1.
Для построения схемы из п. а вычисляем вспомогательные величины с,г и ^, определяемые равенствами
3пг-1-пг-1_ 1
^1,1 = Ьга1,0,1 + Ьга1,1,1, сг,1 = £ ^г_1,.?3пг+1+1, ^¿,1 = 6”г,0,1 + 6”г,1,г + 3сг,2 • 3пг +1,
¿=0
где г ^ 2. Искомые коэффициенты при г ^ 2 выражаются формулами = 3 '(6гаг,г,1 сг,г3пг +1 + сг,2 • 3пг +1^ а при г 1 просто Л-1,г,1 6”1,г,1.
Сложность вычислений, заключенная в формулах для с,г, г = 2,...,5 и I = 0,..., 3«4+1 — 1, оценивается как
Ё зп4+1(зп4-1_п4_1 — 1) = ^(з«4-1 — з«4+1) < п/2 — 3(п/2 — 3”1) = 3П1+1 — п.
г=2 г=2
Сложность, заключенная в формулах для ^,г, г = 1,... , 5 — 1 и I = 0,..., 3”г — 1, оценивается как 3”1 + 2(3”2 + ... + 3”8-1) < п — 3”1 аддитивных операций и 3”2 + ... + +3”8-1 < п/2—3”1 умножений на 3. Для завершения вычисления нужно выполнить еще 4(3”2 + ... + 3”) = 2(п — 2 • 3”1) аддитивных операций и п — 2 • 3”1 умножений на степени тройки.
Без труда проверяется, что с,г при этом вычисляется на глубине 2(п1 — пг) — 1 и, следовательно, ^,г,г —на глубине 2(п1 — пг) + 2.
По набору несложно восстанавливаются коэффициенты многочлена а(ж). Коэффициенты а2(3"1 +...+3п4-1 )+г3п +г совпадают с ^г,г,г при I ^ ¿¿+1. В частности, в случае г = 5 известны все коэффициенты. Это позволяет последовательно в порядке убывания г определить недостающие коэффициенты а2(3«1+...+3^-1 )+г3«г +г, I = 0,... , ¿¿+1 — 1, из формул (4) со сложностью
Ь8 + ¿3-1 + ... + ¿2 = 2(3”2 +2 • 3”3 + 3 • 3”4 + ...) < 1,5(п — 2 • 3”1)
аддитивных операций. Глубина этих вычислений не превосходит 5 — 1.
Складывая все оценки, получаем утверждение п. а.
Для доказательства п. б построим схему, последовательно в порядке убывания г преобразующую каждый коэффициент 6Пг ,г,г по формуле леммы 4 в соответствующую разность ^,г,г.
Несложно видеть, что преобразование каждого коэффициента 6гаг,г,г выполняется за п аддитивных операций и г — 1 делений на 3, где п — число коэффициентов 6П.,д,4 в правой части второй формулы леммы 4. Непосредственно проверяется, что
Т =4 ^3”1_”г_(¿_1) + 3га2_га4_(г_2) + + 3га;_1_га;_1^
Аддитивную сложность вычисления разностей ^г,г,г теперь можно оценить как £ 2 • 3”гп = £ 8 (3”1_(г_1) + 3”2_(г_2) + ... + 3”г-1_1) <
г=2 г=2
< 8 ((3”1_1 + 3П1_2 + ...) + (3”2_1 + 3”2_2 + ...) + ... + (3”8_1 + 3”8_2 + ...)) < 2п.
Число делений на 3 оценивается как
Е 2(г — 1)3”г = 2 (3”2 + 2 • 3”3 + 3 • 3”4 + ...) < 1,5(п — 2 • 3”1). г=2
Заключительная часть схемы такая же, как в п. а. ■
ЛИТЕРАТУРА
1. Van der Hoeven J. The truncated Fourier transform and applications // Proc. ISSAC 2004 (Santander, Spain). NY: ACM Press, 2004. P. 290-296.
2. Harvey D. and Roche D. S. An in-place truncated Fourier transform and application to polynomial multiplication // Proc. ISSAC 2010 (Munich, Germany). NY: ACM Press, 2010. P. 325-329.
3. Schönhage A. Schnelle multiplikation von polynomen über körpern der charakteristik 2 // Acta Inf. 1977. V. 7. P. 395-398.
4. Cantor D. and Kaltofen E. On fast multiplication of polynomials over arbitrary algebras // Acta Inf. 1991. V. 28. No. 7. P. 693-701.
5. Bernstein D. J. Fast multiplication and its applications // Algorithmic Number Theory, MSRI Publ. 2008. V. 44. P. 325-384.
6. Von zur Gathen J. and Gerhard J. Modern computer algebra. Cambridge: Cambridge University Press, 1999. 768 p.
7. Лупанов О. Б. Асимптотические оценки сложности управляющих систем. М.: Изд-во Моск. ун-та, 1984. 138 с.
8. Яблонский С. В. Введение в дискретную математику. М.: Наука, 1986. 384 с.
9. Cooley J. and Tukew J. An algorithm for the machine calculation of complex Fourier series // Math. Comp. 1965. V. 19. P. 297-301.
10. Schoönhage A. Asymptotically fast algorithms for the numerical multiplication and division of polynomials with complex coefficients // Proc. EuroCAM-82 (Marseille, France). LNCS. V. 144. Berlin; Heidelberg; NY: Springer, 1982. P. 3-15.
11. Сергеев И. С. Регуляризация некоторых оценок сложности умножения многочленов // Материалы VII молодежной научной школы по дискретной математике и ее приложениям (Москва, 2009 г.). Ч. II. М.: Изд-во Института прикладной математики РАН, 2009. С. 26-32.
12. Van der Hoeven J. Notes on the truncated Fourier transform // Tech. Report. Univ. ParisSud, Orsay, France, 2005.
13. Crandall R. and Fagin B. Discrete weighted transforms and large-integer arithmetic // Math. Comput. 1994. V.62. P. 305-324.
14. Mateer T. Fast Fourier algorithms with applications // Ph. D. Thesis. Clemson University, 2008.
15. Гашков С. Б., Сергеев И. С. Алгоритмы быстрого преобразования Фурье // Дискретная математика и ее приложения. Ч. V. М.: Изд-во Института прикладной математики РАН, 2009. С. 3-23.
16. Гашков С. Б., Сергеев И. С. О сложности и глубине булевых схем для умножения и инвертирования в некоторых полях GF(2n) // Вестник МГУ. Сер. 1. Математика. Механика. 2009. №4. С. 3-7.