LT code

LT code

In computer science, LT codes (Luby Transform codes) are the first class of practical fountain codes that are near optimal erasure correcting codes invented by Michael Luby in 1998 and published in 2002. [http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1181950 M.Luby, "LT Codes", The 43rd Annual IEEE Symposium on Foundations of Computer Science, 2002.] ] Like some other fountain codes, LT codes depend on sparse bipartite graphs to trade reception overhead for encoding and decoding speed. The distinguishing characteristic of LT codes is that they employ a particularly simple algorithm based on the exclusive or operation (oplus) to encode and decode the message. [The "exclusive or" (XOR) operation, symbolized by ⊕, has the very useful property that "A" ⊕ "A" = 0, where "A" is an arbitrary string of bits.]

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.

Why use an LT code?

The traditional scheme for transferring data across an erasure channel depends on continuous two-way communication.
*The sender encodes and sends a packet of information.
*The receiver attempts to decode the received packet. If it can be decoded, the receiver sends an acknowledgment back to the transmitter. Otherwise, the receiver asks the transmitter to send the packet again.
*This two-way process continues until all the packets in the message have been transferred successfully.

Certain networks, such as ones used for cellular wireless broadcasting, do not have a feedback channel. Applications on these networks still require reliability. Fountain codes in general, and LT codes in particular, get around this problem by adopting an essentially one-way communication protocol.
*The sender encodes and sends packet after packet of information.
*The receiver evaluates each packet as it is received. If there is an error, the erroneous packet is discarded. Otherwise the packet is saved as a piece of the message.
*Eventually the receiver has enough valid packets to reconstruct the entire message. When the entire message has been received successfully the receiver signals that transmission is complete.

LT encoding

The encoding process begins by dividing the uncoded message into "n" blocks of roughly equal length. Encoded packets are then produced with the help of a pseudorandom number generator.
*The degree "d", 1 ≤ "d" ≤ "n", of the next packet is chosen at random.
*Exactly "d" blocks from the message are randomly chosen.
*If "M""i" is the "i"th block of the message, the data portion of the next packet is computed as

::M_{i_1} oplus M_{i_2} oplus dots oplus M_{i_d},

:where {"i"1, "i"2, …, "i""d"} are the randomly chosen indices for the "d" blocks included in this packet.
*A prefix is appended to the encoded packet, defining how many blocks "n" are in the message, how many blocks "d" have been exclusive-ored into the data portion of this packet, and the list of indices {"i"1, "i"2, …, "i""d"}.
*Finally, some form of error-detecting code (perhaps as simple as a cyclic redundancy check) is applied to the packet, and the packet is transmitted.

This process continues until the receiver signals that the message has been received and successfully decoded.

LT decoding

The decoding process uses the "exclusive or" operation to retrieve the encoded message.
*If the current packet isn't clean, or if it replicates a packet that has already been processed, the current packet is discarded.
*If the current cleanly received packet is of degree "d" > 1, it is first processed against all the fully decoded blocks in the message queuing area (as described more fully in the next step), then stored in a buffer area if its reduced degree is greater than 1.
*When a new, clean packet of degree "d" = 1 (block "M""i") is received (or the degree of the current packet is reduced to 1 by the preceding step), it is moved to the message queueing area, and then matched against all the packets of degree "d" > 1 residing in the buffer. It is exclusive-ored into the data portion of any buffered packet that was encoded using "M""i", the degree of that matching packet is decremented, and the list of indices for that packet is adjusted to reflect the application of "M""i".
*When this process unlocks a block of degree "d" = 2 in the buffer, that block is reduced to degree 1 and is in its turn moved to the message queueing area, and then processed against the packets remaining in the buffer.
*When all "n" blocks of the message have been moved to the message queueing area, the receiver signals the transmitter that the message has been successfully decoded.

This decoding procedure works because "A" oplus "A" = 0 for any bit string "A". After "d" − 1 distinct blocks have been exclusive-ored into a packet of degree "d", the original unencoded content of the unmatched block is all that remains. In symbols we have

