Next Article in Journal
Fuzzy Decision-Making and Resource Management Model of Performance Evaluation Indices
Next Article in Special Issue
A Heuristic Method for Solving Polynomial Matrix Equations
Previous Article in Journal
New Summation and Integral Representations for 2-Variable (p,q)-Hermite Polynomials
Previous Article in Special Issue
C-S and Strongly C-S Orthogonal Matrices
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Optimal Construction for Decoding 2D Convolutional Codes over an Erasure Channel

1
CIDMA—Center for Research and Development in Mathematics and Applications, Department of Mathematics, University of Aveiro, 3810-193 Aveiro, Portugal
2
INMA—Institute of Mathematics, Federal University of Mato Grosso do Sul, Campo Grande 79070-900, Brazil
*
Author to whom correspondence should be addressed.
These authors contributed equally to this work.
Axioms 2024, 13(3), 197; https://doi.org/10.3390/axioms13030197
Submission received: 23 December 2023 / Revised: 25 February 2024 / Accepted: 11 March 2024 / Published: 15 March 2024
(This article belongs to the Special Issue Advances in Linear Algebra with Applications)

Abstract

:
In general, the problem of building optimal convolutional codes under a certain criteria is hard, especially when size field restrictions are applied. In this paper, we confront the challenge of constructing an optimal 2D convolutional code when communicating over an erasure channel. We propose a general construction method for these codes. Specifically, we provide an optimal construction where the decoding method presented in the bibliography is considered.

1. Introduction

Two-dimensional (2D) convolutional codes are suited for applications where data are organized in a two-dimensional grid, like images. The theory of 2D convolutional codes is a generalization of the theory of one-dimensional (1D) convolutional codes but much more involved. These codes were introduced in [1] and in [2] by Fornasini and Valcher, respectively. In [1], the authors considered 2D convolutional codes that were constituted of sequences indexed on Z 2 with values in F n , where F was a finite field and established the algebraic properties of these codes. In [2], the authors studied 2D convolutional codes constituted of compact support sequences on Z 2 . An important property of a code is its distance since that measures its capacity of error correction. In [3], the authors defined the free distance of a 2D convolutional code, established an upper bound for this distance, and then presented some constructions of the 2D convolutional codes with an optimal free distance. A generalization of these codes, called nD convolutional codes, were first introduced in [4,5] and then further developed in [6,7,8]. However, decoding these kind of codes is a barely explored topic, which we will address in this paper. We will consider transmission over an erasure channel. Unlike the symmetric channel, where errors might occur randomly, over these channels the receiver knows in the transmission which symbols are erased and that the received symbols are correct. These channels are particularly suitable in communication systems like real-time streaming applications or situations where certain packets are more crucial than others. Convolutional codes are particularly convenient for erasure channels due to their ability to consider certain parts of the received data, thereby adapting the correction process to the erasure’s location.
There exist only two decoding algorithms for 2D convolutional codes over the erasure channel [9,10]. In [9], the authors made use of the parity-check matrices of the code, while the authors of [10] employed the encoders of the code.
The decoding algorithm presented in [9] considers the specific neighborhoods around erasures that would allow one to decode these erasures using 1D convolutional codes. These 1D codes are projections of the 2D convolutional code, and they are obtained by considering 1D parity-check matrices and by taking into account only some of the coefficients of a parity-check matrix that is of 2D code. However, the authors did not provide any such construction in which the corresponding 1D projections produced optimal efficiency for this decoding algorithm. In this paper, we discuss this problem and present several constructions of 2D convolutional codes whose corresponding associated 1D convolutional codes are optimal or quasi-optimal.

2. Preliminaries

In this section, we detail the main backgrounds of 1D and 2D convolutional codes that are required to contextualize the constructions introduced in this paper. We will also recall the decoding algorithm over an erasure channel that was presented in [9].
We denote, by F [ z ] , the ring of polynomials in the indeterminate z and with coefficients in a finite field F . By F [ z 1 , z 2 ] , we denote the ring of polynomials in the two indeterminates, z 1 and z 2 , with coefficients in F .

2.1. 1D Convolutional Codes

