跳到正文
EN

9.8

Grover 搜索算法

两面镜子夹出一个旋转:oracle 反射加平均值反射,每轮把态转向目标 2θ,约 (π/4)√N 轮命中——平方加速,且已被证明是极限。

建议先掌握

学完本节你应该能

  • 用二维平面几何解释 Grover 迭代:两次反射合成一次 2θ 旋转
  • 手算 N = 4 的完整例子,验证一次迭代 100% 命中
  • 推出最优迭代次数 ≈ (π/4)√N,并解释「过犹不及」
  • 陈述 BBBV 下界:√N 是黑盒搜索的极限,不是工程不到位

Deutsch–Jozsa 赢在一个人工问题上。这一节解决一个人人都懂的问题——大海捞针, 而且这次的对手是货真价实的经典下界。

问题开门:N 个抽屉,一把钥匙

N=2nN=2^n 个抽屉,编号 00N1N-1,恰有一个(记 ww)藏着钥匙。 你有一个黑盒 ff:给它编号 xx,它答 f(x)=1f(x)=1 当且仅当 x=wx=w。 经典策略只有翻抽屉:平均 N/2N/2 次,最坏 NN 次,没有任何捷径—— ff 毫无结构可利用(这不是排序好的电话簿,是乱序的)。

量子版 oracle 照搬上一节的相位反冲(辅助位 \ket{-} 从此隐去不写):

Ox=(1)f(x)xO=I2ww(9.8.1)O\ket{x}=(-1)^{f(x)}\ket{x} \qquad\Longleftrightarrow\qquad O=I-2\ket{w}\bra{w}\tag{9.8.1}

它只干一件事:给目标分支翻个负号

一次干涉为什么不够了

试试照抄 DJ 的三板斧:HH 排制备均匀叠加 s=1Nxx\ket{s}=\frac{1}{\sqrt N}\sum_x\ket{x},调一次 oracle,再干涉。 麻烦在于:oracle 只把 2n2^n 个振幅中的一个翻了号, 这点扰动对整体分布的影响是 O(1/N)O(1/\sqrt N) 量级——一次干涉洗不出来, 直接测量命中概率仍约 1/N1/N。DJ 的问题里「所有函数值合谋」形成鲜明的全局信号; 搜索问题的信号却细如发丝。出路:别指望一击必中,让小优势滚雪球。 每一轮把指向目标的振幅拧大一点点,拧 N\sqrt N 轮。 这台「振幅放大器」由两面镜子构成。

几何图像:两面镜子 = 一个旋转

全部动作发生在一个二维平面里——由目标态 w\ket{w} 和均匀叠加 s\ket{s} 张成的平面。取平面内与 w\ket{w} 垂直的单位矢量 r=1N1xwx\ket{r}=\frac{1}{\sqrt{N-1}}\sum_{x\ne w}\ket{x}(「其余抽屉的均匀叠加」),则

s=cosθr+sinθw,sinθ=w|s=1N(9.8.2)\ket{s}=\cos\theta\,\ket{r}+\sin\theta\,\ket{w}, \qquad \sin\theta=\braket{w}{s}=\frac{1}{\sqrt N}\tag{9.8.2}

初态 s\ket{s} 距「地面」r\ket{r} 只有一个小角 θ1/N\theta\approx1/\sqrt N。Grover 迭代是两步:

  1. oracle OO:翻转 w\ket{w} 分量的符号 = 关于 r\ket{r} 的反射(镜子一);
  2. 扩散算子 D=2ssID=2\ket{s}\bra{s}-I关于 s\ket{s} 的反射(镜子二)。

手算 N = 4:一轮迭代,百发百中

N=4N=4(两个 qubit),设目标 w=10w=10。此时 sinθ=12\sin\theta=\tfrac12θ=30\theta=30^\circ—— 角度不「小」,正好让我们整轮手算。

第 0 步: s=12(00+01+10+11)\ket{s}=\tfrac12(\ket{00}+\ket{01}+\ket{10}+\ket{11}), 四个振幅都是 0.50.5

第 1 步(oracle): 目标变号:

(12, 12, 12, 12)(9.8.8)\big(\tfrac12,\ \tfrac12,\ -\tfrac12,\ \tfrac12\big)\tag{9.8.8}

第 2 步(关于平均值翻转): 均值 aˉ=0.5+0.50.5+0.54=14\bar a=\frac{0.5+0.5-0.5+0.5}{4}=\tfrac14。 每个振幅 2×14ax=12ax\mapsto 2\times\tfrac14-a_x=\tfrac12-a_x

(0, 0, 1, 0)(9.8.9)\big(0,\ 0,\ 1,\ 0\big)\tag{9.8.9}

态精确变为 10\ket{10}。测量:100% 命中,一次查询。 经典平均要翻 2.252.25 个抽屉(最坏 3 个)才能确定。 几何核对:ϕ1=(2×1+1)×30=90\phi_1=(2\times1+1)\times30^\circ=90^\circ,正对目标,分毫不差。

平方就是极限:BBBV 下界

会不会有更聪明的量子算法做到 logN\log N不会。 Bennett–Bernstein–Brassard–Vazirani 定理:任何量子算法解无结构搜索, 至少需要 Ω(N)\Omega(\sqrt N) 次 oracle 查询。思路值得一记: 每次查询对态的扰动至多 O(1/N)O(1/\sqrt N)(只动一个分支的符号), 而要把「目标是 w1w_1」和「目标是 w2w_2」的末态拉开到可区分的距离, 累计扰动必须 O(1)O(1)——除法即得 Ω(N)\Omega(\sqrt N)。 Grover 恰好贴着下界飞行,连常数 π/4\pi/4 都是最优的。

接下来

平方加速已经贴到黑盒搜索的天花板,想要指数加速, 就必须离开黑盒、去开采问题的内部结构。 有一个问题的结构恰好是量子力学最擅长的——周期性: 大数因数分解可以归约成「找一个函数的周期」, 而找周期正是干涉的看家本领。下一节:Shor 算法, 以及它悬在 RSA 头顶的那把剑。

全站第 72 / 106 节 · 用 翻页