量子计算探秘:从零开始的量子编程与算法之旅 · 第四篇

量子测量与退相干------从量子态到经典信息的桥梁

在量子世界里,看与被看,是两个截然不同的故事。

在前三篇文章中,我们学习了量子比特、量子门,亲手搭建了量子电路,见证了叠加和纠缠的神奇。但细心的读者可能已经注意到一个关键问题:我们如何知道量子计算机内部发生了什么?

答案是:测量。测量是连接量子世界与经典世界的唯一桥梁。没有测量,所有的叠加、干涉、纠缠都只是数学上的抽象,无法被我们感知。但这座桥梁是单行道------一旦测量发生,量子态就会不可逆地坍缩。

更棘手的是,即使你不去主动测量,量子系统也会与环境不可避免地发生相互作用,导致量子信息悄悄流失------这就是退相干。它是量子计算的头号敌人,也是NISQ时代一切工程挑战的根源。

今天,我们就来深入探讨这两个密不可分的主题:测量如何从量子态中提取信息?退相干如何摧毁这些信息?以及我们如何在Qiskit中模拟这些现实世界的效应。


1. 量子测量:从概率到事实

1.1 测量的本质:坍缩

在经典世界中,测量是一个被动的过程------看一块石头,并不会改变石头的状态。但在量子世界,测量是主动的、破坏性的

当一个量子比特处于叠加态 |ψ⟩ = α|0⟩ + β|1⟩ 时,它同时"是"0和"是"1。但当我们测量它时,会发生两件事:

  1. 随机选择:量子态以概率 |α|² 坍缩到 |0⟩,以概率 |β|² 坍缩到 |1⟩
  2. 永久改变:测量后,量子态不再是原来的叠加态,而是变成了确定的本征态

这就是著名的波函数坍缩------一个让爱因斯坦终身难以接受,却被无数实验证实的事实。

💡 直观类比:旋转的硬币在被拍停之前,同时是正面和反面的叠加。拍停的那一刻(测量),它随机地变成正面或反面------这就是坍缩。

1.2 测量的数学描述:投影测量

在数学上,标准(投影)测量可以用投影算符描述。对于单量子比特在计算基下的测量,有两个投影算符:

  • P₀ = |0⟩⟨0|,对应结果0
  • P₁ = |1⟩⟨1|,对应结果1

它们满足 P₀ + P₁ = I(完备性)且 P₀P₁ = 0(正交性)。

对于一般量子态 ρ,测量得到结果 n 的概率为 pₙ = Tr(Pₙρ),测量后状态变为 ρₙ = PₙρPₙ / pₙ。

在Qiskit中,我们之前使用的 qc.measure 实现的就是这种投影测量。

1.3 测量的可视化:布洛赫球上的坍缩

在布洛赫球上,量子态是球面上的一个点。测量(在Z轴上)会将这个点垂直投影到Z轴:

  • 如果点在北半球,有更高概率坍缩到|0⟩(北极)
  • 如果点在赤道上(如H门创造的叠加态),坍缩到两极的概率相等

这正是为什么我们在第二篇中运行H门电路时,测量结果总是50/50。

1.4 测量误差:现实并不完美

理想测量假设我们能完美区分|0⟩和|1⟩。但在真实硬件上,测量本身也会出错------将|0⟩误判为|1⟩,或将|1⟩误判为|0⟩。这就是测量误差(readout error)。

典型超导量子比特的测量误差率在1%~3%左右。这意味着每100次测量,就有1-3次结果是错的------在需要高精度的量子算法中,这是不可忽视的。


2. 退相干:量子计算的隐形杀手

如果说测量是我们主动从量子世界提取信息的方式,那么退相干就是环境被动地从量子世界窃取信息的过程。

2.1 什么是退相干?

量子退相干是量子系统与环境发生纠缠,导致量子相干性逐渐丧失的过程。它解释了为什么宏观物体(比如你手里的手机)不表现出量子效应------它们与环境相互作用太强烈,相干性在瞬间就消失了。

