4. 稳定子码的编码与解码框架
稳定子码的工程价值,最终要落到“怎么把逻辑信息编进去、怎么把错误读出来、怎么把它改回去”这条通路上。编码与解码框架正是这条通路的骨架:编码端把 k 个逻辑量子比特映射为 n 个物理量子比特的稳定子态;解码端通过测量校验算符获得错误症候,再由症候推断错误位置并施加恢复。理解这一框架,是后续构造具体稳定子码、设计校验算符与综合编码电路的操作基础。
一、编码映射:从逻辑态到物理态
稳定子码 C 由阿贝尔稳定子群 S 定义,码空间是所有满足 s|ψ⟩=|ψ⟩(对任意 s∈S)的态集合。若 S 由 n−k 个独立生成元 g₁,…,gn−k 给出,则码空间维数为 2k,可承载 k 个逻辑量子比特。编码映射 V: (C²)⊗k → (C²)⊗n 的任务,就是把任意逻辑态送入这个码空间。
实际操作中,编码电路通常采用“先制备稳定子态、再注入逻辑信息”的结构。以最常见的做法为例:先把 n 个物理量子比特初始化到 |0⟩⊗n,用一组受控非门与 Hadamard 门把其中 n−k 个辅助位制备成稳定子本征态,再通过受控门把 k 个逻辑位“写入”码空间。对 CSS 类稳定子码,编码电路可以分解为若干段:X 型稳定子对应 Hadamard 与 CNOT 的组合,Z 型稳定子对应纯 CNOT 网络。设计编码电路时,关键约束是:电路作用后,每个生成元 gi 都必须满足 gi|ψL⟩=|ψL⟩,即编码后的态必须是所有稳定子的 +1 本征态。
一个便于检查的判据是:把编码电路写成 Clifford 电路,追踪每个生成元在 Heisenberg 图像下的演化,若最终每个 gi 都映射为只含 Z(或只含 X)的算符,则说明编码正确。这一步在手工推导和程序化验证中都很实用。
二、解码流程:症候提取与错误推断
解码的第一步是测量校验算符。对每个生成元 gi 测量其本征值,得到 ±1 的结果;把 −1 记为 1、+1 记为 0,就得到长度为 n−k 的症候向量 σ。若错误 E 与 gi 反对易,则 gi 的测量结果翻转为 −1;若对易,则保持 +1。因此症候只反映“错误与哪些稳定子反对易”,而不直接给出错误本身——这正是稳定子码纠错的本质:症候是错误在稳定子群上的“投影”。
第二步是由症候推断错误。设错误为 Pauli 算符 E,其症候为 σ(E),解码器要找一个候选错误 Ê 使得 σ(Ê)=σ(E),然后施加 ʆ 恢复。由于同一症候可能对应多个错误(它们之间相差一个稳定子元素或逻辑算符),解码器通常选择“最可能”的那个,例如在去极化噪声模型下选择权重最小的错误,这就是最小权重解码。若候选错误与真实错误相差一个稳定子,恢复后态不变,纠错成功;若相差一个逻辑算符,则发生逻辑错误。
第三步是恢复。恢复操作就是把推断出的错误逆算符作用回数据比特。对 Pauli 错误,逆算符等于自身,因此恢复就是再施加一次同样的 X、Y 或 Z。恢复后应再次测量症候,确认全部回到 +1;若仍有 −1,说明推断有误或发生了多比特错误,需要进入更高层处理。
三、校验算符在错误探测与恢复中的作用
校验算符(即稳定子生成元)在框架中承担三重角色。第一是探测:它们是唯一被允许测量的观测量,测量结果构成症候,把连续的错误空间压缩为离散的比特串。第二是定位:不同错误模式对应不同症候,症候表(syndrome table)把症候映射到候选错误,解码器据此定位错误。第三是验证:恢复后复测症候,是判断纠错是否成功的直接依据。
需要强调的是,校验算符的选取直接决定码的纠错能力。若两个错误 E₁、E₂ 满足 E₁†E₂ ∈ S,则它们症候相同且作用等价,无需区分;若 E₁†E₂ 是逻辑算符,则症候相同但作用不同,会导致逻辑错误。因此设计校验算符时,必须保证任意两个权重不超过 t 的错误之积不落在逻辑算符集合中,这就是距离 d=2t+1 的稳定子条件。
四、一个可操作的小例子
以三比特重复码为例(它只能纠正 X 错误,用于说明框架而非完整量子纠错)。稳定子为 g₁=Z₁Z₂、g₂=Z₂Z₃,n=3、k=1。编码:|0_L⟩=|000⟩,|1_L⟩=|111⟩,用两个 CNOT 把逻辑位复制到两个辅助位。若数据位发生 X₁,则 g₁ 测得 −1、g₂ 测得 +1,症候为 (1,0),查表定位到第 1 位,施加 X₁ 恢复。若发生 X₂,症候为 (1,1);若发生 X₃,症候为 (0,1)。三个单比特错误对应三个不同症候,因此可区分并纠正。
把这条框架记牢,后续构造具体稳定子码时,就可以按“定生成元 → 验证对易与独立 → 设计编码电路 → 建症候表 → 设计解码与恢复 → 复测验证”的顺序推进,每一步都有明确的输入、操作与判据。