Составление таблицы опознавателей



Лабораторная работа N 3

 

ПОСТРОЕНИЕ ГРУППОВЫХ КОДОВ

 

Целью работы является усвоение принципов построения  групповых корректирующих кодов.

 

Указания к построению кодов

Определение числа избыточных символов

 

Групповой код относится к блоковым кодам, в которых формируемая кодовая комбинация содержит n разрядов, из которых k–информационных и m– проверочных ( m = n - k ). Взаимосвязь между блоками отсутствует, то есть передача и исправление ошибок в разных блоках происходят независимо друг от друга. Математической основой группового кода является теория групп (отсюда и название кода). В качестве основной операции в групповых кодах используется операция сложения по модулю два.

Построение конкретного корректирующего кода производится исходя из числа передаваемых букв (команд) или дискретных значений измеряемой величины, то есть алфавита из N элементов и статистических данных о наиболее вероятных векторах ошибок в используемом канале связи. Вектором ошибки будем называть кодовую комбинацию, имеющую единицу в разрядах, подвергающихся искажению, и нули во всех остальных разрядах. Любую искаженную кодовую комбинацию можно рассматривать теперь как сумму по модулю два разрешенной кодовой комбинации и вектора ошибки.

Будем рассматривать как независимые ошибки, так и пачки ошибок. Независимые ошибки, это когда по одной из них ничего нельзя сказать о других. В пачках ошибки расположены рядом. Длиной пачки ошибки называется дистанция между первым и последним искаженным символом. Внутри пачки могут оказаться и неискаженные символы.

Исходя из неравенства , определяем число информационных разрядов k, необходимое для передачи заданного числа команд обычным двоичным кодом.

Каждой из  ненулевых комбинаций К-разрядного кода нам необходимо поставить в соответствие комбинацию из n разрядов. Значения символов в n–к проверочных разрядах такой комбинации устанавливаются в результате суммирования по модулю два значений символов в определенных информационных разрядах.

Нам надлежит определить число проверочных разрядов, их значение и местоположение в n-разрядной кодовой комбинации.

Из общего числа  возможных ошибок, групповой код может исправить всего  разновидностей ошибок.

Чтобы иметь возможность получить информацию о векторе ошибки, воздействию которого подверглась полученная кодовая комбинация, каждому вектору ошибки, подлежащей устранению, должна быть сопоставлена некоторая контрольная последовательность символов, называемая опознавателем.

Каждый символ опознавателя будет определяться в результате проверки одного из равенств на приемной стороне. Эти равенства мы составим для определения значений проверочных символов при кодировании на передающей стороне.

В групповом коде значения проверочных символов подбираются так, чтобы сумма по модулю два всех символов (включая проверочный), входящих в каждое из равенств, равнялась нулю. В таком случае число единиц среди этих символов при отсутствии ошибок четное. Поэтому операции определения символов опознавателя называют проверками на четность. При отсутствии ошибок в результате всех проверок на четность образуется опознаватель, состоящий из одних нулей. Если проверочное равенство не удовлетворяется, то в соответствующем разряде опознавателя появляется единица. Исправление ошибок возможно лишь при наличии взаимно однозначного соответствия между множеством опознавателей и множеством подлежащих исправлению разновидностей ошибок.

Таким образом, количество подлежащих исправлению ошибок является определяющим для выбора числа избыточных разрядов n-к. Последних должно быть достаточно для того, чтобы обеспечить необходимое число опознавателей.

Если, например, мы желаем исправлять все одиночные ошибки, то исправлению подлежит n ошибок. Вектора ошибок имеют в этом случае следующий вид :

=(000...01) =(000...10) ........ =(100...00)

Различных ненулевых опознавателей должно быть не менее n.

Необходимое число проверочных разрядов, следовательно, должно определяться из соотношения :

.

В общем случае для исправления всех независимых ошибок кратности до t включительно получаем :

.

    В общем случае это неравенство записывается следующим образом: , где Q число ошибок, которые необходимо исправить. Например, для исправления пачек в 3 и менее символов

    , где

