关于编码:喷泉码浅谈
01、喷泉码简介喷泉码(Fountain Code)是一种在无线通信、数据传输和网络编码畛域中应用的谬误纠正技术。它与传统的纠错码和编码方法有所不同,喷泉码被设计用于在不确定信道条件下的高效数据传输。传统的纠错码(如海明码、RS码等)通常须要在发送方对数据进行编码,接管方则应用雷同的编码进行解码和纠错。这些办法个别具备固定的码率(Code Rate),即针对肯定长度的原始数据,编码后的长度是固定的,这些办法在面对不稳固的信道或重大的信道失落时可能成果不佳。相比之下,喷泉码通过在发送方生成随机的冗余数据,而后将其注入到原始数据中,以发明出一个“喷泉”流——相应的码率也也就不固定了。接管方能够从这个流中采样任意数量的数据包,并将它们合并以复原原始数据。喷泉码的一种常见利用是在无线传感器网络中,其中网络节点之间的通信可能受到弱信号、烦扰和多径流传等因素的影响。通过应用喷泉码,节点能够在较差的通信条件下实现牢靠的数据传输。喷泉码另外一个罕用的场景是大量文件或者数据的播送,这种时候每位接受者的丢包率是不确定的,因而固定码率的编码就不实用,喷泉码却能够解决该场景下的问题——丢包率高的接受者多收一些包,丢包率少的接受者则少收一些包。本文会介绍最常见的两种喷泉码实现,LT 编码 和 Raptor 编码。通过这两种编码的介绍和比拟能够比拟好的理解喷泉码的个性和根本的实现原理。 02、LT 编码LT 编码 是第一个被实现的具备实用价值的喷泉码,该编码在 2002 年被提出,实现记的基本原理也非常简单,即位运算中的 xor 操作。Xor 操作有如下的个性: 两个雷同的数据块 M,它们 Xor 的后果是 0。即 M ^ M = 0。对一块数据块 M,Xor 两次雷同的数据块 N,最终后果依然为 M。即 M ^ N ^ N = M。假如两个等长的数据块 M 和 N,M ^ N = L。那么 L ^ M = N 并且 L ^ N = M。基于上述的个性,LT 编码的形式就能够形容为下列的步骤: 对于长度为 N 的等宽数据块序列,随机选取一个 degree (d),1 ≤ d ≤ N。从上述的数据块中选取随机 d 个数据块,将所有选取的数据块进行 xor 操作,最终失去一个编码的数据块。反复上述步骤 1 和 2,咱们能够失去源源不断的编码数据块,如同“喷泉”一样水流一直。编码过程很简略,惟一须要留神一下的问题是如何取得等款的数据块。如果总数长度不可能凑巧分成 N 等分,咱们能够通过在后续加 padding 的形式来实现能够 N 等分。解码绝对比较复杂, 形容如下: ...