2. 量子电路模拟基础回顾

在讨论后端选型之前,需要先把“模拟器到底在算什么”这件事讲清楚。量子电路模拟并不是把量子计算机搬进软件,而是用经典计算机的数据结构去表示量子态、用矩阵或张量运算去复现量子门作用,再按概率规则处理测量与噪声。理解这条链路,才能判断不同模拟器在规模、精度和速度上的取舍。

量子比特:状态不是 0 或 1,而是复振幅向量

一个量子比特的纯态写成 |ψ⟩ = α|0⟩ + β|1⟩,其中 α、β 为复数且满足 |α|² + |β|² = 1。模拟器内部通常用一个长度为 2 的复数数组保存 [α, β]。对 n 个量子比特,状态向量长度为 2ⁿ,例如 20 个量子比特就是 1,048,576 个复数;若用双精度复数(每个 16 字节),仅状态向量就约 16 MB,30 个量子比特则膨胀到约 16 GB。这个指数增长是模拟器一切性能问题的根源。

多比特系统还要区分“可分离”与“纠缠”。若 |ψ⟩ = |ψ₁⟩⊗|ψ₂⟩,状态可分解为两个小向量,模拟器可用张量网络压缩存储;一旦经过 CNOT 等门产生纠缠,就必须保留完整联合态。因此实际模拟器往往同时提供状态向量后端与张量网络后端,前者通用但吃内存,后者适合低纠缠、浅层电路。

量子门:对状态向量做受控的线性变换

单比特门是 2×2 酉矩阵,作用时只更新该比特对应的振幅对。以 Hadamard 门为例,H = (1/√2)[[1,1],[1,−1]],作用在 |0⟩ 上得到 (|0⟩+|1⟩)/√2,两个振幅均为 0.7071。模拟器实现时通常按比特位做步长索引:对第 k 个比特,把下标中该位为 0 和 1 的振幅成对取出,做 2×2 乘加后写回,时间复杂度 O(2ⁿ)。

受控门(如 CNOT、CZ、Toffoli)则先检查控制位是否为 1,只有满足条件才更新目标位。以 CNOT 为例,控制位 c、目标位 t,当 c 位为 1 时交换 t 位为 0 和 1 的两个振幅。多控门可以逐层分解为单控门与单比特门的组合,这也是多数模拟器的通用做法。门序列最终被编译成一串“门指令”,模拟器按顺序施加,得到末态向量。

测量:从振幅到经典比特,必须按概率采样

测量不是简单读取振幅。对单个比特测量,先计算该比特为 0 的概率 p₀ = Σ|αᵢ|²(i 的该位为 0),再以 p₀ 为参数做一次随机采样得到结果,然后把不匹配的分支振幅置零并重新归一化。若测量全部比特,则按 |αᵢ|² 的分布抽取一个下标 i,输出其二进制表示。模拟器通常提供“采样 shots 次”的接口,例如 shots=1024 时统计各结果出现次数,得到近似频率分布。

这里有一个常被忽略的细节:采样次数决定统计误差。若某结果理论概率为 0.5,1024 次采样的标准差约为 √(0.5×0.5/1024) ≈ 0.0156,即约 1.6 个百分点。因此比较两个电路输出差异时,shots 太小会把统计涨落误判为电路差异。工程上常把 shots 设为 4096 或 8192,或直接使用模拟器的“精确概率”接口(返回 |αᵢ|² 而非采样),避免采样噪声干扰算法验证。

噪声模型:让理想模拟更接近真实硬件

理想模拟器输出纯态,真实设备却受退相干、门误差、读出误差影响。噪声模型就是在门或测量前后插入随机错误通道。常见类型包括:

  • 去极化噪声:以概率 p 把量子态替换为完全混合态,单比特门常用 p≈1e-3 量级;
  • 振幅阻尼:模拟能量弛豫,用 T₁ 时间描述,作用强度与门持续时间相关;
  • 相位阻尼:模拟退相位,用 T₂ 时间描述;
  • 读出误差:测量时以一定概率把 0 读成 1 或反之,常用 2×2 混淆矩阵表示。

带噪声模拟有两种实现路径:密度矩阵后端直接演化 ρ,能精确表示混合态,但内存为 4ⁿ,20 比特就需约 16 TB,实际只适合小规模;更常用的是“轨迹采样”,即每次按噪声概率随机施加一个 Kraus 算子,重复多次得到一组纯态样本,再统计平均。轨迹法内存仍是 2ⁿ,但需要多次重复,计算量随轨迹数线性增长。

量子电路模拟的核心计算链路 初态 |0…0⟩ 长度 2ⁿ 复向量 [1,0,0,…,0] 量子门作用 单比特 2×2 酉矩阵 受控门按位条件更新 噪声通道 去极化 / 振幅阻尼 相位阻尼 / 读出误差 测量与采样 按 |αᵢ|² 概率采样 shots 次统计频率 两种主流后端实现路径 状态向量后端(纯态) 内存:2ⁿ × 16 字节 20 比特 ≈ 16 MB,30 比特 ≈ 16 GB 适合:通用电路、精确概率输出 噪声:轨迹采样,多次重复 密度矩阵后端(混合态) 内存:4ⁿ × 16 字节 10 比特 ≈ 16 MB,20 比特 ≈ 16 TB 适合:小规模精确噪声分析 噪声:Kraus 算子直接演化 ρ 模拟器必须解决的核心计算问题 ① 指数级状态存储:2ⁿ 或 4ⁿ 的内存增长 ② 门序列的矩阵乘加:O(2ⁿ) 每门,受控门条件更新 ③ 测量采样与统计误差:shots 决定置信度 ④ 噪声轨迹重复:计算量随轨迹数线性增长

模拟器需要解决的核心计算问题

把上面四步串起来,模拟器的核心计算问题可以归纳为四类。第一是状态存储:2ⁿ 或 4ⁿ 的内存增长决定了能模拟多少比特,这是硬上限。第二是门运算:每个门对状态向量做一次 O(2ⁿ) 的更新,门数 m 的电路总代价约 O(m·2ⁿ),受控门还要额外判断控制位。第三是测量采样:需要正确计算边缘概率并做随机抽样,shots 大小直接影响结果可信度。第四是噪声处理:密度矩阵精确但内存爆炸,轨迹法可行但需重复多次,二者在精度与成本之间形成权衡。

以一个具体例子说明参数关系:构造 12 比特 GHZ 态,电路为 H(q0) 后接 11 个 CNOT(q0→qi),理想末态为 (|0…0⟩+|1…1⟩)/√2。用状态向量后端,内存为 2¹²×16 B = 64 KB,门数 12,计算量很小;shots=4096 时,两个结果各约出现 2048 次,频率约 0.5±0.008。若加入去极化噪声 p=0.01 并采用 200 条轨迹,则末态不再是纯 GHZ 态,|0…0⟩ 与 |1…1⟩ 的概率之和会略低于 1,其余比特串出现非零概率,这正是噪声模型在模拟中“可见”的方式。判断模拟是否合理,可以对比理想概率、采样频率与噪声引入后的概率偏移是否落在预期量级内。

选型提示:先用状态向量后端加精确概率接口验证电路逻辑,再切换到带噪声轨迹模拟评估真实硬件表现;若比特数超过约 25,应优先考虑张量网络后端或分块模拟,而不是继续加内存。