However, there is no practically efficient way to compute these prob- abilities when the block size is large. This leads to the use of suboptimal, but realizable, decoding methods. The second unique feature of turbo codes is their decoder, which is based on the iterative CHAPTER 9 The IEEE 802. 16m Physical Layer (Part I) application of ML decoding. The ML decoding of a convolutional code would be easy, if the constraint length (register size) is short; however, short codes are relatively weak. Combining two such codes produces a much stronger code, but now ML decoding becomes intractable. Each shorter code can be ML decoded if we assume the other code has already been decoded. This leads to an iterative decoding strategy, which is to decode the first code and then use the resulting updated probabilities to decode the second code. Once this is done, the updated results can more accurately decode the first code. This decoding strategy shares the limitations of all iterative solutions, including the possibility of entrap- ment in a local minimum. The decoder output is not necessarily the true global ML solution. But the study of the corresponding link-level BER curves suggests that it tends to be a very good solution. In a convolutional code, the input bit sequence usually has tail bits added. This initializes the encoder state to all zeros at the end of the bit sequence. In a turbo coder, this implies that a valid bit sequence cannot contain a single one. It must either be all zeros or it must contain two or more ones. Because encoding is a linear process, this implies that any valid input sequence must differ from any other valid input sequence in at least two bits. If we consider only the first decoder's output, it can be seen that it differs from the correct output in two positions. However, the turbo encoder contains an interleaver. Thus, the two constituent encoders are operating on the same set of bits, but in a different order. Therefore, although the error bits are close together for the first encoder, the