Easure Code
方式:(编码)将 k 份数据包通过编码矩阵增加到 k+m 份。(解码)
通过将 k+m 行矩阵左乘编码矩阵的逆矩阵就可以还原出原来的 k 份
数据包。
优点:避免包的丢失,提高传输的可靠性。即使编码包丢失,也可以
通过编码矩阵的逆矩阵和接收到的编码进行恢复。
缺点:求出编码矩阵比较复杂,需要较多的计算。数据丢失可以进行
恢复,但数据篡改无法恢复。如果丢失的数据超过 m 份,则很难还
原到原来的 k 份数据。
应用:Raptor 编码使用 easure code 进行预编码。(通过 easure code 对
未被译码的高连接度的数据包进行译码。)
RLNC
方法:(编码)在源节点将需要发送的源包随机线性组合,中间节点
将接收到的源包进行随机线性组合。(解码)使用高斯消元法将随机
线性组合的源包进行解码。
优点:传输完成的时间较短。
缺点:编码复杂度较高,解码时间较长。
应用:远距离动态信道通信。(中间节点的重新编码使得传输的距离
可以更远。)
涌泉码(LT 码和 Raptor 码)
思想:将数据转换为一个数据包集合,源节点在不知道数据包是否发
送成功的基础上持续发送数据包,只要有足够的数据包就可以还原为
原来的数据。主要类型有 LT 码和 Raptor 码。
优点:能以较大概率从(k+a)份数据编码包中恢复 k 份数据包。a
可以任意小,译码成功率与 a 有关。
缺点:当接收到的编码包都相似,无法从这些编码包中得到其中任意
一个初始数据包的译码,导致可译集的减少,即存在无法译码的情况。
LT 码:
方法:(编码)将数据分为含有 k 个数据包的集合 H,在 1~k 上按照
某一分布函数 )(xf 选取整数 d 作为该数据包集合的度。在该集合上随
机选择 d 个数据包进行异或和,生成编码包。(解码)接收端接收编
码包的同时会接收一个伴随矩阵,伴随矩阵中含有的信息包括该编码
包的度和集合 H 中选取的数据包。使用 BP 迭代法,逐步恢复每个数
据包,当选取合适的 a 时,就可以恢复原来 k 个数据包进而得到初始
数据。
Raptor 码:
方法:在进行 LT 算法之前采用 easure code 进行预编码,之后的编码
与 LT 码相同。
LT 码和 Raptor 码的比较:
LT 码是通用的数字涌泉码,在不同删除概率的删除信道(具有前项
纠错功能的信道)上,LT 码都是逼近最优的。LT 码为了保证数据包
的全覆盖和译码的完整,不可避免的会出现一些高连接度(d 较大)
的编码包,这样在进行编码(异或和)的时候,会消耗大量的时间,
同时也可能导致译码时的可译集的减少,降低译码成功率。Raptor
码采用 erasure code 进行预编码,使得原来 k 份数据包变为 k+m 份,
使得高连接度的数据包减少。译码与 LT 码相比要多一步 erasure code
的译码过程。所以 Raptor 码相比 LT 码有更小的编码复杂度(无需进
行大量的异或和运算)和更大的译码成功率(可译集的增多)。
BATS 码:
优点:相比较于 RLNC,译码复杂度要更低。BATS 码类似于涌泉码,
同时在中间节点上也需要进行重新编码,所以有 RLNC 的部分特性。
综合起来看,BATS 码既可以像 RLNC 那样适用于远距离传输,又可
以像涌泉码那样逼近最优编码。
缺点:在环形的拓扑结构中,BATS 码需要改良。由于 BATS 继承了
RLNC 的线性网络拓扑结构,所以在现实中的环形网络拓扑结构中就
需要改善。