3. 稳定子码的编码与校验

在上一节中,我们已经把稳定子码定义为“被一组相互对易的 Pauli 算符共同 +1 本征空间固定下来的子空间”。本节要把这个定义真正变成可计算的对象:给定生成元,如何写出生成元矩阵与校验矩阵,如何用辛内积判断它们是否对易,以及如何从生成元出发求出编码态。这三件事构成了稳定子码工程实现的主干。

一、Pauli 算符的二元辛表示

稳定子码的生成元都是 n 量子比特上的 Pauli 算符(允许带相位 ±1、±i)。忽略整体相位后,一个 Pauli 算符完全由“哪些位置是 X、哪些位置是 Z、哪些位置是 Y”决定。由于 Y = iXZ,只要记录每个比特上是否出现 X 分量和是否出现 Z 分量,就能唯一确定算符的“类型”。于是我们用一个长度为 2n 的二元向量表示它:

P = (x_1 x_2 ... x_n | z_1 z_2 ... z_n)

I -> (0|0)   X -> (1|0)   Z -> (0|1)   Y -> (1|1)

例如在 3 比特上,算符 X⊗Z⊗Y 表示为 (1 0 1 | 0 1 1)。这种表示把算符乘法变成二元向量的加法(模 2),把“是否对易”变成一次简单的双线性运算,是后续所有矩阵运算的基础。约定:向量左半部分对应 X 分量,右半部分对应 Z 分量,全文与图示保持一致。

二、生成元矩阵与校验矩阵

设稳定子群 S 由 k 个独立生成元 g_1, …, g_k 生成,则编码 k 个逻辑比特到 n 个物理比特,记作 [[n, k, d]] 码。把每个生成元的辛表示按行排列,得到一个 k × 2n 的矩阵,称为生成元矩阵 G。它描述“稳定子群由谁生成”。

与之对偶的是校验矩阵 H。H 的每一行是一个与所有生成元都对易的 Pauli 算符的辛表示,其行空间正是 S 的中心化子(在忽略相位意义下)。对稳定子码而言,H 的行空间与 G 的行空间互为辛正交补:任何一行 G 与任何一行 H 的辛内积都为 0。H 的作用是“校验”:一个错误 E 若与 H 的某一行辛内积非零,就说明它被该行对应的稳定子“探测到”,从而产生非平凡的错误症状(syndrome)。

关键关系:G 描述稳定子本身,H 描述“与稳定子对易的所有算符”。逻辑算符(X̄、Z̄)属于 H 的行空间但不属于 G 的行空间,这正是它们能作用在编码子空间上而不破坏稳定性的原因。

三、辛内积与对易关系

两个 Pauli 算符 P = (x|z)、Q = (x'|z') 是否对易,由辛内积决定:

⟨P, Q⟩ = x · z' + z · x'  (mod 2)

⟨P, Q⟩ = 0  ->  P 与 Q 对易
⟨P, Q⟩ = 1  ->  P 与 Q 反对易

这里的点乘是模 2 内积。注意辛内积是反对称的:⟨P, Q⟩ = ⟨Q, P⟩(模 2 下符号无差别),且 ⟨P, P⟩ = 0 恒成立,说明任何 Pauli 算符都与自己对易。稳定子码成立的前提是:G 的任意两行辛内积都为 0,即所有生成元两两对易。若某两行辛内积为 1,它们就反对易,无法共同定义 +1 本征空间,这组生成元就不是合法的稳定子生成元。

辛内积还有一个重要用途:判断错误是否可被探测。设错误算符 E 的辛表示为 e,则第 i 个生成元给出的症状为 s_i = ⟨g_i, e⟩。把所有 s_i 拼成症状向量 s ∈ F₂^k,就得到该错误的“指纹”。两个错误 E、E' 症状相同,当且仅当 E E' 属于中心化子,即它们的差是一个逻辑算符或稳定子——这正是量子纠错中“简并”的来源。

四、从生成元到编码态的计算

有了生成元矩阵,编码态 |ψ̄⟩ 就是所有生成元同时取 +1 本征值的态。实际计算时,最直接的方法是投影法:

  1. 取一个容易准备的参考态,例如全零态 |0…0⟩。
  2. 对每个生成元 g_i,构造投影算符 (I + g_i)/2。
  3. 把投影算符依次作用到参考态上,再归一化,得到编码态:|ψ̄⟩ ∝ ∏_i (I + g_i)/2 |0…0⟩。

由于生成元两两对易,投影算符的乘积与顺序无关,结果唯一(在归一化意义下)。对于 k 个逻辑比特,还需要指定逻辑算符 X̄_j、Z̄_j 来区分同一稳定子空间内的 2^k 个基态。工程上更常用的是把 G 化为标准形(例如通过高斯消元得到“X 部分为行简化阶梯形”的形式),再据此写出编码电路,把逻辑态映射到物理比特上。

示例(3 比特重复码):生成元 g_1 = Z_1 Z_2,g_2 = Z_2 Z_3。辛表示为 (00|110) 与 (00|011)。两者辛内积 = 0·1 + 1·0 + 0·1 + 0·1 + 0·0 + 0·0 = 0,对易,合法。编码态为 |000⟩ 与 |111⟩ 的叠加,逻辑 X̄ = X_1 X_2 X_3,逻辑 Z̄ = Z_1。该码可纠正一个比特翻转错误,症状向量 (s_1, s_2) 可区分 X_1、X_2、X_3 三种错误。

五、工程实现中的检查清单

在把一组生成元投入仿真或硬件之前,建议按以下顺序核对,避免把非法生成元带入后续流程:

  • 每个生成元的辛表示长度是否为 2n,X 段与 Z 段是否对齐。
  • G 的行是否线性独立(模 2 秩是否为 k)。
  • 任意两行辛内积是否为 0;若出现 1,说明生成元选择有误。
  • 由 G 求出的 H 是否满足 G Hᵀ = 0(模 2)。
  • 逻辑算符是否与所有生成元对易,且不属于 G 的行空间。
  • 症状向量到错误类的映射是否唯一(在可纠正错误集合内)。

下面这张图把本节的核心对象放在同一张关系图里:左侧是生成元矩阵 G 与校验矩阵 H 的辛表示结构,中间是辛内积对易判据,右侧是从生成元到编码态与症状的流向。图中同时标出了“对易则合法、反对易则非法”的判断分支,便于在实现时快速对照。

稳定子码:生成元矩阵 → 辛内积判据 → 编码态与症状 生成元矩阵 G(k × 2n) 每行 = 一个生成元的辛表示 g₁ : ( x₁ … xₙ | z₁ … zₙ ) g₂ : ( x₁ … xₙ | z₁ … zₙ ) ⋮ g_k : ( x₁ … xₙ | z₁ … zₙ ) 行空间 = 稳定子群 S 校验矩阵 H 每行 = 与所有 gᵢ 对易的算符 h₁ : ( x₁ … xₙ | z₁ … zₙ ) h₂ : ( x₁ … xₙ | z₁ … zₙ ) ⋮ h_m : ( x₁ … xₙ | z₁ … zₙ ) 行空间 = S 的中心化子 辛内积判据 ⟨P, Q⟩ = x·z′ + z·x′ (mod 2) ⟨gᵢ, gⱼ⟩ = 0 对易 → 合法生成元 ⟨gᵢ, gⱼ⟩ = 1 反对易 → 非法,需重选 G · Hᵀ = 0(模 2) 编码态计算 |ψ̄⟩ ∝ ∏ᵢ (I + gᵢ)/2 |0…0⟩ 1. 准备参考态 |0…0⟩ 2. 依次施加 (I+gᵢ)/2 3. 归一化得到 |ψ̄⟩ 4. 用 X̄ⱼ, Z̄ⱼ 区分 2ᵏ 基态 生成元两两对易 → 结果唯一 错误症状 sᵢ = ⟨gᵢ, e⟩ 症状向量 s = (s₁, …, s_k) s = 0 → 错误在中心化子内 s ≠ 0 → 错误被探测到 相同 s → 简并错误类 查表 → 选择纠正算符 合法性检查顺序 秩独立 → 两两对易 → G·Hᵀ=0 → 逻辑算符 任一不满足,生成元组不可用