量子计算 · 学习站
kp-018 · 更新于 2026-10-02

Grover 算法与振幅放大

04-核心算法 核心 约 30 分钟 #Grover#振幅放大#搜索#最优性

一句话定义

Grover 算法在 N 个无结构候选中以 O(√N) 次预言机调用找到目标项,机制是振幅放大——每轮迭代把目标态的振幅向 1 推近固定角度,且 √N 已被证明是该问题的量子最优复杂度。

为什么重要

如果说 Shor 展示了"结构性加速",Grover 展示的是"几乎万能的温和加速"——任何可写成"验证容易、寻找困难"的问题(SAT、密码碰撞、数据库查询)都适用。它是 kp-003 干涉原理最完整的演出:预言机翻相位、扩散算子做镜像,两步构成的旋转以几何级数调度振幅。同时它也是误读重灾区("量子让搜索更快所以要换数据库"),本节末尾给出实务折扣。

前置知识

kp-003(干涉与振幅)、kp-010(H 门)、kp-011(受控操作)。需要高中三角函数(sin、角度累加)——本节的几何视角让推导只需一页。

核心概念

  • 预言机 O:翻转目标态的相位 O|w⟩ = −|w⟩,其他态不变(验证"是不是解"的黑箱)。
  • 扩散算子 D:关于"平均振幅"做反射——D = H⊗n(2|s⟩⟨s| − I)H⊗n,其中 |s⟩ 是均匀叠加。
  • 几何图像:初始态 |s⟩ 可写成 sin θ|w⟩ + cos θ|w⊥⟩(θ = arcsin(1/√N));每轮 G = D·O 把态空间旋转 2θ,向 |w⟩ 精确逼近。
  • 最优迭代数:k ≈ π/(4θ) ≈ (π/4)√N;超过后振幅"转过头",成功概率开始回落。
  • 振幅放大:Grover 的推广框架——任意初态、任意翻转子空间的迭代放大。

直观类比

在一间全黑的屋子里找一枚特定的硬币:经典做法是一次拿一个(N 次);Grover 的做法是让"所有硬币同时发出声波",每轮把目标硬币的音量调高一格、其他全体调低一格——几十轮后目标独占声场,一"听"即中。调音的手法就是两次反射(翻相位 + 翻平均),几何上每次把目标方向多转 2θ。

原理与机制

可复现的几何推导。均匀叠加 |s⟩ 与目标 |w⟩ 的夹角满足 sin θ = ⟨w|s⟩ = 1/√N。预言机是关于 |w⊥⟩ 的反射,扩散算子是关于 |s⟩ 的反射;两次反射复合为一个旋转,旋转角 2θ,方向朝 |w⟩。k 轮后态与 |w⊥⟩ 夹角 (2k+1)θ,成功概率 P(k) = sin²((2k+1)θ)。取 k ≈ π/(4θ) − 1/2 时 P 接近 1;θ ≈ 1/√N,故 k = O(√N)。例:N=4 时 θ = arcsin(1/2) = π/6,k=1 一轮即达 sin²(π/2) = 1——完美命中,这就是"4 项搜索一次迭代"的经典教学例。最优性(Bennett 等 1997):黑箱查询模型下任何量子算法找唯一目标至少需要 Ω(√N) 次调用——Grover 达到了下界,无进一步改进空间。多目标(t 个解)时迭代数变为 (π/4)√(N/t);未知目标数则需带计数估计的自适应版本。

公式或模型

每轮旋转:G|s⟩: 角度 θ → θ + 2θ;成功概率 P(k) = sin²((2k+1)θ),θ = arcsin(1/√N)。
迭代数:k* = round( π/(4θ) − 1/2 ) ≈ π4√N。
复杂度对比:经典期望 N/2 次;量子 (π/4)√N 次——平方加速,非指数。

图示

|w⟩ 目标 |s⟩ 初态 θ +2θ(每轮) 迭代 k ≈ (π/4)√N 轮后态贴近 |w⟩;再转就开始"过冲",概率回落

实例或案例

纸面复算 N=4 的完美一轮:|s⟩ = ½(|00⟩+|01⟩+|10⟩+|11⟩),设目标 |11⟩。预言机翻相位后均匀态中 |11⟩ 变 −½;平均振幅 = (½+½−½−½)/4 = 0,扩散算子把每个振幅映为其负值——结果恰为 |11⟩,P=1。kp-030 平台上可对 3 比特、多目标版本实测迭代数-成功率曲线,验证"过冲"现象(超过最优轮数成功率掉头向下)。

与其他知识点的关系

kp-003 的干涉总纲在此完整兑现(翻相位=写入结构,扩散=组织相长);kp-017 与 Grover 构成"指数 vs 多项式加速"的对照样本;kp-029 用 Grover 折半评估对称密码安全裕度;kp-033 借它说明"平方加速 ≠ 实务颠覆"。

常见误区

  • "Grover 让数据库产品该换量子了":真实数据库有索引,查询近 O(1);且把 N 条数据载入量子态本身要 O(N) 操作,加速被输入瓶颈吃掉——适用场景是无索引的黑箱验证问题。
  • "迭代越多越好":旋转会过冲,超过 k* 成功率回落;目标数未知时盲目迭代反而降低成功率。
  • "√N 是指数加速":N = 2ⁿ 时 √N = 2n/2,只是把 128 位安全降到 64 位水平——对称密码加倍密钥即可对冲。

自测题

  1. N=16、单目标,最优迭代数与最终成功概率量级?
  2. 答案要点:θ=arcsin(1/4),k*≈round(π/(4θ)−1/2)=3;P(3)=sin²(7θ)≈0.96。

  3. 为什么扩散算子写成 H⊗n(2|s⟩⟨s|−I)H⊗n?
  4. 答案要点:内层 (2|0⟩⟨0|−I) 是关于 |0⟩ 的反射,经 H 换基后即关于均匀态 |s⟩ 的反射——两次反射复合成旋转。

  5. 若有 t 个等价目标,迭代数如何变化?
  6. 答案要点:θ = arcsin(√(t/N)),k* ≈ (π/4)√(N/t)——目标越多,所需轮数越少。

延伸阅读

L. K. Grover (1996) 原始论文;C. H. Bennett 等 (1997) SIAM J. Comput.(最优性证明,只需读定理陈述)。