1 Sequences and the One-Dimensional Fourier Transform
Definition 2.1.1 For any matrix M:
2.2 Cyclic codes
Cyclic codes, including those codes known as Reed–Solomon codes and BCH codes, which are studied in this chapter, comprise the most important class of block codes for error correction.
We define a cyclic code of blocklength n over the field F as the set of all n-vectors c having a specified set of spectral components equal to zero. The set of such vectors is closed under linear combinations, so the definition implies that a cyclic code is a linear code. Spectral components exist only if a Fourier transform exists, so a cyclic code of blocklength n exists in the field F only if a Fourier transform of blocklength n exists in the field F or in an extension field of F. Fix a set of spectral indices,A= { j1, j2,. . . , jr}, which is called the defining set of the cyclic code. The codeCis the set of all vectors c of blocklength n over the field F whose Fourier transform C satisfies Cj = 0 for
= 1, . . . , r. Thus
C= {c | Cj = 0 = 1, . . . , r},
where
Cj =
n−1
i=0
ωijci
61 2.2 Cyclic codes
andω is an element of order n in F or an extension field of F. The spectrum C is called the codeword spectrum. Moreover, the inverse Fourier transform yields
ci = 1 n
n−1
j=0
ω−ijCj.
If F is the finite field GF(q), then n must divide qm− 1 for some m, and so ω is an element of GF(qm). If n = qm− 1, then ω is a primitive element of GF(qm), and the cyclic code is called a primitive cyclic code.
To index the qm−1 codeword components of a primitive cyclic code, each component is assigned to one of the qm− 1 nonzero elements of GF(qm), which can be described as the qm− 1 powers of a primitive element. Similarly, to index the n codeword components of a cyclic code of blocklength n, each component is assigned to one of the n distinct powers ofω, an element of order n. The components of the codeword can be denoted cωifor i= 0, 1, . . . , n − 1. Because this notation is needlessly clumsy, we may also identify i withωi; the components are then denoted ci for i = 0, . . . , n − 1 instead of cωi, according to convenience. The field element zero is not used as an index for a cyclic code.
A codeword c of a cyclic code is also represented by a codeword polynomial, defined as
c(x) =
n−1
i=0
cixi.
A codeword spectrum C of a cyclic code is also represented by a spectrum polynomial, defined as
C(x) =
n−1
j=0
Cjxj.
The Fourier transform and inverse Fourier transform are then given by Cj = c(ωj) and ci = n−1C(ω−i).
Ifω is an element of GF(q), then each spectral component Cjis an element of GF(q), and, if j is not in the defining set, Cjcan be specified arbitrarily and independently of the other spectral components. Ifω is not an element of GF(q), then it is an element of the extension field GF(qm) for some m, and, by Theorem1.9.1, the spectral components must satisfy the conjugacy constraint Cjq = C((qj)). This means that qj (modulo n) must be in the defining setA whenever j is in the defining set. In such a case, the defining setAmay be abbreviated by giving only one member (or several members)
of each conjugacy class. In this case, for clarity, the defining set itself may be called the complete defining set, then denotedAc.
A cyclic code always contains the unique codeword polynomialw(x), called the principal idempotent, having the property thatw(x) is a codeword polynomial and, for any codeword polynomial c(x), w(x)c(x) = c(x) (mod xn − 1). The principal idempotent can be identified by its Fourier transform. Clearly, by the convolution theorem, for any codeword spectrum C, this becomes WjCj= Cjfor all j. The codeword spectrum W with the required property is given by
Wj =
0 j ∈Ac
1 j∈Ac,
and this spectrum specifies a unique codeword.
A cyclic code always contains the unique codeword polynomial g(x), called the generator polynomial of the code, having the property that g(x) is the monic codeword polynomial of minimum degree. Clearly, there is such a monic codeword polynomial of minimum degree. It is unique because if there were two monic codeword polynomials of minimum degree, then their difference would be a codeword polynomial of smaller degree, which could be made monic by multiplication by a scalar. Every codeword polynomial c(x) must have a remainder equal to zero under division by g(x). Otherwise, the remainder would be a codeword polynomial of degree smaller than the degree of g(x). This means that every codeword polynomial must be a polynomial multiple of g(x), written c(x) = a(x)g(x). Thus the dimension of the code is k = n − deg g(x).
By the translation property of the Fourier transform, if c is cyclically shifted by b places, then Cj is replaced by Cjωjb, which again is zero whenever Cj is zero. Thus we conclude that the cyclic shift of any codeword of a cyclic code is again a codeword of the same cyclic code, a property known as the cyclic property. The cyclic codes take their name from this property, although we do not regard the property, in itself, as important. The cyclic codes are important, not for the cyclic property, but because the Fourier transform properties make it convenient to determine their minimum distances and to develop encoders and decoders. The cyclic property is an example of an auto-morphism of a code, which is defined as any permutation of codeword components that preserves the code. The automorphism group of a code is the set of all automorphisms of the code.
BecauseCis cyclic, if c(x) is in the code, then xc(x)(mod xn− 1) is in the code as well, as is a(x)c(x)(mod xn− 1) for any polynomial a(x). By the division algorithm, xn− 1 = Q(x)g(x) + r(x),
where the degree of the remainder polynomial r(x) is smaller than the degree of g(x), so r(x) cannot be a nonzero codeword. But r(x) has the requisite spectral zeros to be a
63 2.2 Cyclic codes
codeword, so it must be the zero codeword. Then r(x) = 0, so g(x)h(x) = xn− 1
for some polynomial h(x) called the check polynomial.
The central task in the study of a cyclic code is the task of finding the minimum distance of the code. Because a cyclic code is linear, finding the minimum distance of the code is equivalent to finding the smallest Hamming weight of any nonzero codeword of the code. Because the code is completely determined by its defining set, the minimum distance must be a direct consequence of the code’s defining set. Thus the relationship between the weight of a vector and the pattern of zeros in its Fourier transform is fundamental to the nature of cyclic codes. This relationship is described in large part, though not completely, by the bounds given in Section1.8. We consider these bounds as central to the study of cyclic codes – indeed, as a primary reason for introducing the class of cyclic codes.
A polynomial g(x) over GF(q) can also be regarded as a polynomial over GF(qm).
When used as a generator polynomial, g(x) can define a cyclic code over either GF(q) or GF(qm).
Theorem 2.2.1 Let g(x), a polynomial over GF(q), divide xqm−1− 1. The cyclic code over GF(q) generated by g(x) and the cyclic code over GF(qm) generated by g(x) have the same minimum distance.
Proof: LetCq andCqm be the codes over GF(q) and GF(qm), respectively. Because Cq ⊂ Cqm, it follows that dmin(Cq) ≥ dmin(Cqm). Let c(x) be a minimum-weight codeword polynomial inCqm. Then c(x) = a(x)g(x), where the coefficients of a(x) and c(x) are in GF(qm) and the coefficients of g(x) are in GF(q). The components of c are ci =k−1
j=0 gi−jaj. Let cbe the nonzero vector whose ith component is the ith component of the q-ary trace of c. We can assume that cis not the zero vector, because if it were, then we would instead consider the codewordγ c for some γ since tr(γ ci) cannot be zero for allγ unless ciis zero. Then
ci = tr(ci) = tr
k−1
j=0
gi−jaj =
k−1
j=0
tr(gi−jaj).
Because gi−j is an element of GF(q), it is equal to its own qth power, and so can be factored out of the trace. We can conclude that
ci =
k−1
j=0
gi−jtr(aj) =
k−1
j=0
gi−jaj.
Thus we see that the polynomial c(x) is given by g(x)a(x), and so corresponds to a codeword inCq. But the trace operation cannot form a nonzero component ci from
a zero component ci. Therefore the weight of c is not larger than the weight of c.
Consequently, we have that dmin(Cq) ≤ dmin(Cqm), and the theorem follows.