Definition 1. 
An ( n , k ) convolutional code C is an F [ z ] -submodule of F [ z ] n of rank k. A matrix G ( z ) F [ z ] n × k whose columns constitute a basis of C is called a generator matrix of C , i.e.,
C = Im F [ z ] G ( z ) = { v ( z ) F [ z ] n : v ( z ) = G ( z ) u ( z ) f o r   s o m e   u ( z ) F [ z ] k } .
The vector v ( z ) = G ( z ) u ( z ) is the codeword corresponding to the information sequence u ( z ) .
Given a convolutional code C , two generator matrices of this code, G ( z ) and G ¯ ( z ) , are said to be equivalent. In addition, they differ by right multiplication with a unimodular matrix U ( z ) (a k × k invertible polynomial matrix with a polynomial inverse or, equivalently, a k × k polynomial matrix with determinant in F \ { 0 } ), i.e.,
G ( z ) = G ¯ ( z ) U ( z ) .
A convolutional code is non-catastrophic when it admits a right prime generator matrix G ( z ) , i.e., if G ( z ) = G ¯ ( z ) X ( z ) with G ¯ ( z ) F q [ z ] n × k and X ( z ) F q [ z ] k × k , then X ( z ) must be a unimodular matrix. A polynomial matrix is said to be left prime if its transpose is a right prime. Note that, since two generator matrices of a convolutional code differ by a right multiplication through a unimodular matrix, if a code admits a right prime generator matrix, then all its generator matrices are right prime and it will be called non-catastrophic code.
The degree  δ of an ( n , k ) convolutional code C is the maximum degree of the full-size minors of any generator matrix. Note that the degree can be computed with any generator matrix since two generator matrices of a code differ by the right multiplication of an unimodular matrix, as was previously said. A matrix G ( z ) F [ z ] n × k is said to be column-reduced if the sum of its column degrees is equal to the maximum degree of its full-size minors. A polynomial matrix is said to be row-reduced if its transpose is column-reduced. An ( n , k ) convolutional code with degree δ is said to be an ( n , k , δ ) convolutional code.
Another important matrix associated with some convolutional codes C is the (full row rank ( n k ) × n ) parity-check matrix noted as H ( z ) . This matrix is the generator matrix of the dual code of C ; therefore, we can generate C as its kernel as follows:
C = k e r F [ z ] H ( z ) = v ( z ) F [ z ] n | H ( z ) v ( z ) = 0 .
The parity-check matrix plays a central role in the decoding process for block codes and convolutional codes. Although there is always a parity-check matrix for a block code, this is not the case for convolutional codes. In [11], it was shown that a convolutional code admits a parity-check matrix if and only if it is non-catastrophic. Any non-catastrophic convolutional code admits a left prime and row-reduced parity-check matrix [12].
When transmitting information through erasure channels we may lose some parts of the information. Convolutional codes have been proven to be good for communication over these channels [13].
In [13], a decoding algorithm for these kinds of channels was presented, and it is based on solving linear systems of equations. Consider that we receive the codeword v ( z ) = i = 0 j v i z i F q [ z ] , and that v i t , , v t are correct (have no erasures) but the coefficients afterward may have erasures. Let H ( z ) = j N H j z j F q [ z ] ( n k ) × n be a parity-check matrix of the code. We define the matrix as follows:
H j = H ν H 0 H ν H 0 F q ( j + 1 ) ( n k ) × ( ν + j + 1 ) n .
Then, H j v t ν T v t T v t + j T T = 0 . By reordering these equations we can obtain a linear system of the form
H e v e = b ,
where H e and v e are the columns of H j and the coordinates of v t ν T v t T v t + j T T that correspond with the erasures, respectively; and b = H c v c , where H c and v c are analogously defined concerning the correctly received information. Therefore, we can correct the erasures by solving a linear system with as many unknowns as erasures in the received codeword. Note that we have considered only part of the coefficients of v ( z ) , i.e., the coefficients v t ν , , v t , , v t + j . We refer to this sequence as a window, and we say that it is a window of j + ν + 1 size.
Notice that, in order to correct the erasures produced in a codeword, we need a previous safe space where all coefficients are correctly recovered. In the construction of the system (2), the ν vectors, v t ν , , v t 1 —which were previous to v t and the first coefficient of v ^ ( z ) with some erasure—conformed to this safe space.
Once we have a method for correcting the erasures produced by a channel, we may want to know the correction capability that a code can achieve. This capacity is described in terms of the distances of the code. For convolutional codes, there exist two different distances: the free distance and the column distance. The Hamming weight of a vector v ( z ) = i N 0 v i z i F q [ z ] n is given by the expression
w t ( v ( z ) ) = i N 0 w t ( v i ) ,
where w t ( v i ) is the number of non-zero coordinates of v i .
Definition 2. 
Let C be an ( n , k ) convolutional code, then the  free distance of C is
d f r e e ( C ) = m i n { wt ( v ( z ) ) : v ( z ) C \ { 0 } } .
The next theorem establishes an upper bound on the free distance of a convolutional code, and it is called the generalized Singleton bound.
Theorem 1 
([14]). Let C be an ( n , k , δ ) convolutional code. Then,
d f r e e ( C ) ( n k ) δ k + 1 + δ + 1 .
The free distance of a convolutional code allows us to know the correction capacity for errors and erasures once the whole codeword is received.
An advantage of convolutional codes over block codes is that they permit us to do a partial decoding, i.e., we can start recovering erasures even though we do not have the complete codeword. The measurement of the capability of this kind of correction is given by the column distances, which are defined for non-catastrophic convolutional codes [15].
Given a vector w ( z ) = i N 0 w i z i F [ z ] n and j 1 , j 2 N 0 with j 1 < j 2 , we defined the truncation of w ( z ) to the interval [ j 1 , j 2 ] as w [ j 1 , j 2 ] ( z ) = w j 1 z j 1 + w j 1 + 1 z j 1 + 1 + + w j 2 z j 2 .
Definition 3. 
Let C be an ( n , k , δ ) non-catastrophic convolutional code, then the j-column distance of C is defined by
d j c = m i n { v [ 0 , j ] ( z ) : v ( z ) C   w i t h   v   ( 0 ) 0 } .
The following inequalities can be directly deduced from the previous definitions [15]:
d 0 c d 1 c l i m j d j c = d f r e e ( C ) .
In addition to the free distance having a bound, the column distances also have a Singleton-like bound, which is given by the following theorem.
Theorem 2 
([15]). Let C be an ( n , k , δ ) non-catastrophic convolutional code. Then, for j N 0 , we have
d j c ( n k ) ( j + 1 ) + 1 .
Moreover, if d j c = ( n k ) ( j + 1 ) + 1 for some j N 0 , then d i c = ( n k ) ( i + 1 ) + 1 for i j .
As seen in (3), the column distances cannot be greater than the free distance. In fact, there exists an integer
L = δ k + δ n k
for which d j c can be equal to ( n k ) ( j + 1 ) + 1 , i.e., the bound can be held for j L and d j c < ( n k ) ( j + 1 ) + 1 , as well as for j > L [15]. An ( n , k , δ ) convolutional code with d j c = ( n k ) ( j + 1 ) + 1 for j L (or equivalently with d L c = ( n k ) ( L + 1 ) + 1 ) is called a maximum distance profile (MDP) code. Next, we detail a characterization of these codes in terms of their generator and parity-check matrices. For that, we need the definition of a superregular matrix.
The determinant of a square matrix A = [ μ i , ] over a field F is given by
| A | = σ S m ( 1 ) s g n ( σ ) μ 1 , σ ( 1 ) μ 2 , σ ( 2 ) μ m , σ ( m ) ,
where S m is the symmetric group. We will refer to term as the addends of | A | , that is, to the product of the form μ 1 , σ ( 1 ) μ 2 , σ ( 2 ) μ m , σ ( m ) and as a component of the factor of a term, i.e., the multiplicands of the form μ i , μ ( i ) for i { 1 , , m } . We will also say that a term is trivial if at least one of its components is zero, that is, the term is zero. Now, let A be a square submatrix of a matrix B; if all the terms of | A | are trivial, then we say that | A | is a trivially zero minor of B or that it is a trivial minor of B.
Definition 4 
([16,17]). Let n , m N and B F n × m , then B is superregular if all of its non-trivial zero minors are non-zero.
Theorem 3 
([15]). Let C be a non-catastrophic convolutional code with a right prime and column-reduced generator matrix G ( z ) = i = 0 μ G i z i F q [ z ] n × k , as well as a left prime and row-reduced parity-check matrix H ( z ) = i = 0 ν H i z i F q [ z ] ( n k ) × n , then the following statements are equivalent:
1. 
C is an MDP code
2. 
G G 0 G L G 0 , where G i = 0 for i > μ , and it also has the property that every full-size minor that is not trivially zero is non-zero.
3. 
H H 0 H L H 0 , where H i = 0 for i > ν , and it also has the property that every full-size minor that is not trivially zero is non-zero.
Lemma 1 
([13]). Let C be an ( n , k , δ ) MDP convolutional code. If any sliding window of length ( j 0 + 1 ) n at most ( j 0 + 1 ) ( n k ) erasures occur with j 0 { 0 , 1 , , L } , then we can completely recover the transmitted sequence.
This family of optimal codes requires a great deal of regularity in the sense of the previous theorem, and this causes the construction of the MDP convolutional codes to usually require big base fields. From the applied point of view, this is a concern. In last few years, the efforts of the community have been directed to improving this situation by either giving different constructions [18,19,20,21] or finding bounds [22,23]. Research has also led to the development of MDP convolutional codes over finite rings [24].
When MDP codes cannot perform a correction due to the accumulation of erasures, we have to consider some of the packets to be lost and to continue until a safe space is found again. To solve this situation, in [13,25,26,27], a definition for Reverse-MDP convolutional codes was provided. While the usual MDP convolutional codes can only carry out a forward correction, i.e., their decoding direction is from left to right, the reverse-MDP codes will allow a backward correction, i.e., a correction from right to left.
Proposition 1 
([26], Prop 2.9). Let C be an ( n , k , δ ) convolutional code with a right prime and column-reduced generator matrix G ( z ) . Let G ¯ ( z ) be the matrix obtained by replacing each entry g i j ( z ) of G ( z ) with g i , j ¯ z δ j g i , j ( z 1 ) , where δ j is the i-th column degree of G ( z ) . Then, G ¯ ( z ) is a right prime, and column-reduced generator matrix of an ( n , k , δ ) convolutional code C ¯ and
v 0 + z 1 z + + v s z s C v s + z s 1 z + + v 0 z s C ¯ .
We call C ¯ the reverse code of C . Similarly, we denote the parity-check matrix of C ¯ by H ¯ ( z ) = i = 0 ν H ¯ i z i .
Definition 5. 
Let C be an MDP ( n , k , δ ) convolutional code. We can then say that C is a reverse-MDP convolutional code if the reverse code C ¯ is also an MDP code.
In [13], it was proven that reverse-MDP codes can perform a correction from right to left as efficiently as an MDP code does in the opposite direction. However, to perform a backward correction, a safe space is required on the right side of the erasures. This can be easily seen in the following example.
Example 1. 
Let us assume that we are communicating through an erasure channel. If so, then we have recovered the information correctly up to an instant t and we can later receive the following pattern:
( A ) 14 v v v v v v ( B ) 108 | v v v ( C ) 122 | ( D ) 50 v v v ( E ) 38 ( F ) 34 | v v v ( G ) 122 ,
where ★ indicates that the corresponding component has been erased and v means that the component has been correctly received. If we use a ( 2 , 1 , 30 ) MDP convolutional code, we cannot perform a correction due to the accumulation of erasures at the beginning of the sequence. Nevertheless, if we consider a ( 2 , 1 , 30 ) reverse-MDP convolutional code and take the first 60 symbols of ( C ) as a safe space, then we can correct the erasures in ( B ) . We can repeat this method by taking the first 60 symbols in ( G ) and recovering the section ( F ) , that is, we build the linear system as in (2) by considering the following sets of symbols:
v v v v v v ( B ) 108 | v v v ( C ) 60 , a n d v v v ( E ) 34 ( F ) 34 | v v v ( G ) 60 .
This example shows that reverse-MDP convolutional codes can perform better than MDP convolutional codes when transmitting over an erasure channel since we can exploit its backward capability correction. However, this type of approach depends on the fact that over the communication there exists a long enough sequence of symbols that have been correctly received to play the role of a safe space for any of the decoding directions. The following codes are aimed at solving the situation in which a safe space cannot be found.
Definition 6 
([13]). Let H ( z ) = i = 0 ν H i z i F q [ z ] ( n k ) × n be a parity-check matrix of an ( n , k , δ ) convolutional code C and L δ n k + δ k , then we obtain the matrix
H H ν H 0 H ν H 0 F ( L + 1 ) ( n k ) × ( ν + L + 1 ) n ,
which is called a partial parity-check matrix of C . Moreover, C is said to be a  complete-MDP  convolutional code if, for any of its parity-check matrices H ( z ) , every full-size minor of H that is non-trivially zero is non-zero.
Complete-MDP convolutional codes have an extra feature on top of being able to perform a correction as a MDP or as reverse-MDP convolutional codes. If, in the process of decoding the code, we cannot accomplish the correction due to the accumulation of too many erasures, it can compute a new safe space to continue with the process as soon as a correctable sequence of symbols is found.
Theorem 4 
([13], Theorem 6.6). Given a code sequence from a complete-MDP convolutional code. If, in a window of size ( ν + L + 1 ) n , there are not more than ( L + 1 ) ( n k ) erasures, and if they are distributed in such a way that between position 1 and s n and between positions ( ν + L + 1 ) n and ( ν + L + 1 ) n s ( n k ) , for s = 1 , 2 , , L + 1 , i.e., there are no more than s ( n k ) erasures, then the full correction of all symbols in this interval will be possible. In particular, a new safe space can be computed.
For more constructions, examples, and further content on complete-MDP convolutional codes, we refer the reader to [12,13,17].
Example 2. 
Again, let us assume that we are using an erasure channel. In this case, we are not able to recover some of the previous symbols and we thus receive the following pattern:
| ( A ) 14 v v v ( B ) 21 ( C ) 12 v v v ( D ) 28 | v v v ( E ) 19 ( F ) 13 v v v ( G ) 30 ( H ) 13 | v v v ( I ) 30 ( J ) 6 v v v ( K ) 17 ( L ) 22 | .
Note that, if we use a ( 3 , 2 , 16 ) MDP or reverse-MDP convolutional code, we require a safe space of 48 symbols to correct the erasures in any of the directions, which we cannot find.
Nevertheless, if we use a ( 3 , 2 , 16 ) complete-MDP convolutional code, we still have one more feature to use. We can compute a new safe space by using Theorem 4, that is, find a window of size ( L + 1 + ν ) n = ( 24 + 1 + 16 ) 3 = 123 where not more than 25 erasures occur. In the received pattern of erasures we can find the following sequence:
v v v ( B ) 21 ( C ) 12 v v v ( D ) 28 | v v v ( E ) 19 ( F ) 13 v v v ( G ) 30 .
When erasures are recovered, we have a new safe space and we can perform the usual correction.
In [13], an algorithm to recover the information over an erasure channel by performing correction in both directions, i.e., forward and backward, is given.
We provide Algorithm 1, which is a new version of the abovementioned algorithms and includes the case for which the code can decode by using the complete-MDP property. We will maintain the notation given in [13], that is, the value 0 means that a symbol or a sequence of symbols has not been received and that 1 is correctly recovered. The function findzeros ( v ) returns a vector with the positions of the zeros in v , as well as forward ( C , j , v ) , backward ( C ¯ , j , v ) , and complete ( C , v ) , which are the forward, backward, and complete recovering functions, respectively. Note that these functions use the parity-check matrices of C and C ¯ to recover the erasures that appear in v within a window of size ( j + 1 ) n (when necessary).

