Реферат: Количественная оценка информации

--PAGE_BREAK--

            Вероятности, которые расположены по диагонали, определяют правильный прем, остальные – ложный.Значение цифр, заполняющих колонки канальной матрицы, обычно уменьшаются по мере удаления от главной диагонали и при полном отсутствии помех всех, кроме цифр, расположенных на главной диагонали, равны нулю.
            Если описывать канал связи со стороны источника сообщений, то прохождение данного вида сигнала в данном канале связи описывается распределением условных вероятностей вида <img width=«64» height=«25» src=«ref-1_1956537995-179.coolpic» v:shapes="_x0000_i1087">, так для сигнала <img width=«16» height=«24» src=«ref-1_1956538174-94.coolpic» v:shapes="_x0000_i1088">распределением вида

<img width=«344» height=«25» src=«ref-1_1956538268-548.coolpic» v:shapes="_x0000_i1089">                              (13)

<img width=«255» height=«39» src=«ref-1_1956538816-573.coolpic» v:shapes="_x0000_i1090">(14)

<img width=«268» height=«45» src=«ref-1_1956539389-685.coolpic» v:shapes="_x0000_i1091">(15)

<img width=«305» height=«37» src=«ref-1_1956540074-771.coolpic» v:shapes="_x0000_i1092">(16)

<img width=«127» height=«24» src=«ref-1_1956540845-199.coolpic» v:shapes="_x0000_i1093">

В
А

   

        b1                   b2      …           bj           …           bm

а1

а2



аi



     аm

<img width=«12» height=«23» src=«ref-1_1956535358-73.coolpic» v:shapes="_x0000_i1094"><img width=«148» height=«48» src=«ref-1_1956541117-506.coolpic» v:shapes="_x0000_i1095"><img width=«99» height=«48» src=«ref-1_1956541623-339.coolpic» v:shapes="_x0000_i1096"><img width=«12» height=«23» src=«ref-1_1956535358-73.coolpic» v:shapes="_x0000_i1097"><img width=«107» height=«48» src=«ref-1_1956542035-343.coolpic» v:shapes="_x0000_i1098">

…………………………………………………………..
   <img width=«147» height=«24» src=«ref-1_1956542378-278.coolpic» v:shapes="_x0000_i1099"><img width=«204» height=«25» src=«ref-1_1956542656-330.coolpic» v:shapes="_x0000_i1100">

……………………………………………………………
 <img width=«265» height=«25» src=«ref-1_1956542986-425.coolpic» v:shapes="_x0000_i1101"><img width=«101» height=«24» src=«ref-1_1956543411-206.coolpic» v:shapes="_x0000_i1102">



<img width=«368» height=«25» src=«ref-1_1956543617-575.coolpic» v:shapes="_x0000_i1103">
<img width=«277» height=«45» src=«ref-1_1956544192-689.coolpic» v:shapes="_x0000_i1104">(17)

<img width=«309» height=«37» src=«ref-1_1956544881-781.coolpic» v:shapes="_x0000_i1105">(18)

<img width=«176» height=«25» src=«ref-1_1956545662-345.coolpic» v:shapes="_x0000_i1106">

<img width=«268» height=«37» src=«ref-1_1956534659-699.coolpic» v:shapes="_x0000_i1107">(19)

<img width=«64» height=«25» src=«ref-1_1956537995-179.coolpic» v:shapes="_x0000_i1108">

<img width=«40» height=«24» src=«ref-1_1956527852-137.coolpic» v:shapes="_x0000_i1109">

<img width=«41» height=«25» src=«ref-1_1956547022-144.coolpic» v:shapes="_x0000_i1110">

<img width=«120» height=«36» src=«ref-1_1956547166-416.coolpic» v:shapes="_x0000_i1111">

<img width=«188» height=«37» src=«ref-1_1956547582-524.coolpic» v:shapes="_x0000_i1112">
<img width=«176» height=«37» src=«ref-1_1956548106-510.coolpic» v:shapes="_x0000_i1113">

<img width=«185» height=«36» src=«ref-1_1956548616-507.coolpic» v:shapes="_x0000_i1114">

<img width=«361» height=«37» src=«ref-1_1956549123-866.coolpic» v:shapes="_x0000_i1115">

<img width=«391» height=«37» src=«ref-1_1956549989-889.coolpic» v:shapes="_x0000_i1116">

<img width=«381» height=«45» src=«ref-1_1956550878-1021.coolpic» v:shapes="_x0000_i1117">

<img width=«317» height=«99» src=«ref-1_1956551899-1397.coolpic» v:shapes="_x0000_i1118">

<img width=«280» height=«39» src=«ref-1_1956553296-689.coolpic» v:shapes="_x0000_i1119">

<img width=«153» height=«37» src=«ref-1_1956553985-494.coolpic» v:shapes="_x0000_i1120">

<img width=«261» height=«37» src=«ref-1_1956554479-738.coolpic» v:shapes="_x0000_i1121">

<img width=«261» height=«37» src=«ref-1_1956555217-726.coolpic» v:shapes="_x0000_i1122">

<img width=«64» height=«25» src=«ref-1_1956527989-177.coolpic» v:shapes="_x0000_i1123">    <img width=«64» height=«25» src=«ref-1_1956537995-179.coolpic» v:shapes="_x0000_i1124">

<img width=«331» height=«61» src=«ref-1_1956556299-1037.coolpic» v:shapes="_x0000_i1125">

<img width=«227» height=«21» src=«ref-1_1956557336-379.coolpic» v:shapes="_x0000_i1126">
тема 3. Вычисление информационных потерь при передаче сообщений по каналам связи с шумами
            Потери информации в каналах связи с шумами обычно описывают при помощи условной энтропии и энтропии объединения.

            Если помех нет или их уровень настолько низок,что они не в состоянии уничтожить сигнал или имитировать полезный сигнал в отсутствие передачи,то при передаче  мы будем твердо уверены,что получим — сигнал,соответствующий переданному ai-му сигналу. События А и В статистически жестко связаны, условная вероятность максимальна  , а условная энтропия

!!!!1

так как !!!!.. В этом случаи количество информации, содержащейся в принятом ансамбле сообщений В, равно энтропии передаваемых сообщений ансамбля А, т.е. I(В, А) = Н (А).

            При высоком уровне помех любой из принятых сигналов bjможет соответствовать любому принятому сигналу ai, статистическая связь между переданными и принятыми сигналами отсутствует. В этом случае вероятности!!! Есть вероятности независимых событий и !!!!!!

!!!!1

так как !!11, т.е. условная энтропия равна безусловной, а количество информации, содержащейся в В, относительно А равно нулю:

!!!!

Информационные характеристики реальных каналов связи лежат между этими двумя предельными случаями. При этом потери информации при передаче!!! символов по данному каналу связи

!!!!!

            Несмотря на то, что часть информации поражается помехами, между принятыми и переданными сообщениями существует статистическая зависимость. Это позволяет описывать информационные характеристики реальных каналов связи при помощи энтропии объединения статистически зависимых событий. Так как

!!!!1

то потери в канале связи могут быть учтены при помощи энтропии объединения следующим образом:

!!1!

а с использованием условной энтропии

!!!

            Для вычисления среднего количества информации, содержащегося в принятом ансамбле сообщений В относительно передаваемого ансамбля сообщений А в условиях действия помех, пользуются следующими выражениями, выведенными непосредственно из выражения (25):

!!!!!!!!

            Для вычисления часто удобно применять выражения (26-28) в виде

!!!!!!!

            Для полного и всестороннего описания канала связи необходимо задать: канальную матрицу вида!!! и безусловные вероятности вида!!! или канальную матрицу вида!!! и безусловные вероятности вида !!!!!.. В последнем случае сумма значений матрицы по столбцам дает безусловные вероятности вида !!!!!!!!!!, а  сумма по строкам дает безусловные вероятности вида !!!!!!.. Условные вероятности могут быть найденными из выражений:

