当前课程知识点:算法设计与分析 > 5 Divide and Conquer > 5.6 Convolution and FFT > Convolution and FFT
快速傅里叶变换 FFT
是20世纪十大算法之一
在科学和工程上起到了至关重要的作用
又把算法的简洁优美凝练
发挥的淋漓尽致
查尔斯范龙安说
FFT是20世纪最伟大的计算成就
它使得科学和工程发生了改变
不夸张的说
没有FFT 我们不知道今天的生活将会怎样
在介绍这个伟大的算法之前
我们先做一些数学上的准备
多项式 是数学上一种基本的研究对象
它有两种基本的表达形式
系数形式和点值形式
一个n-1次多项式可以由n个系数来确定
给定两个n-1次多项式 A(x),B(x)
它们的系数分别为a_0…a_n-1,b_0…b_n-1
我们关心多项式的相关的运算
最常见的运算有加法 取值以及乘法
对于系数形式的多项式来说
加法是平凡的
A(x)+B(x)
得到的也是一个n-1次多项式
其系数为a_0+b_0,…,a_n-1+b_n-1
所需要的运算次数为O(n)的
估值话我们可以采用Horner的办法
把多项式进行如下形式的转换
我们可以看到
只需要进行O(n)次算术运算
可以实现估值的计算
两个系数形式的多项式的乘法
我们称为卷积
如果平凡地把两个多项式相乘再展开
得到一个2n-2次的多项式
所需要的算术运算次数是O(n^2)的
多项式是数学中一个基本的研究对象
著名的高斯的代数学基本定理
就是关于多项式的
高斯证明了
复数域上度数为n的多项式至多有n个根
作为它的推论
我们有 一个度数为n-1的多项式
可以由它在n个不同的点的取值所唯一确定
注意 这里n个不同的点可以是取自复数域的
从而我们可以给出
多项式的第二种表达方式
点值形式
一个n-1次多项式
可以由n个不同点的值所唯一确定
同样地
我们还是关心多项式的三种基本运算
对于加法来说
仍然是平凡的
两个n-1多项式A(x),B(x)
给定它们在n个不同点处的值
对它们进行加法
所得到的也是一个n-1次多项式
在同样的n个点处的值为
A(x)与B(x)相应取值的和
需要O(n)次算术运算
对于乘法来说
它们相乘后的结果是一个2n-2次多项式
所以我们需要多项式A(x)与B(x)
在2n-1个点处的值
容易看出
乘积多项式
在这2n-1个点处的值为
A(x)与B(x)相应取值的乘积
这需要O(n)次算术运算
对于点值形式
估计它在某一个点处的值要复杂一些
我们可以用拉格朗日插值公式来计算
所需要的运算次数是n2级别的
通过以上的分析 我们看到
对于两种不同的表达方式
加法都可以快速的实现
而对于乘法和估值这两种运算来说
系数形式和点值形式各有优劣
我们希望 对于不同的多项式表达方式
我们都能够
快速地实现乘法和估值的运算
我们如果能够快速地
把多项式的两种方式进行转换
那么对于相应的运算
我们就可以采用合适的多项式表达方式
来进行计算和实现
我们先考虑把系数形式转化为点值形式
给定一个n-1次的多项式
系数为a_0…a_n-1
我们希望能够计算出在n个不同点
x_0到x_n-1处的值y_0到y_n-1
它们的表达式可以写成矩阵的形式
这需要O(n^2)次算术运算
反过来 如果已知点值形式
要求给出系数形式
相当于去求解
以a_0…a_n-1为变量的线性方程组
采用高斯消元法的话
需要O(n^3)次算术运算
我们采用分治的思想
由系数形式转换为点值形式
把多项式分为奇数项和偶数项
比如 给定一个七次多项式A(x)
我们定义两个小多项式
分别称为
A偶次多项式和A奇次多项式
容易验证
A(x)=A偶次多项式和A奇次多项式
在x^2处取值的和
以及A(-x)=这两个多项式在x^2处取值的差
由此我们发现
可以选两个点+1,-1
只要知道了
A偶次多项式和A奇次多项式
在+1点处的值
我们就可以算出原多项式
在+1,-1两点处的值
对于一般的多项式
我们也有一样的结论
我们把这种想法继续深化
我们可以选择四个点
+1,-1,+i,-i
我们发现 如果计算出
A偶次多项式和A奇次多项式
在+1,-1两点处的值
就可以算出原多项式在+1,-1,+i,-i点处的值
-1.1 Introduction
-1.2 A First Problem: Stable Matching
--A First Problem: Stable Matching
-1.3 Gale-Shapley Algorithm
-1.4 Understanding Gale-Shapley Algorithm
--Understanding Gale-Shapley Algorithm
-Homework1
-Lecture note 1
--Lecture note 1 Introduction of Algorithm
-2.1 Computational Tractability
-2.2 Asymptotic Order of Growth
-2.3 A Survey of Common Running Times
--A Survey of Common Running Times
-Homework2
-Lecture note 2
--Lecture note 2 Basics of Algorithm Analysis
-3.1 Basic Definitions and Applications
--Basic Definitions and Applications
-3.2 Graph Traversal
-3.3 Testing Bipartiteness
-3.4 Connectivity in Directed Graphs
--Connectivity in Directed Graphs
-3.5 DAG and Topological Ordering
--DAG and Topological Ordering
-Homework3
-Lecture note 3
-4.1 Coin Changing
-4.2 Interval Scheduling
-4.3 Interval Partitioning
-4.4 Scheduling to Minimize Lateness
--Scheduling to Minimize Lateness
-4.5 Optimal Caching
-4.6 Shortest Paths in a Graph
-4.7 Minimum Spanning Tree
-4.8 Correctness of Algorithms
-4.9 Clustering
-Homework4
-Lecture note 4
--Lecture note 4 Greedy Algorithms
-5.1 Mergesort
-5.2 Counting Inversions
-5.3 Closest Pair of Points
-5.4 Integer Multiplication
-5.5 Matrix Multiplication
--Video
-5.6 Convolution and FFT
-5.7 FFT
--FFT
-5.8 Inverse DFT
-Homework5
-Lecture note 5
--Lecture note 5 Divide and Conquer
-6.1 Weighted Interval Scheduling
--Weighted Interval Scheduling
-6.2 Segmented Least Squares
-6.3 Knapsack Problem
-6.4 RNA Secondary Structure
-6.5 Sequence Alignment
-6.6 Shortest Paths
-Homework6
-Lecture note 6
--Lecture note 6 Dynamic Programming
-7.1 Flows and Cuts
-7.2 Minimum Cut and Maximum Flow
--Minimum Cut and Maximum Flow
-7.3 Ford-Fulkerson Algorithm
-7.4 Choosing Good Augmenting Paths
--Choosing Good Augmenting Paths
-7.5 Bipartite Matching
-Homework7
-Lecture note 7
-8.1 Polynomial-Time Reductions
-8.2 Basic Reduction Strategies I
--Basic Reduction Strategies I
-8.3 Basic Reduction Strategies II
--Basic Reduction Strategies II
-8.4 Definition of NP
-8.5 Problems in NP
-8.6 NP-Completeness
-8.7 Sequencing Problems
-8.8 Numerical Problems
-8.9 co-NP and the Asymmetry of NP
--co-NP and the Asymmetry of NP
-Homework8
-Lecture note 8
--Lecture note 8 NP and Computational Intractability
-9.1 Load Balancing
-9.2 Center Selection
-9.3 The Pricing Method: Vertex Cover
--The Pricing Method: Vertex Cover
-9.4 LP Rounding: Vertex Cover
-9.5 Knapsack Problem
-Homework9
-Lecture note 9
--Lecture note 9 Approximation Algorithms
-10.1 Landscape of an Optimization Problem
--Landscape of an Optimization Problem
-10.2 Maximum Cut
-10.3 Nash Equilibria
-10.4 Price of Stability
-Homework10
-Lecture note 10
--Lecture note 10 Local Search
-11.1 Contention Resolution
-11.2 Linearity of Expectation
-11.3 MAX 3-SAT
-11.4 Chernoff Bounds
-Homework11
-Lecture note 11
--Lecture note 11 Randomized Algorithms
-Exam