A fountain code is optimal if the original k source symbols can be recovered from any k encoding symbols. 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.
is non trivial. With the short , both LT and raptor codes using the sparse bipartite graph (BP) algorithm never achieve an overhead of less than 0.10. The raptor and online codes have an advantage (over what? Most likely: pure LT code) if and only if the BP algorithm over a check matrix (or triangularization of a check matrix ) can recover most of input symbols. This is a critical drawback of fountain codes. If a raptor or online code is going to recover most of the input symbols, say more than 95%, then pre-encoding is not necessary, because transmitting a few tens of dense encoding symbols can cover up all the input symbols with an extremely high probability (called the union bound). The dense encoding symbols also contribute to the remaining matrix of having its full column rank. Thus, the unrecovered symbols can be solved by Gaussian elimination over the remaining graph. The check equations of dense encoding symbols can be communicated to receivers by applying the same random degree generators of the sender.
An accessible exposition of fountain codes can be found in the final chapter of David MacKay's free online textbook, Information Theory, Inference, and Learning Algorithms