循环码:有限域上多项式环的主理想

参考书籍:Blahut R E. Algebraic codes for data transmission[M]. Cambridge university press, 2003.

线性码

线性码定义

定义:线性码 C \mathscr C C,是有限域上线性空间 G F ( q ) n GF(q)^n GF(q)n子空间。长度为 n n n,子空间维度为 k k k,最小距离为 d d d,那么记做 ( n , k , d ) (n,k,d) (n,k,d)码。

性质最好的编码,几乎都是线性码,因此编码理论只研究线性码。

线性码的多项式形式

C \mathscr C C是有限域 G F ( q ) GF(q) GF(q)上的线性码,其校验矩阵 H ∈ G F ( q ) ( n − k ) × n H \in GF(q)^{(n-k) \times n} HGF(q)(nk)×n c H T = 0 \pmb c H^T = 0 cHT=0。假设 m ∣ n − k m | n-k mnk,那么可以将 m m m个元素的向量视作扩域 G F ( q m ) GF(q^m) GF(qm)里的元素。令 r : = ( n − k ) / m r:=(n-k)/m r:=(nk)/m,那么可以写作 H ∈ G F ( q m ) r × n H \in GF(q^m)^{r \times n} HGF(qm)r×n

对于特殊形式的 H H H,如下
H = [ γ 1 0 γ 1 1 ⋯ γ 1 n − 1 γ 2 0 γ 2 1 ⋯ γ 2 n − 1 ⋮ γ r 0 γ r 1 ⋯ γ r n − 1 ] H = \begin{bmatrix} \gamma_1^0 & \gamma_1^1 & \cdots & \gamma_1^{n-1}\\ \gamma_2^0 & \gamma_2^1 & \cdots & \gamma_2^{n-1}\\ \vdots\\ \gamma_r^0 & \gamma_r^1 & \cdots & \gamma_r^{n-1}\\ \end{bmatrix} H= γ10γ20γr0γ11γ21γr1γ1n1γ2n1γrn1
那么将一个码字 c = ( c 0 , ⋯   , c n − 1 ) ∈ C \pmb c = (c_0,\cdots,c_{n-1}) \in \mathscr C c=(c0,,cn1)C写作码字多项式(codeword polynomial),
c ( x ) : = ∑ i = 0 n − 1 c i x i ∈ G F ( q ) [ x ] c(x) := \sum_{i=0}^{n-1} c_i x^i \in GF(q)[x] c(x):=i=0n1cixiGF(q)[x]
那么 c H T = 0    ⟺    ∀ j , c ( γ j ) = 0 \pmb c H^T = 0 \iff \forall j,c(\gamma_j)=0 cHT=0j,c(γj)=0,也就是说子空间 C \mathscr C C同构于仿射簇 V = { γ 1 , ⋯   , γ r } V = \{\gamma_1,\cdots,\gamma_r\} V={γ1,,γr}的理想 I ( V ) = { c ( x ) ∈ G F ( q ) [ x ] :    c ( γ ) = 0 , ∀ γ ∈ V } I(V) = \{c(x) \in GF(q)[x] :\,\, c(\gamma)=0,\forall \gamma \in V\} I(V)={c(x)GF(q)[x]:c(γ)=0,γV}

循环码

循环码定义

定义:一个线性码 C \mathscr C C叫做循环码(cyclic code),如果码字 c = ( c 0 , ⋯   , c n − 1 ) ∈ C \pmb c = (c_0,\cdots,c_{n-1}) \in \mathscr C c=(c0,,cn1)C,令 C S CS CS是 cyclic shift 操作,那么满足 c ′ = C S ( c ) : = ( c n − 1 , c 0 , ⋯   , c n − 2 ) ∈ C \pmb c' =CS(\pmb c):= (c_{n-1},c_0,\cdots,c_{n-2}) \in \mathscr C c=CS(c):=(cn1,c0,,cn2)C

