Channel code for multiple bit errors

133 Views Asked by At

I've been exploring information theory out of personal interest and have a cursory understanding of Hamming Codes. From what I can tell, they're designed to exclusively detect the location of a single error, and the presence of two errors. My question is, if not Hamming Codes, is there a code that can detect multiple errors? Or is the strategy just to reduce the amount of data encoded by the Hamming code enough that the probability of more than 2 errors within the data is sufficiently small?

2

There are 2 best solutions below

0
On

is there a code that can detect multiple errors

Of course there are. As Snowball points out, repetion codes are a (rather trivial and not very efficient) example. The main classical families of practical codes are Cyclic Codes (which have the additional feature of detecting longer burst errors), BCH and Reed-Solomon -and related- codes (actually these are a subfamily of the cyclic codes), and Convolutional Codes.

More modern and powerful codes are Turbo Codes and LDPC codes, but these ones are not designed with the concept of "distance" (and hence maximum binary error detection-correction capability).

0
On

From what I can tell, they're designed to exclusively detect the location of a single error, and the presence of two errors.

For binary codes, detecting the location of an error is the same as correcting the error (flip the bit at the detected location). Because of this, such a code is usually called $1$-error-correcting.

Similarly, detecting the presence (but not the location) of two errors is usually called $2$-error-detecting.

The $1$-error-correcting, $2$-error-detecting code you described is actually the extended Hamming code, which has codewords of length $8$. The "plain" Hamming code has codewords of length $7$ and is $1$-error-correcting, $1$-error-detecting.

Another characterization of a code's ability to cope with errors is its minimum distance -- the minimum number of positions in which two codewords differ, across all codewords in the code. The Hamming code has minimum distance $3$, whereas the extended Hamming code has minimum distance $4$. In general, a code with minimum distance $d$ is $e$-error-correcting, $t$-error-detecting so long as $t \ge e \ge 0$ and $d \ge t + e + 1$.

My question is, if not Hamming Codes, is there a code that can detect multiple errors?

Yes, here is one:

$$\begin{align} 0 &\mapsto 0000000,\\ 1 &\mapsto 1111111. \end{align}$$

This code has minimum distance $7$ and is thus $3$-error-correcting, $3$-error-detecting (since $3 \ge 3 \ge 0$ and $7 \ge 3 + 3 + 1$). Note that this code could also be used as a $0$-error-correcting, $6$-error-detecting code (since $6 \ge 0 \ge 0$ and $7 \ge 6 + 0 + 1$).

An interesting experiment for you to try is to nest the extended Hamming code inside itself: encode $4$ bits with a Hamming code to get an $8$ bit codeword, then encode the initial $4$ bits and the final $4$ bits of that with the Hamming code again. Can you see what the minimum distance of that "concatenated" code is? (If you get stuck, try writing out all $16$ codewords.)

leonbloy mentioned some other examples of codes that can correct/detect multiple errors.