Cyclic codes
Let
be a finite field with
elements.
Here's a constructive definition of a cyclic code of length
.
Since polynomial multiplication can be performed
quickly on a computer, this construction illustrated
one reason why cyclic codes have such fast encoding
algorithms.
The ``polynomial notation'' for the code is to
call
the code word
(instead of
).
Example 3.10.1
Let
. This divides
.
Let us compute the four codewords corresponding to
. The first 3 are easy:
Another way to characterize a cyclic code is as follows:
A
-ary cyclic code is a linear
code
with the following
property: if
then
, for all
.
Though the above constructive definition might be easier
to understand, this one is much simpler.
If
is a non-zero code word in
such that
the degree of
is minimum and such that
is monic then
is called a generating polynomial of
.
Remark 3.10.2
We shall not worry too much about showing that these definitions
describe the same code. However, here are some hints for the
reader who wants to prove it for him/herself.
The fact that this polynomial
satisfies the property
described in the above constructive definition requires
Lemma 3.10.4 below. You must also show that
the space
in the Lemma is a principal ideal generated by
.
Example 3.10.3
A simple example is the code
The polynomial
is a generating
polynomial.
It is easy to generate a cyclic code.
Pick a vector
.
Form
cyclically shifted vectors
These form the basis of a cyclic code
.
Let us associate to each code word
the polynomial
This correspondence is ``linear'', i.e.,
the sum of the code words is associated to the
sum of the polynomials,
for all
, and
the scalar multiple of a code word is associated to the
scalar muliple of the polynomial,
for all
and
.
Note that
since for polynomials modulo
we may
identify
with
.
In other words, we have the following result.
Lemma 3.10.4
A cyclic code
may be identified with (via
)
a
-vector space of polynomials
.
In other words, the elements of
are in 1-1 correspondence with the elements of
and this correspondence preserves the
vector space operations of addition and
scalar multiplication.
In fact, the image
of
is an ideal in the ring
. Conversely, any such ideal is the image
of some cyclic code under the map
.
Many codes we've run across already are
equivalent to a cyclic code, including the Hamming
codes and their dual codes.
Example 3.10.5
The binary code
of length
with generator polynomial
has generator matrix
Its elements, sorted according to their weight,
are
This code is equivalent to the Hamming
-code.
Let
be a cyclic code of length
with generator
.
The polynomial
is called the check polynomial of
.
This terminology is motivated by the following
property.
Proposition 3.10.6
Let
be as above. Let
.
if and only if
proof:
By the constructive definition of a cyclic code
above, we know
if and only if
, for some
polynomial
. In this case,
Conversely, if
then there is a polynomial
for which
.
By definition of
, this is equivalent to saying
.
Definition 3.10.9
If
,
, ...,
,
then
is called a Reed-Solomon code of
designed distance
.
Here
is an integer (often
).
Subsections
David Joyner
2007-09-03