1. 简介
循环码是一类非常重要的线性码,其不仅在理论上有很好的代数结构,而且其编码和译码都可以很容易地利用线性移位寄存器来实现。一些重要的码,比如二元汉明码及其对偶码都等价于循环码。
2. 定义
设 C⊆V(n,q) 是一个线性码。如果 C 的任意一个码字的循环移位还是一个码字,即当 a0a1⋯an−1∈C 时,an−1a0a1⋯an−2∈C,则称 C 是一个循环码。
3. 性质
令 Rn=Fq[x]/⟨xn−1⟩,其中 Fq 表示 q 元域 GF(q)。显然,V(n,q) 中的向量与 Rn 中的多项式之间存在着一个自然的一一对应关系:
a0a1⋯an−1↔a0+a1x+⋯+an−1xn−1
为方便起见,将 V(n,q) 中的向量 a0a1⋯an−1 与 Rn 中的 n−1 次多项式 a(x)=a0+a1x+⋯+an−1xn−1 看作是相同的。
对应的多项式系数依次从低次项到高次项。
- 定理一:一个码 C⊆Rn 是循环码当且仅当 C 满足下述两个条件:
- 如果 a(x),b(x)∈C,则 a(x)+b(x)∈C;
- 如果 a(x)∈C,r(x)∈Rn,则 r(x)a(x)∈C。
设 f(x)∈Rn,令 ⟨f(x)⟩={r(x)f(x)∣r(x)∈Rn}。显然 ⟨f(x)⟩ 是由 f(x) 生成的多项式带幺交换环 Rn 的一个理想。
4. 生成矩阵
-
定义一:设 C 是 Rn 中的一个循环码,C={0}。C 中次数最低并且首项系数为 1 的多项式 g(x) 称为循环码 C 的生成多项式。
-
定理四:设 g(x)=g0+g1x+⋯+grxr 是一个循环码 C⊆Rn 的生成多项式,则 g0=0。
-
定理五:设 C⊆Rn 是一个循环码,其生成多项式为
g(x)=g0+g1x+⋯+grxr
deg(g(x))=r,则 dim(C)=n−r,并且 C 的生成矩阵为
G=⎝⎜⎜⎜⎜⎜⎜⎛g000⋮0g1g00⋮0g2g1g0⋱⋯⋯g2g1⋱0gr⋯g2⋱g00gr⋯⋱g100grg2⋯⋯⋯⋱⋯000⋮gr⎠⎟⎟⎟⎟⎟⎟⎞
易知 C 是一个 q 元 [n,n−r] 循环码。
5. 校验矩阵
设 C⊆Rn 是一个循环码,其生成多项式为 g(x),deg(g(x))=r。由定理三可知,存在 h(x)∈Rn,使得
xn−1=h(x)g(x)
因为 g(x) 的首项系数为 1,所以 h(x) 的首项系数也为 1,并且 deg(h(x))=n−r。称 h(x) 为循环码 C 的校验多项式。
-
定理六:设 C⊆Rn 是一个循环码,其生成多项式为 g(x),校验多项式为 h(x),则对任意 c(x)∈Rn,c(x) 是 C 的一个码字当且仅当 c(x)h(x)=0。
-
定理七:设 C⊆Rn 是一个 q 元 [n,n−r] 循环码,其校验多项式为
h(x)=h0+h1x+⋯+hn−rxn−r
则
-
C 的校验矩阵为
H=⎝⎜⎜⎜⎜⎜⎜⎛hn−r00⋮0hn−r−1hn−r0⋮0hn−r−2hn−r−1hn−r⋮0⋯⋯⋯⋯h0h1h2⋮hn−r0h0h1⋮hn−r−100h0⋮hn−r−2⋯⋯⋯⋯000⋮h0⎠⎟⎟⎟⎟⎟⎟⎞
-
C 的对偶码 C⊥ 是一个由多项式
hˉ(x)=hn−r+hn−r−1x+⋯+h0xn−r
生成的 q 元循环码,即 C⊥=⟨hˉ(x)⟩。
多项式 hˉ(x) 称为 h(x) 的互反多项式。严格来说,C⊥ 的生成多项式应为
h0−1hˉ(x)=h0−1(hn−r+hn−r−1x+⋯+h0xn−r)
-
定理八:二元汉明码 Ham(r,2) 等价于一个循环码。
由于循环码的对偶码还是循环码,所以二元汉明码 Ham(r,2) 也等价于一个循环码。
-
定理九:设 p(x) 是二元域 GF(2) 上的一个本原多项式,deg(p(x))=r,则循环码 ⟨p(x)⟩ 就是二元汉明码 Ham(r,2),其中 ⟨p(x)⟩⊆Rn,n=2r−1。
q 元汉明码 Ham(r,q) 不一定等价于一个循环码,但如果 r 与 q−1 互素,即 gcd(r,q−1)=1,则 q 元汉明码 Ham(r,q) 一定等价于一个循环码。
6. 编码方法
设 C 是一个 q 元 [n,n−r] 循环码,其生成多项式为 g(x),deg(g(x))=r。显然,C 有 n−r 个信息位,r 个校验位。C 可以对 V(n−r,q) 中的数字信息进行编码。
循环码有两种非常直接的编码方法:一种是非系统的,另一种是系统的。
6.1 非系统编码方法
对任意信源信息向量 a0a1⋯an−r−1∈V(n−r,q),构造信息多项式
a(x)=a0+a1x+⋯+an−r−1xn−r−1
这个多项式对应于循环码 C 中的一个码字 c(x)=a(x)g(x)。因此,信源向量
a0a1⋯an−r−1∈V(n−r,q)
被编码为 C 中的码字 c(x)=a(x)g(x)。
6.2 系统编码方法
对任意信源信息向量 a0a1⋯an−r−1∈V(n−r,q),构造信息多项式
aˉ(x)=a0xn−1+a1xn−2+⋯+an−r−1xr
显然,当 a0,a1,⋯,an−r−1 不全为 0 时,r≤deg(aˉ(x))≤n−1。用 g(x) 去除 aˉ(x),得到
aˉ(x)=q(x)g(x)+r(x)
其中 deg(r(x))<deg(g(x))=r。信源信息向量 a0a1⋯an−r−1∈V(n−r,q) 被编码为循环码 C 中的码字
c(x)=q(x)g(x)=aˉ(x)−r(x)
由于 aˉ(x) 与 r(x) 没有相同的项,如果将 c(x) 中的 x 的项按升幂次序排序,则码字中的后 n−r 位就是信息位,前 r 位是校验位。因此这种编码方案是一种系统编码。
附录