Sei sulla pagina 1di 53

Undergraduate Research Opportunity

Programme in Science

CONSTRUCTION OF BINARY
LINEAR CODES
SOH JOO KIAT KENNETH

Supervisor : Dr. Xing Chaoping

Department of Mathematics
National University of Singapore
1999/2000

Contents

1.

Introduction

1.1

Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.2

Basic Terms and Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2.

Binary Linear Code

2.1

Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2

Properties of Binary Linear Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.3

Generator martix and parity-check matrix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.

Some Construction of Binary Linear Codes

3.1

Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.2

Lengthening a Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.3

Extending a Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.4

Taking a Subcode from a Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.5

Shortening a Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

3.6

Truncating a Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.7

Concatenation of Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3.8

Combination of Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.9

The u(u + v)-Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

12

3.10

The (G G)-Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

List of Tables

33

Table 1 : Listing of Optimal Binary Linear Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . 34-35


Table 2 : Results from Lengthening a Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36-38
Table 3 : Results from Extending a Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39-41
Table 4 : Results from Subcoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42-43
Table 5 : Results from Shortening a Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44-45
Table 6 : Results from Truncating a Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46-47
Table 7 : Results from Concatenation of Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Table 8 : Results from Combination of Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Table 9 : Results from The u(u + v)-Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Table 10 : Results from The (G G)-Construction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

Conclusion

52

Bibliography

53

Chapter 1

Introduction

1.1 Motivation

Coding Theory is the study of methods for efficient and accurate transfer of information from one party to another. The physical medium through which the information
is transmitted is called a channel. Telephone lines and the atmosphere are examples
of channels. Encoding is the process of adding redundancy digits to the information
digits. The encoding process in general is not difficult. The difficult problem is decoding. Often, undesirable disturbances may result in the distortion of transmitted
information, and these disturbances are referred to as noise. Coding theory deals
with the problem of detecting and correcting transmission errors caused by noise in
the channel.

Basically, there are five objectives in the study of coding theory. They are:
1.

fast encoding of information.

2.

easy transmission of encoded messages.

3.

fast decoding of received messages.

4.

correction of errors involved in the channels.

5.

maximum transfer of information per unit time.

Of the five, the most important is the fourth, but in general, it will not be compatible with the other four, and any solution is necessarily a trade-off among the five
objectives.

In this chapter, some basic definitions and results in coding theory are stated without
proofs. They will be used throughout the next two chapters. Here, we will formally
state terms like distance and weight, and illustrate their importance in the understanding of the binary linear code.

1.2 Basic Terms and Notation

Definition.

The set Z2 = {0, 1}, which is a finite binary set, is also called

a code alphabet.
1. A binary word of length n over Z2 is a sequence u = u1 u2 ...un with each ui Z2
for all i.

2. A binary code C is a set of finite sequences of symbols of Z2 having the same


length n.

3. An element of C is called a codeword in C.

4. The number of codewords in C, denoted by |C|, is called the size of C.

5. The length of a codeword is the number of 0 and 1.

Definition.

The weight of a codeword w, denoted by wt(w), is the number of

times the digit 1 occurs.


For example, wt(110101) = 4 and wt(00000) = 0.
The weight of a code C, denoted by w(C), is the minimum weight of all nonzero
codewords in C.
For example, let C = {0000, 1100, 0011, 0111, 1011, 1101, 1110, 1111}.
Then, w(C) = 2.

Definition.

The Hamming distance, or the distance d(w1 , w2 ), between any 2

codewords w1 and w2 , is the number of positions in which the 2 codewords disagree.


For example, d(01011, 00111) = 2 and d(10110, 10110) = 0.

Proposition 1.1.

(Properties of Hamming Distance)

Let x, y and z be words of length n over Z2 . Then


1.

0 d(x, y) n,

2.

d(x, y) = 0 x = y,

3.

d(x, y) = d(y, x), and

4.

d(x, z) d(x, y) + d(y, z).

Definition.

Let C be a code with at least two codewords. The minimum

distance d(C) of C is the smallest distance between distinct codewords. Symbolically, we write
d(C) = min{d(c, d)|c, d C, c 6= d}.
Since c 6= d implies that d(c, d) 1, the minimum distance of a code must be at
least 1.

Chapter 2

Binary Linear Code

2.1 Motivation

Most practical error-correcting codes used today, including the Hamming codes, are
examples of linear codes. The main aim of this chapter is to explain what this means,
and what consequences of linearity make such codes good. One requirement of a
linear code is that its alphabet symbols are the elements of a field. In particular, we
shall use the field Z2 , since we are dealing with the construction of binary linear codes.

Before actually saying what a linear code is, here are just some of the advantages
over arbitrary codes.

1.

Evaluation of d(C) is much easier.

2.

Encoding is fast and requires little storage.

3.

It is much easier to determine which errors are correctable/detectable.

4.

The probability of correct decoding is much easier to calculate.

5.

Very efficient decoding techniques exist for linear codes.

Before we construct some optimal linear codes, we will study some basic properties of binary linear codes.

2.2 Properties of Binary Linear Codes

Definition

A code C Znp that is also a subspace of Znp is called a linear

code. If C has length n, dimension k and minimum distance d(C) = d, then C is


an [n,k,d]-code. The numbers n, k, and d are called the parameters of the linear
code.

Lemma 2.1

If C is a binary code, then d(c, d) = wt(c d) for all codewords c

and d in C.

Theorem 2.1

If C is a linear code, then d(C) = w(C).

Theorem 2.2

A linear code C of dimension k contains precisely 2k codewords.

Lemma 2.2

Let C be a binary linear code of length n. Then, either all the

codewords or exactly half of the codewords in C have 0 in the ith coordinate.

Proof.
Let X be the set of codewords in C with 0 in the ith coordinate and Y be the set
of codewords in C with 1 in the ith coordinate. Then, C = X Y . Suppose Y 6= .
Let c Y . Since c + X Y , we find that, |X| |Y |. Similarly, c + Y X, and this

implies that, |Y | |X|.


Hence, |X| = |Y |.
If Y = , C = X has all codewords with 0 in the ith coordinate.

Definition.

Let C be a binary linear code of length n. The orthogonal code,

denoted by C , is given by
C = {v Zn2 |(v, c) = 0 for all c C}.
We call C self-orthogonal if C C and self-dual if C = C .

2.3 Generator martix and parity check martix

Another advantage of linear codes is that a binary linear [n, k]-code C can be described simply by giving a basis for C, which consists of k linearly independent codewords in C, rather than having to list all of the 2k individual codewords in the code.
It is customary to put the codewords of a basis for a linear code C into a matrix.

Definition.

A generator martix for a linear code C is a matrix G whose

rows form a basis for C.

Definition.

A parity-check matrix for a linear code C is a matrix H whose

columns form a basis for the dual code C .

Theorem 2.3

Matrices G and H are generator and parity-check matrices respec-

tively, for some linear code C if and only if


10

i. the rows of G are linearly independent,


ii. the columns of H are linearly independent,
iii. the number of rows of G plus the number of columns of H equals the number of
columns of G which equals the number of rows of H, and
iv. GH = 0.

Theorem 2.4

Let H be a parity-check matrix for a linear code C of length n.

Then C has distance d if and only if any set of d1 rows of H is linearly independent,
and at least one set of d rows of H is linearly dependent.

Proof :
Suppose v Zn2 .
Then, vH is a linear combination of exactly wt(v) rows of H.
If v C and wt(v) = d, then since vH = 0, some d rows of H are linearly dependent.
And if vH = 0, then v is a codeword so wt(v) d.

11

Chapter 3

Some Construction of Binary Linear Codes

3.1 Motivation

We have discussed the properties of binary linear codes. Now, we will like to investigate the different constructions of new codes, and investigate whether they generate
optimal binary linear codes. In fact, determining the values of the optimal linear
codes has come to known as the main coding theory problem. Unfortunately, very
little is currently known about the number that we are looking for. Thus, the introduction of these constructions will hopefully generate good codes from a given set of
optimal linear codes.

