1. 量子比特(Qubit)与叠加原理 (Part 5)
Deutsch算法:量子计算的第一个算法
2. 三个基本量子算法及其量子门应用
Deutsch算法:量子计算的第一个算法
算法背景与目标
问题形式
- 给定黑箱函数 f: {0,1} → {0,1},只能通过查询得到 f(0) 与 f(1)。
- f 的类型只可能是两种:常数(constant)函数或平衡(balanced)函数。
- 常数:f(0)=f(1)(两输入同值,可能是 00 或 11)。
- 平衡:f(0)≠f(1)(两输入不同值,可能是 01 或 10)。
- 经典上至少需要调用两次 f 才能区分常数与平衡。
量子目标
- 仅调用一次“函数黑箱”U_f,完成对 f 的类型判定。
- 这个“只查询一次”正是Deutsch算法的核心贡献,也是量子并行性与干涉首次在算法中发挥作用的可验证例子。
目标判定输出
- 判定 f 是常数还是平衡。若为常数,测量第一个量子比特得到 0;若为平衡,测量第一个量子比特得到 1。
量子电路设计
电路概述
- 体系:两个量子比特(q0 为输入寄存器,q1 为辅助比特)。
- 黑箱:Oracle U_f 满足 |x⟩|y⟩ → |x⟩|y⊕f(x)⟩(等价地,也可理解为对 |x⟩|y⟩ 施加受控 f(x) 的翻转)。
- 初始化:q0 置 |0⟩,q1 置 |1⟩。
- 序列:H(q0) → H(q1) → U_f → H(q0) → 测量 q0。
电路图(ASCII风格)
- 0: ──── H ─────────────────── H ── M(q0)
- 1: ──── X ──── H ──── U_f ──── X ── (通常不测量 q1,图中用空端表示)
更形象的Qiskit风格电路图(可用Mermaid表达)
- 图示:0: ──── H ─────────────────── H ── M
1: ──── X ──── H ──── U_f ──── X ──辅助说明:U_f 为“受控加f(x)”的门
电路参数表
- 元素 | 作用与位置说明
- q0 输入寄存器 | 初始化 |0⟩,经历 H → U_f → H,最终被测量
- q1 辅助比特 | 初始化 |1⟩,经历 X → H → U_f → X,用于引发相位反冲
- H 门 | 在 q0 与 q1 上各一次(q1 的 H 前后各一次 X)
- X 门 | 对 q1 前后各一次,把 |1⟩ 变为 |−⟩ 叠加的桥梁
- U_f | 对 (x,y) 应用 |y⟩ → |y⊕f(x)⟩,产生相位反冲
- 测量 | 仅对 q0 测量;q1 通常不测量
原理与结果分析
数学推导要点
- 初始态
- |ψ0⟩ = |0⟩|1⟩ = |01⟩。
- 第一次 H 门
- H|0⟩ = (|0⟩+|1⟩)/√2,H|1⟩ = (|0⟩−|1⟩)/√2。
- 因此:H(q0)H(q1)|01⟩ = |+⟩|−⟩,其中
- |+⟩ = (|0⟩+|1⟩)/√2,
- |−⟩ = (|0⟩−|1⟩)/√2。
- Oracle U_f 作用
- 以“相位反冲”视角理解:对每个输入 |x⟩,U_f 会将辅助比特由 |−⟩ 变为 (−1)^{f(x)}|−⟩。
- 若 f(x)=0,|−⟩ 不变;
- 若 f(x)=1,|−⟩ 获得一个全局相位因子 −1。
- 因此:U_f|+⟩|−⟩ = (|0⟩+(−1)^{f(0)}|−⟩)/√2 ⊗ |−⟩ 加上 (|1⟩+(−1)^{f(1)}|−⟩)/√2 ⊗ |−⟩ 的叠加。换言之,U_f 改变了 q0 的振幅相位,具体为:对 |x⟩ 的振幅乘以 (−1)^{f(x)}。
- 第二次 H 门(作用于 q0)
- 对 q0 应用 H:H|+⟩=|0⟩,H|−⟩=|1⟩。
- 分两种 f 类型观察最终状态。
- 常数 f:
- 若 f(0)=f(1)=0:U_f 不改变 q0 相位,U_f|+⟩|−⟩ = |+⟩|−⟩ → H 后 = |0⟩|−⟩。测量 q0 恒得 0。
- 若 f(0)=f(1)=1:U_f 对所有 |x⟩ 引入相同相位因子 (−1),U_f|+⟩|−⟩ = −|+⟩|−⟩ → H 后 = −|0⟩|−⟩。测量 q0 恒得 0。
- 结论:常数时 q0 输出 0。
- 平衡 f:
- 若 f(0)=0, f(1)=1:U_f 对 |1⟩ 分量施加 −1,得到状态 (|0⟩−|1⟩)|−⟩/√2 = |−⟩|−⟩ → H 后 = |1⟩|−⟩。测量 q0 恒得 1。
- 若 f(0)=1, f(1)=0:U_f 对 |0⟩ 分量施加 −1,得到状态 (−|0⟩+|1⟩)|−⟩/√2 = −|−⟩|−⟩ → H 后 = −|1⟩|−⟩。测量 q0 恒得 1。
- 结论:平衡时 q0 输出 1。
判定表
- f 类型 | 常见真值表形式 | 最终测量 q0 的概率分布
- 常数 | 00 或 11 | 恒为 0(100%)
- 平衡 | 01 或 10 | 恒为 1(100%)
结果解释
- 量子算法仅调用一次 U_f(一次函数查询),即可通过测量 q0 得到可靠结论。
- q1 的 |−⟩ 态在 U_f 作用下引发“相位反冲”,在第二次 H 门之后通过干涉把两种 f 类型区分开来。
- 这种通过相位编码信息并依赖干涉完成判定,是量子算法的标志性范式。
量子门详细分析
门作用机制
- H 门:创建与销毁叠加态的关键。
- 第一次 H(q0) 把 |0⟩ 变为 |+⟩,使输入处于“并行”的两个基态叠加。
- 第二次 H(q0) 将“编码的相位信息”转换回可观测的 0/1 分布。
- Oracle U_f:算法特异性组件。
- 目标是将 f(x) 的信息通过“相位反冲”刻入 q0 的振幅相位中。
算法背景与目标
本章从三个经典“基准问题”出发:常数/平衡判定(Deutsch)、无序数据库搜索(Grover)、周期发现(Simon)。通过这些问题的设定、复杂度边界与量子优势对比,帮助读者理解“叠加 + 干涉 + Oracle(黑盒)”的通用范式,并明确后续章节将具体展开的门级实现与电路图。
1) Deutsch算法:量子计算的第一个算法
问题描述
- 给定黑盒函数 f: {0,1} → {0,1},只允许对其输入/输出进行查询(不暴露实现)。任务是判断 f 是否为常数(对所有 x,f(x) 全相同),还是平衡(对所有 x,f(x) 恰好各半)。
- 形式化目标:只需输出“常数”或“平衡”。
经典复杂度
- 最坏情况需要两次查询:先问 f(0),再问 f(1)。若一次查询,得到的输出无法区分常数与平衡。例如:
- 若问得 f(0)=0,f 可能为常数函数 f(0)=f(1)=0;也可能是平衡函数 f(0)=0, f(1)=1。一次查询无法确定。
- 若只问一次,无论如何,总存在至少一种常数函数与一种平衡函数能给出相同输出,故无法确定答案。
- 随机化(抛硬币)可降低期望查询数,但无法保证确定性。
- 最坏情况需要两次查询:先问 f(0),再问 f(1)。若一次查询,得到的输出无法区分常数与平衡。例如:
量子优势
- Deutsch 量子算法只需一次 Oracle 查询,即可保证正确判断常数/平衡。
- 典型电路结构(输入 qubit = x,辅助 qubit = |−⟩):
- 初态:|x⟩|−⟩ = |0⟩|−⟩
- 叠加:H ⊗ I 后,x 进入均匀叠加|+⟩,y 为|−⟩
- Oracle:U_f 施加相位反冲,y 为|−⟩ 时会将 f(x) 的值以全局相位注入到 x
- 叠加:再次对 x 做 H 门,利用干涉将信息集中到测量
- 测量:常数函数必测得 0,平衡函数必测得 1
- 核心思想:利用叠加将“所有输入”并行访问,再通过 Oracle 的相位反冲在叠加态上写入信息;最后以 H 门做干涉放大该信息的可读性。
量子电路示意
- 说明:此为Deutsch算法最小形态,x 为 1 个输入 qubit,y 为 1 个辅助 qubit。图中 y 初始化为 |1⟩,随后 H 门得到 |−⟩。
- 量子电路图(文本/字符示意):
- q[0]: ──H──●──H──
- q[1]: ──H──⊕──
- 说明:q[0] 为 x,q[1] 为 y;H 为 Hadamard 门;●⊕ 表示 U_f: |x⟩|y⟩ → |x⟩|y⊕f(x)⟩。其中 y 初始设为 |1⟩,则 H 后变为 |−⟩,相位反冲生效。
- Mermaid 示意(便于复制到文档中)
graph LR subgraph "Deutsch 电路" direction TB q0["q0: |0⟩"] --> q0_H["H"] --> q0_U["U_f (x,y→x,y⊕f(x))"] --> q0_H2["H"] --> m0["measure x → 0:常数, 1:平衡"] q1["q1: |1⟩"] --> q1_H["H"] --> q1_U["U_f (x,y→x,y⊕f(x))"] end
2) Grover搜索算法:数据库搜索的量子加速
问题描述
- 在 N 个无序项目中给定唯一“目标项”T。只允许通过黑盒 Oracle 访问“是否命中目标”的信息(即给定索引 x,可查询 T 是否为 x)。
- 目标:在尽可能少的查询内,以高概率找到 T。
经典复杂度
- 确定性最坏情况需 N 次查询;随机化期望查询数约 N/2。
- 经典搜索无法在确定性意义下少于 O(N) 次查询(除非对问题结构有额外先验信息)。
量子优势
- 在无序搜索场景,量子算法可将查询复杂度降至 O(√N),通过多次迭代的“标记目标态相位翻转”(Oracle)与“围绕平均值的振幅反转”(扩散算子)实现振幅放大。
- 最优迭代次数约为 ⌊π√N/4⌋,最终测量高概率命中目标态。
量子电路示意
- 说明:q[0…n-1] 编码 N=2^n 个索引;Oracle 将目标态相位翻转 −1;扩散算子围绕全体态的振幅平均值做对称反转。
- 量子电路图(文本/字符示意):
- q[0…n-1]: ──H^{⊗n}──Oracle──Diffuser──Oracle──Diffuser── … ──measure
- 注:交替执行 Oracle 与 Diffuser,直到迭代次数接近 π√N/4。
- Mermaid 示意(便于复制到文档中)
graph LR subgraph "Grover Circuit" direction TB start["Initial: |0⟩^{⊗n}"] --> init["H^{⊗n} (Uniform Superposition)"] init --> GroverIter["Oracle + Diffuser"] GroverIter --> GroverIter2["Oracle + Diffuser (Repeat)"] GroverIter2 --> GroverIterN["Oracle + Diffuser (Optimal ≈ π√N/4)"] GroverIterN --> measure["Measurement"] end
量子电路设计
好的,这是您量子计算入门系列文章的第2章节内容。
# 2. 量子电路设计
在前一章中,我们深入理解了量子比特和叠加的核心原理——量子计算的巨大潜力正源于此。现在,我们将从“设计蓝图”跃迁到“物理实现”,学习如何运用量子门来构建和操纵量子态,从而真正执行计算。量子电路设计是连接抽象理论与具体算法的桥梁。
核心任务:构建量子计算的“程序”
量子电路的设计,本质上是通过一系列精心编排的量子门操作,将输入的初始态(如全 |0⟩ 态)变换成我们期望的输出态(通常是一个包含问题答案信息的态),随后通过测量提取结果。这个过程可以类比经典计算机中的门级电路设计,但量子门操作利用了叠加、纠缠和干涉这些独特的量子效应。
设计基础:从态到门到电路
态的制备:
- 通常,系统从易于实现的初始态开始,如每个量子比特都处于 |0⟩ 态。
- 设计的核心在于如何从这个简单的、可控的起点,制备出蕴含计算所需的特定叠加或纠缠态。例如:
- 使用 Hadamard 门 (H) 制备均匀叠加态:
H |0⟩ = (|0⟩ + |1⟩)/√2。 - 使用 受控门 (如 CNOT, CCNOT) 构建纠缠态:
CNOT(H|0⟩ ⊗ |0⟩) = (|00⟩ + |11⟩)/√2(Bell态)。 - 使用 旋转门 (如 R_x, R_y, R_z) 在Bloch球面上精确控制量子态的相位和振幅。
- 使用相位估计或幅度放大等子例程构造复杂态。
- 使用 Hadamard 门 (H) 制备均匀叠加态:
核心门序列 (关键构件):
- 单比特门: 如 X, Y, Z (Pauli门), H (Hadamard), S (相位门), T (π/8门), R_x(θ), R_y(θ), R_z(θ) (绕特定轴旋转)。这些门用于局部态变换和相位操控。
- 多比特门: 如 CNOT (受控非门), Toffoli (受控受控非门), SWAP (交换门)。这些门用于构建纠缠态和实现条件逻辑。
- 受控版本: U 是任意单比特或更高阶门。受控门
CU的作用是:当且仅当控制比特处于特定态(如 |1⟩)时,对目标比特应用U。这是量子计算实现条件逻辑的关键机制。 - 特定问题门 (Oracle): 这是为特定问题量身定制的特殊“黑箱”门。它通常封装了对问题输入(如函数
f(x))的评估操作。其标准作用形式之一是U_f |x⟩ |y⟩ = |x⟩ |y ⊕ f(x)⟩(使用辅助比特|y⟩存储函数结果),或者更巧妙地在输入态上施加基于f(x)的相位翻转(-1)^{f(x)},如Deutsch和Simon算法中的做法。设计一个高效的Oracle是算法实现的关键环节。
电路的构建与可视化:
- 量子电路图是设计量子算法的标准语言和可视化工具。
- 基本元素:
- 量子比特线路: 用水平线表示,每条线代表一个量子比特。
- 量子门: 用标准符号(如
H,X,CNOT)标注在对应线路上方(或门框内),表示作用在哪个比特上及其类型。 - 测量符号: 用仪表盘图标表示,通常连接在被测量的比特线上,表示在何时以及如何测量该比特。
- 导线与连接: 多比特门的控制位和目标位用垂直线连接。复合门(如CCNOT)可能包含多个控制位。
- 时间流: 时间从左向右流动,门按顺序作用于比特。
- 辅助比特: 额外的比特通常单独放置在电路图底部,常用于存储中间计算结果(如函数输出)或辅助操作(如相位估计)。
- 设计原则:
- 清晰性: 电路图应尽可能直观地展示算法的逻辑流。
- 效率: 追求门数最少、电路深度(关键路径)最短的设计。
- 可实现性: 设计应考虑当前硬件的物理限制(如可用的门集、门保真度、拓扑连接等)。
- 可测试性: 包含验证中间态正确性的手段(如模拟)。
经典算法电路设计入门:电路蓝图实例
接下来,我们通过三个经典算法电路的设计蓝图,深入理解量子电路设计的核心思想。这些电路展示了如何通过叠加、干涉和特定Oracle来达成量子优势。
1. Deutsch-Jozsa 算法:量子电路的简洁性与力量
- 问题: 判断一个输入为
n比特二进制数x的函数f: {0,1}^n → {0,1}是常数函数(对所有x输出相同值)还是平衡函数(对恰好一半的输入x输出0,对另一半输出1)。经典算法在最坏情况下需要2^{n-1} + 1次函数调用才能确定。 - 量子电路设计:
graph TD subgraph "Deutsch-Jozsa 量子电路" subgraph "辅助比特 (y)" Y1["|0⟩"] --> Y1H[H] Y1H --> Y1ORC["U_f
Oracle"] Y1ORC --> Y1H2[H] Y1H2 --> Y1MEAS[Measure] end subgraph "输入比特 (x_1 ... x_n)" X1["|0⟩"] --> X1H[H] X2["|0⟩"] --> X2H[H] X3[... ... ...] Xn["|0⟩"] --> XnH[H] X1H --> XnH2["H
... ... ...
H ⊗ n"] XnH2 --> XnORC["U_f
Oracle"] XnORC --> XnH3["H
... ... ...
H ⊗ n"] XnH3 --> XnMEAS[Measure] end end- 设计要点:
- 态制备: 输入寄存器(
n比特)全部制备在|0⟩态。辅助比特(1 比特)制备在|1⟩态。 - 均匀叠加: 对输入寄存器和辅助比特同时施加
H门:H^{⊗n} ⊗ H。此时输入寄存器处于所有2^n个基态的均匀叠加∑_{x} |x⟩ / √{2^n},辅助比特处于|−⟩ = (|0⟩−|1⟩)/√2态。 - Oracle 作用: U_f 将函数信息通过相位反冲编码到输入寄存器中。
- 再次 H 门: 对输入寄存器再次施加
H^{⊗n},利用干涉效应将相位信息转化为可测量的概率差异。 - 测量: 若测得全 0,则 f 为常数函数;否则为平衡函数。
- 态制备: 输入寄存器(
- 设计要点:
原理与结果分析
2. Deutsch算法:原理与结果分析
下面从状态演化、相位反冲、干涉与测量四个核心维度,系统拆解 Deutsch 算法的原理,并给出严格的数学推导与工程视角的可复现实现。
1) 电路结构与输入初始化
- 量子比特数目:2 比特(x:计算比特,y:辅助比特)
- 初始态:|0⟩_x ⊗ |1⟩_y
- 门序列:H⊗H → Oracle U_f → H⊗H → measure x
- Oracle 定义:U_f|x⟩|y⟩ = |x⟩|y ⊕ f(x)⟩,其中 f: {0,1} → {0,1}
电路图(符号化):
- q0: x(计算寄存器)
- q1: y(辅助寄存器,置初态 |1⟩)
门序列:
- q0: H → [U_f 作用] → H
- q1: H → [U_f 作用] → H
状态演化要点:
- 在两次 Hadamard 作用与 U_f 的组合下,x 寄存器的最终态以确定性形式出现 0 或 1,从而一次性判定 f 是否为常数。
2) 状态演化(Step-by-Step)
设初始 |ψ0⟩ = |0⟩_x |1⟩_y
第一次 H⊗H:
H|0⟩ = (|+⟩),H|1⟩ = (|−⟩)
→ |ψ1⟩ = (|+⟩_x) ⊗ (|−⟩_y)施加 Oracle U_f:
对任意 |x⟩,有 |y ⊕ f(x)⟩ 的映射。若 y = |−⟩,则:
- 若 f(x) = 0:|−⟩ → |−⟩
- 若 f(x) = 1:|−⟩ → −|−⟩
即 U_f 作用到 |x⟩|−⟩ 上表现为对整体附加相位 (−1)^{f(x)}:
→ |ψ2⟩ = [∑_{x∈{0,1}} (−1)^{f(x)} |x⟩] ⊗ |−⟩_y
- 第二次 H⊗H(仅测量 x):
H 作用于叠加态得到
H∑_{x} a_x |x⟩ = ∑_{z} [∑_{x} a_x (−1)^{xz}] |z⟩ / √2
取 z=0 可得幅度
A_0 = [a_0 + a_1] / √2
将 a_x = (−1)^{f(x)} 代入:
A_0 = [ (−1)^{f(0)} + (−1)^{f(1)} ] / √2
- 若 f(0)=f(1)(常数):(−1)^{f(0)} = (−1)^{f(1)},因此
A_0 = ±2/√2 = ±√2 ⇒ P(x=0)=|A_0|^2=1 - 若 f(0)≠f(1)(平衡):(−1)^{f(0)} = −(−1)^{f(1)},因此
A_0 = 0 ⇒ P(x=0)=0 ⇒ x 必然为 1
由此得出判定规则:
- x 测量结果为 0 → f 是常数
- x 测量结果为 1 → f 是平衡
要点总结表:
| 步骤 | 输入态 | 作用门 | 输出态 | 备注 |
|---|---|---|---|---|
| 初始化 | 0⟩_x | 1⟩_y | — | |
| 第一次 H | 0⟩ | 1⟩ | H⊗H | |
| Oracle U_f | +⟩ | −⟩ | U_f | |
| 第二次 H | ψ2⟩ | H⊗H | ||
| 测量 x | ψ3⟩_x | measure | 0 或 1 |
3) 相位反冲与干涉:为什么一次查询足够
- 相位反冲(phase kickback):由于辅助比特 y 被初始化为 |−⟩,Oracle 在 y 上的操作转化为 x 空间的相位 (−1)^{f(x)},而不对 x 做确定性翻转。这一步将“函数值信息”编码为相位。
- 干涉(interference):第二次 Hadamard 将相位信息变为幅度干涉,使得常数函数与平衡函数在 |0⟩ 处的概率分布截然不同(常数函数概率为1,平衡函数概率为0),从而实现一次查询即可判定。
量子门详细分析
2. 三个基本量子算法及其量子门应用
Deutsch算法:量子计算的第一个算法
量子门详细分析
在Deutsch算法中,量子门序列是实现算法核心功能的关键。每个门操作不仅改变量子态,还通过叠加、干涉和测量提取结果。以下是详细分析,结合量子电路图(使用Mermaid图表展示)和操作示例。
1. H门(Hadamard门)的作用
- 功能概述:H门是量子计算中最基础的单量子比特门,用于创建和消除叠加态。它将量子比特从基态转换为均匀叠加态,或从叠加态回转到基态,从而实现量子并行性的关键步骤。
- 在Deutsch算法中的作用:
- 初始态制备:算法开始时,量子比特1(控制比特)初始于|0⟩,量子比特2(辅助比特)初始于|1⟩。H门应用于这两个比特,分别制备均匀叠加态:
- 对量子比特1:H|0⟩ = (|0⟩ + |1⟩)/√2(即|+⟩态),使输入均匀覆盖所有可能值(x=0和x=1)。
- 对量子比特2:H|1⟩ = (|0⟩ - |1⟩)/√2(即|-⟩态),引入相位差,为后续相位反冲做准备。
- 消除叠加:在算法末尾,H门再次应用于量子比特1,将叠加态转化为可测量基态(|0⟩或|1⟩),使测量能区分常数函数和平衡函数。
- 初始态制备:算法开始时,量子比特1(控制比特)初始于|0⟩,量子比特2(辅助比特)初始于|1⟩。H门应用于这两个比特,分别制备均匀叠加态:
- 数学表示:H门的矩阵形式为:
[
H = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 & 1 \ 1 & -1 \end{pmatrix}
]
例如,H门作用于|0⟩:H|0⟩ = (|0⟩ + |1⟩)/√2;作用于|1⟩:H|1⟩ = (|0⟩ - |1⟩)/√2。 - 直观比喻:H门如同“量子硬币投掷”,将确定性状态转换为随机叠加,类似于经典概率中的均匀分布,但量子态允许干涉。
2. Oracle门(U_f)的作用
- 功能概述:Oracle门U_f是问题依赖的量子黑盒,实现函数f: {0,1} → {0,1}的映射。它通过相位反冲机制改变辅助比特的相位,而不直接改变控制比特的幅度,从而标记函数类型。
- 在Deutsch算法中的作用:
- 映射操作:U_f作用于组合态|x⟩|y⟩,输出|x⟩|y ⊕ f(x)⟩。这相当于对辅助比特应用条件性翻转(如果f(x)=1,则翻转|y⟩)。
- 相位反冲:关键在于,当控制比特处于叠加态时,Oracle通过辅助比特的相位变化间接影响控制比特的相位。例如:
- 如果f是常数函数(f(0)=f(1)=c),则U_f只改变辅助比特,不影响控制比特相位。
- 如果f是平衡函数(f(0)≠f(1)),则Oracle导致控制比特相位反转,实现干涉。
- 数学表示:Oracle门的操作可表示为:
[
U_f |x\rangle|y\rangle = |x\rangle|y \oplus f(x)\rangle
]
例如,对于f(0)=0, f(1)=1的平衡函数,Oracle门使辅助比特| -⟩在控制比特|x⟩为1时翻转,导致整体态出现相位差。 - 直观比喻:Oracle门如同“量子问询函数”,它不直接给出答案,但通过状态变化传递信息,类似于经典算法中的函数调用。
3. 测量操作的作用
- 功能概述:测量是量子计算中提取经典信息的步骤。在Deutsch算法中,测量第一个量子比特的结果直接决定函数类型,避免了重复调用函数。
- 在Deutsch算法中的作用:
- 结果提取:算法结束后,测量量子比特1:
- 如果测量结果为|0⟩,则f是常数函数(概率高)。
- 如果测量结果为|1⟩,则f是平衡函数(概率高)。
- 干涉验证:通过H门后的干涉效果,测量能以高概率区分两种情况。测量导致状态坍缩,但结合量子并行性和干涉,实现一次函数调用完成任务。
- 结果提取:算法结束后,测量量子比特1:
- 概率解释:测量结果的概率基于Born规则(|系数|²)。例如,在常数函数情况下,测量|0⟩的概率为1;在平衡函数情况下,测量|1⟩的概率为1(理想情况)。
- 直观比喻:测量如同“量子读数”,它从概率云中提取确定结果,但依赖之前门的操作来放大信号。
量子电路图(Mermaid格式)
以下是Deutsch算法的量子电路图,展示了门序列:H门应用于两个量子比特,然后Oracle门U_f,最后H门应用于量子比特1并测量。
graph LR
A["|0⟩"] --> H1[H]
H1 --> B1["|+⟩"]
B1 --> Uf[Oracle U_f]
C["|1⟩"] --> H2[H]
H2 --> B2["|-⟩"]
B2 --> Uf
Uf --> D[H]
D --> E[Measure]
E --> F[Result: 0/1]图解:
- 初始态:量子比特1(控制)为|0⟩,量子比特2(辅助)为|1⟩。
- 门序列:
- H1和H2:制备叠加态|+⟩和|-⟩。
- Oracle U_f:执行函数映射和相位反冲,将函数信息编码到量子态的相位中。