Вы находитесь на странице: 1из 105

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An introduction to cyclic codes


Emanuele Betti1 , Emmanuela Orsini2
1 bettie@posso.dm.unipi.it
Department of Mathematics, University of Florence, Italy
1 orsini@posso.dm.unipi.it
Department of Mathematics, University of Milan, Italy

May 1, 2006

An overview on error correcting codes

1
2

Linear codes

Cyclic codes

An overview on error correcting codes


Linear codes
Definitions
An example
Hamming distance
Parity-check and decoding
Cyclic codes
Definitions
Algebraic structure
Roots of unity and defining set
An example
Parity-check matrix
BCH codes
Encoding and decoding with cyclic codes
Polynomial encoding
Decoding
References

Encoding and decoding with cyclic codes

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

A communication schema

INFORMATION
SOURCE

DESTINATION

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

A communication schema

INFORMATION
SOURCE

TRASMITTER

DESTINATION

A
MESSAGE

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

A communication schema

INFORMATION
SOURCE

A
SIGNAL
MESSAGE

DESTINATION

RECEIVER

TRASMITTER

RECEIVED
SIGNAL
MESSAGE

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

A communication schema

INFORMATION
SOURCE

DESTINATION

RECEIVER

TRASMITTER

A
SIGNAL

RECEIVED
SIGNAL
MESSAGE

MESSAGE

NOISE
SOURCE

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

A communication schema

INFORMATION
SOURCE

DESTINATION

RECEIVER

TRASMITTER

CODING
PROCEDURE

SIGNAL

RECEIVED
SIGNAL

DECODING
PROCEDURE

CODE

MESSAGE

MESSAGE

NOISE
SOURCE

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Definitions

A Definition for Linear Codes


Let q N such that q = p k , p prime. We denote with Fq
the field with q elements.
(Fq )n forms an ndimensional vector space over Fq .
Definition
A linear code C is a k-dimensional vector sub-space of (Fq )n ,
(0 k n). The elements of a code are called words. n is called
the length and k is called the dimension .
C = {v (Fq )n | hv , ci = 0 c C }
Is called the dual code of C .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Definitions

A Definition for Linear Codes


Let q N such that q = p k , p prime. We denote with Fq
the field with q elements.
(Fq )n forms an ndimensional vector space over Fq .
Definition
A linear code C is a k-dimensional vector sub-space of (Fq )n ,
(0 k n). The elements of a code are called words. n is called
the length and k is called the dimension .
C = {v (Fq )n | hv , ci = 0 c C }
Is called the dual code of C .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Definitions

A Definition for Linear Codes


Let q N such that q = p k , p prime. We denote with Fq
the field with q elements.
(Fq )n forms an ndimensional vector space over Fq .
Definition
A linear code C is a k-dimensional vector sub-space of (Fq )n ,
(0 k n). The elements of a code are called words. n is called
the length and k is called the dimension .
C = {v (Fq )n | hv , ci = 0 c C }
Is called the dual code of C .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Definitions

A Definition for Linear Codes


Let q N such that q = p k , p prime. We denote with Fq
the field with q elements.
(Fq )n forms an ndimensional vector space over Fq .
Definition
A linear code C is a k-dimensional vector sub-space of (Fq )n ,
(0 k n). The elements of a code are called words. n is called
the length and k is called the dimension .
C = {v (Fq )n | hv , ci = 0 c C }
Is called the dual code of C .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Definitions

The generator-matrix of a linear code


Let C be a linear code over Fq . Since C is a kdimensional vector
space, there exist k vectors c1 , . . . , ck in (Fq )n that generate C .
Let G be the k n matrix in (Fq )n :

c1
c2

G = . .
..
ck
then G is a generator matrix for C .
v (Fq )k vG C .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
We first associate a vector in (F2 )2 at each
color:
(0, 0) = v1
(0, 1) = v2
(1, 0) = v3
(1, 1) = v4
Let C be the linear code of length n = 6 and
dimension k = 2 generated by:


0 0 0 1 1 1
G=
1 1 1 0 0 0

C = {(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1), (0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)}


Trasmit vi G C (F2 )6 instead of vi (F2 )2 .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
We first associate a vector in (F2 )2 at each
color:
(0, 0) = v1
(0, 1) = v2
(1, 0) = v3
(1, 1) = v4
Let C be the linear code of length n = 6 and
dimension k = 2 generated by:


0 0 0 1 1 1
G=
1 1 1 0 0 0

C = {(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1), (0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)}


Trasmit vi G C (F2 )6 instead of vi (F2 )2 .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
We first associate a vector in (F2 )2 at each
color:
(0, 0) = v1
(0, 1) = v2
(1, 0) = v3
(1, 1) = v4
Let C be the linear code of length n = 6 and
dimension k = 2 generated by:


0 0 0 1 1 1
G=
1 1 1 0 0 0

C = {(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1), (0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)}


Trasmit vi G C (F2 )6 instead of vi (F2 )2 .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
We first associate a vector in (F2 )2 at each
color:
(0, 0) = v1
(0, 1) = v2
(1, 0) = v3
(1, 1) = v4
Let C be the linear code of length n = 6 and
dimension k = 2 generated by:


0 0 0 1 1 1
G=
1 1 1 0 0 0

C = {(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1), (0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)}


Trasmit vi G C (F2 )6 instead of vi (F2 )2 .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
We first associate a vector in (F2 )2 at each
color:
(0, 0) = v1
(0, 1) = v2
(1, 0) = v3
(1, 1) = v4
Let C be the linear code of length n = 6 and
dimension k = 2 generated by:


0 0 0 1 1 1
G=
1 1 1 0 0 0

C = {(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1), (0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)}


Trasmit vi G C (F2 )6 instead of vi (F2 )2 .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

A noised communication

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 1, 1) C


