日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/8/1 编程问答 73 豆豆
生活随笔 收集整理的這篇文章主要介紹了 基于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?mn,nqm?1,令w∈GF(qm)w \in GF(q^m)wGF(qm)滿足wn=1w^n=1wn=1,即wwwnnn階單位根。做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=0n?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=0n?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=1L?Λ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)。

一些性質:

  • 可加(Additivity):λv+μv′?λV+μV′\lambda v+\mu v' \iff \lambda V + \mu V'λv+μv?λV+μV
  • 調制(Modulation):(viwil)?(V(j+l))(v_i w^{il}) \iff (V_{(j+l)})(vi?wil)?(V(j+l)?)
  • 轉換(Translation):(v(i?l))?(Vjwjl)(v_{(i-l)}) \iff (V_j w^{jl})(v(i?l)?)?(Vj?wjl)
  • 卷積(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?
  • 零點(Zero):v(wj)=0?Vj=0v(w^j)=0 \iff V_j=0v(wj)=0?Vj?=0
  • 抽取(Decimation):(vbi)?(VBj),Bb≡1modn(v_{bi}) \iff (V_{Bj}),\, Bb \equiv 1 \mod n(vbi?)?(VBj?),Bb1modn
  • 有限長度序列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,?jB

    因此,循環碼也可以被定義為:空間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)^nVGF(qm)n,且n∣qm?1n | q^m-1nqm?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 vGF(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)^nVGF(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)。

    時域編碼和頻域編碼

    循環碼有兩種編碼方式,

  • time-domain encoder:在時域上,利用生成多項式g(x)g(x)g(x),使用系統編碼方式或者非系統編碼方式,詳見循環碼。
  • 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-1nq?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-1nq?1,因此一個碼字c∈Cc \in \mathscr CcC做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)。

    構造方法:

  • 確定 n,qn,qn,q 使得n∣q?1n|q-1nq?1,計算GF(q)GF(q)GF(q)中的nnn階單位根www(如果n=q?1n=q-1n=q?1,那么叫做本原RS碼
  • 根據需要糾錯的數量ttt,計算d=2t+1d=2t+1d=2t+1,然后任意選取j0j_0j0?(一般選取j0=1j_0=1j0?=1)來確定使用哪些元素作為零點
  • 我們得到了由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碼
  • 若使用頻域編碼器,由于n∣q?1n|q-1nq?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 nq1modn,共軛類的大小都為mj=1m_j=1mj?=1,不必考慮共軛約束)
  • 將數據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-1nqm?1、設計距離為ddd的BCH碼C\mathscr CC,定義為:空間GF(q)nGF(q)^nGF(q)n中那些做NTT變換后在特定的d?1d-1d?1個連續分量為零的所有的向量。

    注意,這里是n∣qm?1n | q^m-1nqm?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-1nqm?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

    構造方法:

  • 確定 n,qn,qn,q 使得n∣qm?1n|q^m-1nqm?1,然后將ZnZ_nZn?劃分為若干共軛類Bj1,?,BjrB_{j_1},\cdots,B_{j_r}Bj1??,?,Bjr??
  • 根據需要糾錯的數量ttt,計算d=2t+1d=2t+1d=2t+1,然后選取某個j0j_0j0?(一般選取j0=1j_0=1j0?=1),將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}所在的共軛類對應的頻譜值都置零
  • 將剩余共軛類的代表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??來生成
  • 假設作為數據符號的那些共軛類的總大小為k=∑lmjlk = \sum_l m_{j_l}k=l?mjl??,那么可以將GF(q)kGF(q)^kGF(q)k上的向量分塊填充到那些數據符號上,因此我們得到了(n,k)(n,k)(n,k)BCH碼
  • 最后,做INTT得到時域上的碼字多項式
  • 觀察到校驗頻率以及它們的共軛頻率都被置零,而校驗頻率wjw^jwj的共軛類對應的頻率為wjq,wjq2,?w^{jq},w^{jq^2},\cdotswjq,wjq2,?,這些就是wjw^jwjGF(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極小多項式(以所有共軛元為單根)。如果wwwGF(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?1rrr階(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?1rrr階循環RM碼的極小距離滿足dmin≥2m?r?1d_{min} \ge 2^{m-r}-1dmin?2m?r?1

    構造方法:

  • 確定 m,rm,rm,r ,令n=2m?1n=2^m-1n=2m?1,構造域GF(2m)GF(2^m)GF(2m),找到本原元www
  • 尋找所有的滿足0<w2(j)<m?r0 < w_2(j) < m-r0<w2?(j)<m?rmmm比特的正整數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的極小多項式
  • 將頻域上的jjj分量作為校驗頻率,同時將其共軛類所對應的頻譜值置零。剩余的共軛類的代表作為數據符號,其他位置要滿足共軛約束。
  • RM碼是BCH碼的子碼,因此擁有較低的碼率,在實際中用處不大。但它多余的零元使得其解碼更容易。

    總結

    以上是生活随笔為你收集整理的基于NTT的循环码:RS码、BCH码、RM码的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。