In coding theory, concatenated codes form a class of error-correcting codes that are derived by combining an inner code and an outer code. They were conceived in 1966 by Dave Forney as a solution for the problem of finding a code that has both exponentially decreasing error probability with increasing block length and polynomial-time decoding complexity.
Description
Let C be a code with length N and rate R over an alphabet A with K=N*R symbols. Let I be another code with length n and rate r over an alphabet B with k=n*r symbols.
The inner code I takes one of k possible inputs, encodes onto an n-tuple from B, transmits, and decodes into one of k possible outputs. We regard this as a channel which can transmit one symbol from the alphabet A, also of size k. We use this channel N times to transmit each of the N symbols in a codeword of C. The concatenation of C (as outer code) with I as (inner code) is thus a code of length Nn over the alphabet B.
The key insight in this approach is that if I is decoded using a maximum-likelihood approach (thus showing an exponentially decreasing error probability with increasing length), and C is a code with length N=2^(n*r) that can be decoded in polynomial time of N, then the concatenated code can be decoded in polynomial time of its combined length n*2^(n*r) and shows an exponentially decreasing error probability, even if I has exponential decoding complexity.
In a generalisation of above concatenation, there are N possible inner codes Ii and the i-th symbol in a codeword of C is transmitted across the inner channel using the i-th inner code. The Justesen codes are examples of generalised concatenated codes, where the outer codes is a Reed-Solomon code.
Applications
The Compact Disc and Voyager Program spacecraft use concatenated error correction technologies. Concatenated error codes may have been introduced with spacecraft missions that were involved with mapping the Moon and Mars[citation needed]. In typical telecommunications systems before these data intensive missions—only one hard error correction layer was used.
Concatenating error correction methods is useful in cases where the telecommunications link may be problematical. Typically a soft inner code (Viterbi) is used concatenated to a hard outer code (Reed-Solomon).
How it works
Inner code vs outer code performance
- typically the inner code is a weaker (and simpler) error correction code
- the outer correction code may not be in the same family of codes as the inner codes—this is true for Voyager Program codes
Turbo codes: A parallel concatenation approach
The description above is given for what is now called a serially concatenated code. Turbo codes, as described first in 1993, implemented a parallel concatenation of two convolutional codes, with an interleaver between the two codes and an iterative decoder that would pass information forth and back between the codes. This construction had much higher performance than all previously conveived concatenated codes.
References
- F.J. MacWilliams (1977). The Theory of Error-Correcting Codes. North-Holland. pp. 307–316. ISBN 0-444-85193-3.
{{cite book}}
: Unknown parameter|coauthors=
ignored (|author=
suggested) (help)
External links
- Dave Forney (ed.). "Concatenated codes". Scholarpedia.