G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 1)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 0)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 0, 0, 0) C


Error Correction Capability

Error Detection Capability

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

A noised communication

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 1, 1) C


G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 1)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 0)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 0, 0, 0) C


Error Correction Capability

Error Detection Capability

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

A noised communication

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 1, 1) C


G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 1)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 0)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 0, 0, 0) C


Error Correction Capability

Error Detection Capability

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

A noised communication

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 1, 1) C


G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 1)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 0)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 0, 0, 0) C


Error Correction Capability

Error Detection Capability

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

A noised communication

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 1, 1) C


G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 1)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 0)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 0, 0, 0) C


Error Correction Capability

Error Detection Capability

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

A noised communication

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 1, 1) C


G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 1)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 1, 0, 0)


/C
G

(0, 1) (0, 0, 0, 1, 1, 1) (0, 0, 0, 0, 0, 0) C


Error Correction Capability

Error Detection Capability

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

The Hamming distance


Definition (Hamming Distance)
dH : (Fq )n (Fq )n N
dH (u, v ) = |{i s.t. ui 6= vi , 1 i n}|,

u = (ui ), v = (vi ).

The weight of u is w(u) = dH (u, 0)


Definition (Hamming Distance of a Code)
dH (C ) = min{dH (ci , cj ) s.t. ci , cj C , ci 6= cj }.
Theorem
If C is linear: dH (C ) = min{w(c) s.t. c C , c 6= 0} .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

The Hamming distance


Definition (Hamming Distance)
dH : (Fq )n (Fq )n N
dH (u, v ) = |{i s.t. ui 6= vi , 1 i n}|,

u = (ui ), v = (vi ).

The weight of u is w(u) = dH (u, 0)


Definition (Hamming Distance of a Code)
dH (C ) = min{dH (ci , cj ) s.t. ci , cj C , ci 6= cj }.
Theorem
If C is linear: dH (C ) = min{w(c) s.t. c C , c 6= 0} .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

The Hamming distance


Definition (Hamming Distance)
dH : (Fq )n (Fq )n N
dH (u, v ) = |{i s.t. ui 6= vi , 1 i n}|,

u = (ui ), v = (vi ).

The weight of u is w(u) = dH (u, 0)


Definition (Hamming Distance of a Code)
dH (C ) = min{dH (ci , cj ) s.t. ci , cj C , ci 6= cj }.
Theorem
If C is linear: dH (C ) = min{w(c) s.t. c C , c 6= 0} .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

The Hamming distance


Definition (Hamming Distance)
dH : (Fq )n (Fq )n N
dH (u, v ) = |{i s.t. ui 6= vi , 1 i n}|,

u = (ui ), v = (vi ).

The weight of u is w(u) = dH (u, 0)


Definition (Hamming Distance of a Code)
dH (C ) = min{dH (ci , cj ) s.t. ci , cj C , ci 6= cj }.
Theorem
If C is linear: dH (C ) = min{w(c) s.t. c C , c 6= 0} .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

The Hamming distance


Definition (Hamming Distance)
dH : (Fq )n (Fq )n N
dH (u, v ) = |{i s.t. ui 6= vi , 1 i n}|,

u = (ui ), v = (vi ).

The weight of u is w(u) = dH (u, 0)


Definition (Hamming Distance of a Code)
dH (C ) = min{dH (ci , cj ) s.t. ci , cj C , ci 6= cj }.
Theorem
If C is linear: dH (C ) = min{w(c) s.t. c C , c 6= 0} .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

Theorem
Let C be a Fq [n, k, d] code.
C can correct t = b d1
2 c errors.
C can detect e = d 1 errors.
Singleton bound: d n k + 1.

Example
c


C=

(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1),


(0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)

has distance 3, then t = 1 and e = 2.


c

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

Theorem
Let C be a Fq [n, k, d] code.
C can correct t = b d1
2 c errors.
C can detect e = d 1 errors.
Singleton bound: d n k + 1.

Example
c


C=

(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1),


(0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)

has distance 3, then t = 1 and e = 2.


c

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

Theorem
Let C be a Fq [n, k, d] code.
C can correct t = b d1
2 c errors.
C can detect e = d 1 errors.
Singleton bound: d n k + 1.

Example
c


C=

(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1),


(0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)

has distance 3, then t = 1 and e = 2.


c

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

Theorem
Let C be a Fq [n, k, d] code.
C can correct t = b d1
2 c errors.
C can detect e = d 1 errors.
Singleton bound: d n k + 1.

Example
c


C=

(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1),


(0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)

has distance 3, then t = 1 and e = 2.


c

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

Theorem
Let C be a Fq [n, k, d] code.
C can correct t = b d1
2 c errors.
C can detect e = d 1 errors.
Singleton bound: d n k + 1.

Example
c


C=

(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1),


(0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)

has distance 3, then t = 1 and e = 2.


c

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Hamming distance

Theorem
Let C be a Fq [n, k, d] code.
C can correct t = b d1
2 c errors.
C can detect e = d 1 errors.
Singleton bound: d n k + 1.

Example
c


C=

(0, 0, 0, 0, 0, 0), (1, 1, 1, 1, 1, 1),


(0, 0, 0, 1, 1, 1), (1, 1, 1, 0, 0, 0)

has distance 3, then t = 1 and e = 2.


c

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

Paritycheck matrix and syndromes


It is easy to see that C may be expressed as the null space of a
matrix H, which is called a paritycheck matrix for C .
x (Fq )n , Hx = 0 x C
Observe that H is an (n k) n matrix, its coefficients may
lie in an extension field of Fq and it is full rank over Fq .
Obviously, H is not unique
H T is a generator matrix for C
Definition
The elements in (Fq )nk , s = Hx are called syndromes. We say
that s is the syndrome corresponding to x.

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