!!!!!!!

            Зная условные и безусловные вероятности, можно найти Н (А), Н(В), Н(А/В) и Н(В/А).

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



--PAGE_BREAK--Понятие об идее коррекции ошибок


Для того чтобы в принятом сообщении можно было обнаружить ошибку это сообщение должно обладать некоторой избыточной  информацией, позволяющей отличить ошибочный код от правильного Например, если переданное сообщение состоит из трех абсо­лютно одинаковых частей, то в принятом сообщении отделение правильных символов от ошибочных может быть осуществлено по результатам накопления посылок одного вида, например 0 или 1. Для двоичных кодов этот метод можно проиллюстрировать следую­щим примером:

10110 — переданная кодовая комбинация;

100101-я принятая комбинация;

10100 — -я принятая комбинация;

00110 — 3-я принятая комбинация;

10110 — накопленная комбинация.

Как видим, несмотря на то, что во всех трех принятыхкомбинациях были ошибки, накопленная не содержит ошибок[8].

Принятое сообщение может также состоять из кода и его инверсии. Код и инверсия посылаются в канал связи как одно целое. Ошибка на приемном конце выделяется при сопоставлении кода и его инверсии.

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

<img width=«131» height=«45» src=«ref-1_1956570542-323.coolpic» v:shapes="_x0000_i1169">                                             (55)

где <img width=«11» height=«19» src=«ref-1_1956570865-82.coolpic» v:shapes="_x0000_i1170">  — число единиц в кодовом слове. Если бы не существовало условия постоянного веса, то число комбинаций кода могло бы быть гораздо большим, а именно <img width=«20» height=«20» src=«ref-1_1956570947-97.coolpic» v:shapes="_x0000_i1171">. Примером кода с постоянным весом может служить стандартный телеграфный код № 3 (см. приложение 4). Комбинации этого кода построены таким образом, что на 7 тактов, в течение которых должна быть принята одна кодовая комбинация, всегда приходятся три токовые и четыре безтоковые посылки. Увеличение или уменьшение количества токовых посылок говорит о наличии ошибки.

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

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

Коды без избыточности обнаруживать, а тем более исправлять ошибки не могут[9].Минимальное количество символов, в которых любые две комбинации кода отличаются друг от друга, называется кодовым расстоянием. Минимальное количество символов, в которых все комбинации кода отличаются друг от друга, называется минимальным кодовым расстоянием. Минимальное кодовое расстояние — параметр, определяющий помехоустойчивость кода и заложенную в коде избыточность. Минимальным кодовым расстоянием определяются корректирующие свойства кодов.

В общем случае для обнаружения rошибок минимальное кодовое расстояние

<img width=«71» height=«24» src=«ref-1_1956571044-160.coolpic» v:shapes="_x0000_i1172">                                                    (56)

Минимальное кодовое расстояние, необходимое для одновременного обнаружения и исправления ошибок,

<img width=«93» height=«24» src=«ref-1_1956571204-184.coolpic» v:shapes="_x0000_i1173">                                                  (57)

гдеs — число исправляемых ошибок.

Для кодов, только исправляющих ошибки,

<img width=«79» height=«24» src=«ref-1_1956571388-174.coolpic» v:shapes="_x0000_i1174">                                                    (58)

Для того чтобы определить кодовое расстояние между двумя комбинациями двоичного кода, достаточно просуммировать эти комбинации по модулю 2 и подсчитать число единиц в полученной комбинации.

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

Если кодовая комбинация двоичного кода А отстоит от кодовой комбинации В на расстоянии d
,
то это значит, что в коде А нужноdсимволов заменить на обратные, чтобы получить код В, но это не означает, что нужно dдобавочных символов, чтобы кодобладал данными корректирующими свойствами. В двоичных кодах для обнаружения одиночной ошибки достаточно иметь 1 дополнительный символ независимо от числа информационных разрядов кода, а минимальное кодовое расстояние<img width=«48» height=«24» src=«ref-1_1956571562-141.coolpic» v:shapes="_x0000_i1175">

Для обнаружения и исправления одиночной ошибки соотношение между числом информационных разрядов <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1176"> и числом корректирующих разрядов <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1177"> должно удовлетворять следующим условиям:

<img width=«76» height=«24» src=«ref-1_1956571899-228.coolpic» v:shapes="_x0000_i1178">                                                      (59)

<img width=«80» height=«44» src=«ref-1_1956572127-252.coolpic» v:shapes="_x0000_i1179">                                                      60)

при этом подразумевается, что общая длина кодовой комбинации

<img width=«76» height=«24» src=«ref-1_1956572379-165.coolpic» v:shapes="_x0000_i1180">.                                                     (61)

Для практических расчетов при определении числа контрольных разрядов кодов с минимальным кодовым расстоянием<img width=«44» height=«24» src=«ref-1_1956572544-135.coolpic» v:shapes="_x0000_i1181"> удобно пользоваться выражениями:

<img width=«133» height=«27» src=«ref-1_1956572679-361.coolpic» v:shapes="_x0000_i1182">                                          (62)

если известна длина полной кодовой комбинации п, и

<img width=«259» height=«27» src=«ref-1_1956573040-550.coolpic» v:shapes="_x0000_i1183">                           (63)

если при расчетах удобнее исходить из заданного числа информационных символов <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1184">[10].

Для кодов, обнаруживающих все трехкратные ошибки<img width=«60» height=«24» src=«ref-1_1956573687-161.coolpic» v:shapes="_x0000_i1185">

<img width=«144» height=«27» src=«ref-1_1956573848-367.coolpic» v:shapes="_x0000_i1186">                                            (64)

или

<img width=«12» height=«23» src=«ref-1_1956535358-73.coolpic» v:shapes="_x0000_i1187"><img width=«255» height=«27» src=«ref-1_1956574288-535.coolpic» v:shapes="_x0000_i1188">                                  (65)

Для кодов длиной в п символов, исправляющих одну или две ошибки<img width=«60» height=«24» src=«ref-1_1956574823-159.coolpic» v:shapes="_x0000_i1189">

<img width=«160» height=«27» src=«ref-1_1956574982-357.coolpic» v:shapes="_x0000_i1190">                                           (66)

Для практических расчетов можно пользоваться выражением

<img width=«155» height=«51» src=«ref-1_1956575339-453.coolpic» v:shapes="_x0000_i1191">                                           (67)

Для кодов, исправляющих 3 ошибки<img width=«60» height=«24» src=«ref-1_1956575792-160.coolpic» v:shapes="_x0000_i1192">

<img width=«187» height=«51» src=«ref-1_1956575952-509.coolpic» v:shapes="_x0000_i1193">                                     (68)

            Для кодов, исправляющих sошибок <img width=«89» height=«24» src=«ref-1_1956576461-192.coolpic» v:shapes="_x0000_i1194">

<img width=«385» height=«27» src=«ref-1_1956576653-633.coolpic» v:shapes="_x0000_i1195">                  (69)

Выражение слева известно как нижняя граница Хэмминга [16], а выражение справа – как верхняя граница Варшамова – Гильберта [3][11]

            Для приближенных расчетов можно пользоваться выражением

<img width=«197» height=«51» src=«ref-1_1956577286-501.coolpic» v:shapes="_x0000_i1196">                                           (70)

Можно предположить, что значение <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1197"> будет приближаться к верхней границе в зависимости от того, насколько выражение под знаком логарифма приближается к целой степени двух.

    продолжение
--PAGE_BREAK--Линейные групповые коды
Линейныминазываются коды, в которых проверочные символы представляют собой линейные комбинации информационных символов.

Для двоичных кодов в качестве линейной операции используют сложение по модулю 2.

Правила сложения по модулю 2 определяются следующими равенствами:

<img width=«281» height=«21» src=«ref-1_1956577886-385.coolpic» v:shapes="_x0000_i1198">

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

Свойство линейных кодов:сумма (разность) кодовых векторов линейного кода дает вектор, принадлежащий данному коду.

