Reed–Muller code - Fuhz Articles
Visually Impaired Edition.


Reed–Muller code article, this Fuhz page will hopefully provide the answers to the who, what where and why on the Reed–Muller code topic.
At the bottom of the page we often provide links to external documents relating to Reed–Muller code which may also help your research. Every effort is made to ensure the content on this page is as accurate and error free as possible, however whenever researching information that requires the utmost accuracy such as a term paper it is always best to cross reference facts with numerous sources.


Reed–Muller code - Wikipedia, the free encyclopedia

Reed–Muller code

From Wikipedia, the free encyclopedia
Jump to: navigation, search

Reed–Muller codes are a family of linear error-correcting codes used in communications. They are named after their discoverers, Irving S. Reed and D. E. Muller. Muller discovered the codes, and Reed proposed the majority logic decoding for the first time. A first order Reed–Muller code is equivalent to a Hadamard code. Reed–Muller codes are listed as RM(dr), where d is the order of the code, and r is parameter related to the length of code, n = 2 r. RM codes are related to binary functions on field GF(2 r) over the elements [0, 1].

RM(0, r) codes are repetition codes of length n = 2 r, rate {R=\tfrac{1}{n}} and minimum distance dmin = n.

RM(1, r) codes are parity check codes of length n = 2 r, rate R=\tfrac{r+1}{n} and minimum distance d_\min = \tfrac{n}{2}.

RM(r − 1, r) codes are parity check codes of length n = 2 r.

RM(r − 2, r) codes are the family of extended Hamming codes of length n = 2 r with minimum distance dmin = 4.1

Contents

Construction

A generating matrix for a Reed–Muller code of length n = 2d can be constructed like this. Let us write:

 X = \mathbb{F}_2^d = \{ x_1, \ldots, x_{2^d} \}.

Note that each member of the set X is a point in \mathbb{F}_2^d. We define in n-dimensional space \mathbb{F}_2^n the indicator vectors

\mathbb{I}_A \in \mathbb{F}_2^n

on subsets  A \subset X by:

\left( \mathbb{I}_A \right)_i = \begin{cases} 1 & \mbox{ if } x_i \in A \\ 0 & \mbox{ otherwise} \\ \end{cases}

together with, also in \mathbb{F}_2^n, the binary operation

 w \wedge z = (w_1 \cdot z_1, \ldots , w_n \cdot z_n ),

referred to as the wedge product. Here, w=(w_1,w_2,\ldots,w_n) and z=(z_1,z_2,\ldots, z_n) are points in \mathbb{F}_2^n, and the operation \cdot is the usual multiplication in the field \mathbb{F}_2.

\mathbb{F}_2^d is a d-dimensional vector space over the field \mathbb{F}_2, so it is possible to write

(\mathbb{F}_2)^d = \{ (y_d, \ldots , y_1) | y_i \in \mathbb{F}_2 \}

We define in n-dimensional space \mathbb{F}_2^n the following vectors with length n: v0 = (1, 1, 1, 1, 1, 1, 1, 1) and

 v_i = \mathbb{I}_{ H_i }

where the Hi are hyperplanes in (\mathbb{F}_2)^d (with dimension d −1):

H_i = \{ y \in ( \mathbb{F}_2 ) ^d \mid y_i = 0 \}

The Reed–Muller RM(d, r) code of order r and length n = 2d is the code generated by v0 and the wedge products of up to r of the vi (where by convention a wedge product of fewer than one vector is the identity for the operation).

Example 1

Let d = 3. Then n = 8, and

 X = \mathbb{F}_2^3 = \{ (0,0,0), (0,0,1),  \ldots, (1,1,1) \},

and


\begin{matrix}
v_0 & = & (1,1,1,1,1,1,1,1) \\[2pt]
v_1 & = & (1,0,1,0,1,0,1,0) \\[2pt]
v_2 & = & (1,1,0,0,1,1,0,0) \\[2pt]
v_3 & = & (1,1,1,1,0,0,0,0). \\
\end{matrix}

The RM(1,3) code is generated by the set

 \{ v_0, v_1, v_2, v_3 \},\,

or more explicitly by the rows of the matrix


\begin{pmatrix}
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
\end{pmatrix}

Example 2

The RM(2,3) code is generated by the set:

 \{ v_0, v_1, v_2, v_3, v_1 \wedge v_2, v_1 \wedge v_3, v_2 \wedge v_3 \}

or more explicitly by the rows of the matrix:


\begin{pmatrix}
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
\end{pmatrix}

Properties

The following properties hold:

1 The set of all possible wedge products of up to d of the vi form a basis for \mathbb{F}_2^n.

2 The RM (d, r) code has rank

 \sum_{s=0}^r {d \choose s}.

3 RM (d, r) = RM (d − 1, r) | RM (d − 1, r − 1) where '|' denotes the bar product of two codes.

4 RM (d, r) has minimum Hamming weight 2dr.

Proof

1

There are
 \sum_{s=0}^d { d \choose s } = 2^d = n
