
TURBO CODES 177
information from all nodes of depth l = 1. In the second iteration we receive messages from
the nodes of depth l = 2, and so on.
The messages for further rounds of the algorithm are only statistically independent if
the graph is a so-called tree.
5
In particular, if all message nodes are unique. In our simple
example this holds only for l = 1. At depth l = 2 there are several nodes that represent the
same code bit. This causes cycles
6
as indicated for the node b
4
. However, for longer codes
we can apply significantly more independent iterations. In general, if the neighbourhood
of all message nodes is a tree up to depth l, then the incoming messages are statistically
independent and the update equation correctly calculates the corresponding log-likelihood
based on the observations.
In graph theory, we call the length of the shortest cycle the girth of a graph. If the graph
has no cycles, its girth is defined to be infinite. According to figure (b) in Figure 4.9, the
girth is at least 4. In our example graph the girth is 8. The girth determines the maximum
number of independent iterations of belief propagation. Moreover, short cycles in the Tanner
graph of a code may lead to a small minimum Hamming distance. Therefore, procedures
to construct Tanner graphs maximising the girth were proposed. However, in practice it is
not clear how the girth actually determines the decoding performance. Most methods to
analyse the performance of belief propagation are based on the independence assumption,
and little is known about decoding for graphs with cycles.
4.2 A First Encounter with Code Concatenation
In this section we introduce the notion of code concatenation, i.e. the concept of constructing
long powerful codes from short component codes. The first published concatenated codes
were the product codes introduced by Elias (Elias, 1954). This construction yields a block
code of length n × n based on component codes of length n. We will consider product
codes to introduce the basic idea of code concatenation and to discuss the connection to
Tanner graphs and LDPC code. Later, in Section 4.6, we will consider another kind of
product code. These so-called woven convolutional codes were first introduced by H
¨
ost,
Johannesson and Zyablov (H
¨
ost et al., 1997) and are product codes based on convolutional
component codes.
4.2.1 Product Codes
Code concatenation is a method for constructing good codes by combining several simple
codes. Consider, for instance, a simple parity-check code of rate R = 2/3. For each 2-nit
information word, a parity bit is attached so that the 3-bit code word has an even weight,
i.e. an even number of 1s. This simple code can only detect a single error. For the Binary
Symmetric Channel (BSC) it cannot be used for error-correction. However, we can con-
struct a single error-correcting code combining several simple parity-check codes. For this
construction, we assume that the information word is a block of 2 ×2 bits, e.g.
u =
01
10
.
5
A tree is a graph in which any two nodes are connected by exactly one path, where a path in a graph is a
sequence of edges such that from each of its nodes there is an edge to the next node in the sequence.
6
A cycle is a path where the start edge and the end edge are the same.