Understanding the received vector in syndrome decoding

738 Views Asked by At

I have an exercise, which I do have solutions to but cannot understand the problem text. As far as I understood, syndromes are computed by checking the received vector against the parity check matrix. What is the received vector made out of? $r = c + e$ means it's made out of a codeword and error pattern? The error pattern is caused by the noise in the channel?

So in the next part of the text, the problems mentions $Hc^T=0$, how would this multiplication work? Isn't the codeword $c$ in this case usually smaller than the dimension of the row vectors in the parity matrix?

And about computing the syndrome first, $Hr^t=s$, why would we add the error vector $e$ to $r$?

Why does the text say at one point that you can do $Hc^T=0$ and then you an do this $Hr^t=s$, when the vectors being transposed are different lengths?

I followed some explanation of syndrome decoding and the concept seems clear to me but this text feels like a puzzle and it's not clear if i'm not understanding something or the information is just amiss.

Links to images: Problem text

syndrome table with received vectors?

1

There are 1 best solutions below

0
On BEST ANSWER

The last sentence of the text you added is a little bit confusing. But despite that, the text explaining syndrome decoding is correct. Since you wrote that the text is like a puzzle for you even though you understand the concept, I try to explain in detail how syndrome decoding works. This should also answer your problems with the length of the vectors $c,r,e$ and $s$.

Let $C\in\mathbb{F}_q^n$ be a linear code of length $n$ over a finite field $\mathbb{F}_q$ with dimension $k$. The parity check matrix $H\in\mathbb{F}_q^{n-k,n}$ of $C$ is defined as

$$C=\{c\in\mathbb{F}_q^n\mid Hc^T=0\}.$$

Thus, a vector $c\in\mathbb{F}_q^n$ lies in the code $C$ if $Hc^T=0$. Since $H\in\mathbb{F}_q^{n-k,n}$ and $c\in\mathbb{F}_q^n$, the product of $H$ and $c^T$ is

$$Hc^T=\begin{bmatrix} h_1\\\vdots\\h_{n-k}\end{bmatrix} c=\begin{bmatrix} h_1\cdot c\\\vdots\\h_{n-k}\cdot c\end{bmatrix},$$

where $h_1,\dots,h_{n-k}$ are the $n-k$ rows of $H$ and $h\cdot c$ denotes the scalarproduct of $h$ and $c$. Thus, $Hc^T$ is in $\mathbb{F}_q^{n-k}$.

Now, we send a codeword $c\in C$ through a channel. Because of the noise in this channel, we probably won't receive the codeword $c$. We'll get a vector $r$ of the same length as $c$. Thus, $r\in\mathbb{F}_q^n$. The received vector can be written as $r=c+e$, where $e$ denotes the error vector. For the syndrome decoding, we use the definition of $H$: for every codeword $c\in C$, we have $Hc^T=0$. We compute the product $Hr^T$, which gives us a vector $s\in\mathbb{F}_q^{n-k}$ and this vector is called the syndrome of $r$. By using $r=c+e$ and $Hc^T=0$, we get

$$ Hr^T=Hc^T+He^T=He^T.$$

Thus, the syndrome of $r$ and the syndrome of $e$ are the same and we also get

$$ Hr^T=He^T\quad\Leftrightarrow\quad H(r-e)^T=0.$$

Therefore, the vector $r-e$ lies in the code $C$, which means that the cosets $r+C$ and $e+C$ are the same. To get the sent codeword $c$, we can use the bijection between the syndromes and the cosets of $C$. Let's look at an example.

Example: Take the code

$$C=\{(0,0,0,0),(1,0,0,1),(0,1,1,1),(1,1,1,0)\}.$$

This code is of length $n=4$ and has dimension $k=2$. The corresponding parity check matrix is

$$H=\begin{bmatrix} 0&1&1&0\\1&1&0&1\end{bmatrix}.$$

The cosets of $C$ with the corresponding syndromes are

\begin{align} C=&\{\mathbf{(0,0,0,0)},(1,0,0,1),(0,1,1,1),(1,1,1,0)\}\quad\text{with }s_0=(0,0)\\ C_1=&\{\mathbf{(1,0,0,0)},\mathbf{(0,0,0,1)},(1,1,1,1),(0,1,1,0)\}\quad\text{with }s_1=(0,1) \\ C_2=&\{\mathbf{(0,1,0,0)},(1,1,0,1),(0,0,1,1),(1,0,1,0)\}\quad\text{with }s_2=(1,1)\\ C_3=&\{\mathbf{(0,0,1,0)},(1,0,1,1),(0,1,0,1),(1,1,0,0)\}\quad\text{with }s_3=(1,0). \end{align}

The bold vectors in every coset correspond to the vectors with the minimal Hamming weight in the coset. If we receive the vector $r=(1,1,0,1)$, we see that $r$ lies in the coset $C_2$. We also know that the error vector $e$ lies in the same coset as $r$. In syndrome decoding, we assume that the number of entries that get changed because of the noise is minimal. Therefore, we take $e=(0,1,0,0)$ since this vector has the smallest Hamming weight in the coset $C_2$ containing $r$. Hence, we get that the sent codeword is $c=(1,0,0,1)$.