Групповые коды
Множество всех двоичных слов длины
образует абелеву (коммутативную) группу относительно поразрядного сложения.
Пусть - кодирующая
-матрица, у
которой есть
-подматрица с отличным от нуля определителем, например,
единичная. Тогда отображение
переводит группу
всех двоичных слов длины
в группу кодовых слов длины
.
Предположим, что . Тогда для
,
,
,
получаем
![b_j = a_1e_{1j}+a_2e_{2j}+\cdots+a_me_{mj} =](/sites/default/files/tex_cache/9dc48ed07ee57916e7af7968cd05461a.png)
![= (a_1'+a_2')e_{1j}+(a_2'+a_2")e_{2j}+\cdots+(a_m'+a_m")e_{mj}
= b_j'+b_j",](/sites/default/files/tex_cache/2f115ae606d7df28f4c814c235211bc4.png)
![b=b'+b"](/sites/default/files/tex_cache/58506dcbb27e052e9185f42ef7ae57c6.png)
![m](/sites/default/files/tex_cache/6f8f57715090da2632453988d9a1501b.png)
![E](/sites/default/files/tex_cache/3a3ea00cfc35332cedf6e5e9a32e94da.png)
Блочный код называется групповым, если его кодовые слова образуют группу.
Если код является групповым, то наименьшее расстояние между двумя кодовыми словами равно наименьшему весу ненулевого слова.
Это следует из соотношения .
В предыдущем примере наименьший вес ненулевого слова равен 3. Следовательно, этот код способен исправлять однократную ошибку или обнаруживать однократную и двойную.
При использовании группового кода незамеченными остаются те и только те ошибки, которые отвечают строкам ошибок, в точности равным кодовым словам.
Такие строки ошибок переводят одно кодовое слово в другое.
Следовательно, вероятность того, что ошибка останется необнаруженной, равна сумме вероятностей всех строк ошибок, равных кодовым словам.
В рассмотренном примере вероятность ошибки равна .
Рассмотрим задачу оптимизации декодирования группового кода с двоичной
матрицей кодирования . Требуется минимизировать вероятность
того, что
.
Схема декодирования состоит из группы всех слов, которые
могут быть приняты (
). Так как кодовые слова
образуют
нормальную (нормальность следует из коммутативности
) подгруппу
, то множеству
можно придать структуру таблицы:
будем записывать в одну строку те элементы
,
которые являются членами одного смежного класса
по
. Первая строка,
соответствующая нулевому слову из
, будет тогда всеми кодовыми
словами из
, т.е.
. В общем случае,
если
, то строка, содержащая
(смежный класс
) имеет вид
.
Лидером каждого из таких построенных смежных классов называется слово минимального веса.
Каждый элемент из
однозначно представляется в
виде суммы
, где
- лидер соответствующего
смежного класса и
.
Множество классов смежности группы образуют фактор-группу,
которая есть фактор-множество множества по отношению
эквивалентности-принадлежности к одному смежному классу, а это означает, что
множества, составляющие это фактор-множество, образуют разбиение
.
Отсюда следует, что строки построенной таблицы попарно либо не пересекаются, либо совпадают.
Если в рассматриваемой таблице в первом столбце записать лидеры, то полученная таблица называется таблицей декодирования. Она имеет вид:
![\centerline{\vbox{\offinterlineskip\halign{&\strut\quad#\hfil\cr
b_0& b_1& b_2& \cdots& b_{2^m-1}\cr
g_1& g_1+b_1& g_1+b_2& \cdots& g_1+b_{2^m-1}\cr
\cdots& \cdots& \cdots& \cdots& \cdots\cr
g_{2^{n-m}-1}& g_{2^{n-m}-1}+b_1& g_{2^{n-m}-1}+b_2& \cdots\quad&
g_{2^{n-m}-1}+b_{2^m-1}.\cr}}}](/sites/default/files/tex_cache/e11ec20324d9a5b2aa97a9893b66f0b0.png)
![2^{n-m}](/sites/default/files/tex_cache/3902af36b65852f667197d46242453fe.png)
![2^{n-m}](/sites/default/files/tex_cache/3902af36b65852f667197d46242453fe.png)
![G/B](/sites/default/files/tex_cache/c43119247ebcbec19eb3958a0466ff59.png)
![\#(G/B)=\#(G)/\#(B)](/sites/default/files/tex_cache/83acd19522dfaf350478cb1c09d21134.png)
![\#B=2^m](/sites/default/files/tex_cache/63e884ae1d07aee54b8f5a6647b8642b.png)
Декодирование слова состоит в выборе кодового слова
в качестве переданного и последующем применении операции, обратной умножению
на
. Такая схема декодирования сможет исправлять ошибки.
Для -кода из рассматриваемого примера таблица
декодирования будет следующей:
![\centerline{\vbox{\offinterlineskip\halign{&#&\strut\hskip7pt#\cr
000000 && 100110 && 010011 && 110101 && 001111 && 101001 && 011100 && 111010\cr
100000 && 000110 && 110011 && 010101 && 101111 && 001001 && 111100 && 011010\cr
010000 && 110110 && 000011 && 100101 && 011111 && 011001 && 001100 && 101010\cr
001000 && 101110 && 011011 && 111101 && 000111 && 100001 && 010100 && 110010\cr
000100 && 100010 && 010111 && 110001 && 001011 && 101101 && 011000 && 111110\cr
000010 && 100100 && 010001 && 110111 && 001101 && 101011 && 011110 && 111000\cr
%}}}
%\centerline{\vbox{\offinterlineskip\halign{&#&\strut\hskip7pt#\cr
000001 && 100111 && 010010 && 110100 && 001110 && 101000 && 011101 && 111011\cr
000101 && 100011 && 010110 && 110000 && 001010 && 101100 && 011001 &&
111111.\cr
}}}](/sites/default/files/tex_cache/5a26d00f8033ec30be3bf31ffcaca292.png)
Первая строка в ней - это строка кодовых слов, а первый столбец - это лидеры.
Чтобы декодировать слово , следует отыскать его в таблице
и выбрать в
качестве переданного слово в том же столбце и в первой строке.
Например, если принято слово 110011 (2-я строка, 3-й столбец таблицы), то считается, что было передано слово 010011; аналогично, если принято слово 100101 (3-я строка, 4-й столбец таблицы), переданным считается слово 110101, и т.д.
Групповое кодирование со схемой декодирования посредством лидеров исправляет все ошибки, строки которых совпадают с лидерами. Следовательно, вероятность правильного декодирования переданного по двоичному симметричному каналу кода равна сумме вероятностей всех лидеров, включая нулевой.
В рассмотренной схеме вероятность правильной передачи слова будет .
Кодовое слово любого столбца таблицы декодирования является ближайшим кодовым словом ко всем прочим словам данного столбца.
Пусть переданное слово принято как
,
, т.е. это расстояние равно
весу соответствующего лидера. Расстояние от
до любого
другого кодового слова
равно весу их поразрядной суммы, т.е.
,
т.к.
- лидер смежного класса, к которому принадлежат как
,
так и
.
Доказано, при схеме декодирования лидерами по полученному слову берется ближайшее к нему кодовое.
Упражнение 40 Для кодирующих матриц
![E_1=\left\lbrack\matrix{
1& 0& 1& 0& 1\cr
0& 1& 1& 1& 0\cr}\right\rbrack](/sites/default/files/tex_cache/6d4e0fad10669420e91415eb3a7d80fd.png)
![E_2=\left\lbrack\matrix{
1& 0& 0& 1\cr
0& 1& 0& 1\cr
0& 0& 1& 0\cr}\right\rbrack](/sites/default/files/tex_cache/0c3a351f8800d1c0fc4bdde593bf24c0.png)
- Построить соответственно
-код и
-код.
- Найти основные характеристики полученных кодов: минимальное расстояние между словами кода; вероятность необнаружения ошибки; максимальную кратность ошибок, до которой включительно они все исправляются или обнаруживаются.
- Построить таблицы декодирования.
- Уточнить характеристики полученных кодов, при использовании их для исправления ошибок, т.е. найти вероятность правильной передачи и описать ошибки, исправляемые этими кодами.
- Во что будут декодированы слова: 10001, 01110, 10101, 1001, 0110, 1101?