退相干不改变系统的能量(不一定是向|0⟩衰减),但它会破坏叠加态中各分量之间的相位关系,使量子行为退化为经典行为。

2.2 两个关键时间:T₁ 和 T₂

量子比特的寿命由两个关键参数描述:

参数 名称 描述 典型值(超导)
T₁ 能量弛豫时间 1⟩态衰变到
T₂ 退相干时间 相位信息丧失的时间常数 20~80 μs

T₁过程:量子比特从激发态|1⟩向基态|0⟩的指数衰减,伴随能量释放到环境。

T₂过程:量子叠加态的相位信息因环境扰动而随机化,破坏相干性。注意 T₂ ≤ 2T₁ ------相位信息不可能比能量存活更久。

这两个参数共同决定了量子比特的"保质期"------在这段时间内,我们必须完成所有量子操作,否则信息就丢失了。

2.3 退相干的物理机制

退相干的核心机制是纠缠

当量子系统与环境相互作用时,系统与环境会形成纠缠态。例如,系统初始处于叠加态 (|0⟩ + |1⟩)/√2,环境初始为|E₀⟩,相互作用后演化为:

(\|0⟩\|E₀⟩ + \|1⟩\|E₁⟩)/√2

现在,系统的状态不再是纯的叠加态------如果我们只关心系统而忽略环境(取部分迹),系统的约化密度矩阵非对角元会衰减。这就是退相干在数学上的表现。

环境就像一个巨大的"信息黑洞"------系统的相位信息被稀释到环境的无数自由度中,再也无法恢复。

2.4 退相干 vs. 测量

有趣的是,退相干和测量在效果上有相似之处:都使量子态失去相干性。但它们的本质不同:

  • 测量:主动、有目的,结果是确定的坍缩到一个本征态
  • 退相干:被动、不可避免,结果是退化为经典混合态(概率分布)

退相干可以看作环境对系统的"无意识测量"


3. Qiskit实战:模拟测量与噪声

理论讲够了,让我们动手在Qiskit中模拟这些效应。

3.1 基础回顾:理想测量

首先回顾理想的量子测量------这是我们之前一直在做的:

python 复制代码
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from qiskit.visualization import plot_histogram

# 创建电路
qc = QuantumCircuit(1, 1)
qc.h(0)        # 创造叠加态
qc.measure(0, 0)  # 测量

# 理想模拟(无噪声)
sim_ideal = AerSimulator()
job_ideal = sim_ideal.run(qc, shots=1000)
counts_ideal = job_ideal.result().get_counts()
print("理想测量结果:", counts_ideal)
# 输出: 约 {'0': 500, '1': 500}

3.2 模拟测量误差

现在,我们引入测量误差------模拟真实硬件中读取结果时可能出错的情况:

python 复制代码
from qiskit_aer.noise import NoiseModel, ReadoutError

# 创建噪声模型
noise_model = NoiseModel()

# 定义测量误差:以5%的概率将0读成1,将1读成0
readout_error = ReadoutError([[0.95, 0.05],   # P(0→0)=0.95, P(0→1)=0.05
                              [0.05, 0.95]])  # P(1→0)=0.05, P(1→1)=0.95

# 将测量误差添加到所有量子比特
noise_model.add_all_qubit_readout_error(readout_error)

# 运行带噪声的模拟
sim_noisy = AerSimulator(noise_model=noise_model)
job_noisy = sim_noisy.run(qc, shots=1000)
counts_noisy = job_noisy.result().get_counts()

print("含测量误差的结果:", counts_noisy)
# 输出: 不再是完美的500/500,而是略微偏离

你会发现,原本应该在|1⟩状态出现的计数,有一部分"泄漏"到了|0⟩,反之亦然。

3.3 模拟退相干:T₁和T₂效应

更重要的噪声来源是退相干。Qiskit提供了thermal_relaxation_error来模拟T₁和T₂效应:

python 复制代码
import numpy as np
from qiskit_aer.noise import NoiseModel, thermal_relaxation_error

# 定义量子比特的弛豫参数(单位:纳秒)
T1 = 50_000  # 50 μs
T2 = 30_000  # 30 μs
gate_time = 100  # 每个门操作耗时100 ns

# 创建噪声模型
noise_model = NoiseModel()

# 为id门(等待时间)添加退相干噪声
# 注意:在实际电路中,每个门都会消耗时间,这里简化为id门代表时间流逝
error_id = thermal_relaxation_error(T1, T2, gate_time)
noise_model.add_all_qubit_quantum_error(error_id, ['id'])

# 创建一个测试电路:准备叠加态,等待一段时间(通过一系列id门),然后测量
qc_test = QuantumCircuit(1, 1)
qc_test.h(0)
# 添加10个id门,模拟时间流逝
for _ in range(10):
    qc_test.id(0)
qc_test.measure(0, 0)

# 运行模拟
sim = AerSimulator(noise_model=noise_model)
job = sim.run(qc_test, shots=1000)
counts = job.result().get_counts()

print("退相干影响下的结果:", counts)
# 输出: |1⟩的计数会减少(部分弛豫到|0⟩),且叠加态的相位也会被破坏

3.4 对比不同噪声强度的影响

让我们做一个更系统的实验,观察T₁时间对结果的影响:

python 复制代码
import matplotlib.pyplot as plt

def run_with_T1(T1_value, shots=1000):
    """在不同T1下运行电路"""
    T2 = T1_value * 0.6  # 假设T2 = 0.6 * T1
    gate_time = 100
    noise_model = NoiseModel()
    error_id = thermal_relaxation_error(T1_value, T2, gate_time)
    noise_model.add_all_qubit_quantum_error(error_id, ['id'])
    
    # 创建电路:H门 + 100个id门 + 测量
    qc = QuantumCircuit(1, 1)
    qc.h(0)
    for _ in range(100):
        qc.id(0)
    qc.measure(0, 0)
    
    sim = AerSimulator(noise_model=noise_model)
    result = sim.run(qc, shots=shots).result()
    return result.get_counts()

# 测试不同T1值
T1_values = [10_000, 20_000, 50_000, 100_000, 500_000]  # 10μs 到 500μs
results = []

for T1 in T1_values:
    counts = run_with_T1(T1)
    p1 = counts.get('1', 0) / 1000  # 测量到|1⟩的概率
    results.append(p1)
    print(f"T1 = {T1/1000:.0f} μs, P(1) = {p1:.3f}")

# 绘制结果
plt.figure(figsize=(10, 6))
plt.plot([t/1000 for t in T1_values], results, 'o-')
plt.xlabel('T1 (μs)')
plt.ylabel('测量到|1⟩的概率')
plt.title('T1弛豫时间对叠加态的影响')
plt.grid(True)
plt.show()

你会发现,T₁越短,|1⟩的概率越低------因为部分|1⟩态在等待过程中弛豫到了|0⟩。


4. 对抗退相干:量子纠错的曙光

既然退相干不可避免,我们如何应对?主要有三个方向:

4.1 物理隔离

  • 超低温:稀释制冷机将量子芯片冷却到10毫开尔文以下
  • 真空:离子阱量子计算机在超高真空中囚禁离子
  • 电磁屏蔽:多层磁屏蔽隔绝外界电磁干扰

这些措施只能减缓退相干,无法完全消除。

4.2 动态解耦

通过快速交替施加脉冲序列(如Carr-Purcell-Meiboom-Gill序列),平均掉低频噪声的影响,延长有效相干时间。

4.3 量子纠错

真正的希望在于量子纠错码------用多个物理比特编码一个逻辑比特,实时检测并纠正错误。著名的Surface Code(表面码)是目前最有前景的方案,但它需要数千个物理比特才能实现一个可靠的逻辑比特。


