Идею
мажоритарного декодирования линейных блочных кодов можно продемонстрировать на
очень простом примере.
Пусть
m
– кодируемая информационная последовательность, состоящая всего из
одного символа m0= 0
или 1,
а соответствующее ей кодовое слово помехоустойчивого(избыточного)кодаимеет вид U= ( m0 , m0 , m0 ),тоесть( 000 ), еслиm0 = 0, или ( 111
), еслиm0 = 1 (код с
трехкратным повторением).
Допустим,
передано кодовое слово U = (111) и в первом символе
произошла одна ошибка, то есть принята последовательность r = ( 011
).
Здравый
смысл подсказывает, что, скорее всего,
передавалось кодовое слово U = ( 111 ), так как в
противном случае ошибка должна была бы исказить два символа, чтобы кодовое
слово U = ( 000 ) превратилосьв последовательность вида r =
( 011
).Может быть, и не отдавая себе отчета
в правиле принятия решения (о том, что передавалось), мы приняли решение по
большинству – мажоритарно.
В общем случае, для линейных блочных кодов с более
сложной структурой, решение будет не таким простым, но идея мажоритарного
декодирования – та же: решение принимается по большинству. Как и в жизни,
полагается, что большинство дает более правильный ответ.
Рассмотрим более сложный
пример – мажоритарное декодирование для (7,4)-кода Хемминга.
Пусть передано кодовое слово
(7,4)-кода
– U
= (U0 ,U1 ,U2 ,U3 ,U4 ,U5
,U6 ), символы которого сформированы в соответствии с
системой проверочных уравнений (правилом кодирования) вида:
На
входе декодера наблюдается принятая последовательность r = (r0 , r1 ,r2 ,r3 ,r4 ,r5 , r6), и
необходимо ее декодировать, то есть
определить вид передаваемой информационной последовательности m .
Поскольку
невозможно быть абсолютно уверенными в правильности декодирования, мы можем
говорить лишь об оценке
информационной последовательности m*.
Для
начала предположим, что ошибок в принятой
последовательности rнет, то есть r=U.
Тогда
по принятой последовательности rможно легко найти оценкупереданной информационной последовательности m*,
причем не единственным способом.
Во-первых,
можно сразу записать
m0 *1= r0
,
m1
*1= r1,(1.29)
m2*1= r2,
m3*1= r3 ,
то есть в качестве ответа или
результата декодирования, взять первые четыре символа принятой
последовательности.
Но это не единственный способ.Учитывая, что для элементов поля GF(2) справедливо условиеmi + mi = 0 ( то есть 1+1 = 0 и 0+0 = 0), можно записать
еще несколько систем уравнений для определения mi*:
m0
*2= r2 +r3 + r4 ,m0 *3= r1 +r2
+ r5 ,
m1
*2 = r0 +r2 + r5,m1 *3 =
r2 +r3 + r6 ,
m2*2= r0 +r3
+ r4 ,m2*3= r0 +r1
+ r5 ,
m3
*2= r0 +r2 + r4 ;m3 *3= r1 +r2
+ r6 ;
(1.30)
m0 *4= r1 +r4 + r6 ,m0 *5= r3
+r5 + r6 ,
m1 *4 =
r0 +r4 + r6,m1 *5 =
r3 +r4 + r5 ,
m2*4= r4 +r5
+ r6 ,m2*5= r1 +r3
+ r6 ,
m3
*4= r0 +r5 + r6 ;m3 *5= r1
+r4 + r5 .
Таким образом, получилось пять независимых систем уравнений
для определения одних и тех же компонент вектора m*, причем,
они будут совместными (иметь одинаковые решения) только при отсутствии ошибок в
принятой последовательности r,то есть приr= U. В противном случае решения
дляmi*, даваемые
различными системами, будут разными.
Однако можно заметить следующее: в выражениях
для mi*
каждый из элементов принятой последовательности riприсутствует не более двух раз
(то есть не более чем в двух уравнениях из пяти).
Если
считать, что в принятой последовательности возможна только одиночная ошибка
(а с ошибкой большей кратности этот код не справляется), то ошибочными будут решения не более чем двух
уравнений из пяти для каждого из элементовmi*,
остальные три уравнения дадут правильное
решение. Тогда правильный ответ может быть получен по "большинству голосов", или мажоритарно.