2.2. 2D Convolutional Codes

Definition 7 
([1]). A 2D finite support convolutional code C of rate k / n is a free F [ z 1 , z 2 ] -submodule of F [ z 1 , z 2 ] n with rank k.
As for the 1D case, a full column rank polynomial matrix G ^ ( z 1 , z 2 ) , whose columns form a basis for the code, is such that we can express it as follows:
C = I m F [ z 1 , z 2 ] G ^ ( z 1 , z 2 ) = v ^ ( z 1 , z 2 ) F [ z 1 , z 2 ] n | v ^ ( z 1 , z 2 ) = G ^ ( z 1 , z 2 ) u ^ ( z 1 , z 2 ) with u ^ ( z 1 , z 2 ) F [ z 1 , z 2 ] k ,
which is called a generator matrix of C .
A polynomial matrix G ( z 1 , z 2 ) F [ z 1 , z 2 ] n × k is said to be right factor prime if G ( z 1 , z 2 ) = G ¯ ( z 1 , z 2 ) X ( z 1 , z 2 ) , then for some X ( z 1 , z 2 ) F [ z 1 , z 2 ] k × k and G ¯ ( z 1 , z 2 ) F [ z 1 , z 2 ] n × k , X ( z 1 , z 2 ) is unimodular (i.e., X ( z 1 , z 2 ) has a polynomial inverse). Again, similarly to the 1D case, if the code admits a right factor prime generator matrix, then it can be defined by using its full rank polynomial parity-check matrix H ^ ( z 1 , z 2 ) F [ z 1 , z 2 ] ( n k ) × n as follows:
C = K e r F [ z 1 , z 2 ] H ^ ( z 1 , z 2 ) = v ^ ( z 1 , z 2 ) F [ z 1 , z 2 ] n | H ^ ( z 1 , z 2 ) v ^ ( z 1 , z 2 ) = 0 .
Algorithm 1 Decoding algorithm for complete-MDP codes
Input: 
[ v 0 , , v ] the received sequence.
Output: 
[ v 0 , , v ] the corrected sequence.
  1:
i = 0
  2:
while  i   do
  3:
   f o r w a r d s u c c e s = 0
  4:
   b a c k w a r d s u c c e s = 0
  5:
   c o m p l e t e s u c c e s = 0
  6:
  if  v i = 0  then
  7:
    if  [ v i ν n , , v i 1 ] = 1  then
  8:
       j = L
  9:
      while  f o r w a r d s u c c e s = 0  and  j 0  do
10:
        if length(findzeros( [ v i , , v i + ( j + 1 ) n 1 ] )) ( j + 1 ) ( n k )  then
11:
           [ v i ν n , , v i + ( j + 1 ) n 1 ] forward ( C , j , [ [ v i ν n , , v i + ( j + 1 ) n 1 ] ] )
12:
           f o r w a r d s u c c e s = 1
13:
           i = i + ( j + 1 ) n 1
14:
         j = j 1
15:
    if  f o r w a r d s u c c e s 1  then
16:
      Aux=findzeros ( [ v i , , v i + ( L + 1 ) n 1 ] )
17:
       k = i + Aux [ length ( Aux ) ] 1
18:
      while  b a c k w a r d s u c c e s = 0 and k  do
19:
        if  [ v k , , v k + ν n 1 ] = 1  then
20:
           j = L
21:
          while  b a c k w a r d s u c c e s = 0  and  j 0  do
22:
            if length(findzeros( [ v k ( j + 1 ) n , , v k 1 ] )) ( j + 1 ) ( n k )  then
23:
               [ v k ( j + 1 ) n , , v k + ν n 1 ] backward ( C ¯ , j , [ v k ( j + 1 ) n , , v k + ν n 1 ] )
24:
               b a c k w a r d s u c c e s = 1
25:
               i = k + ν n 1
26:
             j = j 1
27:
         k = k + 1
28:
    if  b a c k w a r d s u c c e s 1  then
29:
       h = i
30:
      while  c o m p l e t e s u c c e s = 0  and  h  do
31:
         E 1 { length ( findzeros ( [ v h , , v h + ( j + 1 ) n 1 ] ) ) for j = 0 , , L }
32:
         E 2 { length ( findzeros ( [ v h + ( ν + L + 1 ) n ( j + 1 ) ( n k ) , , v h + ( ν + L + 1 ) n ] ) ) for j = 0 , , L }
33:
        if  E 1 [ j ] ( j + 1 ) ( n k )  and  E 2 [ j ] ( j + 1 ) ( n k ) for all j = 0 , , L  then
34:
           [ v h , , v h + ( ν + L + 1 ) n 1 ] complete ( C , [ v h , , v h + ( ν + L + 1 ) n 1 ] )
35:
           c o m p l e t e s u c c e s = 1
36:
           i = i + ( ν + L + 1 ) n
37:
         h = h + 1
38:
     i = i + 1
