Decoding Concatenated Codes
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 = MLDCin(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.
Read more about this topic: Concatenated Error Correction Code
Famous quotes containing the word codes:
“I cannot help thinking that the menace of Hell makes as many devils as the severe penal codes of inhuman humanity make villains.”
—George Gordon Noel Byron (17881824)