量子力学助力大海捞针

本文基于 Lov K. Grover 1997 年论文《Quantum Mechanics Helps in Searching for a Needle in a Haystack》整理。该文发表于 Physical Review Letters 第 79 卷第 2 期(1997 年 7 月 14 日),是量子搜索算法的奠基性文献。原稿为四页的 Letters 短文,语言精炼但部分推导较为紧凑。本文在保持原稿核心思想的基础上,对关键步骤进行了详细展开和中文讲解,力求让读者清晰理解量子搜索算法的完整逻辑。

1. 引言:从 Shor 算法到搜索问题

1994 年,Peter Shor 发现了指数级快于任何已知经典算法的量子大数分解算法,震惊了计算理论界。本文则展示了一个仅需多项式加速但意义同样深远的量子算法——量子搜索算法。

搜索问题的形式化描述如下:

  • 有一个包含 (N) 个元素的无序数据库
  • 其中恰好有一个元素满足给定条件 (C(S) = 1)
  • 对于任意元素,可以在一步之内判断它是否满足条件
  • 但数据库上不存在任何排序可以辅助查找

经典算法的极限:最经典高效的策略是逐个检查元素。若某个元素不满足条件,记录下来不再重复检查。该算法平均需要检查 (0.5N) 个元素才能找到目标。

量子算法的优势:利用量子力学系统的叠加态特性,量子搜索算法仅需 (O(\sqrt{N})) 步即可找到目标元素,实现了二次加速。

1.1 与 Shor 算法的对比

特性 Shor 算法 Grover 算法
加速类型 指数级加速 多项式(二次)加速
经典复杂度 亚指数(准多项式) (O(N))
量子复杂度 多项式 (O(\sqrt{N}))
理论基础 大数分解的困难性 无序搜索的通用性
应用范围 密码学 广泛的搜索问题

Grover 算法的深远意义在于:它不依赖于因子分解问题的未证困难性假设,而是对大量搜索应用都具有普适的加速效果。

2. 量子计算的基本操作

在量子计算机中,逻辑线路和时间步本质上是经典的,只有存储变量的内存比特处于量子叠加态。量子力学中可以在受控方式下执行的操作是幺正操作——每步作用于少量比特的幺正矩阵。

量子搜索算法需要三个基本幺正操作。

2.1 叠加态的创建

定义单比特操作矩阵:

$$
M = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \ 1 & -1 \end{pmatrix}.
$$

这就是单比特 Walsh-Hadamard 门。其作用为:

  • 将比特 (|0\rangle) 变换为叠加态 (\frac{1}{\sqrt{2}}(|0\rangle + |1\rangle))
  • 将比特 (|1\rangle) 变换为叠加态 (\frac{1}{\sqrt{2}}(|0\rangle - |1\rangle))

关键区别在于:状态 (|1\rangle) 变换后,状态 (|1\rangle) 的振幅相位取反。这种相位变化在经典概率算法中没有对应物——它源于量子力学中振幅一般为复数这一事实。

对于一个由 (n) 个比特描述的系统(具有 (N = 2^n) 个可能状态),对每个比特独立地依次执行变换 (M)。若初始状态为所有 (n) 个比特都处于 (|0\rangle),则变换后系统在 (2^n) 个状态上的振幅完全相同,均为 (2^{-n/2} = 1/\sqrt{N})。

这就创建了一个均匀叠加态:

$$
|\psi\rangle = \frac{1}{\sqrt{N}} \sum_{x=0}^{N-1} |x\rangle.
$$

2.2 Walsh-Hadamard 变换

更一般地,考虑初始状态为某个由 (n) 位二进制串 (x) 描述的状态。对每个比特执行变换 (M) 后,结果是所有可能的 (n) 位二进制串 (y) 的叠加,每个状态的振幅大小为 (2^{-n/2}),符号为 (+1) 或 (-1)。

符号的确定规则:从矩阵 (M) 的定义可知,当原来为 (1) 的比特在变换后仍为 (1) 时,振幅的相位取反。因此,若 (x) 为初始状态的 (n) 位二进制串,(y) 为结果状态的 (n) 位二进制串,则 (y) 的振幅符号由 (x) 和 (y) 的逐位点积的奇偶性决定:

$$
\text{sign}(y) = (-1)^{x \cdot y},
$$

其中 (x \cdot y = \sum_{k=1}^n x_k y_k \pmod{2}) 为二进制串的逐位点积。

这一变换即为 Walsh-Hadamard 变换 (W),其矩阵元为

$$
W_{ij} = 2^{-n/2} (-1)^{i \cdot j}.
$$

Walsh-Hadamard 变换(或密切相关的傅里叶变换)是使量子算法比经典算法更强大的核心操作之一,构成了几乎所有重要量子算法的基础。

2.3 选择性相位旋转

第三个需要的操作是选择性旋转某些状态的振幅相位。对于两态系统,该变换的形式为

$$
\begin{pmatrix} e^{i\phi_1} & 0 \ 0 & e^{i\phi_2} \end{pmatrix},
$$

其中 (\phi_1, \phi_2) 为任意实数。注意,与 Walsh-Hadamard 变换不同,此操作不改变各状态的概率(振幅的绝对值平方保持不变),仅改变相位。

在搜索算法中,最常用的特殊情形是:将满足条件的状态相位旋转 (\pi)(即乘以 (-1)),不满足条件的状态保持不变。

3. 搜索算法

3.1 问题的抽象描述

设系统有 (N = 2^n) 个状态,标记为 (S_1, S_2, \ldots, S_N)。这 (2^n) 个状态用 (n) 位二进制串表示。设存在唯一状态 (S_y) 满足条件 (C(S_y) = 1),而对其余所有状态 (S),(C(S) = 0)。

目标:识别状态 (S_y)。

这可以代表数据库搜索问题(函数 (C(S)) 基于状态 (S) 对应的内存内容),也可以代表某个由计算机评估的条件函数问题。

3.2 算法步骤

算法分为三个阶段:

步骤 (i)——初始化:将系统初始化为均匀叠加态

$$
|\psi_0\rangle = \left(\frac{1}{\sqrt{N}}, \frac{1}{\sqrt{N}}, \ldots, \frac{1}{\sqrt{N}}\right),
$$

即每个状态的振幅相同。这可以在 (O(\log N)) 步内完成(对每个比特施加 (M) 门)。

步骤 (ii)——Grover 迭代:重复以下幺正操作 (O(\sqrt{N})) 次:

  • (ii)-(a) 相位旋转(Oracle):

    • 若 (C(S) = 1),将该状态的相位旋转 (\pi)(乘以 (-1))
    • 若 (C(S) = 0),保持不变
  • (ii)-(b) 扩散变换(Diffusion):施加扩散变换 (D),其矩阵元定义为

$$
D_{ij} = \frac{2}{N} \quad (i \neq j), \qquad D_{ii} = -1 + \frac{2}{N}.
$$

步骤 (iii)——测量:测量最终状态。该状态以至少 (0.5) 的概率为 (S_y)。

注意:步骤 (ii)-(a) 中的相位旋转不涉及经典测量。它需要量子系统的一部分"感知"当前状态,然后决定是否旋转相位,且操作后不留下任何关于系统状态的痕迹,以确保通向同一终态的路径不可区分、能够发生干涉。

4. 收敛性证明:关于平均值的反转

算法的核心在于步骤 (ii) 的循环。每次迭代使目标状态的振幅增加 (O(1/\sqrt{N})),因此经过 (O(\sqrt{N})) 次迭代后,目标状态的振幅和概率达到 (O(1))。

4.1 扩散变换的几何解释

关键洞察:扩散变换 (D) 可以解释为关于平均值的反转(inversion about average)操作。

设 (\bar{a}) 为所有状态振幅的平均值:

$$
\bar{a} = \frac{1}{N} \sum_{i=1}^{N} a_i.
$$

(D) 的作用是:每个状态的振幅增加(或减少),使得操作后它关于平均值对称——即操作后它在平均值下方(上方)的距离等于操作前它在平均值上方(下方)的距离。

用数学语言表述:

$$
(D\boldsymbol{y})_i = 2\bar{a} - y_i = \bar{a} + (\bar{a} - y_i).
$$

4.2 扩散变换的代数验证

将 (D) 分解为

$$
D = 2P - I,
$$

其中 (I) 为单位矩阵,(P) 为投影矩阵,(P_{ij} = 1/N)(对所有 (i, j))。

验证 (P) 的性质:

  1. 幂等性:(P^2 = P)。因为 ((P^2){ij} = \sum_k P{ik} P_{kj} = \sum_k \frac{1}{N} \cdot \frac{1}{N} = N \cdot \frac{1}{N^2} = \frac{1}{N} = P_{ij})。

  2. 平均作用:(P) 作用于任意向量 (\boldsymbol{y}),所得向量的每个分量都等于 (\boldsymbol{y}) 各分量的平均值。因为 ((P\boldsymbol{y})_i = \sum_j \frac{1}{N} y_j = \bar{a})。

因此,

$$
D\boldsymbol{y} = (2P - I)\boldsymbol{y} = 2P\boldsymbol{y} - \boldsymbol{y} = 2\bar{a}\boldsymbol{1} - \boldsymbol{y},
$$

即第 (i) 个分量为 (2\bar{a} - y_i),这正是关于平均值的反转。

4.3 迭代过程的几何图像

考虑如下图所示的几何过程:

初始状态:均匀叠加态,所有 (N) 个分量的振幅均为 (1/\sqrt{N})。

第一次相位旋转后:目标状态 (S_y) 的振幅变为 (-1/\sqrt{N}),其余 (N-1) 个状态的振幅仍为 (1/\sqrt{N})。

关于平均值的反转:

  • 所有分量的平均值约为 (\bar{a} \approx \frac{1}{\sqrt{N}})(因为 (N-1) 个正分量远多于 1 个负分量)
  • 目标状态的振幅为负,远低于平均值,反转后变为远高于平均值:从 (-1/\sqrt{N}) 增加到约 (3/\sqrt{N})
  • 其余 (N-1) 个分量接近平均值,反转后变化微小

每次迭代的净效果:

  1. 先将目标状态的相位取反(关于水平轴翻转)
  2. 再关于平均值反转(关于均值线翻转)

这两步组合的几何效果是:目标状态的振幅每次增加约 (2/\sqrt{N})。

4.4 收敛速度

设经过 (k) 次迭代后,目标状态的振幅为 (\sin\theta_k),其中 (\theta_0 \approx 1/\sqrt{N})。每次迭代使角度增加约 (2/\sqrt{N}):

$$
\theta_k \approx (2k+1) \frac{1}{\sqrt{N}}.
$$

当 (\theta_k \approx \pi/4) 时,目标状态的概率 (\sin^2\theta_k \approx 1/2)。此时

$$
k \approx \frac{\pi}{8} \sqrt{N} = O(\sqrt{N}).
$$

因此,经过 (O(\sqrt{N})) 次迭代后,测量系统将以大于 (0.5) 的概率得到目标状态 (S_y)。

数值示例:若数据库有 (N = 10^6) 个元素,经典算法平均需要 (5 \times 10^5) 次查询,而 Grover 算法仅需约 (\frac{\pi}{8} \times 10^3 \approx 393) 次迭代,加速比超过 1000 倍。

5. 扩散变换的线路实现

5.1 局部性问题

扩散变换 (D) 的定义中,每个状态到所有其他 (N) 个状态都有非零跃迁,因此 (D) 不是局部变换矩阵(local transition matrix)。然而,利用 Walsh-Hadamard 变换,(D) 可以分解为三个局部幺正变换的乘积:

$$
D = WRW,
$$

其中 (W) 为 Walsh-Hadamard 变换矩阵,(R) 为条件相位旋转矩阵。

5.2 相位旋转矩阵 (R)

(R) 的定义为:

$$
R_{ii} = \begin{cases} 1 & \text{if } i = 0, \ -1 & \text{if } i \neq 0, \end{cases} \qquad R_{ij} = 0 \quad (i \neq j).
$$

即 (R) 将基态 (|0\rangle^{\otimes n}) 的相位保持不变,其余所有基态的相位旋转 (\pi)。这可以写为

$$
R = 2|0\rangle\langle 0| - I.
$$

显然 (R) 是对角矩阵,因此是局部的。

5.3 分解的验证

将 (R) 分解为 (R = R_1 + R_2),其中 (R_1 = -I),(R_2) 仅在 ((0,0)) 位置为 (2),其余元素为 (0)。

计算 (WR_1W):由于 (WW = I)(Walsh-Hadamard 变换是对合的),

$$
WR_1W = W(-I)W = -WW = -I.
$$

计算 (WR_2W):

$$
(WR_2W){ad} = \sum{b,c} W_{ab} R_{2,bc} W_{cd} = W_{a0} \cdot 2 \cdot W_{0d}.
$$

由于 (W_{a0} = 2^{-n/2}(-1)^{a \cdot 0} = 2^{-n/2}),(W_{0d} = 2^{-n/2}),

$$
(WR_2W)_{ad} = 2 \cdot 2^{-n/2} \cdot 2^{-n/2} = \frac{2}{N}.
$$

合并:

$$
D = WRW = WR_1W + WR_2W = -I + \frac{2}{N} J,
$$

其中 (J) 为全 1 矩阵。这恰好是步骤 (ii)-(b) 中定义的扩散变换 (D)。

5.4 实现效率

每个 (W) 和 (R) 都是局部变换矩阵:

  • (R) 是对角矩阵,显然是局部的
  • (W) 可以分解为对每个比特独立的操作(每个比特施加一个 (M) 门),因此也是局部的

因此,(D = WRW) 的实现在物理上是可行的,所需的操作仅为 Walsh-Hadamard 变换和条件相位旋转——这两者都相对容易实现。

6. 算法的意义与影响

6.1 实现的简洁性

与许多其他已知的量子算法相比,Grover 搜索算法可能更易于实现,原因在于:

  1. 所需操作仅为 Walsh-Hadamard 变换和条件相位旋转
  2. 两者都相对容易实现
  3. 基于 Walsh-Hadamard 变换的量子算法(如本文搜索算法)比基于"大规模傅里叶变换"的算法(如 Shor 算法)实现起来更简单

6.2 广泛的应用范围

Grover 算法的适用性远超简单的数据库搜索。任何可以表述为"在无序空间中搜索满足特定条件的元素"的问题都可以受益:

  • 数据库查询:在无序数据中查找特定记录
  • 可满足性问题(SAT):搜索满足布尔公式的赋值
  • 优化问题:寻找使目标函数最小化的解
  • 密码学攻击:暴力搜索密钥空间

6.3 最优性

1997 年,Bennett, Bernstein, Brassard 和 Vazirani 证明了 Grover 算法的最优性:任何量子搜索算法对无序搜索问题至少需要 (\Omega(\sqrt{N})) 次查询。因此,Grover 算法在渐进意义上是最优的量子搜索算法。

7. 参考文献

[1] Grover L K. Quantum Mechanics Helps in Searching for a Needle in a Haystack[J]. Physical Review Letters, 1997, 79(2): 325–328.

[2] Shor P W. Algorithms for quantum computation: discrete logarithms and factoring[C]// Proceedings of FOCS, 1994: 124–134.

[3] Grover L K. A fast quantum mechanical algorithm for database search[C]// Proceedings of STOC, 1996: 212–218.

[4] Deutsch D, Jozsa R. Rapid solution of problems by quantum computation[J]. Proceedings of the Royal Society A, 1992, 400: 73–90.

[5] Boyer M, Brassard G, Hoyer P, et al. Tight bounds on quantum searching[R]. quant-ph/9605034, 1996.

[6] Bennett C H, Bernstein E, Brassard G, et al. Strengths and weaknesses of quantum computing[J]. SIAM Journal on Computing, 1997, 26(5): 1510–1523.