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)低密度奇偶校验纠删码。

Reed-Solomon纠错码(RS码)(里德-所罗门码)相关推荐

  1. 二维码里德所罗门算法

    这是一个相当古老的项目了. 前序 之前一直想写一个有关二维码生成器的教程,由于各种各样的原因,当然主要原因是懒,一直没有下手.最近感觉还是要做点什么,不然有种要烂尾的冲动. 我之所以要写这个教程,主要 ...

  2. [4G5G专题-44]:物理层-物理层信道编码与交织加扰以及LDPC码与Polar码比较

    目录 第1章 物理层架构 1.1 物理层内部功能协议栈 1.2 5G NR下行选项A 1.3 5G NR下行选项B 1.4 NR的物理层数据处理过程概述 第2章 物理层信道编码过程 2.1 NR物理层 ...

  3. 【Mybatis源码】源码分析

    [Mybatis源码]源码分析 (一)Mybatis重要组件 [1]四大核心组件 (1)SqlSessionFactoryBuilder (2)SqlSessionFactory (3)SqlSess ...

  4. zxing源码分析——QR码部分

    zxing源码分析--QR码部分 2013-07-10 17:16:03|  分类: 默认分类 |  标签: |字号大中小 订阅     Java代码结构: zxing源码的结构还是比较清晰的,有关Q ...

  5. Zxing生成二维码思路和源码解析

    Zxing生成二维码思路和源码解析 本博文是一篇介绍google zxing包生成二维码的思路和它的源码的文章. 一.引入 如何调用zxing的代码生成一个二维码呢?主要的函数只有一个,如下所示: B ...

  6. java 头尾 队列_源码|jdk源码之栈、队列及ArrayDeque分析

    栈.队列.双端队列都是非常经典的数据结构.和链表.数组不同,这三种数据结构的抽象层次更高.它只描述了数据结构有哪些行为,而并不关心数据结构内部用何种思路.方式去组织. 本篇博文重点关注这三种数据结构在 ...

  7. JAVA 实现扫码二维码登录

    最近在做一个扫码登录功能,为此我还在网上搜了一下关于微信的扫描登录的实现方式.当这个功能完成了后,我决定将整个实现思路整理出来,方便自己以后查看也方便其他有类似需求的程序猿些. 要实现扫码登录我们需要 ...

  8. 汇编中的扫描码、ASCII码(也称字符码)、扩展码、虚拟键码 的区别

    扫描码 是键盘对应按键的编码 ,虚拟键码 是操作系统对 "对应按键"的编码, 键盘ASCII码 ,是操作系统对"对应 虚拟键码"的编码(也称ASCII字符码或者 ...

  9. 国家发改委:春运期间推动“健康码”全国一码通行

    新京报快讯(记者 姜慧梓)国家发改委近日联合多部门发布关于做好2021年春运工作和加强春运疫情防控的意见,要求春运期间推动"健康码"全国一码通行,避免因扫码造成聚集. 今年春运人口 ...

  10. 学习:二维码、QR码、J4L-QRCode、java

    转自:http://baijinshan.iteye.com/blog/1004554 学习:二维码.QR码.J4L-QRCode.java Java企业应用网络应用Rails应用服务器  开源码 J ...

最新文章

  1. 「caffe速成」caffe图像分类从模型自定义到测试
  2. Mybatis逆向工程过程中出现targetRuntime in context mybatisGenerator is invalid
  3. curl提示不支持https协议解决方法
  4. 分峰截幅c语言算法,面向桥梁健康监测的复合传感技术研究
  5. 超详综述 | 基于深度学习的命名实体识别
  6. Linux debian安装PyCharm教程
  7. 面试官:大型系统架构设计细节你知道多少??
  8. Linux网络和进程管理
  9. Python 前端之HTML
  10. 后端类型/状态/标识校验限定法
  11. Hexo+GitHub搭建个人博客
  12. ubuntu20.04 搭建tftp服务器
  13. 长尾关键词是什么意思?如何使用5118挖掘和下载长尾词?
  14. 手机号归属地 mysql脚本_手机号码归属地能否取消? 这些热点问题,工信部回复了...
  15. windows 定时重启
  16. html5前端开发框架模板,HTML5中50个免费的Bootstrap前端框架模板
  17. なな : 动态jianmo
  18. Maven命令之--mvn help:system
  19. 基于复杂网络理论的计算机网络拓补分析,基于复杂网络理论的计算机网络拓扑分析论文.doc...
  20. 10Android Wifi 移植配置 11wifi 驱动 进阶

热门文章

  1. vue使用coreUI的CDataTable踩坑记录
  2. 基于C#语言Windows窗体应用(.Net Framework)的教室点名系统V1.0
  3. 求字符串转化的最小操作次数 DP动态规划
  4. 手机APP项目测试点(内容)总结
  5. 某大型连锁超市库存管理系统分析报告
  6. LNK2005符号重定义问题
  7. python爬虫(十一)爬取贴吧图片
  8. 数据分析——天猫用户购买行为分析
  9. 预测控制(一):MPC轨迹跟踪
  10. 三子棋 小游戏 C++