叠加学堂superposition

Grover:让答案自己浮起来

Grover 不是更快查表,是把答案的振幅转上来

交互8 分钟第 44 / 80 节更新于 2026-10-18

8 个抽屉,只有一把钥匙。经典办法是一个个拉开,平均 4 次;Grover 算法 说 2 次就够。它不是手快,也不是同时拉开了 8 个——它让「有钥匙」那个抽屉在概率上自己站起来。

平方根,而不是指数

经典无结构搜索的期望查询次数约为 N/2N/2,最坏 NN。Grover 用 O(N)O(\sqrt{N}) 次:一百万项时,经典期望约五十万次,Grover 约一千次。差距很大,但它是平方根,不是指数;N 再大,也只是把两个数字一起拉长。

这也是它最容易被说错的地方:Grover 并没有「同时查完所有条目」。它从头到尾只维护一个 NN 项的叠加,真正发生的事在下一节。

下面的柱高是振幅,标记项是最后那根。拖迭代次数,或直接点「跳到最优步数」。

振幅放大
默认 N = 8。把「迭代 k」从 0 拖到 2,「命中概率」读数从 12.5% 升到约 94.5%,标记 |111⟩ 的柱子明显高过其他项;继续拖到 3、4,它反而缩回去。下面的曲线是命中概率随 k 的周期变化。

两次翻转,把答案抬起来

初始化后,所有振幅都是 1/N1/\sqrt{N}。一步迭代做两件事:神谕 给解的振幅加一个负号,概率不变;随后让所有振幅关于平均值翻转。解的振幅被抬到均值以上,非解被压到以下;重复约 π4N\frac{\pi}{4}\sqrt{N} 次,测到解的概率接近 1。

这就是 振幅放大。它像把一根横杆从中间顶起来:解那头翘上去,其余那头沉下去。比喻失效的地方在于,这不是一次性的抬升,而是旋转;转多了会越过最高点。

步数很关键。少于最优值,抬得不够;多于它,概率反而回落。演示里把迭代拖过最优点,柱子会矮下去。

它也不给你清单。若有 MM 个解,迭代会把它们一起放大,但一次 测量 只坍缩出一个结果。想列全就要重复运行、每次移走已找到的解,代价会吃掉一部分优势;多个解时最优步数也变成 N/M\sqrt{N/M} 量级。

N\sqrt{N} 还是无结构搜索的下界:有证明说,任何量子算法都不能用更少的查询完成同样任务(差常数倍)。所以 Grover 给的是实打实的二次加速,不是万能加速。

迭代次数越多,找到答案的概率越高,所以一直转下去就行。
最优点在 π4N\frac{\pi}{4}\sqrt{N} 附近,转多了会过头,命中概率回落。
概率随迭代周期性起伏,不是单调函数;真实设备上还要考虑噪声,步数选错比不选更糟。
一句话结论

Grover 把答案的振幅转上来,而不是把表查得更快:一步翻符号,一步绕均值翻转,N\sqrt{N} 次后测量。它给的是二次加速,也只给一个解;这两点一起记住,才算真的理解它。

本节自测 · 3 题
未作答
01Grover 的一步迭代里,神谕对标记项做了什么?
02在 N=8 的搜索里,最优点约在 2 次迭代。如果继续迭代到 4 次、6 次,命中概率会怎样?
03如果 N 个条目里有 4 个解,Grover 跑一次能把这 4 个都列出来吗?