Дуальные коды
Рассматривая матрицы G и H, можно сделать следующие интересные выводы. Каждая из них содержит множество линейно независимых векторов, то есть каждая из матриц может рассматриваться как базис некоторого линейного пространства. Кроме того, каждое из этих пространств является подпространством векторного пространства, состоящего из всех наборов двоичных символов длиной n.
Скалярное произведение каждой строки матрицы G
на каждую строку матрицы H равно нулю, то есть
H× GT = 0 и G× HT = 0
. (1.20)
Следовательно, можно "поменять ролями" эти две матрицы и использовать Н
как порождающую матрицу, а G как проверочную матрицу некоторого другого кода.
Коды, связанные таким образом, называются дуальными друг другу, т.е., задав каким-либо образом линейный блочный код, мы автоматически задаем и второй, дуальный ему код. Правда, если исходный код был получен так, чтобы иметь минимальную избыточность при заданной исправляющей способности, то гарантировать хорошее качество дуального ему кода мы не можем. Такие коды обычно имеют исправляющую способность, одинаковую с исходными, но большую, чем у них, избыточность.
Например, если рассмотренный в качестве примера (7,4)-код Хемминга имеет избыточность 7/4 и при этом позволяет исправлять одну ошибку в кодовом слове из 7 символов (об этом будем подробно говорить в следующих разделах настоящего пособия), то дуальный ему код (7,3) также исправляет одну ошибку на 7 символов, но уже имеет избыточность 7/3, то есть на 3 информационных символа содержит 4 проверочных.