外观
Note 2. 量子Fourier变换
约 3656 字大约 12 分钟
本章介绍量子傅里叶变换(Quantum Fourier Transformation, QFT)
基本概念与量子线路实现
我们已经很熟悉连续傅里叶变换,其一种版本可以表述为:
F(y)=∫−∞∞f(x)e2πixydx,f(x)=∫−∞∞F(y)e−2πixydy
离散傅里叶变换只需将上面的积分改为求和。N 个离散数的傅里叶变换可以表述为:
yk=N1j=0∑N−1xje2πiNjk,xj=N1k=0∑N−1yke−2πiNjk
量子傅里叶变换(QFT)的作用对象是基矢,例如在 N 维空间中,基矢 {∣j⟩} 的量子傅里叶变换为:
∣j⟩→N1k=0∑N−1∣k⟩e2πiNjk
这是一个幺正变换。对于任意态的变换为:
j=0∑N−1xj∣j⟩→k=0∑N−1∣k⟩(N1j=0∑N−1xje2πiNjk)=k=0∑N−1yk∣k⟩
即其相当于对系数做了离散傅里叶变换。
接下来,我们假设 N=2n,即研究n个qubits的变换。系统基矢可用一个二级制数 j=j1⋯jn 表示。此时有下面的结论:
∣j1⋯jn⟩QFT2n/21(∣0⟩+e2πi0.jn∣1⟩)(∣0⟩+e2πi0.jn−1jn∣1⟩)⋯(∣0⟩+e2πi0.j1j2⋯jn∣1⟩)
上式称为QFT的乘积表示。直接计算可验证:
∣j1⋯jn⟩QFT2n/21{ki=0,1}∑e2πij(2k1+22k2+⋯+2nkn)∣k1⋯kn⟩=2n/21i=1⨂n(∣0⟩+e2πi2ij∣1⟩)=2n/21(∣0⟩+e2πi0.jn∣1⟩)(∣0⟩+e2πi0.jn−1jn∣1⟩)⋯(∣0⟩+e2πi0.j1j2⋯jn∣1⟩)
接下来,我们自然会考虑如何用量子线路实现QFT。首先的思路是设计线路实现变换:
∣j1⟩→∣0⟩+e2πi0.jn∣1⟩,⋯,∣jn⟩→∣0⟩+e2πi0.j1⋯jn∣1⟩
但这是不行的,因为为了实现 jn 的变换,我们需要使用 ∣j1⟩,但其已经在第一步中变换掉了。因此,我们需要将整个过程反过来:
∣j1⟩→∣0⟩+e2πi0.j1⋯jn∣1⟩,⋯,∣jn⟩→∣0⟩+e2πi0.jn∣1⟩
这样,后面的变换才不会用到前面的状态。最后我们再做交换运算:
∣j1⟩↔∣jn⟩,∣j2⟩↔∣jn−1⟩,⋯
线路的实现需要用到旋转算符 Rk=∣0⟩⟨0∣+exp(2πi/2k)∣1⟩⟨1∣,QFT的实现线路如下图所示:

旋转门的叠加提供了变换的相位。同时,由于QFT变换是幺正的,我们将上面的线路反过来,就能实现逆量子傅里叶变换(Inverse QFT)。
对于经典的快速傅里叶变换(FFT),其计算时间步长为 NlogN=n2n ,而上面的QFT线路的门数量是 O(n2),因此其相对于经典傅里叶变换是有优势的。然而,QFT实际上有一些问题,首先,没有有效的方法制备初始的任意态 ∑j=0N−1xj∣j⟩。其次也没办法提取出变换后状态的系数 yk。也就是说,QFT并不能有效的用于求解离散傅里叶变换,但其在一些其他的问题上是有优势的。接下来就来介绍几个应用QFT线路的问题。
相位估计
相位估计(Quantum Phase Estimation, QPE)要解决的问题是:已知幺正算符 U 的一个本征态 ∣u⟩,满足
U∣u⟩=e2πiφ∣u⟩,φ∈[0,1),
如何从量子线路中读出本征值所携带的相位 φ?这里假设我们能够制备 ∣u⟩,并能执行 Controlled-U2k。前者给出相位所依附的本征态,后者负责将这个不可直接观测的全局相位“踢回”到辅助寄存器上。
1. 相位回踢
先考虑一个控制qubit处于 α∣0⟩+β∣1⟩ 的情形。Controlled-Um 作用在它与本征态 ∣u⟩ 上时,有
==C(Um)(α∣0⟩+β∣1⟩)∣u⟩α∣0⟩∣u⟩+β∣1⟩Um∣u⟩(α∣0⟩+βe2πimφ∣1⟩)∣u⟩.
目标寄存器仍然停留在 ∣u⟩,但相位 e2πimφ 已经出现在控制qubit的相对相位中。相对相位可以通过干涉被测量,这就是后续使用QFT的入口。
2. 线路与状态演化
使用 t 个辅助qubits,并记 Q=2t。初态为 ∣0⟩⊗t∣u⟩。对第一寄存器施加Hadamard门后,得到均匀叠加:
∣0⟩⊗t∣u⟩⟶Q1j=0∑Q−1∣j⟩∣u⟩.
若 j=jt−1⋯j1j0,依次执行由第 k 个qubit控制的 U2k,这些受控幂合起来正好实现 Uj,因此
Q1j=0∑Q−1∣j⟩∣u⟩⟶Q1j=0∑Q−1∣j⟩Uj∣u⟩=Q1j=0∑Q−1e2πijφ∣j⟩∣u⟩.

