126 CONVOLUTIONAL CODES
notice that with increasing memory the free distance improves while the slope α decreases.
Tables of codes with good slope can be found elsewhere (Jordan et al., 2004b, 2000).
3.3.3 Weight Enumerators for Terminated Codes
Up to now we have only considered code sequences or code sequence segments of minimum
weight. However, the decoding performance with maximum likelihood decoding is also
influenced by code sequences with higher weight and other code parameters such as the
number of code paths with minimum weight. The complete error correction performance
of a block code is determined by its weight distribution. Consider, for example, the weight
distribution of the Hamming code B(7, 4). This code has a total of 2
k
= 16 code words:
the all-zero code word, seven code words of weight d = 3, seven code words of weight
4 and one code word of weight 7. In order to write this weight distribution in a compact
way, we specify it as a polynomial of the dummy variable W , i.e. we define the Weight
Enumerating Function (WEF) of a block code B(n, k) as
A
WEF
(W ) =
n
w=0
a
w
W
w
,
where a
w
is the number of code words of weight w in B. The numbers a
0
,...,a
n
are the
weight distribution of B. For the Hamming code B(7, 4) we have
A
WEF
(W ) = 1 + 7W
3
+ 7W
4
+ W
7
.
With convolutional codes we have basically code sequences of infinite length. Therefore, we
cannot directly state numbers of code words of a particular weight. To solve this problem,
we will introduce the concept of path enumerators in the next section. Now, we discuss a
method to evaluate weight distributions of terminated convolutional codes which are in fact
block codes. Such weight enumerators are, for instance, required to calculate the expected
weight distributions of code concatenations with convolutional component codes, as will
be discussed in Chapter 4.
Consider the trellis of the convolutional code B(2, 1, 2) as given in Figure 3.14, where
we labelled the branches with input and output bits corresponding to a particular state
transition. Similarly, we can label the trellis with weight enumerators as in Figure 3.23, i.e.
every branch is labelled by a variable W
w
with w being the number of non-zero code bits
corresponding to this state transition. Using such a labelled trellis, we can now employ the
forward pass of the Viterbi algorithm to compute the WEF of a terminated convolutional
code. Instead of a branch metric, we compute a weight enumerator A
(j)
i
(W ) for each node
in the trellis, where A
(j)
i
(W ) denotes the enumerator for state σ
j
at level i. Initialising the
enumerator of the first node with A
(0)
0
(W ) = 1, we could now traverse the trellis from left
to right, iteratively computing the WEF for all other nodes. In each step of the forward
pass, we compute the enumerators A
(j)
i+1
(W ) at level i + 1 on the basis of the enumerators
of level i and the labels of the corresponding transitions as indicated in Figure 3.23. That
is, we multiply the enumerators of level i with the corresponding transition label and sum
over all products corresponding to paths entering the same node. The enumerator A
(0)
L+m
(W )
of the final node is equal to the desired overall WEF.