Cyclic Codes
3.3 Generator Polynomial of a Cyclic Code
The i -position right-shift rotation of a code vector c has the following polynomial expression: c(i )(X )=c
n−i+cn−i+1X+ · · · +cn−i−1Xn−1 (6)
The relationship between the i -position right-shift rotated polynomial c(i )(X ) and the original
code polynomial c(X ) is of the form
Xic(X )=q(X )(Xn+1)+c(i )(X ) (7)
The polynomial expression for the i -position right-shift rotated polynomial c(i )(X ) of the original code polynomial c(X ) is then equal to
c(i )(X )=Xic(X ) mod (Xn+
1) (8)
Mod is the modulo operation defined now over polynomials; that is, it is calculated by taking the remainder of the division of Xic(X ) and Xn+1.
Among all the code polynomials of a given cyclic code Ccyc(n,k), there will be a certain
polynomial of minimum degree [1]. This polynomial will have minimum degree r , so that in its polynomial expression the term of the form Xr will exist; that is, the coefficient c
r will
be equal to ‘1’. Therefore, this polynomial will be of the form g(X )=g0+g1X+ · · · +Xr.
If there is another polynomial with minimum degree, this polynomial would be of the form g1(X )=g10+g11X+ · · · +Xr. However, because the cyclic code Ccyc(n,k) is a linear block
code, the sum of these two code polynomials should belong to the code, and this sum will end up being a polynomial of degree (r−1), which contradicts the initial assumption that the minimum possible degree is r . Therefore, the non-zero minimum-degree code polynomial of a given cyclic code Ccyc(n,k) is unique. It is possible to demonstrate that in the non-zero
minimum-degree polynomial of a given cyclic code Ccyc(n,k), g0=1. Then, the expression
for such a non-zero minimum-degree polynomial of a given cyclic code Ccyc(n,k) is
g(X )=1+g1X+ · · · +gr−1Xr−1+Xr (9)
On the other hand, polynomials of the form Xg(X ), X2g(X ), . . ., Xn−r−1g(X ) are all poly-
nomials of degree less than n, and so by using expression (7) to express Xig(X ), it can be seen that division of each of these polynomials by the polynomial Xn+1 will result in a quotient
equal to zero, q(X )=0, which means that Xg(X )=g(1)(X ) X2g(X )=g(2)(X ) .. . X(n−r−1)g(X )=g(n−r−1)(X ) (10)
So these polynomials are right-shift rotations of the minimum-degree polynomial, and are also code polynomials. Since a cyclic code Ccyc(n,k) is also a linear block code, linear combinations
of code polynomials are also code polynomials, and therefore
c(X )=m0g(X )+m1Xg(X )+ · · · +mn−r−1Xn−r−1g(X )
c(X )=m0+m1X+ · · · +mn−r−1Xn−r−1
g(X ) (11)
In expression (11), g(X ) is the non-zero minimum-degree polynomial of the cyclic code Ccyc(n,k), described in equation (9). Expression (11) determines that a code polynomial c(X )
is a multiple of the non-zero minimum-degree polynomial g(X ). This property is very useful for the encoding and decoding of a cyclic code Ccyc(n,k). Coefficients mi, i =0, 1, 2, . . . ,
n−r−1, in expression (11) are elements of GF(2); that is, they are equal to zero or one. Then there will be 2n−r polynomials of degree n−1 or less that are multiples of g(X ). These are
all the possible linear combinations of the initial set of code polynomials so that they form a cyclic code Ccyc(n,k). For a bijective assignment between the message and the coded vector
spaces, there should be 2k possible linear combinations. Therefore, 2n−r =2kor r =n−k. In other words, r , the degree of the non-zero minimum-degree polynomial, is also the number of redundancy bits the code adds to the message vector.
The non-zero minimum-degree polynomial is then of the form
g(X )=1+g1X+ · · · +gn−k−1Xn−k−1+Xn−k (12)
Summarizing, in a linear cyclic code Ccyc(n,k), there is a unique non-zero minimum-degree
code polynomial, and any other code polynomial is a multiple of this polynomial.
The non-zero minimum-degree polynomial is of degree r , and any other code polynomial of the linear cyclic code Ccyc(n,k) is of degree n−1 or less, and so
c(X )=m(X )g(X )=m0+m1X+ · · · +mk−1Xk−1
g(X ) (13)
where mi, i=0, 1, 2, . . . , k−1, are the bits of the message vector to be encoded. Since the
non-zero minimum-degree code polynomial completely determines and generates the linear cyclic code Ccyc(n,k), it is called the generator polynomial.
Example 3.1: Determine the code vectors corresponding to the message vectors m0=
(0000), m1=(1000), m2=(0100) and m3 =(1100) of the linear cyclic code Ccyc(7,4) gen-
erated by the generator polynomial g(X )=1+X+X3.
The corresponding code vectors and code polynomials are listed in Table 3.1.
Table 3.1 Code polynomials of a linear cyclic code Ccyc(7,4)
Message m Code vectors c Code polynomials c(X )
0000 0000000 0=0g(X )
1000 1101000 1+X+X3=1g(X )
0100 0110100 X+X2+X4=Xg(X )
There are two important relationships between the generator polynomial g(X ) and the polynomial Xn+1. The first one is that if g(X ) is a generator polynomial of a given linear cyclic code Ccyc(n,k), then g(X ) is a factor of Xn+1.
The demonstration of this is as follows: If the generator polynomial of degree r is multiplied by Xk, it converts into a polynomial of degree n, because n=k+r . By applying equation
(8), and dividing Xkg(X ) by Xn+1, the quotient q(X ) is equal to one, because these are two
monic polynomials of the same degree. Thus
Xkg(X )=(Xn+1)+g(k)(X )=(Xn+
1)+a(X )g(X )
Xk+a(X )g(X )=(Xn+1) (14)
since g(k)(X ) is a code polynomial as it is a kth right-shift rotation of g(X ). Thus, g(X ) is a factor of Xn+1.
The same can be stated in reverse; that is, if a polynomial of degree r=n−k is a factor of Xn+1, then this polynomial generates a linear cyclic code C
cyc(n,k).
Any polynomial factor of Xn+1 can generate a linear cyclic code C
cyc(n,k).