Since we are going to deal with a situation in which the elements of the codewords are distributed in the plane N 2 , we will consider the order given by
( a , b ) ( c , d ) if and only if a + b < c + d , or a + b = c + d and b < d .
The codeword v ^ ( z 1 , z 2 ) = 0 a + b γ v ( a , b ) z 1 a z 2 b F [ z 1 , z 2 ] n and the matrix H ^ ( z 1 , z 2 ) = 0 i + j ν H ( i , j ) z 1 i z 2 j F [ z 1 , z 2 ] ( n k ) × n are represented with its coefficients in order, respectively, as follows:
v ^ ( z 1 , z 2 ) = v ( 0 , 0 ) + v ( 1 , 0 ) z 1 + v ( 0 , 1 ) z 2 + + v ( γ , 0 ) z 1 γ + + v ( 0 , γ ) z 2 γ
and
H ^ ( z 1 , z 2 ) = H ( 0 , 0 ) + H ( 1 , 0 ) z 1 + H ( 0 , 1 ) z 2 + + H ( δ , 0 ) z 1 ν + + H ( 0 , δ ) z 2 ν .
Note that this depiction allows us to see the kernel representation in a more detailed manner as
0 a + b γ 0 i + j ν H ( i , j ) v ( a i , b j ) z 1 a z 2 b = 0 ,
where v ( l , k ) = 0 if l + k > γ + ν or l + k < 0 . It is also possible to denote this product using constant matrices
Hv = 0 ,
where
v = v ( 0 , 0 ) T v ( 1 , 0 ) T v ( 0 , 1 ) T v ( 2 , 0 ) T v ( 1 , 1 ) T v ( 0 , γ ) T T
is a vector in F ( γ + 1 ) ( γ + 2 ) 2 n , and H is a ( γ + ν + 1 ) ( γ + ν + 2 ) 2 ( n k ) × ( γ + 1 ) ( γ + 2 ) 2 n matrix over F . An example of this matrix correspondent to a parity-check matrix H ^ ( z 1 , z 2 ) = 0 i + j 3 H ( i , j ) z 1 i z 2 j is presented in Figure 1. Is easy to see that it does not follow the same pattern of construction as the partial parity-check matrix in the 1D case. Note that all the matrix coefficients H ( i , j ) of H ^ ( z 1 , z 2 ) appeared in all the columns following the previously established order ≺ with the particularity that, for t = 0 , 1 , 2 , in the block columns with indices t ( t + 1 ) 2 + 1 , t ( t + 1 ) 2 + 2 , , t ( t + 1 ) 2 + t + 1 , the coefficients H ( i , j ) with i + j = d for d = 0 , 1 , 2 , , δ 1 were separated from the matrices H ( i , j ) with i + j = d + 1 by t zero blocks.
Consider now that v ^ ( z 1 , z 2 ) F [ z 1 , z 2 ] has been transmitted over an erasure channel. We define the support of v ^ ( z 1 , z 2 ) = ( a , b ) N 0 2 v ( a , b ) z 1 a z 2 b as the set of indices of the coefficients of v ^ ( z 1 , z 2 ) that are non-zero, i.e.,
supp ( v ^ ( z 1 , z 2 ) ) = { ( a , b ) N 0 2 : v ( a , b ) 0 } .
Let E ( v ^ ( z 1 , z 2 ) ) be the set of indices of the support of v ^ ( z 1 , z 2 ) in which there are erasures in the corresponding coefficients of v ^ ( z 1 , z 2 ) and E ¯ ( v ^ ( z 1 , z 2 ) ) = supp ( v ^ ( z 1 , z 2 ) ) \ E ( v ^ ( z 1 , z 2 ) ) , i.e., the set of indices of the support of v ^ ( z 1 , z 2 ) correspond to the coefficients that were correctly received. For the sake of simplicity, and if the context allows it, we will denote E ( v ^ ( z 1 , z 2 ) ) as E . In Figure 2 an example of erasures distributed in the plane is presented.
Since we have the kernel representation (4) of the code in a block fashion, we can consider the equivalent linear system H E v E = H E ¯ v E ¯ , where H E and H E ¯ denote the submatrices of H where block columns are indexed by E and E ¯ , respectively. Correspondingly, v E and v E ¯ refer to the subvectors of v , whose block rows are indexed by E and E ¯ , respectively. In order to recover the erasures, we solved the linear system H E v E = H E ¯ v E ¯ by considering the erased components of v E as the unknowns. Note that H E ¯ v E ¯ is known.
As pointed out in [9], this system is massive even when the parameters of the code are small. The authors in this paper developed an algorithm to deal with this situation in being able to recover the information more efficiently. They proposed to decode it by a set of lines, that is, to choose a set of erasures in a line E l (i.e., horizontal ( E h ), vertical ( E v ), or diagonal ( E d )), as well as to define a neighborhood for this set of erasures and then use all the correct information within these related coefficients to construct and solve a linear system.
Next, we describe such a method for the correction of erasures in horizontal lines, wherein the method for vertical and diagonal will be analogous. Let us consider a subset of E , E s h , where its subindices lie in an horizontal line with the vertical coordinate s, that is,
E s h = { ( r , s ) r N 0 } E .
With this in mind we can “rewrite” (4) as
H E h v E h = H E h ¯ v E h ¯ ,
where—similar to the above— H E h and H E h ¯ indicate the submatrices of H that are indexed by E h and E h ¯ = s u p p ( v ^ ( z 1 , z 2 ) ) \ E h block-wise, respectively, as well as where v E h and v E h ¯ are defined analogously. (Note that v E h ¯ may contain erasures.)
Definition 8. 
Let W t be a horizontal window of length t + 1 . i.e.,
W t = { ( r , s ) , ( r + 1 , s ) , , ( r + t , s ) } ,
for some r N 0 . We then define the following neighborhood of W t as
Ω ν ( W t ) = ( a , b ) | r ν a r + t + ν , s ν b s , a + b r + s ν , r ν , s ν .
Example 3. 
Let W 3 = { ( 3 , 4 ) , ( 4 , 4 ) , ( 5 , 4 ) , ( 6 , 4 ) } , which is represented in Figure 3 as big red dots. In addition, Ω 2 ( W 3 ) is depicted in Figure 3.
Note that the neighborhood is constituted of an aligned set of triangles. The main role of the above defined neighbors in the decoding process is described in the next set of results from [9].
Lemma 2 
([9]). Let C = K e r F [ z 1 , z 2 ] H ^ ( z 1 , z 2 ) with H ^ ( z 1 , z 2 ) = 0 i + j ν H ( i , j ) z 1 i z 2 j . Suppose that v ^ ( z 1 , z 2 ) C is a transmitted codeword, then E is the support of its coefficients with erasures and E h E is the support of the coefficients with erasures that are distributed on a horizontal line in N 0 2 in a window W of length t + 1 such that E h W . Consider H and v as in (4), as well as H W and v W as in (6). Then, define the vector v Ω by selecting the coefficients v ( c , d ) of v with ( c , d ) Ω ν ( W ) \ W . Define H Ω ν as a submatrix of H accordingly. Then, it holds that
H W v W = H Ω ν v Ω ν ,
where
H W = H ( 0 , 0 ) H ( 1 , 0 ) H ( 0 , 0 ) H ( 2 , 0 ) H ( 1 , 0 ) H ( 0 , 0 ) H ( ν , 0 ) H ( ν 1 , 0 ) H ( ν 2 , 0 ) H ( ν , 0 ) H ( ν 1 , 0 ) H ( 0 , 0 ) H ( 0 , 0 ) H ( ν , 0 ) H ( ν 1 , 0 ) H ( ν , 0 ) ,
is an ( n k ) ( t + 1 + ν j ) × n ( t + 1 ) matrix.
It is easy to see that the structure of the matrix in (8) is the same as the partial parity-check matrix of a 1D convolutional code. By taking into account this similarity we define the 1D convolutional code C h , which is associated with a 2D convolutional code C as follows:
C h = K e r F [ z ] H ^ ( h ) ( z ) ,
where
H ^ ( h ) ( z ) = H ( 0 , 0 ) + H ( 1 , 0 ) z + + H ( ν , 0 ) z ν
with column distances d j c ( ) , 0 .
Lemma 3 
([9]). Let C = K e r F [ z 1 , z 2 ] H ^ ( z 1 , z 2 ) with H ^ ( z 1 , z 2 ) = 0 i + j ν H ( i , j ) z 1 i z 2 j . Suppose that v ^ ( z 1 , z 2 ) C is a transmitted codeword, E is the support of its coefficients with erasures, and E h E is the support of the coefficients with its erasures distributed on a horizontal line in N 0 2 in a window W of length t + 1 such that E h W . If Ω ν ( W t ) contains only indices in E h (and not in E \ ( E h ) ), we have
H W v W = a j 0 ,
where a j 0 = H Ω ν v Ω ν is known and H W is as in (8). Moreover, consider the 1D convolutional code C h with a parity check as defined in (10) and with a column distance d , 0 . If there exists 0 such that at most there are d 0 c 1 erasures that occur in any ( 0 + 1 ) n consecutive components of v W , then we can completely recover the vector v W .
The requirement for Ω W to contain just the erasures in E h plays the role of the safe space for the 1D convolutional codes.
Example 4. 
Let C be a 2D convolutional code with a parity-check matrix as follows:
H ^ ( z 1 , z 2 ) = H ( 0 , 0 ) + H ( 1 , 0 ) z 1 + H ( 0 , 1 ) z 2 + H ( 2 , 0 ) z 2 + H ( 1 , 1 ) z 1 z 2 + H ( 0 , 2 ) z 2 2 .
We define the 1D convolutional codes C h = K e r F [ z ] H ^ ( 0 ) , where
H ^ ( 0 ) = H ( 0 , 0 ) + H ( 1 , 0 ) z + H ( 2 , 0 ) z 2 .
Let us assume that we receive the pattern of erasures that are shown in Figure 4 (red dots), and let us consider the erasures on the first line (big red dots), i.e.,
E 3 h = { v ( 3 , 3 ) , v ( 4 , 3 ) , v ( 5 , 3 ) }
and set W = E 3 h . To correct E 3 h , we use the code C by Lemma 3. To do so, we build a system as in (3), where
H E h 0 = H ( 0 , 0 ) H ( 1 , 0 ) H ( 0 , 0 ) H ( 2 , 0 ) H ( 1 , 0 ) H ( 0 , 0 ) H ( 2 , 0 ) H ( 1 , 0 ) H ( 0 , 0 ) H ( 2 , 0 ) H ( 1 , 0 ) H ( 2 , 0 ) ; v E h = v ( 3 , 4 ) v ( 4 , 4 ) v ( 5 , 4 ) v ( 6 , 4 )
and
a 0 = H ( 0 , 2 ) H ( 1 , 1 ) H ( 2 , 0 ) 0 H ( 0 , 1 ) H ( 1 , 0 ) H ( 0 , 2 ) H ( 1 , 1 ) H ( 2 , 0 ) 0 H ( 0 , 1 ) H ( 0 , 2 ) H ( 1 , 1 ) 0 H ( 0 , 1 ) H ( 0 , 2 ) H ( 1 , 1 ) 0 H ( 0 , 1 ) H ( 0 , 2 ) H ( 1 , 1 ) 0 H ( 0 , 1 ) H ( 0 , 2 ) H ( 1 , 1 ) v ( 3 , 2 ) v ( 2 , 3 ) v ( 1 , 4 ) v ( 4 , 2 ) v ( 3 , 3 ) v ( 2 , 4 ) v ( 5 , 2 ) v ( 4 , 3 ) v ( 6 , 2 ) v ( 5 , 3 ) v ( 7 , 2 ) v ( 6 , 3 ) v ( 8 , 2 ) v ( 7 , 3 )
In Lemma 3, it is said that one can conduct a partial correction in line by using the column distances of the used convolutional code. In Example 5, we can see how this partial recovery is performed.
Example 5. 
Let C be a ( 3 , 1 , 2 ) 2D convolutional code with a parity-check matrix H ( z 1 , z 2 ) = H ( 0 , 0 ) + H ( 1 , 0 ) z 1 + H ( 0 , 1 ) z 2 + H ( 2 , 0 ) z 1 2 + H ( 1 , 1 ) z 1 z 2 + H ( 0 , 2 ) z 2 2 . Let us assume that we receive the pattern of erasures that are shown in Figure 4 (red dots). As mentioned above, we will try to recover the horizontal lines from below to above; therefore, we will try to recover the erasures on the first line (big red dots), i.e., E h = { v ( 3 , 3 ) , v ( 4 , 3 ) , v ( 5 , 3 ) } . Since we have some erasures on the top line, we will consider the code C h associated with the neighbor Ω 2 ( E h ) (i.e., the whole gray area).
We assumed that the 1D convolutional code C 0 has the column distances d 0 = 2 , d 1 = 4 , d 2 = 5 , and d 3 = 6 . Note that the total amount of erasures holds that 6 d 3 1 = 6 ; therefore, we have to consider a window of a ( L + 1 ) n = ( 3 + 1 ) 3 = 12 size (the big red dots and black dot). By following the proof of Lemma 3 in [9], we picked the first ( L + 1 ) ( n k ) = 32 equations from the system H ˜ E h 0 v ˜ E h = a ˜ 0 and obtained the following system:
H ( 0 , 0 ) H ( 1 , 0 ) H ( 0 , 0 ) H ( 2 , 0 ) H ( 1 , 0 ) H ( 0 , 0 ) H ( 2 , 0 ) H ( 1 , 0 ) H ( 0 , 0 ) v ( 3 , 3 ) v ( 4 , 3 ) v ( 5 , 3 ) v ( 6 , 3 ) = a ˜ 0 .
As proven in [13], once we solved this system we were able to successfully recover the erasures in v ( 3 , 3 ) . We then shifted the window and repeated the process until the recovery was fully completed.
As we mentioned at the beginning of this section, analogous methods can be described by taking lines of erasures in a vertical or diagonal fashion. In [9], it was said that, to decode a set of erasures in the grid N 2 , one can carry out the horizontal decoding as was explicitly conducted above in the “from below to above” direction until is not possible to correct anymore. Afterward, execute the algorithm by taking the vertical lines of the erasures and correcting them in the “from left to right” direction until no more corrections can be made. Finally, we followed the same procedure with diagonal lines of erasures, and we then repeated this cycle until any of them were able to recover further information.