Линейные коды образуют алгебраическую группу по отношению к операции сложения по модулю 2. В этом смысле они являются групповыми кодами.

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

Вес кодового вектора(кодовой комбинации) равен числу его ненулевых компонентов.

Расстояние между двумя кодовыми векторамиравно весу вектора, полученного в результате сложения исходных векторов помодулю 2. Таким образом, для данного группового кода

<img width=«67» height=«24» src=«ref-1_1956578271-173.coolpic» v:shapes="_x0000_i1199">.

Групповые коды удобно задавать матрицами, размерность которых определяется параметрами кода <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1200"> и <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1201">.Число строк матрицы равно <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1202">, число столбцов равно <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1203">+<img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1204">=<img width=«13» height=«15» src=«ref-1_1956578933-84.coolpic» v:shapes="_x0000_i1205">:

<img width=«303» height=«99» src=«ref-1_1956579017-1349.coolpic» v:shapes="_x0000_i1206">                                       (71)

Коды, порождаемые этими матрицами, известны как <img width=«39» height=«21» src=«ref-1_1956580366-134.coolpic» v:shapes="_x0000_i1207">-коды, где <img width=«43» height=«24» src=«ref-1_1956580500-132.coolpic» v:shapes="_x0000_i1208">, а соответствующие им матрицы называют порождающими, производящими, образующими.

Порождающая матрица С может быть представлена двумя матрицами И и П (информационной и проверочной). Число столбцов матрицы П равно <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1209">, число столбцов матрицы И равно <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1210">:

<img width=«395» height=«99» src=«ref-1_1956580828-1777.coolpic» v:shapes="_x0000_i1211">                            (72)

Теорией и практикой установлено, что в качестве матрицы И удобно брать единичную матрицу в канонической форме:

<img width=«182» height=«77» src=«ref-1_1956582605-3663.coolpic» v:shapes="_x0000_i1212">

При выборе матрицы П исходят из следующих соображений:чем больше единиц в разрядах проверочной матрицы П, тем ближе соответствующий порождаемый код к оптимальному[12], с другой стороны, число единиц в матрице П определяет число сумматоров по модулю 2 в шифраторе и дешифраторе, т. е. чем больше единиц в матрице П, тем сложнее аппаратура.

Вес каждой строки матрицы П должен быть не менее <img width=«97» height=«24» src=«ref-1_1956586268-220.coolpic» v:shapes="_x0000_i1213">,где <img width=«25» height=«23» src=«ref-1_1956586488-119.coolpic» v:shapes="_x0000_i1214">  — вес соответствующей строки матрицы И. Если матрица И— единичная, то<img width=«49» height=«23» src=«ref-1_1956586607-142.coolpic» v:shapes="_x0000_i1215"> (удобство выбора в качестве матрицы И единичной матрицы очевидно: при<img width=«49» height=«23» src=«ref-1_1956586749-146.coolpic» v:shapes="_x0000_i1216"> усложнилось бы как построение кодов, так и их техническая реализация).

При соблюдении перечисленных условий любую порождающую матрицу группового кода можно привести к следующему виду:

<img width=«375» height=«109» src=«ref-1_1956586895-9763.coolpic» v:shapes="_x0000_i1217">

называемому левой канонической формой порождающей матрицы.

Для кодов с<img width=«20» height=«24» src=«ref-1_1956596658-104.coolpic» v:shapes="_x0000_i1218">=2производящая матрица С имеет вид

<img width=«354» height=«112» src=«ref-1_1956596762-10145.coolpic» v:shapes="_x0000_i1219">

Во всех комбинациях кода, построенного при помощи такой матрицы, четное число единиц.

Для кодов с<img width=«44» height=«24» src=«ref-1_1956606907-137.coolpic» v:shapes="_x0000_i1220"> порождающая матрица не может быть представлена в форме, общей для всех кодов с данным<img width=«20» height=«24» src=«ref-1_1956596658-104.coolpic» v:shapes="_x0000_i1221">.Вид матрицы зависит от конкретных требований к порождаемому коду. Этими требованиями могут быть либо минимум корректирующих разрядов, либо максимальная простота аппаратуры.

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

Для кодов с<img width=«45» height=«24» src=«ref-1_1956607148-135.coolpic» v:shapes="_x0000_i1222"> соотношения п и <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1223">. следующие: (3; 1), (7;4), (15; 11), (31; 26), (63; 57) и т. д.

Плотно упакованные коды, оптимальные с точки зрения минимума избыточных символов, обнаруживающие максимально возможное количество вариантов ошибок кратностью r+ 1; r+ 2 и т. д. и имеющие<img width=«45» height=«24» src=«ref-1_1956607382-142.coolpic» v:shapes="_x0000_i1224">и <img width=«45» height=«19» src=«ref-1_1956607524-134.coolpic» v:shapes="_x0000_i1225">, были исследованы Д. Слепяном в работе [10]. Для получения этих кодов матрица П должна иметь комбинации с максимальным весом. Для этого при построении кодов с<img width=«44» height=«24» src=«ref-1_1956606907-137.coolpic» v:shapes="_x0000_i1226"> последовательно используются векторы длиной п<img width=«31» height=«24» src=«ref-1_1956607795-107.coolpic» v:shapes="_x0000_i1227">, весом<img width=«173» height=«24» src=«ref-1_1956607902-267.coolpic» v:shapes="_x0000_i1228">. Тем же Слепяном в работе [11] были исследованы неплотно упакованные коды с малой плотностью проверок на четность. Эти коды экономны с точки зрения простоты аппаратуры и содержат минимальное число единиц в корректирующих разрядах порождающей матрицы. При построении кодов с максимально простыми шифраторами и дешифраторами последовательно выбираются векторы весом<img width=«25» height=«23» src=«ref-1_1956608169-118.coolpic» v:shapes="_x0000_i1229"> = 2, 3, ...,<img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1230">. Если число комбинаций, представляющих собой корректирующие разряды кода и удовлетворяющих условию<img width=«81» height=«24» src=«ref-1_1956608386-187.coolpic» v:shapes="_x0000_i1231">,больше <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1232">, то в первом случаене используют наборы с наименьшим весом, а во втором — с наибольшим.

Строчки образующей матрицы С представляют собой <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1233"> комбинаций искомого кода. Остальные комбинации кода строятся при помощи образующей матрицы по следующему правилу: корректирующие символы, предназначенные для обнаружения или исправления ошибки в информационной части кода, находятся путем суммирования по модулю 2 тех строк матрицы П, номера которых совпадают с номерами разрядов, содержащих единицы в кодовом векторе, представляющем информационную часть кода. Полученную комбинацию приписывают справа к информационной части кода и получают вектор полного корректирующего кода. Аналогичную процедуру проделывают со второй, третьей и последующими информационными кодовыми комбинациями, пока не будет построен корректирующий код для передачи всех символов первичного алфавита.

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

<img width=«584» height=«140» src=«ref-1_1956608767-12998.coolpic» v:shapes="_x0000_i1234">

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

<img width=«447» height=«49» src=«ref-1_1956621765-3636.coolpic» v:shapes="_x0000_i1235">

Для каждой конкретной матрицы существует своя, одна-единственная система проверок. Проверки производятся по следующему правилу: в первую проверку вместе с проверочным разрядом<img width=«19» height=«23» src=«ref-1_1956625401-99.coolpic» v:shapes="_x0000_i1236"> входят информационные разряды, которые соответствуют единицам первого столбца проверочной матрицы П; во вторую проверку входит второй проверочный разряд <img width=«21» height=«23» src=«ref-1_1956625500-100.coolpic» v:shapes="_x0000_i1237"> и информационные разряды, соответствующие единицам второго столбца проверочной матрицы, и т. д. Число проверок равно числу проверочных разрядов корректирующего кода <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1238">.