The reason why we are interested in optimal linear codes is because it gives the
maximum total transmission rate and error correction rate. It is pointless to have
codes with excellent transmission rate but small error correction rate. On the other
hand, codes with good error correction rate but poor transmission rate should be

12

avoided. Thus, coding theorists are still looking for a really good compromise.

Definitions.

1.

The transmission rate of a binary linear code C with parameters [n, k, d]

is defined to be R(C) = k n.

2.

The error correction rate of a binary linear code C with parameters [n, k, d]

is defined to be (C) = [(d 1)/2] n.

3.

A trivial binary linear code is a linear code with parameter [n, 1, n] or [n, n, 1],

for all n N. The [n, 1, n]-linear code is a code with one non-zero codeword, that
has all 1 and the weight of this codeword is n. The [n, n, 1]-linear code is a code
which contains the whole subspace Zn2 , with a generator matrix row equivalent to an
identity matrix, In , and has minimum weight of 1.

4.

Optimal codes are codes with the maximum d, given the length n and the

dimension k.

5.

Trivial codes are optimal codes.

13

3.2 Lengthening a Code

Definition

Let C be a binary linear code of length n. The process of adding 0 to all codewords in C is referred to as lengthening the code C.

Theorem

Let C be an [n, k, d] linear code. Then, there exists a linear code C with parameter [n + s, k, d], where s > 0.

Proof

Let G be a generator martix of C. When we add a column of all 0s to G, we


will have a new generator matrix G(1) such that it is a k (n + 1) matrix.
Since we add a column of all 0s, the linear combination of the basis does not affect
the minimum weight of C, i.e., d(C) = d.
Hence, the parameters of the new code is [n + 1, k, d].
By mathematical induction, we are able to obtain new generator matrix G(s) such
that G(s) is a (n + s) k matrix. Hence, there exists a linear code C with parameter
[n + s, k, d], where s > 0.
14

Examples

Let C = {00000, 11100, 00111, 11011}.


Then C = {00000000, 11100000, 00111000, 11011000}.
In this case, the length increased is 3.

Remarks

We may assume that s > 0, since when s = 0, the linear code C with parameters [n + 0, k, d] = [n, k, d] is already assumed to exist.
Please refer to Table 2 on page 36-38 for the list of optimal codes generated by this
construction.

15

3.3 Extending a Code

Definition

Let C be a binary linear code of length n. The code C of length n + 1 obtained from
C by adding one extra bit to each codeword in order to make each codeword into a
new codeword of even weight is called the extended code of C. In particular, we
are interested in codes that have codewords with odd weight initally. If C contains
of all codewords that have even weight, extending a code is the same as lengthening
the code.

Theorem

Let C be an [n, k, d]-linear code. Then, given that d is odd, there exists a linear
code C with parameter [n + 1, k, d + 1].

Proof

Since C is an [n, k, d]-linear code, there exists c C, where wt(c) = d(C) = d.


Let the extended codeword c be c .
Given that d is odd, then by definition,
wt(c ) = d(C ) = wt(c) + 1 = d + 1.
16

If C has a k n generator matrix G, then the extended code C has k (n + 1)


generator matrix G = [G, b], where the last column b of G is appended so that each
row of G has even weight.
dim(C ) = dim(C) = k.
Hence, the parameters of C is [n + 1, k, d + 1].

Examples

Let C = {00000, 11100, 00111, 11011}.


Then C = {000000, 111001, 001111, 110110}.

Remarks

Please refer to Table 3 on page 39-41 for the list of optimal codes generated by
this construction.

17

3.4 Taking a Subcode from a Code

Definition

Let C be a binary linear code of length n. The process of deleting a codeword


from the basis of C so as to obtain a new code C where the minimum weight of C
remains the same, is referred to as taking a subcode of C, or subcoding the code C.

Theorem

Let C be an [n, k, d]-linear code. Then, there exists a linear code C with parameter [n, k s, d], where s > 0 and k > 1.

Proof

Since C is an [n, k, d]-linear code, there exists c C, where wt(c) = d(C) = d.


Let G be a generator matrix of C, where G is a k n matrix, and contains c in the
row basis of C.
By deleting any row, r, that has wt(r) d, r 6= c, from the row basis of G, we obtain
C .
Since the remaining k 1 rows are still linearly indepentent, dim(C ) = k 1.
d(C ) = wt(c) = d.
Hence, the parameters of C is [n, k 1, d].
18

By mathematical induction, there exists a linear code C with parameters [n, k s, d],
where s > 0.

Examples

Let C = {0000, 0011, 1100, 1111, 0001, 0010, 1101, 1110}.

1 1 0 0

Then, C has a generator matrix G, of the form G =


0 0 1 0 .
0 0 0 1
Choosing c = 0001, and deleting the first row of G, we find that
C = {0000, 0011, 0001, 0010}.

Remarks

We may assume that s > 0, since when s = 0, the linear code C with parameters [n, k 0, d] = [n, k, d] is already assumed to exist.
Also, s < k, for if s k, the set C becomes an empty set.
Please refer to Table 4 on page 42-43 for the list of optimal codes generated by this
construction.

19

3.5 Shortening a Code

Definition

Let C be a binary linear code of length n. A shorten code of C is the set of


all codewords of C which are zero at a fixed coordinate with that coordinate deleted.
Those codewords in C with 1 at that coordinate shall be removed from C. In particular, we are interested in deleting those coordinates that is not 0 for all codewords in
C. If the coordinate is 0 for all codewords in C, we shall use the reverse technique of
lengthening, and then use the technique of taking a subcode, which shall be discussed
later.

Theorem

Let C be an [n, k, d]-linear code. Then, there exists a linear code C with parameter [n s, k s, d], where k > s > 0.

Proof

Let G and H be a generator matrix and parity-check matrix of C respectively.


Since C is an [n, k, d]-linear code, there exists c C, where wt(c) = d(C) = d.
Suppose c has 0 in the ith coordinate.
Case 1 :
20

Suppose all codewords in C have 0 in the ith coordinate.


Then, by using the reverse technique of lengthening, we obtain C 1 with parameters
[n 1, k, d].
By applying subcoding to C 1 , with s = 1, we obtained C , with parameter [n 1, k
1, d].
Case 2 :
Suppose C has some codewords that has 1 in the ith coordinate.
Then, by Lemma 2.2, exactly half of the codewords in C has 1 in the ith coordinate.
By deleting the ith coordinate from all the codewords in C, we obtain C .
Let the shortened codeword c be c .
d(C ) = wt(c ) = d.
|C | = 2k 2 = 2k1 .
dim(C ) = k 1.
Hence, the parameters of C is [n 1, k 1, d].
By mathematical induction, using case 1 and 2 simultaneously, there exists a linear
code C with parameter [n s, k s, d], where s > 0.

Examples

Let C = {0000, 1100, 0011, 1111, 1000, 0100, 1011, 0111}.


Then, C = {000, 110, 100, 010} is one possible shortened code of C, where in this
case, we delete those codewords in C having 1 in the fourth coordinate first, and then
removing the fourth coordinate 0, from the remaining codewords.
21

Remarks

We may assume that s > 0, since when s = 0, the linear code C with parameters [n 0, k 0, d] = [n, k, d] is already assumed to exist.
Also, s < k, for if s k, the set C becomes an empty set.
Refer to Table 5 on pages 44-45 for the list of optimal codes generated by this construction.

22

3.6 Truncating a Code

Definition

Let C be a binary linear code of length n. The code obtained by removing a fixed
coordinate of C is called a truncated code of C. In particular, we are interested in
deleting those coordinates that is not 0 for all codewords in C. We have mentioned
in previous section of the technique of shortening a code with coordinate that is 0 for
all codewords in C.

Theorem

Let C be an [n, k, d]-linear code. Then, there exists a linear code C with parameter [n s, k, d s], where s > 0 and d > 1.

Proof

Since C is an [n, k, d]-linear code, there exists c C, where wt(c) = d(C) = d.


