Lecture 1 U 2
Lecture 1 U 2
Cyclic codes 1
IMPORTANT NOTE
In order to specify a binary code with 2k codewords of length n one may need
to write down
2k
codewords of length n.
Cyclic codes 2
BASIC DEFINITION AND EXAMPLES
Definition A code C is cyclic if
(i) C is a linear code;
(ii) any cyclic shift of a codeword is also a codeword, i.e. whenever a0,… an -1 C,
then also an -1 a0 … an –2 C.
Example
(i) Code C = {000, 101, 011, 110} is cyclic.
(ii) Hamming code Ham(3, 2): with the generator matrix
1 0 0 0 0 1 1
0 1 0 0 1 0 1
G
0 0 1 0 1 1 0
0 0 0 1 1 1 1
is equivalent to a cyclic code.
(iii) The binary linear code {0000, 1001, 0110, 1111} is not a cyclic, but it is
equivalent to a cyclic code.
(iv) Is Hamming code Ham(2, 3) with the generator matrix
1 0 1 1
0 1 1 2
(a) cyclic?
(b) equivalent to a cyclic code?
Cyclic codes 3
FREQUENCY of CYCLIC CODES
Comparing with linear codes, the cyclic codes are quite scarce. For,
example there are 11 811 linear (7,3) linear binary codes, but only two
of them are cyclic.
Trivial cyclic codes. For any field F and any integer n >= 3 there are
always the following cyclic codes of length n over F:
• No-information code - code consisting of just one all-zero codeword.
For some cases, for example for n = 19 and F = GF(2), the above four
trivial cyclic codes are the only cyclic codes.
Cyclic codes 4
EXAMPLE of a CYCLIC CODE
and it is cyclic because the right shifts have the following impacts
c1 c2, c2 c3, c3 c1 + c3
c1 + c2 c2 + c3, c1 + c3 c1 + c2 + c3, c2 + c3 c1
c1 + c2 + c3 c1 + c2
Cyclic codes 5
POLYNOMIALS over GF(q)
The set of polynomials in Fq[x] of degree less than deg (f(x)), with addition and
multiplication modulo f(x) forms a ring denoted Fq[x]/f(x).
Example Calculate (x + 1)2 in F2[x] / (x2 + x + 1). It holds
(x + 1)2 = x2 + 2x + 1 x2 + 1 x (mod x2 + x + 1).
How many elements has Fq[x] / f(x)?
Result | Fq[x] / f(x) | = q deg (f(x)).
Example Addition and multiplication in F2[x] / (x2 + x + 1)
+ 0 1 x 1+x 0 1 x 1+x
0 0 1 x 1+x 0 0 0 0 0
1 1 0 1+x x 1 0 1 X 1+x
x x 1+x 0 1 x 0 x 1+x 1
1+x 1+x x 1 0 1+x 0 1+x 1 x
Computation modulo xn – 1
Since xn 1 (mod xn -1) we can compute f(x) mod xn -1 as follow:
In f(x) replace xn by 1, xn +1 by x, xn +2 by x2, xn +3 by x3, …
Cyclic codes 8
Algebraic characterization of cyclic codes
Proof
(1) Let C be a cyclic code. C is linear (i) holds.
(ii) Let a(x) C, r(x) = r0 + r1x + … + rn -1xn -1
r(x)a(x) = r0a(x) + r1xa(x) + … + rn -1xn -1a(x)
is in C by (i) because summands are cyclic shifts of a(x).
Cyclic codes 9
CONSTRUCTION of CYCLIC CODES
Theorem For any f(x) Rn, the setf(x) is a cyclic code (generated by f).
Example C = 1 + x2 , n = 3, q = 2.
We have to compute r(x)(1 + x2) for all r(x) R3.
R3 = {0, 1, x, 1 + x, x2, 1 + x2, x + x2, 1 + x + x2}.
We show that all cyclic codes C have the form C = f(x) for some f(x) Rn.
Theorem Let C be a non-zero cyclic code in Rn. Then
• there exists unique monic polynomial g(x) of the smallest degree such that
• C = g(x)
• g(x) is a factor of xn -1.
Proof
(i) Suppose g(x) and h(x) are two monic polynomials in C of the smallest degree.
Then the polynomial g(x) - h(x) C and it has a smaller degree and a multiplication
by a scalar makes out of it a monic polynomial. If g(x) h(x) we get a contradiction.
(ii) Suppose a(x) C.
Then
a(x) = q(x)g(x) + r(x) (deg r(x) < deg g(x))
and
r(x) = a(x) - q(x)g(x) C.
By minimality
r(x) = 0
and therefore a(x) g(x).
Cyclic codes 11
Characterization theorem for cyclic codes
(iii) Clearly,
xn –1 = q(x)g(x) + r(x) with deg r(x) < deg g(x)
and therefore r(x) -q(x)g(x) (mod xn -1) and
r(x) C r(x) = 0 g(x) is a factor of xn -1.
GENERATOR POLYNOMIALS
Definition If for a cyclic code C it holds
C = g(x),
then g is called the generator polynomial for the code C.
Cyclic codes 12
HOW TO DESIGN CYCLIC CODES?
The last claim of the previous theorem gives a recipe to get all cyclic codes of
given length n.
Indeed, all we need to do is to find all factors of
xn -1.
Problem: Find all binary cyclic codes of length 3.
Solution: Since
x3 – 1 = (x + 1)(x2 + x + 1)
both factors are irreducible in GF(2)
Cyclic codes 13
Design of generator matrices for cyclic codes
Theorem Suppose C is a cyclic code of codewords of length n with the generator polynomial
g(x) = g0 + g1x + … + grxr.
Then dim (C) = n - r and a generator matrix G1 for C is
g0 g1 g2 ... gr 0 0 0 ... 0
0 g0 g1 g2 ... gr 0 0 ... 0
G1 0 0 g0 g1 g2 ... gr 0 ... 0
.. .. ..
0 0 ... 0 0 ... 0 g 0 ... g r
Proof
(i) All rows of G1 are linearly independent.
(ii) The n - r rows of G represent codewords
g(x), xg(x), x2g(x),…, xn -r -1g(x)
(*)
(iii) It remains to show that every codeword in C can be expressed as a linear combination of
vectors from (*).
Inded, if a(x) C, then
a(x) = q(x)g(x).
Since deg a(x) < n we have deg q(x) < n - r.
Hence
q(x)g(x) = (q0 + q1x + … + qn -r -1xn -r -1)g(x)
Cyclic codes = q0g(x) + q1xg(x) + … + qn -r -1xn -r -1g(x). 14
EXAMPLE
The task is to determine all ternary codes of length 4 and generators for them.
Factorization of x4 - 1 over GF(3) has the form
x4 - 1 = (x - 1)(x3 + x2 + x + 1) = (x - 1)(x + 1)(x2 + 1)
Therefore there are 23 = 8 divisors of x4 - 1 and each generates a cyclic code.
Generator polynomial Generator matrix
1 I4
1 1 0 0
0 1 1 0
x
0 0 1 1
1 1 0 0
0 1 1 0
x+1
0 0 1 1
x2 + 1 1 0 1 0
0 1 0 1
(x - 1)(x + 1) = x2 - 1 1 0 1 0
0 1 0 1
(x - 1)(x2 + 1) = x3 - x2 + x - 1 [ -1 1 -1 1 ]
(x + 1)(x2 + 1) [1111]
x4 - 1 = 0 [0000]
Cyclic codes 15