Deutsch–Jozsa 赢在一个人工问题上。这一节解决一个人人都懂的问题——大海捞针,
而且这次的对手是货真价实的经典下界。
问题开门:N 个抽屉,一把钥匙
N=2n 个抽屉,编号 0 到 N−1,恰有一个(记 w)藏着钥匙。
你有一个黑盒 f:给它编号 x,它答 f(x)=1 当且仅当 x=w。
经典策略只有翻抽屉:平均 N/2 次,最坏 N 次,没有任何捷径——
f 毫无结构可利用(这不是排序好的电话簿,是乱序的)。
量子版 oracle 照搬上一节的相位反冲(辅助位 ∣−⟩ 从此隐去不写):
O∣x⟩=(−1)f(x)∣x⟩⟺O=I−2∣w⟩⟨w∣(9.8.1)
它只干一件事:给目标分支翻个负号。
一次干涉为什么不够了
试试照抄 DJ 的三板斧:H 排制备均匀叠加
∣s⟩=N1∑x∣x⟩,调一次 oracle,再干涉。
麻烦在于:oracle 只把 2n 个振幅中的一个翻了号,
这点扰动对整体分布的影响是 O(1/N) 量级——一次干涉洗不出来,
直接测量命中概率仍约 1/N。DJ 的问题里「所有函数值合谋」形成鲜明的全局信号;
搜索问题的信号却细如发丝。出路:别指望一击必中,让小优势滚雪球。
每一轮把指向目标的振幅拧大一点点,拧 N 轮。
这台「振幅放大器」由两面镜子构成。
几何图像:两面镜子 = 一个旋转
全部动作发生在一个二维平面里——由目标态 ∣w⟩ 和均匀叠加 ∣s⟩
张成的平面。取平面内与 ∣w⟩ 垂直的单位矢量
∣r⟩=N−11∑x=w∣x⟩(「其余抽屉的均匀叠加」),则
∣s⟩=cosθ∣r⟩+sinθ∣w⟩,sinθ=⟨w∣s⟩=N1(9.8.2)
初态 ∣s⟩ 距「地面」∣r⟩ 只有一个小角 θ≈1/N。Grover 迭代是两步:
- oracle O:翻转 ∣w⟩ 分量的符号 = 关于 ∣r⟩ 的反射(镜子一);
- 扩散算子 D=2∣s⟩⟨s∣−I:关于 ∣s⟩ 的反射(镜子二)。
两次反射合成一次 2θ 旋转基础~7 min展开
第 1 步:确认 O 是反射。 平面内任意态 ∣ψ⟩=cosϕ∣r⟩+sinϕ∣w⟩:
O∣ψ⟩=cosϕ∣r⟩−sinϕ∣w⟩(9.8.3)角度 ϕ↦−ϕ:正是以 ∣r⟩ 为镜面的反射。
第 2 步:确认 D 是反射。 D=2∣s⟩⟨s∣−I 满足
D∣s⟩=∣s⟩(镜面上的矢量不动)、对垂直于 ∣s⟩ 的分量取反——
以 ∣s⟩(角度 θ)为镜面的反射:ϕ↦2θ−ϕ。
第 3 步:合成。 先 O 后 D:
ϕ O −ϕ D 2θ+ϕ(9.8.4)两次反射 = 一次旋转,转角 2θ,方向朝 ∣w⟩。 这是平面几何的老定理
(两镜夹角 θ,反射两次即旋转 2θ),在 Hilbert 空间原样上演。
第 4 步:迭代 k 轮。 初态角 θ,每轮加 2θ:
ϕk=(2k+1)θ,P命中(k)=sin2[(2k+1)θ](9.8.5)要 ϕk≈π/2(正对目标),解出
kopt≈2θπ/2−θ≈4πN(9.8.6)(末式用了大 N 时 θ≈sinθ=1/N。)
O(N) 次查询、每轮只多两排 H 和一点相位操作——平方加速到手。
手算 N = 4:一轮迭代,百发百中
N=4(两个 qubit),设目标 w=10。此时 sinθ=21,θ=30∘——
角度不「小」,正好让我们整轮手算。
第 0 步: ∣s⟩=21(∣00⟩+∣01⟩+∣10⟩+∣11⟩),
四个振幅都是 0.5。
第 1 步(oracle): 目标变号:
(21, 21, −21, 21)(9.8.8)
第 2 步(关于平均值翻转): 均值 aˉ=40.5+0.5−0.5+0.5=41。
每个振幅 ↦2×41−ax=21−ax:
(0, 0, 1, 0)(9.8.9)
态精确变为 ∣10⟩。测量:100% 命中,一次查询。
经典平均要翻 2.25 个抽屉(最坏 3 个)才能确定。
几何核对:ϕ1=(2×1+1)×30∘=90∘,正对目标,分毫不差。
◑物理图像
过犹不及。 旋转不会自动刹车:转过 90∘ 后继续转,
命中概率掉头下降。N=4 若做第二轮,ϕ2=150∘,
P=sin2150∘=25%——反而退回瞎猜水平。
Grover 算法必须数着圈数停,这与经典算法「多算只会更保险」的直觉截然相反。
好在 P(k)=sin2[(2k+1)θ] 是已知的正弦曲线,
取 k=⌊4πN⌋ 时失败概率至多 O(1/N),一两次重跑可忽略。
∑数学形式
P(k)=sin2[(2k+1)θ],sinθ=N1(9.8.10)N=4:P(0)=0.25→P(1)=1→P(2)=0.25。
N=106:kopt=⌊4π×103⌋=785,
P≈1−10−6。
目标有 M 个时 sinθ=M/N,
kopt≈4πN/M——
针越多,捞得越快。
平方就是极限:BBBV 下界
会不会有更聪明的量子算法做到 logN?不会。
Bennett–Bernstein–Brassard–Vazirani 定理:任何量子算法解无结构搜索,
至少需要 Ω(N) 次 oracle 查询。思路值得一记:
每次查询对态的扰动至多 O(1/N)(只动一个分支的符号),
而要把「目标是 w1」和「目标是 w2」的末态拉开到可区分的距离,
累计扰动必须 O(1)——除法即得 Ω(N)。
Grover 恰好贴着下界飞行,连常数 π/4 都是最优的。
1.Grover 迭代的两个步骤在几何上分别是什么?
4.关于 Grover 算法的适用范围,正确的是?(多选)
多选题
接下来
平方加速已经贴到黑盒搜索的天花板,想要指数加速,
就必须离开黑盒、去开采问题的内部结构。
有一个问题的结构恰好是量子力学最擅长的——周期性:
大数因数分解可以归约成「找一个函数的周期」,
而找周期正是干涉的看家本领。下一节:Shor 算法,
以及它悬在 RSA 头顶的那把剑。