Suppose c has 1 in the ith coordinate.
By deleting the ith coordinate from all the codewords in C, we obtain C .
Let the truncated codeword c be c .
d(C ) = wt(c ) = d 1.
Also, suppose dim(C ) < k.
23

Then, there exists x, y C such that x + c = y, where wt(c) = 1.


But, this is a contradiction that d > 1.
Thus, dim(C ) = k.
Hence, the parameters of C is [n 1, k, d 1].
By mathematical induction, there exists a linear code C with parameter
[n s, k, d s], where s > 0.

Examples

Let C = {0000, 1100, 0011, 1111}.


Then, C = {000, 110, 001, 111} is one possible truncated code of C, where in this
case, we delete the fourth coordinate of every codewords in C.
Also, in this case, the length truncated is, s = 1.

Remarks

We may assume that s > 0, since when s = 0, the linear code C with parameters [n 0, k, d 0] = [n, k, d] is already assumed to exist.
Also, s < d, for if s d, the set C becomes an empty set.
Often, the technique of shortening and truncating is used simultaneously so as to obtain other optimal codes. Please refer to Table 6 on page 46-47 for the list of optimal
codes generated by this construction.

24

3.7 Concatenation of Codes

Definition

The concatenation of two codewords, c1 and c2 , is a new string c1 c2 formed by


writing the elements of c1 and the elements of c2 consecutively. The concatenation
of two codes, C1 and C2 , is a set of codewords of the form c1 c2 such that c1 C1 and
c2 C2 . In particular, the sizes of C1 and C2 are both equal. We define concatenation
as an injective operation. That is, each codewords in C1 and C2 can only be used
once in the concatenation. Then, the new code has a generator matrix G = (G1 G2 ),
where G1 and G2 are the generator matrices of C1 and C2 respectively.

Theorem

Let C1 be an [n1 , k, d1 ]-linear code and C2 be an [n2 , k, d2 ]-linear code. Then, there
exists a linear code C with parameter [n1 + n2 , k, d1 + d2 ].

Proof

Since C1 is an [n1 , k, d1 ]-linear code and C2 is an [n2 , k, d2]-linear code, there exists c1 C1 , c1 6= 0, and c2 C2 , c2 6= 0, such that wt(c1 ) = d(C1 ) = d1 and
wt(c2 ) = d(C2 ) = d2 .
25

If c1 = 0 or c2 = 0, then C will contain no zero codeword, since 0 is the concatenation


of 2 zero codewords.
It is a contradication that C is also linear.
By concatenating c1 and c2 , we have c = c1 c2 C .
By definition, we concatenate the remaining codewords in C1 with the remaining
codewords in C2 .
dim(C ) = dim(C1 ) = dim(C2 ) = k.
d(C ) = wt(c ) = wt(c1 c2 ) = wt(c1 ) + wt(c2 ) = d1 + d2 .
Hence, the parameters of C is [n1 + n2 , k, d1 + d2 ].

Examples

Let C1 = {000, 001, 110, 111} and C2 = {000, 100, 011, 111}.
Then, C = {000000, 001100, 110011, 111111}.

Remarks

Please refer to Table 7 on page 48 for the list of optimal codes generated by this
construction.

26

3.8 Combination of Codes

Definition

The combination of two codes, C1 and C2 , is a set of codewords of the form


c1 c2 such that c1 C1 and c2 C2 . We define combination as a surjective operation,
which is different from concatenation of two codes. That is, every codewords in C1
will concatenate with every codewords in C2 . In particular, the sizes of C1 and C2
need not to be equal.

Theorem

Let C1 be an [n1 , k1 , d1 ]-linear code and C2 be an [n2 , k2 , d2 ]-linear code. Then, there
exists a linear code C with parameter [n1 + n2 , k1 + k2 , min{d1 , d2 }].

Proof

Since C1 is an [n1 , k1, d1 ]-linear code and C2 is an [n2 , k2 , d2 ]-linear code, there exists c1 C1 , c1 6= 0, and c2 C2 , c2 6= 0, such that wt(c1 ) = d(C1 ) = d1 and
wt(c2 ) = d(C2 ) = d2 .
By concatenating c1 with 0 C2 , we have wt(c1 ) = wt(c1 ) + 0 = d1 .
By concatenating c2 with 0 C1 , we have wt(c2 ) = wt(c2 ) + 0 = d2 .
27

By definition, we concatenate the remaining codewords in C1 with the remaining


codewords in C2 .
|C | = |C1 ||C2| = 2k1 2k2 = 2k1 +k2 .
dim(C ) = k1 + k2 .
d(C ) = min{wt(c1 ), wt(c2)} = min{d1 , d2 }.
Hence, the parameters of C is [n1 + n2 , k1 + k2 , min{d1 , d2 }].

Examples

Let C1 = {00, 01, 10, 11} and C2 = {00, 11}.


Then, C = {0000, 0011, 0100, 0111, 1000, 1011, 1100, 1111}.

Remarks

Please refer to Table 8 on page 49 for the list of optimal codes generated by this
construction.

28

3.9 The u(u + v)-Construction

Theorem

Let C1 be an [n, k1 , d]-linear code and C2 be an [n, k2 , 2d]-linear code. Let C1 C2


be the code consisting of all codewords of the form

(u, u + v) = (u1 , u2, ..., un , u1 + v1 , u2 + v2 , ..., un + vn )


with u = (u1 , u2, ..., un ) C1 and v = (v1 , v2 , ..., vn ) C2 . Then, C1 C2 is an
[2n, k1 + k2 , 2d]-linear code.

Proof

Since C1 is an [n, k1 , d]-linear code and C2 is an [n, k2 , 2d]-linear code, there exists c1 C1 , c1 6= 0, and c2 C2 , c2 6= 0, such that wt(c1 ) = d(C1) = d and
wt(c2 ) = d(C2 ) = 2d.
Let C1 C2 be the set of codewords of the form (u, u+v) defined above, where u C1 ,
v C2 and let c C1 C2 .
Case 1 :
If u = 0 and v 6= 0, then
min{wt(c )} = min{wt(0, v)} = min{wt(v)} = wt(c2 ) = 2d.
Case 2 :
29

If v = 0 and u 6= 0, then
min{wt(c )} = min{wt(u, u)} = min{wt(u) + wt(u)} = wt(c1 ) + wt(c1 ) = 2d.
Case 3 :
If u 6= 0 and v 6= 0, then
by the Triangle Inequality, wt(u + v) = wt(u v) wt(u) wt(v), for wt(u) wt(v),
wt(c ) = wt(u, u + v) = wt(u) + (wt(u) wt(v))
min{wt(v)} = wt(c2 ) = 2d.
d(C1 C2 ) = min{wt(c )} = 2d.
Also, since c is of the form (u, u + v), u has 2k1 choices and v has 2k2 choices.
|C1 C2 | = |C1 ||C2| = 2k1 2k2 = 2k1 +k2 .
Therefore, dim(C1 C2 ) = k1 + k2 .
Hence, the parameters of C1 C2 is [2n, k1 + k2 , 2d].

Examples

Let C1 = {00, 10} and C2 = {00, 11}. Then, C1 C2 = {0000, 0011, 1010, 1001}
which is a code of length 4, size 4 and minimum distance 2.

Remarks

Please refer to Table 9 on page 50 for the list of optimal codes generated by this
construction.

30

3.10 The (G G)-Construction

Definition

Let u = u1u2 ...un Zn2 . The complement of u, denoted by uc , is defined as


uc = uc1 uc2 ...ucn
such that uci = 1 + ui for all i n, i Z2 .

Theorem

Let Cbe an
[n, k, d]-linear code and G is the generator matrix of C. We define
G G

G =
, where 0 = (0, 0, 0, ..., 0) and 1 = (1, 1, 1, ..., 1).
0 1
Let C be the code with G as the generator matrix.
Then, C has parameter [2n, k + 1, d], where d = min{n, 2d}

Proof