3. Construction of 2D Convolutional Codes from 1D Convolutional Codes

In this section, we propose a construction of 2D convolutional codes from a 1D convolutional code.
Let C ^ be an ( n , k ) non-catastrophic 1D convolutional code with a parity-check matrix H ^ ( z ) = i = 0 2 ν H i z i F q [ z ] ( n k ) × n . Consider the 2D convolutional code C , which is defined by the parity-check matrix
H ( z 1 , z 2 ) = i = 0 ν j = i 2 i H j z 1 2 i j z 2 j i             = H 0 + H 1 z 1 + H 2 z 2 + H 2 z 1 2 + H 3 z 1 z 2                      + H 4 z 2 2 + + H ν z 1 ν + + H 2 ν z 2 ν .
We consider the 1D convolutional codes associated with C (named horizontal, vertical, and diagonal), which are constructed by its line positions as follows:
  • Horizontal: C h = K e r H h ( z ) ;
  • Vertical: C v = K e r H v ( z ) ;
  • Diagonal: C d = K e r H d ( z ) ,
where the matrices H h , H v , and H d F q [ z ] ( n k ) × n are defined by
H h ( z ) = i = 0 ν H i z i = H 0 + H 1 z + H 2 z 2 + + H ν z ν . H v ( z ) = i = 0 ν H 2 i z i = H 0 + H 2 z + H 4 z 2 + + H 2 ν z ν . H d ( z ) = i = 0 ν H ν + i z i = H ν + H ν + 1 z + H ν + 2 z 2 + + H 2 ν z ν .
Naturally, at this point, one wants to know if the optimal properties of C ^ are inherited by the line associated codes C h , C v , and C d . In particular, we were interested in the complete-MDP property. In general, these codes did not inherit this property as the next examples show.
Example 6. 
In [28], Almeida and Lieb presented a description of all ( 2 , 1 , 2 ) complete-MDP convolutional codes over the smallest possible fields. Let C ^ be the one of these ( 2 , 1 , 2 ) convolutional code over F 13 , which is defined by the parity-check matrix H ^ ( z ) = H o + H 1 z + H 2 z 2 , where H 2 = [ 1 , 1 ] , H 1 = [ 2 , 9 ]   a n d   H 0 = [ 8 , 8 ] , which is a complete-MDP (as stated in Theorem 13 [28]). Note that the partial parity-check matrices for the vertical, horizontal, and diagonal associated codes are
H v = H 2 H 0 H 2 H 0 H 2 H 0 H h = H 1 H 0 H 1 H 0 H 1 H 0 H d = H 2 H 1 H 2 H 1 H 2 H 1 ,
respectively, and the parameters of these codes are ( 2 , 1 , 1 ) . For H v , the non-trivial zero minor, which is zero, can be obtained by considering columns 1, 5, and 6:
1 0 0 0 8 8 0 1 1 ,
which means that C v is not a complete-MDP. With a similar reasoning, we see that C h and C d are also not complete-MDPs. As such, in this case, no associated code maintained the complete-MDP property.
Next, we considered a 1D complete-MDP, which is defined in [17], as follows:
Lemma 4 
([17]). For a , b N , with b < a , let
X = 1 0 1 0 1 1 Z a × a
and let X ^ : = ( X b ) i 1 , . . . , i r j 1 , . . . , j r be constructed out of rows 1 i 1 i r a and columns 1 j 1 j r a of
X b = 1 0 b 1 b b 1 1 0 1 b b 1 b 1 1 .
Then, we have d e t ( X ^ ) 0 and d e t ( X ^ ) > 0 j l { i l b , , i l } for l = 1 , , r .
Theorem 5 
([17]). With the notation from the preceding lemma, choose X F ( ν + L + 1 ) n × ( ν + L + 1 ) n , i.e., a : = ( ν + L + 1 ) n , as well as b : = ν n + k .
For j = 0 , . . . , L , set I j = { ( ν + j ) n + k + 1 , . . . , ( ν + j + 1 ) n } and I = j = 0 L I j . Then, those rows of X b , whose indices lie in I, form the partial parity-check matrix of an ( n , k , δ ) complete-MDP convolutional code if the characteristic of the field is greater than ν n + k 1 / 2 ( ν n + k ) ( n k ) ( L + 1 ) · ( ( n k ) ( L + 1 ) ) 1 / 2 ( n k ) ( L + 1 ) .
Let C ^ be the 1D complete-MDP convolutional code defined in Theorem 5 with the degree 2 δ . In the construction, it was assumed that 2 δ = 2 ν ( n k ) . The associated line codes defined from C ^ had the parameters ( n , k , δ ) .
The next theorem shows that the associated vertical 1D convolutional code was also a complete-MDP.
Theorem 6. 
Let C be a 2D convolutional code that was constructed as in (12) by using a ( n , k , 2 δ ) 1D complete-MDP convolutional code C ^ , as shown in Theorem 5 with the parity-check matrix H ( z ) = i = 0 2 ν H i z i , where 2 ν = 2 δ n k . Then, the associated line code C v with the parity-check matrix
H v ( z ) = i = 0 ν H 2 i z i
is an ( n , k , δ ) 1D complete-MDP convolutional code.
Proof. 
The proof follows since every full-size minor of H v that is not trivially zero is a non-trivial minor of X b , which is a super-regular matrix by Lemma 4. In fact, Lieb showed Theorem 5 [17]. This proof involves demonstrating that the conditions of the indices of the columns in the partial parity-check matrix H , which describes non-trivial zero full-size minors, are equivalent to the conditions outlined in Lemma 4. Moreover, both sets of conditions were found to be mutually equivalent to j l { l + k x , , l + k x + ν n + k } , where x { 0 , , L } is chosen such that l { x ( n k ) + 1 , , ( x + 1 ) ( n k ) } . Now, to prove the theorem, it is sufficient to observe that the columns of H v still satisfy j l { l + 2 k x , , l + 2 k x + 2 ν n + k } \ { ( x + 1 ) n + 1 , ( x + 2 ) n } , where x { 0 , , L / 2 } is chosen such that l { 2 x ( n k ) + 1 , , ( 2 x + 1 ) ( n k ) } . It is worth remembering that H v is obtained from H by removing all the block-rows (of size n k ) and block-columns (of size n) with odd indices. □
Although the horizontal and diagonal associated line codes do not maintain the optimality as is the case in the vertical one, these codes still satisfy a weaker optimality property.
Theorem 7. 
Let C be a 2D convolutional code, constructed as in (12), by using a ( n , k , 2 δ ) 1D complete-MDP convolutional code C ^ , as represented in Theorem 5 with the parity-check matrix H ( z ) = i = 0 2 ν H i z i , where 2 ν = 2 δ n k . Then, the horizontal C h and the reverse diagonal C d ¯ associated line codes are expressed with the parity-check matrices
H h ( z ) = i = 0 ν H i z i = H 0 + H 1 z + H 2 z 2 + + H ν z ν . H d ¯ ( z ) = i = 0 ν H 2 ν i z i = H ν + H ν + 1 z + H ν + 2 z 2 + + H 2 ν z ν .
respectively, which are ( n , k , δ ) 1D convolutional codes with the column distance d ν c = ( n k ) ( ν + 1 ) + 1 .
Proof. 
By ([15], Prop 2.1), we need to show that the matrices
H h H 0 H ν H 0 H d ¯ H 2 ν H ν H 2 ν
have the property that every full-size minor that is non-trivially zero is non-zero. Note that H d ¯ can be viewed as the submatrix of the partial parity-check matrix of C ^ , H by considering it as the first ( ν + 1 ) ( n k ) rows and ( ν + 1 ) n columns. In this context, considering that H is superregular, we can deduce that, within H d ¯ , every non-trivial full-size minor is non-zero.
For H h , note that it is exactly the submatrix of H that considers the first ( ν + 1 ) ( n k ) rows and the columns with indices in the set { 2 ν n + 1 , , ( 3 ν + 1 ) n + 1 } , as well as the conditions over the columns of the nontrivial minors that imply the condition of Lemma 4. □
While it is demonstrated in this section that the associated line 1D convolutional codes do not necessarily inherit the complete-MDP property of the 1D convolutional code C ^ , there exist codes in which this phenomenon occurs. The next section presents a construction of a 2D convolutional code from a complete-MDP 1D convolutional code, whose associated line of 1D convolutional codes are also complete-MDPs. These types of codes are the ones that perform better with the decoding procedure that we are considering, which we will also see later in Section 5.

4. An Optimal Construction

In this section, we present the construction of an optimal 2D convolutional code in the sense that all its associated line codes hold the complete-MDP property. In this case, we will use a complete-MDP 1D convolutional code that was introduced in [17].
Theorem 8 
([17]). Let n , k , δ N with k < n and ( n k ) | δ , and let α be a primitive element of a finite field F p N with N > ( L + 1 ) 2 ( ν + 2 ) n k 1 . Then, H ( z ) = i = 0 ν H i z i with
H i = α 2 i n α 2 ( i + 1 ) n 1 α 2 ( i + 1 ) n k 1 α 2 ( i + 2 ) n k 2
for i = 0 , , ν = δ n k is the parity-check matrix of an ( n , k , δ ) complete-MDP convolutional code.
In order to prove the optimality of our constructions, we will need the next result, which states that the matrices considered in Theorem 8 are superregular.
Proposition 2 
([16]). Let α be a primitive element of a finite field F = F p N , and let B = [ b i ] be a matrix over F with the following properties:
1. 
If b i 0 , then b i = α β i for a positive integer β i ;
2. 
If b i = 0 , then b i = 0 for any i > i , or b i = 0 for any < ;
3. 
If < , b i 0 , and b i 0 , then 2 β i β i ;
4. 
If i < i , b i 0 , and b i 0 , then 2 β i β i .
Suppose N is greater than any exponent of α appearing as a non-trivial term of any minor of B, then B is superregular.
It is worth mentioning that if we have two matrices A and B that are equivalent (i.e., that we can obtain A from B by using row and column linear transformations), and if one of them holds the hypothesis of the theorem, then both of them are superregular.
Theorem 9. 
Let C be a 2D convolutional code, which was constructed as in (12) by using a ( n , k , 2 δ ) 1D complete-MDP convolutional code C ^ , as expressed in Theorem 8, with the parity-check matrix H ( z ) = i = 0 2 ν H i z i , where ν = δ n k . Then, the associated line codes, C h , C v , and C d are ( n , k , δ ) 1D complete-MDP convolutional codes.
Proof. 
Recall that the associated line 1D convolutional codes C h , C v , and C d have the parity-check matrices
H h ( z ) = i = 0 ν H i z i = H 0 + H 1 z + H 2 z 2 + + H ν z ν . H v ( z ) = i = 0 ν H 2 i z i = H 0 + H 2 z + H 4 z 2 + + H 2 ν z ν . H d ( z ) = i = 0 ν H ν + i z i = H ν + H ν + 1 z + H ν + 2 z 2 + + H 2 ν z ν .
To see that C h , C v , and C d are 1D complete-MDP codes, we need to prove that the non-trivial zero full-size minors of the matrices
H h = H ν H ν 1 H 0 H ν H 1 H 0 H ν H 1 H 0 F ( L + 1 ) ( n k ) × ( ν + L + 1 ) n ,                 H v = H 2 ν H 2 ν 2 H 0 H 2 ν H 2 H 0 H 2 ν H 2 H 0 F ( L + 1 ) ( n k ) × ( ν + L + 1 ) n , H d = H 2 ν H ν 1 H ν H 2 ν H ν + 1 H ν H 2 ν H ν + 1 H ν F ( L + 1 ) ( n k ) × ( ν + L + 1 ) n .
are non-zero, where L = L 2 . To this end, we will see that they satisfy the conditions of Proposition 2, i.e., that they are superregular.
First, since C ^ is a complete-MDP code, we have
H = H 2 ν H ν 1 H 0 H 2 ν H 1 H 0 H 2 ν H 1 H 0 ,
which has the property that all its full-size minors that are not trivially zero are non-zero. Note that we can see H v as a submatrix of H when removing all the block-rows and block-columns with odd indices. Now, is easy to see that if all of the non-trivial zero full-size minors of H v are not trivially minors of H , then they are non-zero.
Finally, through following the same argument as in the proof of Theorem 8 in [17], if we permute the columns of H h and H d in such a way that they have reverse order, then we have
H 0 H ν 1 H ν H 0 H ν 1 H ν H 0 H 1 H ν and H ν H 2 ν 1 H 2 ν H ν H 2 ν 1 H 2 ν H ν H ν + 1 H 2 ν ,
which keeps the same terms for the non-trivial zero full-size minors. It is easy to see that these matrices fulfill the conditions of Proposition 2, thus making them superregular matrices. □
Example 7. 
Consider the ( 3 , 1 , 4 ) 1D convolutional code C over F p N , which was constructed as in Theorem 8, having the parity-check matrix H ( z ) = H 0 + H 1 z + H 2 z 2 with H 0 = α α 2 α 4 α 2 α 4 α 8 , H 1 = α 8 α 16 α 32 α 16 α 32 α 64 , and H 2 = α 64 α 128 α 256 α 128 α 256 α 512 . Note that in order to obtain a complete-MDP code, N > 7168 . The 2D convolutional code obtained by following the proposed construction was a ( 3 , 1 , 1 ) 2D convolutional code with the parity-check matrix
H ( z 1 , z 2 ) = H 0 + H 1 z 1 + H 2 z 2 ,
and its line associated codes had the following parity-check matrices:
H h ( z ) = H 0 + H 1 z ; H v ( z ) = H 0 + H 2 z ; H d ( z ) = H 1 + H 2 z .
Note that for C and L = 6 , its line associated codes are therefore L = 3 . Now, it is clear that H v is a submatrix of H when looking at (14); on the other hand, H h and H d cannot be seen as submatrices of H .
H = H 2 H 1 H 0 H 2 H 1 H 0 H 2 H 1 H 0 H 2 H 1 H 0 H 2 H 1 H 0 H 2 H 1 H 0 H 2 H 1 H 0 ; H v = H 2 H 0 H 2 H 0 H 2 H 0 H 2 H 0 .

