Bernstein–Vazirani 算法 的原理

1. 原理

1.1. 问题定义

有一个隐藏的二进制字符串 ,有一个黑盒(Oracle)​ 实现函数:,其中 ​ 是按位点乘模 2(奇偶性)。

经典上,如果只能通过输入 得到 ,那么需要 n 次查询才能确定 (每次查询确定一个比特,例如输入 在第 j 位为 1 可以得到 ​)。

Bernstein--Vazirani 算法用量子计算,只用 1 次查询 就得到

1.2. 量子 Oracle 的实现

我们实现一个量子门 ​ 满足:

其中 是 n qubit 寄存器, 是 1 qubit 辅助寄存器。

【注,这里想不要太关注 的实现问题,第2节会专门讨论,这里先聚焦整体框架】

1.3. 算法步骤

步骤 1:初始化

第一寄存器(n 个 qubit):

第二寄存器(1 个 qubit):

系统初态:

步骤 2:在辅助比特和输入寄存器上加 Hadamard 门

对每个 qubit 作用

我们知道:

所以:

步骤 3:调用 Oracle

因为:

这里

验证:

所以:

代入

关键点:辅助比特依然是 态,没有被纠缠,所以我们可以只看第一寄存器状态:

这个态称为 s 的 Hadamard 基编码态(类似傅里叶对偶)。

步骤 4:对第一寄存器再作用

回忆 Hadamard 门的性质:

逆变换相同(因为 是自逆):

交换求和顺序:

步骤 5:利用正交性

对于二进制向量,有恒等式:

其中 是 n qubit 向量, 当且仅当 ,否则为 0。

这里 ,所以:

即只有 的那一项系数为 1,其它为 0。

因此:

步骤 6:测量

测量第一寄存器的 n 个 qubit,得到结果即为 (确定性的,不是概率性的),因为量子态正好是

1.4. 总结

算法步骤简记:

  1. 初始:

  2. 对所有 qubit 作用 Hadamard:

  3. 调用 Oracle ​:

  4. 对前 n 个 qubit 再次作用 Hadamard:

  5. 测量前 n 个 qubit,得到

1.5. 与 Deutsch--Jozsa 的区别

  • Deutsch--Jozsa :区分常数函数与平衡函数,也需要 1 次量子查询(经典最坏 次)。

  • Bernstein--Vazirani :找到一个隐藏的二进制字符串 ,经典需要 n 次查询,量子 1 次。

  • BV 可以视为 DJ 的一个特例(但目标不同)。

最终,BV 算法的量子加速来自于 量子并行 + 相位反冲 + 量子傅里叶(Hadamard)变换 的配合,让 Oracle 一次调用就在叠加态中标记所有 的相位 ,再通过 Hadamard 变换把相位信息变成基态

2. 深入

我们来具体构造 ​,让它实现

2.1. 函数定义

给定一个固定的二进制字符串 ​,其中

定义:

这是线性函数(模 2 加法)。

2.2. 量子 Oracle 形式

我们需要一个幺正算符 ​ 使得:

对于 BV 算法,辅助比特初始为 时会触发相位反冲,使得:

所以对第一寄存器来说,​ 在这种特殊情况下表现为一个相位 Oracle

2.3. 电路构造

情况 1: 只有一个 1(比如 ,第 j 位为 1)

那么 ​。

实现方式:

如果 且其它位 ,则 ​ 只需在辅助比特 上加一个 受控于第 j 个 qubit 的 CNOT

电路:

这就是 CNOT 门,控制位是第 j 个 qubit,目标位是辅助比特。


情况 2:一般 有多个 1

例如 ,则 ​(假设 n=3)。

实现方法:

  • 对于每个 i,如果 ,就对辅助比特做一个 CNOT,控制位是第 i 个 qubit。

  • 因为这些 CNOT 都目标在同一个辅助比特上,最终效果是:

    这正是


例子

