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
(л Jr.)
где {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(7s |"log32 от] + 9iVlog2 N) (2)
элементарных операций.
Сложность любой кольцевой операции в алгоритме прямого хода составляет 8rN элементарных
операций. Так как сложность прямого хода есть 0(п3), то общее количество элементарных операций
над образами элементов матрицы А равно
8 n3rN. (3)
Для восстановления полинома-прообраза для конкретного определителя необходимо выполнить г обратных преобразований Фурье и восстановить по китайской теореме об остатках ns чисел. Сложность обратного преобразования Фурье по г модулям равна 9r/vlog2iV. Сложность восстановления одного числа из г остатков равна 2г2. Общее количество операций на этом шаге составляет
9rN log2 N + 2r2sn. (4)
Получим количество всех операций в алгоритме:
r(7sflog32 а] + 9iVTog2 N) + 8n3rN + 9riVlog2 N + 2r2sn. (5)
Если подставить сюда значения г и N, то увидим, что переменные п. s,log32 а входят в слагаемые со старшими своими степенями в виде n5, s, (log3, а)2.
Работа выполнена при частичной поддержке грантов РФФИ (проект 08-07-97507) и программы ''Развитие потенциала высшей школы"(проект 2.1.1/1853).
Список литературы
1. Ноден П., Китте К. Алгебраическая алгоритмика. М: Мир, 1999.
2. Кнут Д. Искусство программирования, т, 2. Получисленные алгоритмы. Издательский дом "Вильямс", 2004.
3. Малашопок Г.И. Матричные методы вычислений в коммутативных кольцах. Издательство ТГУ им. Г.Р. Державина, 2002.
Поступила в редакцию 20 ноября 2008 г.