В результате осуществления проверок образуется проверочный вектор<img width=«91» height=«25» src=«ref-1_1956625699-256.coolpic» v:shapes="_x0000_i1239">,который называют синдромом. Если вес синдрома равен нулю, то принятая комбинация считается безошибочной. Если хотя бы один разряд проверочного вектора содержит единицу, то принятая комбинация содержит ошибку. Исправление ошибки производится по виду синдрома, так как каждому ошибочному разряду соответствует один-единственный проверочный вектор.

Вид синдрома для каждой конкретной матрицы может быть определен при помощи проверочной матрицы Н, которая представляет собой транспонированную матрицу П, дополненную единичной матрицей<img width=«23» height=«25» src=«ref-1_1956625955-159.coolpic» v:shapes="_x0000_i1240">,число столбцов которой равно числу проверочныхразрядов кода:

<img width=«85» height=«29» src=«ref-1_1956626114-295.coolpic» v:shapes="_x0000_i1241">.

Столбцы такой матрицы представляют собой значение синдрома для разряда, соответствующего номеру столбца матрицы Н.

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

Строится кодовая таблица. В первой строке таблицы располагаются все кодовые векторы<img width=«19» height=«24» src=«ref-1_1956626409-101.coolpic» v:shapes="_x0000_i1242">.В первом столбце второй строки размещается вектор <img width=«16» height=«23» src=«ref-1_1956626510-94.coolpic» v:shapes="_x0000_i1243">, вес которого равен 1.

Остальные позиции второй строки заполняются векторами, полученными в результате суммирования по модулю 2 вектора <img width=«16» height=«23» src=«ref-1_1956626510-94.coolpic» v:shapes="_x0000_i1244"> c вектором <img width=«19» height=«24» src=«ref-1_1956626409-101.coolpic» v:shapes="_x0000_i1245">,расположенным в соответствующем столбце первой строки. В первом столбце третьей строки записывается вектор<img width=«17» height=«23» src=«ref-1_1956626799-95.coolpic» v:shapes="_x0000_i1246"> , вес которого также равен 1, однако, если вектор <img width=«16» height=«23» src=«ref-1_1956626510-94.coolpic» v:shapes="_x0000_i1247"> содержит единицу в первом разряде, то <img width=«17» height=«23» src=«ref-1_1956626799-95.coolpic» v:shapes="_x0000_i1248">— во втором. В остальные позиции третьей строки записывают суммы <img width=«19» height=«24» src=«ref-1_1956626409-101.coolpic» v:shapes="_x0000_i1249"> и <img width=«17» height=«23» src=«ref-1_1956626799-95.coolpic» v:shapes="_x0000_i1250">.

Аналогично поступают до тех пор, пока не будут просуммированы с векторами <img width=«19» height=«24» src=«ref-1_1956626409-101.coolpic» v:shapes="_x0000_i1251"> все векторы <img width=«17» height=«25» src=«ref-1_1956627380-97.coolpic» v:shapes="_x0000_i1252">, весом 1, с единицами в каждом из п разрядов. Затем суммируются по модулю 2 векторы <img width=«17» height=«25» src=«ref-1_1956627380-97.coolpic» v:shapes="_x0000_i1253">, весом 2, с последовательным перекрытием всех возможных разрядов. Вес вектора<img width=«17» height=«25» src=«ref-1_1956627380-97.coolpic» v:shapes="_x0000_i1254"> определяет число исправляемых ошибок. Числовекторов <img width=«17» height=«25» src=«ref-1_1956627380-97.coolpic» v:shapes="_x0000_i1255">, определяется возможным числом неповторяющихся синдромов и равно <img width=«48» height=«20» src=«ref-1_1956627768-181.coolpic» v:shapes="_x0000_i1256"> (нулевая комбинация говорит об отсутствии ошибки). Условие неповторяемости синдрома позволяет по его виду определять один-единственный соответствующий ему вектор <img width=«17» height=«25» src=«ref-1_1956627380-97.coolpic» v:shapes="_x0000_i1257">. Векторы <img width=«17» height=«25» src=«ref-1_1956627380-97.coolpic» v:shapes="_x0000_i1258">, есть векторы ошибок, которые могут быть исправлены данным групповым кодом.

По виду синдрома принятая комбинация может быть отнесена к тому или иному смежному классу, образованному сложением по модулю 2 кодовой комбинации <img width=«19» height=«24» src=«ref-1_1956626409-101.coolpic» v:shapes="_x0000_i1259"> с вектором ошибки <img width=«17» height=«25» src=«ref-1_1956627380-97.coolpic» v:shapes="_x0000_i1260">, т. е. к определенной строке кодовой табл.6.1.

Таблица6.1


<img width=«449» height=«152» src=«ref-1_1956628341-13539.coolpic» v:shapes="_x0000_i1261">

Принятая кодовая комбинация <img width=«23» height=«25» src=«ref-1_1956641880-110.coolpic» v:shapes="_x0000_i1262"> сравнивается с векторами, записанными в строке, соответствующей полученному в результате проверок синдрому. Истинный код будет расположен в первой строке той же колонки таблицы.Процесс исправления ошибки заключается в замене на обратное значение разрядов, соответствующих единицам в векторе ошибок <img width=«17» height=«25» src=«ref-1_1956627380-97.coolpic» v:shapes="_x0000_i1263">.

Векторы <img width=«96» height=«25» src=«ref-1_1956642087-247.coolpic» v:shapes="_x0000_i1264">  не должны быть равны ни одномуизвекторов<img width=«101» height=«25» src=«ref-1_1956642334-276.coolpic» v:shapes="_x0000_i1265">, в противном случае в таблице появились бы нулевые векторы.

    продолжение
--PAGE_BREAK--Тривиальные систематические коды. Код Хэмминга



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

Тривиальные систематические коды могут строиться, как и групповые, на основе производящей матрицы. Обычно производящая матрица строится при помощи матриц единичной, ранг которой определяется числом информационных разрядов, и добавочной, число столбцов которой определяется числом контрольных разрядов кода. Каждая строка добавочной матрицы должна содержать не менее<img width=«41» height=«24» src=«ref-1_1956642610-128.coolpic» v:shapes="_x0000_i1266"> единиц, а сумма по модулю два любых строк не менее<img width=«44» height=«24» src=«ref-1_1956642738-132.coolpic» v:shapes="_x0000_i1267"> единиц (где<img width=«19» height=«24» src=«ref-1_1956642870-104.coolpic» v:shapes="_x0000_i1268">  — минимальное кодовое расстояние). Производящая матрица позволяет находить все остальные кодовые комбинации суммированием по модулю два строк производящей матрицы во всех возможных сочетаниях.

Код Хэммингаявляется типичным примером систематического кода. Однако при его построении к матрицам обычно не прибегают. Для вычисления основных параметров кода задается либо количество информационных символов, либо количество информационных комбинаций <img width=«55» height=«21» src=«ref-1_1956642974-168.coolpic» v:shapes="_x0000_i1269">. При помощи (59) и (60) вычисляются <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1270"> и <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1271">. Соотношения между <img width=«56» height=«24» src=«ref-1_1956643338-142.coolpic» v:shapes="_x0000_i1272"> для кода Хэмминга представлены в табл. 1 приложения 8. Зная основные параметры корректирующего кода, определяют, какие позиции сигналов будут рабочими, а какие контрольными. Как показала практика, номера контрольных символов удобно выбирать по закону <img width=«17» height=«20» src=«ref-1_1956643480-95.coolpic» v:shapes="_x0000_i1273">, где<img width=«67» height=«21» src=«ref-1_1956643575-149.coolpic» v:shapes="_x0000_i1274"> и т.д. — натуральный ряд чисел. Номера контрольных символов в этом случае будут соответственно: 1, 2, 4, 8, 16, 32 и т. д.

Затем определяют значения контрольных коэффициентов (0 или 1), руководствуясь следующим правилом: сумма единиц на контрольных позициях должна быть четной. Если эта сумма четна, тозначение контрольного коэффициента — 0, в противном случае — 1.

Проверочные позиции выбираются следующим образом: составляется таблица для ряда натуральных чисел в двоичном коде. Число строк таблицы