电路(第一寄存器 ,辅助比特 ):

  1. CNOT:控制 ​,目标

  2. CNOT:控制 ​,目标

    ​ 因为 不参与)

检查对 的效果

辅助比特初始为 ​。

CNOT 门作用在目标为 时的性质:

控制比特 ,目标比特

因为 是 X 的本征值为 的本征态:

所以:

即,控制比特为 时,整个态乘上


对于多个 CNOT(都目标在同一辅助比特 上),每个 CNOT 的相位因子是 ​ 当

总的相位因子是:

这正是我们要的相位 Oracle。

4. 完整电路图(BV 算法)

为例:

复制代码
       ┌───┐          ┌───┐
q0: |0>┤ H ├──■───────┤ H ├─── M ───> s1
       ├───┤  │       ├───┤
q1: |0>┤ H ├──┼───────┤ H ├─── M ───> s2
       ├───┤  │       ├───┤
q2: |0>┤ H ├──┼──■────┤ H ├─── M ───> s3
       ├───┤┌─┴─┐│ ┌──┴──┐
q3: |1>┤ H ├┤ X ├┤ ├─ X ─┤
       └───┘└───┘│ └─────┘
                  └───────

(注:q3 是辅助比特,初始 ,经过 H 变成 ;两个 CNOT 的控制分别是 q0 和 q2,目标都是 q3,对应)

5. 为什么经典查询需要 n 次?

经典只能输入 得到

要确定 ,需选取 个线性无关的 ,例如:

...

每个查询得到 的一个比特,所以需要 次。

6. 量子一次查询的原因

量子可以输入叠加态:

Oracle 一次作用在叠加态上,同时 对所有 计算 并编码为相位

然后通过 Hadamard 变换把相位模式​ 变成

Hadamard 变换在这里起到二进制傅里叶变换 的作用,把线性相位的叠加变成单个基态

总结

​ 的具体实现是,对每个满足 的比特 i,在辅助比特上加一个 CNOT 门(控制位是第 i 个 qubit) 。当辅助比特初始化为 时,这些 CNOT 共同给态 加上相位

相关推荐
MicroTech202510 小时前
微算法科技(NASDAQ:MLGO)混合经典量子算法:赋能数字图像处理的创新路径
科技·算法·量子计算
AI科技星1 天前
人类首张【全域数学公理体系】黑洞内部结构图—基于「0-1-∞」三元本源的全维深度解析
人工智能·算法·机器学习·数学建模·数据挖掘·量子计算
xixixi777771 天前
AI安全周记:AI驱动攻击占比50%、PQC国标落地、ShinyHunters连环袭击——面对1:25的攻防成本鸿沟,防守方还能撑多久?
人工智能·安全·ai·大模型·aigc·量子计算·供应链
德思特1 天前
AWG任意波形发生器在量子通信、光电测试与半导体行业如何应用?
量子计算·任意波形发生器
Alex艾力的IT数字空间1 天前
大模型的“Think 模式”(思考模式)关闭的配置方式
人工智能·机器人·web3·github·开源软件·量子计算·开源协议
xixixi777772 天前
全模态原生大脑降临:GPT-5.5(Spud)发布,推理/编码提升30%,百万上下文+原生电脑控制,开启Agent新纪元
大数据·网络·人工智能·gpt·安全·电脑·量子计算
我是无敌小恐龙2 天前
Java SE 零基础入门Day06 方法重载+Debug调试+String字符串全套API详解(超全干货)
java·开发语言·人工智能·python·transformer·无人机·量子计算
东隆科技2 天前
TCSPC揭示:温度与波长如何影响SPAD时间抖动
量子计算
爱看科技2 天前
量子与深度学习深度交融:微美全息(NASDAQ:WIMI)新型网络铸就效率精度双典范
网络·深度学习·量子计算
AI科技星3 天前
宇宙终极几何:莫比乌斯光速螺旋统一理论-精细结构常数α本源结构
算法·机器学习·数学建模·数据挖掘·量子计算