5. Decoding Algorithm

In this section, we provide a decoding algorithm for the 2D convolutional codes whose associated line 1D convolutional codes were complete-MDPs. We will use Algorithm 1, which was introduced in the previous section, to perform the corrections over the lines (i.e., horizontal, vertical, and diagonal).
First, we present the construction of a sort algorithm to obtain the lines for which we will perform the correction of erasures. This procedure will provide the set of coefficients of the received codeword v ( z 1 , z 2 ) for the line decoding that was presented in the previous section depending on the orientation of the line we need to correct. The mergesort ( E ) function will sort the set E N 2 by using the above order ≺.
This algorithm chooses the first horizontal line that has some erasure (i.e., the line E s h where s is the minimum integer such that E s h ), as well as the first vertical line that has some erasure or the last diagonal lien with erasures. By doing this, we can correct the lines as explained above. Algorithm 2 depicts the procedure explained in [9] and above in a pseudo-code fashion.
In the proposed routine, we start by extracting the coordinates with erasures E , and we later use Algorithm 3 to obtain the sequence of vectors to be corrected by Algorithm 1. In this case, Algorithm 1 can perform analogously but by building the linear systems as in Lemma 3. After performing the decoding, depending on the amount of erasures that are recovered, it changes orientation or returns back to horizontal decoding. When it cannot correct more erasures in any orientation ( f a i l = 3 ), it stops.
Algorithm 2 Decoding 2D convolutional codes
Input: 
v ( z 1 , z 2 ) , received codeword
Output: 
v ( z 1 , z 2 ) , corrected codeword
  1:
f a i l = 0
  2:
m e d = 0
  3:
o r i = 0
  4:
E = { v ( a , b ) | v ( a , b ) v ( z 1 , z 2 ) and v ( a , b ) = 0 }
  5:
while  f a i l < 3   do
  6:
     if  m e d = 0  then {Decides orientation depending on m e d }
  7:
             o r i = h
  8:
             e x t = ( 0 , L )
  9:
     else if  m e d = 1  then
10:
             o r i = v
11:
             e x t = ( L , 0 )
12:
     else if  m e d = 2  then
13:
             o r i = d
14:
             e x t = ( L , L )
15:
      E o r i = A l g o r i t h m 2 ( E , o r i )
16:
      e min = min ( a , b ) E o r i
17:
      e max = max ( a , b ) E o r i
18:
      [ v 0 , , v ] [ v ( e min ) , , v ( e max + e x t ) ]
19:
      [ v 0 , , v ] A l g o r i t h m 1 ( C j 0 , [ v 0 , , v ] )
20:
      R o r i = { ( a , b ) | v i = v ( a , b ) and v i = 1 } {correct coordinates}
21:
      E = E \ R o r i
22:
     if length ( R o r i ) = + 1  then {All corrected}
23:
             f a i l = 0
24:
             m e d = 0
25:
     else if length ( R o r i ) > + 1 length ( E o r i )  then {Some corrected}
26:
             f a i l = 0
27:
             m e d = m e d + 1
28:
     else if length ( R o r i ) = + 1 length ( E o r i )  then {None corrected}
29:
             f a i l = f a i l + 1
30:
             m e d = m e d + 1
Algorithm 3 Choosing the set of coefficients E i to be corrected
Input: 
v ( z 1 , z 2 ) , E and an orientation h , v or d
Output: 
E i with i { h , v , d } .
  1:
if i=h then
  2:
    c h = min ( a , b ) E { b }                                             {We pick the index of the first row}
  3:
    E h mergesort ( { ( a , b ) | ( a , b ) E and b = c h } )
  4:
else if i=v then
  5:
    c v = min ( a , b ) E { a }                                             {We pick the index of the first row}
  6:
    E v mergesort ( { ( a , b ) | ( a , b ) E and a = c v } )
  7:
else if i=d then
  8:
    c d = max ( a , b ) E { a + b }                                {We pick the index of the last diagonal}
  9:
    E d mergesort ( { ( a , b ) | ( a , b ) E and a + b = c d } )
Very recently, in [10], an alternative decoding algorithm for 2D convolutional codes was presented. The proposed method also follows the idea of decoding in two directions: horizontal and vertical. Although the main guideline is similar, the performance and the algebraic properties used are very different. Let G ( z 1 , z 2 ) be the generator matrix of a 2D convolutional code, which can be expressed as follows:
G ( z 1 , z 2 ) = i = 0 μ 1 G i ( 2 ) ( z 2 ) z 1 i ,
where μ 1 = deg z 1 ( G ( z 1 , z 2 ) ) , and G i ( 2 ) ( z 2 ) = i G i j z 2 i . Then, we can encode the message
u ( z 1 , z 2 ) = j = 0 m 2 u j ( 2 ) ( z 2 ) z 1 j
to the codeword
v ( z 1 , z 2 ) = j = 0 m 2 + μ 2 v j ( 2 ) ( z 2 ) z 1 j
with
v j ( 2 ) ( z 2 ) = l + k = j G l ( 2 ) ( z 2 ) u k ( 2 ) ( z 2 ) .
Note that, for this description, the coefficients of v j ( 2 ) ( z 2 ) form the j-th horizontal line, and the analogously coefficient v j ( 1 ) ( z 1 ) determine the j-th vertical line.
There are two main differences with respect to the algorithm described in this paper, the first of which is the decoding performance in a given line. While Algorithm 1 tries forward, backward, and complete-MDP (if possible) decoding for a given line, the method from [10] performs partial corrections that may leave gaps of erasures, whereby when it later it tries to fill those gaps it is always in the forward direction. This last-mentioned process of “filling the gaps” was performed by correcting one point at a time; however, this may make this algorithm less efficient in terms of time.
The second difference was the requirement of a neighborhood. Whereas our algorithm needs a safe neighborhood to perform a correction, this new approach does not require it. This allows it to have more plasticity, that is, it can correct a line when the adjacent ones still have erasures. This feature makes this new approach more flexible against different erasure patterns.
Example 8. 
Let us consider Example 3 in [10]. In Figure 5, the pattern of erasures (∗) considered in that example is shown. We will use this example to understand how different the behavior of the algorithms is. We assumed that we received a codeword (with erasures) v ^ ( z 1 , z 2 ) = 0 i , j 6 v ^ i j z 1 i z 2 j , where ∗ denotes an erasure and v i j = v i j , 1 v i j , 2 for i , j = 1 , , 6 . By applying the algorithm in [10], the order of decoding was as follows: First—by horizontal decoding— v 01 , v 03 , and v 04 were recovered. Then—by vertical decoding— v 20 , v 30 , v 11 , v 31 , v 12 , and v 32 were recovered. By horizontal decoding, we then obtained the rest of v 13 , v 14 , v 23 , v 24 , v 33 , and v 36 .
If our decoding method is employed, it can be observed that we also can take back the information but in the following different order:
1. 
We started with horizontal decoding and found v 01 , v 03 , and v 04 .
2. 
Since we could not decode the second line due to an excessive accumulation of erasures, we changed to vertical decoding. Here, we could compute v 20 , v 30 , v 11 , v 31 , v 12 , and v 32 .
3. 
Again, we could not continue due to the amount of erasures; as such, we moved to diagonal decoding, and—through this approach—we recovered v 46 .
4. 
Finally, we switched to horizontal decoding. Through this approach, we could decode the rest of the erasures one line at a time.
In this particular example, in which neither the partial decoding of [10] nor the complete-MDP property of our algorithm were used, it is easy to see that both of them produced similar behavior. When the more complex pattern of erasures happens and these features are needed, then the performance for these two algorithms may differ. With this in mind, we conjectured that whenever a correction is possible from both routines, then the efficiency differs whether this “special feature” is needed for each of the cases. That is, if one algorithm needs its own special property and the other does not, then the second one will be more efficient when establishing the time computation. To decide which of these algorithms works more efficiently and under which circumstances, a deeper and more complex analysis is required that is beyond the aim of this paper.

6. Conclusions and Further Research

Throughout this paper, we introduced a general construction of 2D convolutional codes by using 1D convolutional codes. By following this scheme, we proposed two constructions based on 1D complete-MDP convolutional codes from which one is optimal for the decoding procedure defined in [9]. We also described and complemented the decoding algorithm proposed in [9] by providing its pseudo-code, as well as by adding the possibility of performing the decoding by using the complete-MDP property.
Further research is possible in different directions. Through proposing a general construction of 2D convolutional codes based on 1D convolutional codes, we have a starting point to see if an n dimensional (n-D) convolutional code can be constructed by using n 1 dimensional convolutional codes. In the same direction, we could address the problem of decoding such n-D codes by using lower dimensional decoding methods. Moreover, constructions of decoding algorithms for 2D convolutional codes over an erasure channel is still an interesting topic for future research since there currently exist only two of these algorithms in the literature.

Author Contributions

All authors contributed equally to this work. All authors have read and agreed to the published version of the manuscript.

Funding

The authors Raquel Pinto and Carlos Vela were supported by The Center for Research and Development in Mathematics and Applications (CIDMA) through the Portuguese Foundation for Science and Technology (FCT—Fundação para a Ciência e a Tecnologia) (references UIDB/04106/2020 and UIDP/04106/2020): https://doi.org/10.54499/UIDB/04106/2020 and https://doi.org/10.54499/UIDP/04106/2020.

Data Availability Statement

No data required.

Conflicts of Interest

The authors declare no conflicts of interest.

References

  1. Fornasini, E.; Valcher, M.E. Algebraic aspects of two-dimensional convolutional codes. IEEE Trans. Inf. Theory 1994, 40, 1068–1082. [Google Scholar] [CrossRef]
  2. Valcher, M.E.; Fornasini, E. On 2D finite support convolutional codes: An algebraic approach. Multidim. Syst. Signal Proc. 1994, 5, 231–243. [Google Scholar] [CrossRef]
  3. Climent, J.-J.; Napp, D.; Perea, C.; Pinto, R. Maximum Distance Separable 2D Convolutional Codes. IEEE Trans. Inf. Theory 2016, 62, 669–680. [Google Scholar] [CrossRef]
  4. Gluesing-Luerssen, H.; Rosenthal, J.; Weiner, P. Duality between multidimensional convolutional codes and systems. In Advances in Mathematical Systems Theory; Colonius, F., Helmke, U., Wirth, F., Praetzel-Wolters, D., Eds.; Birkhäuser: Boston, MA, USA, 2000; pp. 135–150. [Google Scholar]
  5. Weiner, P.A. Multidimensional Convolutional Codes. Ph.D. Thesis, University of Notre Dame, Notre Dame, IN, USA, 1998. [Google Scholar]
  6. Charoenlarpnopparut, C. Applications of Grobner bases to the structural description and realization of multidimensional convolutional code. Sci. Asia 2009, 35, 95–105. [Google Scholar] [CrossRef]
  7. Charoenlarpnopparut, C.; Tantaratana, S. Algebraic approach to reduce the number of delay elements in the realization of multidimensional convolutional code. In Proceedings of the 47th IEEE International Midwest Symposium Circuits and Systems (MWSCAS 2004), Hiroshima, Japan, 25–28 July 2004; pp. 529–532. [Google Scholar]
  8. Kitchens, B. Multidimensional convolutional codes. SIAM J. Discret. Math. 2002, 15, 367–381. [Google Scholar] [CrossRef]
  9. Climent, J.-J.; Napp, D.; Pinto, R.; Simões, R. Decoding of 2D convolutional codes over an erasure channel. Adv. Math. Commun. 2016, 10, 179–193. [Google Scholar] [CrossRef]
  10. Lieb, J.; Pinto, R. A decoding algorithm for 2D convolutional codes over the erasure channel. Adv. Math. Commun. 2023, 17, 935–959. [Google Scholar] [CrossRef]
  11. York, E.V. Algebraic Description and Construction of Error Correcting Codes: A Linear Systems Point of View. Ph.D. Thesis, University of Notre Dame, Notre Dame, IN, USA, 1997. [Google Scholar]
  12. Lieb, J.; Pinto, R.; Rosenthal, J. Convolutional Codes. In A Concise Encyclopedia of Coding Theory; Huffman, W.C., Kim, J.-L., Solé, P., Eds.; CRC Press: Boca Raton, FL, USA, 2021; pp. 197–225. [Google Scholar]
  13. Tomas, V.; Rosenthal, R.; Smarandache, R. Decoding of Convolutional Codes over the Erasure Channel. IEEE Trans. Inf. Theory 2012, 58, 90–108. [Google Scholar] [CrossRef]
  14. Rosenthal, J.; Smarandache, R. Maximum distance separable convolutional codes. Appl. Algebra Eng. Commun. Comput. 1999, 10, 15–32. [Google Scholar] [CrossRef]
  15. Gluesing-Luerssen, H.; Rosenthal, J.; Smarandache, R. Strongly-MDS convolutional codes. IEEE Trans. Inf. Theory 2006, 52, 584–598. [Google Scholar] [CrossRef]
  16. Almeida, P.J.; Napp, D.; Pinto, R. Superregular matrices and applications to convolutional codes. Linear Algebra Its Appl. 2016, 499, 1–25. [Google Scholar] [CrossRef]
  17. Lieb, J. Complete MDP convolutional codes. J. Algebra Its Appl. 2019, 18, 1950105. [Google Scholar] [CrossRef]
  18. Alfarano, G.N.; Napp, D.; Neri, A.; Requena, V. Weighted Reed-Solomon codes. Linear Multilinear Algebra 2023, 72, 841–874. [Google Scholar] [CrossRef]
  19. Chen, Z. Convolutional Codes with a Maximum Distance Profile Based on Skew Polynomials. IEEE Trans. Inf. Theory 2023, 68, 5178–5184. [Google Scholar] [CrossRef]
  20. Luo, G.; Cao, X.; Ezerman, M.F.; Ling, S. A Construction of Maximum Distance Profile Convolutional Codes with Small Alphabet Sizes. IEEE Trans. Inf. Theory 2023, 69, 2983–2990. [Google Scholar] [CrossRef]
  21. Napp, D.; Smarandache, R. Constructing strongly-MDS convolutional codes with maximum distance profile. Adv. Math. Commun. 2016, 10, 275–290. [Google Scholar] [CrossRef]
  22. Lieb, J. Necessary field size and probability for MDP and complete MDP convolutional codes. Des. Codes Cryptogr. 2019, 87, 3019–3043. [Google Scholar] [CrossRef]
  23. Chen, Z. A lower bound on the field size of convolutional codes with a maximum distance profile and an improved construction. IEEE Trans. Inf. Theory 2023. [Google Scholar] [CrossRef]
  24. Alfarano, G.N.; Gruica, A.; Lieb, J.; Rosenthal, R. Convolutional codes over finite chain rings, MDP codes and their characterization. Adv. Math. Commun. 2022, 17, 1–22. [Google Scholar] [CrossRef]
  25. Tomás, V.; Rosenthal, J.; Smarandache, R. Reverse-maximum distance profile convolutional codes over the erasure channel. In Proceedings of the 19th International Symposium on Mathematical Theory of Networks and Systems, MTNS 2010, Budapest, Hungary, 5–9 July 2010; pp. 1212–2127. [Google Scholar]
  26. Hutchinson, R. The existence of strongly MDS convolutional codes. SIAM J. Control Optim. 2008, 47, 2812–2826. [Google Scholar] [CrossRef]
  27. Massey, J.L. Reversible codes. Inf. Control 1964, 77, 369–380. [Google Scholar] [CrossRef]
  28. Almeida, P.J.; Lieb, J. Complete j-MDP Convolutional Codes. IEEE Trans. Inf. Theory 2020, 66, 7348–7359. [Google Scholar] [CrossRef]
Figure 1. Matrix H.
Figure 1. Matrix H.
Axioms 13 00197 g001
Figure 2. Erasures (red dots) distributed in N 2 .
Figure 2. Erasures (red dots) distributed in N 2 .
Axioms 13 00197 g002
Figure 3. Ω 2 ( W 3 ) , neighborhood of W 3 .
Figure 3. Ω 2 ( W 3 ) , neighborhood of W 3 .
Axioms 13 00197 g003
Figure 4. Erasures (red dots) distributed in N 2 .
Figure 4. Erasures (red dots) distributed in N 2 .
Axioms 13 00197 g004
Figure 5. Pattern of the erasures proposed in [10], Example 3.
Figure 5. Pattern of the erasures proposed in [10], Example 3.
Axioms 13 00197 g005
Disclaimer/Publisher’s Note: The statements, opinions and data contained in all publications are solely those of the individual author(s) and contributor(s) and not of MDPI and/or the editor(s). MDPI and/or the editor(s) disclaim responsibility for any injury to people or property resulting from any ideas, methods, instructions or products referred to in the content.

Share and Cite

MDPI and ACS Style

Pinto, R.; Spreafico, M.; Vela, C. Optimal Construction for Decoding 2D Convolutional Codes over an Erasure Channel. Axioms 2024, 13, 197. https://doi.org/10.3390/axioms13030197

AMA Style

Pinto R, Spreafico M, Vela C. Optimal Construction for Decoding 2D Convolutional Codes over an Erasure Channel. Axioms. 2024; 13(3):197. https://doi.org/10.3390/axioms13030197

Chicago/Turabian Style

Pinto, Raquel, Marcos Spreafico, and Carlos Vela. 2024. "Optimal Construction for Decoding 2D Convolutional Codes over an Erasure Channel" Axioms 13, no. 3: 197. https://doi.org/10.3390/axioms13030197

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop