Fountain codes

Fountain codes (also known as rateless erasure codes) are a class of erasure codes with the property that a potentially limitless sequence of encoding symbols can be generated from a given set of source symbols such that the original source symbols can ideally be recovered from any subset of the encoding symbols of size equal to or only slightly larger than the number of source symbols. The term rateless refers to the fact that these codes do not exhibit a fixed code rate.

A fountain code is optimal if the original $k$ source symbols can be recovered from any $k$ encoding symbols. The MDS requirement would be that if $n$ symbols are transmitted, any $k$ subset would suffice to recover. Fountain codes relax this by requiring only that a randomly selected $k$ subset (or $k'=(1+\epsilon)k$ suffices to recover with `high probability`.

Fountain codes are known that have efficient encoding and decoding algorithms and that allow the recovery of the original $k$ source symbols from any $k’$ of the encoding symbols with high probability, where $k’$ is just slightly larger than $k$.

Luby transform codes were the first practical realization of fountain codes. Online codes and Raptor codes were subsequently introduced, and achieve linear time encoding and decoding complexity through a pre-coding stage of the input symbols