n – одиночные ошибки,

    ( n -1) – пачки в 2 соседних символа (… 0110…)

    2( n -2) – пачки в 3 соседних символа (…01110…) и в два символа через один (…01010…).

Стоит подчеркнуть, что в приведенных соотношениях указывается теоретический предел минимально возможного числа проверочных разрядов, который далеко не во всех случаях можно реализовать практически.

 

Составление таблицы опознавателей

 

Начнем для простоты с установления опознавателей для случая исправления одиночных ошибок. Допустим, необходимо закодировать 15 команд (букв).

Таблица 2.1

N разряда Вектор ошибки Опознаватель
1 2 3 4 5 6 7 0000001 0000010 0000100 0001000 0010000 0100000 1000000 001 010 011 100 101 110 111

 

Тогда к=4, n=7. Три избыточных разряда позволяют использовать в качестве опознавателей трехразрядные двоичные последовательности. В принципе они могут быть сопоставлены подлежащим исправлению ошибкам в любом порядке. Однако, более целесообразно опознаватели сопоставлять с номерами разрядов, в которых произошли ошибки (табл. 2.1).

Коды, в которых опознаватели устанавливаются по указанному принципу, известны как коды Хэмминга.

Возьмем теперь более сложный случай исправления всех одиночных и двойных независимых ошибок, то есть две ошибки в любых разрядах. В качестве опознавателей одиночных ошибок в первом и втором разрядах можно принять, как и ранее две комбинации 0...001 и 0...010 (табл. 2.2).

Подлежащий исправлению вектор ошибки 0...011 может рассматриваться как результат суммарного воздействия двух векторов ошибок 0...010 и 0...001 и, следовательно, ему должен быть сопоставлен опознаватель, представляющий собой сумму по модулю два опознавателей этих ошибок, т.е. 0...011.

Вектору ошибки 0...0100 сопоставляем опознаватель 0...0100 и т.д. Выбирая в качестве опознавателя единичной ошибки в i-м разряде комбинацию с числом разрядов меньшим i, необходимо убедиться в том, что для всех остальных подлежащих исправлению векторов ошибок, имеющих единицы в i-м и более младших разрядах, получаются опознаватели, отличные от уже использованных. В результате имеем:

Таблица 2.2

Вектор ошибки Опознаватель Вектор ошибки Опознаватель
00000001 00000010 00000011 00000100 00000101 00000110 00001000 00001001 000001 000010 000011 000100 000101 000110 001000 001001 00001010 00001100 00010000 00010001 00010010 00010100 00011000 00100000 001010 001100 001111 001110 001101 001011 000111 010000

Таким путем можно получить таблицу опознавателей для векторов ошибок в любом числе разрядов.

Если опознаватели векторов ошибок с единицами в нескольких разрядах устанавливаются как суммы по модулю два опознавателей одиночных ошибок в этих разрядах, то для определения проверочных равенств достаточно знать только опознаватели одиночных ошибок в каждом из разрядов.

Для построения кодов, исправляющих двойные независимые ошибки, пачки ошибок в двух и трех разрядах опознаватели одиночных ошибок в каждом из разрядов сведены в табл. 2.3, 2.4, 2.5, которые составлены с помощью ЭВМ.

 

Таблица 2.3 Опознаватели одиночных ошибок для кода, исправляющий двойные независимые ошибки   Таблица 2.4 Опознаватели одиночных ошибок для кода, исправляющего пачки ошибок в двух и менее разрядов

 

N разряда Опознаватель

 

N разряда Опознаватель
1 2 3 4 5 6 7 8 9 0000001 0000010 0000100 0001000 0001111 0010000 0100000 0110011 1000000 1 2 3 4 5 6 7 8 00001 00010 00100 01000 01101 00111 01110 10000

 

Таблица 2.5 Опознаватели одиночных ошибок для кода, исправляющего пачки ошибок в трех и менее разрядах

 

N разряда Опознаватель
1 2 3 4 5 6 7 8 9 10 0000001 0000010 0000100 0001000 0010000 0100000 0001001 0010010 0100100 1000000

 


Дата добавления: 2021-03-18; просмотров: 637; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!