Коды с исправлением ошибок




Для надежной передачи кодов было предложено два основных метода. Первый - внести избыточность в форме дополнительных битов в передаваемый блок данных так, чтобы, анализируя полученный блок, можно было бы указать где возникли искажения. Это, так называемые, коды с исправлением ошибок. Второй - внести избыточность, но лишь настолько, чтобы, анализируя полученные данные, можно было сказать есть в переданном блоке ошибки или нет. Это, так называемые, коды с обнаружением ошибок.

Пусть данные занимают разрядов и мы добавляем разрядов как контрольные разряды. Нам надо передать слово длины , которое называют n-битовым кодословом. Пусть у нас есть два кодослова 10001001 и 10110001. С помощью операции EXCLUSIVE OR легко определить число различных разрядов. В данном случае их 3. Количество разных битов в двух кодословах называется расстоянием Хемминга. Поэтому если два кодослова находятся на расстоянии по Хеммингу, это значит, что надо преобразовать ровно разрядов, чтобы преобразовать одно кодослово в другое.

В силу избыточности не все комбинаций возможны. Зная алгоритм установки контрольных разрядов, мы можем вычислить минимальное расстояние по Хеммингу между допустимыми кодословами. Способен код исправлять ошибки или только обнаруживать зависит от расстояния между его кодословами по Хеммингу. Если мы хоти обнаруживать ошибок, то надо чтобы кодослова отстояли друг от друга на расстояние . Тогда если принятый код отстоит на расстояние , то принятое кодослово содержит k ошибок. Если мы хотим исправлять ошибки, то надо чтобы кодослова отстояли друг от друга на . Поэтому даже если переданное кодословосодержит ошибок, оно все равно ближе к правильному кодослову, чем к какому-либо еще, и следовательно можно определить, исходное слово.

Простым примеров кода с обнаружением одной ошибки является код с битом четности. Конструкция его такова: к исходному кодослову добавляется бит четности. Если число 1 в исходном кодослове четно, то значение этого бита 0. Если нечетно, то 0. Кодослова с битом четности имеют расстояние хемминга 2.

Для примера кода с исправлением ошибки рассмотрим код, у которого есть только четыре правильных кодослова: 0000000000, 0000011111, 11111100000, 11111111111. Расстояние по хеммингу у этого кода 5, следовательно он может исправлять двойные ошибки. Если получатель получит слово 0000000111, то ясно, что исходное слово имело вид 0000011111.

Оценим минимальное количество контрольных разрядов, необходимое для исправления одиночных ошибок. Пусть у нас есть код из бит сообщения и контрольных бит. Каждое из правильныхкодослов имеет неправильных кодослов на расстоянии 1. Такими образом, с каждым из кодослов связано кодослов. Так как общее число кодослов , то

, учитывая что получаем

Этот теоретический предел достижим при использовании метода, предложенного Хеммингом. Идея его в следующем: все биты, номера которых есть степень 2 (1,2,4,8,16 и т.д.) - контрольные, остальные - биты сообщения. Каждый контрольный бит отвечает за четность группы битов, включая себя. Один и тот же бит может относиться к разным группам. Значение бита сообщения определяется по значениям контрольных битов. Чтобы определить какие контрольные биты контролируют бит в позиции k надо представить значение k по степеням двойки. Например, , а .

Получив кодослово, получатель устанавливает специальный счетчик в ноль. Затем он проверят каждый контрольный бит на предмет правильности четности. Если четность нарушена, то порядковый номер этого бита заноситься в счетчик. Если после этой проверки счетчик ноль, то все в порядке. Если нет, то он содержит номер неправильного разряда. Например, 1, 2, 8 - ошибочные контрольные разряды, то ошибка в 11 разряде, так как только он связан одновременно с этими контрольными разрядами.

Код хемминга может исправлять только единичные ошибки. Однако, есть прием, который позволяет распространить идеи Хемминга на случай групповых ошибок. Пусть нам надо передать k кодослов. Расположим их в виде матрицы одно слово - строка. Обычно, передают слово за словом. Но мы поступим иначе, передадим слово длины , из 1-ых разрядов всех слов, затем - вторых и т.д. По приеме всех слов матрица восстанавливается. Если мы хотим обнаруживать групповые ошибки размера , то в каждой строке восстановленной матрицы будет не более одной ошибки. А с одиночными ошибками код хемминга справиться.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-29 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: