1. 简介

循环码是一类非常重要的线性码,其不仅在理论上有很好的代数结构,而且其编码和译码都可以很容易地利用线性移位寄存器来实现。一些重要的码,比如二元汉明码及其对偶码都等价于循环码。

2. 定义

CV(n,q)C \subseteq V(n, q) 是一个线性码。如果 CC 的任意一个码字的循环移位还是一个码字,即当 a0a1an1Ca_0 a_1 \cdots a_{n-1} \in C 时,an1a0a1an2Ca_{n-1} a_0 a_1 \cdots a_{n-2} \in C,则称 CC 是一个循环码

3. 性质

Rn=Fq[x]/xn1R_n = F_q[x] / \langle x^n - 1 \rangle,其中 FqF_q 表示 qq 元域 GF(q)GF(q)。显然,V(n,q)V(n, q) 中的向量与 RnR_n 中的多项式之间存在着一个自然的一一对应关系:

a0a1an1a0+a1x++an1xn1a_0 a_1 \cdots a_{n-1} \leftrightarrow a_0 + a_1 x + \cdots + a_{n-1} x^{n-1}

为方便起见,将 V(n,q)V(n, q) 中的向量 a0a1an1a_0 a_1 \cdots a_{n-1}RnR_n 中的 n1n-1 次多项式 a(x)=a0+a1x++an1xn1a(x) = a_0 + a_1 x + \cdots + a_{n-1} x^{n-1} 看作是相同的。

对应的多项式系数依次从低次项到高次项。

  • 定理一:一个码 CRnC \subseteq R_n 是循环码当且仅当 CC 满足下述两个条件:
    1. 如果 a(x),b(x)Ca(x), b(x) \in C,则 a(x)+b(x)Ca(x) + b(x) \in C
    2. 如果 a(x)Ca(x) \in Cr(x)Rnr(x) \in R_n,则 r(x)a(x)Cr(x) a(x) \in C

f(x)Rnf(x) \in R_n,令 f(x)={r(x)f(x)r(x)Rn}\langle f(x) \rangle = \{r(x) f(x) | r(x) \in R_n\}。显然 f(x)\langle f(x) \rangle 是由 f(x)f(x) 生成的多项式带幺交换环 RnR_n 的一个理想。

  • 定理二:对任意 f(x)Rnf(x) \in R_nf(x)\langle f(x) \rangle 是一个循环码。

    f(x)\langle f(x) \rangle 为由 f(x)f(x) 生成的循环码。

  • 定理三:设 CCRnR_n 中的一个循环码,C{0}C \neq \{\boldsymbol{0}\},则

    1. CC 中存在惟一一个具有最低次数并且首项系数为 11 的多项式 g(x)g(x)
    2. C=g(x)C = \langle g(x) \rangle
    3. g(x)g(x) 整除 xn1x^n - 1,即 g(x)g(x)xn1x^n - 1 的因子。

4. 生成矩阵

  • 定义一:设 CCRnR_n 中的一个循环码,C{0}C \neq \{\boldsymbol{0}\}CC 中次数最低并且首项系数为 11 的多项式 g(x)g(x) 称为循环码 CC生成多项式

  • 定理四:设 g(x)=g0+g1x++grxrg(x) = g_0 + g_1 x + \cdots + g_r x^r 是一个循环码 CRnC \subseteq R_n 的生成多项式,则 g00g_0 \neq 0

  • 定理五:设 CRnC \subseteq R_n 是一个循环码,其生成多项式为

    g(x)=g0+g1x++grxrg(x) = g_0 + g_1 x + \cdots + g_r x^r

    deg(g(x))=r\deg{(g(x))} = r,则 dim(C)=nr\dim{(C)} = n-r,并且 CC生成矩阵

    G=(g0g1g2gr0000g0g1g2gr0000g0g1g2gr0000g0g1g2gr)\boldsymbol{G}=\left(\begin{array}{ccccccccc} g_{0} & g_{1} & g_{2} & \cdots & g_{r} & 0 & 0 & \cdots & 0 \\ 0 & g_{0} & g_{1} & g_{2} & \cdots & g_{r} & 0 & \cdots & 0 \\ 0 & 0 & g_{0} & g_{1} & g_{2} & \cdots & g_{r} & \cdots & 0 \\ \vdots & \vdots & \ddots & \ddots & \ddots & \ddots & & \ddots & \vdots \\ 0 & 0 & \cdots & 0 & g_{0} & g_{1} & g_{2} & \cdots & g_{r} \end{array}\right)

易知 CC 是一个 qq[n,nr][n, n-r] 循环码。

5. 校验矩阵

CRnC \subseteq R_n 是一个循环码,其生成多项式为 g(x)g(x)deg(g(x))=r\deg{(g(x))} = r。由定理三可知,存在 h(x)Rnh(x) \in R_n,使得

xn1=h(x)g(x)x^n - 1 = h(x) g(x)

