Bernstein-Vazirani 算法(BV 算法)由 Ethan Bernstein 和 Umesh Vazirani 于 1997 年提出,是量子计算中一个简洁而优美的算法。它解决的问题是:给定一个将 比特输入映射为单比特输出的函数 ,已知存在某个隐藏的 比特串 使得 ,如何找出 ?
经典计算机需要至少 次查询,而量子计算机仅需 1 次查询。
问题背景:线性函数与隐藏信息
定义比特串的内积:若 ,,则
其中 表示按位异或。直观地说,我们把 与 逐位相”与”,再把所得各比特异或起来,得到单个比特。容易看出该内积对第二个变元是线性的:对任意 与比特 ,有 ,。这一线性性是下文所有推导的代数基础。
给定一个黑盒(oracle),它承诺存在某个 使得对所有 :
我们的任务是找出 。
经典下界:经典算法必须查询 至少 次。 次查询是充分的:每次查询 (其中 是第 位为 1、其余为 0 的单位向量),由内积的线性性恰好得到 , 次查询即可拼出完整的 。“少于 次必定不够”的严格论证见下文”经典下界的严格论证”一节。
量子上界:BV 算法只需 1 次量子查询即可确定 的全部 位。
算法核心思想
BV 算法的核心技巧分两步:先用 Hadamard 变换把输入寄存器制备成均匀叠加态,让 oracle 通过相位回踢(phase kickback,也称相位编码)把 编码为相位;再用一次 Hadamard 变换让这些相位发生干涉,从干涉结果中读出 。
我们定义与 对应的酉算子 :
当辅助比特处于 时,利用 可以算出:
即辅助比特保持不变,而输入寄存器获得了一个依赖于 的相位 。逐项计算的完整过程见下文”相位回踢的完整推导”。这个相位编码了 的全部信息。
算法步骤
电路构造
-
初始化两个寄存器: 个输入比特 ,1 个辅助比特
-
对辅助比特施加 门,再施加 门,制备 态:
- 对输入寄存器的每个比特施加 门:
- 施加 oracle (唯一的一次查询):
-
对输入寄存器再次施加
-
测量输入寄存器,结果即为
理论推导
相位回踢的完整推导
我们将辅助比特制备为 的效果完整算一遍。oracle 作用在计算基态上时按定义翻转辅助比特:
由于 是线性的,我们把它作用到 上,两个分量分别计算:
现在按 的取值分两种情况代入:
- 当 时,两个分量分别为 与 ,于是上式为 ,相位因子为 ;
- 当 时,两个分量分别为 与 ,于是上式为 ,相位因子为 。
两种情况可以统一写成 : 时指数为偶数给出 , 时指数为奇数给出 。再代入承诺条件 ,相位即为 。辅助比特最终与输入寄存器解耦,可以忽略。
Hadamard 变换提取 :双重求和算到底
第 5 步要对态 施加 。整个推导只用两件事实:单比特恒等式 、,以及 的线性性。把它们合起来就得到 Hadamard 变换的通用公式:
(验证:右端对每个分量比特恰好贡献 因子当且仅当 ,展开张量积即得。)
记 ,则第 5 步的态为
交换双重求和的顺序,把对 的求和放到内层:
接下来合并指数。由于 的幂只依赖指数的奇偶性,;又由内积的逐位分配律,
(逐位验证: 与 异或,等于 。)于是内层求和变为
我们证明关键的正交和等式:
- 若 :每一项都是 ,共 项,和为 。
- 若 :取某个满足 的位 。映射 (翻转第 位)是 到自身的双射,把 个求和项两两配对;并且
所以配对的两项 与 恰好相互抵消,整个和为 。
把 代回:内层求和等于 当且仅当 ,否则为 。因此
测量结果以概率 1 为 。提取是精确的,无需重复运行。
经典下界的严格论证
必要性(少于 次查询不够):设某算法总共查询了 个输入 (允许自适应——对固定的应答序列,被查询的输入集合也随之确定),它获得的全部信息只是 个比特 ,即关于未知向量 的 个线性方程。当 时,这些方程系数张成的子空间维数至多为 ,其正交补中存在非零向量 ,满足 对所有 成立。于是 与 是两个不同的隐藏串,却对所有被查询的输入给出相同应答:
任何确定性算法在这两个实例上的执行轨迹完全相同,必然在其中一个上出错。
对带随机性、以常数概率成功为目标的算法,同样的计数给出下界: 次查询的答案把候选 限制在一个大小至少为 的仿射子空间内,且每个候选在给定答案条件下等可能,故单次输出猜对的概率不超过 。要达到常数成功概率,必须 ,即仍需 次查询。
为什么经典需要 次而量子只需 1 次
经典计算中,每次查询 只能得到 这 1 bit 信息。要确定 个未知数 ,至少需要 个线性无关的方程,即 次查询。
量子计算中, 将所有 个输入 的叠加态”打包”到一次查询中。oracle 对叠加态的响应同时”编码”了 在所有方向上的内积信息。第二次 通过全局干涉将这些信息”解码”回计算基态 :正交和等式 正是”错误答案的概率幅两两相消、正确答案的概率幅相长叠加”的定量表述。
这是量子并行性(quantum parallelism)与干涉(interference)协同工作的典范:并行性提供了访问所有输入的能力,而干涉消除了”错误答案”的概率幅、放大了”正确答案”的概率幅。
量子电路图
:
各项的相位:
| 相位 | |||
|---|---|---|---|
| 0 | 000 | 0 | |
| 1 | 001 | 1 | |
| 2 | 010 | 0 | |
| 3 | 011 | 1 | |
| 4 | 100 | 1 | |
| 5 | 101 | 0 | |
| 6 | 110 | 1 | |
| 7 | 111 | 0 |
步骤 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 干涉精确提取全局信息。它是理解量子计算优势来源的最佳入门案例之一。
参考文献:
- Bernstein, E., & Vazirani, U. (1997). Quantum Complexity Theory. SIAM Journal on Computing, 26(5), 1411–1473.
- Nielsen, M. A., & Chuang, I. L. (2010). Quantum Computation and Quantum Information. Cambridge University Press.
- Aaronson, S. (2013). Quantum Computing Since Democritus. Cambridge University Press.
参考资料
- 本词条整理自《量子计算算法教程》原文:ch04-classic-algorithms/bernstein-vazirani-algorithm-tutorial
- 内容遵循 CC BY-NC-SA 4.0 许可协议