3. 量子信道的形式化与仿真建模
在仿真中处理量子噪声,第一步不是写噪声模型,而是把“信道”变成一个可计算的对象。量子信道在数学上是完全正迹保持映射(CPTP map),记作 \(\mathcal{E}\),作用在密度矩阵 \(\rho\) 上。它必须满足两个条件:完全正性保证与任意辅助系统纠缠时仍映射到合法量子态;迹保持保证概率守恒,即 \(\mathrm{Tr}[\mathcal{E}(\rho)]=\mathrm{Tr}[\rho]=1\)。仿真框架中,信道对象的核心任务就是把这个抽象映射落地为可调用的矩阵运算。
Kraus算符:信道的“分解实现”
任何CPTP映射都可以写成Kraus表示:
\(\mathcal{E}(\rho)=\sum_{k=1}^{r} K_k \rho K_k^{\dagger}\),且满足完备性关系 \(\sum_k K_k^{\dagger}K_k = I\)。
Kraus算符 \(K_k\) 是 \(d\times d\) 复矩阵,\(r\) 为Kraus秩。仿真实现时,信道对象内部保存一个Kraus算符列表,作用时逐项计算 \(K_k\rho K_k^\dagger\) 再求和。以单比特退极化信道为例,其Kraus算符为:
import numpy as np
I = np.eye(2, dtype=complex)
X = np.array([[0, 1], [1, 0]], dtype=complex)
Y = np.array([[0, -1j], [1j, 0]], dtype=complex)
Z = np.array([[1, 0], [0, -1]], dtype=complex)
def depolarizing_kraus(p):
# p 为退极化概率,示例取 p = 0.1
return [np.sqrt(1 - 3*p/4) * I,
np.sqrt(p/4) * X,
np.sqrt(p/4) * Y,
np.sqrt(p/4) * Z]
def apply_kraus(rho, kraus_ops):
return sum(K @ rho @ K.conj().T for K in kraus_ops)
这里 \(p=0.1\) 是教学示例参数,表示以一定概率引入X/Y/Z三类Pauli错误。注意系数 \(\sqrt{1-3p/4}\) 与 \(\sqrt{p/4}\) 的平方和恰为1,这正是完备性关系的体现。实现后应做一次自检:计算 \(\sum_k K_k^\dagger K_k\) 是否等于单位矩阵,误差控制在 \(10^{-12}\) 量级,否则说明Kraus算符构造有误。
Choi矩阵:信道的“等价表征”
Kraus表示便于正向作用,但不便于判断信道性质。Choi矩阵把信道映射为 \(d^2\times d^2\) 的矩阵:
\(J(\mathcal{E}) = \sum_{i,j} |i\rangle\langle j| \otimes \mathcal{E}(|i\rangle\langle j|)\)。
它与Kraus算符的关系是 \(J(\mathcal{E})=\sum_k \mathrm{vec}(K_k)\mathrm{vec}(K_k)^\dagger\),即Choi矩阵是Kraus向量化后的外积和,秩等于Kraus秩。仿真中常用Choi矩阵做三件事:判断完全正性(\(J\ge 0\))、判断迹保持(对第二个子系统求偏迹得单位矩阵)、以及在不同表示之间转换。下面给出从Kraus构造Choi并验证的示例:
def kraus_to_choi(kraus_ops, d=2):
J = np.zeros((d*d, d*d), dtype=complex)
for K in kraus_ops:
v = K.reshape(-1, 1) # 列向量化
J += v @ v.conj().T
return J
def check_trace_preserving(J, d=2):
# 对第二个子系统求偏迹,应得到单位矩阵
Jt = J.reshape(d, d, d, d)
pt = np.einsum('ijkj->ik', Jt)
return np.allclose(pt, np.eye(d), atol=1e-10)
对退极化信道取 \(p=0.1\),构造出的Choi矩阵应为 \(4\times4\) 厄米矩阵,最小特征值非负,偏迹等于 \(I_2\)。若最小特征值出现负值,说明映射不完全正;若偏迹偏离单位矩阵,说明迹不保持。这两个判据是仿真建模中最直接的合法性检查。
仿真中的信道对象设计
一个可复用的信道对象通常同时持有Kraus列表与Choi矩阵,并提供双向转换。推荐接口包括:apply(rho) 正向作用、to_choi() 与 from_choi() 表示转换、is_cp() 与 is_tp() 合法性校验、compose(other) 信道复合。复合在Choi层面表现为矩阵乘法 \(J(\mathcal{E}_2\circ\mathcal{E}_1)=J(\mathcal{E}_2)J(\mathcal{E}_1)\)(按合适维度重排),在Kraus层面则是算符两两相乘后重新枚举,仿真中优先用Choi复合以避免Kraus秩膨胀带来的组合爆炸。
K @ rho @ K.conj().T 而非逐元素循环;Choi矩阵做特征分解前先做厄米化 (J + J.conj().T)/2,可消除浮点误差导致的微小负特征值误判。上图把两条等价路径并列呈现:左侧从输入态经Kraus算符正向作用得到输出态,下方从Kraus构造Choi矩阵,再分别用“最小特征值非负”和“偏迹等于单位阵”两个判据校验完全正性与迹保持。校验通过后,信道对象才可进入后续保真度计算;校验失败则回到Kraus系数检查,重点核对完备性关系 \(\sum_k K_k^\dagger K_k = I\) 是否成立。
建模中的常见陷阱
第一,Kraus算符不唯一,同一信道可有无穷多组Kraus分解,仿真中不必追求“标准形式”,只需保证完备性关系成立且作用结果一致。第二,振幅阻尼信道的Kraus算符含 \(\sqrt{\gamma}\) 与 \(\sqrt{1-\gamma}\) 项,当 \(\gamma=1\) 时部分算符退化为零矩阵,代码中应保留零算符或显式剔除,避免除零与秩判断异常。第三,Choi矩阵的维度是 \(d^2\times d^2\),双比特信道即为 \(16\times16\),做特征分解时注意内存与精度,建议使用 np.linalg.eigvalsh 而非通用特征值求解。第四,复合信道优先在Choi层面做矩阵乘法,Kraus层面复合会导致算符数量相乘,秩快速膨胀。
完成上述建模后,信道对象已具备“可作用、可校验、可复合”三项能力,后续计算输出态与理想态的保真度时,只需调用 apply(rho) 得到 \(\mathcal{E}(\rho)\),再与目标态做保真度评估即可。形式化表示的价值正在于此:把噪声的物理描述转化为矩阵运算,使仿真结果可复现、可验证。