<img width=«77» height=«24» src=«ref-1_1956643724-166.coolpic» v:shapes="_x0000_i1275">

Первой строке соответствует проверочный коэффициент <img width=«17» height=«23» src=«ref-1_1956643890-96.coolpic» v:shapes="_x0000_i1276">, второй <img width=«19» height=«23» src=«ref-1_1956643986-97.coolpic» v:shapes="_x0000_i1277"> и т.д., как показано в табл. 2 приложения 8. Затем выявляют проверочные позиции, выписывая коэффициенты по следующему принципу: в первую проверку входят коэффициенты, которые содержат в младшем разряде 1, т.е. <img width=«140» height=«24» src=«ref-1_1956644083-232.coolpic» v:shapes="_x0000_i1278"> и т. д.; во вторую — коэффициенты, содержащие 1 во втором разряде, т.е. <img width=«145» height=«24» src=«ref-1_1956644315-241.coolpic» v:shapes="_x0000_i1279"> и т.д.; в третью проверку — коэффициенты, которые содержат 1 в третьем разряде, и т. д. Номера проверочных коэффициентов соответствуют номерам проверочных позиций, что позволяет составить общую таблицу проверок (табл. 3, приложение 8). Старшинство разрядов считается слева направо, а при проверке сверху вниз. Порядок проверок показывает также порядок следования разрядов в полученном двоичном коде.

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

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

Циклические коды [4,6, 7, 9, 12, 13] названы так потому, что в них часть комбинаций кода либо все комбинации могут быть получены путем циклического сдвига одной или нескольких комбинаций кода. Циклический сдвиг осуществляется справа налево, причем крайний левый символ каждый раз переносится в конец комбинации. Циклические коды, практически[13], все относятся к систематическим кодам, в них контрольные и информационные разряды расположены на строго определенных местах. Кроме того, циклические коды относятся к числу блочных кодов. Каждый блок (одна буква является частным случаем блока) кодируется самостоятельно.

Идея построения циклических кодов базируется на использовании неприводимых в поле[14] двоичных чисел многочленов. Неприводимыми называются многочлены, которые не могут быть представлены в виде произведения многочленов низших степеней с коэффициентами из того же поля, так же, как простые числа не могут быть представлены произведением других чисел. Иными словами, неприводимые многочлены делятся без остатка только на себя или на единицу.

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

Предположим, требуйся закодировать одну из комбинаций четырехзначного двоичного кода. Предположим также, что эта комбинация — <img width=«175» height=«24» src=«ref-1_1956644556-297.coolpic» v:shapes="_x0000_i1280">. Пока не обосновывая свой выбор, берем из таблицы неприводимых многочленов (табл. 2, приложение 9) в качестве образующего многочлен <img width=«167» height=«24» src=«ref-1_1956644853-290.coolpic» v:shapes="_x0000_i1281">. Затем умножим <img width=«37» height=«21» src=«ref-1_1956645143-128.coolpic» v:shapes="_x0000_i1282"> на одночлен той же степени, что и образующий многочлен. От умножения многочлена на одночлен степени п степень каждого члена многочлена повысится на <img width=«13» height=«15» src=«ref-1_1956578933-84.coolpic» v:shapes="_x0000_i1283">, что эквивалентно приписыванию <img width=«13» height=«15» src=«ref-1_1956578933-84.coolpic» v:shapes="_x0000_i1284"> нулей со стороны младших разрядов многочлена. Так как степень выбранного неприводимого многочлена равна трем, то исходная информационная комбинация умножается на одночлен третьей степени:

<img width=«340» height=«24» src=«ref-1_1956645439-493.coolpic» v:shapes="_x0000_i1285">

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

Значение корректирующих разрядов находят по результатуотделения<img width=«61» height=«24» src=«ref-1_1956645932-161.coolpic» v:shapes="_x0000_i1286"> на <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1287">:

 <img width=«447» height=«264» src=«ref-1_1956646225-1912.coolpic» v:shapes="_x0000_i1288">    <img width=«24» height=«33» src=«ref-1_1956648137-73.coolpic» v:shapes="_x0000_i1289">

или

<img width=«200» height=«226» src=«ref-1_1956648210-995.coolpic» v:shapes="_x0000_i1290">

Таким образом,

<img width=«263» height=«48» src=«ref-1_1956649205-536.coolpic» v:shapes="_x0000_i1291">

или в общем виде

<img width=«169» height=«48» src=«ref-1_1956649741-485.coolpic» v:shapes="_x0000_i1292">                                                          (75)

где<img width=«36» height=«21» src=«ref-1_1956650226-129.coolpic» v:shapes="_x0000_i1293"> -частное,a <img width=«35» height=«21» src=«ref-1_1956650355-127.coolpic» v:shapes="_x0000_i1294"> -остаток от деления <img width=«61» height=«24» src=«ref-1_1956645932-161.coolpic» v:shapes="_x0000_i1295"> на <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1296">.

Так как в двоичной арифметике <img width=«57» height=«19» src=«ref-1_1956650775-147.coolpic» v:shapes="_x0000_i1297">, а значит, <img width=«43» height=«17» src=«ref-1_1956650922-112.coolpic» v:shapes="_x0000_i1298">, то можно при сложении двоичных чисел переносить слагаемые из одной части равенства в другую без изменения знака (если это удобно), поэтому равенство вида <img width=«64» height=«19» src=«ref-1_1956651034-156.coolpic» v:shapes="_x0000_i1299"> можно записать и как <img width=«41» height=«21» src=«ref-1_1956651190-124.coolpic» v:shapes="_x0000_i1300"> и как <img width=«61» height=«19» src=«ref-1_1956651314-141.coolpic» v:shapes="_x0000_i1301">. Все три равенства в данном случае означают, что либо <img width=«13» height=«15» src=«ref-1_1956651455-84.coolpic» v:shapes="_x0000_i1302"> и <img width=«13» height=«19» src=«ref-1_1956651539-88.coolpic» v:shapes="_x0000_i1303"> равны 0, либо а и <img width=«13» height=«19» src=«ref-1_1956651539-88.coolpic» v:shapes="_x0000_i1304"> равны 1, т. е. имеют одинаковую четность.

Таким образом, выражение (75) можно записать как

<img width=«251» height=«24» src=«ref-1_1956651715-412.coolpic» v:shapes="_x0000_i1305">                                       (76)

что в случае нашего примера даст

<img width=«371» height=«24» src=«ref-1_1956652127-528.coolpic» v:shapes="_x0000_i1306">

или

<img width=«307» height=«21» src=«ref-1_1956652655-455.coolpic» v:shapes="_x0000_i1307">

Многочлен 1101001 и есть искомая комбинация, где 1101 — информационная часть, а 001 — контрольные символы. Заметим, что искомую комбинацию мы получили бы и как в результате умножения одной из комбинаций полного четырехзначного двоичного кода (в данном случае 1111) на образующий многочлен, так и умножением заданной комбинации на одночлен, имеющий ту же степень, что и выбранный образующий многочлен (в нашем случае таким образом была получена комбинация 1101000) с последующим добавлением к полученному произведению остатка от деления этого произведения на образующий многочлен (в нашем примере остаток имел вид 001).

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

Шифраторы циклических кодов, в том или ином виде, построены по принципу умножения двоичных многочленов. Кодовые комбинации получаются в результате сложения соседних комбинаций по модулю два, что, как мы увидим ниже, эквивалентно умножению первой комбинации на двучлен <img width=«35» height=«19» src=«ref-1_1956653110-111.coolpic» v:shapes="_x0000_i1308">.

Итак, комбинации циклических кодов можно представлять в виде многочленов, у которых показатели степени <img width=«13» height=«15» src=«ref-1_1956653221-84.coolpic» v:shapes="_x0000_i1309"> соответствуют номерам разрядов, коэффициенты при х равны 0 или 1 в зависимости от того, стоит 0 или 1 в разряде кодовой комбинации, которую представляет данный многочлен. Например,

<img width=«423» height=«101» src=«ref-1_1956653305-1939.coolpic» v:shapes="_x0000_i1310">

Циклический сдвиг кодовой комбинации аналогичен умножению соответствующего многочлена нах:

<img width=«220» height=«77» src=«ref-1_1956655244-880.coolpic» v:shapes="_x0000_i1311">

Если степень многочлена достигает разрядности кода, то происходит «перенос» в нулевую степень при <img width=«13» height=«15» src=«ref-1_1956653221-84.coolpic» v:shapes="_x0000_i1312">. В шифраторах циклических кодов эта операция осуществляется путем соединения выхода ячейки старшего разряда со входом ячейки нулевого разряда. Сложение по модулю 2 любых двух соседних комбинаций циклического кода эквивалентно операции умножения многочлена соответствующего комбинации первого слагаемого на многочлен <img width=«39» height=«21» src=«ref-1_1956656208-118.coolpic» v:shapes="_x0000_i1313"> если приведение подобных членов осуществляется по модулю 2:

<img width=«77» height=«84» src=«ref-1_1956656326-388.coolpic» v:shapes="_x0000_i1314">                    <img width=«209» height=«244» src=«ref-1_1956656714-937.coolpic» v:shapes="_x0000_i1315">
т. е. существует принципиальная возможность получения любой кодовой комбинации циклического кода путем умножения соответствующим образом подобранного образующего многочлена на некоторый другой многочлен.

Однако мало построить циклический код. Надо уметь выделить из него возможные ошибочные разряды, т. е. ввести некоторые опознаватели ошибок, которые выделяли бы ошибочный блок из всех других. Так как циклические коды — блочные, то каждый блок должен иметь свой опознаватель. И тут решающую роль играют свойства образующего многочлена <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1316">. Методика построения циклического кода такова, что образующий многочлен принимает участие в образовании каждой кодовой комбинации, поэтому любой многочлен циклического кода делится на образующий без остатка. Но без остатка делятся только те многочлены, которые принадлежат данному коду, т. е. образующий многочлен позволяет выбрать разрешенные комбинации из всех возможных. Если же при делении циклического кода на образующий многочлен будет получен остаток, то значит либо в коде произошла ошибка, либо это комбинация какого-то другого кода (запрещенная комбинация), что для декодирующего устройства не имеет принципиальной разницы. По остатку и обнаруживается наличие запрещенной комбинации, т. е. обнаруживается ошибка. Остатки от деления многочленов являются опознавателями ошибок циклических кодов.

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

При делении единицы с нулями на образующий многочлен следует помнить, что длина остатка должна быть не меньше числа контрольных разрядов, поэтому в случае нехватки разрядов в остатке к остатку приписывают справа необходимое число нулей.Например,
<img width=«258» height=«277» src=«ref-1_1956657783-1235.coolpic» v:shapes="_x0000_i1317"><img width=«71» height=«261» src=«ref-1_1956659018-715.coolpic» v:shapes="_x0000_i1318">

начиная с восьмого, остатки будут повторяться.

Остатки от деления используют для построения образующих матриц, которые, благодаря своей наглядности и удобству получения производных комбинаций, получили широкое распространение для построения циклических кодов. Построение образующей матрицы сводится к составлению единичной транспонированной и дополнительной матрицы, элементы которой представляют собой остатки от деления единицы с нулями на образующий многочлен <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1319">[15]. Напомним, что единичная транспонированная матрица представляет собой квадратную матрицу, все элементы которой — нули, кроме элементов, расположенных по диагонали справа налево сверху вниз (в нетранспонированной матрице диагональ с единичными элементами расположена слева направо сверху вниз). Элементы дополнительной матрицы приписываются справа от единичной транспонированной матрицы.

Однако не все остатки от деления единицы с нулями на образующий многочлен могут быть использованы в качестве элементов дополнительной матрицы. Использоваться могут лишь те остатки, вес которых<img width=«76» height=«24» src=«ref-1_1956659865-180.coolpic» v:shapes="_x0000_i1320"> где<img width=«20» height=«24» src=«ref-1_1956596658-104.coolpic» v:shapes="_x0000_i1321">  — минимальное кодовое расстояние. Длина остатков должна быть не менее количества контрольных разрядов, а число остатков должно равняться числу информационных разрядов.

Строки образующей матрицы представляют собой первые комбинации искомого кода. Остальные комбинации кода получаются в результате суммирования по модулю 2 всевозможных сочетаний строк образующей матрицы[16].

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

Образующая матрица может быть построена также путем циклического сдвига комбинации, полученной в результате умножения строки единичной матрицы ранга <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1322"> на образующий многочлен.

В заключение предлагаем еще один метод построения циклических кодов. Достоинством этого метода является исключительная простота схемных реализации кодирующих и декодирующих устройств.

Для получения комбинаций циклического кода в этом случае достаточно произвести циклический сдвиг строки образующей матрицы и комбинации, являющейся ее зеркальным отображением. При построении кодов с<img width=«44» height=«24» src=«ref-1_1956572544-135.coolpic» v:shapes="_x0000_i1323">,<img width=«45» height=«24» src=«ref-1_1956660381-129.coolpic» v:shapes="_x0000_i1324">, <img width=«44» height=«24» src=«ref-1_1956660510-131.coolpic» v:shapes="_x0000_i1325"> число комбинаций, получаемых суммированием по модулю 2 всевозможных сочетаний строк образующей матрицы, равно числу комбинаций, получаемых в результате циклического сдвига строки образующей матрицы и зеркальной ей комбинации. Однако этот способ используется для получения кодов с малым числом информационных разрядов. Уже при <img width=«44» height=«24» src=«ref-1_1956660641-128.coolpic» v:shapes="_x0000_i1326"> число комбинаций, получаемых в результате циклического сдвига, будет меньше, чем число комбинаций, получаемых в результате суммирования всевозможных сочетаний строк образующей матрицы.

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

<img width=«221» height=«27» src=«ref-1_1956660769-422.coolpic» v:shapes="_x0000_i1327">                                                  (77)

где <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1328">  — число информационных разрядов кода[17].

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

<img width=«59» height=«24» src=«ref-1_1956661288-153.coolpic» v:shapes="_x0000_i1329">                                                                            (78)

где <img width=«13» height=«15» src=«ref-1_1956578933-84.coolpic» v:shapes="_x0000_i1330">  — длина кодовой комбинации.

При числе информационных разрядов <img width=«44» height=«24» src=«ref-1_1956661525-135.coolpic» v:shapes="_x0000_i1331"> число комбинаций от суммирования строк образующей матрицы растет гораздо быстрее, чем число комбинаций, получаемых в результате циклического сдвига строки образующей матрицы и зеркальной ей комбинации. В последнем случае коды получаются избыточными (так как при той же длине кода можно иным способом передать большее количество сообщений), соответственно, падает относительная скорость передачи информации. В таких случаях целесообразность применения того или иного метода кодирования может быть определена из конкретных технических условий.

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

Идея исправления ошибок базируется на том, что ошибочная комбинация после определенного числа циклических сдвигов “подгоняется”под остаток таким образом, что в сумме с остатком она дает исправленную комбинацию. Остаток при этом представляет собой не что иное, как разницу между искаженными и правильными символами, единицы в остатке стоят как раз на местах искаженных разрядов в подогнанной циклическими сдвигами комбинации. Подгоняют искаженную комбинацию до тех пор, пока число единиц в остатке не будет равно числу ошибок в коде. При этом, естественно, число единиц может быть либо равно числу ошибок<img width=«12» height=«15» src=«ref-1_1956661660-83.coolpic» v:shapes="_x0000_i1332">, исправляемых данным кодом (код исправляет 3 ошибки и в искаженной комбинации 3 ошибки), либо меньше s (код исправляет 3 ошибки, а в принятой комбинации -1 ошибка).