定理:多项式环 R = G F ( q ) [ x ] / ( x n − 1 ) R=GF(q)[x]/(x^n-1) R=GF(q)[x]/(xn1)的子集 C \mathscr C C是循环码    ⟺    \iff C \mathscr C C满足以下性质,

  1. C \mathscr C C R R R的子加群
  2. 如果 c ( x ) ∈ C c(x) \in \mathscr C c(x)C,任意的 a ( x ) ∈ R a(x) \in R a(x)R,都有 a ( x ) c ( x ) ∈ C a(x)c(x) \in \mathscr C a(x)c(x)C

即, C \mathscr C C是环 R R R理想

编码与多项式

域上的多项式环是主理想整环(PID),因此循环码 C \mathscr C C是主理想。我们将 C \mathscr C C中的拥有最小度数的那个唯一的非零首一多项式 g ( x ) g(x) g(x)叫做码 C \mathscr C C生成多项式(generator polynomial),有 C = ( g ( x ) ) \mathscr C = (g(x)) C=(g(x))

定理:循环码 C \mathscr C C拥有生成多项式 g ( x )    ⟺    g ( x ) ∣ x n − 1 g(x) \iff g(x) | x^n - 1 g(x)g(x)xn1

我们令 x n − 1 = g ( x ) h ( x ) x^n-1 = g(x)h(x) xn1=g(x)h(x),那么任意的 c ( x ) ∈ C c(x) \in \mathscr C c(x)C,都有 h ( x ) c ( x ) = 0 h(x)c(x)=0 h(x)c(x)=0,这个 h ( x ) h(x) h(x)叫做校验多项式(check polynomial)

a ( x ) ∈ R , deg ⁡ a ≤ k − 1 a(x) \in R,\deg a \le k-1 a(x)R,degak1数据多项式(data polynomial),

  1. 非系统编码(nonsystematic encoding): a ( x ) a(x) a(x)的系数不在 c ( x ) c(x) c(x)中显式出现。例如, c ( x ) = a ( x ) g ( x ) c(x) = a(x)g(x) c(x)=a(x)g(x)
  2. 系统编码(systematic encoding): a ( x ) a(x) a(x)的系数在 c ( x ) c(x) c(x)中显式出现。例如, c ( x ) = x n − k a ( x ) + t ( x ) c(x) = x^{n-k}a(x)+t(x) c(x)=xnka(x)+t(x),其中 t ( x ) : = − R g ( x ) [ x n − k a ( x ) ] t(x) := -R_{g(x)}[x^{n-k}a(x)] t(x):=Rg(x)[xnka(x)]

上述两者得到的码字集合 C \mathscr C C完全相同,但 a ( x ) , c ( x ) a(x),c(x) a(x),c(x)之间的双射不同。

e ( x ) e(x) e(x)错误多项式(error polynomial), v ( x ) = c ( x ) + e ( x ) v(x) = c(x)+e(x) v(x)=c(x)+e(x)叫做感知字多项式(senseword polynomial),而仅取决于错误 e ( x ) e(x) e(x) s ( x ) : = R g ( x ) [ v ( x ) ] = R g ( x ) [ e ( x ) ] s(x):= R_{g(x)}[v(x)] = R_{g(x)}[e(x)] s(x):=Rg(x)[v(x)]=Rg(x)[e(x)]叫做校验子多项式(syndrome polynomial)

请添加图片描述

定理:假设 C \mathscr C C的最小距离是 d d d,那么汉明重量小于 d / 2 d/2 d/2的错误多项式,对应于唯一的校验子多项式。

因此,解码任务就是,先计算 s ( x ) s(x) s(x),然后寻找满足 s ( x ) = R g ( x ) [ e ( x ) ] s(x) = R_{g(x)}[e(x)] s(x)=Rg(x)[e(x)]的那个唯一的 e ( x ) e(x) e(x)。当然,如果其汉明重量超重了,那么可能无法解码(不在任何汉明球内)或者解码错误(落在其他汉明球内)。