Since C is an [n, k, d]-linear code, there exists c C, c 6= 0, such that wt(c) =


d(C) = d.
Let C be the set of codewords with a generator matrix G .
Let c = (c1 c2 ) C , where c1 is the string of first n bits and c2 is the string of the
31

next n bits.
min{wt(c )} = min{wt(c1 c2 )}
= min{wt(c1 ) + wt(c2 )} = min{wt(c1 )} + min{wt(c2 )}
= wt(c1 ) + min{wt(c1 ), wt(cc1 )}
= d + min{d, n d} = min{d + d, d + n d} = min{n, 2d}.
d(C ) = min{wt(c )} = min{n, 2d}.
By definition, G contains the basis of C, and thus, the first k rows of G are linearly
independent.
Since the first n bits of the last row of G are all 0, the last row of G is linearly
independent of the first k rows of G .
Thus, the (k + 1) rows of G form the basis of C .
dim(C ) = k + 1.
Hence, the parameters of C is [2n, k + 1, min{n, 2d}].

Examples

Let C = {000, 001, 010, 011}.


Then, C = {000000, 001001, 010010, 011011, 000111, 001110, 010101, 011100}.

Remarks

Please refer to Table 10 on page 51 for the list of optimal codes generated by this
construction.
32

List of Tables

In this section, there are 10 tables included. Table 1 lists all the binary linear [n,k]codes, for n 30, and for all k n, which are optimal. These optimal codes can
be obtained from the Browers table. Table 2 to 10 are the results of the respective
constructions. The codes used for these constructions are obtained from Table 1 itself. After computation by the different constructions, the resulting codes are then
being compared with Table 1. Table 2 to 10 thus listed all the results that are optimal codes. The range of all the binary linear [n,k]-codes are the same, namely, n 30.

Also, in the process of computation, we have omitted those resulting codes that are
trival, since we are more interested in consturcting non-trival codes. And, we have
omitted those resulting codes that have repeated from one particular construction.
For example, in Table 7, the concatenation of [6, 2, 4]-linear code and [6, 2, 4]-linear
code and the concatenation of [9, 2, 6]-linear code and [3, 2, 2]-linear code both produce
[12, 2, 8]-linear code. The latter one, in our case, will be omitted.

33

Table 1 : List of Optimal Binary Linear Codes

[n, k, d]
[1,1,1]
[2,1,2]
[2,2,1]
[3,1,3]
[3,2,2]
[3,3,1]
[4,1,4]
[4,2,2]
[4,3,2]
[4,4,1]
[5,1,5]
[5,2,3]
[5,3,2]
[5,4,2]
[5,5,1]
[6,1,6]
[6,2,4]
[6,3,3]
[6,4,2]
[6,5,2]
[6,6,1]
[7,1,7]
[7,2,4]
[7,3,4]
[7,4,3]
[7,5,2]
[7,6,2]
[7,7,1]
[8,1,8]
[8,2,5]
[8,3,4]
[8,4,4]
[8,5,2]
[8,6,2]
[8,7,2]
[8,8,1]
[9,1,9]
[9,2,6]
[9,3,4]

[n, k, d]
[9,4,4]
[9,5,3]
[9,6,2]
[9,7,2]
[9,8,2]
[9,9,1]
[10,1,10]
[10,2,6]
[10,3,5]
[10,4,4]
[10,5,4]
[10,6,3]
[10,7,2]
[10,8,2]
[10,9,2]
[10,10,1]
[11,1,11]
[11,2,7]
[11,3,6]
[11,4,5]
[11,5,4]
[11,6,4]
[11,7,3]
[11,8,2]
[11,9,2]
[11,10,2]
[11,11,1]
[12,1,12]
[12,2,8]
[12,3,6]
[12,4,6]
[12,5,4]
[12,6,4]
[12,7,4]
[12,8,3]
[12,9,2]
[12,10,2]
[12,11,2]
[12,12,1]

[n, k, d]
[13,1,13]
[13,2,8]
[13,3,7]
[13,4,6]
[13,5,5]
[13,6,4]
[13,7,4]
[13,8,4]
[13,9,3]
[13,10,2]
[13,11,2]
[13,12,2]
[13,13,1]
[14,1,14]
[14,2,9]
[14,3,8]
[14,4,7]
[14,5,6]
[14,6,5]
[14,7,4]
[14,8,4]
[14,9,4]
[14,10,3]
[14,11,2]
[14,12,2]
[14,13,2]
[14,14,1]
[15,1,15]
[15,2,10]
[15,3,8]
[15,4,8]
[15,5,7]
[15,6,6]
[15,7,5]
[15,8,4]
[15,9,4]
[15,10,4]
[15,11,3]
[15,12,2]

[n, k, d]
[15,13,2]
[15,14,2]
[15,15,1]
[16,1,16]
[16,2,10]
[16,3,8]
[16,4,8]
[16,5,8]
[16,6,6]
[16,7,6]
[16,8,5]
[16,9,4]
[16,10,4]
[16,11,4]
[16,12,2]
[16,13,2]
[16,14,2]
[16,15,2]
[16,16,1]
[17,1,17]
[17,2,11]
[17,3,9]
[17,4,8]
[17,5,8]
[17,6,7]
[17,7,6]
[17,8,6]
[17,9,5]
[17,10,4]
[17,11,4]
[17,12,3]
[17,13,2]
[17,14,2]
[17,15,2]
[17,16,2]
[17,17,1]
[18,1,18]
[18,2,12]
[18,3,10]
34

[n, k, d]
[18,4,8]
[18,5,8]
[18,6,8]
[18,7,7]
[18,8,6]
[18,9,6]
[18,10,4]
[18,11,4]
[18,12,4]
[18,13,3]
[18,14,2]
[18,15,2]
[18,16,2]
[18,17,2]
[18,18,1]
[19,1,19]
[19,2,12]
[19,3,10]
[19,4,9]
[19,5,8]
[19,6,8]
[19,7,8]
[19,8,7]
[19,9,6]
[19,10,5]
[19,11,4]
[19,12,4]
[19,13,4]
[19,14,3]
[19,15,2]
[19,16,2]
[19,17,2]
[19,18,2]
[19,19,1]
[20,1,20]
[20,2,13]
[20,3,11]
[20,4,10]
[20,5,9]

[n, k, d]
[20,6,8]
[20,7,8]
[20,8,8]
[20,9,7]
[20,10,6]
[20,11,5]
[20,12,4]
[20,13,4]
[20,14,4]
[20,15,3]
[20,16,2]
[20,17,2]
[20,18,2]
[20,19,2]
[20,20,1]
[21,1,21]
[21,2,14]
[21,3,12]
[21,4,10]
[21,5,10]
[21,6,8]
[21,7,8]
[21,8,8]
[21,9,8]
[21,10,7]
[21,11,6]
[21,12,5]
[21,13,4]
[21,14,4]
[21,15,4]
[21,16,3]
[21,17,2]
[21,18,2]
[21,19,2]
[21,20,2]
[21,21,1]
[22,1,22]
[22,2,14]
[22,3,12]

[n, k, d]
[22,4,11]
[22,5,10]
[22,6,9]
[22,7,8]
[22,8,8]
[22,9,8]
[22,10,8]
[22,11,7]
[22,12,6]
[22,13,5]
[22,14,4]
[22,15,4]
[22,16,4]
[22,17,3]
[22,18,2]
[22,19,2]
[22,20,2]
[22,21,2]
[22,22,1]
[23,1,23]
[23,2,15]
[23,3,12]
[23,4,12]
[23,5,11]
[23,6,10]
[23,7,9]
[23,8,8]
[23,9,8]
[23,10,8]
[23,11,8]
[23,12,7]
[23,13,6]
[23,14,5]
[23,15,4]
[23,16,4]
[23,17,4]
[23,18,3]
[23,19,2]
[23,20,2]

Table 1 : List of Optimal Binary Linear Codes

[n, k, d]
[23,21,2]
[23,22,2]
[23,23,1]
[24,1,24]
[24,2,16]
[24,3,13]
[24,4,12]
[24,5,12]
[24,6,10]
[24,7,10]
[24,8,8]
[24,9,8]
[24,10,8]
[24,11,8]
[24,12,8]
[24,13,6]
[24,14,6]
[24,15,4]
[24,16,4]
[24,17,4]
[24,18,4]
[24,19,3]
[24,20,2]
[24,21,2]
[24,22,2]
[24,23,2]
[24,24,1]
[25,1,25]
[25,2,16]
[25,3,14]
[25,4,12]
[25,5,12]
[25,6,11]
[25,7,10]
[25,8,9]
[25,9,8]
[25,10,8]
[25,11,8]
[25,12,8]

[n, k, d]
[n, k, d]
[n, k, d]
[n, k, d]
[25,13,6] [27,1,27] [28,13,8] [29,24,3]
[25,14,6] [27,2,18] [28,14,8] [29,25,2]
[25,15,5] [27,3,15] [28,15,6] [29,26,2]
[25,16,4] [27,4,14] [28,16,6] [29,27,2]
[25,17,4] [27,5,13] [28,17,6] [29,28,2]
[25,18,4] [27,6,12] [28,18,5] [29,29,1]
[25,19,4] [27,7,12] [28,19,4] [30,1,30]
[25,20,3] [27,8,10] [28,20,4] [30,2,20]
[25,21,2] [27,9,10] [28,21,4] [30,3,16]
[25,22,2] [27,10,9] [28,22,4] [30,4,16]
[25,23,2] [27,11,8] [28,23,3] [30,5,15]
[25,24,2] [27,12,8] [28,24,2] [30,6,14]
[25,25,1] [27,13,8] [28,25,2] [30,7,12]
[26,1,26] [27,14,7] [28,26,2] [30,8,12]
[26,2,17] [27,15,6] [28,27,2] [30,9,12]
[26,3,14] [27,16,6] [28,28,1] [30,10,11]
[26,4,13] [27,17,5] [29,1,29] [30,11,10]
[26,5,12] [27,18,4] [29,2,19] [30,12,9]
[26,6,12] [27,19,4] [29,3,16] [30,13,8]
[26,7,11] [27,20,4] [29,4,15] [30,14,8]
[26,8,10] [27,21,4] [29,5,14] [30,15,8]
[26,9,9] [27,22,3] [29,6,13] [30,16,7]
[26,10,8] [27,23,2] [29,7,12] [30,17,6]
[26,11,8] [27,24,2] [29,8,12] [30,18,6]
[26,12,8] [27,25,2] [29,9,11] [30,19,6]
[26,13,7] [27,26,2] [29,10,10] [30,20,5]
[26,14,6] [27,27,1] [29,11,9] [30,21,4]
[26,15,6] [28,1,28] [29,12,8] [30,22,4]
[26,16,5] [28,2,18] [29,13,8] [30,23,4]
[26,17,4] [28,3,16] [29,14,8] [30,24,4]
[26,18,4] [28,4,14] [29,15,7] [30,25,3]
[26,19,4] [28,5,14] [29,16,6] [30,26,2]
[26,20,4] [28,6,12] [29,17,6] [30,27,2]
[26,21,3] [28,7,12] [29,18,6] [30,28,2]
[26,22,2] [28,8,11] [29,19,5] [30,29,2]
[26,23,2] [28,9,10] [29,20,4] [30,30,1]
[26,24,2] [28,10,10] [29,21,4]
[26,25,2] [28,11,8] [29,22,4]
[26,26,1] [28,12,8] [29,23,4]
35

Table 2 : Results from Lengthening a Code

[n, k, d]
[3,2,2]
[4,3,2]
[5,4,2]
[6,2,4]
[6,5,2]
[7,3,4]
[7,5,2]
[7,6,2]
[8,3,4]
[8,4,4]
[8,6,2]
[8,7,2]
[9,2,6]
[9,4,4]
[9,7,2]
[9,8,2]
[10,5,4]
[10,8,2]
[10,9,2]
[11,3,6]
[11,5,4]
[11,6,4]
[11,9,2]
[11,10,2]
[12,2,8]
[12,4,6]
[12,6,4]
[12,7,4]
[12,10,2]
[12,11,2]
[13,7,4]
[13,8,4]
[13,11,2]
[13,12,2]
[14,3,8]
[14,8,4]
[14,9,4]
[14,12,2]
[14,13,2]

s
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
36

[n + s, k, d]
[4,2,2]
[5,3,2]
[6,4,2]
[7,2,4]
[7,5,2]
[8,3,4]
[8,5,2]
[8,6,2]
[9,3,4]
[9,4,4]
[9,6,2]
[9,7,2]
[10,2,6]
[10,4,4]
[10,7,2]
[10,8,2]
[11,5,4]
[11,8,2]
[11,9,2]
[12,3,6]
[12,5,4]
[12,6,4]
[12,9,2]
[12,10,2]
[13,2,8]
[13,4,6]
[13,6,4]
[13,7,4]
[13,10,2]
[13,11,2]
[14,7,4]
[14,8,4]
[14,11,2]
[14,12,2]
[15,3,8]
[15,8,4]
[15,9,4]
[15,12,2]
[15,13,2]

Table 2 : Results from Lengthening a Code

[n, k, d]
[15,2,10]
[15,3,8]
[15,4,8]
[15,6,6]
[15,9,4]
[15,10,4]
[15,12,2]
[15,13,2]
[15,14,2]
[16,4,8]
[16,5,8]
[16,7,6]
[16,10,4]
[16,11,4]
[16,13,2]
[16,14,2]
[16,15,2]
[17,4,8]
[17,5,8]
[17,8,6]
[17,10,4]
[17,11,4]
[17,14,2]
[17,15,2]
[17,16,2]
[18,2,12]
[18,3,10]
[18,5,8]
[18,6,8]
[18,9,6]
[18,11,4]
[18,12,4,]
[18,15,2]
[18,16,2]
[18,17,2]
[19,6,8]
[19,7,8]
[19,12,4]
[19,13,4]

s [n + s, k, d]
1
[16,2,10]
1
[16,3,8]
1
[16,4,8]
1
[16,6,6]
1
[16,9,4]
1
[16,10,4]
1
[16,12,2]
1
[16,13,2]
1
[16,14,2]
1
[17,4,8]
1
[17,5,8]
1
[17,7,6]
1
[17,10,4]
1
[17,11,4]
1
[17,13,2]
1
[17,14,2]
1
[17,15,2]
1
[18,4,8]
1
[18,5,8]
1
[18,8,6]
1
[18,10,4]
1
[18,11,4]
1
[18,14,2]
1
[18,15,2]
1
[18,16,2]
1
[19,2,12]
1
[19,3,10]
1
[19,5,8]
1
[19,6,8]
1
[19,9,6]
1
[19,11,4]
1
[19,12,4]
1
[19,15,2]
1
[19,16,2]
1
[19,17,2]
1
[20,6,8]
1
[20,7,8]
1
[20,12,4]
1
[20,13,4]
37

Table 2 : Results from Lengthening a Code

[n, k, d]
[19,16,2]
[19,17,2]
[19,18,2]
[20,4,10]
[20,6,8]
[20,7,8]
[20,8,8]
[20,13,4]
[20,14,4]
[20,17,2]
[20,18,2]
[20,19,2]

s
1
1
1
1
1
1
1
1
1
1
1
1

38

[n + s, k, d]
[20,16,2]
[20,17,2]
[20,18,2]
[21,4,10]
[21,6,8]
[21,7,8]
[21,8,8]
[21,13,4]
[21,14,4]
[21,17,2]
[21,18,2]
[21,19,2]

Table 3 : Results from Extending a Code

[n, k, d] [n + 1, k, d + 1]
[2,2,1]
[3,2,2]
[3,3,1]
[4,3,2]
[4,4,1]
[5,4,2]
[5,2,3]
[6,2,4]
[5,5,1]
[6,5,2]
[6,3,3]
[7,3,4]
[6,6,1]
[7,6,2]
[7,4,3]
[8,4,4]
[7,7,1]
[8,7,2]
[8,2,5]
[9,2,6]
[8,8,1]
[9,8,2]
[9,5,3]
[10,5,4]
[9,9,1]
[10,9,2]
[10,3,5]
[11,3,6]
[10,6,3]
[11,6,4]
[10,10,1]
[11,10,2]
[11,2,7]
[12,2,8]
[11,4,5]
[12,4,6]
[11,7,3]
[12,7,4]
[11,11,1]
[12,11,2]
[12,8,3]
[13,8,4]
[12,12,1]
[13,12,2]
[13,3,7]
[14,3,8]
[13,5,5]
[14,5,6]
[13,9,3]
[14,9,4]
[13,13,1]
[14,13,2]
[14,2,9]
[15,2,10]
[14,4,7]
[15,4,8]
[14,6,5]
[15,6,6]
[14,10,3]
[15,10,4]
[14,14,1]
[15,14,2]
[15,5,7]
[16,5,8]
[15,7,5]
[16,7,6]
[15,11,3]
[16,11,4]
[15,15,1]
[16,15,2]
[16,8,5]
[17,8,6]
[16,16,1]
[17,16,2]
[17,2,11]
[18,2,12]
[17,3,9]
[18,3,10]
39

Table 3 : Results from Extending a Code

[n, k, d] [n + 1, k, d + 1]
[17,6,7]
[18,6,8]
[17,9,5]
[18,9,6]
[17,12,3]
[18,12,4]
[17,17,1]
[18,17,2]
[18,7,7]
[19,7,8]
[18,13,3]
[19,13,4]
[18,18,1]
[19,18,2]
[19,4,9]
[20,4,10]
[19,8,7]
[20,8,8]
[19,10,5]
[20,10,6]
[19,14,3]
[20,14,4]
[19,19,1]
[20,19,2]
[20,2,13]
[21,2,14]
[20,3,11]
[21,3,12]
[20,5,9]
[21,5,10]
[20,9,7]
[21,9,8]
[20,11,5]
[21,11,6]
[20,15,3]
[21,15,4]
[20,20,1]
[21,20,2]
[21,10,7]
[22,10,8]
[21,12,5]
[22,12,6]
[21,16,3]
[22,16,4]
[21,21,1]
[22,21,2]
[22,4,11]
[23,4,12]
[22,6,9]
[23,6,10]
[22,11,7]
[23,11,8]
[22,13,5]
[23,13,6]
[22,17,3]
[23,17,4]
[22,22,1]
[23,22,2]
[23,2,15]
[24,2,16]
[23,5,11]
[24,5,12]
[23,7,9]
[24,7,10]
[23,12,7]
[24,12,8]
[23,14,5]
[24,14,6]
[23,18,3]
[24,18,4]
[23,23,1]
[24,23,2]
[24,3,13]
[25,3,14]
[24,19,3]
[25,19,4]
[24,24,1]
[25,24,2]
40

Table 3 : Results from Extending a Code

[n, k, d] [n + 1, k, d + 1]
[25,6,11]
[26,6,12]
[25,8,9]
[26,8,10]
[25,15,5]
[26,15,6]
[25,20,3]
[26,20,4]
[25,25,1]
[26,25,2]
[26,2,17]
[27,2,18]
[26,4,13]
[27,4,14]
[26,7,11]
[27,7,12]
[26,9,9]
[27,9,10]
[26,13,7]
[27,13,8]
[26,16,5]
[27,16,6]
[26,21,3]
[27,21,4]
[26,26,1]
[27,26,2]
[27,3,15]
[28,3,16]
[27,5,13]
[28,5,14]
[27,10,9]
[28,10,10]
[27,14,7]
[28,14,8]
[27,17,5]
[28,17,6]
[27,22,3]
[28,22,4]
[27,27,1]
[28,27,2]
[28,8,11]
[29,8,12]
[28,18,5]
[29,18,6]
[28,23,3]
[29,23,4]
[28,28,1]
[29,28,2]
[29,2,19]
[30,2,20]
[29,4,15]
[30,4,16]
[29,6,13]
[30,6,14]
[29,9,11]
[30,9,12]
[29,11,9]
[30,11,10]
[29,15,7]
[30,15,8]
[29,19,5]
[30,19,6]
[29,24,3]
[30,24,4]
[29,29,1]
[30,29,2]

41

Table 4 : Results from Subcoding

[n, k, d]
[4,3,2]
[5,4,2]
[6,5,2]
[7,3,4]
[7,6,2]
[8,4,4]
[8,6,2]
[8,7,2]
[9,4,4]
[9,7,2]
[9,8,2]
[10,5,4]
[10,8,2]
[10,9,2]
[11,6,4]
[11,9,2]
[11,10,2]
[12,4,6]
[12,6,4]
[12,7,4]
[12,10,2]
[12,11,2]
[13,7,4]
[13,8,4]
[13,11,2]
[13,12,2]
[14,8,4]
[14,9,4]
[14,12,2]
[14,13,2]
[15,4,8]
[15,9,4]
[15,10,4]
[15,13,2]
[15,14,2]
[16,4,8]
[16,5,8]
[16,7,6]
[16,10,4]

s [n, k s, d]
1
[4,2,2]
1
[5,3,2]
1
[6,4,2]
1
[7,2,4]
1
[7,5,2]
1
[8,3,4]
1
[8,5,2]
1
[8,6,2]
1
[9,3,4]
1
[9,6,2]
1
[9,7,2]
1
[10,4,4]
1
[10,7,2]
1
[10,8,2]
1
[11,5,4]
1
[11,8,2]
1
[11,9,2]
1
[12,3,6]
1
[12,5,4]
1
[12,6,4]
1
[12,9,2]
1
[12,10,2]
1
[13,6,4]
1
[13,7,4]
1
[13,10,2]
1
[13,11,2]
1
[14,7,4]
1
[14,8,4]
1
[14,11,2]
1
[14,12,2]
1
[15,3,8]
1
[15,8,4]
1
[15,9,4]
1
[15,12,2]
1
[15,13,2]
1
[16,3,8]
1
[16,4,8]
1
[16,6,6]
1
[16,9,4]
42

Table 4 : Results from Subcoding

[n, k, d]
[16,11,4]
[16,13,2]
[16,14,2]
[16,15,2]
[17,5,8]
[17,8,6]
[17,11,4]
[17,14,2]
[17,15,2]
[17,16,2]
[18,5,8]
[18,6,8]
[18,9,6]
[18,11,4]
[18,12,4]
[18,15,2]

s [n, k s, d]
1
[16,10,4]
1
[16,12,2]
1
[16,13,2]
1
[16,14,2]
1
[17,4,8]
1
[17,7,6]
1
[17,10,4]
1
[17,13,2]
1
[17,14,2]
1
[17,15,2]
1
[18,4,8]
1
[18,5,8]
1
[18,8,6]
1
[18,10,4]
1
[18,11,4]
1
[18,14,2]

43

Table 5 : Results from Shortening a Code

[n, k, d]
[4,3,2]
[5,3,2]
[5,4,2]
[6,3,3]
[6,4,2]
[6,5,2]
[7,3,4]
[7,4,3]
[7,5,2]
[7,6,2]
[8,3,4]
[8,4,4]
[8,6,2]
[8,7,2]
[9,4,4]
[9,6,2]
[9,7,2]
[9,8,2]
[10,4,4]
[10,5,4]
[10,6,3]
[10,7,2]
[10,8,2]
[10,9,2]
[11,3,6]
[11,4,5]
[11,5,4]
[11,6,4]
[11,7,3]
[11,8,2]
[11,9,2]
[11,10,2]
[12,4,6]
[12,6,4]
[12,7,4]
[12,8,3]
[12,9,2]
[12,10,2]
[12,11,2]

s [n s, k s, d]
1
[3,2,2]
1
[4,2,2]
1
[4,3,2]
1
[5,2,3]
1
[5,3,2]
1
[5,4,2]
1
[6,2,4]
1
[6,3,3]
1
[6,4,2]
1
[6,5,2]
1
[7,2,4]
1
[7,3,4]
1
[7,5,2]
1
[7,6,2]
1
[8,3,4]
1
[8,5,2]
1
[8,6,2]
1
[8,7,2]
1
[9,3,4]
1
[9,4,4]
1
[9,5,3]
1
[9,6,2]
1
[9,7,2]
1
[9,8,2]
1
[10,2,6]
1
[10,3,5]
1
[10,4,4]
1
[10,5,4]
1
[10,6,3]
1
[10,7,2]
1
[10,8,2]
1
[10,9,2]
1
[11,3,6]
1
[11,5,4]
1
[11,6,4]
1
[11,7,3]
1
[11,8,2]
1
[11,9,2]
1
[11,10,2]
44

Table 5 : Results from Shortening a Code

[n, k, d]
[13,4,6]
[13,6,4]
[13,7,4]
[13,8,4]
[13,9,3]
[13,10,2]
[13,11,2]
[13,12,2]
[14,3,8]
[14,4,7]
[14,5,6]
[14,6,5]
[14,7,4]
[14,8,4]
[14,9,4]
[14,10,3]
[14,11,2]
[14,12,2]
[14,13,2]
[15,4,8]
[15,5,7]
[15,6,6]
[15,7,5]
[15,8,4]
[15,9,4]
[15,10,4]
[15,11,3]
[15,12,2]
[15,13,2]
[15,14,2]
[16,4,8]
[16,5,8]
[16,7,6]
[16,8,5]
[16,9,4]
[16,10,4]

s [n s, k s, d]
1
[12,3,6]
1
[12,5,4]
1
[12,6,4]
1
[12,7,4]
1
[12,8,3]
1
[12,9,2]
1
[12,10,2]
1
[12,11,2]
1
[13,2,8]
1
[13,3,7]
1
[13,4,6]
1
[13,5,5]
1
[13,6,4]
1
[13,7,4]
1
[13,8,4]
1
[13,9,3]
1
[13,10,2]
1
[13,11,2]
1
[13,12,2]
1
[14,3,8]
1
[14,4,7]
1
[14,5,6]
1
[14,6,5]
1
[14,7,4]
1
[14,8,4]
1
[14,9,4]
1
[14,10,3]
1
[14,11,2]
1
[14,12,2]
1
[14,13,2]
1
[15,3,8]
1
[15,4,8]
1
[15,6,6]
1
[15,7,5]
1
[15,8,4]
1
[15,9,4]

45

Table 6 : Results from Truncating a Code

[n, k, d]
[5,2,3]
[6,2,4]
[6,3,3]
[7,3,4]
[7,4,3]
[8,2,5]
[8,4,4]
[9,2,6]
[9,5,3]
[10,3,5]
[10,5,4]
[10,6,3]
[11,2,7]
[11,3,6]
[11,4,5]
[11,6,4]
[11,7,3]
[12,2,8]
[12,4,6]
[12,7,4]
[12,8,3]
[13,3,7]
[13,5,5]
[13,8,4]
[13,9,3]
[14,2,9]
[14,3,8]
[14,4,7]
[14,5,6]
[14,6,5]
[14,9,4]
[14,10,3]
[15,2,10]
[15,4,8]
[15,5,7]
[15,6,6]
[15,7,5]
[15,10,4]
[15,11,3]

s [n s, k, d s]
1
[4,2,2]
1
[5,2,3]
1
[5,3,2]
1
[6,3,3]
1
[6,4,2]
1
[7,2,4]
1
[7,4,3]
1
[8,2,5]
1
[8,5,2]
1
[9,3,4]
1
[9,5,3]
1
[9,6,2]
1
[10,2,6]
1
[10,3,5]
1
[10,4,4]
1
[10,6,3]
1
[10,7,2]
1
[11,2,7]
1
[11,4,5]
1
[11,7,3]
1
[11,8,2]
1
[12,3,6]
1
[12,5,4]
1
[12,8,3]
1
[12,9,2]
1
[13,2,8]
1
[13,3,7]
1
[13,4,6]
1
[13,5,5]
1
[13,6,4]
1
[13,9,3]
1
[13,10,2]
1
[14,2,9]
1
[14,4,7]
1
[14,5,6]
1
[14,6,5]
1
[14,7,4]
1
[14,10,3]
1
[14,11,2]
46

Table 6 : Results from Truncating a Code

[n, k, d]
[16,5,8]
[16,7,6]
[16,8,5]
[16,11,4]
[17,2,11]
[17,3,9]
[17,6,7]
[17,8,6]
[17,9,5]
[17,12,3]
[18,2,12]
[18,3,10]
[18,6,8]
[18,7,7]
[18,9,6]
[18,12,4]
[18,13,3]
[19,4,9]
[19,7,8]
[19,8,7]
[19,10,5]
[19,13,4]
[19,14,3]
[20,2,13]
[20,3,11]
[20,4,10]
[20,5,9]
[20,8,8]
[20,9,7]
[20,10,6]
[20,11,5]
[20,14,4]
[20,15,3]
[21,2,14]
[21,3,12]

s [n s, k, d s]
1
[15,5,7]
1
[15,7,5]
1
[15,8,4]
1
[15,11,3]
1
[16,2,10]
1
[16,3,8]
1
[16,6,6]
1
[16,8,5]
1
[16,9,4]
1
[16,12,2]
1
[17,2,11]
1
[17,3,9]
1
[17,6,7]
1
[17,7,6]
1
[17,9,5]
1
[17,12,3]
1
[17,13,2]
1
[18,4,8]
1
[18,7,7]
1
[18,8,6]
1
[18,10,4]
1
[18,13,3]
1
[18,14,2]
1
[19,2,12]
1
[19,3,10]
1
[19,4,9]
1
[19,5,8]
1
[19,8,7]
1
[19,9,6]
1
[19,10,5]
1
[19,11,4]
1
[19,14,3]
1
[19,15,2]
1
[20,2,13]
1
[20,3,11]

47

Table 7 : Results from Concatenation of Codes

[n1 , k, d1 ] [n2 , k, d2 ] [n1 + n2 , k, d1 + d2 ]


[2,2,1]
[2,2,1]
[4,2,2]
[3,2,2]
[2,2,1]
[5,2,3]
[3,2,2]
[3,2,2]
[6,2,4]
[4,2,2]
[3,2,2]
[7,2,4]
[4,3,2]
[4,3,2]
[8,3,4]
[5,2,3]
[3,2,2]
[8,2,5]
[5,2,3]
[5,2,3]
[10,2,6]
[5,3,2]
[4,3,2]
[9,3,4]
[5,4,2]
[5,4,2]
[10,4,4]
[6,2,4]
[3,2,2]
[9,2,6]
[6,2,4]
[5,2,3]
[11,2,7]
[6,2,4]
[6,2,4]
[12,2,8]
[6,3,3]
[4,3,2]
[10,3,5]
[6,3,3]
[6,3,3]
[12,3,6]
[6,5,2]
[6,5,2]
[12,5,4]
[7,2,4]
[6,2,4]
[13,2,8]
[7,3,4]
[4,3,2]
[11,3,6]
[7,3,4]
[6,3,3]
[13,3,7]
[7,3,4]
[7,3,4]
[14,3,8]
[8,2,5]
[6,2,4]
[14,2,9]
[8,2,5]
[8,2,5]
[16,2,10]
[8,3,4]
[7,3,4]
[15,3,8]
[8,3,4]
[8,3,4]
[16,3,8]
[8,4,4]
[5,4,2]
[13,4,6]
[8,4,4]
[8,4,4]
[16,4,8]
[9,2,6]
[6,2,4]
[15,2,10]
[9,2,6]
[8,2,5]
[17,2,11]
[9,2,6]
[9,2,6]
[18,2,12]
[9,3,4]
[7,3,4]
[16,3,8]
[9,4,4]
[8,4,4]
[17,4,8]
[9,4,4]
[9,4,4]
[18,4,8]
[10,2,6]
[9,2,6]
[19,2,12]
[10,3,5]
[7,3,4]
[17,3,9]
[11,2,7]
[9,2,6]
[20,2,13]
[11,2,7]
[11,2,7]
[22,2,14]