Paritycheck matrix and syndromes


It is easy to see that C may be expressed as the null space of a
matrix H, which is called a paritycheck matrix for C .
x (Fq )n , Hx = 0 x C
Observe that H is an (n k) n matrix, its coefficients may
lie in an extension field of Fq and it is full rank over Fq .
Obviously, H is not unique
H T is a generator matrix for C
Definition
The elements in (Fq )nk , s = Hx are called syndromes. We say
that s is the syndrome corresponding to x.

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

Paritycheck matrix and syndromes


It is easy to see that C may be expressed as the null space of a
matrix H, which is called a paritycheck matrix for C .
x (Fq )n , Hx = 0 x C
Observe that H is an (n k) n matrix, its coefficients may
lie in an extension field of Fq and it is full rank over Fq .
Obviously, H is not unique
H T is a generator matrix for C
Definition
The elements in (Fq )nk , s = Hx are called syndromes. We say
that s is the syndrome corresponding to x.

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

Paritycheck matrix and syndromes


It is easy to see that C may be expressed as the null space of a
matrix H, which is called a paritycheck matrix for C .
x (Fq )n , Hx = 0 x C
Observe that H is an (n k) n matrix, its coefficients may
lie in an extension field of Fq and it is full rank over Fq .
Obviously, H is not unique
H T is a generator matrix for C
Definition
The elements in (Fq )nk , s = Hx are called syndromes. We say
that s is the syndrome corresponding to x.

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

A decoding procedure

Let C be as in the previous example.


A parity check matrix for C is:
c

c0

0
0
H=
1
1

0
0
0
1

0
0
1
0

1
0
0
0

0
1
0
0

1
1

0
0

(000111) (000101) (0100) (000010) c = c 0 e


Remark
Let c be a word of a linear code and let x = c + e be the received
vector after the trasmission. Then:
s = Hc 0 = H(c + e) = Hc + He = He
Theorem (Correctable syndrome)
If no more then t errors are occurred, there exists only one error e
corresponding to a syndrome s (i.e. s = He).

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

A decoding procedure

Let C be as in the previous example.


A parity check matrix for C is:
c

c0

0
0
H=
1
1

0
0
0
1

0
0
1
0

1
0
0
0

0
1
0
0

1
1

0
0

(000111) (000101) (0100) (000010) c = c 0 e


Remark
Let c be a word of a linear code and let x = c + e be the received
vector after the trasmission. Then:
s = Hc 0 = H(c + e) = Hc + He = He
Theorem (Correctable syndrome)
If no more then t errors are occurred, there exists only one error e
corresponding to a syndrome s (i.e. s = He).

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

A decoding procedure

Let C be as in the previous example.


A parity check matrix for C is:
c

c0

0
0
H=
1
1

0
0
0
1

0
0
1
0

1
0
0
0

0
1
0
0

1
1

0
0

(000111) (000101) (0100) (000010) c = c 0 e


Remark
Let c be a word of a linear code and let x = c + e be the received
vector after the trasmission. Then:
s = Hc 0 = H(c + e) = Hc + He = He
Theorem (Correctable syndrome)
If no more then t errors are occurred, there exists only one error e
corresponding to a syndrome s (i.e. s = He).

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

A decoding procedure

Let C be as in the previous example.


A parity check matrix for C is:
c

c0

0
0
H=
1
1

0
0
0
1

0
0
1
0

1
0
0
0

0
1
0
0

1
1

0
0

(000111) (000101) (0100) (000010) c = c 0 e


Remark
Let c be a word of a linear code and let x = c + e be the received
vector after the trasmission. Then:
s = Hc 0 = H(c + e) = Hc + He = He
Theorem (Correctable syndrome)
If no more then t errors are occurred, there exists only one error e
corresponding to a syndrome s (i.e. s = He).

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

A decoding procedure

Let C be as in the previous example.


A parity check matrix for C is:
c

c0

0
0
H=
1
1

0
0
0
1

0
0
1
0

1
0
0
0

0
1
0
0

1
1

0
0

(000111) (000101) (0100) (000010) c = c 0 e


Remark
Let c be a word of a linear code and let x = c + e be the received
vector after the trasmission. Then:
s = Hc 0 = H(c + e) = Hc + He = He
Theorem (Correctable syndrome)
If no more then t errors are occurred, there exists only one error e
corresponding to a syndrome s (i.e. s = He).

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

A decoding procedure

Let C be as in the previous example.


A parity check matrix for C is:
c

c0

0
0
H=
1
1

0
0
0
1

0
0
1
0

1
0
0
0

0
1
0
0

1
1

0
0

(000111) (000101) (0100) (000010) c = c 0 e


Remark
Let c be a word of a linear code and let x = c + e be the received
vector after the trasmission. Then:
s = Hc 0 = H(c + e) = Hc + He = He
Theorem (Correctable syndrome)
If no more then t errors are occurred, there exists only one error e
corresponding to a syndrome s (i.e. s = He).

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

A decoding procedure

Let C be as in the previous example.


A parity check matrix for C is:
c

c0

0
0
H=
1
1

0
0
0
1

0
0
1
0

1
0
0
0

0
1
0
0

1
1

0
0

(000111) (000101) (0100) (000010) c = c 0 e


Remark
Let c be a word of a linear code and let x = c + e be the received
vector after the trasmission. Then:
s = Hc 0 = H(c + e) = Hc + He = He
Theorem (Correctable syndrome)
If no more then t errors are occurred, there exists only one error e
corresponding to a syndrome s (i.e. s = He).

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

A decoding procedure

Let C be as in the previous example.


A parity check matrix for C is:
c

c0

0
0
H=
1
1

0
0
0
1

0
0
1
0

1
0
0
0

0
1
0
0

1
1

0
0

(000111) (000101) (0100) (000010) c = c 0 e


