In coding theory, a polynomial code is a type of linear code whose set of valid code words consists of those polynomials (usually of some fixed length) that are divisible by a given fixed polynomial (of shorter length, called the generator polynomial).
GF(q)
n
an-1\ldotsa0
an-1xn-1+ … +a1x+a0.
Fix integers
m\leqn
g(x)
m
g(x)
n
g(x)
Consider the polynomial code over
GF(2)=\{0,1\}
n=5
m=2
g(x)=x2+x+1
0 ⋅ g(x), 1 ⋅ g(x), x ⋅ g(x), (x+1) ⋅ g(x),
x2 ⋅ g(x), (x2+1) ⋅ g(x), (x2+x) ⋅ g(x), (x2+x+1) ⋅ g(x).
Or written explicitly:
0, x2+x+1, x3+x2+x, x3+2x2+2x+1,
x4+x3+x2, x4+x3+2x2+x+1, x4+2x3+2x2+x, x4+2x3+3x2+2x+1.
Since the polynomial code is defined over the Binary Galois Field
GF(2)=\{0,1\}
0, x2+x+1, x3+x2+x, x3+1,
x4+x3+x2, x4+x3+x+1, x4+x, x4+x2+1.
Equivalently, expressed as strings of binary digits, the codewords are:
00000, 00111, 01110, 01001,
11100, 11011, 10010, 10101.
This, as every polynomial code, is indeed a linear code, i.e., linear combinations of code words are again code words. In a case like this where the field is GF(2), linear combinations are found by taking the XOR of the codewords expressed in binary form (e.g. 00111 XOR 10010 = 10101).
In a polynomial code over
GF(q)
n
g(x)
m
qn-m
p(x)
p(x)=g(x) ⋅ q(x)
q(x)
n-m
qn-m
n-m
Some authors, such as (Lidl & Pilz, 1999), only discuss the mapping
q(x)\mapstog(x) ⋅ q(x)
Instead, the following method is often used to create a systematic code: given a data word
d(x)
n-m
d(x)
xm
d(x)
m
xmd(x)
g(x)
m
xmd(x)
xmd(x)
g(x)
xmd(x)=g(x) ⋅ q(x)+r(x),
where
r(x)
m
d(x)
p(x):=xmd(x)-r(x),
Note the following properties:
p(x)=g(x) ⋅ q(x)
g(x)
p(x)
r(x)
m
n-m
p(x)
xmd(x)
n-m
m
For the above code with
n=5
m=2
g(x)=x2+x+1
An erroneous message can be detected in a straightforward way through polynomial division by the generator polynomial resulting in a non-zero remainder.
Assuming that the code word is free of errors, a systematic code can be decoded simply by stripping away the
m
If there are errors, then error correction should be performed before decoding. Efficient decoding algorithms exist for specific polynomial codes, such as BCH codes.
As for all digital codes, the error detection and correction abilities of polynomial codes are determined by the minimum Hamming distance of the code. Since polynomial codes are linear codes, the minimum Hamming distance is equal to the minimum weight of any non-zero codeword. In the example above, the minimum Hamming distance is 2, since 01001 is a codeword, and there is no nonzero codeword with only one bit set.
More specific properties of a polynomial code often depend on particular algebraic properties of its generator polynomial. Here are some examples of such properties:
xn-1
n\leq2m-1
The algebraic nature of polynomial codes, with cleverly chosen generator polynomials, can also often be exploited to find efficient error correction algorithms. This is the case for BCH codes.