本原循环码

定义:码 C \mathscr C C G F ( q ) GF(q) GF(q)上的循环码,如果 n = q m − 1 n = q^m-1 n=qm1那么就叫做本原循环码(primitive cyclic code)

循环码的构造

数学知识

  1. R = G F ( q ) [ x ] / ( x n − 1 ) R = GF(q)[x]/(x^n-1) R=GF(q)[x]/(xn1),做素分解
    x n − 1 = f 1 ( x ) ⋯ f s ( x ) x^n-1 = f_1(x) \cdots f_s(x) xn1=f1(x)fs(x)

    那么 g ( x ) ∣ x n − 1 g(x) | x^n-1 g(x)xn1就有 2 s 2^s 2s种选择方案。去掉平凡的 1 , x n − 1 1,x^n-1 1,xn1,我们还可以构造出 2 s − 2 2^s-2 2s2种不同的主理想 C \mathscr C C

  2. 扩域 G F ( q m ) GF(q^m) GF(qm)中,
    x q m − 1 = ∏ j ( x − β j ) x^{q^m-1} = \prod_j (x-\beta_j) xqm1=j(xβj)
    这里, x q m − 1 x^{q^m-1} xqm1的根 β j \beta_j βj G F ( q m ) GF(q^m) GF(qm)中的所有非零元

  3. G F ( q ) GF(q) GF(q)的特征为 p p p,那么 ∀ s ( x ) ∈ G F ( q ) [ x ] \forall s(x) \in GF(q)[x] s(x)GF(q)[x],都有
    s ( x ) p m = [ ∑ i s i x i ] p m = ∑ i s i p m x i p m s(x)^{p^m} = [\sum_i s_i x^i]^{p^m} = \sum_i s_i^{p^m} x^{ip^m} s(x)pm=[isixi]pm=isipmxipm

  4. β ∈ G F ( q m ) \beta \in GF(q^m) βGF(qm)的极小多项式为 f ( x ) ∈ G F ( q ) [ x ] f(x) \in GF(q)[x] f(x)GF(q)[x],那么 f ( x ) f(x) f(x)也是 β q \beta^q βq的极小多项式,这叫做共轭元(conjugates)。集合 { β , β q , ⋯   , β q r − 1 } \{\beta,\beta^q,\cdots,\beta^{q^{r-1}}\} {β,βq,,βqr1}是多项式 f ( x ) f(x) f(x)的一组共轭元,其中的 r r r是使得 β q r = β \beta^{q^r}=\beta βqr=β成立的最小的那个整数。

  5. 元素 β ∈ G F ( q m ) \beta \in GF(q^m) βGF(qm)的极小多项式以所有共轭元为根
    f ( x ) = ( x − β ) ( x − β q ) ⋯ ( x − β q r − 1 ) f(x) = (x-\beta)(x-\beta^q)\cdots(x-\beta^{q^{r-1}}) f(x)=(xβ)(xβq)(xβqr1)

  6. g c d ( n , q ) = 1 gcd(n,q)=1 gcd(n,q)=1,那么存在 m ≤ n m \le n mn,使得 x n − 1 ∣ x q m − 1 − 1 x^n-1 | x^{q^m-1}-1 xn1∣xqm11(使用鸽巢原理,证明 n ∣ q i − j − 1 n|q^{i-j}-1 nqij1

构造方法

定理:令 g ( x ) g(x) g(x) G F ( q ) GF(q) GF(q)上的本原循环码 C \mathscr C C的生成多项式,其所有零点(zeros,根)为 β 1 , ⋯   , β r ∈ G F ( q m ) \beta_1,\cdots,\beta_r \in GF(q^m) β1,,βrGF(qm),那么
c ( x ) ∈ C    ⟺    c ( β 1 ) = ⋯ = c ( β r ) = 0 ∈ G F ( q m ) c(x) \in \mathscr C \iff c(\beta_1) = \cdots = c(\beta_r) = 0 \in GF(q^m) c(x)Cc(β1)==c(βr)=0GF(qm)
集合 { β 1 , ⋯   , β r } \{\beta_1,\cdots,\beta_r\} {β1,,βr}叫做循环码的完全定义集(complete defining set),若子集 A ⊆ { β 1 , ⋯   , β r } A \subseteq \{\beta_1,\cdots,\beta_r\} A{β1,,βr}包含 g ( x ) g(x) g(x)每个素因式的至少一个零点,那么叫它为定义集(defining set)

如果要构造以 { β 1 , ⋯   , β r } \{\beta_1,\cdots,\beta_r\} {β1,,βr}为根的生成多项式,只需要分别计算 β j \beta_j βj的极小多项式 f j ( x ) f_j(x) fj(x),然后就有 g = L C M ( f 1 , ⋯   , f r ) g = LCM(f_1,\cdots,f_r) g=LCM(f1,,fr)。这里的 f j ( x ) , j = 1 , ⋯   , r f_j(x), j=1,\cdots,r fj(x),j=1,,r是容易计算的。

我们在 G F ( q ) GF(q) GF(q)上构造 ( n , k , d ) (n,k,d) (n,k,d)循环码 C \mathscr C C的步骤如下:

  1. 恒假设 g c d ( n , q ) = 1 gcd(n,q)=1 gcd(n,q)=1,寻找扩域 G F ( q m ) GF(q^m) GF(qm),使得 n ∣ q m − 1 n | q^m-1 nqm1
  2. 为了寻找生成多项式 g ( x ) ∣ x n − 1 g(x)|x^n-1 g(x)xn1,容易看出需要 g ( x ) ∣ x q m − 1 − 1 g(x)|x^{q^m-1}-1 g(x)xqm11 g ( x ) g(x) g(x)的根是后者的根的一部分。
  3. α \alpha α G F ( q m ) GF(q^m) GF(qm)本原元,记 b : = ( q m − 1 ) / n b:=(q^m-1)/n b:=(qm1)/n,令 β = α b \beta=\alpha^b β=αb,易知 β \beta β G F ( q m ) GF(q^m) GF(qm)上的 n n n本原单位根,那么 x n − 1 x^n-1 xn1的根都是 β \beta β的幂次。
  4. 对于某个 β i \beta^i βi,计算它所在共轭元集合的极小多项式 f i ( x ) ∈ G F ( q ) [ x ] f_i(x) \in GF(q)[x] fi(x)GF(q)[x],这是 x n − 1 x^n-1 xn1的一个素因式
  5. 根据需要,计算乘积 g ( x ) = ∏ i f i ( x ) ∣ x n − 1 g(x) = \prod_i f_i(x) | x^n-1 g(x)=ifi(x)xn1,那么得到的主理想 C = ( g ( x ) ) ⊆ R \mathscr C = (g(x)) \subseteq R C=(g(x))R是一个循环码。

循环码的矩阵形式

非系统编码

假设 γ 1 , ⋯   , γ r ∈ G F ( q m ) \gamma_1,\cdots,\gamma_r \in GF(q^m) γ1,,γrGF(qm)是生成多项式 g ( x ) g(x) g(x)的根,那么
H = [ γ 1 0 γ 1 1 ⋯ γ 1 n − 1 γ 2 0 γ 2 1 ⋯ γ 2 n − 1 ⋮ γ r 0 γ r 1 ⋯ γ r n − 1 ] H = \begin{bmatrix} \gamma_1^0 & \gamma_1^1 & \cdots & \gamma_1^{n-1}\\ \gamma_2^0 & \gamma_2^1 & \cdots & \gamma_2^{n-1}\\ \vdots\\ \gamma_r^0 & \gamma_r^1 & \cdots & \gamma_r^{n-1}\\ \end{bmatrix} H= γ10γ20γr0γ11γ21γr1γ1n1γ2n1γrn1
进而可以求其正交补空间 S p a n ( H ) ⊥ Span(H)^\perp Span(H)的一组基 G G G

但是,上述的 G , H G,H G,H是扩域 G F ( q m ) GF(q^m) GF(qm)上的矩阵。其实,令 g ( x ) = ∑ i = 0 n − k g i x i g(x) = \sum_{i=0}^{n-k} g_ix^i g(x)=i=0nkgixi,容易得到 G F ( q ) GF(q) GF(q)上的矩阵,
G = [ 0 ⋯ 0 g n − k ⋯ g 1 g 0 0 ⋯ g n − k g n − k − 1 ⋯ g 0 0 ⋮ g n − k g n − k − 1 ⋯ 0 ] ∈ G F ( q ) k × n G = \begin{bmatrix} 0 & \cdots & 0 & g_{n-k} & \cdots & g_1 & g_0\\ 0 & \cdots & g_{n-k} & g_{n-k-1}& \cdots & g_0 & 0\\ \vdots\\ g_{n-k} & g_{n-k-1} &&&& \cdots & 0\\ \end{bmatrix} \in GF(q)^{k \times n} G= 00gnkgnk10gnkgnkgnk1g1g0g000 GF(q)k×n
h ( x ) g ( x ) ≡ 0 m o d    x n − 1 h(x)g(x) \equiv 0 \mod x^n-1 h(x)g(x)0modxn1,令 h ( x ) = ∑ i = 0 k h i x i h(x) = \sum_{i=0}^{k} h_ix^i h(x)=i=0khixi,那么卷积值 u r = ∑ i = 0 r g r − i h i = 0 u_r = \sum_{i=0}^r g_{r-i}h_i = 0 ur=i=0rgrihi=0,从而
H = [ h 0 h 1 ⋯ h k 0 ⋯ 0 0 h 0 ⋯ h k − 1 h k ⋯ 0 ⋮ 0 ⋯ h k − 1 h k ] ∈ G F ( q ) ( n − k ) × n H = \begin{bmatrix} h_0 & h_1 & \cdots & h_k & 0 & \cdots & 0\\ 0 & h_0 & \cdots & h_{k-1} & h_{k} & \cdots & 0\\ &&&&&& \vdots\\ 0 & \cdots &&&& h_{k-1} & h_k\\ \end{bmatrix} \in GF(q)^{(n-k) \times n} H= h000h1h0hkhk10hkhk100hk GF(q)(nk)×n
容易验证, G H T = ( u n − i − j + 1 ) = 0 ∈ G F ( q ) k × ( n − k ) GH^T = (u_{n-i-j+1}) = 0 \in GF(q)^{k \times (n-k)} GHT=(unij+1)=0GF(q)k×(nk)

根据以上的 G , H G,H G,H,容易发现,对偶码 C ⊥ \mathscr C^\perp C的生成多项式为校验多项式的互反多项式(reciprocal polynomial):
h ~ ( x ) : = x k h ( x − 1 ) = ∑ i = 0 k h k − i x i \tilde h(x) := x^k h(x^{-1}) = \sum_{i=0}^k h_{k-i} x^i h~(x):=xkh(x1)=i=0khkixi
同时,由 h ( x ) h(x) h(x)生成的循环码与上述对偶码同构

系统编码

g ( x ) g(x) g(x)生成的主理想 C \mathscr C C是线性空间 G F ( q ) n GF(q)^{n} GF(q)n k k k维子空间,令
x n − i − s i ( x ) = Q i ( x ) g ( x ) ,   i = 1 , ⋯   , k x^{n-i} - s_i(x) = Q_i(x)g(x),\, i=1,\cdots,k xnisi(x)=Qi(x)g(x),i=1,,k
是子空间的一组基。

容易计算 s i ( x ) = R g ( x ) ( x n − i ) s_i(x) = R_{g(x)}(x^{n-i}) si(x)=Rg(x)(xni),设 s i ( x ) = ∑ j = 0 n − k − 1 s i j x j s_i(x) = \sum_{j=0}^{n-k-1} s_{ij} x^j si(x)=j=0nk1sijxj,那么
G = [ − s k , 0 ⋯ − s k , n − k − 1 1 0 ⋯ 0 − s k − 1 , 0 ⋯ − s k − 1 , n − k − 1 0 1 ⋯ 0 ⋮ − s 1 , 0 ⋯ − s 1 , n − k − 1 0 0 ⋯ 1 ] ∈ G F ( q ) k × n G = \begin{bmatrix} -s_{k,0} & \cdots & -s_{k,n-k-1} & 1 & 0 & \cdots & 0\\ -s_{k-1,0} & \cdots & -s_{k-1,n-k-1} & 0 & 1 & \cdots & 0\\ \vdots\\ -s_{1,0} & \cdots & -s_{1,n-k-1} & 0 & 0 & \cdots & 1\\ \end{bmatrix} \in GF(q)^{k \times n} G= sk,0sk1,0s1,0sk,nk1sk1,nk1s1,nk1100010001 GF(q)k×n
假设子空间 V V V的一组基为 G = [ A ∣ I k ] G=[A|I_{k}] G=[AIk](按行向量),那么其正交补空间 V ⊥ V^\perp V的一组基为 H = [ I n − k ∣ − A T ] H=[I_{n-k}|-A^T] H=[InkAT],因此
H = [ 1 0 ⋯ 0 s k , 0 ⋯ s 1 , 0 0 1 ⋯ 0 s k , 1 ⋯ s 1 , 1 ⋮ 0 0 ⋯ 1 s k , n − k − 1 ⋯ s 1 , n − k − 1 ] ∈ G F ( q ) ( n − k ) × n H = \begin{bmatrix} 1 & 0 & \cdots & 0 & s_{k,0} & \cdots & s_{1,0} \\ 0 & 1 & \cdots & 0 & s_{k,1} & \cdots & s_{1,1} \\ \vdots\\ 0 & 0 & \cdots & 1 & s_{k,n-k-1} & \cdots & s_{1,n-k-1} \\ \end{bmatrix} \in GF(q)^{(n-k) \times n} H= 100010001sk,0sk,1sk,nk1s1,0s1,1s1,nk1 GF(q)(nk)×n

准循环码

定义:一个 ( n , k ) (n,k) (n,k)线性码 C \mathscr C C叫做准循环码(quasi-cyclic code),如果对于任意的码字 c ( x ) ∈ C c(x) \in \mathscr C c(x)C,都存在 b ∣ n b|n bn,使得 x b c ( x ) m o d    x n − 1 ∈ C x^bc(x) \mod x^n-1 \in \mathscr C xbc(x)modxn1C成立。

任意的 n n n长循环码可以每数到 b b b就将这个符号全置零(dropping every b b bth symbol),从而得到一个准循环码。

适当缩短循环码

定义:一个 ( n , k ) (n,k) (n,k)线性码 C \mathscr C C叫做适当缩短循环码(proper shortened cyclic code),如果它可以通过将 ( n + b , k + b ) (n+b,k+b) (n+b,k+b)循环码的连续 b b b个数据符号删除(deleting b b b consecutive places)来得到。实际上,它是 Z p [ x ] / ( f ( x ) ) Z_p[x]/(f(x)) Zp[x]/(f(x))的理想, f ( x ) f(x) f(x)是度数 n ′ = n − b n'=n-b n=nb的某多项式。

其解码器与原始编码相同,因为完全可以将码字的那 b b b个数据位置通过置零恢复到原始编码上去。如果原始循环码的最小距离为 d m i n d_{min} dmin,那么其最小距离也是 d m i n d_{min} dmin

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值