如果 φ 恰好有 t 位有限二进制展开
φ=0.φ1φ2⋯φt,
那么上式中的第一寄存器就是 ∣Qφ⟩ 的QFT。换句话说,Controlled-U2k 将 2kφ 的小数部分逐位写入了辅助qubits的相位;逆QFT再把这些相位转回计算基中的二进制数。

3. 精确相位与一般相位
对第一寄存器施加逆QFT后,完整状态为
b=0∑Q−1αb∣b⟩∣u⟩,αb=Q1j=0∑Q−1e2πij(φ−b/Q).
当 Qφ 是整数时,有限Fourier求和给出
αb=δb,Qφ,
所以测量必然得到 b=Qφ,从而精确恢复 φ=b/Q。
更一般地,Qφ 通常不是整数。令
δb=φ−Qb,
利用等比数列求和可得
αb=Q(1−e2πiδb)1−e2πiQδb,P(b)=∣αb∣2=Q21sin2(πδb)sin2(πQδb).
这个分布在最接近 Qφ 的整数附近形成尖峰。因此一次测量不会总是返回同一个 b,但 b/Q 会以较高概率给出 φ 的有限精度近似。QPE本质上是概率算法,而不是在任意相位下都能精确输出的算法。
如果希望误差满足
φ−2tb≤2−n,
且成功概率至少为 1−ϵ,一个常用的充分条件是
t=n+⌈log2(2+2ϵ1)⌉.
其中前 n 个qubits负责精度,额外的qubits用于压低失败概率。若将 Controlled-U2k 当作可调用的黑箱,Hadamard门需要 O(t) 个,受控幂需要 O(t) 次,逆QFT需要 O(t2) 个门,因此线路的门复杂度为 O(t2)。若这些受控幂还需进一步分解,其真实成本则取决于具体的 U。
4. 输入不是精确本征态时
本征态似乎是QPE的苛刻前提,但若输入态可以展开为
∣ψ⟩=a∑ca∣ua⟩,U∣ua⟩=e2πiφa∣ua⟩,
线性性保证线路会同时估计所有 φa。测量第一寄存器时,我们以约 ∣ca∣2 的概率得到 φa 的估计,同时第二寄存器投影到对应的 ∣ua⟩。因此,真正必要的条件不是事先知道某个本征态,而是输入态与目标本征态有非零重叠。求阶算法正是利用了这一点。
求阶问题与质因数分解
给定互素的正整数 x 与 N,x 模 N 的阶定义为满足
xr≡1(modN)
的最小正整数 r。数列
1,x,x2,…,xr−1,xr,xr+1,…(modN)
会以 r 为周期循环,求阶问题就是从 x 和 N 中找出这个未知周期。
求阶之所以值得单独研究,是因为Shor分解算法把大整数分解归约到了它。对待分解的奇合数 N,随机选取 x∈{2,…,N−1}:若 gcd(x,N)>1,已经直接找到了因子;否则求出 x 模 N 的阶 r。当 r 为偶数且
xr/2≡−1(modN)
时,由
(xr/2−1)(xr/2+1)≡0(modN)
可知,gcd(xr/2−1,N) 与 gcd(xr/2+1,N) 中至少能给出一个非平凡因子。求最大公约数和检查候选因子都能由经典算法高效完成,量子部分真正承担的任务只有求 r。
1. 一个简单例子
取 x=5,N=21,逐次计算可得
51≡5,52≡4,53≡20,54≡16,55≡17,56≡1(mod21).
此前没有更小的正整数使结果回到 1,因此 5 模 21 的阶为 r=6。直接逐项尝试当然能解这个小例子,但当 N 很大时,这种做法可能需要检查数量随 N 增长的幂次,并不关于输入长度 logN 多项式高效。
2. 把求阶写成本征相位问题
令 L=⌈log2N⌉,在 L 个qubits组成的第二寄存器上定义模乘算符
Ux∣y⟩=∣xymodN⟩,0≤y<N.
由于 gcd(x,N)=1,乘以 x 在模 N 的剩余类上是一一映射,所以 Ux 是一个置换,也就是幺正变换。为了把它定义在整个 2L 维空间中,可以约定当 N≤y<2L 时 Ux∣y⟩=∣y⟩;这部分不会参与算法。
在由 ∣xkmodN⟩ 张成的周期子空间中,定义
∣us⟩=r1k=0∑r−1e−2πisk/r∣xkmodN⟩,s=0,1,…,r−1.
对它作用 Ux,并将指标循环平移一位,有
Ux∣us⟩=r1k=0∑r−1e−2πisk/r∣xk+1modN⟩=e2πis/r∣us⟩.
因此 Ux 的本征相位正是
φs=rs.
只要能够对 Ux 做相位估计,就能得到一个接近 s/r 的有理数。分母中已经出现了我们要找的 r。
3. 不知道 r,如何制备本征态?
这里有一个看起来有点循环的地方:∣us⟩ 的定义依赖 r,但 r 正是未知量。好在这些本征态的均匀叠加非常简单:
r1s=0∑r−1∣us⟩=r1k=0∑r−1(s=0∑r−1e−2πisk/r)∣xkmodN⟩=∣x0modN⟩=∣1⟩.
离散Fourier求和消去了所有 k=0 的项。因此我们不需要知道任何一个 ∣us⟩,只需把第二寄存器初始化为计算基态 ∣1⟩=∣0⋯01⟩。QPE会自动从这个叠加态中随机选出一个本征相位 s/r。
4. 求阶线路的状态演化
第一寄存器使用 t 个qubits,记 Q=2t。Hadamard门后,系统处于
Q1j=0∑Q−1∣j⟩∣1⟩.
接下来执行受控模乘
∣j⟩∣y⟩⟼∣j⟩∣xjymodN⟩.
在线路中,它由 Controlled-Ux2k 组成;各个常数 x2kmodN 可以预先用重复平方计算。利用 ∣1⟩=r−1/2∑s∣us⟩,受控模乘后的状态可以写成
rQ1s=0∑r−1j=0∑Q−1e2πijs/r∣j⟩∣us⟩.
对第一寄存器施加逆QFT并测量,就会随机得到某个 s 对应的相位估计
Qb≈rs.
由于 ∣1⟩ 对每个 ∣us⟩ 的权重相同,在理想情形下不同 s 被选中的概率均为 1/r。注意测量直接给出的只是整数 b,并不会把 r 写在屏幕上;从 b/Q 恢复分母还需要最后一步经典后处理。
5. 用连分数恢复阶
有理逼近定理告诉我们:如果
Qb−rs<2r21,
那么约分后的 s/r 一定出现在 b/Q 的连分数渐近分数中。由于 r<N,通常选择
N2≤Q=2t<2N2,
也就是取大约 t=2L 个辅助qubits。这样QPE提供的精度足以用连分数找到候选分母。
若 gcd(s,r)=1,约分后的分母就是 r;若二者不互素,只能得到 r 的一个因子。因而每次得到候选 r′ 后,都必须经典验证
xr′≡1(modN).
验证失败就重新运行算法;也可以收集多次测量得到的候选分母,再取它们的最小公倍数并继续验证。以 x=5,N=21,r=6 为例,只有 s=1,5 与 6 互素时才能一次从约分分母中直接读出 6,其他结果可能只给出 1,2 或 3。
6. 算法总结
求阶算法可以整理为下面几步:
- 取 L=⌈log2N⌉,选择 t≃2L,制备 ∣0⟩⊗t∣1⟩。
- 对第一寄存器施加Hadamard门,得到 Q=2t 个计算基态的均匀叠加。
- 执行 Controlled-Ux2k,等价于计算 ∣j⟩∣1⟩↦∣j⟩∣xjmodN⟩。
- 对第一寄存器施加逆QFT并测量,得到 b,使 b/Q≈s/r。
- 对 b/Q 做连分数展开,提取分母小于 N 的渐近分数,并用 xr′≡1(modN) 验证候选阶。
- 若候选无效则重复;得到正确的 r 后,将它交回经典的最大公约数步骤完成因数分解。
这里的量子加速并不是因为QFT直接“算出了周期”,而是因为受控模乘把周期编码成了 Ux 的本征相位,QFT再通过干涉把相位集中为可测量的频率峰。模指数运算、QFT和连分数后处理都能在 logN 的多项式时间内完成,这才使求阶算法成为Shor算法中真正关键的量子部分。
更新日志
2026/9/27 10:05
查看所有更新日志
eea03-update 0927 japaneseVocabulary.js于