因为 g(x)g(x) 的首项系数为 11,所以 h(x)h(x) 的首项系数也为 11,并且 deg(h(x))=nr\deg{(h(x))} = n-r。称 h(x)h(x) 为循环码 CC校验多项式

  • 定理六:设 CRnC \subseteq R_n 是一个循环码,其生成多项式为 g(x)g(x),校验多项式为 h(x)h(x),则对任意 c(x)Rnc(x) \in R_nc(x)c(x)CC 的一个码字当且仅当 c(x)h(x)=0c(x) h(x) = 0

  • 定理七:设 CRnC \subseteq R_n 是一个 qq[n,nr][n, n-r] 循环码,其校验多项式为

    h(x)=h0+h1x++hnrxnrh(x) = h_0 + h_1 x + \cdots + h_{n-r} x^{n-r}

    1. CC校验矩阵

      H=(hnrhnr1hnr2h00000hnrhnr1h1h00000hnrh2h1h00000hnrhnr1hnr2h0)\boldsymbol{H}=\left(\begin{array}{ccccccccc} h_{n-r} & h_{n-r-1} & h_{n-r-2} & \cdots & h_{0} & 0 & 0 & \cdots & 0 \\ 0 & h_{n-r} & h_{n-r-1} & \cdots & h_{1} & h_{0} & 0 & \cdots & 0 \\ 0 & 0 & h_{n-r} & \cdots & h_{2} & h_{1} & h_{0} & \cdots & 0 \\ \vdots & \vdots & \vdots & & \vdots & \vdots & \vdots & & \vdots \\ 0 & 0 & 0 & \cdots & h_{n-r} & h_{n-r-1} & h_{n-r-2} & \cdots & h_{0} \end{array}\right)

    2. CC对偶码 CC^\bot 是一个由多项式

      hˉ(x)=hnr+hnr1x++h0xnr\bar{h}(x) = h_{n-r} + h_{n-r-1} x + \cdots + h_0 x^{n-r}

      生成的 qq 元循环码,即 C=hˉ(x)C^\bot = \langle \bar{h}(x) \rangle

    多项式 hˉ(x)\bar{h}(x) 称为 h(x)h(x) 的互反多项式。严格来说,CC^\bot 的生成多项式应为

    h01hˉ(x)=h01(hnr+hnr1x++h0xnr)h^{-1}_0 \bar{h}(x) = h_0^{-1} (h_{n-r} + h_{n-r-1} x + \cdots + h_0 x^{n-r})

  • 定理八:二元汉明码 Ham(r,2)\mathrm{Ham}(r, 2) 等价于一个循环码。

    由于循环码的对偶码还是循环码,所以二元汉明码 Ham(r,2)\mathrm{Ham}(r, 2) 也等价于一个循环码。

  • 定理九:设 p(x)p(x) 是二元域 GF(2)GF(2) 上的一个本原多项式deg(p(x))=r\deg{(p(x))} = r,则循环码 p(x)\langle p(x) \rangle 就是二元汉明码 Ham(r,2)\mathrm{Ham}(r, 2),其中 p(x)Rn\langle p(x) \rangle \subseteq R_nn=2r1n = 2^r - 1

qq 元汉明码 Ham(r,q)\mathrm{Ham}(r, q) 不一定等价于一个循环码,但如果 rrq1q-1 互素,即 gcd(r,q1)=1\gcd{(r, q-1)} = 1,则 qq 元汉明码 Ham(r,q)\mathrm{Ham}(r, q) 一定等价于一个循环码。

6. 编码方法

CC 是一个 qq[n,nr][n, n-r] 循环码,其生成多项式为 g(x)g(x)deg(g(x))=r\deg{(g(x))} = r。显然,CCnrn-r 个信息位,rr 个校验位。CC 可以对 V(nr,q)V(n-r, q) 中的数字信息进行编码。

循环码有两种非常直接的编码方法:一种是非系统的,另一种是系统的。

6.1 非系统编码方法

对任意信源信息向量 a0a1anr1V(nr,q)a_0 a_1 \cdots a_{n-r-1} \in V(n-r, q),构造信息多项式

a(x)=a0+a1x++anr1xnr1a(x) = a_0 + a_1 x + \cdots + a_{n-r-1} x^{n-r-1}

这个多项式对应于循环码 CC 中的一个码字 c(x)=a(x)g(x)c(x) = a(x) g(x)。因此,信源向量

a0a1anr1V(nr,q)a_0 a_1 \cdots a_{n-r-1} \in V(n-r, q)

被编码为 CC 中的码字 c(x)=a(x)g(x)c(x) = a(x) g(x)

6.2 系统编码方法

对任意信源信息向量 a0a1anr1V(nr,q)a_0 a_1 \cdots a_{n-r-1} \in V(n-r, q),构造信息多项式

aˉ(x)=a0xn1+a1xn2++anr1xr\bar{a}(x) = a_0 x^{n-1} + a_1 x^{n-2} + \cdots + a_{n-r-1} x^r

显然,当 a0,a1,,anr1a_0, a_1, \cdots, a_{n-r-1} 不全为 00 时,rdeg(aˉ(x))n1r \leq \deg{(\bar{a}(x))} \leq n-1。用 g(x)g(x) 去除 aˉ(x)\bar{a}(x),得到

aˉ(x)=q(x)g(x)+r(x)\bar{a}(x) = q(x) g(x) + r(x)

其中 deg(r(x))<deg(g(x))=r\deg{(r(x))} < \deg{(g(x))} = r。信源信息向量 a0a1anr1V(nr,q)a_0 a_1 \cdots a_{n-r-1} \in V(n-r, q) 被编码为循环码 CC 中的码字

c(x)=q(x)g(x)=aˉ(x)r(x)c(x) = q(x) g(x) = \bar{a}(x) - r(x)

由于 aˉ(x)\bar{a}(x)r(x)r(x) 没有相同的项,如果将 c(x)c(x) 中的 xx 的项按升幂次序排序,则码字中的后 nrn-r 位就是信息位,前 rr 位是校验位。因此这种编码方案是一种系统编码。

附录

  • 《编码理论基础》by 陈鲁生