Skip to content

快速 Fourier 变换

Fast Fourier transform · FFT

利用单位根的偶奇分解在 O(nlogn) 时间计算离散 Fourier 变换。

条目类型
算法

形式陈述

对长度 n=2k 的序列,DFT 为

a^j=m=0n1amωnjm.

Cooley–Tukey 分解把偶数下标与奇数下标系数分别视为两个长度 n/2 的 DFT,再用旋转因子合并,得到递归 T(n)=2T(n/2)+O(n)=O(nlogn)。 多项式的线性卷积经零填充、两次正变换、逐点乘法和逆变换完成。

直觉

FFT 不是一种新的变换,而是利用单位根的对称性快速计算离散 Fourier 变换。从系数表示切换到单位根上的点值表示后,多项式乘法变成逐点乘法;把偶数次与奇数次系数拆开后,在 n 次单位根上的两个半规模求值可复用,因为 ωnk+n/2=ωnk,而单位根平方后又折半。递归由此把 n2 次直接求和降为 nlogn,本质是结构化线性变换的分治。

FFT 的旋转因子与蝶形合并
例子与边界

多项式乘法先把两个系数序列补零到长度至少 n+m1 的方便规模,分别做 DFT,逐点相乘,再做逆变换。长度 4 时,偶系数多项式与奇系数多项式各只需在两个平方根单位点求值,再通过蝶形合并四个结果。

DFT 的代数定义与 FFT 的 O(nlogn) 运算计数都以精确算术为基准;机器实现遵循标准浮点运算模型时,每个蝶形还会引入舍入误差。整数卷积需四舍五入、拆位或改用满足单位根条件的数论变换(NTT);补零长度不足以覆盖卷积结果次数时会得到循环卷积。经典 radix-2 实现要求长度为二次幂,其他长度可用 mixed-radix 或 Bluestein 等方法。DFT 定义中的正负号与归一化约定也必须前后一致。

推论与应用

FFT 结合序列复数分治法,用于快速多项式乘法、信号频谱、大整数乘法、生成函数算法和字符串相关计算;数论变换则在有限域中复现单位根结构,避免浮点误差。它计算的是有限循环群上的 DFT;Fourier 级数处理周期函数的无穷展开,Fourier 变换处理非周期函数的连续频率积分,三者共享频率分解思想,却有不同的对象、归一化与收敛问题。

FFT 的卷积接口还通向子集卷积,但后者的“加法”发生在子集并分拆上,需 Möbius/zeta 变换,不能直接把数组下标卷积公式照搬。超比较整数排序有时使用字级打包、多项式评估或卷积子程序;这不表示一般 FFT 排序,也不绕过任意比较键的决策树下界,模型仍须保留有限字长与整数操作。

参考资料
关系图谱17 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

使用的工具

被这些条目使用

并列辨析