Polynomial code


In coding theory, a polynomial code is a type of linear code whose set of valid code words consists of those polynomials that are divisible by a given fixed polynomial.

Definition

Fix a finite field, whose elements we call symbols. For the purposes of constructing polynomial codes, we identify a string of symbols with the polynomial
Fix integers and let be some fixed polynomial of degree, called the generator polynomial. The polynomial code generated by is the code whose code words are precisely the polynomials of degree less than that are divisible by.

Example

Consider the polynomial code over with,, and generator polynomial. This code consists of the following code words:
Or written explicitly:
Since the polynomial code is defined over the Binary Galois Field, polynomial elements are represented as a modulo-2 sum and the final polynomials are:
Equivalently, expressed as strings of binary digits, the codewords are:
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, linear combinations are found by taking the XOR of the codewords expressed in binary form.

Encoding

In a polynomial code over with code length and generator polynomial of degree,
there will be exactly code words. Indeed, by definition, is a code word if and only if it is of the form, where is of degree less than. Since there are such quotients available, there are the same number of possible code words.
Plain data words should therefore be of length
Some authors, such as, only discuss the mapping as the assignment from data words to code words. However, this has the disadvantage that the data word does not appear as part of the code word.
Instead, the following method is often used to create a systematic code: given a data word of length, first multiply by, which has the effect of shifting by places to the left. In general, will not be divisible by, i.e., it will not be a valid code word. However, there is a unique code word that can be obtained by adjusting the rightmost symbols of.
To calculate it, compute the remainder of dividing by :
where is of degree less than. The code word corresponding to the data word is then defined to be
Note the following properties:
  1. , which is divisible by. In particular, is a valid code word.
  2. Since is of degree less than, the leftmost symbols of agree with the corresponding symbols of. In other words, the first symbols of the code word are the same as the original data word. The remaining symbols are called checksum digits or check bits.

    Example

For the above code with,, and generator polynomial, we obtain the following assignment from data words to codewords:
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 checksum digits.
If there are errors, then error correction should be performed before decoding. Efficient decoding algorithms exist for specific polynomial codes, such as BCH codes.

Properties of polynomial 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:
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.

Specific families of polynomial codes