5. 从真机获取真实噪声参数

如果你想模拟特定IBM量子计算机的真实噪声特性,可以直接从设备获取校准数据:

python 复制代码
from qiskit_ibm_runtime import QiskitRuntimeService

# 加载账户(需要先保存token)
service = QiskitRuntimeService()

# 获取特定后端
backend = service.backend('ibm_brisbane')

# 查看该后端的噪声属性
props = backend.properties()
for qubit in range(min(3, backend.num_qubits)):
    t1 = props.qubit_property(qubit, 'T1')
    t2 = props.qubit_property(qubit, 'T2')
    print(f"Qubit {qubit}: T1={t1[0]:.1f} μs, T2={t2[0]:.1f} μs")

# 从后端直接构建噪声模型
from qiskit_aer.noise import NoiseModel
noise_model = NoiseModel.from_backend(backend)

这样,你的模拟就能尽可能接近真实硬件的表现。


6. 小结:从理论到实践

今天我们学习了量子计算的"黑暗面":

概念 本质 影响 应对
测量 主动坍缩量子态 获得经典结果,但破坏叠加 统计重复运行
测量误差 状态误判 结果失真 误差 mitigation
退相干 环境窃取信息 量子信息随时间流失 物理隔离、纠错码
T₁弛豫 能量衰减 1⟩→
T₂退相干 相位随机化 破坏干涉效应 动态解耦

关键洞察 :退相干不是测量的替代品,而是测量的泛化------环境在对系统进行无时无刻的"测量"。理解这一点,就理解了为什么量子计算机必须被严密保护,为什么算法必须在退相干发生前完成。


结语与预告

从旋转的硬币到坍缩的波函数,从理想的测量到残酷的噪声,我们已经走完了量子计算从"纸上谈兵"到"直面现实"的完整路径。量子态是脆弱的,但正是这种脆弱,让每一次成功的量子计算都显得弥足珍贵。

下一篇文章 ,我们将迈出从基础到算法的第一步------学习Deutsch-Jozsa算法,这是第一个证明量子计算机可以超越经典的算法。它虽然简单,却包含了量子算法最核心的思想:叠加、干涉、并行。


思考题

  1. 如果T₂ < T₁,意味着什么?(提示:相位信息比能量消失更快)
  2. 为什么测量误差无法通过增加shots来消除?
  3. 在退相干模拟中,如果增加id门的数量,|1⟩的测量概率会如何变化?为什么?

欢迎在评论区分享你的答案和实验发现!


参考资料

  • 1\] 开放量子系统中的退相干与噪声:测量、范数及主方程解读

  • 3\] Qiskit官方文档:Relaxation and Decoherence

  • 5\] 在噪声影响下可控量子隐形传态的理论研究

  • 7\] 波函数塌缩

  • 9\] 量子退相干(搜狐科普)

相关推荐
程序员小明儿2 小时前
量子计算探秘:从零开始的量子编程与算法之旅 · 第一篇
算法·量子计算
不想看见4042 小时前
Add Strings数字处理--力扣101算法题解笔记
数据结构·算法·leetcode
QBoson2 小时前
量子启发 AI 破解 PDE 难题:QIDNNF 让流体、波动力学模拟更稳更准
人工智能·量子计算·深度神经网络
云泽8082 小时前
C++ STL set 容器全解析:从基础用法、算法实践到云同步实战
开发语言·c++·算法
absunique3 小时前
复杂度分析中的常数优化与性能重构的技术6
算法·重构
初次攀爬者3 小时前
力扣解题-74. 搜索二维矩阵
算法·leetcode
xiaoye-duck3 小时前
《算法题讲解指南:优选算法-分治-快排》--45.数组中的第k个最大元素,46.最小的k个数
c++·算法
Galerkin码农选手3 小时前
per_tenor_quant_fp8和per_token_quant_fp8算法解读
人工智能·pytorch·算法
tankeven3 小时前
HJ125 最大最小路
c++·算法