A natural concept for a decoding algorithm for concatenated codes is to first decode the inner code and then the outer code. For the algorithm to be practical it must be
polynomial-time in the final block length. Consider that there is a polynomial-time unique decoding algorithm for the outer code. Now we have to find a polynomial-time decoding algorithm for the inner code. It is understood that polynomial running time here means that running time is polynomial in the final block length. The main idea is that if the inner block length is selected to be logarithmic in the size of the outer code then the decoding algorithm for the inner code may run in
exponential time of the inner block length, and we can thus use an exponential-time but optimal
maximum likelihood decoder (MLD) for the inner code. In detail, let the input to the decoder be the vector
y = (
y1, ...,
yN) ∈ (
An)
N. Then the decoding algorithm is a two-step process: • Use the MLD of the inner code
Cin to reconstruct a set of inner code words
y' = (
y'1, ...,
y'
N), with
y'
i = MLD
Cin(
yi), 1 ≤
i ≤
N. • Run the unique decoding algorithm for
Cout on
y'. Now, the time complexity of the first step is
O(
N⋅exp(
n)), where
n =
O(log(
N)) is the inner block length. In other words, it is
NO(1) (i.e., polynomial-time) in terms of the outer block length
N. As the outer decoding algorithm in step two is assumed to run in polynomial time the complexity of the overall decoding algorithm is polynomial-time as well.
Remarks The decoding algorithm described above can be used to correct all errors up to less than
dD/4 in number. Using
minimum distance decoding, the outer decoder can correct all inputs
y' with less than
D/2 symbols
y'
i in error. Similarly, the inner code can reliably correct an input
yi if less than
d/2 inner symbols are erroneous. Thus, for an outer symbol
y'
i to be incorrect after inner decoding at least
d/2 inner symbols must have been in error, and for the outer code to fail this must have happened for at least
D/2 outer symbols. Consequently, the total number of inner symbols that must be received incorrectly for the concatenated code to fail must be at least
d/2⋅
D/2 =
dD/4. The algorithm also works if the inner codes are different, e.g., for
Justesen codes. The
generalized minimum distance algorithm, developed by Forney, can be used to correct up to
dD/2 errors. It uses
erasure information from the inner code to improve performance of the outer code, and was the first example of an algorithm using
soft-decision decoding. ==Applications==