9.4 线性分组码
9.4.1 基本概念
- 代数码:利用代数关系式产生监督位的编码
- 线性分组码:代数码的一种,其监督位和信息位的关系由线性代数方程决定
- 汉明码:一种能够纠正一个错码的线性分组码(纠1位错,至少3个码元)
- 校正子:在偶数监督码中,计算 a n − 1 ⊕ a n − 2 ⊕ . . . ⊕ a 0 = 0 a_{n-1} \oplus a_{n-2} \oplus ... \oplus a_0=0 an−1⊕an−2⊕...⊕a0=0,实际上就是计算 S = a n − 1 ⊕ a n − 2 ⊕ . . . ⊕ a 0 S=a_{n-1} \oplus a_{n-2} \oplus ... \oplus a_0 S=an−1⊕an−2⊕...⊕a0,并检验 S S S是否等于0。 S S S称为校正子
- 监督关系式: S = a n − 1 ⊕ a n − 2 ⊕ . . . ⊕ a 0 S=a_{n-1} \oplus a_{n-2} \oplus ... \oplus a_0 S=an−1⊕an−2⊕...⊕a0称为监督关系式
9.4.2 纠错基本原理
S = a n − 1 ⊕ a n − 2 ⊕ . . . ⊕ a 0 S=a_{n-1} \oplus a_{n-2} \oplus ... \oplus a_0 S=an−1⊕an−2⊕...⊕a0中。 S S S只有两种取值:表示有错和无错,而不能进一步指明错码的位置
若此码组长度增加一位,则能增加一个监督关系式。这样就能得到两个校正子
两个校正子的可能取值有4种组合,即00,01,10,11,能表示4种不同的信息
若用其中一种组合表示无错码,则其他3种组合可以用于指明一位错码的3种不同位置,从而可以有纠错能力
- 一般而言,若有 r r r个监督关系式,则 r r r个校正子可以指明一个错码的 ( 2 r − 1 ) (2^r-1) (2r−1)个不同位置
当校正子可以指明的错码位数目等于或大于码组长度 n n n时,才能够纠正码组中任何一个位置上的错码,即要求
2 r − 1 ≥ n 2^r-1 \geq n 2r−1≥n或 2 r ≥ k + r + 1 2^r \geq k+r+1 2r≥k+r+1
- 汉明码:一种能够纠正一个错码的线性分组码
【填空题】要求设计一个能够纠正1个错码的分组码 ( n , k ) (n,k) (n,k),设给定的码组中有4个信息位,即 k = 4 k=4 k=4,求 n n n的值
解:由 2 r − 1 ≥ n 2^r-1 \geq n 2r−1≥n或 2 r ≥ r + k + 1 2^r \geq r+k+1 2r≥r+k+1知,这时要求监督位数 r ≥ 3 r \geq 3 r≥3
若取 r = 3 r=3 r=3,则 n = k + r = 7 n=k+r=7 n=k+r=7
现在用 a 6 a 5 a 4 a 3 a 2 a 1 a 0 a_6a_5a_4a_3a_2a_1a_0 a6a5a4a3a2a1a0表示这7个码元,用 S 1 S 2 S 3 S_1S_2S_3 S1S2S3表示校正子,则这3个校正子恰好能够指明 2 3 − 1 = 7 2^3-1=7 23−1=7个错码的位置
若规定校正子和错码位置的关系如下表:
S 1 S 2 S 3 S_1S_2S_3 S1S2S3 | 错码位置 | S 1 S 2 S 3 S_1S_2S_3 S1S2S3 | 错码位置 |
---|---|---|---|
001 | a 0 a_0 a0 | 101 | a 4 a_4 a4 |
010 | a 1 a_1 a1 | 110 | a 5 a_5 a5 |
100 | a 2 a_2 a2 | 111 | a 6 a_6 a6 |
011 | a 3 a_3 a3 | 000 | 无错码 |
则仅当发生一个错码,且位置在 a 6 a_6 a6、 a 5 a_5 a5、 a 4 a_4 a4或 a 2 a_2 a2时,校正子 S 1 S_1 S1的值才等于1;否则 S 1 S_1 S1的值为零。这就移位着 a 6 a 5 a 4 a 2 a_6a_5a_4a_2 a6a5a4a2四个码元构成偶数监督关系:
S 1 = a 6 ⊕ a 5 ⊕ a 4 ⊕ a 2 S_1=a_6 \oplus a_5 \oplus a_4 \oplus a_2 S1=a6⊕a5⊕a4⊕a2
S 2 = a 6 ⊕ a 5 ⊕ a 3 ⊕ a 1 S_2=a_6 \oplus a_5 \oplus a_3 \oplus a_1 S2=a6⊕a5⊕a3⊕a1
S 3 = a 6 ⊕ a 4 ⊕ a 3 ⊕ a 0 S_3=a_6 \oplus a_4 \oplus a_3 \oplus a_0 S3=a6⊕a4⊕a3⊕a0
{ a 2 = a 6 ⊕ a 5 ⊕ a 4 a 1 = a 6 ⊕ a 5 ⊕ a 3 a 0 = a 6 ⊕ a 4 ⊕ a 3 \begin{cases} a_2=a_6 \oplus a_5 \oplus a_4\\ a_1=a_6 \oplus a_5 \oplus a_3\\ a_0=a_6 \oplus a_4 \oplus a_3 \end{cases} ⎩⎪⎨⎪⎧a2=a6⊕a5⊕a4a1=a6⊕a5⊕a3a0=a6⊕a4⊕a3
【掌握判断】若接受码组为0000011,则按上三式计算得到: S 1 = 0 , S 2 = 1 , S 3 = 1 S_1=0,S_2=1,S_3=1 S1=0,S2