Remark
Let c be a word of a linear code and let x = c + e be the received
vector after the trasmission. Then:
s = Hc 0 = H(c + e) = Hc + He = He
Theorem (Correctable syndrome)
If no more then t errors are occurred, there exists only one error e
corresponding to a syndrome s (i.e. s = He).

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check and decoding

A decoding procedure

Let C be as in the previous example.


A parity check matrix for C is:
c

c0

0
0
H=
1
1

0
0
0
1

0
0
1
0

1
0
0
0

0
1
0
0

1
1

0
0

(000111) (000101) (0100) (000010) c = c 0 e


Remark
Let c be a word of a linear code and let x = c + e be the received
vector after the trasmission. Then:
s = Hc 0 = H(c + e) = Hc + He = He
Theorem (Correctable syndrome)
If no more then t errors are occurred, there exists only one error e
corresponding to a syndrome s (i.e. s = He).

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Definitions

A first definition for cyclic codes

Definition
A Fq [n, k, d] code (linear) C is called cyclic if any cyclic shift of a
codeword is a codeword, i.e.
(c0 , . . . , cn1 ) C (cn1 , c0 , . . . , cn2 ) C
Example
1

C = {(0000), (1111)} is cyclic

C = {(000), (110), (101), (011)} is cyclic

C = {(000), (100), (011), (111)} is not cyclic

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Definitions

A first definition for cyclic codes

Definition
A Fq [n, k, d] code (linear) C is called cyclic if any cyclic shift of a
codeword is a codeword, i.e.
(c0 , . . . , cn1 ) C (cn1 , c0 , . . . , cn2 ) C
Example
1

C = {(0000), (1111)} is cyclic

C = {(000), (110), (101), (011)} is cyclic

C = {(000), (100), (011), (111)} is not cyclic

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Definitions

A first definition for cyclic codes

Definition
A Fq [n, k, d] code (linear) C is called cyclic if any cyclic shift of a
codeword is a codeword, i.e.
(c0 , . . . , cn1 ) C (cn1 , c0 , . . . , cn2 ) C
Example
1

C = {(0000), (1111)} is cyclic

C = {(000), (110), (101), (011)} is cyclic

C = {(000), (100), (011), (111)} is not cyclic

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Definitions

A first definition for cyclic codes

Definition
A Fq [n, k, d] code (linear) C is called cyclic if any cyclic shift of a
codeword is a codeword, i.e.
(c0 , . . . , cn1 ) C (cn1 , c0 , . . . , cn2 ) C
Example
1

C = {(0000), (1111)} is cyclic

C = {(000), (110), (101), (011)} is cyclic

C = {(000), (100), (011), (111)} is not cyclic

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Definitions

A first definition for cyclic codes

Definition
A Fq [n, k, d] code (linear) C is called cyclic if any cyclic shift of a
codeword is a codeword, i.e.
(c0 , . . . , cn1 ) C (cn1 , c0 , . . . , cn2 ) C
Example
1

C = {(0000), (1111)} is cyclic

C = {(000), (110), (101), (011)} is cyclic

C = {(000), (100), (011), (111)} is not cyclic

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Cyclic codes: an algebraic correspondence

Let R be the ring


R=

Fq [x]
xn 1

There is a bijective correspondence between the vectors of (Fq )n


and residue class of polynomials in R.
v = (v0 , . . . , vn1 ) v0 + v1 x + + vn1 x n1

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Cyclic codes: an algebraic correspondence

Let C be a Fq [n, k, d] code

C is a cyclic code iff C is an ideal of R