Место ошибки в кодовой комбинации не имеет значения. Если<img width=«53» height=«41» src=«ref-1_1956661743-177.coolpic» v:shapes="_x0000_i1333"> то после определенного количества сдвигов все ошибкиокажутся в зоне “разового”действия образующего многочлена, т. е. достаточно получить один остаток, вес которого<img width=«41» height=«19» src=«ref-1_1956661920-128.coolpic» v:shapes="_x0000_i1334">,и этого уже будет достаточно для исправления искаженной комбинации. В этом смысле коды БЧХ (о них мы будем говорить ниже) могут исправлять пачки ошибок, лишь бы длина пачки не превышала s.

    продолжение
--PAGE_BREAK--Построение и декодирование конкретных циклических кодов


I.                    Коды, исправляющие одиночную ошибку,<img width=«44» height=«24» src=«ref-1_1956572544-135.coolpic» v:shapes="_x0000_i1335">.

1.Расчет соотношения между контрольными и информационными символами кодапроизводится на основании выражений (59) -(69).

Если задано число информационных разрядов <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1336">, то число контрольных разрядов <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1337"> находимиз выражения

<img width=«244» height=«24» src=«ref-1_1956662379-420.coolpic» v:shapes="_x0000_i1338">

Общее число символов кода

<img width=«80» height=«24» src=«ref-1_1956662799-167.coolpic» v:shapes="_x0000_i1339">

Если задана длина кода <img width=«13» height=«15» src=«ref-1_1956578933-84.coolpic» v:shapes="_x0000_i1340">,то число контрольных разрядов

<img width=«119» height=«24» src=«ref-1_1956663050-248.coolpic» v:shapes="_x0000_i1341">

Соотношение числа контрольных и информационных символов для кодов с <img width=«44» height=«24» src=«ref-1_1956572544-135.coolpic» v:shapes="_x0000_i1342"> приведены в табл. 3 приложения 9.

2. Выбор образующего многочлена производится по таблицам неприводимых двоичных многочленов.

Образующий многочлен <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1343"> следует выбирать как можно более коротким, но степень его должна быть не меньше числа контрольных разрядов <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1344">, а число ненулевых членов -не меньше минимальногокодового расстояния<img width=«20» height=«24» src=«ref-1_1956596658-104.coolpic» v:shapes="_x0000_i1345">.

3. Выбор параметров единичной транспонированной матрицы происходитиз условия, что число столбцов (строк) матрицы определяется числом информационных разрядов, т. е. ранг единичнойматрицы равен <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1346">.

4. Определение элементов дополнительной матрицы производится по остаткам от деления последней строки транспонированной матрицы (единицы с нулями) на образующий многочлен. Полученные остатки должны удовлетворять следующим требованиям:

а) число разрядов каждого остатка должно быть равно числу контрольных символов <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1347">, следовательно, число разрядов дополнительной матрицы должно быть равно степени образующего многочлена;

б) число остатков должно быть не меньше числа строк единичной транспонированной матрицы, т. е. должно быть равно числу информационных разрядов <img width=«19» height=«24» src=«ref-1_1956563485-97.coolpic» v:shapes="_x0000_i1348">;

в) число единиц каждого остатка, т. е. его вес, должно быть не менее величины<img width=«69» height=«24» src=«ref-1_1956664061-156.coolpic» v:shapes="_x0000_i1349">,где<img width=«20» height=«24» src=«ref-1_1956596658-104.coolpic» v:shapes="_x0000_i1350">  — минимальное кодовое расстояние, не меньшее числа обнаруживаемых ошибок;

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

5. Образующая матрица составляется дописыванием элементов дополнительной матрицы справа от единичной транспонированной матрицы либо умножением элементов единичной матрицы на образующий многочлен.

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

7. Обнаружение и исправление ошибок производится по остаткам от деления принятой комбинации<img width=«36» height=«21» src=«ref-1_1956664321-128.coolpic» v:shapes="_x0000_i1351"> на образующий многочлен <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1352">. Если принятая комбинация делится на образующий многочлен без остатка, то код принят безошибочно. Остаток от деления свидетельствует о наличии ошибки, но не указывает, какой именно. Для того чтобы найти ошибочный разряд и исправить его в циклических кодах, осуществляют следующие операции:

а) принятую комбинацию делят на образующий многочлен и

б) подсчитывают количество единиц в остатке (вес остатка).

Если<img width=«41» height=«19» src=«ref-1_1956661920-128.coolpic» v:shapes="_x0000_i1353">,гдеs — допустимое число исправляемых данным кодом ошибок, то принятую комбинацию складывают по модулю 2 с полученным остатком. Сумма даст исправленную комбинацию. Если <img width=«41» height=«19» src=«ref-1_1956661920-128.coolpic» v:shapes="_x0000_i1354">,то

в) производят циклический сдвиг принятой комбинации<img width=«36» height=«21» src=«ref-1_1956664321-128.coolpic» v:shapes="_x0000_i1355"> влево на один разряд. Комбинацию, полученную в результате циклического сдвига, делят на <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1356">. Если в результате этого повторного деления<img width=«45» height=«21» src=«ref-1_1956665097-140.coolpic» v:shapes="_x0000_i1357"> то делимое суммируют с остатком, затем

г) производят циклический сдвиг вправо на один разряд комбинации, полученной в результате суммирования последнего делимого с последним остатком. Полученная в результате комбинация уже не содержит ошибок. Если после первого циклического сдвига и последующего деления остаток получается таким, что его вес<img width=«43» height=«19» src=«ref-1_1956665237-127.coolpic» v:shapes="_x0000_i1358">,то

д) повторяют операцию пункта в) до тех пор, пока не будет <img width=«45» height=«21» src=«ref-1_1956665097-140.coolpic» v:shapes="_x0000_i1359">.В этом случае комбинацию, полученную в результате последнего циклического сдвига, суммируют с остатком от деления этой комбинации на образующий многочлен, а затем

е) производят циклический сдвиг вправо ровно на столько разрядов, на сколько была сдвинута суммируемая с последним остаткомкомбинация относительно принятой комбинации. В результате получим исправленную комбинацию[18].
II.                 Коды, обнаруживающие трехкратные ошибки,<img width=«45» height=«24» src=«ref-1_1956665504-136.coolpic» v:shapes="_x0000_i1360">.

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

<img width=«132» height=«24» src=«ref-1_1956665640-258.coolpic» v:shapes="_x0000_i1361">

или

<img width=«241» height=«24» src=«ref-1_1956665898-406.coolpic» v:shapes="_x0000_i1362">

2.         Выбор образующего многочленапроизводят, исходя из следующих соображений: для обнаружения трехкратной ошибки

<img width=«139» height=«24» src=«ref-1_1956666304-231.coolpic» v:shapes="_x0000_i1363">

поэтому степень образующего многочлена не может быть меньше четырех; многочлен третьей степени, имеющий •число ненулевых членов больше или равное трем, позволяет обнаруживать все двойные ошибки, многочлен первой степени <img width=«45» height=«21» src=«ref-1_1956666535-135.coolpic» v:shapes="_x0000_i1364"> обнаруживает любое количество нечетных ошибок, следовательно, многочлен четвертой степени, получаемый в результате умножения этих многочленов, обладает их корректирующими свойствами: может обнаруживать две ошибки, а также одну и три, т. е. все трехкратные ошибки.

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

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

5. Обнаружение ошибок производится по остаткам от деления принятой комбинации<img width=«36» height=«21» src=«ref-1_1956664321-128.coolpic» v:shapes="_x0000_i1365"> на образующий многочлен <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1366">. Если остатка нет, то контрольные разряды отбрасываются и информационная часть кода используется по назначению. Если в результате деления получается остаток, то комбинация бракуется. Заметим, что такие коды могут обнаруживать 75% любого количества ошибок, так как кроме двойной ошибки обнаруживаются все нечетные ошибки, но гарантированное количество ошибок, которое код никогда не пропустит, равно 3.

