基于NTT的循环码:RS码、BCH码、RM码
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)。
一些性質:
循環碼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)。
時域編碼和頻域編碼
循環碼有兩種編碼方式,
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)。
構造方法:
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。
構造方法:
觀察到校驗頻率以及它們的共軛頻率都被置零,而校驗頻率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
構造方法:
RM碼是BCH碼的子碼,因此擁有較低的碼率,在實際中用處不大。但它多余的零元使得其解碼更容易。
總結
以上是生活随笔為你收集整理的基于NTT的循环码:RS码、BCH码、RM码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: k2p拆机ttl刷breed_【1.10
- 下一篇: 加速Web开发的9款知名HTML5框架