这篇文章主要是为了实现量子傅里叶变换(Quantum Fourier Transform, QFT)的programming做准备,对QFT的算法以及它和在传统计算机上运行的FFT进行比较。

1 FFT

FFT快速傅里叶变换是一种快速计算离散傅里叶变换(DFT)以及其逆变换(IDFT)的方法。简单起见,这里我们只对其正变换进行讨论。

1.1 DFT与FFT

  DFT FFT
定义式 快速傅里叶变换(FFT)和量子傅里叶变换(QFT)  
时间复杂度

快速傅里叶变换(FFT)和量子傅里叶变换(QFT)

快速傅里叶变换(FFT)和量子傅里叶变换(QFT)

1.2 FFT原理

FFT能够大幅度对传统的DFT提速的原因在于,利用了傅里叶变换的对称性。

根据上面表格里的DFT定义式,用N+k代替k,我们不难得到:

快速傅里叶变换(FFT)和量子傅里叶变换(QFT)

这说明Xk是每N个loop后一重复的,即:

快速傅里叶变换(FFT)和量子傅里叶变换(QFT)

利用这种对称性,Cooley-turkey算法证明了,我们可以将DFT分为两部分,如下:

快速傅里叶变换(FFT)和量子傅里叶变换(QFT)

同理,上图中的拆分可以继续进行下去(代码体现为一个递归函数),因此我们不难发现最终的算法复杂度降低为了快速傅里叶变换(FFT)和量子傅里叶变换(QFT)

1.3 FFT算法实现

快速傅里叶变换(FFT)和量子傅里叶变换(QFT)

快速傅里叶变换(FFT)和量子傅里叶变换(QFT)

参考文章

1. FFT中文维基百科

2. Understanding the FFT Algorithm

相关文章: