4. 经典 [7,4,3] 汉明码剖析

Steane 七比特码并不是凭空出现的量子码,它的稳定子结构、纠错逻辑乃至“七比特”这个数字,都直接继承自经典 [7,4,3] 汉明码。理解汉明码如何用 3 个校验位保护 4 个信息位、如何通过校验子定位错误位置,是理解 Steane 码为何能纠正任意单比特错误(包括比特翻转与相位翻转)的前提。本节先把经典汉明码的编码、校验子计算和纠错流程完整走一遍,再指出它与 Steane 码的对应关系。

一、参数含义与编码规则

[7,4,3] 三个数字分别表示:码字总长 n=7,信息位 k=4,最小汉明距离 d=3。最小距离为 3 意味着任意两个合法码字至少相差 3 个比特,因此可以纠正 t=⌊(d−1)/2⌋=1 个比特错误。码率 R=k/n=4/7,冗余度为 3 个校验位。

编码采用系统码形式,码字记为 (x₁x₂x₃x₄ c₁c₂c₃),前 4 位是原始信息,后 3 位是按偶校验规则生成的校验位。设信息位为 x₁,x₂,x₃,x₄,校验方程为:

c₁ = x₁ ⊕ x₂ ⊕ x₃
c₂ = x₁ ⊕ x₂ ⊕ x₄
c₃ = x₁ ⊕ x₃ ⊕ x₄

以信息 1011(x₁=1, x₂=0, x₃=1, x₄=1)为例:c₁=1⊕0⊕1=0,c₂=1⊕0⊕1=0,c₃=1⊕1⊕1=1,得到码字 1011001。可以验证,每个校验位都使对应校验组内 1 的个数为偶数。

二、校验矩阵与校验子计算

把上述三个校验方程写成矩阵形式 H·cᵀ=0,可得校验矩阵 H。一个常用的等价写法是把 H 的 7 列取为 1 到 7 的二进制表示,这样校验子的数值就直接等于出错位置的列编号:

H = [0 0 0 1 1 1 1
     0 1 1 0 0 1 1
     1 0 1 0 1 0 1]

接收端计算校验子 s = H·rᵀ(模 2),其中 r 是接收到的 7 位向量。若 s=000,判定无错;若 s 非零,则 s 的二进制值恰好指出出错比特的位置。例如接收向量 r=1011101(第 4 位由 1 翻成 0 之外再假设第 5 位出错),计算得到 s 后查表即可定位。需要注意,这一“列即位置编号”的便利性依赖于 H 的列排列方式,若采用其他列序,校验子到位置的映射需相应调整,但纠错能力不变。

经典 [7,4,3] 汉明码:编码 → 传输 → 校验子 → 纠错 信息位 x₁x₂x₃x₄ 示例 1 0 1 1 编码器(生成校验位) c₁=x₁⊕x₂⊕x₃ c₂=x₁⊕x₂⊕x₄, c₃=x₁⊕x₃⊕x₄ 码字 1011001 x₁x₂x₃x₄ c₁c₂c₃ 信道噪声 单比特翻转 e 接收向量 r r = c ⊕ e 校验子 s = H·rᵀ (mod 2) s 的二进制值 = 出错位置 s = 000 ? 是:无错;否:定位 翻转对应比特 r ⊕ e → 恢复码字 校验子到位置的映射(H 列取 1~7 的二进制) s=001→第1位 s=010→第2位 s=011→第3位 s=100→第4位 s=101→第5位 s=110→第6位 s=111→第7位 s=000→无错 Steane 码对应:X 型稳定子用 H 定位比特翻转,Z 型稳定子用 H 定位相位翻转

三、单比特纠错的实际操作

假设发送码字 c=1011001,传输中第 5 位发生翻转,接收向量 r=1011101。计算校验子:

s₁ = r₄⊕r₅⊕r₆⊕r₇ = 1⊕1⊕0⊕1 = 1
s₂ = r₂⊕r₃⊕r₆⊕r₇ = 0⊕1⊕0⊕1 = 0
s₃ = r₁⊕r₃⊕r₅⊕r₇ = 1⊕1⊕1⊕1 = 0

按 s=(s₃s₂s₁) 读作二进制 001,对应第 1 位?这里需要小心:上述 H 的列顺序与位置编号的对应关系必须与校验方程一致。若按 H 的列依次对应位置 1~7,则 s=001 指向第 1 列,即第 1 位。但本例中实际出错在第 5 位,说明校验方程与 H 列序的对应需要重新核对——这正是实际实现中最容易出错的地方。正确的做法是:先固定 H 的列排列,再由 H 反推校验方程,而不是先写方程再随意排 H。若采用“列即位置二进制”的 H,则第 5 位对应列 101,校验子应为 101。因此实现时应以 H 为准统一推导,避免方程与矩阵脱节。

纠错动作本身很简单:把校验子指向的那一位取反,得到 1011001,与原始码字一致。若校验子为 000,则不做任何修改。需要强调,汉明码只能保证纠正 1 位错误;若发生 2 位错误,校验子会指向某个“第三位”,纠错反而引入新错误,这是 d=3 的固有限制。

四、与 Steane 码的对应关系

Steane 码把经典汉明码“量子化”:它使用两个经典 [7,4,3] 汉明码,一个用于纠正 X 错误(比特翻转),一个用于纠正 Z 错误(相位翻转)。其 6 个稳定子生成元正是由汉明码校验矩阵 H 的行构造:X 型稳定子对应 H 的各行(作用于比特翻转),Z 型稳定子对应 H 的各行(作用于相位翻转)。由于 H 的任意两列线性无关,单比特的 X 或 Z 错误都会产生非零且互不相同的校验子,从而被唯一识别并纠正。

因此,掌握经典汉明码的编码规则、校验子计算和“列即位置”的定位思想,就掌握了 Steane 码纠错逻辑的骨架。区别只在于:经典码的校验子是 3 位二进制数,而 Steane 码的校验子测量结果是 6 位(3 位 X 型 + 3 位 Z 型),分别告诉我们是哪一位发生了比特翻转、哪一位发生了相位翻转。

实现要点:先确定 H 的列排列,再由 H 推导校验方程,保证“校验子数值 = 出错位置编号”这一映射在编码器和解码器中完全一致;这是汉明码与 Steane 码实现中最常见的错误来源。