Reed-Muller Codes - Polynomial View Encoding

Theory

Monomials

A monomial is an expression consisting of a single term. It is composed of a constant, a variable, or the product of constants and variables raised to non-negative integer exponents.\newline For Example: A monomial M with m variables,can be expressed as:\newline M=x1i1x2i2x3i3......xmimM = {x_1}^{i_1}{x_2}^{i_2}{x_3}^{i_3}......{x_m}^{i_m} where x1,x2,x3,......,xm{x_1},{x_2},{x_3},......,{x_m} are variables, \newline \hspace{0.8cm} i1,i2,i3,......,im{i_1},{i_2},{i_3},......,{i_m} are non-negative integer exponents corresponding to each variable. \newline

Example : (x11x23x37),(x74x99x122) (x_1^1x_2^3x_3^7), (x_7^4x_9^9x_{12}^2)

Boolean functions

A Boolean function of mm variables can be represented by a polynomial of degree mm over F2\mathbb{F}_2, f(x1,x2,...xm)f(x_1, x_2, ... x_m), where each variable corresponds to a coefficient of the polynomial. The value of the Boolean function for a particular input assignment is then determined by evaluating the polynomial over F2\mathbb{F}_2 using the given input values. \newline

The number of distinct Boolean functions in mm variables is the number of distinct binary sequences of length 2m2^m, which is 22m2^{2^m} . Every function f\textit{f} can be represented as a linear combination of monomials: \newline

f=a0+a1x1+a2x2++amxm+a12x1x2++a123...mx1x2...xmf = {a_0}+{a_1}{x_1} +{a_2}{x_2} +···+{a_m}{x_m} +{a_{12}}{x_1}{x_2} +···+{a_{123...m}}{x_1}{x_2}...{x_m}

(Note that for the field F2\mathbb{F}_2, xin=xi{x_i}^n = {x_i} and ain=ai{a_i}^n = {a_i})

Example : f=x1+x2x4+x7+x3x11 f = x_1 + x_2x_4 + x_7 + x_3x_{11} \newline \hspace{1.15cm}: f=x2+x3x4x7x9+x5 f = x_2 + x_3x_4x_7x_9 + x_5

Evaluation of a Polynomial

Consider the polynomial with mm variables over the field F2\mathbb{F}_2. For this polynomial and a binary vector z=(z1,z2,....zm)\textit{z} = (z_1,z_2,....z_m) F2m\in \mathbb{F}^m_2, we define: \newline Evalz(f)=f(z1,z2,....zm)Eval_{z}(f) = f(z_1,z_2,....z_m) be the evaluation of f\textit{f} at the vector z\textit{z}.

Next we define \newline Eval(f)=(Evalz(f):zF2m)Eval(f) = (Eval_{z}(f) : z \in \mathbb{F}^m_2) as the evaluation vector of f\textit{f} whose coordinates are the evaluations of f\textit{f} at all 2m2^m vectors in F2m\mathbb{F}^m_2.

Example : Evaluation of (x1+x2x3+x3) (x_1 + x_2x_3 + x_3) over F23\mathbb{F}^3_2 over all 2m2^m results in 01001011 01001011

Reed-Muller Codes

Reed-Muller codes are among the oldest and most studied families of codes in coding theory and find applications in various fields like telecommunications, digital data storage, and error-correcting memory.

Reed-Muller (RM) codes are linear block codes that are defined by two non-negative integer parameters. The first parameter, m defines the blocklength of the code (which is n=2mn = 2^m ). The second parameter is r, where 0 ≤ r ≤ m, that defines the dimension of the code k=j=0r(mj)k = \sum_{j=0}^{r}{m \choose j}. The Rate\textit{Rate} of this code is defined as the ratio kn=k=j=0r(mj)2m\frac{k}{n} = \frac{k = \sum_{j=0}^{r}{m \choose j}}{2^m} which signifies the fraction of the message bits to the number of bits in the codeword. Reed-muller codes are also denoted by RM(m,r).

Encoding of RM Codes

Typically to encode a message m\boldsymbol{m} using a code, the message vector m\boldsymbol{m} of length kk is multiplied with the generator matrix GG to obtain a codeword c\boldsymbol{c} of length nn. Whereas Reed-Muller codes follow a polynomial view encoding approach. \newline Reed-Muller codes with parameters mm and rr consist of all the evaluation vectors of polynomials with mm variables and degree no larger than rr. The encoding procedure of RM (m,r)(m,r) maps the coefficients of the monomials to their corresponding evaluation vectors.

The set of message polynomials for RM(m,r)RM(m,r) codes is defined as: \newline

M=M(X1,X2,X3,.....,Xm)=(i1,....,im){0,1}m:j=1m,ijrai1.....imX1i1X2i2......Xmim:ai1.....imF2 \textit{M} = {M(X_{1}, X_{2}, X_{3}, ..... ,X_{m}) = \sum_{(i_{1},....,i_{m}) \in \{0,1\}^m : \sum_{j=1}^{m}, i_{j} \le r} a_{i_{1}.....i_{m}} X_{1}^{i_{1}}X_{2}^{i_{2}}......X_{m}^{i_{m}} : a_{i_{1}.....i_{m}} \in \mathbb{F}_2 }

RM(m,r)RM(m,r) code is defined as codeword corresponding to message polynomial M(X1,X2,X3,.....,Xm)=(M(X1,X2,X3,.....,Xm)(X1......Xm)F2m) M(X_{1}, X_{2}, X_{3}, ..... ,X_{m}) = (M(X_{1}, X_{2}, X_{3}, ..... ,X_{m})|_{(X_{1}......X{m}) \in \mathbb{F}^{m}_2}) and is of length 2m=n 2^{m} = n (Coordinates of the codeword are indexed by the vector from F2m \mathbb{F}^{m}_2 )

RM(m,r)code={M(X1,X2,X3,.....,Xm)(X1......Xm)F2m:M(X1,X2,X3,.....,Xm)M} RM(m,r) code = \{M(X_{1}, X_{2}, X_{3}, ..... ,X_{m})|_{(X_{1}......X{m}) \in \mathbb{F}^{m}_2} : M(X_{1}, X_{2}, X_{3}, ..... ,X_{m}) \in \textit{M}\}

Example : RM(m=4,r=2) RM (m = 4, r = 2) \newline M={M(X1,X2,X3,.....,Xm)=a1100X1X2+a1010X1X3+a1001X1X4+a0110X2X3+a0101X2X4+a0011X3X4+a1000X1+a0100X2+a0010X3+a0001X4+a0000:ai1i2i3i4F2} \textit{M} = \{M(X_{1}, X_{2}, X_{3}, ..... ,X_{m}) = a_{1100}X_{1}X_{2} + a_{1010}X_{1}X_{3} + a_{1001}X_{1}X_{4} + a_{0110}X_{2}X_{3} + a_{0101}X_{2}X_{4} + a_{0011}X_{3}X_{4} + a_{1000}X_{1} + a_{0100}X_{2} + a_{0010}X_{3} + a_{0001}X_{4} + a_{0000} : a_{i_{1}i_{2}i_{3}i_{4}} \in \mathbb{F}_2\}

Message polynomial = X1X2+X3 X_{1}X_{2} + X_{3} \newline Codeword corresponding to this message polynomial = (0X1X2X3X4=0000,00001,10010,1,0,0,1,1,0,0,1,1,1,1,0,0) (0_{X_{1}X_{2}X_{3}X_{4} = 0000}, 0_{0001}, 1_{0010}, 1,0,0,1,1,0,0,1,1,1,1,0,0)

Generator Matrix of RM Codes

The generator matrix (GRM)(G_{RM}) of Reed-Muller codes are formed by it's evaluation vectors. GRM={Eval(Xi):i[m],ir} G_{RM} = \{ Eval(X_{i}) : i \subseteq [m], |i| \le r \}

Example : Generator matrix of RM(4,2)RM(4,2) \newline GRM={Eval(X1X2),Eval(X1X3),Eval(X1X4),Eval(X2X3),Eval(X2X4),Eval(X3X4),Eval(X1),Eval(X2),Eval(X3),Eval(X4),Eval(1)} G_{RM} = \{Eval(X_{1}X_{2}), Eval(X_{1}X_{3}), Eval(X_{1}X_{4}), Eval(X_{2}X_{3}), Eval(X_{2}X_{4}), Eval(X_{3}X_{4}), Eval(X_{1}), Eval(X_{2}), Eval(X_{3}), Eval(X_{4}), Eval(1)\}

GRM= G_{RM} =

Error in LaTeX '\[ \left( \begin{matrix} $Eval(X_{1}X_{2})$ \\ $Eval(X_{1}X_{3})$ \\ $Eval(X_{1}X_{4})$ \\ $Eval(X_{2}X_{3})$ \\ $Eval(X_{2}X_{4})$ \\ $Eval(X_{3}X_{4})$ \\ $Eval(X_{1})$ \\ $Eval(X_{2})$ \\ $Eval(X_{3})$ \\ $Eval(X_{4})$ \\ $Eval(1)$ \end{matrix} \right) = \left( \begin{matrix} 0&0&0&1&0&0&0&1&0&0&0&1&0&0&0&1 \\ 0&0&0&0&0&1&0&1&0&0&0&0&0&1&0&1 \\ 0&0&0&0&0&0&0&0&0&1&0&1&0&1&0&1 \\ 0&0&0&0&0&0&1&1&0&0&0&0&0&0&1&1 \\ 0&0&0&0&0&0&0&0&0&0&1&1&0&0&1&1 \\ 0&0&0&0&0&0&0&0&0&0&1&1&0&0&1&1 \\ 0&0&0&0&0&0&0&0&0&0&0&0&1&1&1&1 \\ 0&1&0&1&0&1&0&1&0&1&0&1&0&1&0&1 \\ 0&0&1&1&0&0&1&1&0&0&1&1&0&0&1&1 \\ 0&0&0&0&1&1&1&1&0&0&0&0&1&1&1&1 \\ 0&0&0&0&0&0&0&0&1&1&1&1&1&1&1&1 \\ \end{matrix} \right) \]': KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲ \left( \begin{…

Parity Check Matrix of RM Codes

Minimum Distance of RM codes