such vectors and \mathbb{F}_2^n has dimension n so it is sufficient to check that the n vectors span; equivalently it is sufficient to check that RM(d, d) = \mathbb{F}_2^n.
Let x be an element of X and define
y_i = \begin{cases} v_i & \mbox{ if } x_i = 0 \\ 1+v_i & \mbox{ if } x_i = 1 \\ \end{cases}
Then \mathbb{I}_{ \{ x \} } = y_i \wedge \ldots \wedge y_d
Expansion via the distributivity of the wedge product gives  \mathbb{I}_{ \{ x \} } \in \mbox{ RM(d,d)} . Then since the vectors \{ \mathbb{I}_{ \{ x \} } \mid x \in X \} span \mathbb{F}_2^n we have RM(d, d) = \mathbb{F}_2^n.

2

By 1, all such wedge products must be linearly independent, so the rank of RM(d, r) must simply be the number of such vectors.

3

Omitted.

4

By induction.
The RM(d, 0) code is the repetition code of length n =2d and weight n = 2d−0 = 2d−0. By 1 RM(d, d) = \mathbb{F}_2^n and has weight 1 = 20 = 2dd.
The article bar product (coding theory) gives a proof that the weight of the bar product of two codes C1 , C2 is given by
min{2w(C1),w(C2)}
If 0 < r < d and if
i) RM(d − 1, r) has weight 2d−1−r
ii) RM(d-1,r-1) has weight 2d−1−(r−1) = 2dr
then the bar product has weight
\min \{ 2 \times 2^{d-1-r}, 2^{d-r} \} = 2^{d-r} .

Alternative construction

A Reed–Muller code RM(r,m) exists for any integers m \ge 0 and 0 \le r \le m. RM(m, m) is defined as the universe (2m,2m,1) code. RM(−1,m) is defined as the trivial code (2^m,0,\infty). The remaining RM codes may be constructed from these elementary codes using the length-doubling construction

RM(r,m) = \{(\mathbf{u},\mathbf{u}+\mathbf{v})|\mathbf{u} \in RM(r,m-1),\mathbf{v} \in RM(r-1,m-1)\}.

From this construction, RM(r,m) is a binary linear block code (n, k, d) with length n = 2 m, dimension k(r,m) = k(r,m − 1) + k(r − 1,m − 1) and minimum distance d = 2mr for r \ge 0. The dual code to RM(r,m) is RM(m-r-1,m). This shows that repetition and SPC codes are duals, biorthogonal and extended Hamming codes are duals and that codes with k=n/2 are self-dual.

Table of Reed–Muller codes

The table below lists the RM(rm) codes of lengths up to 32.

RM(m,m)
(2m,2m,1)
universe codes
RM(5,5)
(32,32,1)
RM(4,4)
(16,16,1)
RM(m − 1, m)
(2m,2m − 1,2)
SPC codes
RM(3,3)
(8,8,1)
RM(4,5)
(32,31,2)
RM(2,2)
(4,4,1)
RM(3,4)
(16,15,2)
RM(m − 2, m)
(2m,2mm − 1,4)
ext. Hamming codes
RM(1,1)
(2,2,1)
RM(2,3)
(8,7,2)
RM(3,5)
(32,26,4)
RM(0,0)
(1,1,1)
RM(1,2)
(4,3,2)
RM(2,4)
(16,11,4)
RM(0,1)
(2,1,2)
RM(1,3)
(8,4,4)
RM(2,5)
(32,16,8)
self-dual codes
RM(−1,0)
(1,0,\infty)
RM(0,2)
(4,1,4)
RM(1,4)
(16,5,8)
RM(-1,1)
(2,0,\infty)
RM(0,3)
(8,1,8)
RM(1,5)
(32,6,16)
RM(-1,2)
(4,0,\infty)
RM(0,4)
(16,1,16)
RM(1,m)
(2m,m + 1,2m − 1)
biorthogonal codes
RM(−1,3)
(8,0,\infty)
RM(0,5)
(32,1,32)
RM(−1,4)
(16,0,\infty)
RM(0,m)
(2m,1,2m)
repetition codes
RM(−1,5)
(32,0,\infty)
RM(-1,m)
(2^m,0,\infty)
trivial codes

Decoding RM codes

RM(r, m) codes can be decoded using the majority logic decoding. The basic idea of majority logic decoding is to build several checksums for each received code word element. Since each of the different checksums must all have the same value (i.e the value of the message word element weight), we can use a majority logic decoding to decipher the value of the message word element. Once each order of the polynomial is decoded, the received word is modified accordingly by removing the corresponding codewords weighted by the decoded message contributions, up to the present stage. So for a rth order RM code, we have to decode iteratively r+1, times before we arrive at the final received code-word. Also, the values of the message bits are calculated through this scheme; finally we can calculate the codeword by multiplying the message word (just decoded) with the generator matrix.

One clue if the decoding succeeded, is to have an all-zero modified received word, at the end of (r + 1)-stage decoding through the majority logic decoding. This technique was proposed by Irving. S. Reed, and is more general when applied to other finite geometry codes.

See also

Notes

  1. ^ Trellis and Turbo Coding, C. Schlegel & L. Perez, Wiley Interscience, 2004, p149.

References

Research Articles:

Textbooks:

External links


Return to Fuhz Home - This article covering Reed–Muller code is enhanced for the visually impaired.

Valid XHTML 1.0 Transitional Valid CSS!

Article from Wikipedia. All text is available under the terms of the GNU Free Documentation License - Our Privacy Policy - Thanks Auto Blog Commenter