Design the best schemes in terms of information transmission speed

427 Views Asked by At

Design a channel coding scheme to correct one error for the message source $$\{000, 100, 010, 001, 110, 101, 011, 111\}.$$ Can you find one of the best schemes in terms of information transmission speed?

I am trying to solve in different ways but not getting any confom way. Any help will be greatly appreciated! Thank you!

1

There are 1 best solutions below

0
On

You could use a code where the Hamming distance between code words is $3$:

0:000000
1:100011
2:010111
3:110100
4:001110
5:101101
6:011001
7:111010

Note that the first three bits contain the encoded data word.

As all pairs of code words differ in three bit positions, a single bit error cannot change a code word into another one. The erroneous word can always be correctly related to the intended word.

I found this code using the following MiniZinc script:

%  code words
int: n = 8;
int: d = ceil(log2(n));

%  total bits
int: t = d + 3;

array[1..n, 1..t] of var bool: code;

function var int: hammingDistance(int: a, int: b) =
  sum([code[a, i] != code[b, i]| i in 1..t]);

constraint forall(i, j in 1..n where j > i) (
  3 <= hammingDistance(i, j)
);

constraint forall(i in 1..n) (
  (1*code[i, 1] + 2*code[i, 2] + 4*code[i, 3]) == (i-1)
);

solve satisfy;

output
[if j == 1 then "\n" ++ show(i) ++ ":" else "" endif ++ 
 if show(code[i,j]) == "true" then "1" else "0" endif | i in 1..n, j in 1..t] ++
["\n"];