前言
DNA水印中需要用到各种编码、纠错算法。现对已有的插入错、删除错的纠错算法进行总结。
算法总结
1、题目:纠错码理论在DNA计算编码中的应用进展
2011年 《福建电脑》
https://www.ixueshu.com/document/cd7838079876fcad058f0995694adacc318947a18e7f9386.html
应用:关注的是DNA计算。
两种应用:
可以将DNA序列的编码问题转为:确定最好的编码方式的问题。
建模,使DNA序列具有某种代数特性。
具体的纠错码编码方法
- 扩展Goppa码编码方法
- 衍生Hadamard矩阵编码方法
- 二源映射编码方法
本文介绍两种:监督矩阵线性码
和 二源映射编码方法
监督矩阵线性码
给出6个约束条件,分为三个优先级。
先构造最小汉明距离的字序列编码
按照约束条件进行搜索,寻找线性码。(搜索监督矩阵H)
二源映射编码方法
把四种分别映射为AGCT
总结:文章较老,概述性文章,方向也不同,但是看看没什么坏处。
2、Efficient and Low-Cost Error Removal in DNA Synthesis by a High-
Durability MutS
去除DNA合成中的误差
发表于ACS Synthetic Biology · March 2020
摘要:基于酶的纠错是DNA合成的关键步骤。
完全跑偏了,这是生物学的内容。
3、基于DNA的信息存储方法
是一项专利的内容
使用的编码方式是:LDPC和BCH。
前人工作介绍:
Yaniv将喷泉理论应用到DNA存储中。
目前的编码方式:哈夫曼+RS纠错
文中方法: 分段进行纠错编码。
纠错编码方案为:低密度奇偶校验(LDPC),叠加水印码。
LDPC码的码长为:64800bit,水印码的码率为4/5。
但是也咩有说明具体的编码方法。
4、 杰林信道检错纠错编码
博客,查阅各种编码方案
https://blog.csdn.net/wjlxueshu/article/details/90266049
检错:按位线性检错算法。
纠错:也是按位线性检错算法,可以查错和纠错。
5、LDPC
具有稀疏校验矩阵的线性分组码。
不同的译码算法有不同的误码特性。
硬判决译码,软判决译码、混合译码。
http://news.163.com/16/1027/09/C4CG56J400014SEH.html
6、基于纠错码的信息隐藏
万方——哈尔滨理工大学
根据隐匿数据的进入形式的差异从而导致数据算法变为两种算法,控区数据隐匿计算方式和幻化数据隐匿计算方式
纠错码一般分为五类
(1)根据改错区被区别为:异组码和卷曲码
卷曲码与之前的很多组数据都存在联系
(2)线代码和非线代码
(3)根据改正失误的类型,分为4种:改个体失误、改突然失误、改一致失误的码和能改不定时出现的失误也能改突然性失误的 码。
(4)数组区别:二进制码和 q 进制码
(5)根据每个数据元维护能力同否等值的变化能将纠错码 划分成等维护纠错码和不等维护(UEP)纠错码
编码译码过程:
数据首先与随机数(密钥)异或--->改错编码,对载体信源进行编码。
7、基于纠错码的密文域鲁棒可逆信息隐藏
使用纠错码对低频信息进行
https://www.ixueshu.com/document/d12bcf441ed5b738318947a18e7f9386.html
几种常见纠错编码方式总结
1、低密度奇偶校验LDPC
实现原理
(1)是线性分组码的一种。
(2)基于具有稀疏矩阵性质的奇偶校验矩阵建构而成。
(3)(n,k)编码,k比特数据用n比特码字编码,n-k比特的码字用来校验。
(4)需要有一个奇偶校验矩阵H,其中1的元素远少于0的元素。
视频讲解
https://www.youtube.com/watch?v=IN_ezsRroMI
(1)常规的LDPC码由3个元素定义(n,wc,wr)
n是码长,wc是column列中1的数量
给出一个例子,每一行只有4个1,wr = 4, wc = 3, wc < wr
矩阵式满秩,所以R = 1 - 3/4 = 1/4
(2)
可以使用二分图bipartite表示这个矩阵:节点可以被分为两类:变量节点和校验节点,边只能连接不同类的节点。Tanner图就是这种。
当且仅当这个比特被包含在奇偶校验式中时,才连接两个节点。
例子:给出一个矩阵,如何画图。n=12,wc=3,wr=6.
n=12,首先画12个节点,标为0-11
根据矩阵,m=6,有六行,上面画六个方框,标为0-5。
连线:如果矩阵中为1,则把两个节点连接起来。
(3)Tanner图
长度为l的cycle表示,从一个节点再回到自身的路径,并且这条路径包含l条边.(l只能是偶数)
girth(周长)是图中最小的cycle的长度。我们希望girth尽可能长,因为独立迭代次数与girth有关。
(4)编码过程
构造矩阵
拆分为wc个子矩阵,使得每一列都包含一个1
把矩阵的列置乱,得到新的子矩阵。
从而得到最后的矩阵,每列有3个1,每行有4个1.
循环矩阵,是把上面一行右移。
permutation 排列,置换
讲解了如何构建H矩阵。
文章:低密度奇偶校验码编译码原理及实现
主要内容
:准循环的LDPC码,编码译码,帧同步的解决方法
概念
:行和列中1的数目分别固定为c和r,则是规则的。否则就是非规则的。
LDPC具有很好的汉明特性
译码原理
:通过校验矩阵建立网格图。
士兵报数:引出外信息和内信息。
Tanner图译码:校验矩阵的每一行可以看作一个单校验码,每一列可以看作一个重复累积码。---> 和积译码算法。
用一个例子,计算m2的全信息和外信息的概率。
H矩阵的每一列对应一个变量节点。
重复累积码字要求m1=m2=m3.
基于网格图的译码方法
:
每行译码是为了得到每个比特的外信息,每个单校验码都可以用两种状态的网格图来表示。
可以构造置信传输译码的因子图。
- 基于概率测度的和积算法。
- 基于似然比度量的和积算法。
- 基于对数似然比度量的和积算法。
- TDMP算法
- 最小和算法(退化的和积算法)
PEG算法
用于随机构造LDPC码和构造准循环LDPC码。尽可能得到最大围长。
LDPC码在IEEE802.16e中的应用
本文重点关注的是如何用硬件来实现这个译码方法。
文章:LDPC码译码算法的研究
纠错码分类
:
分组码:如BCH,,称为编码效率。
卷积码
迭代译码算法(可选择BF或BP或WBF算法)
监督矩阵H的构造方法
码率r = 1-j/k
译码方案:树形译码和概率译码
树形译码
概率译码
对其的数学分析是十分困难的。
matlab 编码
参考视频
https://www.youtube.com/watch?v=QJwQi06Fm3M
2、BCH
参考 https://zhuanlan.zhihu.com/p/95909150
概念
(1)是一种二元线性循环码,属于线性分组码,能纠正多个随机错误。
(2)二进制域中,利用了多项式的性质。
编码
原来的信息是m(x),将其乘一个编码多项式p(x)发送。p(x)必须是不可约的本原多项式,才能使得e(x)/p(x)除不尽。
实例
要发送m(x)为1001,p(x)为1101
m(x)*p(x) = (1 + x^3)(1 + x + x^3) = 1 + x + 2x^3 + x^4 + x^6 = 1100101(左边代表低位)
发送1100101。
如果接收端没有错误,相除结果余数是0,商是1001,是m(x)
如果接受端有错误,接收的结果是110011
1,相除,得到余数1110000
,假设是一位错误,就可以遍历尝试是哪种结果。
BCH
根据要纠错的位数,得到Q(x)。
Q(x)的计算结果写错了,后面写对了。
r(x) / 本原多项式p(x)
后面看不懂了
参考 http://staff.ustc.edu.cn/~wyzhou/ct_chapter3.pdf
3、汉明码
参考之前的笔记