数字喷泉码概念由Luby等人于1998年首次提出,但当时并未给出实用数字喷泉码设计方案。2002年,Luby提出了第一种实用数字喷泉码——LT码。之后,Shokrollahi又提出了性能更佳的Raptor码,实现了近乎理想的编译码性能。在学术理论日渐完善的同时,数字喷泉码也日益受到产业界的关注,获得了越来越多的应用。
所谓数字喷泉码,是指这种编码的发送端可以由k个原始分组生成任意数量的编码分组,接收端只要收到其中任意(1+ε)k个编码分组,即可通过译码以高概率成功恢复全部原始分组,精心设计的数字喷泉码不仅拥有很小的译码开销ε,而且具有简单的编译码方法和很小的编译码复杂度。可以看到,上述编码过程就如同源源不断产生水滴的喷泉码,而我们只要用杯子接收足够数量的水滴,即可达到饮用的目的。正因为如此,这种编码被称为数字喷泉码(Digital Fountain Code)。需要特别指出的,数字喷泉码与LDPC码的最大区别在于其中不存在码长n的定义,或者说码长趋于无穷;相应地,码率R=k/n的定义也不存在,因此数字喷泉码也被称为无率码(Rateless Codes)。
Rateless Code是一种无速率约束码,它与传统的信道编码有很大差异。传统的信道编码在设计时,通常先根据信道状态信息(CSI)估计信道参数,根据这个参数设计一个码率固定为R的信道纠错编码。当估计的信道参数大于实际的信道参数时,虽然可以实现可靠传输,但是造成了传输的浪费,因为此时可以使用更高码率的信道纠错编码;当估计的信道参数小于实际的信道参数时,不能实现可靠传输,此时需要更低码率的信道纠错编码。如何在不知道信道准确的状态信息情况下自适应的选择合适的码率进行传输,以自适应适配链路速率,Rateless Code为我们提供了一种解决问题的新思路。Rateless Code与传统固定码率编码方式最大的不同在于它在发送端不设定固定码率。Rateless Code的发送端可以根据输入的数据包以某种方式源源不断的产牛编码包并发送出去,它的接收端则可以接收这些编码包然后尝试译码,如果译码失败,接收端可以再多接收一些编码包然后继续尝试译码,接收端可以一直重复这个过程直到译码成功,一旦译码成功,接收端只需要发送一个非常简单的反馈信号告知发送端译码成功,然后发送端停止发送即可,这样就完成了整个传输过程,此时,实际传输的码率取决于实际发送的编码包数目,而需要发送的编码包数目则取决于当时的信道状况。
从Rateless Code的描述中不难看出它的三个重要属性:自适应链路速率适配、Rateless属性(流属性)、以及桶积水效应。正是因为它的这些属性,使得它可以广泛应用于广播、中继、认知等无线通信系统中,也适合于存储、压缩编码和网络传输。Rateless的思想可以推广到现有几乎所有固定速率的编码系统中,带来现代无线通信体制的根本变化。