To save content items to your account,
please confirm that you agree to abide by our usage policies.
If this is the first time you use this feature, you will be asked to authorise Cambridge Core to connect with your account.
Find out more about saving content to .
To save content items to your Kindle, first ensure no-reply@cambridge.org
is added to your Approved Personal Document E-mail List under your Personal Document Settings
on the Manage Your Content and Devices page of your Amazon account. Then enter the ‘name’ part
of your Kindle email address below.
Find out more about saving to your Kindle.
Note you can select to save to either the @free.kindle.com or @kindle.com variations.
‘@free.kindle.com’ emails are free but can only be saved to your device when it is connected to wi-fi.
‘@kindle.com’ emails can be delivered even when you are not connected to wi-fi, but note that service fees apply.
Codes based on the two-dimensional Fourier transform can be decoded by methods analogous to those methods discussed in Chapter 3 for decoding codes that are based on the one-dimensional Fourier transform, such as the Reed–Solomon codes and other BCH codes. Just as for decoding one-dimensional cyclic codes, the task of finding the errors may be divided into two subtasks: finding the locations of the errors, then finding the magnitudes of the errors. In particular, the family of locator decoding algorithms introduces the notion of a bivariate error-locator polynomial, Λ(x, y), into one step of the decoding. However, we no longer have the neat equality that we had in one dimension between the degree of the locator polynomial Λ(x) and the number of its zeros. It now takes several polynomials to specify a finite number of bivariate zeros, and so, in two dimensions, we use the locator ideal instead of a locator polynomial as was used in one dimension. Now we have a neat equality between the number of zeros of the locator ideal {Λℓ(x, y) | ℓ = 1, …, L} and the area of the locator footprint.
The methods for decoding two-dimensional bicyclic codes can also be applied to the decoding of codes on curves. However, restricting a code to a curve in general increases the minimum distance. This means that the decoding algorithm must then be strengthened to reach the minimum distance of the code.
The geometric structure of a code over a finite field consists of a finite set of points in a finite vector space with the separation between any two points described by the Hamming distance between them. A linear code has the important property that every codeword sees the same pattern of other codewords surrounding it. A tabulation of all codeword weights provides a great deal of information about the geometry of a linear code. The number of codewords of weight ω in a linear code is equal to the number of codewords at distance ω from an arbitrary codeword.
Given any element, which we regard geometrically as a point, of the vector space, not necessarily a codeword, the task of decoding is to find the codeword that is closest to the given point. The (componentwise) difference between the given point and the closest codeword is the (presumed) error pattern. A bounded-distance decoder corrects all error patterns of weight not larger than some fixed integer τ, called the decoding radius. A bounded-distance decoder usually uses a decoding radius equal to the packing radius t, though this need not always be true. In this chapter, we shall study both the case in which τ is smaller than t and the case in which τ is larger than t, though the latter case has some ambiguity. In many applications, a bounded-distance decoder is preferred to a complete decoder.
This book began as notes for a collection of lectures given as a graduate course in the summer semester (April to July) of 1993 at the Swiss Federal Institute of Technology (ETH), Zurich, building on a talk that I gave in Brazil in 1992. Subsequently, in the fall of 1995 and again in the spring of 1998, the course notes were extensively revised and expanded for an advanced topics course in the Department of Electrical and Computer Engineering at the University of Illinois, from which course has evolved the final form of the book that appears here. These lectures were also given in various forms at Eindhoven University, Michigan Technological University, Binghamton University, Washington University, and the Technical University of Vienna. The candid reactions of some who attended these lectures helped me greatly in developing the unique (perhaps idiosyncratic) point of view that has evolved, a view that insists on integrating recent developments in the subject of algebraic codes on curves into the classical engineering framework and terminology of the subject of error-control codes. Many classes of error-control codes and their decoding algorithms can be described in the language of the Fourier transform. This approach merges much of the theory of error-control codes with the subject of signal processing, and makes the central ideas more readily accessible to the engineer.
An ideal in the ring F[x, y] is defined as any set of bivariate polynomials that satisfies a certain pair of closure conditions. Examples of ideals can arise in several ways. The most direct way to specify concretely an ideal in the ring F[x, y] is by giving a set of generator polynomials. The ideal is then the set of all polynomial combinations of the generator polynomials. These generator polynomials need not necessarily form a minimal basis. We may wish to compute a minimal basis for an ideal by starting with a given set of generator polynomials. We shall describe an algorithm, known as the Buchberger algorithm, for this computation. Thus, given a set of generator polynomials for an ideal, the Buchberger algorithm computes another set of generator polynomials for that ideal that is a minimal basis.
A different way of specifying an ideal in the ring F[x, y] is as a locator ideal for the nonzeros of a given bivariate polynomial. We then may wish to express this ideal in terms of a set of generator polynomials for it, preferably a set of minimal polynomials. Again, we need a way to compute a minimal basis, but starting now from a different specification of the ideal. We shall describe an algorithm, known as the Sakata algorithm, that performs this computation.
Now that we have studied the ring of bivariate polynomials and its ideals in some detail, we are nearly ready to resume our study of codes. In Chapter 10, we shall construct linear codes as vector spaces on plane curves. This means that the components of the vector space are indexed by the points of the curve. Over a finite field, a curve can have only a finite number of points, so a vector space on a curve in a finite field always has a finite dimension.
Before we can study codes on curves, however, we must study the curves themselves. In this chapter, we shall study curves over a finite field, specifically curves lying in a plane. Such curves, called planar curves or plane curves, are defined by the zeros of a bivariate polynomial. We shall also study vectors defined on curves – that is, vectors whose components are indexed by the points of the curve – and the weights of such vectors. Bounds on the weight of a vector on a curve will be given in terms of the pattern of zeros of its two-dimensional Fourier transform. These bounds are companions to the bounds on the weight of a vector on a line, which were given in Chapter 1, and bounds on the weight of an array on a plane, which were given in Chapter 4.
Given the field F, the vector space Fn exists for every positive integer n, and a linear code of blocklength n is defined as any vector subspace of Fn. Subspaces of dimension k exist in Fn for every integer k ≤ n. In fact, very many subspaces of dimension k exist. Each subspace has a minimum Hamming weight, defined as the smallest Hamming weight of any nonzero vector in that subspace. We are interested in those subspaces of dimension k over GF(q) for which the minimum Hamming weight is large.
In the study of Fn and its subspaces, there is no essential restriction on n. This remark is true in the finite field GF(q) just as in any other field. However, in the finite field, it is often useful to index components of the vector space GF(q)n by the elements of the field GF(q), when n = q, or by the nonzero elements of the field GF(q), when n = q − 1. The technique of using the elements of GF(q) to index the components of the vector over GF(q) is closely related both to the notion of a cyclic code and to polynomial evaluation. The essential idea of using nonzero field elements as indices can be extended to blocklength n = (q−1)2 by indexing the components of the vector υ by pairs of nonzero elements of GF(q). Then the vector υ is displayed more naturally as a two-dimensional array.
Codes on curves, along with their decoding algorithms, have been developed in recent years by using rather advanced topics of mathematics from the subject of algebraic geometry, which is a difficult and specialized branch of mathematics. The applications discussed in this book may be one of the few times that the somewhat inaccessible topics of algebraic geometry, such as the Riemann–Roch theorem, have entered the engineering literature. With the benefit of hindsight, we shall describe the codes in a more elementary way, without much algebraic geometry, emphasizing connections with bicyclic codes and the two-dimensional Fourier transform.
We shall discuss the hermitian codes as our primary example and the Klein codes as our secondary example. The class of hermitian codes, in its fullest form, is probably large enough to satisfy whatever needs may arise in communication systems of the near future. Moreover, this class of codes can be used to illustrate general methods that apply to other classes of codes. The Klein codes comprise a small class of codes over GF (8) with a rather rich and interesting structure, though probably not of practical interest.
An hermitian code is usually defined on a projective plane curve or on an affine plane curve. These choices for the definition are most analogous to the definitions of a doubly extended or singly extended Reed–Solomon code.
Error-control codes are now in widespread use in many applications such as communication systems, magnetic recording systems, and optical recording systems. The compact disk and the digital video disk are two familiar examples of such applications.
We shall discuss only block codes for error control. A block code for error control is a set of n-tuples in some finite alphabet, usually the finite field GF(q). The reason for choosing a field as the alphabet is to have a rich arithmetic structure so that practical codes can be constructed and encoders and decoders can be designed as computational algorithms. The most popular block codes are linear. This means that the componentwise sum of two codewords is a codeword, and any scalar multiple of a codeword is a codeword. So that a large number of errors can be corrected, it is desirable that codewords be very dissimilar from each other. This dissimilarity will be measured by the Hamming distance.
The most important class of block codes, the Reed–Solomon codes, will be described as an exercise in the complexity of sequences and of Fourier transform theory. Another important class of block codes, the BCH codes, will be described as a class of subcodes of the Reed–Solomon codes, all of whose components lie in a subfield. The BCH codes and the Reed–Solomon codes are examples of cyclic codes, which themselves form a subclass of the class of linear block codes.
An array, υ = [υi′i″], defined as a doubly indexed set of elements from a given alphabet, was introduced in Chapter 5. There we studied the relationship between the two-dimensional array υ and its two-dimensional Fourier transform V. In this chapter, further properties of arrays will be developed by drawing material from the subject of commutative algebra, but enriching this material for our purposes and presenting some of it from an unconventional point of view.
The two-dimensional array υ can be represented by the bivariate polynomial υ(x, y), so we can study arrays by studying bivariate polynomials, which is the theme of this chapter. The polynomial notation provides us with a convenient way to describe an array. Many important computations involving arrays can be described in terms of the addition, subtraction, multiplication, and division of bivariate polynomials. Although n-dimensional arrays also can be studied as n-variate polynomials, in this book we shall treat only two-dimensional arrays and bivariate polynomials.
As the chapter develops, it will turn heavily toward the study of ideals, zeros of ideals, and the relationship between the number of zeros of an ideal and the degrees of the polynomials in any set of polynomials that generates the ideal. A well known statement of this kind is Bézout's theorem, which bounds the number of zeros of an ideal generated by two polynomials.
An arrayυ = [υi′i″] is a doubly indexed set of elements from any given alphabet. The alphabet may be a field F, and this is the case in which we are interested. We will be particularly interested in arrays over the finite field GF(q). An array is a natural generalization of a sequence; we may refer to an array as a two-dimensional sequence or, with some risk of confusion, as a two-dimensional vector.
An array may be finite or infinite. We are interested in finite n′ by n″ arrays, and in those infinite arrays [υi′i″] that are indexed by nonnegative integer values of the indices i′ and i″. An infinite array is periodic if integers n′ and n″ exist such that υi′+n′,i″+n″ = υi′i″. Any finite array can be made into a doubly periodic infinite array by periodically replicating it on both axes.
The notion of an array leads naturally to the notion of a bivariate polynomial; the elements of the array υ are the coefficients of the bivariate polynomial υ(x, y). Accordingly, we take the opportunity in this chapter to introduce bivariate polynomials and some of their basic properties. The multiplication of bivariate polynomials is closely related to the two-dimensional convolution of arrays. Moreover, the evaluation of bivariate polynomials, especially bivariate polynomials over a finite field, is closely related to the two-dimensional Fourier transform.
In contrast to the class of Reed–Solomon codes, which was introduced by engineers, the class of hermitian codes was introduced by mathematicians as an example of an important class of algebraic geometry codes. In this chapter, we shall reintroduce hermitian codes as they might have appeared had they been discovered by the engineering community. Some additional insights will be exposed by this alternative formulation. In particular, we will shift our emphasis from the notion of punctured codes on curves to the notion of shortened codes on curves. We then give constructions of hermitian codes as quasi-cyclic codes and as linear combinations of Reed–Solomon codes akin to the Turyn construction. Much of the structure of hermitian codes stands out quite clearly when a code is restricted to the bicyclic plane (or torus), thereby forming an epicyclic hermitian code. If one takes the view that the cyclic form is the more fundamental form of the Reed–Solomon code, then perhaps one should take the parallel view that the epicyclic form is the more fundamental form of the hermitian code. In particular, we shall see that, for the epicyclic form of an hermitian code, there is no difference between a punctured code and a shortened code. This is important because the punctured code is compatible with encoding and the shortened code is compatible with decoding. In Section 11.2, we shall provide a method for the direct construction of shortened epicyclic hermitian codes.
The binary erasure channel (BEC) is perhaps the simplest non-trivial channel model imaginable. It was introduced by Elias as a toy example in 1954. The emergence of the Internet promoted the erasure channel into the class of “real-world” channels. Indeed, erasure channels can be used to model data networks, where packets either arrive correctly or are lost due to buffer overflows or excessive delays.
A priori, one might well doubt that studying the BEC will significantly advance our understanding of the general case. Quite surprisingly, however, most properties and statements that we encounter in our investigation of the BEC hold in much greater generality. Thus, the effort invested in fully understanding the BEC case will reap substantial dividends later on.
You do not need to read the whole chapter to know what iterative decoding for the BEC is about. The core of the material is contained in Sections 3.1–3.14 as well as 3.24. The remaining sections concern either more specialized or less accessible topics. They can be read in almost any order.
CHANNEL MODEL
Erasure channels model situations where information may be lost but is never corrupted. The BEC captures erasure in the simplest form: single bits are transmitted and either received correctly or known to be lost. The decoding problem is to find the values of the bits given the locations of the erasures and the non-erased part of the codeword. Figure 3.1 depicts the BEC(∊).