Пример: Исходная кодовая комбинация — 0101111000, принятая — 0001011001 (т. е. произошел тройной сбой). Показать процесс обнаружения ошибки, если известно, что комбинации кода были образованы при помощи многочлена 101111.

Решение:

<img width=«206» height=«87» src=«ref-1_1956666930-551.coolpic» v:shapes="_x0000_i1367">
Остаток не нулевой, комбинация бракуется. Указать ошибочные разряды при трехкратных искажениях такие коды не могут.
III. Циклические коды, исправляющие две и большее количество ошибок,<img width=«48» height=«24» src=«ref-1_1956667481-141.coolpic» v:shapes="_x0000_i1368">


Методика построения циклических кодов с<img width=«45» height=«24» src=«ref-1_1956667622-137.coolpic» v:shapes="_x0000_i1369"> отличается от методики построения циклических кодов с<img width=«45» height=«24» src=«ref-1_1956667759-135.coolpic» v:shapes="_x0000_i1370"> только в выборе образующего многочлена. В литературе эти коды известны как коды БЧХ (первые буквы фамилий Боуз, Чоудхури, Хоквинхем — авторов методики построения циклических кодов с<img width=«48» height=«24» src=«ref-1_1956667481-141.coolpic» v:shapes="_x0000_i1371">).

Построение образующего многочлена зависит, в основном, от двух параметров: от длины кодового слова п. и от числа исправляемых ошибокs.Остальные параметры, участвующие в построении образующего многочлена, в зависимости от заданных <img width=«13» height=«15» src=«ref-1_1956578933-84.coolpic» v:shapes="_x0000_i1372"> и <img width=«12» height=«15» src=«ref-1_1956661660-83.coolpic» v:shapes="_x0000_i1373">могут быть определены при помощи таблиц и вспомогательных соотношений, о которых будет сказано ниже.

Для исправления числа ошибок<img width=«36» height=«19» src=«ref-1_1956668202-114.coolpic» v:shapes="_x0000_i1374"> еще не достаточно условия, чтобы между комбинациями кода минимальное кодовое расстояние <img width=«75» height=«24» src=«ref-1_1956668316-169.coolpic» v:shapes="_x0000_i1375">.необходимо также, чтобы длина кода <img width=«13» height=«15» src=«ref-1_1956578933-84.coolpic» v:shapes="_x0000_i1376"> удовлетворяла условию

<img width=«71» height=«24» src=«ref-1_1956668569-156.coolpic» v:shapes="_x0000_i1377">                                                                    (79)

при этом п всегда будет нечетным числом. Величинаhопределяет выбор числа контрольных символов <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1378"> и связана с <img width=«19» height=«24» src=«ref-1_1956563386-99.coolpic» v:shapes="_x0000_i1379"> и s следующим соотношением:

<img width=«156» height=«24» src=«ref-1_1956668923-296.coolpic» v:shapes="_x0000_i1380">                                                    (80)

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

<img width=«83» height=«24» src=«ref-1_1956669219-174.coolpic» v:shapes="_x0000_i1381">                                                                 (81)

где <img width=«16» height=«19» src=«ref-1_1956669393-91.coolpic» v:shapes="_x0000_i1382"> являетсяодним из сомножителей, на которые разлагается число п.

Соотношения между <img width=«13» height=«15» src=«ref-1_1956578933-84.coolpic» v:shapes="_x0000_i1383">, С иhмогут быть сведены в следующую таблицу

№ п/п

h

<img width=«67» height=«21» src=«ref-1_1956669568-149.coolpic» v:shapes="_x0000_i1384">

C

1

2

3

4

5

6

7

8

9

10

3

4

5

6

7

8

9

10

11

12

7

15

31

63

127

255

511

1023

2047

4095

1

5; 3

1

7; 3; 3

1

17; 5; 3

7; 3; 7

31; 11; 3

89; 23

3; 3; 5; 7; 13



Например, при h = 10 длина кодовой комбинации может быть равна и 1023 <img width=«48» height=«21» src=«ref-1_1956669717-138.coolpic» v:shapes="_x0000_i1385"> и 341 (С = 3), и 33 (С =31), и 31 (С = 33), понятно, что п не может быть меньше <img width=«55» height=«24» src=«ref-1_1956669855-154.coolpic» v:shapes="_x0000_i1386"> Величина С влияет на выбор порядковых номеров минимальных многочленов, так как индексы первоначально выбранных многочленов умножаются на С.

Построение образующего многочлена <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1387"> производится при помощи так называемых минимальных многочленов <img width=«41» height=«21» src=«ref-1_1956670141-139.coolpic» v:shapes="_x0000_i1388">, которые являются простыми неприводимыми многочленами (см. табл. 2, приложение 9). Образующий многочлен представляет собой произведение нечетных минимальных многочленов и являетсяих наименьшим общим кратным (НОК). Максимальный порядок <img width=«16» height=«17» src=«ref-1_1956670280-92.coolpic» v:shapes="_x0000_i1389"> определяет номер последнего из выбираемых табличных минимальных многочленов

<img width=«72» height=«21» src=«ref-1_1956670372-157.coolpic» v:shapes="_x0000_i1390">                                                                           (82)

Порядок многочлена используется при определении числа сомножителей <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1391">. Например, еслиs = 6,то <img width=«97» height=«21» src=«ref-1_1956670661-183.coolpic» v:shapes="_x0000_i1392">.Так как для построения <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1393"> используются только нечетные многочлены, то ими будут: <img width=«303» height=«24» src=«ref-1_1956670976-530.coolpic» v:shapes="_x0000_i1394"> старший из них имеет порядок <img width=«16» height=«17» src=«ref-1_1956670280-92.coolpic» v:shapes="_x0000_i1395">. Как видим, число сомножителей <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1396"> равно 6, т. е. числу исправляемых ошибок. Таким образом, число минимальных многочленов, участвующих в построении образующего многочлена,

<img width=«41» height=«21» src=«ref-1_1956671730-119.coolpic» v:shapes="_x0000_i1397">                                                                      (83)

а старшая степень

<img width=«43» height=«21» src=«ref-1_1956671849-126.coolpic» v:shapes="_x0000_i1398">                                                                      (84)

(<img width=«11» height=«19» src=«ref-1_1956570865-82.coolpic» v:shapes="_x0000_i1399"> указывает колонку в таблице минимальных многочленов, из которой обычно выбирается многочлен для построения <img width=«37» height=«21» src=«ref-1_1956646093-132.coolpic» v:shapes="_x0000_i1400">).

Степень образующего многочлена, полученного в результате перемножения выбранных минимальных многочленов,

<img width=«108» height=«24» src=«ref-1_1956672189-215.coolpic» v:shapes="_x0000_i1401">                                                          (85)

В общем виде

<img width=«261» height=«25» src=«ref-1_1956672404-469.coolpic» v:shapes="_x0000_i1402">                                      (86)

Декодирование кодов БЧХ производится по той же методике, что и декодирование циклических кодов с <img width=«45» height=«24» src=«ref-1_1956667759-135.coolpic» v:shapes="_x0000_i1403">. Однако в связи с тем, что практически все коды БЧХ представлены комбинациями с <img width=«43» height=«19» src=«ref-1_1956673008-127.coolpic» v:shapes="_x0000_i1404">, могут возникнуть весьма сложные варианты, когда для обнаружения и исправления ошибок необходимо производить большое число циклических сдвигов. В этом случае для облегчения можно комбинацию, полученную после <img width=«13» height=«19» src=«ref-1_1956673135-89.coolpic» v:shapes="_x0000_i1405">-кратного сдвига и суммирования с остатком, сдвигать не вправо, а влево на <img width=«37» height=«19» src=«ref-1_1956673224-114.coolpic» v:shapes="_x0000_i1406"> циклических сдвигов. Это целесообразно делать только при <img width=«40» height=«41» src=«ref-1_1956673338-158.coolpic» v:shapes="_x0000_i1407">.

--PAGE_BREAK--
еще рефераты
Еще работы по информатике