В циклотомическое быстрое преобразование Фурье это тип быстрое преобразование Фурье алгоритм закончился конечные поля.[1] Этот алгоритм сначала разлагает ДПФ на несколько циклических сверток, а затем выводит результаты ДПФ из результатов циклической свертки. При применении к ДПФ более
, этот алгоритм имеет очень низкую мультипликативную сложность. На практике, поскольку обычно существуют эффективные алгоритмы для циклических сверток определенной длины, этот алгоритм очень эффективен.[2]
Фон
В дискретное преобразование Фурье над конечные поля находит широкое применение при декодировании коды с исправлением ошибок Такие как Коды BCH и Коды Рида – Соломона. Обобщено из сложное поле, дискретное преобразование Фурье последовательности
над конечным полем GF (пм) определяется как

куда
это N-го первобытный корень из 1 в ГФ (пм). Если мы определим полиномиальное представление
в качестве

легко увидеть, что
просто
. То есть дискретное преобразование Фурье последовательности преобразует ее в задачу полиномиального вычисления.
Написано в матричном формате,
![mathbf {F} = left [{ begin {matrix} F_ {0} F_ {1} vdots F_ {N-1} end {matrix}} right] = left [ { begin {matrix} alpha ^ {0} & alpha ^ {0} & cdots & alpha ^ {0} alpha ^ {0} & alpha ^ {1} & cdots & alpha ^ {N-1} vdots & vdots & ddots & vdots alpha ^ {0} & alpha ^ {N-1} & cdots & alpha ^ {(N-1) ( N-1)} end {matrix}} right] left [{ begin {matrix} f_ {0} f_ {1} vdots f_ {N-1} end {matrix} } right] = { mathcal {F}} mathbf {f}.](https://wikimedia.org/api/rest_v1/media/math/render/svg/f1265f79edbfdbf2be3624afc83b9a95fdee874f)
Прямая оценка ДПФ имеет
сложность. Быстрые преобразования Фурье - это просто эффективные алгоритмы, оценивающие вышеуказанное произведение матрицы и вектора.
Алгоритм
Сначала определим линеаризованный полином над GF (pм) в качестве

называется линеаризованным, потому что
, что связано с тем, что для элементов 

Заметь
обратима по модулю
потому что
должен разделить заказ
мультипликативной группы поля
. Итак, элементы
можно разделить на
циклотомические смежные классы по модулю
:




куда
. Следовательно, входные данные преобразования Фурье можно переписать как

Таким образом, полиномиальное представление разлагается на сумму линейных многочленов, и, следовательно,
дан кем-то
.
Расширение
с надлежащей основой
, у нас есть
куда
, а по свойству линеаризованного многочлена
, у нас есть

Это уравнение можно переписать в матричной форме как
, куда
является
матрица над GF (п), который содержит элементы
,
- блочно-диагональная матрица, а
матрица перестановок, перегруппировывающая элементы в
по циклотомическому индексу смежности.
Обратите внимание, что если нормальная основа
используется для раскрытия элементов поля
, i-й блок
дан кем-то:

который является циркулянтная матрица. Хорошо известно, что циркулянтное произведение матрицы на вектор может быть эффективно вычислено с помощью извилины. Таким образом, мы успешно сводим дискретное преобразование Фурье к коротким сверткам.
Сложность
Применительно к характеристика -2 поля GF (2м), матрица
это просто двоичная матрица. Только сложение используется при вычислении матрично-векторного произведения
и
. Было показано, что мультипликативная сложность циклотомического алгоритма определяется выражением
, а аддитивная сложность определяется выражением
.[2]
Рекомендации