当前课程知识点:算法设计与分析 > 5 Divide and Conquer > 5.7 FFT > FFT
我们考虑把系数形式转化为点值形式
也就是给定一个n-1次多项式
求它在n个不同的点x_0到x_n-1处的值
关键的想法在于
我们选择x_k=ω^k
这里ω是n次本原单位根
我们可以用矩阵的方式来进行表达
这个关系我们称为离散傅里叶变换
这个矩阵我们称为傅里叶矩阵
我们回顾一下一些基本的数学知识
x^n=1在复数域上有n个根
称为n次单位根
这n个单位根可以写成ω^0, ω^1, …, ω^n-1
这里ω=e^2πi/n 我们把它称为n次本原单位根
容易验证它们的n次方都等于1
令½n次单位根为ν^0,ν^1, …,ν^n/2-1
这里ν=e^4πi/n为½n次本原单位根
也就是ω^2=ν 以及(ω^2)^k=ν^k
我们可以在一个单位圆周上
标示出这些单位根
我们的目标是给定一个n-1次多项式
求它在ω^0, ω^1, …, ω^n-1处的值
我们讨论分 治 合的操作
还是把多项式分为奇次项和偶次项
我们定义两个小的多项式
分别称为
A偶次多项式A_even(x)和A奇次多项式A_odd(x)
容易验证
A(x)=A偶次多项式和A奇次多项式
在x^2处取值的和
治的过程就是计算A_even(x)和A_odd(x)
在 ½n次单位根ν^0, ν^1, …,ν^n/2-1处的值
合的过程我们分两段来讨论
注意到 ν^k=(ω^k)^2=(ω^k+n)^2
以及ω^k+n=-ω^k
我们有
当0≤k A(ω^k)=A_even(ν^k)+ω^kA_odd(ν^k) 在0≤k A(ω^k+n)=A_even(ν^k)-ω^kA_odd(ν^k) 我们可以递归的求解所需的结果 以上的想法可以写成下面的FFT算法 当n=1时 多项式只有常数项 在任何点处的值都是a_0 递归调用FFT算法 求解偶次多项式和奇次多项式 在½n次单位根处的值 然后按照上面所得到的递归表达式 算出原多项式在n次单位根处的值 我们的结论是 FFT算法计算n-1次多项式 在n次单位根处的值 运算时间为O(nlogn) 由上面的分析我们有 T(2n)=2T(n)+O(n)⇒T(n)=O(nlogn) 现在 如果给定多项式的系数形式 我们在O(nlogn)的时间 把它转换为点值形式
-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