NTT性质

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

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

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

一些性质:

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

循环码C\mathscr CC的生成多项式为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=NTT(g),A=NTT(a)G=NTT(g),A=NTT(a)G=NTT(g),A=NTT(a),那么Cj=AjGj⟺C=NTT(c)C_j=A_jG_j \iff C=NTT(c)Cj​=Aj​Gj​⟺C=NTT(c)。假设B={j1,⋯,jn−k}B=\{j_1,\cdots,j_{n-k}\}B={j1​,⋯,jn−k​}是g(x)g(x)g(x)的零点wjw^jwj的指标,那么AjGj=0,∀j∈BA_jG_j=0,\forall j \in BAj​Gj​=0,∀j∈B。

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

共轭约束

对于GF(qm)GF(q^m)GF(qm)上的向量VVV,做INTT后得到的vvv不一定会落入空间GF(q)nGF(q)^nGF(q)n。

令V∈GF(qm)nV \in GF(q^m)^nV∈GF(qm)n,且n∣qm−1n | q^m-1n∣qm−1,令v:=INTT(V)v:= INTT(V)v:=INTT(V),那么
v∈GF(q)n⟺Vjq=V(qj),j=0,⋯,n−1v \in GF(q)^n \iff V_j^q = V_{(qj)},\, j=0,\cdots,n-1 v∈GF(q)n⟺Vjq​=V(qj)​,j=0,⋯,n−1
我们对ZnZ_nZn​中元素做划分,得到共轭类(q−q-q−ary conjugacy classes):
Bj={j,jq,jq2,⋯,jqmj−1}B_j = \{j,jq,jq^2,\cdots,jq^{m_j-1}\} Bj​={j,jq,jq2,⋯,jqmj​−1}
其中mjm_jmj​是使得jqmj≡jmodnjq^{m_j} \equiv j \mod njqmj​≡jmodn的最小的正整数,它一定存在(gcd(n,q)=1gcd(n,q)=1gcd(n,q)=1)。我们说大小为mjm_jmj​的共轭类BjB_jBj​由jjj代表。

根据定义易知,Cjqmj−1q=CjC_{jq^{m_j-1}}^q = C_jCjqmj​−1q​=Cj​,于是
(Cjqmj−1)q=Cjqmj=Cj(C_j^{q^{m_j-1}})^q = C_j^{q^{m_j}} = C_j (Cjqmj​−1​)q=Cjqmj​​=Cj​
因此,由BjB_jBj​指定的那些频谱值应落在扩域GF(qmj)GF(q^{m_j})GF(qmj​)内。

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

时域编码和频域编码

循环码有两种编码方式,

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

Reed-Solomen Code

定义

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

构造

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

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

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

构造方法:

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

BCH Code

定义

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

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

构造

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

因此,设计距离为ddd的BCH码的最小距离dmind_{min}dmin​至少和ddd一样大,并且往往有dmin>dd_{min}>ddmin​>d。

构造方法:

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

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

Reed-Muller Code

定义

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

构造

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

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

构造方法:

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

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

基于NTT的循环码:RS码、BCH码、RM码相关推荐

  1. 基于SignalR的消息推送与二维码描登录实现

    1 概要说明 使用微信扫描登录相信大家都不会陌生吧,二维码与手机结合产生了不同应用场景,基于二维码的应用更是比较广泛.为了满足ios.android客户端与web短信平台的结合,特开发了基于Singl ...

  2. php 本地mysql 代码_基于本地数据库的 IP 地址查询 PHP 源码

    * 纯真 IP 数据库查询 * * 参考资料: * - 纯真 IP 数据库 http://www.cz88.net/ip/ * - PHP 读取纯真IP地址数据库 http://ju.outofmem ...

  3. php广告任务网源码_THINKPHP仿我爱广告任务网|任务网站源码下载基于PHP+MYSQL的在线广告打码任务网站源码...

    THINKPHP仿我爱广告任务网|任务网站源码下载基于PHP+MYSQL的在线广告打码任务网站源码 THINKPHP仿我爱广告任务网|任务网站源码下载是一款基于PHP+MYSQL开发制作的在线广告打码 ...

  4. 基于JAVA-超市会员积分管理系统-计算机毕业设计源码+系统+lw文档+部署

    基于JAVA-超市会员积分管理系统-计算机毕业设计源码+系统+lw文档+部署 技术栈 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Layui.HTML. ...

  5. 【音乐检索】基于matlab音乐检索系统【含Matlab源码 435期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[音乐检索]基于matlab音乐检索系统[含Matlab源码 435期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏 ...

  6. C#高级编程——C#扩展方法+接口,定义统一的搜索接口,基于Unity(三)——图文详解加源码

    C#高级编程--C#扩展方法+接口,定义统一的搜索接口,基于Unity(三)--图文详解加源码 前言

  7. 【图像修复】基于matlab损坏图像修复【含Matlab源码 731期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像修复]基于matlab损坏图像修复[含Matlab源码 731期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式2: 付费专栏 ...

  8. 基于JAVA中小型饭馆餐饮管理系统计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA中小型饭馆餐饮管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA中小型饭馆餐饮管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  9. 基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  10. 基于java点播影院运营系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java点播影院运营系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java点播影院运营系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: ...

最新文章

  1. VR规格表出来啦!Rift,Vive,PSVR,Acer和HP
  2. C++获取文件名、不带后缀的名字、后缀名
  3. MySQL的root用户修改普通用户密码
  4. 列举6个常见且实用的Web前端性能优化方法
  5. Xamarin 从零开始部署 iOS 上的 Walterlv.CloudKeyboard 应用
  6. python重启路由器_Python3控制路由器——使用requests重启极路由.py
  7. C++——已知a+b、 a+c、b+c、 a+b+c,求a、b、 c
  8. 更改Linux系统的Hostname的四种方式
  9. mysql-------流程控制结构
  10. rabbitmq-web-stomp 优化过程
  11. mysql中数据字典_MySQL8.0之数据字典
  12. 台式计算机开机不自检不起动,台式机开机一直自检的解决方法
  13. 列宽一字符等于多少厘米_excel表格行高和列宽各是多少毫米或厘米啊?
  14. pidgin qq_Pidgin入门:Skype的开源替代品
  15. Android 改变View的中心点
  16. 关于 Google play 上架的缺失 64 位版本问题
  17. java 随机生成英文名_java随机数Reandom(简单介绍)
  18. untrusted Developer You can allow using these apps in settings you can allow using these apps i
  19. 5-6 人生的不同阶段
  20. 关于峰均比的一些记录

热门文章

  1. php 轮播代码生成器,阿里巴巴国际站全屏轮播代码生成器 阿里国际站全屏轮播切换代码阿里巴巴全屏轮播怎么做? 一秒钟美工助手官方网站...
  2. linux i3 桌面,Linux安装i3wm平铺式窗口桌面
  3. ios12完美深色模式插件_让所有网站开启深色模式,试试这个浏览器插件
  4. 中兴机顶盒服务器地址大全,中兴机顶盒网络设置无线路由器教程
  5. 【axure手机原型】iOS应用设计要点总结
  6. vdbench(一)
  7. springboot集成quartz
  8. vmware10密钥
  9. PMP考试心得分享(已通过)
  10. 一键免费下载外文文献的方式