基于NTT的循环码:RS码、BCH码、RM码

NTT性质

令时域 v = ( v i ) ∈ G F ( q ) n v=(v_i) \in GF(q)^n v=(vi)GF(q)n,其中 i i i是时间,满足 g c d ( n , q ) = 1 gcd(n,q)=1 gcd(n,q)=1。那么 ∃ m ≤ n ,   n ∣ q m − 1 \exists m \le n,\, n | q^m-1 mn,nqm1,令 w ∈ G F ( q m ) w \in GF(q^m) wGF(qm)满足 w n = 1 w^n=1 wn=1,即 w w w n n n阶单位根。做NTT变换得到频域 V = ( V j ) ∈ G F ( q m ) n V=(V_j) \in GF(q^m)^n V=(Vj)GF(qm)n,而 s j ( i ) : = ( w j ) i s_j(i):=(w^j)^i sj(i):=(wj)i是函数空间的一组频率渐变的正交基。

NTT公式:
V j = ∑ i = 0 n − 1 w i j v i = v ( w j ) ,   j = 1 , ⋯   , n V_j = \sum_{i=0}^{n-1} w^{ij} v_i = v(w^j),\, j=1,\cdots,n Vj=i=0n1wijvi=v(wj),j=1,,n
INTT公式:
v i = 1 n ∑ j = 0 n − 1 w − i j V j = V ( w − i ) n ,   i = 1 , ⋯ n v_i = \frac{1}{n} \sum_{j=0}^{n-1} w^{-ij} V_j = \frac{V(w^{-i})}{n},\, i=1,\cdots n vi=n1j=0n1wijVj=nV(wi),i=1,n
F F F上的线性递归式(linear recursion):
V k = − ∑ j = 1 L Λ j V k − j ,   k = L , L + 1 , ⋯ V_k = - \sum_{j=1}^L \Lambda_j V_{k-j},\, k=L,L+1,\cdots Vk=j=1LΛjVkj,k=L,L+1,
线性递归式完全由长度 L L L和连接权重(connection weights) Λ \Lambda Λ决定,记做 ( Λ , L ) (\Lambda,L) (Λ,L)。多项式 λ ( x ) = 1 + ∑ j = 1 L Λ j x j \lambda(x)=1+\sum_{j=1}^L \Lambda_j x^j λ(x)=1+j=1LΛjxj叫做连接多项式(connection polynomial), deg ⁡ λ ( x ) ≤ L \deg \lambda(x) \le L degλ(x)L

给定一个序列 V 0 , ⋯   , V n − 1 ∈ F V_0,\cdots,V_{n-1} \in F V0,,Vn1F,我们将能够生成这个序列的最短线性递归式的长度叫做 V V V线性复杂度(linear complexity)。

一些性质:

  1. 可加(Additivity): λ v + μ v ′    ⟺    λ V + μ V ′ \lambda v+\mu v' \iff \lambda V + \mu V' λv+μvλV+μV
  2. 调制(Modulation): ( v i w i l )    ⟺    ( V ( j + l ) ) (v_i w^{il}) \iff (V_{(j+l)}) (viwil)(V(j+l))
  3. 转换(Translation): ( v ( i − l ) )    ⟺    ( V j w j l ) (v_{(i-l)}) \iff (V_j w^{jl}) (v(il))(Vjwjl)
  4. 卷积(Convolution): e ( x ) = f ( x ) g ( x ) m o d    x n − 1    ⟺    E j = F j G j e(x) = f(x)g(x) \mod x^n-1 \iff E_j = F_j G_j e(x)=f(x)g(x)modxn1Ej=FjGj
  5. 零点(Zero): v ( w j ) = 0    ⟺    V j = 0 v(w^j)=0 \iff V_j=0 v(wj)=0Vj=0
  6. 抽取(Decimation): ( v b i )    ⟺    ( V B j ) ,   B b ≡ 1 m o d    n (v_{bi}) \iff (V_{Bj}),\, Bb \equiv 1 \mod n (vbi)(VBj),Bb1modn
  7. 有限长度序列 V V V的线性复杂度,等于做INTT后 v v v的汉明重量。反之亦然。

循环码 C \mathscr C C的生成多项式为 g ( x ) g(x) g(x),码字为 c ( x ) = a ( x ) g ( x ) c(x)=a(x)g(x) c(x)=a(x)g(x)。令 G = N T T ( g ) , A = N T T ( a ) G=NTT(g),A=NTT(a) G=NTT(g),A=NTT(a),那么 C j = A j G j    ⟺    C = N T T ( c ) C_j=A_jG_j \iff C=NTT(c) Cj=AjGjC=NTT(c)。假设 B = { j 1 , ⋯   , j n − k } B=\{j_1,\cdots,j_{n-k}\} B={j1,,jnk} g ( x ) g(x) g(x)的零点 w j w^j wj的指标,那么 A j G j = 0 , ∀ j ∈ B A_jG_j=0,\forall j \in B AjGj=0,jB

因此,循环码也可以被定义为:空间 G F ( q ) n GF(q)^n GF(q)n中那些做NTT变换后在 B B B指定位置的频谱分量为 0 0 0的向量的集合,这些置零的频谱分量叫做校验频率(check frequencies)

共轭约束

对于 G F ( q m ) GF(q^m) GF(qm)上的向量 V V V,做INTT后得到的 v v v不一定会落入空间 G F ( q ) n GF(q)^n GF(q)n

V ∈ G F ( q m ) n V \in GF(q^m)^n VGF(qm)n,且 n ∣ q m − 1 n | q^m-1 nqm1,令 v : = I N T T ( V ) v:= INTT(V) v:=INTT(V),那么
v ∈ G F ( q ) n    ⟺    V j q = V ( q j ) ,   j = 0 , ⋯   , n − 1 v \in GF(q)^n \iff V_j^q = V_{(qj)},\, j=0,\cdots,n-1 vGF(q)nVjq=V(qj),j=0,,n1
我们对 Z n Z_n Zn中元素做划分,得到共轭类 q − q- qary conjugacy classes):
B j = { j , j q , j q 2 , ⋯   , j q m j − 1 } B_j = \{j,jq,jq^2,\cdots,jq^{m_j-1}\} Bj={j,jq,jq2,,jqmj1}
其中 m j m_j mj是使得 j q m j ≡ j m o d    n jq^{m_j} \equiv j \mod n jqmjjmodn的最小的正整数,它一定存在( g c d ( n , q ) = 1 gcd(n,q)=1 gcd(n,q)=1)。我们说大小为 m j m_j mj的共轭类 B j B_j Bj j j j代表。

根据定义易知, C j q m j − 1 q = C j C_{jq^{m_j-1}}^q = C_j Cjqmj1q=Cj,于是
( C j q m j − 1 ) q = C j q m j = C j (C_j^{q^{m_j-1}})^q = C_j^{q^{m_j}} = C_j (Cjqmj1)q=Cjqmj=Cj
因此,由 B j B_j Bj指定的那些频谱值应落在扩域 G F ( q m j ) GF(q^{m_j}) GF(qmj)内。

也就是说,如果一个向量 V ∈ G F ( q m ) n V \in GF(q^m)^n VGF(qm)n对应的 v v v落在 G F ( q ) n GF(q)^n GF(q)n内部,那么向量 V V V中由共轭类 B j B_j Bj所指定的那些分量都由频谱值 V j ∈ G F ( q m j ) V_j \in GF(q^{m_j}) VjGF(qmj)所完全决定,而不能随意选取。这就叫做共轭约束(conjugacy constraints)。

时域编码和频域编码

循环码有两种编码方式,

  1. time-domain encoder:在时域上,利用生成多项式 g ( x ) g(x) g(x),使用系统编码方式或者非系统编码方式,详见循环码
  2. frequency-domain encoder:在频域上,将 g ( x ) g(x) g(x)的所有零点 { w i } I \{w^i\}_I {wi}I对应的位置 { C i } I \{C_i\}_I {Ci}I置零,作为校验符号。同时零点所在共轭类的位置也都置零。其他共轭类的代表元所指定位置作为数据符号,填入数据比特,而其他的位置要满足共轭约束条件。

Reed-Solomen Code

定义

g c d ( n , q ) = 1 gcd(n,q)=1 gcd(n,q)=1,一个 G F ( q ) GF(q) GF(q)上的长度为 n ∣ q − 1 n|q-1 nq1的RS码 C \mathscr C C,定义为:空间 G F ( q ) n GF(q)^n GF(q)n中那些做NTT变换后在特定的 d − 1 d-1 d1个连续分量为零的所有的向量,这个连续分量记做 { j 0 , j 0 + 1 , ⋯   , j 0 + d − 2 } \{j_0,j_0+1,\cdots,j_0+d-2\} {j0,j0+1,,j0+d2}

构造

由于 n ∣ q − 1 n|q-1 nq1,因此一个码字 c ∈ C c \in \mathscr C cC做NTT变换后得到的 C C C依然属于 G F ( q ) GF(q) GF(q)。由于 C j = 0    ⟺    C j w j = 0 C_j=0 \iff C_j w^j = 0 Cj=0Cjwj=0,并且由于 ( c ( i − 1 ) )    ⟺    ( C j w j ) (c_{(i-1)}) \iff (C_j w^{j}) (c(i1))(Cjwj),因此RS码是循环码。由于 C j = 0    ⟺    c ( w j ) = 0 C_j=0 \iff c(w^j)=0 Cj=0c(wj)=0,因此
g ( x ) = ( x − w j 0 ) ( x − w j 0 + 1 ) ⋯ ( x − w j 0 + d − 2 ) g(x) = (x-w^{j_0})(x-w^{j_0+1})\cdots(x-w^{j_0+d-2}) g(x)=(xwj0)(xwj0+1)(xwj0+d2)
容易看出, deg ⁡ g = d − 1 = n − k \deg g = d-1 = n-k degg=d1=nk。由于 C C C包含 d − 1 d-1 d1个连续的零分量,利用调制将它们搬移到最高频且不影响码字的汉明重量。那么 C ( x ) = ∑ j = 0 n − d C j x j C(x)=\sum_{j=0}^{n-d} C_j x^j C(x)=j=0ndCjxj至多有 n − d n-d nd个不同的零点,于是INTT后得到的 c c c至少有 d d d个分量,即 d m i n ≥ d = n − k + 1 d_{min} \ge d = n-k+1 dmind=nk+1

Singleton Bound:对于 ( n , k ) (n,k) (n,k)线性码,其最小距离满足 d m i n ≤ n − k + 1 d_{min} \le n-k+1 dminnk+1

于是
d m i n = n − k + 1 = d d_{min} = n-k+1 = d dmin=nk+1=d
因此,RS码是极大距离可分码(maximum distance separable,MDS)。

构造方法:

  1. 确定 n , q n,q n,q 使得 n ∣ q − 1 n|q-1 nq1,计算 G F ( q ) GF(q) GF(q)中的 n n n阶单位根 w w w(如果 n = q − 1 n=q-1 n=q1,那么叫做本原RS码
  2. 根据需要纠错的数量 t t t,计算 d = 2 t + 1 d=2t+1 d=2t+1,然后任意选取 j 0 j_0 j0(一般选取 j 0 = 1 j_0=1 j0=1)来确定使用哪些元素作为零点
  3. 我们得到了由 g ( x ) = ( x − w j 0 ) ( x − w j 0 + 1 ) ⋯ ( x − w j 0 + 2 t − 1 ) g(x)=(x-w^{j_0})(x-w^{j_0+1})\cdots(x-w^{j_0+2t-1}) g(x)=(xwj0)(xwj0+1)(xwj0+2t1)生成的 ( n , n − 2 t , 2 t + 1 ) (n,n-2t,2t+1) (n,n2t,2t+1)RS码
  4. 若使用频域编码器,由于 n ∣ q − 1 n|q-1 nq1使得时域频域的有限域都是 G F ( q ) GF(q) GF(q),因此我们只需设置 V j 0 = ⋯ = V j 0 + 2 t − 1 = 0 V_{j_0}=\cdots=V_{j_0+2t-1}=0 Vj0==Vj0+2t1=0。其他的 n − 2 t n-2t n2t个位置的频谱都作为数据符号( q ≡ 1 m o d    n q \equiv 1 \mod n q1modn,共轭类的大小都为 m j = 1 m_j=1 mj=1,不必考虑共轭约束)
  5. 将数据 a ( x ) a(x) a(x)的系数按某种顺序填入,做INTT得到码字 c ( x ) c(x) c(x)

BCH Code

定义

g c d ( n , q ) = 1 gcd(n,q)=1 gcd(n,q)=1,一个 G F ( q ) GF(q) GF(q)上的长度为 n ∣ q m − 1 n|q^m-1 nqm1、设计距离为 d d d的BCH码 C \mathscr C C,定义为:空间 G F ( q ) n GF(q)^n GF(q)n中那些做NTT变换后在特定的 d − 1 d-1 d1个连续分量为零的所有的向量。

注意,这里是 n ∣ q m − 1 n | q^m-1 nqm1,因此做NTT后的频谱落在域 G F ( q m ) GF(q^m) GF(qm)上。容易看出,RS码是 m = 1 m=1 m=1时的BCH码;同时, G F ( q ) GF(q) GF(q)上的BCH码是 G F ( q m ) GF(q^m) GF(qm)上的RS码的子空间,因此前者的最小距离大于等于后者的最小距离。

构造

BCH Bound:令 n ∣ q m − 1 n | q^m-1 nqm1,在 G F ( q ) n GF(q)^n GF(q)n中汉明重量至多为 d − 1 d-1 d1的向量,如果它的频谱包含 d − 1 d-1 d1个连续的零分量,那么它就是零向量。这可以通过循环抽取来扩展,因为抽取不改变汉明重量。

因此,设计距离为 d d d的BCH码的最小距离 d m i n d_{min} dmin至少和 d d d一样大,并且往往有 d m i n > d d_{min}>d dmin>d

构造方法:

  1. 确定 n , q n,q n,q 使得 n ∣ q m − 1 n|q^m-1 nqm1,然后将 Z n Z_n Zn划分为若干共轭类 B j 1 , ⋯   , B j r B_{j_1},\cdots,B_{j_r} Bj1,,Bjr
  2. 根据需要纠错的数量 t t t,计算 d = 2 t + 1 d=2t+1 d=2t+1,然后选取某个 j 0 j_0 j0(一般选取 j 0 = 1 j_0=1 j0=1),将 d − 1 d - 1 d1个连续频谱分量作为校验频率
  3. { j 0 , j 0 + 1 , ⋯   , j 0 + d − 2 } \{j_0,j_0+1,\cdots,j_0+d-2\} {j0,j0+1,,j0+d2}所在的共轭类对应的频谱值都置零
  4. 将剩余共轭类的代表 j l j_l jl作为数据符号,有 C j l ∈ G F ( q m j l ) C_{j_l} \in GF(q^{m_{j_l}}) CjlGF(qmjl),这可视作长度为 m j l m_{j_l} mjl G F ( q ) GF(q) GF(q)上向量。其他的 m j l − 1 m_{j_l}-1 mjl1个位置按照共轭约束,由 C j l C_{j_l} Cjl来生成
  5. 假设作为数据符号的那些共轭类的总大小为 k = ∑ l m j l k = \sum_l m_{j_l} k=lmjl,那么可以将 G F ( q ) k GF(q)^k GF(q)k上的向量分块填充到那些数据符号上,因此我们得到了 ( n , k ) (n,k) (n,k)BCH码
  6. 最后,做INTT得到时域上的码字多项式

观察到校验频率以及它们的共轭频率都被置零,而校验频率 w j w^j wj的共轭类对应的频率为 w j q , w j q 2 , ⋯ w^{jq},w^{jq^2},\cdots wjq,wjq2,,这些就是 w j w^j wj G F ( q m ) GF(q^m) GF(qm)上的共轭元。因此,BCH码的生成多项式为:
g ( x ) = l c m ( f 1 ( x ) , ⋯   , f d − 1 ( x ) ) g(x) = lcm(f_1(x),\cdots,f_{d-1}(x)) g(x)=lcm(f1(x),,fd1(x))
这里 f j ( x ) f_j(x) fj(x) w j w^j wj极小多项式(以所有共轭元为单根)。如果 w w w G F ( q m ) GF(q^m) GF(qm)的本原根,那么 n = q m − 1 n=q^m-1 n=qm1,此时叫做本原BCH码

Reed-Muller Code

定义

对于整数 j j j,将它写作 j = j 0 + j 1 2 + ⋯ + j m − 1 2 m − 1 j=j_0+j_{1}2+\cdots+j_{m-1}2^{m-1} j=j0+j12++jm12m1(radix-2 representation),定义二进制重量(radix-2 weight)为
w 2 ( j ) = j 0 + j 1 + ⋯ + j m − 1 w_2(j) = j_0+j_1+\cdots+j_{m-1} w2(j)=j0+j1++jm1
一个长度为 n = 2 m − 1 n=2^m-1 n=2m1 r r r阶(order)的循环RM码 C \mathscr C C,是定义集为 A = { w j : 0 < w 2 ( j ) < m − r } A=\{w^j: 0 < w_2(j) < m-r\} A={wj:0<w2(j)<mr}的二元循环码(binary cyclic code)。

构造

由于 d = 2 m − r − 1 d=2^{m-r}-1 d=2mr1的二进制表示就是 m − r m-r mr比特的全幺串,因此 ∀ j = 1 , ⋯   , d − 1 ,   w 2 ( j ) ≤ m − r − 1 \forall j=1,\cdots,d-1,\, w_2(j)\le m-r-1 j=1,,d1,w2(j)mr1,从而 { w , w 2 , ⋯   , w d − 1 } \{w,w^{2},\cdots,w^{d-1}\} {w,w2,,wd1}是RM码的定义集的子集。但同时,这也是设计距离为 d d d的BCH码的定义集。所以, r r r阶循环RM码是设计距离为 d = 2 m − r − 1 d=2^{m-r}-1 d=2mr1的BCH码的子空间。

易知,长度为 n = 2 m − 1 n=2^m-1 n=2m1 r r r阶循环RM码的极小距离满足 d m i n ≥ 2 m − r − 1 d_{min} \ge 2^{m-r}-1 dmin2mr1

构造方法:

  1. 确定 m , r m,r m,r ,令 n = 2 m − 1 n=2^m-1 n=2m1,构造域 G F ( 2 m ) GF(2^m) GF(2m),找到本原元 w w w
  2. 寻找所有的满足 0 < w 2 ( j ) < m − r 0 < w_2(j) < m-r 0<w2(j)<mr m m m比特的正整数 j j j,那么其生成多项式为 g ( x ) = L C M ( f j ( x ) ) g(x) = LCM(f_j(x)) g(x)=LCM(fj(x)),这里 f j ( x ) f_j(x) fj(x) w j w^j wj的极小多项式
  3. 将频域上的 j j j分量作为校验频率,同时将其共轭类所对应的频谱值置零。剩余的共轭类的代表作为数据符号,其他位置要满足共轭约束。

RM码是BCH码的子码,因此拥有较低的码率,在实际中用处不大。但它多余的零元使得其解码更容易。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值