The theory associated with Experiment-7 is divided into three parts:
Preliminaries
Basics of MDS codes
Construction of RS codes
1 Preliminaries
In this section, we will define a linearly independent set of vectors over the finite field Fq (q=pm, p prime, m≥1) and explain a method to determine whether a given set is linearly independent or not.
Definition 1.(Linearly Independent set): A set of vectors
S={v1,v2,…,vl}⊂Fqn is said to be a linearly independent set if and only if a1v1+a2v2+…+alvl=0 can happen only when a1=a2=…=al=0.
For example, suppose the set S1={v1=[342],v2=[615], v3=[016]}⊂F73. The set S1 is linearly independent since a1v1+a2v2+a3v3 gives an all-zero vector only when we choose a1=a2=a3=0. Whereas S2={v1=[213],v2=[515], v3=[124]}⊂F73 is linearly dependent set since 4v1+v2+v3=0.
Now we will provide a well-known procedure to determine the set is linearly independent or dependent.
Write each vector of the set as a row of a matrix. Let's call this matrix A.
Perform row operations on matrix A to convert it into its Reduced Row Echelon Form (RREF). Remember that arithmetic operations should be performed in the finite field Fq.
Check if any row in the RREF of the matrix A consists of all zeros. The set is linearly dependent if at least one row has all zeros.
The set is linearly independent if no row contains all zeros.
Now with above-mentioned procedure we will check S2={v1=[342],v2=[605], $\mathbf{v}3 = \begin{bmatrix} 0 & 1 & 6 \end{bmatrix}
} \subset \mathbb{F}{7}^{3}isdependent.Whilecarryingouttherowoperations,werepresentthematrixrowswithR_{i}(wherei$ is the index of the row).
A=251112354R1←4R1151412554R2←R2+2R1101422514R3←R3+6R1100425516R2←4R2100415546R3←R3+2R2100410540.
The last row of the RREF form of the matrix A has all zeros. Therefore, the set is linearly dependent, and the matrix's rank A is 2.
2 Basics of MDS Codes
In this section, we define MDS codes and list a few important properties of these codes. MDS codes are a class of error-correcting codes that can correct a maximum number of errors for the given code rate (k/n). For any given code C(n,k), the upper bound on the minimum distance dmin of the code is called a Singleton bound, which is as follows:
dmin≤n−k+1.
Note that error-correcting capability depends upon the dmin, since the number of errors that the code can correct is equal to ⌊2dmin−1⌋ . So, the formal definition of MDS code is defined as follows:
Definition 2(MDS Code). A code C(n,k) is called MDS code if the minimum distance achieves the Singleton bound (1), i.e., dmin=n−k+1.
Now, We will describe a few properties of MDS codes without proof.
A code C(n,k) is MDS, if and only if every set of n−k columns of its parity check matrix H are linearly independent.
Dual code of an MDS code is MDS.
Every set of k columns of its generator matrix G are linearly independent.
Below, we will provide generator matrices for a code with the parameters (n=5,k=3), one of which generates an MDS code while the other one does not.
Example 1.Let A=100010001106213, where the elements of the matrix A belong to the finite field F7. We can easily verify that columns 1,2 and 3 are linearly independent, and columns 1,3 and 4 are linearly dependent. Therefore, A is the generator matrix of the code C(5,3) but it is not MDS.
However, the matrix G=111412264214161 generates the C(5,3) MDS code. Since every set of three columns of G is linearly independent.
3 Construction of RS Codes
In this section, we will discuss the encoding procedure of RS codes.
Definition 3(Encoding of RS Codes): Let α be a primitive element in Fpm and let n≤pm−1. Let u=[u0u1…uk−1]∈Fpmk be a message vector and let u(X)=u0+u1X+u2X2+…+u1Xk−1∈Fpm[X] be its associated polynomial. Then the encoding is defined by the mapping σ:u(X)↦v by v=[v0v1…vn−1]≜σ(u(X))=[u(α1)u(α2)…u(αn)].
Here, α1,α2,…,αn are distinct elements chosen from Fpm known as evaluation set. That is, σ(u(X)) evaluates u(X) at all the elements of evaluation set {α1,α2,…,αn}⊆Fpm.
Note 1.In the context of Reed-Solomon codes, an "evaluation set" is a set of distinct elements over the finite field used to evaluate the polynomial that represents the message to be encoded.
The corresponding generator matrix of the RS code is as follows:
G=1α1α12⋮α1k−11α2α22α2k−1………⋱…1αnαn2αnk−1.
Now we will verify that an (n,k) RS code is MDS. Let u=[u0u1…uk−1]=0 is the message vector. The message polynomial u(X)=u0+u1X+u2X2+…+uk−1Xk−1 is a non-zero polynomial of degree at most k−1. Therefore, u(X) has at most k−1 roots, which implies u=[u0u1…uk−1] has at most k−1 zeros. From this, it is clear that each nonzero codeword has at most k−1 zeros. Thus dmin≥n−(k−1)=n−k+1. However, by the Singleton bound \eqref{eq:sigleton_bound}, we must have dmin≤n−k+1. So dmin=n−k+1.
The following example illustrates the construction of (6,3) RS code over the Galois field F23. The elements of F23 are given in Table 1.
Example 2.A (6,3) RS code can be obtained by listing all polynomials of degree 2 with coefficients in F23, and subsequently evaluating these polynomials at the chosen evaluation points from the finite field F23. Due to the Maximum Distance Separable (MDS) property of RS codes, the minimum distance dmin is equal to 4. Therefore, the code corrects one error.
Now we will illustrate an encoding of bit stream 010011111. Here u0=010=α,u1=011=α4,u2=111=α5 and the corresponding message polynomial is u(X)=α+α4X+α5X2∈F23[X].
For this example, there are 7 possible evaluation sets. Here we demonstrate the encoding of the above message u=[αα4α5] for two different evaluation sets.
1. For the evaluation set {α1=α,α2=α2,…,α6=α6 }:
Now the codeword of the given message u=[αα4α5] is obtained for the given evaluation set α1=α,α2=α2,…,α6=α6 as follows:
v=[v0v1…vn−1]=[u(α1)u(α2)…u(αn)].=[u(α)u(α2)u(α3)u(α4)u(α5)u(α6)].
Using Table 1 we can evaluate the message polynomial u(X) at all evaluation points. For understanding, evaluation of message polynomial u(X)=α+α4X+α5X2 is explained below for i=1,2:
u(α)=α+α4α+α5α2=α+α5+α7=α+(1+α+α2)+1=α2.u(α2)=α+α4α2+α5α4=α+α6+α9=α+(1+α2)+α2=1+α=α3.
Similarly, we can find for i=3,4,5,6. The codeword
v=[v0v1…vn−1]=[u(α1)u(α2)…u(αn)].=[u(α)u(α2)u(α3)u(α4)u(α5)u(α6)]=[α2α3α6α6α2α].
Hence the encoded bit stream of 010011111 is 001110101101001010.
2. For the evaluation set {α1=1,α2=α,α3=α2…,α6=α5 }:
Now the codeword of the given message u=[α,α4,α5] is obtained for the given evaluation set α1=α,α2=α2,…,α6=α5 as follows:
v=[v0v1…vn−1]=[u(α1)u(α2)…u(αn)].=[u(1)u(α)u(α2)u(α3)u(α4)u(α5)]=[α3α2α3α6α6α2].
Hence the encoded bit stream of 010011111 is 110001110101101001.