Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике 5.3. ЛИНЕЙНЫЕ ДВОИЧНЫЕ БЛОЧНЫЕ КОДЫЛинейными называются такие двоичные коды, в которых множество всех разрешенных блоков является линейным пространством относительно операции поразрядного сложения по модулю 2. Очевидно, что оно является подпространством линейного пространства, образуемого множеством всех (а не только разрешенных) двоичных последовательностей длины Для того чтобы разрешенные блоки были линейным пространством (см. § 2.5), они должны содержать нулевой элемент, т. е. блок, состоящий из нулей, должен быть разрешенным, а сумма (поразрядная по модулю 2) любых разрешенных блоков должна быть также разрешенным блоком. Двоичные линейные коды называют также групповыми. Линейный код можно построить следующим образом. Среди всех последовательностей кодовых символов можно выбрать различными способами линейно независимых. В частности, ими могут быть (но не обязательно) элементы, образующие ортогональный базис. Выберем из них любых линейно независимых блоков, которые обозначим и образуем все линейные комбинации вида
где принимает значения 0 или 1, а суммирование — поразрядное по модулю 2. Легко видеть, что множество этих комбинаций образует линейное пространство, содержащее блоков, т. е. линейный код. Действительно, множество содержит нулевой элемент, получающийся, когда все Сумма любых двух элементов представляет Собой также элемент этого множества, поскольку принимает значение 0 или 1. Число элементов множества определяется количеством различных наборов из двоичных коэффициентов которое, очевидно, равно Если записать линейно независимых блоков, используемых для построения линейного кода, в виде строк, то получится матрица размером которую называют порождающей или производящей матрицей кода Полученный таким образом код, содержащий блоков длиной обозначают При заданных пик существует много различных -кодов с различными кодовыми расстояниями определяемых различными порождающими матрицами. Все они имеют избыточность или относительную скорость Заметим, что если две порождающие матрицы различаются только порядком расположения столбцов, то определяемые ими коды являются изоморфными пространствами. Такие коды называются эквивалентными. Они имеют одинаковые кодовые расстояния между соответственными парами кодовых векторов и, следовательно, одинаковые способности обнаруживать и исправлять ошибки. Чаще всего применяются систематические линейные коды, которые строятся следующим образом. Сначала строится простой код длиной т. е. множество всех последовательностей двоичных символов, называемых информационными. Затем к каждой из этих последовательностей приписывается проверочных символов, которые получаются в результате некоторых линейных операций над информационными символами. Можно показать, что для каждого линейного кода существует эквивалентный ему систематический код. Простейший систематический код строится путем добавления к комбинации из информационных символов одного проверочного, равного сумме всех информационных символов по модулю 2. Легко видеть, что эта сумма равна нулю, если среди информационных символов содержится четное число единиц, и равна единице, если число единиц среди информационных символов нечетное. После добавления проверочного символа образуются кодовые комбинации, содержащие только четное количество единиц, т. е. комбинации с четным весом. Такой код имеет поскольку две различные кодовые комбинации, содержащие по четному числу единиц, не могут различаться в одиом разряде. Следовательно, он позволяет обнаружить одиночные ошибки. Легко убедиться, что, применяя этот код в схеме декодирования с обнаружением ошибок, можно обнаруживать все ошибки нечетной кратности. Для этого достаточно подсчитать число единиц в принятой комбинации и проверить, является ли оно четным. Если при передаче комбинации произойдут ошибки в нечетном числе разрядов то принятая комбинация будет иметь нечетный вес и, следовательно,окажется запрещенной. Такой код называют кодом с одной проверкой на четность. Обозначим через символ кода (0 или 1), стоящий на месте в кодовой комбинации. Тогда для систематического -кода общего вида получаем следующее правило построения комбинаций символы выбираются в соответствии с передаваемой информацией, при определяют так, чтобы удовлетворялись условия
где коэффициенты (0 или 1), характеризующие данный код. Если набор всех коэффициентов собрать в таблицу (матрицу), то получим так называемую проверочную матрицу кода размерности
Единицы в каждой строке матрицы показывают, какие информационные символы нужно сложить, чтобы получить проверочный символ. Из (5.15) легко получить, что произведение порождающей и транспонированной проверочной матриц
Здесь произведение матриц, состоящих из двоичных чисел, понимается в обычном смысле, но с учетом того, что сложения производятся по модулю 2. Штрих обозначает транспонирование, нулевую матрицу размерности Для рассмотренного примера кода с четным весом проверочная матрица вырождается в вектор-строку длиной
а порождающая матрица имеет вид
Рассмотрим другой пример систематического кода — код (7,4), заданный порождающей матрицей
или проверочной матрицей
Этот код имеет и позволяет обнаруживать все одиночные и двойные ошибки или исправлять (по алгоритму Хэмминга) все одиночные ошибки. Заметим, что строки проверочной матрицы являются линейно независимыми векторами. Следовательно, проверочная матрица может служить порождающей матрицей для другого линейного кода называемого двойственным. Так, например, матрица (5.19) является порождающей матрицей кода имеющего Матрица (5.18) является проверочной для этого кода. Преимуществом линейных, в частности систематических, кодов является то, что в кодере и декодере не нужно хранить список из блоков, а при декодировании не нужно вычислять расстояний. Вместо этого достаточно хранить, например, строк проверочной матрицы и при декодировании проверять выполнение равенств (5.15). Так, например, при коде (100, 50) нужно хранить 50 строк по 100 символов, т. е. всего 5000 символов, а не , как при табличном кодировании, и проверять 50 равенств, вместо перебора расстояний. Обнаружение и исправление ошибок при систематическом коде можно производить следующим образом. В режиме обнаружения ошибок осуществляется проверка выполнения равенств (5.15), и если хотя бы одно из них не выполнено, принятый блок бракуется как ошибочный. В режиме исправления ошибок после проверки равенств (5.15) строится последовательность называемая синдромом, где - двоичный символ, равный нулю, если равенство в (5.15) выполнено, и единице, если оно не выполнено. Нулевой синдром указывает на то, что все проверки выполнены, т. е. принятый блок является разрешенным. Всякому ненулевому синдрому соответствует определенная конфигурация ошибок, которая и исправляется. Так, например, для рассмотренного кода в табл. 5.1 представлены ненулевые синдромы и соответствующие конфигурации ошибок. Таблица 5.1 (см. скан) Таким образом, код позволяет исправить все одиночные ошибки. Из этого примера видно, что при декодировании систематического кода нет надобности перебирать таблицу, содержащую кодовых комбинаций, и производить сравнений. Помимо тех операций, которые осуществляются в кодере, декодер должен произвести сравнений и перебрать таблицу исправлений, содержащую строк. Для такого кода, как это осуществляется просто, но зато код оказывается малоэффективным. Как уже неоднократно отмечалось, для получения высокой верности связи следует применять коды с достаточно большой длиной. Однако с ростом если отношение (скорость кода) фиксировано, растет и разность а следовательно, и объем таблицы исправлений, равный Так, для кода (63, 45) он равен Следовательно, применение систематического кода в общем случае хотя и позволяет упростить декодирование по сравнению с табличным методом, все же при значениях порядка нескольких десятков не решает задачи практической реализации. Если -код используется для обнаружения ошибок, то в теории кодирования доказывается, что при - любой вероятности ошибочного приема символа найдется код, для которого Таким образом, увеличивая число корректирующих символов, можно обеспечить сколь угодно малую вероятность необнаруженной ошибки (и, следовательно, вероятность выдачи получателю ложной информации). Однако для сохранения скорости кода это потребует увеличения длины блока При большой длине блока вероятность появления обнаруживаемой ошибки возрастает и, следовательно, увеличиваются трудности восполнения потерянной информации. В последнее время проблеме декодирования уделялось большое внимание и достигнуты значительные успехи. Был предложен ряд кодов и способов декодирования, при котором сложность декодера растет не экспоненциально, а лишь как некоторая степень Более подробно эти способы изучаются в специальных технических курсах. Здесь же укажем лишь наиболее важные из них.
|
1 |
Оглавление
|