Linear Codes
Linear Codes
Linear Codes
k1
kP(error burst of length k)
=
k1
k(1 z
2
)
k1
z
2
= z
2
_
_
k1
(1 z
2
)
k1
+
k2
(1 z
2
)
k1
+
k3
(1 z
2
)
k1
+
_
_
= z
2
_
(1/z
2
) + (1 z
2
)/z
2
+ (1 z)
2
/z
2
+
= = 1 + (1 z
2
) + (1 z
2
)
2
+
=
1
z
2
= 10.
b)Find the average length of an error-free sequence of bits.
Similar to the last part, the average length of an error-free sequence of bits is
the average time of staying in good state, which means that average error-free
sequence length is
=
k1
kP(error-free sequence of length k)
=
k1
k(1 z
1
)
k1
z
1
=
1
z
1
= 10
6
.
c) Find the bit error rate for this Gilbert-Elliot channel.
Using the results of the last two parts, long sequences of bits have on average error
bursts of length 10 and error free sequences of length 10
6
. This means that the
fraction of bits in error is,
10
10 + 10
6
=
1
100001
10
5
.
4. A (6, 3) linear block code C over GF(2) is dened by the following parity check matrix,
H =
_
_
1 0 0 0 1 1
0 1 0 1 0 1
0 0 1 1 1 0
_
_
(a) Find the generator matrix of C .
(b) The parity check matrix H does not allow the presence of the codewords of weight < 3
(apart from the all zero codeword). Explain why ?
7
(c) Suppose that the code is used for error detection only over a binary symmetric channel
with error rate p = 10
3
. Find the probability of undetected error.
Hint: W.l.o.g. assume that all zero codeword was transmitted. Be careful with the
interpretation of undetected error.
5. (Code design) Suppose we have a binary channel with bit error rate 10
5
. Packets (code-
words) transmitted over this channel will consist of 1000 bits including check bits. We want
to specify codes that satisfy the reliability requirements of several scenarios. Assume that
the number of check bits needed to correct t errors in the received packet is 10t for t 10.
a) Suppose that no coding is used. What is the probability of receiving a packet with
k bit errors ?
The number of bit errors has a binomial probability distribution. For this channel,
P(k errors in 1000 bits ) =
_
1000
k
_
(10
5
)
k
(1 10
5
)
1000k
=
1000 999 (1000 k + 1)
k!
10
5k
(1 10
5
)
1000k
.
For small k, use (110
5
)
1000k
0.99 1 and 1000999 (1000k+1) 1000
k
.
Therefore we can approximate the above probability by (10
2
)
k
/k!.
b) Suppose that the bit error rate after packet decoding is required to be less than 10
9
. In
your code design, how many bit errors must be correctable in each packet in order to satisfy
this requirement?
The bit error rate can be expressed as the average number of incorrect bits per
packet after decoding, divided by the number of bits per packet. If a code can
correct up to t errors, then when t + 1 errors occur the worst that can happen is
that the decoder ips t bits to arrive at an incorrect codeword. Thus a conservative
assumption is that t +1 errors in a packet result in 2t +1 bit errors after decoding,
and the contribution to the bit error rate is,
P(t + 1 errors in packet )
2t + 1
1000
.
Using the above results and the result in a) we have,
t Probability of t+1 errors Bit error after decoding
0 (10
2
/1! = 10
2
10
2
1/1000 = 10
5
1 (10
2
)
2
/2! = (1/2) 10
4
(1/2) 10
4
3/1000 = 1.5 10
7
2 (10
2
)
3
/3! = (1/6) 10
6
(1/6) 10
6
5/1000 = 8.3 10
10
Since the probability of 3 errors is negligible, it is sucient to be able to correct
up to two errors.
8
6. (Error probability): Let C be a ternary repetition code of length 4 over the alphabet 0, 1, 2.
(a) List the vectors which will be uniquely decoded as 1111 using nearest neighbour de-
coding.
(b) If the probability of each symbol being wrongly received is t and each symbol is equally
likely, nd the word error probability; that is, the probability P
e
of a word being
incorrectly decoded.
(c) What is P
e
when t = 0.05 ?
Solution: The code C = 0000, 1111, 2222. Hence C corrects (4 1)/2 = 1
error. However,some words at distance 2 from a codeword can also be corrected.
(a) The received words decoded as 1111 are as follows:
1111;
0111, 2111, 1011, 1211, 1101, 1121, 1110, 1112;
0211, 2011, 0121, 2101, 0112, 2110, 1021, 1201, 1012, 1210, 1102, 1120.
(b) First, note that
P(1 being received) = 1 t
and
P(0 or 2 being received) = t
thus
P(0 being received) = P(2 being received) = t/2.
Hence, the probability of correct decoding of the word 1111 is,
P
c
= (1 t)
4
+ 8(t/2)(1 t)
3
+ 12(t/2)
2
(1 t)
2
= (1 t)
2
(1 t)
2
+ 4t(1 t) + 3t
2
= (1 t)
2
(1 + 2t).
Hence the probability of a word being incorrectly decoded is,
P
e
= 1 (1 t)
2
(1 + 2t) = t
2
(3 2t).
(c) When t = 0.05 then P
e
3t
2
= 0.0075.
7. (Error probability II): Let C be the binary repetition code of length 5. List the vectors which
will be uniquely decoded as 11111 using nearest neighbour decoding. Do parts (b) and (c)
of the previous question for this code.
Here C = 00000, 11111. So the words decoded as 11111 and their probabilities
are,
11111 (1 t)
5
;
01111, (5 like this) 5t(1 t)
4
;
00111, (10 like this) 10t
2
(1 t)
3
.
Therefore,
P
c
= (1 t)
5
+ 5t(1 t)
4
+ 10t
2
(1 t)
3
=
= (1 t)
3
(1 + 3t + 6t
2
).
9
Then, P
e
= 1 (1 t)
3
(1 + 3t + 6t
2
) which for t = 0.05 gives P
e
= 0.00116.
Moral: We get a better error probability at the price for slower rate (5 symbols
sent). On the other hand, a larger alphabet is used in the rst case.
8. (Undetected error probability): Consider the following two binary codes with blocklength 8.
The (8, 4) extended Hamming code with minimum distance 4.
The (8, 7) simple even parity-check code.
The weight enumerator for the extended Hamming code is A(x) = 1+14x
4
+x
8
. This states
that for every codeword there are 14 codewords at distance 4 and one codeword at distance
8.
(a) Find the weight enumerator for the (8, 7) simple even parity-check code.
(b) Derive the undetected error probability P
ue
of these two codes as a function of the bit
error rate for 1/2. Assume a binary symmetric channel with independent errors.
Explain the behaviour of P
ue
for the two codes as 1/2.
(a) The simple parity-check code consists of all 8-tuples of even weight. The
number of 8-tuples of weight w is given by the binomial coecient,
_
8
w
_
=
8!
w!(8 w)!
The weight enumerator is
_
8
0
_
+
_
8
2
_
x
2
+
_
8
4
_
x
4
+
_
8
6
_
x
6
+
_
8
8
_
x
8
= 1 + 28x
2
+ 70x
4
+ 28x
6
+ x
8
.
For the (8, 4) expanded Hamming code,
P
ue
= 14
4
(1 )
4
+
8
.
For the (8, 7) simple parity-check code,
P
ue
= 28
2
(1 )
6
+ 70
4
(1 )
4
+ 28(1 )
2
+
8
.
(b) For the (8,4) expanded Hamming code, P
ue
increases monotonically to the
value 0.0586 as 1/2. For small , the probability of 8 bit errors is small,
so P
ue
is dominated by the probability of ipping bits so that the received
vector is one of the 14 codewords at distance 4. Thus, as 1/2, the behav-
ior of P
ue
follows that of the polynomial 14
4
(1 )
4
.
For the (8,7) simple even parity-check code, P
ue
is just under 1/2 as 1/2,
namely, P
ue
= 1/2 2
8
.
9. (Decoded bit error rate): A (15,11) binary Hamming code is a single-error correcting code
with d = 3. It is used on a binary symmetric channel with raw error rate p = 10
4
. Find
the cooked error rate - the probability that a decoded message bit is incorrect.
Decoding Fact: When two bit errors occur, the decoder incorrectly changes a third codeword
bit. You may assume that the probability of 3 errors is negligible.
10
Solution: For raw bit error rate p = 10
4
, the probability of two errors in a
codeword is given by the binomial distribution:
P(2 errors ) =
_
15
2
_
(10
4
)
2
(1 10
4
)
1
3 = 1.05 10
6
One can compute the probability of three or more errors which is 4.6 10
10
,
which is negligible.
When two errors occur in a received codeword of length 15, the decoder miscorrects
by changing one more bit to arrive at a codeword that diers from the transmitted
codeword in three bits. The probability that any particular bit within a codeword
(information bit or check bit) is incorrect is the average number of wrong bits per
codeword divided by the number of bits per codeword. Therefore the cooked bit
error rate is,
3
15
P(2 errors )2.1 10
7
.
For raw error rate p < 2 10
3
, an accurate approximation to the cooked error
rate is,
3
15
_
15
2
_
p
2
= 21p
2
.
10. (Linear independence ): Is it true that if x, y, and z are linearly independent vectors over
GF(q), then so are x + y, y + z, and z + x ?
Solution: The vectors are not linearly independent over elds of characteristic 2,
since over GF(2
m
)
(x + y) + (y + z) + (z + x) = (x + x) + (y + y) + (z + z) = 0 + 0 + 0 = 0.
On the other hand, when q is odd, x, y, and z can be expressed as linear combi-
nations of the three vectors, which therefore span a subspace of dimension 3. For
example,
x = 2
1
((x + y) + (z + x) (y + z)).
11. (Subspaces ): Given that S and T are distinct two- dimensional subspaces of a three-
dimensional vector space, show that the intersection of S and T is a one-dimensional sub-
space.
Solution: There are two reasonable approaches. Both start from the fact that
the intersection of S and T is a linear subspace whose dimension is at most 2. We
must show that the dimension is not 0 or 2, and is therefore exactly 1.
Proof 1 (Direct): S T cannot have dimension 2, because in this case any basis
for S T would also span S and T, contradicting the hypothesis that S and T are
distinct.
S T cannot have dimension 0, because in this case the set of four vectors con-
sisting of a basis for S and a basis for T would be linearly independent, which
contradicts the hypothesis that S and T are subspaces of a 3-dimensional vector
11
space.
Proof 2: (Using orthogonal complements) The orthogonal complements of S and
T have dimensions 32 = 1. The orthogonal complements are distinct because S
and T are distinct. The linear subspace generated by the orthogonal complements
has dimension exactly 2; the dimension is greater than 1 because the orthogonal
complements are distinct and is at most 2 because their dimensions are each 1.
But the linear combinations of the orthogonal complements of S and T form the
orthogonal complement of S T. So the dimension of S T is 3 2 = 1.
12. (Standard form): Let C be a binary (5, 3) code with generator matrix,
G =
_
_
1 0 1 1 0
1 1 0 1 0
0 1 0 0 1
_
_
(a) Reduce G to standard form.
(b) Find a parity-check matrix for C.
(c) Write out the elements of the dual code C
.
(a) Reduce G to standard form.
G =
_
_
1 0 1 1 0
1 1 0 1 0
0 1 0 0 1
_
_
_
_
1 0 1 1 0
0 1 1 0 0
0 1 0 0 1
_
_
_
_
1 0 1 1 0
0 0 1 0 1
0 1 0 0 1
_
_
_
_
1 0 0 1 1
0 0 1 0 1
0 1 0 0 1
_
_
_
_
1 0 0 1 1
0 1 0 0 1
0 0 1 0 1
_
_
(b) Find a parity-check matrix for C.
H = [A
T
I
k
] =
_
1 0 0 1 0
1 1 1 0 1
_
(c) Write out the elements of the dual code C
. The elements of C
are linear
combinations of the rows of H,
= C
.
(a) Reduce G to standard form.
G =
_
_
1 0 1 1 0
1 1 0 1 0
0 1 0 0 1
_
_
_
_
1 0 1 1 0
0 1 1 0 0
0 1 0 0 1
_
_
_
_
1 0 1 1 0
0 0 1 0 1
0 1 0 0 1
_
_
_
_
1 0 0 1 1
0 0 1 0 1
0 1 0 0 1
_
_
_
_
1 0 0 1 1
0 1 0 0 1
0 0 1 0 1
_
_
13
(b) Find a parity-check matrix for C.
H = [A
T
I
k
] =
_
1 0 0 1 0
1 1 1 0 1
_
(c) Write out the elements of the dual code C
. The elements of C
are linear
combinations of the rows of H,
= C
_
1 1 1 0 1 1 0 0 1 0 0 0
1 1 0 1 1 0 1 0 0 1 0 0
1 0 1 1 0 1 0 1 0 0 1 0
0 1 1 1 0 0 1 1 0 0 0 1
0 0 0 0 1 1 0 0 1 1 1 1
0 0 0 0 0 0 1 1 1 1 1 1
_
_
(a) Find a codeword of minimum weight.
Solution: Note here that any codeword in the code satises Hc
T
= 0. The
rightmost 6 columns of H are the complements of the leftmost six columns.
So the sum of the rst and last columns is the all-ones vector, as is the sum
of the second and next to last column. The sum of the rst two and last two
columns is zero, which corresponds to the following weight 4 codeword:
(1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1).
Another weight 4 codeword, which corresponds to a linear dependence of the
rst six columns of H, is
(0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0).
Easy to see there can not be the codewords of less weight (apart from c=0).
14
(b) Prove that all codewords have even parity.
Solution: All columns of H have odd parity, so the sum (exclusive-or) of
an odd number of columns has odd parity and is therefore nonzero. Every
codeword selects a set of columns of H whose sum is zero, so codewords must
have an even number of nonzero components.
(c) Does C have a systematic parity-check matrix of the form [I[ P
T
] ?
Solution: No. A systematic parity-check matrix of the form [I[ P
T
] would
be obtained by elementary row operations on H. But the rst six columns of
H have rank 5 since the last row of that submatrix is zero. Therefore it is
not possible to transform H to the required form.
(d) What are the parameters of the code ?
Solution: Clearly, dimension n = 12, and d = 4. The dimension is then
n k = 6 which gives k = 6.
17. (Code rate): a) Let C
1
be the binary code of blocklength 14 consisting of all sequences in
which there are at least three 0s between any two 1s. Find the rate of C
1
.
Solution: The rate of a block code with alphabet size Q, blocklength n, and M
codewords is
1
n
log
Q
M.
Let M
n
be the number of binary sequences of length n that have at least three 0s
between any two 1s. The rst four values of M
n
are given in the following table
together with the codewords of length n.
n M
n
code of blocklength n
1 2 0, 1
2 3 00, 01, 10
3 4 000, 001, 010, 100
4 5 0000, 0001, 0010, 0100, 1000
For n 5 any valid sequence begins with either 0 or 1. If the rst bit is 0, then
the remaining n 1 bits can be any valid sequence of length n 1. If the rst bit
is 1, then the next three bits must be 0, followed by any valid sequence of length
n 4. Therefore M
n
satises the following recurrence:
M
n
=
_
n + 1 n = 1, 2, 3, 4
M
n1
+ M
n4
n 5
Using this recurrence, we can generate M
n
for n = 5, . . . , 14:
n 5 6 7 8 9 10 11 12 13 14
M
n
7 10 14 19 26 36 50 60 95 131
Therefore the rate of C
1
is
1
14
log
2
131 = 0.5024.
18. (Systematic codes): A code C is called systematic on k positions (and the symbols on these
positions are called information symbols) if [C[ = q
k
and there is exactly one codeword for
15
every possible choice of coordinates in these k positions.
Let C be a (n, k) code over F
q
which is systematic on any set of k positions. Show that C
has minimum distance d = n k + 1.
We shot that weight of any nonzero codeword in C is > n k. On contrary,
assume wt(c) n k. Then there exists a subset of k coordinates for which
c
i
1
= c
i
2
= . . . = c
i
k
. Since C is systematic in these positions as well we must
have that c =0. Simply note that we may write c as,
c = c
1
+ c
2
+ c
3
; , , F
q
.
The fact that c is zero on k systematic positions implies that = = = 0.
Hence, d > nk. On the other hand d nk+1 since given any k positions there
will be codewords of weight 1 on these k positions, implying d n k +1. Thus,
C is a (n, k, n k +1) code, also known as MDS (Maximum Distance Separable)
code.
19. (Codes over Z
3
) The idea is to examine the minimum distance through the parity check
matrix over the alphabet A = 0, 1, 2. Show that the following parity check matrix,
H =
_
_
0 0 0 1 0 1
0 0 2 0 1 0
0 1 2 2 0 0
1 0 1 2 0 0
_
_
generates a code with minimum distance d = 4.
Solution Using the result (Theorem 3.5) in the textbook we have to show that
any 3 columns of H are linearly independent. Permuting the columns of H we get
an equivalent code with the same minimum distance,
H
=
_
_
0 0 0 1 0 1
0 0 1 0 2 0
0 1 0 0 2 2
1 0 0 0 1 2
_
_
Then it is clear that you cannot nd 3 or less linearly dependent columns of H.
The code is (6,2,4) over GF(3) and we essentially have no improvement over binary
alphabet, that is there is a (6,2,4) code over GF(2).
Can we nd (6,3,4) code over GF(3) ? No, try to remove one row of H and to
preserve independency of 4 vectors for any entries of H. Not possible.
20. (Generator matrices and error correction): Let C be a binary (6,3) code with the parity check
matrix,
H =
_
_
1 1 0 1 0 0
0 1 1 1 1 0
1 0 0 1 1 1
_
_
(a) Find coset leaders and their syndromes.
16
(b) Use syndrome decoding to decode the following received vectors: (i) 110000;
(ii) 000011.
(a) The code C has 8 elements and so 8 cosets in V (6, 2).
Coset leaders are :
000000 100000 010000 001000 000100 000010 000001 100001
The corresponding syndromes are:
000 101 110 010 111 011 001 100
These are computed as s = Hl
T
where l is a coset leader. E.g. the rst coset
leader l = (100000) selects the rst column of H in the multiplication Hl
T
,
i.e. s = 101
(b) Use syndrome decoding to decode the following received vectors:
(i) r = 110000 s = 011 l = 000010 c = 110010;
(ii) r = 000011 s = 010 l = 001000 c = 001011
21. (Binary Hamming code & bound):
(a) What is the rate of the Hamming code of block length 2
1?
By denition of the Hamming code the message length of the code is 2
1
and so the rate is 1
2
1
.
(b) Show that if C is a t-error-correcting code in 0, 1
n
, then [C[ 2
n
/ Vol(n, t), where
Vol(n, t) =
t
i=0
_
n
i
_
.
By denition, the Hamming balls of radius t around codewords are non-intersecting
in a t-error correcting code. Since each such Hamming ball is a subset of 0, 1
n
we get that the sum of their volumes is at most 2
n
. Each has volume equal to
Vol(n, t) and this gives the bound.
(c) Conclude that the Hamming codes of Part (a) are optimal in their performance.
Hamming codes are 1-error correcting codes. The bound of Part (b) implies such
codes may have at most 2
n
/(n + 1) codewords. Part (a) shows that Hamming
codes do achieve this bound exactly when n = 2
1
= 2
n
= 2
n
/2
= 2
n
/(n + 1).)
22. (Perfect codes I): Show that the binary repetition code of length n, with n odd, is perfect.
How many errors does it correct?
Let C = a
0
= 000 . . . 0, a
1
= 111 . . . 1 be of length n. Any vector x F
n
2
has t
coordinates 1, and n t coordinates 0. So d(x, a
0
) = t and d(x, a
1
) = n t.
Hence, if t < n/2, then x is uniquely decoded as a
0
, whereas, if t > n/2, then x is
uniquely decoded as a
1
. So C is perfect and corrects n/2| = (n 1)/2 errors.
This can also be done using the Sphere Packing Bound.
17
23. Let C and D be linear codes over F
q
of the same length. Dene:
C + D = c + d[c C, d D.
Show that C + D is a linear code and that (C + D)
= C
.
First we need to prove that C+D is a linear code. The proof is elementary. Since
0 C, D then clearly 0 C +D. Furthermore if c
1
+d
1
and c
2
+d
2
are in C +D
we have to show that
(c
1
+ d
1
) + (c
2
+ d
2
) C + D.
But
(c
1
+ d
1
) + (c
2
+ d
2
) = (c
1
+ c
2
) + (d
1
+ d
2
) = c + d
for some c C and d D as C and D are linear.
We now prove that
(C + D)
= C
.
Claim (C + D)
: Let x (C + D)
and x D
. Let c C. Now,
c = c +0 C + D
and therefore x c = 0 and we conclude that x C
.
Claim C
(C + D)
: For all
v C
: v c = 0
and v d = 0, for all (c C and d D). Therefore v (c + d) equals zero as well,
and v (C + D)
.
24. (Counting the codes): Determine the number of binary linear codes with parameters (n, n
1, 2).
The number of binary linear codes with parameters (n, n 1, 2) is 1 !
To prove this we begin by showing that there exists at most one binary linear
code with the given parameters and conclude by showing the existence of such a
code.
Assume that there exist two binary linear codes C
1
, C
2
with parameters (n, n
1, 2). Note that for every code with these parameters, if we delete the last coordi-
nate, we obtain all strings of length n 1 (since all codewords dier in at least 2
18
coordinates, deleting the last coordinate results in a set of dierent strings of the
same size as the original code).
Now, if there exist two dierent codes C
1
, C
2
with parameters (n, n 1, 2), then
there exists some v 0, 1
n1
such that (w.lo.g.) v[[0 C
1
and v[[1 C
2
. If
v = 0
n1
, then C
2
is not a linear code since it does not contain the all-zero vector
(recall that all codewords must dier in at least 2 coordinates). Let i be the rst
index in v such that v
i
= 1 (where v
i
denotes the i-th bit in v). Let v
0, 1
n1
be the binary string that is identical to v in all coordinates except for the i-th
coordinate v
i
= 0. It must hold that v
[[1 C
1
and v
[[0 C
2
(why?). Let i
be
the rst index in v
such that v
= 1. Let v
0, 1
n1
be the binary string that
is identical to v
[[0 C
1
and v
[[1 C
2
.
We continue with this procedure until we obtain the all-zero string of length n1.
It must hold that either C
1
contains 0
n1
[[1 or C
2
contains 0
n1
[[1 and therefore
either C
1
is not a linear code or C
2
is not a linear code.
We now show the set of binary strings with even weight is a linear (n, n1, 2) code.
It is easy to verify that this set constitutes a linear code with minimum distance 2.
Finally we prove that exactly 2
n1
strings from the set F
n
2
have an even weight.
This is true because the set of strings in F
n
2
with even weight can be obtained by
adding a parity bit to each string of length n 1 and there are exactly 2
n1
such
strings.
25. (Parity of codewords): Show that in a binary linear code, either all codewords have even
Hamming weight or exactly half of the codewords have even Hamming weight.
Observation 1 Let x and y be two vectors in F
n
2
. The Hamming weight of x +y
is even if and only if the Hamming weight of both vectors is even or the Hamming
weight of both vectors id odd.
Let C be a binary linear code and let v
1
, . . . , v
k
be a basis for C (that is, ev-
ery codeword in C is a linear combination of v
1
, . . . , v
k
). Now, if the Hamming
weight of all v
1
, . . . , v
k
is even, then by the observation, all codewords in C have
even Hamming weight. Assume there exist t 1 vectors in the basis with odd
Hamming weight. W.l.o.g , we assume that v
1
, . . . , v
t
are the vectors with odd
Hamming weight and v
t+1
, . . . , v
k
are the vectors with even Hamming weight. Ev-
ery codeword in C is a linear combination of v
1
, . . . , v
k
and therefore can be viewed
as a binary string of length k (where we have 1 in the i-th coordinate if and only
if v
i
appears in the linear combination). Now, each codeword has Even Hamming
weight if and only if the number of the vectors from v
1
, . . . , v
t
in the combination
is even (why?). That is, a codeword c has even Hamming weight if and only if
the number of 1s in coordinates 1 to t in the binary string that represents the
combination is even. Therefore in order to nd the number of codewords with
even Hamming weight, we count the number of binary strings of length k where
the number of 1s in coordinates 1 to t is even. This equals the number of binary
strings of length t with even number of 1s number of binary strings of length
19
k t (recall that we may have every string in the coordinates t + 1 to k). This
equals
2
t
2
2
kt
= 2
kt+t1
= 2
k1
.
26. (McWilliams Identity): Given is a generator matrix of a (4,2) code C with d = 2
G =
_
1 0 1 1
1 1 0 1
_
Find the weight distribution of the dual code C
.
The weight distribution of C is obviously given by (1, 0, 1, 2, 0). We need to com-
pute
W
C
(x + y, x y) =
4
i=0
A
i
(x + y)
ni
(x y)
i
This gives that W
C
(x + y, x y) equals to
= (x + y)
4
+ (x + y)
2
(x y)
2
+ 2(x + y)(x y)
3
=
= (x + y)
2
[(x + y)
2
+ (x y)
2
] + 2(x + y)(x y)
3
=
= (x + y)
2
[2x
2
+ 2y
2
] + 2(x + y)[x
3
3x
2
y + 3xy
2
y
3
] =
= 2x
4
+ 2x
2
y
2
+ 4x
3
y + 4xy
3
+ 2x
2
y
2
+ 2y
4
+
+ [2x
4
6x
3
y + 6x
2
y
2
2xy
3
+ 2yx
3
6x
2
y
2
+ 6xy
3
2y
4
] =
= 4x
4
+ 4x
2
y
2
+ 8xy
3
Thus the weight distribution of the dual code is,
W
C
=
1
4
W
C
(x + y, x y) = x
4
+ x
2
y
2
+ 2xy
3
.
The distribution is the same. Check that (0111) and (1110) are one basis of H.
27. (Concatenation of codes):
28. Let C
1
and C
2
be two linear codes over F
q
. Show that C = (c
1
[[c
2
) : c
1
C
1
, c
2
C
2
d 1
2
|
around codewords of C do not contain x and therefore
MV
q
(n,
d 1
2
|) < q
n
and the code is not perfect. Here,
V
q
(n, r) =
r
i=0
_
n
i
_
(q 1)
i
is the volume of the sphere of radius r.
31. (Perfect codes I): Show that the binary repetition code of length n, with n odd, is perfect.
How many errors does it correct?
Let
C = a
0
= 000 . . . 0, a
1
= 111 . . . 1
be of length n. Any vector x F
n
2
has t coordinates 1, and n t coordinates 0.
So d(x, a
0
) = t and d(x, a
1
) = n t.
Hence, if t < n/2, then x is uniquely decoded as a
0
, whereas, if t > n/2, then x is
uniquely decoded as a
1
. So C is perfect and corrects
n/2| = (n 1)/2
errors.
This can also be done using the Sphere Packing Bound.
32. (Direct product codes ): The product of a (7,4) Hamming code with itself is a (49,16) binary
code with minimum distance 9 and therefore error-correcting ability 4 (check slides for
general properties). Direct product code is dened as a Kronecker product of codes in this
case V = C C. This means that if for instance c
1
= (1001100) and c
2
= (0100110) are
two codeword of C then the associated codeword in V is given by,
c
T
1
c
2
=
_
_
_
_
_
_
_
_
_
_
1
0
0
1
1
0
0
_
_
_
_
_
_
_
_
_
_
(0100110) =
_
_
_
_
_
_
_
_
_
_
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 1 1 0
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
_
_
_
_
_
_
_
_
_
_
V
Associated codeword c
V
is the consecutive rows of the above matrix
c
V
= (0100110[0000000[ [0000000)
22
Note that if c
V
,= 0 then there must be a nonzero row and its weight is 3 since it is a
codeword of a (7,4,3) code. But once there is a single one in some row the number of ones
in the corresponding column must be also 3 (it is the weight of c
1
)
We want to devise an ad hoc error-correction method that can correct up to four bit errors
for at least some nice distributions of errors in a 7 7 array of received bits. Consider the
various number of rows that can be aected by up to four errors.
The following ad hoc error-correction procedure is one method for correcting up
to four bit errors in a 7 7 codeword array. Let R be the set of rows in which
errors are detected and let C be the set of columns in which errors are detected
(simply check whether received rows/columns are the codewords of the Hamming
(7,4,3) code). Apply the following correction procedure:
(a) Case 1 [R[ [C[. Run through the rows in R. For each row r R, correct r
using the nearest-neighbor error correction for the (7,4) Hamming code.
Then apply error detection to each column of the received array. If any
columns not in C show errors, undo the correction performed on r.
Example:
_
_
_
_
_
_
_
_
_
_
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 1 1 0
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
1 1 0 0 1 1 0
1 0 0 0 0 0 0
1 0 0 0 0 0 0
0 1 0 0 1 1 0
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 1 0 0 0 0 0
_
_
_
_
_
_
_
_
_
_
In this case [R[ = 4 and [C[ = 2. The errors are detected, and then any single
error in each row is corrected using Hamming code correction so that
_
_
_
_
_
_
_
_
_
_
1 1 0 0 1 1 0
1 0 0 0 0 0 0
1 0 0 0 0 0 0
0 1 0 0 1 1 0
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 1 0 0 0 0 0
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 1 1 0
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
_
_
_
_
_
_
_
_
_
_
Case 2: [R[ < [C[. Proceed as above, with the roles of rows and columns
interchanged.
(b) Update R and C. If both are now empty, stop. (in the above example we are
done - no more errors either in rows or in columns)
(c) But it might be the case that we miscorrect some columns or rows so we are
not done in the rst step. We need to undo the correction of such a row.
23
Example:
_
_
_
_
_
_
_
_
_
_
1 1 0 0 1 1 0
1 0 0 0 0 0 0
1 1 0 0 0 0 0
0 1 0 0 1 1 0
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0 1 0 0 1 1 0
0 0 0 0 0 0 0
1 1 0 1 0 0 0
0 1 0 0 1 1 0
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
_
_
_
_
_
_
_
_
_
_
The green colour indicates a new error introduced by error correction. Since
this column was not detected to have errors originally we must undo error
correction of this row. Now we proceed with error correction of the columns,
_
_
_
_
_
_
_
_
_
_
0 1 0 0 1 1 0
0 0 0 0 0 0 0
1 1 0 0 0 0 0
0 1 0 0 1 1 0
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 1 0 0 1 1 0
0 1 0 0 1 1 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
_
_
_
_
_
_
_
_
_
_
There are a few more complicated patterns that might be discussed but we
stop here.
33. Show that a perfect binary [n, M, 7] code has n = 7 or n = 23.
The Sphere Packing Bound for a binary [n, M, 7] code says that:
M
__
n
0
_
+
_
n
1
_
+
_
n
2
_
+
_
n
3
__
= 2
n
.
Thus,
_
n
0
_
+
_
n
1
_
+
_
n
2
_
+
_
n
3
_
= 2
r
.
Rewriting this we have,
1 + n +
1
2
n(n 1) +
1
6
n(n 1)(n 2) = 2
r
,
6(n + 1) + 3n(n 1) + n(n 1)(n 2) = 3 2
r+1
,
6(n + 1) + n(n 1)3 + (n 2) = 3 2
r+1
,
(n + 1)n
2
n + 6 = 3 2
r+1
,
(n + 1)(n + 1)
2
3(n + 1) + 8 = 3 2
r+1
. ()
A bit of number theory implies that n + 1 must be divisible by some power of 2.
First note that writing (*) modulo 8 we have,
(n + 1)(n + 1)
2
3(n + 1) 0 (mod 8),
as 8[2
r+1
for r 2 which is always the case. Thus 8[(n + 1).
If 16 divides n + 1, then the second term on the LHS is divisible by 8 but not by
24
16. In general the second term on the LHS is then of the form (2k +1)8 for k 0.
If it is 8 (k = 0), then
(n + 1)
2
3(n + 1) = 0,
which is impossible, since n 7. If it is 24 (k = 1), then
(n + 1)
2
3(n + 1) 16 = 0,
which is also impossible, as the discriminant is 73.
Therefore, n + 1 divides 24 (as we have 3 on the RHS), so that n = 7, 11, 23.
Now, n = 11 does not satisfy Equation (*). So, n = 7 or 23. In fact, perfect
codes of these lengths exist, the repetition code of length 7 and the Golay code,
respectively.
34. (Bounds): Use the Sphere Packing Bound to nd an upper bound for M of a binary [5, M, 3]
code.
For q = 2, the Sphere Packing Bound for an [n, M, 2e + 1] code is,
M
__
n
0
_
+
_
n
1
_
+ . . . +
_
n
e
__
2
n
.
For n = 5, d = 3, e = 1 we get,
M
_
1 +
_
5
1
__
32,
therefore M 5.
35. (Bounds II): The previous exercise gives an upper bound for A
2
(5, 3). Now, show by con-
struction that A
2
(5, 3) = 4.
The idea is to exhaustively nd the maximal number of the codewords. Choose
two words in C as a
1
= 00000, and w.l.o.g. a
2
= 11100. Since d(x, a
1
) 3 for
any x in C the only other possible elements of C are the 9 words with three 1s,
apart from a
2
, the 5 words with four 1s, and u = 11111. As d(u, a
2
) = 2, we have
u , C.
wt(c) = 3: 11010, 11001, 10110, 10101, 10011, 01110, 01101, 01011, 00111;
wt(c) = 4: 11110, 11101, 11011, 10111, 01111.
The words with three 1s and two of the rst three coordinates 1 are at distance 2
from a
2
. This leaves
b
1
= 10011, b
2
= 01011, b
3
= 00111.
Similarly, the rst two words with four 1s are at distance 1 from a
2
. This leaves
c
1
= 11011, c
2
= 10111, c
3
= 01111.
Now, d(b
i
, b
j
) = 2, d(c
i
, c
j
) = 2 for i ,= j. So there can only be one b
i
and one c
j
in C. Hence [C[ 4.
In fact, taking b
1
C, the only possibility is c
3
. This gives C = a
1
, a
2
, b
1
, c
3
as
a [5, 4, 3] code.
25
36. (Even weight codes): Show that if there is a binary [n, M, d] code with d even then there is
an [n, M, d] code in which all codewords have even weight.
Let C be an [n, M, d] code with d even. Then we can puncture C to get an [n
1, M, d 1] code C
n1
i=1
c
i
(mod 2).
The extended code C
is again [(n, M, d)] but all the codewords have even weight.
As an example consider,
C =
_
_
_
1 1 1 0
1 0 0 1
0 0 0 0
C
=
_
_
_
1 1 1
1 0 0
0 0 0
C =
_
_
_
1 1 1 1
1 0 0 1
0 0 0 0
37. (Extended code): Let C be a binary code of length n. Form a binary code C
of length n+1
as follows:
x = x
1
x
2
. . . x
n
C x
= x
1
x
2
. . . x
n
x
n+1
C
where
x
n+1
=
_
1 if w(x) is odd
0 if w(x) is even
Show that, if C is linear, then C
= C
0
C
1
. Hence C
is a subspace.
Now for x, y V (n, 2),
w(x + y) =
n
i=1
(x
i
+ y
i
) =
n
i=1
x
i
+
n
i=1
y
i
= w(x) + w(y) (mod 2).
To check that C
, y
+y
.
There are three cases.
(1) w(x) even, w(y) even; then w(x + y) is even. So
(x + y)
= (x
1
+ y
1
, . . . , x
n
+ y
n
, 0)
= (x
1
, . . . , x
n
, 0) + (y
1
, . . . , y
n
, 0) = x
+ y
.
Thus the mapping is linear in this case.
(2) w(x) odd, w(y) odd; then w(x + y) is even. So
(x + y)
= (x
1
+ y
1
, . . . , x
n
+ y
n
, 0)
= (x
1
, . . . , x
n
, 1) + (y
1
, . . . , y
n
, 1) = x
+ y
.
26
Thus the mapping is linear in this case too.
(3) w(x) odd, w(y) even; then w(x + y) is odd. So
(x + y)
= (x
1
+ y
1
, . . . , x
n
+ y
n
, 1)
= (x
1
, . . . , x
n
, 1) + (y
1
, . . . , y
n
, 0) = x
+ y
.
The mapping is linear in this case too, that is C
is linear.
38. (Constructing new codes II): Show that if a binary (n, k, 2t + 1) code exists, then so does an
(n + 1, k, 2t + 2) code.
Let C be an (n, k, 2t + 1) code. We construct C
, an (n + 1, k, 2t + 2) code from
C as follows:
Let x = (x
1
, . . . , x
n
) C. Corresponding to x, C
=
(x
1
, . . . , x
n
,
n
i=1
x
i
).
Clearly, C
, y
) 2t + 2.
Notice that
d(x
, y
) d(x, y).
Hence, it suces to consider the case
d(x, y) = 2t + 1.
Let us permute the coordinates of C so that x and y agree in the rst m =
n (2t + 1) positions and disagree in the last 2t + 1 positions. Now consider the
quantity
n
i=1
(x
i
+ y
i
),
which equals to (2 # 1s in the rst m = n (2t + 1) positions + (2t + 1)).
The parity is clearly odd and therefore we get that exactly one of
n
i=1
x
i
and
n
i=1
y
i
is one (modulo 2) and the other is zero. Thus x and y disagree in the
last coordinate and so the distance between them is 2t + 2.
39. (Construction III): Given an (n, k, d) linear code over F
q
, can one always construct an (n +
1, k, d + 1) linear code ?
27
No, we show the following counter-example: Let C be the binary linear code
containing all vectors of length 3 with even Hamming weight. This is a (3, 2, 2)
code. If the claim is true, then there must exist a (4, 2, 3) code. Take simply
any two vectors of weight 3 in F
4
2
, say (1110) and (0111). Clearly we cannot get
distance 3 for any choice of the basis.
40. (Concatenation of codes):
41. Let C
1
and C
2
be two linear codes over F
q
. Show that C = (c
1
[[c
2
) : c
1
C
1
, c
2
C
2
ij
a
i
b
j
c
i
d
j
= (
i
a
i
c
i
)(
j
b
j
d
j
) = a, c b, d.
We show how to use tensor products to build a big Hadamard matrix from
two smaller ones.
Let u
1
. . . , u
n
be the rows of H
n
and let v
1
. . . , v
m
be the rows of H
m
. By the
condition H
n
H
T
n
= nI, we have u
i
, u
j
= 0 if i ,= j. (Similarly for the v
i
s.)
Let H
nm
be the matrix whose rows are u
i
v
j
for all i [n], j [m]. As noted
above, this is a +1/ 1 matrix. Thus the diagonal entries of H
nm
H
T
nm
are
all nm as required. Now consider the o-diagonal entry (H
nm
H
T
nm
)
(ij),(kl)
=
u
i
v
j
, u
k
v
l
= u
i
, u
k
v
j
, v
l
. Since at least one of the conditions
i ,= k or j ,= l holds, we have the above inner product is zero. This proves the
o-diagonal entries are zero as required.
43. Suppose C is a code of length n over the q-ary alphabet A. Let w, x C, w ,= x, and
v A
n
. In terms of these vectors answer the following (and generalize):
(a) What does it mean to say that C is t-error-detecting? What does it mean to say that C
is t-error-correcting? Prove that if C is 2t-error-detecting, then C is t-error-correcting.
Hint: Use the triangle inequality and show that if C is not t-error correcting then it is
not 2t-error detecting.
C is t-error-detecting if there do not exist words w, x C with d(w, x) t. C
is t-error-correcting if there do not exist words v A
n
and w, x C such that
w ,= x and
d(v, w) t, d(v, x) t.
Suppose C fails to be t-error-correcting. Then there are v, w, x as above. By
the triangle inequality, we have
d(w, x) d(v, w) + d(v, x) t + t = 2t,
and so C is not 2t-error-detecting. Hence if C is 2t-error-detecting, then it is
t-error-correcting.
(b) Show that if C is t-error-correcting, then
[C[
q
n
_
n
0
_
+ (q 1)
_
n
1
_
+ (q 1)
2
_
n
2
_
+ . . . + (q 1)
t
_
n
t
_.
Hint: Use the concept of disjoint spheres.
If C is t-error-correcting, then the spheres S(x, t) for x C must be disjoint.
Thus we have,
[
xC
S(x, t)[ =
xC
[S(x, t)[
=
xC
__
n
0
_
+
_
n
1
_
(q 1) + . . . +
_
n
t
_
(q 1)
t
_
.
29
But
xC
S(x, t) is a subset of A
n
, which contains exactly q
n
words. And so
[C[
__
n
0
_
+
_
n
1
_
(q 1) + . . . +
_
n
t
_
(q 1)
t
_
q
n
,
which gives the result.
(c) Suppose that n
2
+n+1 > 2
l
for some integer l, and that C is a binary linear (n, k)-code
which is 2-error-correcting. Prove that k < n l + 1.
By the above inequality, we have
[C[
2
n
_
n
0
_
+
_
n
1
_
+
_
n
2
_ =
2
n
1 + n +
n(n1)
2
.
Thus,
2
k
2
n
1
2
(2 + n + n
2
)
<
2
n
1
2
(2
l
)
= 2
nl+1
.
Thus, k < n l + 1.
44. This problem concerns the bounds on codes.
(a) Let B be an alphabet of size q and C B
n
be a q-ary block code of length n.
(i) Dene (mathematically) the Hamming distance d on B
n
.
For x, y B
n
we dene,
d(x, y) = #x
i
,= y
i
; i = 1, . . . , n.
(ii) Dene the minimum distance d(C) of the code C.
d(C) = min
x,yC;x=y
d(x, y).
(b) Let the parameter A
q
(n, d) dene the maximum number of codewords of length n over
B such that the Hamming distance between any two codewords is d. State and prove
the sphere-packing bound for A
q
(n, d).
Hint: How many disjoint spheres of suitable radius can be packed in the space.
Since d(C) = d we know that C is t =
d1
2
error-correcting code. The bound
is,
A
q
(n, d) q
n
/[S(x, t)[.
In the class a dierent notation was used A
q
(n, d) q
n
/V
q
(n, t), so obviously
V
q
(n, t) = [S(x, t)[. Note that
V
q
(n, t) =
_
n
0
_
+ (q 1)
_
n
1
_
+ (q 1)
2
_
n
2
_
+ . . . + (q 1)
t
_
n
t
_
,
hence the bound is the same as in Problem 1.
30
(c) Then prove that A
q
(n 1, d) A
q
(n, d)/q.
See the previous exam. Let C be a code with A
q
(n, d) codewords. W.l.o.g.
consider the last coordinate of C that is c
n
. Then we can sort the codewords
w.r.t. this coordinate, i.e. split C into q sets. Then there must be some value
in this coordinate such that [c C : c
n
= a[ A
q
(n, d)/q for some a B.
Then we take the codewords of C for which c
n
= a and delete (puncture) this
coordinate. The code is obviously an [n1, M
, d] code with M
A
q
(n, d)/q.
Also, deleting this coordinate does not aect d.
(d) In each of the following cases either construct a code with the specied parameters or
explain why no such code exists.
(i) A 5-ary [7, 26, 6] code.
Since all codewords dier from one another in at least 6 places, the 2-coordinate
words we get by deleting the last 5 coordinates of each codeword must all be
distinct. Hence a 5-ary [7,M, 6] code must have M 5
2
= 25. Hence, 5-ary
[7, 26, 6] code does not exist.
(ii) A 5-ary [8, 130, 6] code.
A 5-ary [8, 130, 6] code does not exist by (i) and part (c).
45. Let C be the binary linear code with generator matrix
G =
_
_
1 0 0 1 0 1
0 1 0 1 1 0
0 0 1 0 1 1
_
_
(a) Write down a parity check matrix H for C. Explain how the minimum distance of C
may be deduced from H. Find d(C).
H =
_
_
1 1 0 1 0 0
0 1 1 0 1 0
1 0 1 0 0 1
_
_
d(C) = d if and only if no set of (d1) columns of H is linearly dependent, but
some set of d columns is. In this case, no pair of columns is linearly dependent
but the rst 3 columns sum to 000, hence are linearly dependent. So d(C) = 3.
(b) How many cosets does C have? How many cosets are led by weight 1 vectors ? Does
any coset have a weight 2 coset leader?
C has [Z
6
2
[/[C[ = 2
6
/2
3
= 8 cosets. Since d(C) = 3, every weight 1 vector is a
coset leader, so 6 of the cosets have weight 1 leaders. C itself is led by 000000,
so that leaves 1 coset unaccounted for. There are
_
6
2
_
weight 2 vectors in Z
6
2
,
and the question is whether all of these are contained in the cosets with weight
1 leaders. But in order to lie in coset v + C with w(v) = 1, a vector must be
at distance 1 from one of the codewords of C. Now,
C = f000000; 100101; 010110; 110011; 001011; 101110; 011101; 111000,
31
so the only weight 2 vectors with this property are,
000101; 100001; 100100; 000110; 010010; 010100; 000011; 001001;
001010; 011000; 101000; 110000.
Hence the remaining weight 2 vectors, namely 100010, 010001 and 001100 must
lie in the 8th coset, and any of these 3 may be chosen as the coset leader.
(c) Construct a syndrome look-up table for C. Hence, or otherwise, decode the received
vectors 100110, 011101 and 101001.
We compute S(v
r
) = v
r
H
T
for each of the coset leaders v
1
, . . . , v
8
. Since
there are 3 dierent choices for v
8
3 dierent tables are possible (they dier
only in the last row). Choosing 100010 as our weight 2 coset leader, we obtain:
coset leader syndrome
000000 000
100000 101
010000 110
001000 011
000100 100
000010 010
000001 001
100010 111
S(100110) = 011 so 100110 lies in 001000 + C. Hence we correct it by sub-
tracting 1 from its 3rd digit: 100110 101110.
S(011101) = 000 so 011101 is a codeword and needs no correction.
S(101001) = 111 so 101001 lies in 100010 + C. Hence we correct it 101001
101001100010 = 001011. Note that your answer will be dierent if you chose
a dierent weight 2 coset leader.
(d) Puncturing the code means deleting some coordinates of the code. Discuss the eect
of puncturing on the minimum distance and the rate of the code.
Puncturing may or may not decrease the minimum distance, hence d
d.
Anyway, since n
is increased.
46. A (6, 3) linear block code C over GF(2) is dened by the following parity check matrix,
H =
_
_
1 0 0 0 1 1
0 1 0 1 0 1
0 0 1 1 1 0
_
_
(a) Find the generator matrix of C.
The parity check matrix is simply obtained from H as,
G = [A
T
I
3
] =
_
_
0 1 1 1 0 0
1 0 1 0 1 0
1 1 0 0 0 1
_
_
32
(b) The parity check matrix H does not allow the presence of the codewords of weight < 3
(apart from the all zero codeword). Explain why ?
We cannot have a codeword of weight 2 since then Hc
T
= 0 is not satised
due to the properties of H that no 2 columns of H are linearly dependent.
(c) Suppose that the code is used for error detection only over a binary symmetric channel
with error rate p = 10
3
. Find the probability of undetected error.
Hint: W.l.o.g. assume that all zero codeword was transmitted. Be careful with the
interpretation of undetected error (for Pavel only : of course the error must be a
codeword)
An undetected error occurs if and only if the error pattern is a codeword !
The weight distribution of the code is (1, 0, 0, 4, 3, 0, 0), and there are 4
possibilities that an error of weight 3 and 3 possibilities that an error of weight
4 goes undetected.Therefore,
P
e
= 4p
3
(1 p)
3
+ 3p
4
(1 p)
2
= 4 10
9
(0.999)
3
+ 3 10
12
(0.999)
2
4 10
9.
(d) Suppose that the code is used for erasure correction over a binary erasure channel with
erasure probability = 10
2
. How many erasures the code can always correct ?
Since d = 3 the code can always correct 2 erasures.
(e) Decode the received word ( 110)
Determining erasure values corresponds to solving a system of 3 equations.
Thus we need linear independency of these equations which comes from the
independency of the columns of H. Denoting the rst 3 positions by r
1
, r
2
, r
3
from Hc
T
= 0 we get,
r
1
= 1
r
2
= 1
r
3
= 0
Thus, r c = (110110).
(f) For the erasure probability = 10
2
nd the probability of decoder failure, that is, the
probability that the transmitted codeword cannot be determined from the unerased
bits (for suciently many erasures)
Hint: One erasure weight need to be carefully investigated.
Since any 4 columns or more of H are linearly dependent we cannot correct 4 or
more erasures. However, some erasures of weight 3 can be corrected as in (e) but
those submatrices of H of size 33 whose columns are not linearly independent are
those erasure patterns that cannot be corrected. The number of such submatrices
is 4 (by inspection of H) and therefore,
Pfail = 4
3
(1 )
3
+
_
6
4
_
4
(1 )
2
+
_
6
5
_
5
(1 ) +
_
6
6
_
6
=
= 4 10
6
(0.99)
3
+ 15 10
8
(0.99)
2
+ 6 10
10
(0.99) + 10
12
=
4 10
6
(0.99)
3
+ 15 10
8
(0.99)
2
= 3.9 10
6
.
33
47. This question considers the bounds on codes. Actually, the results in this problem establish
the so-called Plotkin bound.
(a) What is meant by a binary [n, M, d]-code, i.e. explain the notation ?
An [n, M, d]-code C is a code with M codewords over a binary alphabet, all of
length n, such that d(u, v) d for all distinct u, v C.
(b) Suppose C is a binary [n, M, d]-code. Regard the codewords as vectors over GF(2),
and dene an
_
M
2
_
n binary matrix D as follows:
The rows of D correspond to all (unordered) pair of codewords in C. The row corre-
sponding to codewords u and v is simply the vector (modulo 2 bitwise) sum of u and
v. (The ordering of the rows of D is not signicant.) Write down the array D for the
particular code
C = 000000, 001111, 111001, 110110.
D =
_
_
_
_
_
_
_
_
0 0 1 1 1 1
1 1 1 0 0 1
1 1 0 1 1 0
1 1 0 1 1 0
1 1 1 0 0 1
0 0 1 1 1 1
_
_
_
_
_
_
_
_
(c) Now suppose C is an arbitrary [n, M, d]-code. Prove that the number of 1s in D is at
least
_
M
2
_
d.
Since any row of D is the sum of distinct u and v we must have that wt(D
i
) d
for any row D
i
, 1 i
_
4
2
_
. Therefore wt(D)
_
M
2
_
d. Note that
_
M
2
_
= 6 for
M = 4 and d = 4.
(d) Prove that the number of 1s in D is at most nM
2
/4. (Hint: consider D columnwise.)
For any column, say i, the entry is one if the ith coordinates of corresponding
u and v are such that u
i
,= v
i
. Let the number of 1s in the ith position
of the codewords of C is j and the number of codewords of C in the ith
coordinate equal to 0 is M j. Then, for each coordinate the number of 1s is
j(M j) M
2
/4. Since there are n columns wt(D) nM
2
/4.
(e) Deduce that M 2d/(2d n), provided that 2d > n.
From c) and d) we have
_
M
2
_
d nM
2
/4 which gives dM(M 1)/2 nM
2
/4
and therefore, M 2d/(2d n).
34