Justesen code

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Binary Justesen Codes
Named after Jørn Justesen
Type Linear block code
Block length n
Message length k
Rate R=k/n
Distance \delta n where \delta\geq \Big(1-R-\epsilon\Big) H^{-1}_2\big(\frac{1}{2}-\epsilon\big) \sim \frac{1}{2}(1-R-\epsilon) for small \epsilon>0.
Alphabet size 2
Notation \left[ n, k, \delta n \right]_2-code
constant rate, constant relative distance, constant alphabet size

In coding theory, Justesen codes form a class of error-correcting codes that have a constant rate, constant relative distance, and a constant alphabet size. Before the Justesen code was discovered, no code was known that had all of these three parameters as a constant. Subsequently, other codes with this property have been discovered, for example expander codes. These codes have important applications in computer science such as in the construction of small-bias sample spaces.

Justesen codes are derived as the code concatenation of a Reed–Solomon code and the Wozencraft ensemble. The Reed–Solomon codes used achieve constant rate and constant relative distance at the expense of an alphabet size that is linear in the message length. The Wozencraft ensemble is a family of codes that achieve constant rate and constant alphabet size, but the relative distance is only constant for most of the codes in the family. The concatenation of the two codes first encodes the message using the Reed–Solomon code, and then encodes each symbol of the codeword further using a code from the Wozencraft ensemble – using a different code of the ensemble at each position of the codeword. This is different from usual code concatenation where the inner codes are the same for each position. The Justesen code can be can constructed very efficiently using only logarithmic space.


Justesen code is concatenation code with different linear inner codes, which is composed of an (N,K,D)_{q^k} outer code C_{out} and different (n,k,d)_q inner codes C_{in}^i, 1 \le i \le N. More precisely, the concatenation of these codes, denoted by C_{out}  \circ (C_{in}^1 ,...,C_{in}^N ), is defined as follows. Given a message m \in [q^k]^K, we compute the codeword produced by an outer code C_{out}: C_{out}(m) = (c_1,c_2,..,c_N). Then we apply each code of N linear inner codes to each coordinate of that codeword to produce the final codeword; that is, C_{out} \circ (C_{in}^1,..,C_{in}^N)(m) = (C_{in}^1(c_1),C_{in}^2(c_2),..,C_{in}^N(c_N)). Look back to the definition of the outer code and linear inner codes, this definition of the Justesen code makes sense because the codeword of the outer code is a vector with N elements, and we have N linear inner codes to apply for those N elements.

Here for the Justesen code, the outer code C_{out} is chosen to be Reed Solomon code over a field \mathbb{F}_{q^k} evaluated over \mathbb{F}_{q^k}-\{ 0 \} of rate R, 0 < R < 1. The outer code C_{out} have the relative distance \delta_{out} = 1 - R and block length of N = q^k-1. The set of inner codes is the Wozencraft ensemble \{ C_{in}^\alpha  \} _{\alpha  \in \mathbb{F}_{q^k }^* }.

Property of Justesen code[edit]

As the linear codes in the Wonzencraft ensemble have the rate \frac{1}{2}, Justesen code is the concatenated code C^* = C_{out} \circ (C_{in}^1,C_{in}^2,..,C_{in}^N) with the rate \frac{R}{2}. We have the following theorem that estimates the distance of the concatenated code C^*.


Let \varepsilon > 0. C^* has relative distance at least (1-R-\varepsilon)H_q^{-1}(\frac{1}{2}-\varepsilon).


The idea of proving that the code C^* has the distance at least (1-R-\varepsilon)H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k \cdot N is to prove that the Hamming distance of two different codewords is at least (1-R-\varepsilon)H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k \cdot N.

Denote \Delta(c^1,c^2) be the Hamming distance of two codewords c^1 and c^2.

So for any given m_1 and m_2 in (\mathbb{F}_{q^k})^K (m_1 \ne m_2), we want to lower bound \Delta(C^*(m_1),C^*(m_2)).

Notice that if C_{out}(m) = (c_1,c_2,..,c_N), then C^*(m) = (C_{in}^1(c_1),C_{in}^2(c_2),..,C_{in}^N(c_N)). So to the lower bound \Delta(C^*(m_1),C^*(m_2)), we need to take into account the distance of C_{in}^i for i = 1,2,…,N.

Suppose C_{out}(m_1) = (c_1^1,c_2^1,..,c_N^1) and C_{out}(m_2) = (c_1^2,c_2^2,..,c_N^2).

