Standard array

Standard arrays are used to decode linear codes; i.e. to find the corresponding codeword for any received vector.

Because each possible vector can appear only once in a standard array some care must be taken during construction.

A standard array can be created as follows: Adding vectors is done mod q.

For example, binary codes are added mod 2 (which equivalent to bit-wise XOR addition).

That selecting different coset leaders will create a slightly different but equivalent standard array, and will not affect results when decoding.

To construct the standard array, we first list the codewords in a row.

This vector becomes the coset leader for the second row.

Following step 3, we complete the row by adding the coset leader to each codeword.

In this example we could not have chosen the vector 0001 as the coset leader of the final row, even though it meets the criteria of having minimal weight (1), because the vector was already present in the array.

We could, however, have chosen it as the first coset leader and constructed a different standard array.

For example, say we are using the code C = {0000, 1011, 0101, 1110}, and have constructed the corresponding standard array, as shown from the example above.

We then subtract the vector's coset leader, namely 1000, to get the result 1110.

In practice, decoding via a standard array requires large amounts of storage - a code with 32 codewords requires a standard array with

If we receive the vector 1010, using the standard array above would decode the message as 1110, a codeword distance 1 away.

In such a case some implementations might ask for the message to be resent, or the ambiguous bit may be marked as an erasure and a following outer code may correct it.

This ambiguity is another reason that different decoding methods are sometimes used.