User:Nmonje

(This is a tentative page I am building as a part of a class project. It will hopefully be put properly on wikipedia, but until then it lives here.)

The Nordstrom-Robinson (NR) code is the unique non-linear length-16 error correcting code with 2^8=256 codewords and minimum distance d=6, i.e., a [16, 8, 6] code.

The Nordstrom-Robinson code is the m=3 case for both the Preparata code and the Kerdock code. Projected over $$ Z_4 = {0, 1, 2, 3} $$ using the Gray Mapping ($$00 \mapsto 0, 01 \mapsto 1, 11 \mapsto 2, 10 \mapsto 3 $$), the Nordstrom-Robinson code is the Octacode.

History
In a public lecture in 1967, Robinson pointed out that the smallest parameters allowed by known bounds for which a linear code was not yet known were [15, 8, 5]. Nordstrom, a high-school student at the time, successfully constructed a nonlinear code with those parameters. This code is now commonly extended with an overall parity check to give the [16, 8, 6] code.

It has since been proven that no linear code can have these parameters, and in fact the Nordstrom-Robinson code is the unique code with these parameters.

Construction
Several different constructions of the Nordstrom-Robinson code have been proposed.

Conventional Construction
The usual definition of the NR code is the following.

Let $$G$$ denote the $$[24, 12, 8]$$ Golay code with coordinates arranged such that $$1^8 0^{16} \in G$$.

The Nordstrom-Robinson code $$NR$$ consists of all vectors $$v \in Z_2^{16}$$ such that $$uv \in G$$, where $$u$$ is one of these eight vectors:

$$ 00000000, 11000000, 10100000, ..., 10000001 $$

Polynomial Construction
In 1968, Franco P. Preparata constructed the original [15, 8, 5] code in terms of polynomials.

All polynomials considered are over $$GF(2)[x] / (x^7 +1)$$. Call this algebra $$A$$.

Let $${m(x)}$$ be the ideal of polynomials $$m(x) \in A$$ generated by $$g(x) = x^3 + x^2 + 1$$ (which is the generator polynomial for the Hamming Code.

Now consider a generic polynomial $$i(x) \in A$$. This polynomial is either in $${m(x)}$$ or in one of its cosets. Take as coset leaders the minimum weight polynomials, and we have a unique decomposition:

$$ i(x) = m(x) + q(x) $$

where $$q(x)$$ is a coset leader. Because the Hamming Code is perfect, $$q(x) = ax^\alpha$$, where $$a = 0, 1$$ and $$\alpha = 0, 1, ..., 6$$.

We can find $$q(x)$$ by multiplying $$i(x)$$ by $$f(x) = x^6+x^5+x^3+1$$.

Given a binary constant, $$i_7$$, we then construct the Hamming code as such:

$$ \overline{c} = [i(x), i_7, m(x) + q(x) f(x) + b u(x)] $$

for any choice of $$i(x)$$, where $$ u(x) = (x^7+1)/(x+1) = x^6+x^5+x^4+x^3+x^2+x+1 $$ and $$b$$ is the parity check of the eight-compenent vector $$[m(x), i_7]$$.

Binary Image of the Octacode
The Nordstrom-Robinson code can also be considered the binary image of the Octacode.

Using the Gray Map ($$ 00 \mapsto 0, 01 \mapsto 1, 11 \mapsto 2, 10 \mapsto 3 $$), the Norstrom-Robinson code can be generated by the following matrix:

$$ G = \begin{bmatrix} 1 & 3 & 1 & 2 & 1 & 0 & 0 & 0 \\ 1 & 0 & 3 & 1 & 2 & 1 & 0 & 0 \\ 1 & 0 & 0 & 3 & 1 & 2 & 1 & 0 \\ 1 & 0 & 0 & 0 & 3 & 1 & 2 & 1 \\ \end{bmatrix} $$

Note that the first column is a parity check and the rest is a cyclic code over $$Z_4$$. Because of this, the columns are often indexed $$\infty, 0, 1, 2, ... 6$$.

Decoding the Octacode


This is the decoding algorithm presented by Hammons, et alum.

The Nordstrom-Robinson code (in $$ Z_4 $$ can detect errors of Lee Weight up to two, can detect all errors of Lee weight 3, and some errors of Lee weight 4.

Consider the parity check matrix:

$$ H = \begin{bmatrix} 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ 0 & 1 & \xi^1 & \xi^2 & \xi^3 & \xi^4 & \xi^5 & \xi^6 \\ \end{bmatrix} $$

where $$ \xi $$ is a root of $$ h(x) = x^3 + 2x^2 + x + 3 $$.

We can build the elements in $$ T $$ from summing {$$ 1, \xi, \xi^2 $$} according to the following table:

We can then express any element $$c \in GF(64)$$ $$ c = c_0 + c_1\xi + c_2\xi^2$$, where $$c_i \in z_4$$, in the form $$ c = a + 2b | a,b \in T $$.

Now, we find the syndrome of a vector $$ v \in Z_{4}^8 $$ as such:

$$ H v^T = [t, A+2B] $$

where $$A, B \in T = \{0, 1, \xi, \xi^2, ..., \xi^6\}$$.

We can then decode using the decision tree (pending use permission).

Example
Let's say we were transmitting the codeword [1 3 1 2 1 0 0 0], but instead received [1 3 1 2 1 1 0 0].

$$ H v^T = [1, 3+1\xi+2\xi^2+\xi^3+\xi^4] $$

$$ t=1 $$ so we follow the first path right in the tree. We must now determine the values of A and B.

$$ 3+1\xi+2\xi^2+\xi^3+\xi^4 = 3+1\xi+2\xi^2+(1+3\xi2\xi^2)+\xi^4 = 4+4\xi+4\xi^2+\xi^4 = \xi^4 $$

Thus $$ A = \xi^4$$ and $$B=0$$, so we know we have one error in the spot corresponding to the $$[1, \xi^4]^T $$ column of $$H^T$$. This is the column indexed as four, so we correct the single error as expected.