Recall that \{ C_{in}^i \}_{1 \le i \le N} is a Wozencraft ensemble. Due to "Wonzencraft ensemble theorem", there are at least (1-\varepsilon)N linear codes C_{in}^i that have distance H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k.

So if for some 1 \le i \le N, c_i^1 \ne c_i^2 and C_{in}^i code has distance \ge H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k, then \Delta(C_{in}^i(c_i^1),C_{in}^i(c_i^2)) \ge H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k.

Further, if we have T numbers 1 \le i \le N such that c_i^1 \ne c_i^2 and C_{in}^i code has distance \ge H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k, then \Delta(C^*(m_1),C^*(m_2)) \ge H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k \cdot T.

So now the final task is to lower bound T.

Denote S be the set of all i (1 \le i \le N) such that c_i^1 \ne c_i^2. Then T is the number of linear codes C_{in}^i (i \in S) having the distance H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k.

Now we want to estimate \left| S \right|. Obviously \left| S \right| = \Delta(C_{out}(m_1),C_{out}(m_2)) \ge (1-R)N.

Due to the Wozencraft Ensemble Theorem, there are at most \varepsilon N linear codes having distance less than H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k, so T \ge \left| S \right| - \varepsilon N \ge (1-R)N - \varepsilon N = (1-R-\varepsilon)N.

Finally,we have

\Delta(C^*(m_1),C^*(m_2)) \ge H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k \cdot T \ge H_q^{-1}(\frac{1}{2}-\varepsilon) \cdot 2k \cdot (1-R-\varepsilon) \cdot N.

This is true for any arbitrary m_1 \ne m_2. So C^* has the relative distance at least (1-R-\varepsilon)H_q^{-1}(\frac{1}{2}-\varepsilon), which completes the proof.


We want to consider the "strongly explicit code". So the question is what the "strongly explicit code" is. Loosely speaking, for linear code, the "explicit" property is related to the complexity of constructing its generator matrix G. That means, we can compute the matrix in logarithmic space without using the brute force algorithm to verify that a code has a given satisfied distance.

For the other codes that are not linear, we can consider the complexity of the encoding algorithm.

So by far, we can see that the Wonzencraft ensemble and Reed-Solomon codes are strongly explicit. Therefore we have the following result:

Corollary: The concatenated code C^* is an asymptotically good code(that is, rate R > 0 and relative distance \delta > 0 for small q) and has a strongly explicit construction.

An example of a Justesen code[edit]

The following slightly different code is referred to as the Justesen code in MacWilliams/MacWilliams. It is the particular case of the above-considered Justesen code for a very particular Wonzencraft ensemble:

Let R be a Reed-Solomon code of length N = 2m − 1, rank K and minimum weight N − K + 1. The symbols of R are elements of F = GF(2m) and the codewords are obtained by taking every polynomial ƒ over F of degree less than K and listing the values of ƒ on the non-zero elements of F in some predetermined order. Let α be a primitive element of F. For a codeword a = (a1, ..., aN) from R, let b be the vector of length 2N over F given by

 \mathbf{b} = \left( a_1, a_1, a_2, \alpha^1 a_2, \ldots, a_N, \alpha^{N-1} a_N \right)

and let c be the vector of length 2N m obtained from b by expressing each element of F as a binary vector of length m. The Justesen code is the linear code containing all such c.

The parameters of this code are length 2m N, dimension m K and minimum distance at least

 \sum_{i=1}^\ell i \binom{2m}{i} ,

where \ell is the greatest integer satisfying \sum_{i=1}^\ell \binom{2m}{i}\leq N-K+1. (See MacWilliams/MacWilliams for a proof.)

See also[edit]

  1. Wozencraft ensemble
  2. Concatenated error correction code
  3. Reed-Solomon error correction
  4. Linear Code


  1. Lecture 28: Justesen Code. Coding theory's course. Prof. Atri Rudra.
  2. Lecture 6: Concatenated codes. Forney codes. Justesen codes. Essential Coding Theory.
  3. J. Justesen (1972). "A class of constructive asymptotically good algebraic codes". IEEE Trans. Info. Theory 18 (5): 652–656. doi:10.1109/TIT.1972.1054893. 
  4. F.J. MacWilliams; N.J.A. Sloane (1977). The Theory of Error-Correcting Codes. North-Holland. pp. 306–316. ISBN 0-444-85193-3.