Multiplying by x modulo x n 1 corresponds to cyclic shift:
(c0 , c1 , . . . , cn1 ) (cn1 , c0 , . . . , cn2 )
xc(c0 + c1 x + + cn1 x n1 = cn1 + c0 x + + cn2 x n2

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Cyclic codes: an algebraic correspondence

Let C be a Fq [n, k, d] code

C is a cyclic code iff C is an ideal of R


Multiplying by x modulo x n 1 corresponds to cyclic shift:
(c0 , c1 , . . . , cn1 ) (cn1 , c0 , . . . , cn2 )
xc(c0 + c1 x + + cn1 x n1 = cn1 + c0 x + + cn2 x n2

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Properties of the ring R


R is a principal ideals ring.
An ideal C of R is generated by a monic polynomial (residue class)
g that divides x n 1.
C = hg i
If C has length n and dimension k, the degree of
A generator matrix for C is given by:


g
g0 g1 . . .
gnk
0
xg 0 g0 . . . gnk1 ank


G = .. = .
..
..
. ..
.
.
xkg

0
g=

...
nk
X
i=0

gi x i ,

g0
gnk = 1.

g1

g is n k
...
0
..
.

0
...
..
.

...

gnk

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Properties of the ring R


R is a principal ideals ring.
An ideal C of R is generated by a monic polynomial (residue class)
g that divides x n 1.
C = hg i
If C has length n and dimension k, the degree of
A generator matrix for C is given by:


g
g0 g1 . . .
gnk
0
xg 0 g0 . . . gnk1 ank


G = .. = .
..
..
. ..
.
.
xkg

0
g=

...
nk
X
i=0

gi x i ,

g0
gnk = 1.

g1

g is n k
...
0
..
.

0
...
..
.

...

gnk

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Properties of the ring R


R is a principal ideals ring.
An ideal C of R is generated by a monic polynomial (residue class)
g that divides x n 1.
C = hg i
If C has length n and dimension k, the degree of
A generator matrix for C is given by:


g
g0 g1 . . .
gnk
0
xg 0 g0 . . . gnk1 ank


G = .. = .
..
..
. ..
.
.
xkg

0
g=

...
nk
X
i=0

gi x i ,

g0
gnk = 1.

g1

g is n k
...
0
..
.

0
...
..
.

...

gnk

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Properties of the ring R


R is a principal ideals ring.
An ideal C of R is generated by a monic polynomial (residue class)
g that divides x n 1.
C = hg i
If C has length n and dimension k, the degree of g is n k
A generator matrix for C is given by:

g
g0 g1 . . .
gnk
0
...
0
xg 0 g0 . . . gnk1 ank 0
...

G = .. = .
.
..
.
.
.
.
.
.
. .
.
.
.
.
k
0 ... 0
g0
g1 . . . gnk
x g
g=

nk
X
i=0

gi x i ,

gnk = 1.

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Properties of the ring R


R is a principal ideals ring.
An ideal C of R is generated by a monic polynomial (residue class)
g that divides x n 1.
C = hg i
If C has length n and dimension k, the degree of g is n k
A generator matrix for C is given by:

g
g0 g1 . . .
gnk
0
...
0
xg 0 g0 . . . gnk1 ank 0
...

G = .. = .
.
..
.
.
.
.
.
.
. .
.
.
.
.
k
0 ... 0
g0
g1 . . . gnk
x g
g=

nk
X
i=0

gi x i ,

gnk = 1.

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Parity check polynomial


h = h0 + h1 + + hk x k
is called the parity check
polynomial of C .

Let C generated by g , deg(g ) = n k.


g divides x n 1 x n 1 = hg
h Fq [x] unique, deg(h) = k.
Theorem
Let H (Fq )(nk)n ,

H=

0
0
..
.

0
0

...
...

0
hk

hk
...

...
h1

h1
h0

h0
0
..
.

hk

...

h1

h0

...

H is a parity check matrix for C .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Parity check polynomial


h = h0 + h1 + + hk x k
is called the parity check
polynomial of C .

Let C generated by g , deg(g ) = n k.


g divides x n 1 x n 1 = hg
h Fq [x] unique, deg(h) = k.
Theorem
Let H (Fq )(nk)n ,

H=

0
0
..
.

0
0

...
...

0
hk

hk
...

...
h1

h1
h0

h0
0
..
.

hk

...

h1

h0

...

H is a parity check matrix for C .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Parity check polynomial


h = h0 + h1 + + hk x k
is called the parity check
polynomial of C .

Let C generated by g , deg(g ) = n k.


g divides x n 1 x n 1 = hg
h Fq [x] unique, deg(h) = k.
Theorem
Let H (Fq )(nk)n ,

H=

0
0
..
.

0
0

...
...

0
hk

hk
...

...
h1

h1
h0

h0
0
..
.

hk

...

h1

h0

...

H is a parity check matrix for C .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Algebraic structure

Parity check polynomial


h = h0 + h1 + + hk x k
is called the parity check
polynomial of C .

Let C generated by g , deg(g ) = n k.


g divides x n 1 x n 1 = hg
h Fq [x] unique, deg(h) = k.
Theorem
Let H (Fq )(nk)n ,

H=

0
0
..
.

0
0

...
...

0
hk

hk
...

...
h1

h1
h0

h0
0
..
.

hk

...

h1

h0

...

H is a parity check matrix for C .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Roots of unity and defining set

Primitive root of unity


Cyclic codes of length n over Fq are gen. by divisors of x n 1. Let
xn 1 =

r
Y

fj ,

fj irreducible over Fq

j=1

Cyclic codes of length n over Fq subsets of {fj }rj=1


If GCD(n, q) = 1 , there exists Fq s.t.:
n

x 1=

n1
Y

x i .

i=0

is a nth primitive root of unity over Fq .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Roots of unity and defining set

Primitive root of unity


Cyclic codes of length n over Fq are gen. by divisors of x n 1. Let
xn 1 =

r
Y

fj ,

fj irreducible over Fq

j=1

Cyclic codes of length n over Fq subsets of {fj }rj=1


If GCD(n, q) = 1 , there exists Fq s.t.:
n

x 1=

n1
Y

x i .

i=0

is a nth primitive root of unity over Fq .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Roots of unity and defining set

Primitive root of unity


Cyclic codes of length n over Fq are gen. by divisors of x n 1. Let
xn 1 =

r
Y

fj ,

fj irreducible over Fq

j=1

Cyclic codes of length n over Fq subsets of {fj }rj=1


If GCD(n, q) = 1 , there exists Fq s.t.:
n

x 1=

n1
Y

x i .

i=0

is a nth primitive root of unity over Fq .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Roots of unity and defining set

Primitive root of unity


Cyclic codes of length n over Fq are gen. by divisors of x n 1. Let
xn 1 =

r
Y

fj ,

fj irreducible over Fq

j=1

Cyclic codes of length n over Fq subsets of {fj }rj=1


If GCD(n, q) = 1 , there exists Fq s.t.:
n

x 1=

n1
Y

x i .

i=0

is a nth primitive root of unity over Fq .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Roots of unity and defining set

Families of good cyclic codes

Proposition (Castagnoli/Massey/Schoeller, 1991)


If there exists a family of good codes {Cm }m over Fq of lengths
m with GCD(m, q) 6= 1, there exists a family {Cn0 }n with
GCD(n, q) = 1 with the same properties.
Cyclic codes of length coprime with q enjoy a useful decription
given by the existence nth primitive roots of unity

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Roots of unity and defining set

Families of good cyclic codes

Proposition (Castagnoli/Massey/Schoeller, 1991)


If there exists a family of good codes {Cm }m over Fq of lengths
m with GCD(m, q) 6= 1, there exists a family {Cn0 }n with
GCD(n, q) = 1 with the same properties.
Cyclic codes of length coprime with q enjoy a useful decription
given by the existence nth primitive roots of unity

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Roots of unity and defining set

Defining set
The generator polynomial gC of a cyclic code divides x n 1. The
roots of gC are powers of any nth primitive root of unity.
Definition
Let be a nth primitive root of unity over Fq and let C be a
Fq [n, k, d] cyclic code with generator polynomial gC . The set:
SC , = SC = {0 i n 1 | gC (i ) = 0}
Is called the complete defining set of C .
#(SC ) = deg(gC ) = n k
Defining set depends by the choice of :
For any nth primitive root of unity SC has a different form.

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Roots of unity and defining set

Defining set
The generator polynomial gC of a cyclic code divides x n 1. The
roots of gC are powers of any nth primitive root of unity.
Definition
Let be a nth primitive root of unity over Fq and let C be a
Fq [n, k, d] cyclic code with generator polynomial gC . The set:
SC , = SC = {0 i n 1 | gC (i ) = 0}
Is called the complete defining set of C .
#(SC ) = deg(gC ) = n k
Defining set depends by the choice of :
For any nth primitive root of unity SC has a different form.

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Roots of unity and defining set

Defining set
The generator polynomial gC of a cyclic code divides x n 1. The
roots of gC are powers of any nth primitive root of unity.
Definition
Let be a nth primitive root of unity over Fq and let C be a
Fq [n, k, d] cyclic code with generator polynomial gC . The set:
SC , = SC = {0 i n 1 | gC (i ) = 0}
Is called the complete defining set of C .
#(SC ) = deg(gC ) = n k
Defining set depends by the choice of :
For any nth primitive root of unity SC has a different form.

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Roots of unity and defining set

Defining set
The generator polynomial gC of a cyclic code divides x n 1. The
roots of gC are powers of any nth primitive root of unity.
Definition
Let be a nth primitive root of unity over Fq and let C be a
Fq [n, k, d] cyclic code with generator polynomial gC . The set:
SC , = SC = {0 i n 1 | gC (i ) = 0}
Is called the complete defining set of C .
#(SC ) = deg(gC ) = n k
Defining set depends by the choice of :
For any nth primitive root of unity SC has a different form.

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
x 7 1 over F2 :
f0
f1
f3
q
q
q
7
3
2
3
x 1 = (x + 1) (x + x + 1) (x + x + 1)
Consider C the cyclic code generated by g = f0 f1
SC = {0, 1, 2, 4}
Respect to a nth primitive root of unity s.t. f1 () = 0.

n=7

k =3

d =?

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
x 7 1 over F2 :
f0
f1
f3
q
q
q
7
3
2
3
x 1 = (x + 1) (x + x + 1) (x + x + 1)
Consider C the cyclic code generated by g = f0 f1
SC = {0, 1, 2, 4}
Respect to a nth primitive root of unity s.t. f1 () = 0.

n=7

k =3

d =?

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
x 7 1 over F2 :
f0
f1
f3
q
q
q
7
3
2
3
x 1 = (x + 1) (x + x + 1) (x + x + 1)
Consider C the cyclic code generated by g = f0 f1
SC = {0, 1, 2, 4}
Respect to a nth primitive root of unity s.t. f1 () = 0.

n=7

k =3

d =?

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
x 7 1 over F2 :
f0
f1
f3
q
q
q
7
3
2
3
x 1 = (x + 1) (x + x + 1) (x + x + 1)
Consider C the cyclic code generated by g = f0 f1
SC = {0, 1, 2, 4}
Respect to a nth primitive root of unity s.t. f1 () = 0.

n=7

k =3

d =?

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
x 7 1 over F2 :
f0
f1
f3
q
q
q
7
3
2
3
x 1 = (x + 1) (x + x + 1) (x + x + 1)
Consider C the cyclic code generated by g = f0 f1
SC = {0, 1, 2, 4}
Respect to a nth primitive root of unity s.t. f1 () = 0.

n=7

k =3

d =?

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
x 7 1 over F2 :
f0
f1
f3
q
q
q
7
3
2
3
x 1 = (x + 1) (x + x + 1) (x + x + 1)
Consider C the cyclic code generated by g = f0 f1
SC = {0, 1, 2, 4}
Respect to a nth primitive root of unity s.t. f1 () = 0.

n=7

k =3

d =?

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

An example

An example
x 7 1 over F2 :
f0
f1
f3
q
q
q
7
3
2
3
x 1 = (x + 1) (x + x + 1) (x + x + 1)
Consider C the cyclic code generated by g = f0 f1
SC = {0, 1, 2, 4}
Respect to a nth primitive root of unity s.t. f1 () = 0.

n=7

k =3

d =?

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check matrix

Parity-check matrix
Let C be an Fq [n, k, d] cyclic code with (n, q) = 1. Let
SC = {i1 , . . . , ink } be its defining set and be a primitive nroot
of unity in the splitting field of x n 1 on Fq . Then

1 i1
2i1
(n1)i1
1 i2
2i2
(n1)i2

H= .

..
..
..
..

..
.
.
.
.
1 ink

2ink

(n1)ink

is a parity-check matrix for C .


Let c C then cH T = 0 is equivalent to say
n1
X
c is = 0, is Sc ,
=0

that is c(is ) = 0, for any is SC .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Parity-check matrix

Parity-check matrix
Let C be an Fq [n, k, d] cyclic code with (n, q) = 1. Let
SC = {i1 , . . . , ink } be its defining set and be a primitive nroot
of unity in the splitting field of x n 1 on Fq . Then

1 i1
2i1
(n1)i1
1 i2
2i2
(n1)i2

H= .

..
..
..
..

..
.
.
.
.
1 ink

2ink

(n1)ink

is a parity-check matrix for C .


Let c C then cH T = 0 is equivalent to say
n1
X
c is = 0, is Sc ,
=0

that is c(is ) = 0, for any is SC .

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

BCH codes

BCH boundBCH codes


Theorem (BCH bound)
Let C be an Fq [n, k, d] cyclic code with defining set
SC = {i1 , . . . , ink } and let (n, q) = 1. Suppose there are 1
consecutive numbers in SC , say
{m0 , m0 + 1, . . . m0 + 2} SC . Then
d
Definition
Let S = (m0 , m0 + 1, . . . , m0 + 2) be such that
0 m0 m0 + 2 n 1
If C is the Fq [n, k, d] cyclic code with defining set S, we say that
C is a BCH code of designed distance

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

BCH codes

BCH boundBCH codes


Theorem (BCH bound)
Let C be an Fq [n, k, d] cyclic code with defining set
SC = {i1 , . . . , ink } and let (n, q) = 1. Suppose there are 1
consecutive numbers in SC , say
{m0 , m0 + 1, . . . m0 + 2} SC . Then
d
Definition
Let S = (m0 , m0 + 1, . . . , m0 + 2) be such that
0 m0 m0 + 2 n 1
If C is the Fq [n, k, d] cyclic code with defining set S, we say that
C is a BCH code of designed distance

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

BCH codes

An example

The F2 [7, 3, d] code of previous example with SC = {0, 1, 2, 4} is a


BCH code of designed distance = 4.
d 4 (BCH ).
d=4
A minimum weight word of the code is given by the generator
polynomial
gC = x 4 + x 2 + x + 1

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

BCH codes

An example

The F2 [7, 3, d] code of previous example with SC = {0, 1, 2, 4} is a


BCH code of designed distance = 4.
d 4 (BCH ).
d=4
A minimum weight word of the code is given by the generator
polynomial
gC = x 4 + x 2 + x + 1

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

BCH codes

An example

The F2 [7, 3, d] code of previous example with SC = {0, 1, 2, 4} is a


BCH code of designed distance = 4.
d 4 (BCH ).
d=4
A minimum weight word of the code is given by the generator
polynomial
gC = x 4 + x 2 + x + 1

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

BCH codes

An example

The F2 [7, 3, d] code of previous example with SC = {0, 1, 2, 4} is a


BCH code of designed distance = 4.
d 4 (BCH ).
d=4
A minimum weight word of the code is given by the generator
polynomial
gC = x 4 + x 2 + x + 1

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

BCH codes

An example

The F2 [7, 3, d] code of previous example with SC = {0, 1, 2, 4} is a


BCH code of designed distance = 4.
d 4 (BCH ).
d=4
A minimum weight word of the code is given by the generator
polynomial
gC = x 4 + x 2 + x + 1

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Polynomial encoding

Polynomial encoding (1)


Let C be an [n, k, d] cyclic code over Fq , then C is capable of
encoding qary messages of length k and requires n k
redundancy symbols.

Nonsystematic method
given a message w = (w0 , . . . , wk1 ), we consider its
[x]
polynomial representation w (x) xFnq1
multiply w (x) by the generator polynomial g (x)
c(x) = w (x)g (x) C is the encoded word

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Polynomial encoding

Polynomial encoding (1)


Let C be an [n, k, d] cyclic code over Fq , then C is capable of
encoding qary messages of length k and requires n k
redundancy symbols.

Nonsystematic method
given a message w = (w0 , . . . , wk1 ), we consider its
[x]
polynomial representation w (x) xFnq1
multiply w (x) by the generator polynomial g (x)
c(x) = w (x)g (x) C is the encoded word

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Polynomial encoding

Polynomial encoding (1)


Let C be an [n, k, d] cyclic code over Fq , then C is capable of
encoding qary messages of length k and requires n k
redundancy symbols.

Nonsystematic method
given a message w = (w0 , . . . , wk1 ), we consider its
[x]
polynomial representation w (x) xFnq1
multiply w (x) by the generator polynomial g (x)
c(x) = w (x)g (x) C is the encoded word

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Polynomial encoding

Polynomial encoding (2)


Example (Systematic method)
Let C be an F2 [7, 4] code, g (x) = x 3 + x 2 + 1 and w= (1, 0, 1, 0).
find the associated polynomial: w (x) = x 2 + 1
multiply it by x nk : (x 2 + 1) x 3 = x 5 + x 3
divide this results by g (x) and take the remainder r (x):
x 5 + x 3 = (x 2 + x) (x 3 + x 2 + 1) + (x2 x)
r (x) as an (n k)vector: r = (0, 1, 1)
encode using r , preceded by the message (1, 0, 1, 0):
(1, 0, 1, 0) (1, 0, 1, 0, 0, 1, 1)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Polynomial encoding

Polynomial encoding (2)


Example (Systematic method)
Let C be an F2 [7, 4] code, g (x) = x 3 + x 2 + 1 and w= (1, 0, 1, 0).
find the associated polynomial: w (x) = x 2 + 1
multiply it by x nk : (x 2 + 1) x 3 = x 5 + x 3
divide this results by g (x) and take the remainder r (x):
x 5 + x 3 = (x 2 + x) (x 3 + x 2 + 1) + (x2 x)
r (x) as an (n k)vector: r = (0, 1, 1)
encode using r , preceded by the message (1, 0, 1, 0):
(1, 0, 1, 0) (1, 0, 1, 0, 0, 1, 1)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Polynomial encoding

Polynomial encoding (2)


Example (Systematic method)
Let C be an F2 [7, 4] code, g (x) = x 3 + x 2 + 1 and w= (1, 0, 1, 0).
find the associated polynomial: w (x) = x 2 + 1
multiply it by x nk : (x 2 + 1) x 3 = x 5 + x 3
divide this results by g (x) and take the remainder r (x):
x 5 + x 3 = (x 2 + x) (x 3 + x 2 + 1) + (x2 x)
r (x) as an (n k)vector: r = (0, 1, 1)
encode using r , preceded by the message (1, 0, 1, 0):
(1, 0, 1, 0) (1, 0, 1, 0, 0, 1, 1)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Polynomial encoding

Polynomial encoding (2)


Example (Systematic method)
Let C be an F2 [7, 4] code, g (x) = x 3 + x 2 + 1 and w= (1, 0, 1, 0).
find the associated polynomial: w (x) = x 2 + 1
multiply it by x nk : (x 2 + 1) x 3 = x 5 + x 3
divide this results by g (x) and take the remainder r (x):
x 5 + x 3 = (x 2 + x) (x 3 + x 2 + 1) + (x2 x)
r (x) as an (n k)vector: r = (0, 1, 1)
encode using r , preceded by the message (1, 0, 1, 0):
(1, 0, 1, 0) (1, 0, 1, 0, 0, 1, 1)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Polynomial encoding

Polynomial encoding (2)


Example (Systematic method)
Let C be an F2 [7, 4] code, g (x) = x 3 + x 2 + 1 and w= (1, 0, 1, 0).
find the associated polynomial: w (x) = x 2 + 1
multiply it by x nk : (x 2 + 1) x 3 = x 5 + x 3
divide this results by g (x) and take the remainder r (x):
x 5 + x 3 = (x 2 + x) (x 3 + x 2 + 1) + (x2 x)
r (x) as an (n k)vector: r = (0, 1, 1)
encode using r , preceded by the message (1, 0, 1, 0):
(1, 0, 1, 0) (1, 0, 1, 0, 0, 1, 1)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Polynomial encoding

Polynomial encoding (2)


Example (Systematic method)
Let C be an F2 [7, 4] code, g (x) = x 3 + x 2 + 1 and w= (1, 0, 1, 0).
find the associated polynomial: w (x) = x 2 + 1
multiply it by x nk : (x 2 + 1) x 3 = x 5 + x 3
divide this results by g (x) and take the remainder r (x):
x 5 + x 3 = (x 2 + x) (x 3 + x 2 + 1) + (x2 x)
r (x) as an (n k)vector: r = (0, 1, 1)
encode using r , preceded by the message (1, 0, 1, 0):
(1, 0, 1, 0) (1, 0, 1, 0, 0, 1, 1)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Decoding

Polynomial decoding

Example (Systematic method)


Suppose that the decoder receive exactly the sent word (but it
does not know it!)
v= (1, 0, 1, 0, 0, 1, 1) v (x) = x 6 + x 5 + x 2 + 1
the decoder divides v (x) by g (x):
x 6 + x 5 + x 2 + 1 = (x 3 + x 2 + 1) (x 3 + 1) + 0
(probably) no errors have occurred
the message is formed by the first 4 components of the
received word, i.e. w= (1, 0, 1, 0)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Decoding

Polynomial decoding

Example (Systematic method)


Suppose that the decoder receive exactly the sent word (but it
does not know it!)
v= (1, 0, 1, 0, 0, 1, 1) v (x) = x 6 + x 5 + x 2 + 1
the decoder divides v (x) by g (x):
x 6 + x 5 + x 2 + 1 = (x 3 + x 2 + 1) (x 3 + 1) + 0
(probably) no errors have occurred
the message is formed by the first 4 components of the
received word, i.e. w= (1, 0, 1, 0)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Decoding

Polynomial decoding

Example (Systematic method)


Suppose that the decoder receive exactly the sent word (but it
does not know it!)
v= (1, 0, 1, 0, 0, 1, 1) v (x) = x 6 + x 5 + x 2 + 1
the decoder divides v (x) by g (x):
x 6 + x 5 + x 2 + 1 = (x 3 + x 2 + 1) (x 3 + 1) + 0
(probably) no errors have occurred
the message is formed by the first 4 components of the
received word, i.e. w= (1, 0, 1, 0)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Decoding

Polynomial decoding

Example (Systematic method)


Suppose that the decoder receive exactly the sent word (but it
does not know it!)
v= (1, 0, 1, 0, 0, 1, 1) v (x) = x 6 + x 5 + x 2 + 1
the decoder divides v (x) by g (x):
x 6 + x 5 + x 2 + 1 = (x 3 + x 2 + 1) (x 3 + 1) + 0
(probably) no errors have occurred
the message is formed by the first 4 components of the
received word, i.e. w= (1, 0, 1, 0)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

Decoding

Polynomial decoding

Example (Systematic method)


Suppose that the decoder receive exactly the sent word (but it
does not know it!)
v= (1, 0, 1, 0, 0, 1, 1) v (x) = x 6 + x 5 + x 2 + 1
the decoder divides v (x) by g (x):
x 6 + x 5 + x 2 + 1 = (x 3 + x 2 + 1) (x 3 + 1) + 0
(probably) no errors have occurred
the message is formed by the first 4 components of the
received word, i.e. w= (1, 0, 1, 0)

An overview on error correcting codes

Linear codes

Cyclic codes

Encoding and decoding with cyclic codes

References

References
C. E. Shannon, A mathematical theory of communication, Bell
Systems Technical Journal,, vol. 27, p. 379423, p. 623656, 1948.
F.J. MacWilliams, N.J.A. Sloane, The Theory of Error-Correcting
Codes, North Holland, 1977.
E. Prange, Cyclic Error-Correcting Codes in Two Symbols, Air
Force Cambridge Research Center, Cambridge, MA, Tech. Rep.
AFCRC-TN-57-103, 1957.
G. Castagnoli, J. L. Massey, P. A. Schoeller, and N. von Seeman,
On repeated-root cyclic codes, IEEE Trans.Inf. Theory, vol. 37,no.
2, pp. 337342, Mar. 1991.
R. C. Bose and D. K. Ray-Chaudhuri, On a class of error correcting
binary group codes, Inform. Control, vol. 3, pp. 68-79, 1960.

Вам также может понравиться