:egin{align}(M_{i_1} oplus dots oplus M_{i_d}) oplus(M_{i_1} oplus dots oplus M_{i_{k-1 oplus M_{i_{k+1 oplus dots oplus M_{i_d})& =\ [2pt] M_{i_1} oplus M_{i_1} oplus dots oplus M_{i_{k-1 oplus M_{i_{k-1 oplus M_{i_k} oplusM_{i_{k+1 oplus M_{i_{k+1 oplus dots oplus M_{i_d} oplus M_{i_d} & =\ [2pt] 0 oplus dots oplus 0 oplus M_{i_k} oplus 0 oplus dots oplus 0 & = M_{i_k} ,end{align}

Variations

Several variations of the encoding and decoding processes described above are possible. For instance, instead of prefixing each packet with a list of the actual message block indices {"i"1, "i"2, …, "i""d"}, the encoder might simply send a short "key" which served as the seed for the pseudorandom number generator (RNG) used to construct the list of indices. Since the receiver equipped with the same RNG can reliably recreate the "random" list of indices from this seed, the decoding process can be completed successfully. Or, by combining a simple LT code of low average degree with a robust error-correcting code, a raptor code can be constructed that will outperform an optimized LT code in practice. [http://switzernet.com/people/emin-gabrielyan/060112-capillary-references/ref/MacKay05.pdf Fountain codes] , by D.J.C. MacKay, first published in IEE Proc.-Commun., Vol. 152, No. 6, December 2005.]

Optimization of LT codes

There is only one parameter that can be used to optimize a straight LT code: the degree distribution function (described as a pseudorandom number generator for the degree "d" in the LT encoding section above). In practice the other "random" numbers (the list of indices {"i"1, "i"2, …, "i""d" are invariably taken from a uniform distribution on (0, "n"] , where "n" is the number of blocks into which the message has been divided. [http://www.netlab.tkk.fi/tutkimus/abi/publ/lt-resim-2006.pdf Optimizing the Degree Distribution of LT Codes with an Importance Sampling Approach] , by Esa Hyytiä, Tuomas Tirronen, and Jorma Virtamo (2006).]

Luby himself discussed the ideal soliton distribution defined by

:egin{align}mathrm{P}{d=1}& = frac{1}{n}\ [2pt] mathrm{P}{d=k}& = frac{1}{k(k-1)} qquad (k=2,3,dots,n). ,end{align}

This degree distribution theoretically minimizes the expected number of redundant code words that will be sent before the decoding process can be completed. Unfortunately the ideal soliton distribution does not work well in practice and a modified distribution, the robust soliton distribution, is usually substituted for it. The effect of the modification is, generally, to produce more packets of degree 1 and fewer packets of degree greater than 1.

ee also

*Online codes
*Tornado codes

Notes and References


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • Code Cyclique — En mathématiques et en informatique, un code cyclique est un code correcteur linéaire. Ce type de code possède non seulement la capacité de détecter les erreurs, mais aussi de les corriger sous reserve d altérations modérée. Les mathématiques… …   Wikipédia en Français

  • Code De Hamming — Un code de Hamming est un code correcteur linéaire. Il permet la détection et la correction automatique d une erreur si elle ne porte que sur une lettre du message. Un code de Hamming est parfait, ce qui signifie que pour une longueur de code… …   Wikipédia en Français

  • Code de hamming — Un code de Hamming est un code correcteur linéaire. Il permet la détection et la correction automatique d une erreur si elle ne porte que sur une lettre du message. Un code de Hamming est parfait, ce qui signifie que pour une longueur de code… …   Wikipédia en Français

  • code — [ kɔd ] n. m. • 1220; lat. jurid. codex « planchette, recueil » 1 ♦ Recueil de lois. Le code de Justinien, et absolt le Code. Ensemble des lois et dispositions légales relatives à une matière spéciale. Livre, article d un code. Le C ODE CIVIL ou… …   Encyclopédie Universelle

  • Code page — is another term for character encoding. It consists of a table of values that describes the character set for a particular language. The term code page originated from IBM s EBCDIC based mainframe systems,[1] but many vendors use this term… …   Wikipedia

  • Code Geass — Code Geass: Lelouch of the Rebellion First Code Geass DVD volume released in Japan. コードギアス 反逆のルルーシュ (Kōdo Giasu: Hangyaku no Rurūshu) …   Wikipedia

  • Code Civil (France) — Première page de l édition originale (1804) …   Wikipédia en Français

  • Code Correcteur — Un code correcteur est une technique de codage basée sur la redondance. Elle est destinée à corriger les erreurs de transmission d une information (plus souvent appelée message) sur une voie de communication peu fiable. La théorie des codes… …   Wikipédia en Français

  • Code Linéaire — En mathématiques, plus précisément en théorie des codes, un code linéaire est un code correcteur. Il est structuré comme un sous espace vectoriel sur un corps fini. L espace utilisé est souvent F2n le terme usuel est alors celui de code linéaire… …   Wikipédia en Français

  • Code MDS — Code parfait et code MDS Un code parfait (ou code MDS, pour maximum distance séparable) est un concept de la théorie des codes et qui traite plus spécifiquement des codes correcteurs. Un code correcteur est un code permettant au récepteur de… …   Wikipédia en Français

  • Code NAF — Le code NAF est l un des codes INSEE. C est la Nomenclature des Activités Françaises. Elle permet la codification de l APE, c est à dire de l activité principale exercée dans l entreprise ou l association. Cette nomenclature d activités… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”