Reed-Solomon糾錯碼(RS碼)(里德-所羅門碼)


Reed-Solomon糾錯碼(RS碼)

Reed-Solomon利用范特蒙矩陣或者柯西矩陣的特性來實現糾錯碼的功能。

Reed-Solomon編碼:
把輸入數據視為向量D=(D1,D2,…,Dn),編碼后數據視為向量(D1,D2,…Dn,C1,C2,…,Cm),RS編碼可以看做為如下圖的矩陣運算。編碼矩陣B必須具有任意子矩陣可逆的特性。

 

 

 

 


Reed-Solomon解碼:
RS最多能容忍m個數據塊被刪除,m包括實際數據和冗余數據。數據恢復的過程如下:
(1)假設D1,D4,C2丟失,從編碼矩陣中刪掉丟失的數據塊/編碼塊對應的行。

 

 


根據上圖所示RS編碼運算等式,可以得到如下B’以及等式。

 

 


(2)由於B’是可逆的,記B’的逆矩陣為(B’ ^ -1),則B’*(B’^-1)=I單位矩陣。兩邊左乘B’逆矩陣。

(3)得到如下原始數據D的計算公式

 

 


有限域:

假設每一個向量元素由8bit組成,那么矩陣相乘后的結果必然要超過8bit的范圍,為了解決這個問題,提出有限域的概念。
1.域
一組元素的集合,以及在集合上的四則運算,構成一個域。其中加法和乘法必須滿足交換、結合和分配的規律。加法和乘法具有封閉性,即加法和乘法結果仍然是域中的元素。
域中必須有加法單位元和乘法單位元,且每一個元素都有對應的加法逆元和乘法逆元。但不要求域中的0有乘法逆元。
2.有限域
有限域又稱為伽羅華域,其僅含有限多個元素的域。GF(2^ w)表示含有2^ w個元素的有限域,那么在計算機中常用的有限域是GF(2^8)
3.單位元
Identity Element,也叫幺元,通常使用e來表示單位元,單位元和其他元素結合時,並不會改變那些元素。
對於二元運算 * ,若a * e=a,e稱為右單位元;若e * a=a,e稱為左單位元,若a * e=e*a =a,則稱e為單位元。
4.逆元
對於二元運算 *,若a * b=e,則a稱為b的左逆元素,b稱為a的右逆元素。若a * b=b * a=e,則稱a為b的逆元,b為a的逆元。
5.本原多項式
域中不可約多項式是不能夠進行因子分解的多項式,本原多項式是一種特殊的不可約多項式,當一個域上的本原多項式確定了,這個域上的運算也就確定了。

**RS-Code是糾刪碼的一種,**Erasure Code(EC),即糾刪碼,是一種前向錯誤糾正技術。主要應用在網絡傳輸中避免包的丟失,存儲系統利用它來提高存儲的可靠性。相比多副本復制而言,糾刪碼能夠以更小的數據冗余度獲得更高數據可靠性,但編碼方式較復雜,需要大量計算。糾刪碼只能容忍數據丟失,無法容忍數據篡改。

EC是一種編碼技術,它可以將n份原始數據,增加m份數據,並能通過n+m份中的任意n份數據,還原為原始數據。即如果有任意小於等於m份的數據失效,仍然能通過剩下的數據還原出來。

目前,糾刪碼技術在分布式存儲系統中應用主要有三類,陣列糾刪碼(Array Code:RAID5\RAID6)、RS、LDPC(LowDensity Parity Check Code)低密度奇偶校驗糾刪碼。
————————————————
版權聲明:本文為CSDN博主「Claire_wulian」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_42388255/article/details/106520370


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM