随机线性网络码解码算法解析
1. 引言
在网络编码(NC)的实现与部署中,有两个重要的性能指标:一是编码带来的开销大小,二是编码、重编码和解码的执行速度。编码实现相对简单,能以最少的操作完成,重编码与编码类似,因此本文重点关注快速解码问题。
随机线性网络编码(RLNC)是一种流行的网络编码方法,它基于有限域,当使用二进制有限域时,能获得较高的编码吞吐量。由于从二进制域中随机抽取的元素有 50% 的概率为零,所以生成的代码较为稀疏。在解码时,由于数据是随机编码和重编码的,没有特殊结构或捷径可利用,只能确定编码/重编码操作的逆操作。为避免最终数据包到达时出现较大解码延迟,我们希望在数据包到达时就进行解码。基于代码的稀疏性,我们提出了一些简单的机制来优化解码过程。
2. 编码算法
我们考虑将数据从源发送到宿时的编码过程。这些数据被称为一代(generation),由 g 个大小为 m 比特的符号组成,g 称为代大小,因此一代包含 g · m 比特的数据。g 个符号排列成矩阵 M = [m1; m2; … ; mg],其中 mi 是列向量。在实际应用中,一个原始文件或数据流可能会被分割成多个代,但这里我们只考虑单个代。
为生成新的编码符号 x,将矩阵 M 与长度为 g 的随机生成的编码向量 g 相乘,即 x = M × g。由于该码是无速率的,我们可以构造 g + r 个编码符号和编码向量,其中 r 是任意数量的冗余符号。当编码符号在网络上传输时,会附带其编码向量,它们共同构成一个编码数据包。每个编码符号实际上是代中原始符号的组合,这样几乎可以创建无限个编码符号。
编码数据包结构如下:
| 部分 | 说明 |
超级会员免费看
订阅专栏 解锁全文
660

被折叠的 条评论
为什么被折叠?



