Luby transform codes

=Introduction=

Invented by Michael Luby in 1998 and published in 2002, Luby transform codes (LT codes) are the first class of practical fountain codes that can achieve the capacity of the binary erasure channel universally. Like some other fountain codes, LT codes depend on sparse bipartite graphs. The distinguishing characteristic of LT codes is in employing a particularly simple algorithm based on the exclusive-or operation to encode and decode the message.

LT codes are rateless because the encoding algorithm can in principle produce an infinite number of message packets (i.e., the percentage of packets that must be received to decode the message can be arbitrarily small). They are erasure correcting codes because they can be used to transmit digital data reliably on an erasure channel.The next generation beyond LT codes is Raptor codes, which have linear time encoding and decoding. Raptor codes use two encoding stages for encoding, where the second stage is an LT encoding.

=Basics of LT codes= LT-codes is a class of fountain codes. In this class, the distribution $\mathcal{D}$ over $\mathbb{F}_2^k$ can be expressed by a $k$-tuple vector $\mathbf{\Omega} = [\Omega_1, \Omega_2, \dots, \Omega_k]$ or by a distribution generator polynomial $\Omega(x) = \sum\limits_{i=1}^k \Omega_i x^i$. The decoding graph of an algorithm of length is a bipartite graph with nodes on the one side (called the input nodes or the input symbols) and nodes on the other (called the output nodes or the output symbols). The output symbols are generated by exclusive-or operations on the input node. There is an edge between an input symbol and an output symbol if the input symbol contributes to the value of the output symbol. The following proposition shows that the decoding graph of a reliable decoding algorithm has at least an order of $k\log(k)$ edges. Therefore, if the number of collected output symbols is close to $k$, then the encoding cost of the code is at least of the order of $\log(k)$.

Proposition: If an LT-code with input symbols possesses a reliable decoding algorithm, then there is a constant such that the graph associated to the decoder has at least $ck\log(k)$ edges. (Proved in "Raptor Codes", Amin Shokrollahi,IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 52, NO. 6, JUNE 2006)

=Encoding= The encoding of LT codes can be done by the following steps:


 * 1) Randomly choose the degree d of the encoding symbol from a degree distribution $\bf\Omega$.
 * 2) Choose uniformly at random d distinct input symbols as neighbors of the encoding symbol.
 * 3) The value of the encoding symbol is the exclusive-or of the $d$ neighbors.

=Decoding= In the case of the erasure channel, the ML decoding algorithm amounts to Gaussian elimination: we collect sufficient amount of output symbols. Each received output symbol represents a linear equation (with coefficients in ) in the unknown input values, and thus the decoding process can be viewed as solving a (consistent) system of linear equations with $k$ unknowns. The decoding cost of this algorithm for each symbol is $\mathcal{O}(nk)$, since Gaussian elimination can be performed using $\mathcal{O}(nk^2)$ operations.

Gaussian elimination is computationally expensive for dense codes like random LT-codes. For properly designed LT-codes, the belief-propagation (BP) decoder provides a much more efficient decoder. The BP decoder can be best described in terms of the graph associated to the decoder. It performs the following steps until either no output symbols of degree one are present in the graph, or until all the input symbols have been recovered. At each step of the algorithm, the decoder identifies an output symbol of degree one. If none exists, and not all the input symbols have been recovered, the algorithm reports a decoding failure. Otherwise, the value of the output symbol of degree one recovers the value of its unique neighbor among the input symbols. Once this input symbol value is recovered, its value is added to the values of all the neighboring output symbols, and the input symbols and all edges emanating from it are removed from the graph.

=References= Raptor Codes

LT Codes