Maximum Distance Separable Codes

For a q-ary (n,M,d)-code, the Singleton bound states that
M qn-d+1.
This implies that for a linear (n,k)-code we must have
qk qn-d+1,
from which it follows that k n - d + 1, or as we prefer to write it, d n - k + 1. A linear code which meets this bound is called a Maximum Distance Separable (MDS) code . Since error correcting capability is a function of minimum distance, we see that for given dimensions n and k, the MDS codes are those with the greatest error correcting capability.

There are several useful characterizations of MDS codes. The simplest being;

Proposition 1: A q-ary (n,k) linear code is an MDS code if, and only if, the minimum non-zero weight of any codeword is n - k + 1.


  1. For any n and q, Vn(q), a linear (n,n)-code, is an MDS code, since the minimum non-zero weight of any codeword is 1. This is a trivial MDS code.
  2. Another trivial example for any n and q, is the cyclic code generated by the all 1's vector. This is an (n,1)-code with minimum weight n.
  3. Yet another trivial MDS code (for any n and q) is obtained by taking all the vectors of even weight in Vn(q). It is not difficult to see that this is an (n,n-1) code (linear subspace) with minimum distance 2.
MDS codes which are not one of these three examples are called nontrivial MDS codes.

We will see some nontrivial MDS codes later, but first consider the binary Hamming code of order r. This is a (2r - 1, 2r - r-1) linear code with minimum distance 3. In the case r = 2, this is an MDS code, but it is a trivial one (a (3,1)-code). Define the extended Hamming code, Ham(r)*, by adding one new coordinate position to each code vector and putting a 0 or 1 in that position to make the new code word have even weight (that is, adding a parity check). It can be shown, without difficulty, that the extended Hamming code of order r is a linear (2r, 2r -r -1) binary code with minimum distance 4. Again, with r = 2 we obtain a trivial MDS code (this time a (4,1)-code).

Another characterization of MDS codes, using parity check matrices, follows from Theorem 1 of the Coding Theory II notes, namely:

Proposition 2: A q-ary (n,k) linear code is an MDS code if, and only if, every set of n-k columns of a parity check matrix is linearly independent.

This proposition can be used to prove several other interesting characterizations. We list these, without proof, in the following theorem.

Theorem 1: Let C be a q-ary (n,k)-linear code with minimum distance d. Then the following are equivalent:

  1. C is an MDS code.
  2. The code C' dual to C is an MDS code.
  3. Any k columns of a generator matrix for C are linearly independent.
  4. If a generator matrix for C is in standard form [I,A], then every square submatrix of A is nonsingular.
  5. Given any d coordinate positions, there is a (minimum weight) code word whose non-zero entries are in precisely these positions.
There is a strong connection between MDS codes and structures that have been studied for a long time in geometry. To see this connection, we need some definitions.

Let Vn+1(q) be a vector space. The lattice of subspaces of Vn+1(q) of dimension at least 1 is called a Projective Geometry and is denoted by PG(n,q). The 1-dimensional subspaces are called points, the 2-dimensional subspaces lines, the 3-dimensional subspaces planes, etc. of PG(n,q). The relationship between these objects of the projective geometry is given by containment of the vector subspaces. Thus, a point is on a line iff the 1-dimensional subspace is contained in the 2-dimensional subspace. Given a point P, any non-zero vector in this 1-dimensional vector space is called a (projective) coordinate for P. Thus, projective coordinates are not unique, but any two that correspond to the same point are just scalar multiples of each other.

A set of m points in PG(N,q), with m > N, is called an m-arc if every N+1 of the points are linearly independent. (Linear independence of these vector subspaces is equivalent to the linear independence of any selection of coordinates for these points.) Thus, in PG(2,q), an m-arc is a set of at least 3 points so that every 3 of them are linearly independent. This means that no 3 of these points can lie in the same 2-dimensional vector space (a line). Using geometrical language, we would say that no 3 points are collinear (lie on the same line). In PG(3,q), an m-arc is a set of at least 4 points so that no 4 points are coplanar (lie in the same plane). Note that if 3 of these points were collinear, then these 3 together with some other point of the set would lie in a plane, so we also have that no 3 of these points are collinear. In general, in PG(N,q), an m-arc consists of m points so that no 3 lie on a line, no 4 lie in a plane, no 5 lie in a solid, ..., no N+1 lie in an N dimensional vector space. (In older terminology, such points would be said to be in general position.)

Let K be a set of m points, P1, P2, ...,Pm in PG(N,q). Form the N+1 × m matrix G whose m columns are projective coordinates of each of the points. It then follows from Theorem 1: (3) that:

Theorem 2: K is an m-arc in PG(N,q) if and only if G is the generator matrix of an (m, N+1) q-ary MDS code with minimum distance m-N.

We can use this theorem to provide examples of nontrivial MDS codes.


In PG(2,q) the largest m-arcs have size q+1 if q is odd and q+2 if q is even. A q+1-arc in PG(2,q) is called an oval and a q+2-arc is called a hyperoval. By Theorem 2, ovals give rise to (q+1,3) MDS codes and hyperovals give rise to (q+2, 3) MDS codes. For q > 3, these will be nontrivial MDS codes. For q odd, all ovals are of the same type, called a conic. For q even, there are several types of hyperovals, they have not yet been classified. For descriptions of all the known hyperovals, you can view my Hyperoval Page.


In PG(3,q) the largest m-arcs have size q+1. If q is odd, these are all of the same type, called a twisted cubic. When q is even, other types of q+1-arcs exist, but again they have not been classified. By Theorem 2 these give rise to (q+1,4) MDS codes. They will be nontrivial if q > 4.


In general, it is not known what the largest size of an m-arc is. It is conjectured that the maximum size is q+1 for all N > 2. This is known to be the case for N < 6 or q < 13 or q > (4N - 9)2. An example of a q+1-arc for any N is given by the normal rational curve whose points have coordinates (1,t,t2,t3, ...,tN) for each t in GF(q) and (0,0, ..., 0,1). Both conics and twisted cubics are special cases of normal rational curves. Thus there are examples of (q+1,N+1) MDS codes for all q which are powers of primes and N < q.