48

Table 8 : Results from Combination of Codes

[n1 , k1, d1 ]
[2,1,2]
[3,2,2]
[3,2,2]
[4,3,2]
[4,3,2]
[4,3,2]
[5,3,2]
[5,4,2]
[5,4,2]
[5,4,2]
[6,4,2]
[6,5,2]
[6,5,2]
[6,5,2]
[7,5,2]
[7,6,2]
[7,6,2]
[7,6,2]
[8,4,4]
[8,6,2]
[8,6,2]
[8,7,2]
[8,7,2]
[8,7,2]

[n2 , k2 , d2]
[2,1,2]
[2,1,2]
[3,2,2]
[3,2,2]
[4,2,2]
[4,3,2]
[4,3,2]
[4,3,2]
[5,3,2]
[5,4,2]
[5,4,2]
[5,4,2]
[6,4,2]
[6,5,2]
[6,5,2]
[6,5,2]
[7,5,2]
[7,6,2]
[4,1,4]
[7,6,2]
[8,6,2]
[7,6,2]
[8,6,2]
[8,7,2]

[n1 + n2 , k1 + k2 , min{d1 , d2 }]
[4,2,2]
[5,3,2]
[6,4,2]
[7,5,2]
[8,5,2]
[8,6,2]
[9,6,2]
[9,7,2]
[10,7,2]
[10,8,2]
[11,8,2]
[11,9,2]
[12,9,2]
[12,10,2]
[13,10,2]
[13,11,2]
[14,11,2]
[14,12,2]
[12,5,4]
[15,12,2]
[16,12,2]
[15,13,2]
[16,13,2]
[16,14,2]

49

Table 9 : Results from The u(u + v)-Construction

[n, k1 , d] [n, k2 , 2d] [2n, k1 + k2 , 2d]


[2,2,1]
[2,1,2]
[4,3,2]
[3,3,1]
[3,2,2]
[6,5,2]
[4,2,2]
[4,1,4]
[8,3,4]
[4,3,2]
[4,1,4]
[8,4,4]
[4,4,1]
[4,2,2]
[8,6,2]
[4,4,1]
[4,3,2]
[8,7,2]
[5,5,1]
[5,3,2]
[10,8,2]
[5,5,1]
[5,4,2]
[10,9,2]
[6,3,3]
[6,1,6]
[12,4,6]
[6,4,2]
[6,2,4]
[12,6,4]
[6,5,2]
[6,2,4]
[12,7,4]
[6,6,1]
[6,4,2]
[12,10,2]
[6,6,1]
[6,5,2]
[12,11,2]
[7,5,2]
[7,2,4]
[14,7,4]
[7,5,2]
[7,3,4]
[14,8,4]
[7,6,2]
[7,3,4]
[14,9,4]
[7,7,1]
[7,5,2]
[14,12,2]
[7,7,1]
[7,6,2]
[14,13,2]
[8,3,4]
[8,1,8]
[16,4,8]
[8,4,4]
[8,1,8]
[16,5,8]
[8,5,2]
[8,4,4]
[16,9,4]
[8,6,2]
[8,4,4]
[16,10,4]
[8,7,2]
[8,4,4]
[16,11,4]
[8,8,1]
[8,5,2]
[16,13,2]
[8,8,1]
[8,6,2]
[16,14,2]
[8,8,1]
[8,7,2]
[16,15,2]
[9,6,2]
[9,4,4]
[18,10,4]
[9,7,2]
[9,4,4]
[18,11,4]
[9,8,2]
[9,4,4]
[18,12,4]
[9,9,1]
[9,6,2]
[18,15,2]
[9,9,1]
[9,7,2]
[18,16,2]
[9,9,1]
[9,8,2]
[18,17,2]
[10,3,5] [10,1,10]
[20,4,10]
[10,7,2]
[10,5,4]
[20,12,4]
[10,8,2]
[10,5,4]
[20,13,4]
[10,9,2]
[10,5,4]
[20,14,4]
[10,10,1] [10,7,2]
[20,17,2]
[10,10,1] [10,8,2]
[20,18,2]

50

Table 10 : Results from The (G G)-Construction

[n, k, d] d = min{n, 2d}


[2,1,2]
2
[2,2,1]
2
[3,2,2]
3
[3,3,1]
2
[4,2,2]
4
[4,3,2]
4
[4,4,1]
2
[5,2,3]
5
[5,3,2]
4
[5,4,2]
4
[6,2,4]
6
[6,3,3]
6
[6,4,2]
4
[6,5,2]
4
[7,3,4]
7
[7,4,3]
6
[7,6,2]
4
[8,2,5]
8
[8,3,4]
8
[8,4,4]
8
[9,3,4]
8
[9,4,4]
8
[10,3,5]
10
[10,5,4]
8
[11,3,6]
11
[11,4,5]
10
[11,6,4]
8
[12,3,6]
12
[12,4,6]
12
[12,7,4]
8
[13,3,7]
13
[13,4,6]
12
[14,3,8]
14
[14,4,7]
14
[14,5,6]
12
[15,4,8]
15
[15,5,7]
14
[15,6,6]
12

51

[2n, k + 1, d]
[4,2,2]
[4,3,2]
[6,3,3]
[6,4,2]
[8,3,4]
[8,4,4]
[8,5,2]
[10,3,5]
[10,4,4]
[10,5,4]
[12,3,6]
[12,4,6]
[12,5,4]
[12,6,4]
[14,4,7]
[14,5,6]
[14,7,4]
[16,3,8]
[16,4,8]
[16,5,8]
[18,4,8]
[18,5,8]
[20,4,10]
[20,6,8]
[22,4,11]
[22,5,10]
[22,7,8]
[24,4,12]
[24,5,12]
[24,8,8]
[26,4,13]
[26,5,12]
[28,4,14]
[28,5,14]
[28,6,12]
[30,5,15]
[30,6,14]
[30,7,12]

Conclusion

In general, the binary linear codes for small n, in our cases, n 30, and all k,
have its optimality. In all these cases, the upper bound of d is equal to the lower
bound of d. But, for big n, n > 30, the maximum d found in many cases are less
than the upper bound d. It is of great challenge to discover these new optimal codes.
There will be even a greater discovery if we are able to develop an algorithm to find
optimal linear codes.

Also, those binary linear codes that has not reached its optimality, are often those
codes with an odd upper bound. And, often then not, the lower bound, that was
found is often an even number. One of the complexity is also due that we have so far
given many constructions that can generate good codes that have a maximum even d.
Construction such as extending, shortening, truncating and the u(u+v)-Construction
often generate good codes that produces even d, Thus, it is of great interest to construct good codes that may end with a maximum odd d.

52

Bibliography
[1]

E.F. Assmus Jr, J.D. Key, Designs and Their Codes, Cambridge, 1992.

[2]

John Baylis, Error-Correcting Codes : A Mathematical Introduction, Chapman

& Hall, 1998.


[3]

Browers table, Website address http://www.win.tue.nl/aeb/voorlincod.html

[4]

D. G. Hoffman, D. A. Leonard, C. C. Lindner, K. T. Phelps, C. A. Rodger, J.

R. Wall, Coding Theory : The Essentials, Marcel Dekker, Inc., 1991.


[5]

F. J. MacWilliams and N. J. A. Sloane, The Theory of Error-Correcting Codes,

Vol. I, North-Holland, 1977.


[6]

Vera Pless, Introduction to the Theory of Error-Correcting Codes, John Wiley

& Sons, Inc., 1998.


[7]

Steven Roman, Introduction to Coding and Information Theory, Springer, 1997.

53

Potrebbero piacerti anche