The following lemma will be the basis for the induction in our proof of Theorem 3.6.
Proof.
Let T(H) be the Tanner graph of H.
We now construct another graph , called the row-graph
of H, whose vertex set
y1, y2,..., yr-s corresponds to
the rows of H.
The edge set of
is derived from the columns of H
of weight
2, so that a column of weight w in H
contributes w - 1 edges to
.
An example illustrating the construction of the row-graph
for
a
6×8 cycle-free matrix is depicted in Figure 3.3.
Specifically, there is
an edge between yi and yj in iff i < j and
there exists a column
(a1, a2,..., ar-s)t in H,
such that
ai = aj = 1 while
ai+1 = ai+2 = ... = aj-1 = 0.
Notice that each such edge (yi, yj) in
corresponds to
a path of length two in T(H): namely
(yi, xp),(xp, yj)
,
where p denotes the position at which the column
(a1, a2,..., ar-s)t is to be found in H.
It follows that if there is a cycle in
, then there
is a cycle in T(H). Since T(H) is cycle-free, then
so is
. As such,
necessarily contains at least two vertices
of degree
1, in view of (3.2).
Let y* be one such vertex in
, and let
a* = (a1, a2,..., an-s) be the corresponding
row of H. If
, then (
) is true.
If
and
deg y* = 0, then
(
) is true.
If
and
deg y* = 1, then (
) is true.
Finally, if
, then
(
) is true,
regardless of whether
deg y* = 0 or
deg y* = 1.
width4pt depth2pt height6pt
Let
be an (n, k, d ) cycle-free binary linear code, and let
H be an
r×n cycle-free parity-check matrix for
,
where r = n - k. We say that H is in s-canonical form
if this matrix has the following structure:
Lemma 3.7 trivially generalizes to matrices in s-canonical form.
Proof.
Evidently T(A) is
a subgraph of T(H), obtained by retaining only the first
n - s symbol vertices
x1, x2,..., xn-s, the first
r - s check vertices
y1, y2,..., yr-s, and all the
edges between these vertices. Since T(H) is
cycle-free by assumption, so is T(A). Thus, Lemma 3.7
applies to complete the proof.
width4pt depth2pt height6pt
We will say that an
r×n matrix H is in reduced canonical form,
if
H = A|sB and either s = r or all the rows of A have
weight 3. It is a non-trivial fact that every cycle-free parity-check matrix can be put into such a form.
Proof.
Let H be an arbitrary cycle-free parity-check matrix for
.
We first put H in s-canonical form, for the highest possible s,
by means of row and column permutations. This is achieved by
considering all the rows of H of weight one, for which
the nonzero entry * is contained in a column of weight one,
and all the rows of H of weight two such that at least one of the two *'s is contained in a column of weight
one. Under an appropriate column permutation, these rows of H
will form the submatrix
[B | Is] in (3.7).
If there are no such rows, then s = 0 and H = A.
Since row and column permutations preserve the cycle-free
property of H, this procedure produces a cycle-free
parity-check matrix
H' = A|sB for
, which
is in canonical form, although not necessarily reduced.
Since
H' = A|sB is full-rank by assumption, all the rows of A
have weight 1. The key observation is that certain elementary
operations on the rows of H' allow us to eliminate rows of
weight one and two in A, while still preserving the cycle-free
property.
Indeed, suppose that A has a row
(a1, a2,..., ar-s) of weight one,
with a single * in position i. Then we can add this row to all the
rows of H' that are nonzero at position i. This procedure is equivalent
to deleting all but one of the edges incident at the symbol vertex xi
in T(H'), which certainly does not create new cycles.
Following this procedure, the single * in
(a1, a2,..., ar-s)
is contained in a column of weight one. Hence we can transform the
resulting cycle-free parity-check matrix for
into the form
A'|s+1B', by means of row and column permutations, thereby
eliminating the row of weight one in A.
Now suppose that A has a row
(a1, a2,..., ar-s) of weight two,
with the two *'s in positions i and j, and let y* be the corresponding
check vertex in T(H'). We again add this row to all the rows of H' that
are nonzero at position i. Let
(b1, b2,..., bn) be such a row,
and let y' denote the corresponding check vertex of T(H'). If
bj = bi = *, then T(H') contains the
cycle
(xi, y*),(y*, xj),(xj, y'),(y', xi)
.
Since T(H') is cycle-free, we conclude that bi = * while bj = 0.
Hence, adding row
(a1, a2,..., an) to
(b1, b2,..., bn)
corresponds to deleting the edge (y', xi) in T(H') while
introducing a new edge (y', xj), as illustrated in Figure 3.4.
However, this new edge cannot
close a cycle, since T(H') is cycle-free and a path from y'
to xj already exists in T(H'): indeed
(y', xi),(xi, y*),(y*, xj)
is such a path.
Following all these elementary row operations, the * at position i
in
(a1, a2,..., an) is contained in a column of weight one. Thus
we can again transform the resulting cycle-free parity-check matrix for
into the form
A'|s+1B',
thereby eliminating the row of weight two in A.
We iteratively repeat the process described in the foregoing two paragraphs,
until either s = r or all the rows of A have weight 3.
This procedure produces a cycle-free parity-check matrix for
that
is in reduced canonical form.
width4pt depth2pt height6pt
If the reduced canonical form in Lemma 3.9 is achieved in the extreme case s = r, then it is easy to prove the claim of Theorem 3.6.
Proof.
If B contains a column of weight w, then clearly dw + 1.
Since B is an
r×k matrix, there will always be at least
one column with maximum weight
, so that
http://people.bu.edu/trachten