О применении ДПФ в алгебраических вычислениях

4. Сажнева O.A. Нахождение канонического базиса целых решений однородной системы линейных уравнений над кольцом полиномов// Вестник ТГУ, 2007. Т. 12. Вып.1. С. 133-134.

Поступила в редакцию 20 ноября 2008 г.

О ПРИМЕНЕНИИ ДПФ В АЛГЕБРАИЧЕСКИХ ВЫЧИСЛЕНИЯХ

© А.О. Лапаев

Ключевые слова: матричные алгоритмы, быстрое преобразование Фурье, полиномиальные алгоритмы.

Аннотация

В статье описывается один из способов вычисления определителя матрицы над кольцом Z[x] с использованием быстрого преобразования Фурье. Приводятся теоретические оценки сложности.

Известен алгоритм умножения многочленов одной переменной [1] при помощи быстрого преобразования Фурье, Такой алгоритм имеет сложность 0(п log2 п) и является одним из самых быстрых алгоритмов умножения полиномов.

В данной статье рассматривается способ вычисления определителя матрицы над кольцом Z[x] с использованием ДПФ. В алгоритме вычисления определителя мы заменяем арифметические операции над полиномами соответствующими операциями над их образами, полученными при преобразовании Фурье. А в конце делаем обратное ДПФ.

Для применения ДПФ необходимо знать верхние оценки максимальной степени и максимального коэффициента результата вычислений. Важно требовать, чтобы в вычислительном алгоритме не было операций деления с остатком. Допустимы только операции сокращения. Пусть степень искомого определителя det А не превосходит s, а максимальный модуль коэффициента в полиноме det А не превосходит числа а. Вычисления будут выполняться в несколько этапов:

1. Для всех элементов матрицы А вычисляется ДПФ на 2^og2ST точках. При этом берется такое количество простых модулей pi, чтобы выполнялось неравенство Р1Р2   - Рк > 2а.

2. Вычисляется определитель по некоторому алгоритм)’, в котором нет операций деления.

3. Результат восстанавливается с помощью обратного ДПФ и КТО [2]. Для этого вычисляется обратное преобразование Фурье по каждому простому модулю и затем с помощью КТО восстанавливаются коэффициенты результата в кольце Z[x}.

Оценим эффективность такого подхода на примере вычисления определителя матрицы с использованием алгоритма прямого хода [3].

Получим оценку для максимального коэффициента определителя матрицы.

Пусть А — (ßij(x)) - матрица с элементами из Z[x], atj — Ylk=o а^хк. Пусть maxjj^ \а^\ = а. а таXij deg ciij = s — 1. Оценим максимальный коэффициент det Д. Для этого воспользуемся тем фактом, что определитель матрицы можно вычислить по следующей формуле:

det А = ^2 (-l)taijla2j2

где {ji-,   • >jn) ~ перестановка чисел от 1 до гг. i - четность этой перестановки. Максимальный коэффициент aij1a2j2.. -<injn по модулю не будет превосходить sn_1a". Так как количество возможных перестановок из п элементов равно гг!, то максимальный коэффициент dec Л не превысит nisn"*a-r\ По формуле Стирлинга п\ < \Z2nn (^)" е~. Тогда максимальный модуль коэффициента det А не превышает

Оценим общее количество элементарных операций в алгоритме прямого хода. Пусть машинное слово имеет размер 32 бита. Примем за элементарную операцию сложение двух машинных слов. Умножение двух машинных слов занимает примерно столько же процессорного времени, сколько и сложение. Вычислительные эксперименты показали, что операция вычисления остатка от деления занимает столько же времени, как 7 сложений.

Для того, чтобы произведение простых модулей превосходило максимальный по модулю коэффициент определителя матрицы А, достаточно взять

r=\log32(^(^)ne^sn-1anyi

простых 32-разрядных модулей.

Оценим сложность вычисления прямого преобразования Фурье для одного элемента матрицы А. Так как количество мономов в не превосходит s, то необходимо выполнить 7sr |"log32 а] операций вычисления остатка от деления коэффициентов на простые модули. Преобразование Фурье вычисляется на N = 21 iOSz sn i точках. Тогда сложность БПФ по одному модулю составляет 9N log2 N операций. Тогда общая сложность, учитывая г модулей и п2 элементов матрицы, составляет

n2r

элементарных операций.

Сложность любой кольцевой операции в алгоритме прямого хода составляет 8rN элементарных

операций. Так как сложность прямого хода есть 0(п3), то общее количество элементарных операций

над образами элементов матрицы А равно

8 n3rN.

Для восстановления полинома-прообраза для конкретного определителя необходимо выполнить г обратных преобразований Фурье и восстановить по китайской теореме об остатках ns чисел. Сложность обратного преобразования Фурье по г модулям равна 9r/vlog2iV. Сложность восстановления одного числа из г остатков равна 2г2. Общее количество операций на этом шаге составляет

9rN log2 N + 2r2sn.

Получим количество всех операций в алгоритме:

r

Если подставить сюда значения г и N, то увидим, что переменные п. s,log32 а входят в слагаемые со старшими своими степенями в виде n5, s, (log3, а)2.

Работа выполнена при частичной поддержке грантов РФФИ (проект 08-07-97507) и программы ''Развитие потенциала высшей школы"(проект 2.1.1/1853).

Список литературы

1. Ноден П., Китте К. Алгебраическая алгоритмика. М: Мир, 1999.

2. Кнут Д. Искусство программирования, т, 2. Получисленные алгоритмы. Издательский дом "Вильямс", 2004.

3. Малашопок Г.И. Матричные методы вычислений в коммутативных кольцах. Издательство ТГУ им. Г.Р. Державина, 2002.

Поступила в редакцию 20 ноября 2008 г.