
13.3 Матричное представление (n, k)-кодов.
Среди блочных кодов широкое распространение получили линейные коды. Для определения линейного кода воспользуемся представлением кодовых комбинаций в виде элементов n-мерного векторного пространства V над полем P. Под полем P понимают символы выходного алфавита (внутреннего алфавита системы), число которых равно m. Линейными m-ичными кодами называются k-мерные подпространства n-мерного пространства V. При этом число n имеет смысл длины кодовой комбинации, число k определяет число информационных разрядов. Линейные коды называют также (n,k)-кодами.
Среди линейных кодов особую роль играют групповые коды, для которых m=2 (двоичные коды). Существуют различные способы задания групповых кодов. Наиболее распространены матричное описание кодов и задание их с помощью порождающих многочленов.
Запишем кодовую комбинацию в виде a1a2…akb1b2…br. Первые k-разрядов являются информационными, остальные – проверочными. Проверочные символы кодовых комбинаций формируются из информационных символов на основе выражения
|
(13.3) |
Здесь коэффициенты cj1,cj2,…,cjk принимают значения из множества {0,1}.
Любая кодовая комбинация, состоящая из k информационных разрядов, все проверочные разряды которой составлены в соответствие с формулой (13.3), является разрешённой комбинацией (n,k)-кода.
Пусть u и v – две разрешённые комбинации группового (n,k)-кода. Тогда кодовая комбинация w=u+v также является разрешённой комбинацией этого кода. Действительно, пусть
|
|
Тогда
|
|
где
|
|
Следовательно, проверочные разряды bj'' кодовой комбинации w формируются в соответствии с выражением (13.3), поэтому кодовая комбинация w также является разрешённой.
Любые k линейно независимых векторов n-мерного линейного векторного пространства порождают k-мерное подпространство, образуя базис этого подпространства. Отсюда следует, что для задания (n,k)-кода достаточно выбрать k любых линейно независимых разрешённых кодовых комбинаций, а остальные разрешённые кодовые комбинации получать как линейные комбинации выбранных базисных векторов.
Обычно для задания (n,k)-кода пользуются этой возможностью, представляя k линейно независимых кодовых комбинаций в форме матрицы. Такая матрица называется порождающей матрицей (n,k)-кода. В общем виде её можно представить следующим образом:
|
(13.4) |
Порождающая матрица Gn,k двоичного кода порождает ровно 2k разрешённых кодовых комбинаций.
В зависимости от выбранного базиса k-мерного подпространства n-мерного кодового пространства кодовое расстояние совокупности 2k векторов будет различным. При проектировании (n,k) кода ставится задача оптимального размещения кодовых векторов в n-мерном кодовом пространстве в соответствии с заданной статистикой ошибок и, в частности, обеспечения максимально возможного кодового расстояния.
Пусть v1,v2,…,vk – кодовые векторы-строки, составляющие порождающую матрицу
|
|
Тогда разрешённую кодовую комбинацию (n,k)-кода можно представить в виде линейной комбинации векторов
|
(13.5) |
где g1,g2,…,gk – коэффициенты, принимающие значения из множества {0,1}.
Проверочные разряды b1,…,br кодового вектора v, передаваемого по каналу связи, формируются в соответствии с (13.3). Это же соотношение может быть использовано на приёмном конце канала для проверки правильности кодовой комбинации: равенство (13.3) должно выполняться, если ошибки не произошло. С каждой принятой кодовой комбинацией можно связать систему проверок по числу проверочных разрядов, которая может быть описана следующей системой уравнений:
|
(13.6) |
Здесь
.
Нули в правых частях равенств
истолковываются как отсутствие ошибки
в принятой кодовой комбинацииv.
Для удобства систему проверок (13.6)
записывают в матричной форме, а именно
как произведение вектор-строки v,
соответствующей принятой кодовой
комбинации, на матрицу проверочных
коэффициентов:
|
|
Матрицу Hn,k называют проверочной матрицей. Система проверок (13.6) может быть записана в виде:
|
(13.7) |
В общем случае результат умножения может быть отличен от нуля
|
|
где
Вектор-строка
называется синдромом ошибки. Всего
может быть 2r–1
различных ненулевых синдромов, разбивающих
множество возможных ошибок на 2r–1
класса. Это позволяет по виду синдрома
ошибки определять, к какому классу
относится ошибка. Часто (n,k)-код
проектируется таким образом, что с
вероятностью, близкой к единице, каждый
из выделенных 2r–1
классов ошибок содержит всего по одному
элементу. Такие коды позволяют исправлять
ошибки.
Порождающая и проверочная матрица связаны между собой соотношением, что позволяет определять одну из них, если известна другая.
|
|
Если к какой-либо строке vi порождающей матрицы Gn,k прибавить линейную комбинацию других строк, то от этого порождающая матрица не изменится в том смысле, что останется порождающей матрицей того же самого (n,k)-кода. Путём такой замены строк матрицу Gn,k можно привести к каноническому виду:
|
(13.8) |
канонический вид порождающей
матрицы удобен тем, что существует
простая связь между элементами порождающей
и проверочной матриц: для определения
проверочной матрицы (n,k)-кода,
порождаемого матрицей вида (13.8), нужно
транспонировать подматрицу проверочных
разрядов матрицы Gn,k
и приписать справа к полученной матрице
единичную матрицу размерности .
Следовательно, матрице (13.8) соответствует
проверочная матрица:
|
|