專利名稱:一種基于有限域的多進(jìn)制噴泉編碼和譯碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)字噴泉碼的編碼和譯碼方法,特別涉及一種基于有限域 構(gòu)造多進(jìn)制數(shù)字噴泉碼的方法和使用矩陣稀疏特性的高效譯碼方法,屬于有線 通信、無線通信及互聯(lián)網(wǎng)通信數(shù)據(jù)傳輸技術(shù)領(lǐng)域和分布式數(shù)據(jù)存儲技術(shù)領(lǐng)域。
背景技術(shù):
數(shù)字噴泉碼是無比率編碼的一種,其基本思想由J. Byes, M. Luby和M. Mitzenmacher禾卩A. Rege在"A digital fountain approach to reliable distribution of bulk data" (Proceedings of ACM SIGCOMM,98, Vancouver BC, Canada, pp. 56-57, 1998) —文中提出。數(shù)字噴泉碼是一種應(yīng)用于刪除信道的糾錯(cuò)編碼技術(shù),其典 型應(yīng)用包括有線與無線組播與廣播業(yè)務(wù)、無線協(xié)作與中繼、分布式網(wǎng)絡(luò)存儲等。 數(shù)字噴泉編碼的基本思想是如下設(shè)在發(fā)送端K個(gè)待發(fā)送的信源數(shù)據(jù)包構(gòu)成一 個(gè)報(bào)文。使用無比率編碼方法將此報(bào)文構(gòu)成編成半無窮數(shù)據(jù)包序列再進(jìn)行發(fā)送。 由于半無窮序列無法存儲,在實(shí)際系統(tǒng)中,可以采用一邊發(fā)送一邊產(chǎn)生噴泉包 的方式進(jìn)行編碼。每一個(gè)接收點(diǎn)正確接收到K個(gè)編碼包(或者略大于K個(gè)編碼 包,例如收到比K大10X的包數(shù))即可解出原發(fā)送報(bào)文。接收機(jī)正確譯出所發(fā) 送的報(bào)文,向發(fā)送機(jī)發(fā)送單次確認(rèn)信號。發(fā)送機(jī)收到此確認(rèn)信號立即停止該報(bào) 文的發(fā)送。使用數(shù)字噴泉技術(shù),不論接收點(diǎn)收到到哪K個(gè)編碼數(shù)據(jù)包,也不論 接收到的這K個(gè)數(shù)據(jù)包順序如何,接收端都能夠正確地譯出原報(bào)文。正如某人 使用杯子從噴泉接一杯水來喝,接水者只關(guān)心自己的杯子是否接滿,而不必關(guān) 心哪些水滴接到杯中。不失一般性,如果沒有特別說明,在本說明書后續(xù)部分 中,假定一個(gè)數(shù)據(jù)包僅有一個(gè)數(shù)據(jù)符號。
基于數(shù)字噴泉思想,M. Luby在"LT Codes" (Proc. 43rd IEEE Symp. Foundations of Computer Sciences, Vancouver BC, Canada, pp. 271-280,Nov. 2002) 一文提出了第一個(gè)實(shí)用的噴泉編碼,即LT碼。LT碼是基于隨機(jī)稀疏編碼矩陣 進(jìn)行構(gòu)造的設(shè)發(fā)送信源長度為K;對于每一個(gè)編碼符號,從K個(gè)信源符號中 均勻地選擇選擇幾個(gè)符號并進(jìn)行模2加得到。符號數(shù)量按魯棒孤波(Robust-Soliton )分布隨機(jī)產(chǎn)生。M. Luby采用置信傳播方法(BP , Belief-Propagation算法)對LT碼進(jìn)行譯碼。取長度有限的噴泉編碼,設(shè)長度為 N。定義JV/K-l + s為編碼開銷,稱f為編碼凈開銷。M.Luby證明使用BP算 法,接收機(jī)接收到任意"O(VZln2^/州個(gè)編碼符號就能夠以l-5的概率恢復(fù)原 發(fā)送的K個(gè)信源符號,且其平均每符號所需的譯碼復(fù)雜度為0(ln(r/。。這說明, 采用置信傳播譯碼的LT碼具有良好的漸進(jìn)性能,也就是說,當(dāng)K很大時(shí),LT 碼的編碼和譯碼復(fù)雜度均接近線性。例如,D. J. Mackay在"Fountain codes"(IEE Proc,Commun., vol. 152, no. 6, pp. 1062-1068, Dec. 2005) 一文中給出了這樣的結(jié) 果使用信源長度為10000比特的LT碼,編碼開銷接近1.05時(shí),BP算法能夠 高效地譯出信源序列。A. Shokrollahi在"Raptor codes" (IEEE Transactions on Information Theory, vol. 52, no. 6, pp. 2551-2567, June 2006)—文中將LT碼和一 個(gè)低密度奇偶校驗(yàn)編碼級聯(lián),提出了 Raptor碼。Raptor碼是在LT碼基礎(chǔ)上的增 強(qiáng),進(jìn)一步降低了譯碼復(fù)雜度,并提高了編碼效率。
目前實(shí)用的噴泉碼,如LT碼和Raptor碼所具的有良好漸進(jìn)編碼和譯碼性能 使這些碼適合于信源長度很長的碼。但對于實(shí)際的有線通信、無線通信及互聯(lián) 網(wǎng)數(shù)據(jù)傳輸,只包含少數(shù)幾個(gè)或幾十個(gè)符號的短信源信息常常用作控制信息, 這些信息對實(shí)時(shí)性和可靠性要求很高,需要更強(qiáng)的差錯(cuò)保護(hù)。這就要求信源長 度較短時(shí),噴泉碼也具有很高的編碼效率和很低的譯碼復(fù)雜度。為實(shí)現(xiàn)這一目 標(biāo),E. Hyytia等、U. C. Kozat等和E. A. Bodine等在"Optimal degree distribution for LT codes with small message length" (Proceedings of IEEE INFOCOM, 2007, Anchorage, Alaska, USA, pp. 2576-2580)、 "Unequal error protection rateless codes for scalable information delivery in mobile networks" (Proceeding of IEEE INFOCOM, 2007, Anchorage, Alaska, USA, pp. 2316-2320, May 2007 )和 "Characterization of Luby transform codes with small message size for low-latency decoding" (IEEE International Conference on Communications, 2008 (ICC,08), Beijing, China, pp. 1195-1199, April 2008)這些文獻(xiàn)中研究了應(yīng)用于信源長度較 短(典型地,信源長度小于1000)和長度中等(典型地,信源長度大于1000且 小于10000)的二進(jìn)制噴泉碼,取得了一些研究進(jìn)展。
這些噴泉短碼的工作是基于二迸制編碼構(gòu)造的。使用二進(jìn)制編碼構(gòu)造噴泉 碼有這樣的缺點(diǎn)當(dāng)信源長度不太長時(shí),為成功譯碼所占用的編碼開銷比較大。
6以U. C. Kozat在"Unequal error protection rateless codes for scalable information
delivery in mobile networks,,一文給出的編碼器度分布為
A (x) = 0曙007969x + 0'493570jc2 + 0.166220x3 + 0.072646 + 0.082558x5 + 0.056058x8 + 0.037229jc9 +0.055590x19 +0.025023x65 +0.003135x66
信源長度K-1000的二進(jìn)制LT碼為例,即便使用最大似然序列譯碼,當(dāng)編 碼開銷為1.25 (即25%的凈開銷)時(shí),譯碼器不能恢復(fù)發(fā)送信源序列的概率還 高達(dá)0.485。
鑒于二進(jìn)制噴泉編碼在短碼和中等長度碼應(yīng)用時(shí)具有開銷大的缺點(diǎn),可以 考慮在多進(jìn)制符號集合中構(gòu)造噴泉編碼。隨機(jī)產(chǎn)生一個(gè)《x《的實(shí)數(shù)矩陣,這個(gè) 矩陣可逆的概率為1,而一個(gè)隨機(jī)二進(jìn)制《x《矩陣(當(dāng)K大于10)滿秩的概率 小得多,只有0.289。容易理解,如果噴泉碼的信源和編碼符號基于一個(gè)包含g (《>2)個(gè)符號的集合中構(gòu)造, 一個(gè)隨機(jī)的《"矩陣滿秩的概率將高于二進(jìn)制 時(shí)的概率。特別地,噴泉碼可以在有限域GF(q)中構(gòu)造。
單純從編碼效率的角度來看,Reed-Solomon碼(見I.S.Reed禾n G. Solomon 的"Polynomial codes over certain finite fields", Journal of the society for industrial and applied mathematics, vol. 8, no. 2, pp. 300-304, June 1960)是一種基于有限域 GF(q)構(gòu)造的好碼《個(gè)信源符號可以由所接收到的任意K個(gè)不同編碼符號恢復(fù) 出來。但Reed-Solomon碼作為噴泉碼難以實(shí)用首先,有限域GF(q)的階數(shù)《限 制了噴泉碼的長度,即Reed-Solomon碼最大長度為《-l,而噴泉碼對碼的長度 要求是不確定的,希望最長可以達(dá)到無限長。其次,已有的Reed-Solomon編碼 和譯碼算法復(fù)雜度是信源長度的二次方,這樣的復(fù)雜度即便對于中等長度的信 源長度(例如1000)都太高了。這些缺點(diǎn)使目前已有的多進(jìn)制噴泉編碼難以實(shí) 際應(yīng)用。
發(fā)明內(nèi)容
本發(fā)明針對已有的二進(jìn)制噴泉碼在信源長度不長時(shí)效率很低、多進(jìn)制噴泉 碼譯碼復(fù)雜度高的缺點(diǎn),提出了一種基于有限域的多進(jìn)制噴泉編碼和譯碼方法。 該方法極大地提高了噴泉編碼的編碼效率,降低了噴泉碼的譯碼復(fù)雜度,適合 于各種信源長度的噴泉碼應(yīng)用。
本發(fā)明的目的是通過下述技術(shù)方案實(shí)現(xiàn)的。定義GF(q)表示有限域,即伽羅華域,《可以是任意素?cái)?shù)或者素?cái)?shù)的正整數(shù) 次冪。例如,g可以是2, 4, 8, 16,...或者3, 9, 27,...等等。 一個(gè)定義于 有限域GF(q)的矩陣或矢量,稱其非零元素的個(gè)數(shù)為該矩陣或矢量的重量。令 、=[、,&...]表示長度半無限的噴泉編碼序列, 一個(gè)編碼符號"(z = i,2,...)的編 碼度表示參加該符號編碼的信源符號個(gè)數(shù)。設(shè)信源的長度為^。令 m-[ ,^,…, r表示信源矢量,其第/個(gè)符號取自于GF(q), J",2,…,X。
步驟一、對噴泉碼進(jìn)行編碼,得到噴泉編碼序列^ 其中,編碼
符號^ (,-L2,…)的實(shí)現(xiàn)步驟如下
首先,給定編碼度分布函數(shù)^力,根據(jù)分布函數(shù)/z(^隨機(jī)生成一個(gè)非負(fù)整數(shù) 《,將J,作為編碼符號^的編碼度。
然后,從尺個(gè)信源符號中隨機(jī)選取《個(gè)不同的符號,記K,.^^A,…,、J為 所選擇符號的序號集合。
之后,從有限域GF(q)中隨機(jī)產(chǎn)生A個(gè)非零值作為編碼符號v,的編碼系數(shù), 記這些編碼系數(shù)構(gòu)成的集合為C-化,^,…,c》。
最后,根據(jù)編碼系數(shù)對",個(gè)不同的符號求加權(quán)和,得到編碼符號v,的值,艮P,
使用公式v, =c'氣+c2 'm,2 + ■' + ", 'm 計(jì)算編碼符號v,的值。此處的加法和乘
法都是定義于有限域中的運(yùn)算。
步驟二、從v。 中選取出長度為W (W》《)的編碼序列,記為
w 對該噴泉編碼序列進(jìn)行譯碼,得到原信源序列。實(shí)現(xiàn)過程如下
設(shè)接收機(jī)向譯碼器輸入長度為W(W》K)的編碼序列P[W^,…,Mvf 。由于步
驟一得到的編碼是線性編碼,故將編碼序列w-[,巧,…, f表示為信源序列的線 性組合,即,線性方程組w-A,。其中,A是一個(gè)ATxK階矩陣,其元素取自于
GF(q),線性方程組w-A.m的加法和乘法元素是定義于有限域GF(q)的運(yùn)算。
雖然使用置信傳播算法可以對本發(fā)明的多進(jìn)制噴泉碼進(jìn)行譯碼,但置信傳播算 法對于大多數(shù)編碼很容易由于阻塞導(dǎo)致譯碼失敗,因而其譯碼性能較差。對線
性方程組w-A,而言,只要矩陣A的秩為《,收到沐=[ ..., 卩后,譯碼器通
過基于有限域GF(q)的高斯消元就能夠求解出信源矢量n^h,^,…,附J,實(shí)現(xiàn) 最大似然序列譯碼。但直接的高斯消元法復(fù)雜度高于o(^2),甚至可達(dá)到O(f ),
難以實(shí)際應(yīng)用。由步驟一可知,線性方程組w-A.m實(shí)際是基于稀疏矩陣的線性方程組,譯碼器利用其稀疏特性可大大降低譯碼復(fù)雜度。利用矩陣A的稀疏特 性,對噴泉編碼序列^ = —1,^,..., /進(jìn)行譯碼,過程如下 (1)對矩陣A進(jìn)行主元選擇
在求解線性方程組w-A.m的高斯消元過程中,矩陣填充元的數(shù)量與主元選 擇順序具有強(qiáng)烈的依賴關(guān)系。而矩陣填充元的數(shù)量直接決定了噴泉碼高斯消元
譯碼的復(fù)雜度。為保持消元過程中矩陣的稀疏性,應(yīng)使用良好的主元選擇方法。 為保持消元過程中矩陣的稀疏性以及減小運(yùn)算量,主元選擇的策略可以是局部 填入量最小化,也可以是局部最大填入量最小化。為簡單和高效,本發(fā)明使用 局部填充元和局部操作數(shù)最小化的主元選擇策略。
求解線性方程組w-A.m的高斯消元包含兩個(gè)過程未知元的前向消元過程 和回代過程。其中,前向消元過程將矩陣A變換成梯型形式的上三角陣,執(zhí)行 這一過程將占據(jù)高斯消元絕大部分時(shí)間。與實(shí)數(shù)域和復(fù)數(shù)域線性方程組不同, 基于有限域的線性方程組運(yùn)算過程中不會(huì)產(chǎn)生舍入誤差,因此沒有數(shù)值穩(wěn)定性 問題。
下面給出局部填充元和局部操作數(shù)最小化的主元選擇策略。 對于矩陣為A的有限長噴泉編碼序列w^ ^…,,f ,高斯消元法的前向消 元過程共有K步。在前向過程的第6 U-1,2,…,X)步,矩陣的第;t行除以其(/t,/t) 位置的元素,然后分別將該行各適當(dāng)倍數(shù)與下面的各行相加,使下面各行第A列 的非零元素全都變成零。這樣,前向過程的第it步完成時(shí),矩陣被化為上三角形
式,如圖4a所示。圖4a中,A("=為第A步開始時(shí)的矩陣,A。^A為原始 的矩陣,矩陣A("的前yt-l列即為上三角矩陣,Af是待消元的剩余矩陣。局部 填充元和局部操作數(shù)最小化的策略是在前向消去的每一歩,在剩余矩陣A(;)中, 選取最大填入和操作數(shù)最小的元素作為主元。
剩余矩陣A^共有,V" + 1行和Z-/t + l列。設(shè)4"('W)是A^的非零元, ,dl,…,jV-/fc + l}, ye{i,..,《-& + 1}。貝U4"("')為一個(gè)候選主元。令",和。分別表 示剩余矩陣Af第/行和第J列的重量。如果《)("')為主元,則在前向消去過程 的第/t步,共有r,-l行需要進(jìn)行消去處理,而每一待消去處理的行最多會(huì)產(chǎn)生 。-l個(gè)填充元和進(jìn)行c,-l次基于有限域的加法和乘法操作。于是,最多產(chǎn)生(r, --l)個(gè)填充元和進(jìn)行(r, --l)次基于有限域GF(q)的加法和乘法運(yùn) 算,稱數(shù)值(r,,l)為選擇度量。使用局部填充元和局部操作數(shù)最小化的主 元選擇策略,在前向消去的第A步,選取剩余矩陣A^中最小選擇度量的元作為 第fc步時(shí)的主元。例如,設(shè)求解基于有限域線性方程組的高斯消去前向過程某歩 有剩余矩陣,如圖4b上半部分所示,則其各非零元素的選擇度量可標(biāo)記為如圖 4b下半部分所示??梢钥闯?,其",(l,l)對應(yīng)的選擇度量值最小,因此,"w(l,l)被 選為該步的主元。
(2)對矩陣A進(jìn)行主元原位高斯消元
圖4所不的高斯消去法中,實(shí)際上假定了^t,/t)不為零,并以此為主元完成
消去過程。如果使用主元選擇策略所確定的主元,前向消去過程的第^步,其主
元不在位置(A,",可以通過行和列的交換將主元交換到(&,yt)再進(jìn)行消元運(yùn)算。 然而,在稀疏矩陣存儲中,為了節(jié)省存儲單元,往往不同時(shí)按行、列存放矩陣 元素,因而,行列交換無法通過修改指針數(shù)組來完成,必須進(jìn)行真正的行列交 換。這種行列交換需耍頻繁地進(jìn)行存取存儲器,耗費(fèi)大量計(jì)算時(shí)間。實(shí)際上, 這種交換并無必要,只需要采用2《個(gè)單元記錄每歩的主元行號和列號即可。
定義B'"-[^'lw("]為高斯消去前向過程第/t步開始時(shí)的增廣矩陣,則其線性 方程組的系數(shù)矩陣化為A'",編碼矢量化為w("。其中A('"A表示初始編碼矩
陣,w('^w表示輸入到譯碼器的編碼矢量。
a) 令計(jì)數(shù)器的歩數(shù)&二1 。
b) 設(shè)主元為a。'.,記錄第A步的主元行號和列號,即標(biāo)記&(/"厶)。以主元《i 除以第々個(gè)方程中剩下的未知數(shù)的非零系數(shù)和右端項(xiàng),而后,從所有未選 過主元的方程中消去第A個(gè)未知數(shù)。
c) 若々<1,設(shè)置& = & + 1,重復(fù)b),直至* =尺。
至此,就完成主元原位高斯消元。
最后,采用后向迭代,求解線性方程組w-A'm中的未知量m的元素^a ,
即
力(^ 厶'
10其中,"1,2,…,尺。由此得到譯碼輸出序列m。
至此,就實(shí)現(xiàn)了基于有限域的多進(jìn)制噴泉碼的編碼和譯碼過程。
一種基于有限域的多進(jìn)制噴泉編碼和譯碼方法。
有益效果
本發(fā)明方法,使用本發(fā)明的多進(jìn)制噴泉碼編碼方法進(jìn)行編碼,編碼度采用 魯棒孤波分布,編碼復(fù)雜度很低,編碼效率高。再采用本發(fā)明的基于有限域的 多進(jìn)制噴泉碼的譯碼對所編出的噴泉碼進(jìn)行譯碼,譯碼失敗概率很低,比傳統(tǒng) 的概率置信具有明顯的性能優(yōu)勢。使實(shí)際的通信與存儲系統(tǒng)的性能得到了有效 提高,且成本下降。
圖1為信源長度《"00時(shí)平均每編碼符號的編碼度與參數(shù)c和5的關(guān)系示意
圖2為信源長度K = 500時(shí)平均每編碼符號的編碼度與參數(shù)c和S的關(guān)系示意
圖3為信源長度《=1000,參數(shù)5 = 0.05時(shí)平均每編碼符號的編碼度與參數(shù)c的 關(guān)系示意圖4為高斯消元法的剩余矩陣與其非零元的選擇度量值實(shí)例示意圖5為采用基于本發(fā)明基于稀疏矩陣的譯碼方法,信源長度/: = 100,多進(jìn)
制和二進(jìn)制噴泉碼編碼的譯碼失敗概率與編碼效率的關(guān)系示意圖6為不同編碼在各種不同譯碼方法下的歸一化運(yùn)行時(shí)間比較(W = 1250,
^ = 1000 )不意圖。
具體實(shí)施例方式
下面結(jié)合實(shí)施例及附圖,對本發(fā)明作進(jìn)一步詳細(xì)說明。 一種基于有限域的多進(jìn)制噴泉編碼和譯碼方法。
定義GF(q)表示有限域,即伽羅華域,9可以是任意素?cái)?shù)或者素?cái)?shù)的正整數(shù) 次冪。例如,g可以是2, 4, 8, 16,...或者3, 9, 27,…等等。 -個(gè)定義于有限域GF(q)的矩陣或矢量,稱其非零元素的個(gè)數(shù)為該矩陣或矢量的重量。令 K、,、,…]表示長度半無限的噴泉編碼序列, 一個(gè)編碼符號v, (,=!,2,...)的編 碼度表示參加該符號編碼的信源符號個(gè)數(shù)。設(shè)信源的長度為X。令 m二h,^,…, r表示信源矢量,其第y個(gè)符號取自丁-GF(q), hl,2,…,K。
步驟一、對噴泉碼進(jìn)行編碼,得到噴泉編碼序列、=[^^,一]。
其中,編碼符3" (, = !,2,...)的實(shí)現(xiàn)歩驟如下
首先,給定編碼度分布函數(shù)p(力,根據(jù)分布函數(shù)/z(力隨機(jī)生成一個(gè)非負(fù)整數(shù) 《,將《作為編碼符號v,的編碼度。其中,使用魯棒孤波(Robust-Soliton)分布 作為編碼度分布函數(shù)M力,定義如下令信源長度為I,設(shè)c和3是滿足o0和 0<5<1的兩個(gè)參數(shù),令S二c.VZ.ln(i:/。,此處ln(x)表示自然對數(shù);定義
離
〖
1
_ 1)
"i,2,…,a:/s — i
-ln(S/S), d =《/S 0, d>K/S
PW)為孤波分布。將PO和"0作和并歸一化,得到魯棒孤波分布
其中^ = 1>(力+ /^)]。
使用'魯棒孤波分布,為實(shí)現(xiàn)多進(jìn)制噴泉碼,參加每個(gè)編碼符號編碼的信源 符號數(shù)量接近0(ln(XZ。)。這一參數(shù)與二進(jìn)制LT碼相同。只是多進(jìn)制編碼的加 法和乘法工作在有限域GF(q),而二進(jìn)制編碼工作于GF(2)。如果通過査表和對 數(shù)反查表方法計(jì)算有限域的加法和乘法,可以做到GF(q)(《>2)和GF(2)上的 加法和乘法復(fù)雜度基本一致。這說明,本發(fā)明所提出的多進(jìn)制噴泉碼編碼復(fù)雜 度與二進(jìn)制LT碼很接近。為了說明使用魯棒孤波分布選取編碼度時(shí)多進(jìn)制噴泉 碼的編碼復(fù)雜度,圖l、圖2和圖3給出了信源長度^ = 100, ^ = 500和^ = 1000 時(shí)平均每編碼符號編碼度與選取參數(shù)c和5的關(guān)系。從這些關(guān)系可以看出,盡管 編碼度與參數(shù)c和5的取值有關(guān),但編碼度的值都不高。例如,選取^0.05時(shí),
12圖中各編碼度都在10附近,最高也沒有超過15。這說明,每編碼一個(gè)符號,只 需要選取少數(shù)幾個(gè)信源符號加權(quán)疊加即可,其編碼復(fù)雜度很低。
然后,從《個(gè)信源符號中隨機(jī)均勻地選取《個(gè)不同的符號,記 、={^、,"',^}為所選擇符號的序號集合。
之后,從有限域GF(q)中隨機(jī)均勻產(chǎn)生《個(gè)非零值作為編碼符號v,的編碼系 數(shù),記這些編碼系數(shù)構(gòu)成的集合為C:化,C2,…,cJ。
最后,根據(jù)編碼系數(shù)對^,個(gè)不同的符號求加權(quán)和,得到編碼符號v,的值,艮口, 使用公式v, =C| ■"、 +c2 ,、2 4"…+ q ."、計(jì)算噴泉碼的輸出符號v,的值。此處的加法 和乘法都是定義于有限域中的運(yùn)算。
該編碼方法與M. Luby在"LTCodes"—文所提出的二進(jìn)制LT碼區(qū)別在于最 后兩步本發(fā)明方法,在多進(jìn)制噴泉碼產(chǎn)生過程中,在GF(q)中選取J,個(gè)非零系 數(shù),計(jì)算編碼符號v,的值時(shí)的加法和乘法是基于有限域運(yùn)算。而在M丄uby的二 進(jìn)制LT碼產(chǎn)生過程中沒有選取非零系數(shù),因?yàn)橐坏┻x定參加編碼的符號,對二 進(jìn)制編碼而言,編碼系數(shù)恒為l。在二進(jìn)制LT碼編碼時(shí),各參加編碼的符號加 法是模2加。實(shí)際上,LT碼是本發(fā)明的一種特殊情況。當(dāng)《=2時(shí),本發(fā)明的噴 泉碼就是二進(jìn)制的LT碼。基于此,當(dāng)使用魯棒孤波分布作為編碼度分布式,本 發(fā)明的多進(jìn)制噴泉碼可稱為多進(jìn)制的LT碼。
歩驟二、從序列、^v,、i,、,…]中選取出長度為W (iVkK)的編碼序列,記為 ^ =[ 巧,..,^/,對該噴泉編碼序列進(jìn)行譯碼,得到原信源序列。實(shí)現(xiàn)過程如下
設(shè)接收機(jī)向澤碼器輸入長度為iV (AQ《)的編碼序列w-h, …, f。由于 步驟一得到的編碼是線性編碼,故將編碼序列^h,巧,…, r表示為信源序列的
線性組合,即,線性方程組w-A,。其中,A是一個(gè)WxK階矩陣,其元素取自 于GF(q),線性方程組《, = A.m的加法和乘法元素是定義于有限域GF(q)的運(yùn)算。
雖然使用置信傳播算法可以對本發(fā)明的多進(jìn)制噴泉碼進(jìn)行譯碼,但置信傳 播算法對于大多數(shù)編碼很容易由于阻塞導(dǎo)致譯碼失敗,因而其譯碼性能較差。
對線性方程組w-A.m而言,只要矩陣A的秩為《,收到^[,,^,…,^,f后,譯碼 器通過基于有限域GF(q)的高斯消元就能夠求解出信源矢量m^ ^,…, f ,
實(shí)現(xiàn)最大似然序列譯碼。但直接的高斯消元法復(fù)雜度高于o(r),甚至可達(dá)到
O(f),難以實(shí)際應(yīng)用。由步驟一可知,線性方程組w-A,實(shí)際是基于稀疏矩陣 的線性方程組,譯碼器利用其稀疏特性可大大降低譯碼復(fù)雜度。利用矩陣A的稀疏特性,對噴泉編碼序列^[w,,巧,…,,f進(jìn)行譯碼,過程如下 (1)對矩陣A進(jìn)行主元選擇
在求解線性方程組w-A.m的高斯消元過程中,矩陣填充元的數(shù)量與主元選 擇順序具有強(qiáng)烈的依賴關(guān)系。而矩陣填充元的數(shù)量直接決定了噴泉碼高斯消元 譯碼的復(fù)雜度。為保持消元過程中矩陣的稀疏性,應(yīng)使用良好的主元選擇方法。 為保持消元過程中矩陣的稀疏性以及減小運(yùn)算量,主元選擇的策略可以是局部 填入量最小化,也可以是局部最大填入量最小化。為簡單和高效,本發(fā)明使用 局部填充元和局部操作數(shù)最小化的主元選擇策略。
求解線性方程組、^A.m的高斯消元包含兩個(gè)過程未知元的前向消元過程 和回代過程。其中,前向消元過程將矩陣A變換成梯型形式的上三角陣,執(zhí)行 這一過程將占據(jù)高斯消元絕大部分時(shí)間。與實(shí)數(shù)域和復(fù)數(shù)域線性方程組不同, 基于有限域的線性方程組運(yùn)算過程中不會(huì)產(chǎn)生舍入誤差,因此沒有數(shù)值穩(wěn)定性 問題。
下面給出局部填充元和局部操作數(shù)最小化的主元選擇策略。 對于矩陣為A的有限長噴泉編碼序列w-[^,…,,f,高斯消元法的前向消 元過程共有K步。在前向過程的第fc U",2,…,K)步,矩陣的第H亍除以其(、0 位置的元素,然后分別將該行各適當(dāng)倍數(shù)與下面的各行相加,使下面各行第/t列 的非零元素全都變成零。這樣,前向過程的第^歩完成時(shí),矩陣被化為上三角形
式,如圖4a所示。圖4a中,A("—fl,("為第/c步開始時(shí)的矩陣,A('^A為原始 的矩陣,矩陣A("的前A-1列即為上三角矩陣,A(廣是待消元的剩余矩陣。局部 填充元和局部操作數(shù)最小化的策略是在前向消去的每一步,在剩余矩陣A〖"中, 選取最大填入和操作數(shù)最小的元素作為主元。
剩余矩陣A;〖)共有W - & +1行和K - yt +1列。設(shè)^ (/,力是A,)的非零元, /e(l,…、iV —/t + l}, j'e仏….,X —/t十l)。貝廿《)(")為一個(gè)候選主元。令。禾口c,分另U表 示剩余矩陣A^第/行和第乂列的重量。如果4"(U')為主元,則在前向消去過程 的第*歩,共有;',-l行需要進(jìn)行消去處理,而每一待消去處理的行最多會(huì)產(chǎn)生 c「l個(gè)填充元和進(jìn)行。,l次基于有限域的加法和乘法操作。于是,最多產(chǎn)生 (,。-I)個(gè)填充元和進(jìn)行(r, --l)次基于有限域GF(q)的加法和乘法運(yùn) 算,稱數(shù)值(,.,-1).(。-1)為選擇度量。使用局部填充元和局部操作數(shù)最小化的主 元選擇策略,在前向消去的第A步,選取剩余矩陣A^中最小選擇度量的元作為第/t步時(shí)的主元。例如,設(shè)求解基于有限域線性方程組的高斯消去前向過程某步 有剩余矩陣,如圖4b上半部分所示,則其各非零元素的選擇度量可標(biāo)記為如圖
4b下半部分所示。可以看出,其 (l,l)對應(yīng)的選擇度量值最小,因此, (U)被 選為該步的主元。
(2)對矩陣A進(jìn)行主元原位高斯消元
圖4所示的高斯消去法中,實(shí)際上假定了^i)不為零,并以此為主元完成 消去過程。如果使用主元選擇策略所確定的主元,前向消去過程的第A步,其主 元不在位置(A,;t),可以通過行和列的交換將主元交換到Ot,^再進(jìn)行消元運(yùn)算。 然而,在稀疏矩陣存儲中,為了節(jié)省存儲單元,往往不同時(shí)按行、列存放矩陣 元素,因而,行列交換無法通過修改指針數(shù)組來完成,必須進(jìn)行真正的行列交 換。這種行列交換需要頻繁地進(jìn)行存取存儲器,耗費(fèi)大量計(jì)算時(shí)間。實(shí)際上, 這種交換并無必要,只需要采用2^個(gè)單元記錄每步的主元行號和列號即可。
定義B("^A("lw(^為高斯消去前向過程第^步開始時(shí)的增廣矩陣,則其線性 方程組的系數(shù)矩陣化為A'",編碼矢量化為、v("。其中A")-A表示初始編碼矩 陣,w('^w表示輸入到譯碼器的編碼矢量。
a) 令計(jì)數(shù)器的歩數(shù)^二l 。
b) 設(shè)主元為《^ ,記錄第/f步的主元行號和列號,即標(biāo)記&(,;,A)。以主元《), 除以第個(gè)方程中剩下的未知數(shù)的非零系數(shù)和右端項(xiàng),而后,從所有未選過主元 的方程中消去第A個(gè)未知數(shù)。
c)若&<《,設(shè)置& = & + 1,重復(fù)b),直至& =夂。
至此,就完成主元原位高斯消元。
最后,采用后向迭代,求解線性方程組w = A-m中的未知量m的元素^厶,
即
力< " '4"厶 ./.T
蜂+l,…,Z),a") *0
其中,/t-l,2,…J。由此得到譯碼輸出序列m。
至此,通過使用適3的主元選擇方案,結(jié)合主元原位高斯消元法,即實(shí)現(xiàn) 了基于有限域的多進(jìn)制噴泉碼的譯碼。
例如,我們比較各種不同譯碼算法的復(fù)雜度置信傳播方法、本發(fā)明的基
15于稀疏矩陣的高斯消元法和常規(guī)的高斯消元法。為了消除不同計(jì)算機(jī)計(jì)算速度 不同對運(yùn)行結(jié)果的影響,本例給出的結(jié)果為相對時(shí)間結(jié)果。也就是,采用二進(jìn) 制碼置信傳播算法,對^ = 1250,《=1000, c = 0.05, 3 = 0.05進(jìn)行譯碼,并將其 譯碼時(shí)間作為基準(zhǔn),其它方法的譯碼時(shí)間除以該基準(zhǔn)時(shí)間,將此歸一化時(shí)間作 為算法的運(yùn)行時(shí)間。每一算法調(diào)用1000次,取其平均時(shí)間作為運(yùn)行時(shí)間再進(jìn)行 歸一化處理。
使用魯棒孤波分布,選取W-1250,《=1000, c = 0.05, 5 = 0.05構(gòu)造二進(jìn)制 和十六進(jìn)制的LT碼。對于二進(jìn)制編碼,其加法和乘法分別為"異或"和邏輯"與" 運(yùn)算。對于十六進(jìn)制,其加法為4比特并行"異或",其乘法采用高效的"對數(shù)一 加一反對數(shù)"操作進(jìn)行運(yùn)算。運(yùn)行時(shí)間結(jié)果如圖6所示。觀察發(fā)現(xiàn)本發(fā)明的基 于稀疏矩陣的高斯消元法實(shí)現(xiàn)了最大似然序列譯碼,但只比置信傳播方法慢4.6 倍,且遠(yuǎn)遠(yuǎn)快T常規(guī)的高斯消元法。另外,基于GF(16)的十六進(jìn)制LT碼譯碼只 比二進(jìn)制LT碼的譯碼略慢。作為比較,圖6也給出了隨機(jī)二進(jìn)制和多進(jìn)制噴泉 編碼采用常規(guī)高斯消元法譯碼時(shí)的相對運(yùn)行時(shí)間。由于隨機(jī)編碼的編碼矩陣缺 乏稀疏性,其譯碼時(shí)間遠(yuǎn)遠(yuǎn)高于LT碼的譯碼時(shí)間。
實(shí)施例1
選取信源長度為《=100, c = 0.05,改變參數(shù)5,編碼度采用魯棒孤波分布, 使用本發(fā)明的歩驟一所述方法進(jìn)行編碼,再采用本發(fā)明的步驟二所述方法進(jìn)行 譯碼。選取^^2和gd6兩種情況,仿真計(jì)算出譯碼失敗概率與編碼效率的關(guān)系 如圖5所示。另外,編碼矩陣隨機(jī)均勻地選取,在《=2和《=16情形下,計(jì)算出 譯碼失敗概率與編碼效率的關(guān)系,計(jì)算結(jié)果也放在圖5中。
隨機(jī)噴泉碼由于其矩陣的密度很高, 一般只能使用常規(guī)的高斯消元法譯碼, 譯碼復(fù)雜度為O(f ),難以實(shí)際應(yīng)用。該碼可作為噴泉編碼和譯碼的性能下界。 從圖5可以看出,對于所選取的這些基于GF(16)的編碼,編碼開銷低于1.02 (實(shí) 際凈開銷只有0.02),譯碼失敗概率均低于0.02。同時(shí),GF(16)的編碼的譯碼性 能優(yōu)于GF(2)時(shí)的譯碼性能。
我們還采用置信傳播算法,取尺=100,對c^0.05, "0.05的二進(jìn)制LT碼進(jìn)
行了仿真,其結(jié)果為編碼開銷1 + ^=1.5時(shí),譯碼失敗概率為0.2。該結(jié)果與圖
5本發(fā)明的結(jié)果比較可以看出,本發(fā)明的基于稀疏矩陣的譯碼算法比傳統(tǒng)的概率
置信具有明顯的性能優(yōu)勢。在本說明書的前面部分已經(jīng)提到,編碼度分布為
Q'(x) = 0,007969x + 0.493570x2屮0.166220;c3 +0.072646/十0.082558x5 +0.056058xs + 0.037229a-9 +0.055590x'9 +0.025023x65 +0.003135x66
信源長度K-1000的二進(jìn)制LT碼,使用最大似然序列譯碼,當(dāng)編碼開銷為 1.25 (即25%的凈開銷)時(shí),譯碼器譯碼失敗概率高達(dá)0.485。使用本發(fā)明的多 進(jìn)制噴泉編碼和本發(fā)明的低復(fù)雜度譯碼算法,不論是多進(jìn)制和二進(jìn)制噴泉碼, 信源長度為100時(shí),其譯碼性能和編碼效率都明顯優(yōu)十以前信源長度為1000的 二進(jìn)制噴泉碼。因此,對T同樣K:度的噴泉碼,本發(fā)明的噴泉碼在譯碼性能和 編碼效率方面具有更為優(yōu)異的性能。
實(shí)施例2
設(shè)有基于有限域GF(4)的信源K:度為5的噴泉碼,設(shè) =:
柳4=0, 《5,,,按照步驟一得到<formula>formula see original document page 17</formula> 根據(jù)所得序列(1, 1, 3, 3, 1, 2)按照歩驟二進(jìn)行譯碼。在高斯消元的前向 過程的第一歩,其編碼矩陣各非零元及其選擇度量與圖4b相同,應(yīng)選擇位置(l,l) 處的元素為主元。第一個(gè)方程除以2后從第6個(gè)方程減去,得到的結(jié)果如下
<formula>formula see original document page 17</formula>
一旦某方程選為主元所在的方程,該方程在后續(xù)消元過程中將保持不變。在第i
個(gè)方程后面粘貼一個(gè)標(biāo)簽S,(l,l),表示在消元第一步選擇了編碼矩陣(u)處的元
素為主元。消元第二步,根據(jù)前述主元選擇策略知位置(4,2)處的元為主元。保 持新選主元所在方程在原位置,將該方程除以主元,然后從第2個(gè)方程和第5 個(gè)方程消i未知數(shù)l得到附,
2w3
附3
+ 2m4
+ w4
+ 2附4 +
0
+附5 + 3m5 + 3m5 + 3附《
=3 &(U) =0 =3
=1 S2 (4,2) =2 =1
類似地,在第4個(gè)方程后面標(biāo)記&(4,2),表示消元過程第二步選擇了編碼 矩陣(4,2)處的元素為主元。消元第三步,選擇位置(5,3)的元素為主元。使用同樣 的方法,有
附,
附,
附,
+ 2m,
2附4
+ 2w,
+ 3附5 + 3w5 + 2附;
=3 S,(U) =0 =0
=1 &(4,2)
=2 &(5,3) =2
剩下的幾步很直觀,因此直接寫出得到前向消元的結(jié)果:
柳,
+ 2m,
/7^
+ 3柳5
+ 3附5 附《
3 0
0 S4(3,4)
1 &(4,2)
2 &(5,3) 1 &(6,5)
根據(jù)此前向消元結(jié)果,后向回代過程如下第一步,利用標(biāo)簽&解出^=1。 第二步,利用標(biāo)簽&解得 =0。第三步,根據(jù)標(biāo)簽&和己經(jīng)解出的未知數(shù)/^和 ms有w; = 2 — 2w4 — 3柳5 = 1 。-類"[以:t也,有m2 = 1 — 3m5 = 2禾口 m' = 3 — 2m4 = 3 。
以上所述為本發(fā)明的較佳實(shí)施例而已,本發(fā)明不應(yīng)該局限于該實(shí)施例和附
:/入
W開的內(nèi)容。例如,對于實(shí)際的噴泉碼,其有限域的階數(shù)可在素?cái)?shù)及素?cái)?shù) 的正整數(shù)次冪中任意選取,其編碼度分布函數(shù)的參數(shù)也可以在可選范圍內(nèi)隨意 選擇。所以凡是不脫離本發(fā)明所公開的精神下完成的等效或修改,都落入本發(fā) 明保護(hù)的范圍。
權(quán)利要求
1、一種基于有限域的多進(jìn)制噴泉編碼和譯碼方法,其特征在于,包括以下步驟定義GF(q)表示有限域,即伽羅華域,q是任意素?cái)?shù)或者素?cái)?shù)的正整數(shù)次冪;一個(gè)定義于有限域GF(q)的矩陣或矢量,稱其非零元素的個(gè)數(shù)為該矩陣或矢量的重量;令v∞=[v1,v2,…]表示長度半無限的噴泉編碼序列,一個(gè)編碼符號vi(i=1,2,…)的編碼度表示參加該符號編碼的信源符號個(gè)數(shù);設(shè)信源的長度為K;令m=[m1,m2,…,mK]T表示信源矢量,其第j個(gè)符號取自于GF(q),j=1,2,…,K;步驟一、對噴泉碼進(jìn)行編碼,得到噴泉編碼序列v∞=[v1,v2,…];其中,編碼符號vi(i=1,2,…)的實(shí)現(xiàn)步驟如下首先,給定編碼度分布函數(shù)μ(d),根據(jù)分布函數(shù)μ(d)隨機(jī)生成一個(gè)非負(fù)整數(shù)di,將di作為編碼符號vi的編碼度;然后,從K個(gè)信源符號中隨機(jī)選取di個(gè)不同的符號,記為所選擇符號的序號集合;之后,從有限域GF(q)中隨機(jī)產(chǎn)生di個(gè)非零值作為編碼符號vi的編碼系數(shù),記這些編碼系數(shù)構(gòu)成的集合為最后,根據(jù)編碼系數(shù)對di個(gè)不同的符號求加權(quán)和,得到編碼符號vi的值,即,使用公式計(jì)算編碼符號vi的值;步驟二、從v∞=[v1,v2,…]中選取出長度為N(N≥K)的編碼序列,記為w=[w1,w2,…,wN]T,對該噴泉編碼序列進(jìn)行譯碼,得到原信源序列,實(shí)現(xiàn)過程如下設(shè)接收機(jī)向譯碼器輸入長度為N(N≥K)的編碼序列w=[w1,w2,…,wN]T,將編碼序列w=[w1,w2,…,wN]T表示為信源序列的線性組合,即,線性方程組w=A·m,其中,A是一個(gè)N×K階矩陣,其元素取自于GF(q),線性方程組w=A·m的加法和乘法元素是定義于有限域GF(q)的運(yùn)算;利用矩陣A的稀疏特性,對噴泉編碼序列w=[w1,w2,…,wN]T進(jìn)行譯碼,過程如下(1)對矩陣A進(jìn)行主元選擇對于矩陣為A的有限長噴泉編碼序列w=[w1,w2,…,wN]T,高斯消元法的前向消元過程共有K步,在前向過程的第k(k=1,2,…,K)步,矩陣的第k行除以其(k,k)位置的元素,然后分別將該行各適當(dāng)倍數(shù)與下面的各行相加,使下面各行第k列的非零元素全都變成零,當(dāng)前向過程的第k步完成時(shí),矩陣被化為上三角形式,為第k步開始時(shí)的矩陣,A(1)=A為原始的矩陣,矩陣A(k)的前k-1列即為上三角矩陣,是待消元的剩余矩陣;在前向消去的每一步,在剩余矩陣中,選取最大填入和操作數(shù)最小的元素作為主元;剩余矩陣共有N-k+1行和K-k+1列,設(shè)是的非零元,i∈{1,…,N-k+1},j∈{1,…,K-k+1},則為一個(gè)候選主元;令ri和cj分別表示剩余矩陣第i行和第j列的重量,數(shù)值(ri-1)·(cj-1)為選擇度量;使用局部填充元和局部操作數(shù)最小化的主元選擇策略,在前向消去的第k步,選取剩余矩陣中最小選擇度量的元作為第k步時(shí)的主元;(2)對矩陣A進(jìn)行主元原位高斯消元定義B(k)=[A(k)|w(k)]為高斯消去前向過程第k步開始時(shí)的增廣矩陣,則其線性方程組的系數(shù)矩陣化為A(k),編碼矢量化為w(k),其中A(1)=A表示初始編碼矩陣,w(1)=w表示輸入到譯碼器的編碼矢量;a)令計(jì)數(shù)器的步數(shù)k=1;b)設(shè)主元為記錄第k步的主元行號和列號,即標(biāo)記Sk(ik,jk),以主元除以第ik個(gè)方程中剩下的未知數(shù)的非零系數(shù)和右端項(xiàng),而后,從所有未選過主元的方程中消去第jk個(gè)未知數(shù);c)若k<K,設(shè)置k=k+1,重復(fù)b),直至k=K;最后,采用后向迭代,求解線性方程組w=A·m中的未知量m的元素即其中,k=1,2,…,K,由此得到譯碼輸出序列m。
2、根據(jù)權(quán)利要求1所述的一種基于有限域的多進(jìn)制噴泉編碼和譯碼方法,其特征在于,所述步驟一中編碼度分布函數(shù)編碼度分布函數(shù)M"),可以是魯棒 孤波分布,其生成方法為使用魯棒孤波分布作為編碼度分布函數(shù)/z(力,定義如下令信源長度為尺, 設(shè)c禾fU是滿足c〉0禾n0〈5〈1的兩個(gè)參數(shù),令S:c.V^.ln(i:/。,此處ln(x)表示 自然對數(shù);定義<formula>formula see original document page 4</formula>P(力為孤波分布;將O和"0作和并歸一化,得到魯棒孤波分布:<formula>formula see original document page 4</formula>其中"=1>(力+ /^)]。
3、 根據(jù)權(quán)利要求1所述的一種基于有限域的多進(jìn)制噴泉編碼和譯碼方法, 其特征在于,所述有限域GF(q)的階數(shù)《是素?cái)?shù)的正整數(shù)次冪。
4、 根據(jù)權(quán)利要求1所述的一種基于有限域的多進(jìn)制噴泉編碼和譯碼方法, 其特征在于,為保持消元過程中矩陣的稀疏性以及減小運(yùn)算量,主元選擇的』 略采取局部填入量最小化。
全文摘要
本發(fā)明涉及一種基于有限域的多進(jìn)制噴泉編碼和譯碼方法。首先對噴泉碼進(jìn)行編碼,得到噴泉編碼序列給定編碼度分布函數(shù)μ(d),根據(jù)分布函數(shù)μ(d)隨機(jī)生成一個(gè)非負(fù)整數(shù)d<sub>i</sub>,將d<sub>i</sub>作為編碼符號v<sub>i</sub>的編碼度;從K個(gè)信源符號中隨機(jī)選取d<sub>i</sub>個(gè)不同的符號;從有限域GF(q)中隨機(jī)均勻產(chǎn)生d<sub>i</sub>個(gè)非零值作為編碼符號v<sub>i</sub>的編碼系數(shù);根據(jù)編碼系數(shù)對d<sub>i</sub>個(gè)不同的符號求加權(quán)和,得到編碼符號v<sub>i</sub>的值,進(jìn)而得到噴泉編碼序列。從該噴泉編碼序列中選取出長度為N(N≥K)的編碼序列,記為w=[w<sub>1</sub>,w<sub>2</sub>,…,w<sub>N</sub>]<sup>T</sup>,通過主元選擇和主元原位高斯消元,對其進(jìn)行譯碼,得到最終的譯碼輸出序列。本發(fā)明方法極大地提高了噴泉編碼的編碼效率,降低了噴泉碼的譯碼復(fù)雜度,適合于各種信源長度的噴泉碼應(yīng)用。
文檔編號H03M13/37GK101510783SQ20091011974
公開日2009年8月19日 申請日期2009年3月26日 優(yōu)先權(quán)日2009年3月26日
發(fā)明者安建平, 李祥明 申請人:北京理工大學(xué)