3. 经典线性码与CSS构造
CSS码(Calderbank–Shor–Steane码)是量子纠错中最具工程价值的一类稳定子码,它的核心思想非常朴素:用两个经典线性码“拼”出一个量子码。要真正掌握CSS构造,必须先回到经典线性码的代数语言——生成矩阵、校验矩阵与对偶码,再理解它们如何被翻译成量子稳定子。
一、经典线性码的三个基本对象
设码字是二元域 GF(2) 上的 n 维向量。一个经典线性码 C 是 GF(2)n 的子空间,维数为 k,记作 [n, k] 码。描述它最常用的两个矩阵是:
- 生成矩阵 G:k×n 矩阵,行空间即为码 C。编码就是把 k 位信息向量 u 映射为码字 c = uG。
- 校验矩阵 H:(n−k)×n 矩阵,满足 HcT = 0 当且仅当 c ∈ C。也就是说,H 的行空间是 C 的正交补。
- 对偶码 C⊥:所有与 C 中每个码字内积为零的向量构成的集合,维数为 n−k,其生成矩阵正是 H。
三者满足基本关系:GHT = 0。这个等式是后面一切构造的代数基石。举例来说,[7,4,3] 汉明码的校验矩阵可取为 3×7 矩阵,其 7 列恰好是全部非零三位二进制向量;它的对偶码是 [7,3,4] 单纯码。这两个码正是 Steane 码的经典来源。
二、从经典码到量子稳定子
CSS构造的关键观察是:量子比特上的 Pauli X 型错误和 Z 型错误可以分开处理。若取两个经典码 C1 与 C2,并要求 C2 ⊆ C1(这是包含关系,不是相等),则可定义稳定子生成元:
- 对 C2⊥ 的每个基向量定义 X 型稳定子 X(v);
- 对 C1 的每个基向量定义 Z 型稳定子 Z(w)。
两者对易的条件正是 v·w = 0,而 C2 ⊆ C1 保证了 C1 ⊆ C2⊥,因此所有 X 稳定子与 Z 稳定子两两对易。稳定子个数为 (n−k2) + k1,独立量子比特数为 n,于是编码的逻辑比特数为:
k_quantum = n − (n − k2) − k1 = k1 − k2
这就是CSS码的参数公式 [[n, k1−k2, d]]。码距 d 取 C1∖C2 中非零码字的最小重量,以及 C2⊥∖C1⊥ 中非零码字的最小重量,两者中的较小值。
三、一个可手算的构造示例
以 Steane 码为例,取 C1 为 [7,4,3] 汉明码,C2 = C1⊥ 为 [7,3,4] 单纯码。此时 C2 ⊆ C1 成立(因为汉明码自对偶包含),于是:
- X 稳定子个数 = n − k2 = 7 − 3 = 4;
- Z 稳定子个数 = k1 = 4;
- 逻辑比特数 = k1 − k2 = 4 − 3 = 1;
- 码距 d = 3,得到 [[7,1,3]] Steane 码。
具体地,若汉明码校验矩阵 H 的列为 001,010,011,100,101,110,111,则 Z 稳定子取 H 的四行(对应 C1 的校验),X 稳定子取 H 的四行(因为 C2⊥ = C1,此时 X 与 Z 稳定子形式相同)。这正是 Steane 码“X 与 Z 对称”的来源,也是它实现横向逻辑门特别方便的原因。
四、译码时两个经典译码器的分工
CSS码的工程优势在于译码可以完全复用经典算法。测量全部 X 型稳定子得到 X 错误(比特翻转)的校验子,送入 C2⊥ 对应的经典译码器;测量全部 Z 型稳定子得到 Z 错误(相位翻转)的校验子,送入 C1 对应的经典译码器。两个译码器独立工作,互不干扰。需要注意:只有当一个错误模式与所有稳定子都对易、却不在稳定子群中时,才会造成逻辑错误,这正是码距 d 所度量的最坏情况。
理解到这一层,CSS码就不再是抽象的量子对象,而是“两个经典码 + 一个包含关系 + 一组对易约束”的代数产物。后续的表面码、量子 LDPC 码,都可以放回这个框架中重新审视。