量子傅里叶变换
定义
量子傅里叶变换(Quantum Fourier Transform, QFT)是量子因子分解和众多其他量子算法的关键部分,可以简单的认为它是离散傅里叶变换(Discrete Fourier Transform, DFT)在量子领域的形式。
令
傅里叶变换的矩阵表示为:
其中,
从基态的视角来看,QFT 是将计算基映射为频率基的一种操作。从定义上不明显,但是 QFT 也是一个酉变换,因此可以使用量子电路来实现。
电路与实现
由 QFT 的定义可以得知,QFT 将状态
我们可以用二进制表示法来表示 j,则有
该表示可以转化为量子电路如下:

用 IsQ 的代码实现如下:
c
import std;
procedure R(int k, qbit q) {
double phase = pi / 2 ** (k - 1);
ctrl GPhase(phase, q);
} deriving gate
procedure qft(qbit q[]) {
int len = q.length;
for i in len-1:-1:-1 {
H(q[i]);
for j in 0:i {
ctrl R(i-j+1, q[j], q[i]);
}
}
for i in 0:len/2 {
SWAP(q[i], q[len-i-1]);
}
}
procedure qft_inv(qbit q[]) {
int len = q.length;
for i in 0:len/2 {
SWAP(q[i], q[len-i-1]);
}
for i in 0:len {
for j in 0:i {
ctrl inv R(i-j+1, q[j], q[i]);
}
H(q[i]);
}
}
举一个简单的例子,当 n=3 时,QFT 的量子电路如下:
