Bernstein-Vazirani 算法(BV 算法)由 Ethan Bernstein 和 Umesh Vazirani 于 1997 年提出,是量子计算中一个简洁而优美的算法。它解决的问题是:给定一个将 比特输入映射为单比特输出的函数 ,已知存在某个隐藏的 比特串 使得 ,如何找出

经典计算机需要至少 次查询,而量子计算机仅需 1 次查询

问题背景:线性函数与隐藏信息

定义比特串的内积:若 ,则

其中 表示按位异或。直观地说,我们把 逐位相”与”,再把所得各比特异或起来,得到单个比特。容易看出该内积对第二个变元是线性的:对任意 与比特 ,有 。这一线性性是下文所有推导的代数基础。

给定一个黑盒(oracle),它承诺存在某个 使得对所有

我们的任务是找出

经典下界:经典算法必须查询 至少 次。 次查询是充分的:每次查询 (其中 是第 位为 1、其余为 0 的单位向量),由内积的线性性恰好得到 次查询即可拼出完整的 。“少于 次必定不够”的严格论证见下文”经典下界的严格论证”一节。

量子上界:BV 算法只需 1 次量子查询即可确定 的全部 位。

算法核心思想

BV 算法的核心技巧分两步:先用 Hadamard 变换把输入寄存器制备成均匀叠加态,让 oracle 通过相位回踢(phase kickback,也称相位编码)把 编码为相位;再用一次 Hadamard 变换让这些相位发生干涉,从干涉结果中读出

我们定义与 对应的酉算子

当辅助比特处于 时,利用 可以算出:

即辅助比特保持不变,而输入寄存器获得了一个依赖于 的相位 。逐项计算的完整过程见下文”相位回踢的完整推导”。这个相位编码了 的全部信息。

算法步骤

电路构造

  1. 初始化两个寄存器: 个输入比特 ,1 个辅助比特

  2. 对辅助比特施加 门,再施加 门,制备 态:

  1. 对输入寄存器的每个比特施加 门:

  1. 施加 oracle (唯一的一次查询):

  1. 对输入寄存器再次施加

  2. 测量输入寄存器,结果即为

理论推导

相位回踢的完整推导

我们将辅助比特制备为 的效果完整算一遍。oracle 作用在计算基态上时按定义翻转辅助比特:

由于 是线性的,我们把它作用到 上,两个分量分别计算:

现在按 的取值分两种情况代入:

  • 时,两个分量分别为 ,于是上式为 ,相位因子为
  • 时,两个分量分别为 ,于是上式为 ,相位因子为

两种情况可以统一写成 时指数为偶数给出 时指数为奇数给出 。再代入承诺条件 ,相位即为 。辅助比特最终与输入寄存器解耦,可以忽略。

Hadamard 变换提取 :双重求和算到底

第 5 步要对态 施加 。整个推导只用两件事实:单比特恒等式 ,以及 的线性性。把它们合起来就得到 Hadamard 变换的通用公式:

(验证:右端对每个分量比特恰好贡献 因子当且仅当 ,展开张量积即得。)

,则第 5 步的态为

交换双重求和的顺序,把对 的求和放到内层:

接下来合并指数。由于 的幂只依赖指数的奇偶性,;又由内积的逐位分配律,

(逐位验证: 异或,等于 。)于是内层求和变为

我们证明关键的正交和等式:

  • :每一项都是 ,共 项,和为
  • :取某个满足 的位 。映射 (翻转第 位)是 到自身的双射,把 个求和项两两配对;并且

所以配对的两项 恰好相互抵消,整个和为

代回:内层求和等于 当且仅当 ,否则为 。因此

测量结果以概率 1 为 。提取是精确的,无需重复运行。

经典下界的严格论证

必要性(少于 次查询不够):设某算法总共查询了 个输入 (允许自适应——对固定的应答序列,被查询的输入集合也随之确定),它获得的全部信息只是 个比特 ,即关于未知向量 个线性方程。当 时,这些方程系数张成的子空间维数至多为 ,其正交补中存在非零向量 ,满足 对所有 成立。于是 是两个不同的隐藏串,却对所有被查询的输入给出相同应答:

任何确定性算法在这两个实例上的执行轨迹完全相同,必然在其中一个上出错。

对带随机性、以常数概率成功为目标的算法,同样的计数给出下界: 次查询的答案把候选 限制在一个大小至少为 的仿射子空间内,且每个候选在给定答案条件下等可能,故单次输出猜对的概率不超过 。要达到常数成功概率,必须 ,即仍需 次查询。

为什么经典需要 次而量子只需 1 次

经典计算中,每次查询 只能得到 这 1 bit 信息。要确定 个未知数 ,至少需要 个线性无关的方程,即 次查询。

量子计算中, 将所有 个输入 的叠加态”打包”到一次查询中。oracle 对叠加态的响应同时”编码”了 在所有方向上的内积信息。第二次 通过全局干涉将这些信息”解码”回计算基态 :正交和等式 正是”错误答案的概率幅两两相消、正确答案的概率幅相长叠加”的定量表述。

这是量子并行性(quantum parallelism)与干涉(interference)协同工作的典范:并行性提供了访问所有输入的能力,而干涉消除了”错误答案”的概率幅、放大了”正确答案”的概率幅。

量子电路图

![Bernstein-Vazirani 量子电路](../assets/circuits/b

作用为 ,可通过 CNOT 门级联实现。

具体例子:

隐藏串 ,即 。oracle 计算

步骤 1:初始态

步骤 2:辅助比特

步骤 3 作用于输入寄存器:

步骤 4:查询 oracle(唯一一次):

各项的相位:

相位
00000
10011
20100
30111
41001
51010
61101
71110

步骤 5:施加 。这里可以把态显式算出来:由于 ,有 ,于是整个态可以按比特因子化:

第 2 位上没有任何相位,所以它保持为 ;第 1、3 位各带一个 因子,成为 。再逐位施加 ,因此

与一般推导的结论一致。

步骤 6:测量得到 ,验证:

复杂度分析

经典量子(BV)
查询次数
门操作
测量次数

BV 算法是一个精确量子加速(exact quantum speedup):量子算法以概率 1 给出正确答案,不存在概率性误差,加速比为 倍。

推广与意义

与 Deutsch-Jozsa 算法的关系

BV 的黑盒函数类(线性函数)落在 Deutsch-Jozsa 算法的承诺类之内: 是常函数(恒为 0); 是平衡函数——取任一满足 的位 ,配对 ,则 ,即输入两两配对、输出取反,恰有一半输入取 0、一半取 1。两个算法的量子电路完全相同;区别在于承诺更强时能提取更多信息:Deutsch-Jozsa 只需判断测量结果是否为 ,而在”线性”这一特例上,测量结果本身就是 ,且以概率 1 正确。

与 Simon 算法的关系

Simon 算法处理满足 的函数(函数具有隐藏的异或周期 ),它把 BV 的”隐藏线性结构”换成”隐藏仿射周期结构”,需要 次查询,但相比经典的 次查询已有指数加速。两者连同 Shor 算法都可以纳入阿贝尔隐藏子群问题(abelian hidden subgroup problem)的统一框架,Shor 的阶查找算法正是把”叠加 + 周期函数 + 傅里叶采样”这一范式从 推广到循环群上的结果。

在量子学习理论中的应用

BV 算法是证明量子优势的基本构件之一。Bernstein 和 Vazirani 利用它构造了第一个相对于 oracle 具有指数分离(exponential separation)的量子复杂度结果:存在一个语言,量子多项式时间(BQP)可判定,而经典概率多项式时间(BPP)不可判定。

实际应用

虽然 BV 算法本身是一个理论算法,但其相位回踢和 Hadamard 干涉的技术被广泛用于:

  • 量子随机存取存储器(QRAM)的查询验证
  • 量子机器学习中的内积估计
  • 量子密码学中的协议设计

总结

Bernstein-Vazirani 算法以极简的电路( 个单比特量子门 + 1 次 oracle 查询)实现了对经典下界的突破,展示了量子叠加态如何在单次操作中”并行”处理所有输入,再通过 Hadamard 干涉精确提取全局信息。它是理解量子计算优势来源的最佳入门案例之一。


参考文献:

  1. Bernstein, E., & Vazirani, U. (1997). Quantum Complexity Theory. SIAM Journal on Computing, 26(5), 1411–1473.
  2. Nielsen, M. A., & Chuang, I. L. (2010). Quantum Computation and Quantum Information. Cambridge University Press.
  3. Aaronson, S. (2013). Quantum Computing Since Democritus. Cambridge University Press.


参考资料