
книги из ГПНТБ / Толстоусов, Г. Н. Прикладная теория информации учеб. пособие
.pdfп, - разрядная кодовая комбинация может быть представлена
как вершина |
гь -мерного |
единичного куба. Случай гъ = 3 |
может |
быть представлен наглядно |
(рис. 1 4 .2 ). В этом пространстве |
су |
ществуют только вершины. Расстоянием между двумя вершинами явля ется наименьшее число ребер куба, которые надо пройти, чтобы попасть из одной вершины в другую. Введем понятие вектора поме хи. При воздействии помехи кодовая комбинация искажается, т .ѳ . переходит из одной вершины в другую. Длина вектора помехи DaBна расстоянию между.этими вершинами. Рассмотрим случай единич
ного вектора помехи. |
Тогда |
для построения |
обнаруживающего ко |
||
|
|
да расстояние между раз |
|||
|
|
решенными кодовыми комби |
|||
|
|
нациями, называемое кодо |
|||
|
|
вым расстоянием, должно |
|||
|
|
быть не меньше двух (на |
|||
|
|
пример, кодовые комбина |
|||
|
|
ции 000; ІОІ; |
ОН; П О ). |
||
|
|
Для построения |
корректи |
||
|
|
рующего кода кодовое рас |
|||
|
|
стояние должно |
быть не |
||
|
|
меньше трех (например, |
|||
|
|
000, |
I I I или 001, ПО и |
||
|
|
т.Д.). |
|
||
Рис. 14.2 |
|
|
|
|
|
§ 15. Помехоустойчивые |
коды |
|
|||
Систематические |
коды Cs] . Изучение |
конкретных |
способов |
||
помехоустойчивого кодирования начнем с систематических кодов. |
|||||
Остановимся кратко на |
общих принципах построения система |
тических |
кодов. Если |
обозначить информационные |
символы буквами |
||||||
С , |
а |
контрольные |
- буквами |
6 , |
то любую кодовую комбина |
||||
цию, |
содержащую к |
|
информационных и |
Ъ контрольных символов, |
|||||
можно |
представить |
последовательностью С1г Сл |
Ск |
.tez, |
|||||
где |
с |
и |
е в двоичном коде |
принимают значения 0 или |
I . |
69
Процесс кодирования на передающем конце сводится к обра зованию, кроме информационной кодовой комбинации Сі , . . . , С* контрольных символов которые выражаются в виде линейной функ ции информационных символов:
|
e^vL jC ^o C j^® ... |
®oCjnCK-JE0c£/ t Cc, |
ш |
|
где |
J- = 1 , 2 , . .. , |
Ъ ; |
oCjc - коэффициенты, равные 0 |
или I; |
otji |
Z 0 и © |
- знаки |
суммирования по модулю два:. Значения |
|
выбираются по определенным правилам, установленным |
для |
данного вида кода.
Процедура декодирования принятых комбинаций может осущест вляться различными методами. Один из них, так называемый метод контрольных чисел, состоит в следующем. Из информационных сим волов принятой кодовой комбинации
образуется по правилу (15.I ) вторая группа контрольных символов
|
е - - £ |
оіп d |
|
|
J |
£ t f о |
і |
Затем производится |
сравнение |
обеих групп контрольных символов |
|
путем их суммирования по модулю.два: |
|||
/г, |
|
t> |
|
Ше ; е " ...е { |
( я # |
||
^ |
•>. |
|
|
Полученное число К |
называется контрольным числом или синдро |
мом. С его помощью можно обнаружить или исправить честь ошибок. Если ошибки в принятой комбинации отсутствуют, то все суммы
X j-e j(В e f |
■ » в следовательно, и контрольное числоЛГ |
||
будут равны нулю; При появлении ошибок некоторые значения X |
|||
могут оказаться равными I . В этом случае X £ о,что и позволя |
|||
ет обнаружить ошибки. |
Таким образом, контрольйоѳ |
число К оп |
|
ределяется путем |
Z |
проверок на четность. |
|
Для исправления |
ошибок знание одного факта |
их возникнове |
ния является недостаточным. Необходимо указать номер ошибочно принятых символов. С этой целью каждому сочетанию исправляемых ошибок в комбинации присваивается одно из контрольных чисел,
70
что позволяет по известному контрольному числу определить ме
сто положения ошибок и исправить |
их. |
|
||||
|
Контрольное |
число |
записывается в двоичной |
системе,по |
||
этому |
общее |
количество различных |
контрольных чисел, |
отличающих |
||
ся от |
нуля, |
равно |
<2*-/ |
. Очевидно, это количество должно |
быть не меньше числа различных сочетаний ошибочных символов, подлеяащих исправлению. Например, если код предназначен для исправления одиночных ошибок, то число различных вариантов та
ких ошибок равно K+Z, , В этом |
случае должно выполняться ус |
ловие |
|
і ък+ г . |
(;fS.5) |
формула (15,3) позволяет при заданном количестве информационных символов К определить необходимое число контрольных символов Ъ , с помощью которых исправляются все одиночные ошибки.
Код с четным числом единиц. Инверсный код. Рассмотрим не которые простейшие систематические коды, применяемые только для обнаружения ошибок. Одним из кодов подобного типа является код с четным числом единиц. Каждая комбинация этого кода содержит помимо информационных символов один контрольный символ, выбира емый равным 0 или I - так, чтобы сумма единиц в комбинации' всегда была четной. Примером могут служить пятиэначные комбина ции кода Бодо, к которым добавляется шестой контрольный символ: ІОІОЦ и 0X100,0. Правило вычисления контрольного символа можно
выразить на основании (15.1) |
в следующей форме: |
Сі |
|
Отсюда вытекает, |
что для любой комбинации сумма всех |
символов по |
|
модулю два будет |
равна Нулю ( |
2L0 - суммирование по модулю): |
|
|
к |
|
(м ) |
|
e ® Z .c ^ o . |
Это позволяет в декодирующем устройстве сравнительно просто производить обнаружение о'іэдйіок путем проверки на четность. На рушение четности имеет место при появлении однократных, трехкра тных и в общем случае ошибок нечетной кратности, что и дает возможность их обнаружить. Появление четных ошибок не изменяет четности суммы (15 .4), поэтому такие ошибки не обнаруживаются,
К достоинствам кода следует отнести простоту кодирующих и
71
декодирующих устройств, а также малую избыточность jU=4f(-l+K) » однако последнее определяет и его основной недостаток - сравни тельно низкую корретирующую способность.
Значительно лучшими корректирующими способностями обладает инверсный код, который также применяется только для обнаружения ошибок. С принципом построения такого кода удобно ознакомиться на примере двух комбинаций: 11000,11000 и 01101,10010. В каждой комбинации символы до запятой являются информационными, а после дующие - контрольными. Если количество единиц в информационных символах четное, то контрольные символы представляют собой про стое повторение информационных. В противном случае, когда число
единиц нечетное, контрольные символы получаются из информационных посредством инвертирования, т .е . путем замены всех 0 на I , а I
на 0. При декодировании происходит сравнение принятых информаци онных и контрольных символов. Если сумма единиц в принятых ин формационных символах четная, то соответствующие друг другу ин формационные и контрольные символы суммируются по модулю два. В противном случае происходит такое же суммирование, , но с инвер тированными контрольными символами. Другими словами, в соответ
ствии с (15.2) производится |
% проверок |
на четность. Ошибка |
|||
обнаруживается, если хотя бы одна проверка на четность дает I . |
|||||
Анализ показывает, |
что |
при |
К |
5 |
наименьшая кратность |
нѳобнаруживаемой ошибки |
^ |
= h. |
Причем |
|
не обнаруживаются толь |
ко те ошибки четвертой кратности, которые искажают одинаковые номера информационных и контрольных символов. Например, если передана комбинация 10100,10100, а принята 10111,10111, то та
кая |
четырехкратная |
ошибка |
обнаружена не будет, так как здесь |
все |
значения X'j равны 0 . |
0 |
|
|
Инверсный код |
обладает |
высокой обнаруживающей способностью, |
однако она достигается ценой сравнительно большой избыточности,
которая, как нетрудно определить, составляет величину |
ju, = 0 ,5 . |
|
Коды Хеыминга. К этому типу кодов обычно относят |
система |
|
тические коды с кодовым расстоянием |
& = 3, которые |
позволяют |
исправить все одиночные ошибки. |
|
|
Рассмотрим построение семизначного кода Хемминга, каждая |
||
комбинация которого содержит четыре |
информационных и три конт |
72
рольных символа. Такой код, условно |
обозначаемый "7 .4", удов |
||
летворяет |
неравенству (15.3) и имеет |
и зб ы то ч н о сть ^= ^^ - |
-jß- . |
Если |
информационные символы с |
занимают в комбинации |
пер |
вые четыре места, то последующие три контрольных символа обра зуются по общему правилу (15.I) как суммы:
ej =оС}1с, Q tL ji сх © ot^ C l© оLjvC„. (G *)
Декодирование осуществляется путем трех проверок на четность
(15.2): |
|
|
|
|
|
|
|
|
Ä , = e / © 6 / = e / © g o06,t C i, |
1 |
|
||||
|
Ъ - - е ± е е ^ е ; @ £ ^ с : , |
У |
«xeJ |
||||
Так как |
X j |
равно 0 или I , |
то |
всего монет быть |
восемь конт |
||
рольных |
чисел |
Х=*£,х,грс3 |
: 000, 100, |
010, 001, ОН, НО и |
|||
I I I . Первое |
из |
них имеет место |
в случае |
правильного приема, а |
|||
остальные семь появляются при |
наличии искажений |
и должны ис |
пользоваться для определения местоположения одиночной ошибки в семизначной комбинации. Выясним, каким образом устанавливается взаимосвязь между контрольными числами и искаженными символами.
Если искажен один из контрольных символов |
или |
' » |
то, как следует из (15 .6), контрольное число |
примет соответст |
венно одно из трех значений: 100, 010 или 001. Остальные четы ре контрольных числа используются’ для выявления* ошибок в инфор мационных символах. Порядок присвоения контрольных чисел оши - бочным информационным сиволам может устанавливаться любой, на пример, как показано в табл. 15 .I . Нетрудно показать, что это му распределению контрольных чисел соответствуют коэффициенты
°^с , приведенные |
в табл. |
15.2. |
|
|
Таблица |
_ „ |
|
|
|
|
|
|
15.I |
||
Искаженный символ |
С-і |
Cz |
С* |
Сц |
Ь |
||
Контрольное число |
|||||||
“ 0Т Г |
IOI |
1IQ |
III |
100 |
010 001 |
73
Таблица 15.2
|
об// = 0 |
= I |
<*rt = I |
oiiif |
= I |
||
е* |
= |
I |
oCjjl= 0 |
i |
= I |
oCz‘z |
- I |
е5 |
°бзѵ = |
^ |
= I |
o(-3i |
- 0 |
0СЗѴ |
~ I |
Если подставить коэффициенты оС^ |
в выражение (15 .6), |
то |
||||
получим |
|
|
|
|
|
|
х= е',® сІ® С ь@ с;, 1 |
|
|
|
|||
Лз=е3'®с,'®с±®с«. , |
|
|
|
|||
При искажении одного из информационных символов становятся |
|
|||||
равными единице те |
суммы сс |
, в |
которые |
входит |
этот символ. |
|
Легко проверить, что получающееся |
в этом |
случае |
контрольное |
чи |
||
сло JC=ä;f СС^х3 |
согласуется с |
табл. |
15 .1. Нетрудно заметить |
|||
что первые четыре |
контрольные |
числа табл. I5 .I |
совпадают со |
|
столбцами табл. 15 .2. Это свойство дает возможность при выбран
ном распределении |
контрольных |
чисел составить таблицу коэффици |
||
ентов |
otji |
, Хаким образом, |
при одиночной ошибке можно вычи |
|
слить |
контрольное |
число, позволяющее по табл. 15 .I определить |
тот символ кодовой комбинации, который претерпел искажения. Исправление искаженного символа двоичной системы состоит в про стой замене 0 на I или I на 0.
Здесь был рассмотрен простейший способ построения и деко дирования кодовых комбинаций, в которых первые места отводились информационным символам, а соответствие между контрольными чи слами и ошибками определялось таблицей. Вместе с тем существует более изящный метод отыскания одиночных ошибок, предложенный впервые самим Хеммингом. При этом методе код строится так, что контрольное число в двоичной системе счисления сразу указывает номер искаженного символа. Правда в этом случае контрольные символы необходимо располагать среди информационных, что усло жняет процесс кодирования. Для кода »7.Ф" символы в комбинации должны размещаться в следующем порядке:S^e^C^e^C^-CgCf ,
?Ф
а контрольное число вычисляться по формулам
х 1= е / © |
с ' 0 с? ® с ', 1 |
|
|
Яя.=еі® с 'а ѳ с 6'® сJ, |
Ш:з) |
||
Так, если |
произошла ошибка б информационном |
символе Cs ' , |
|
то контрольное |
число |
Х.= х,х^рс3= Ю І, что соответствует чис |
лу 5 в двоичной системе.
В заключение отметим, что в коде "7.4" при появлении мно гократных ошибок контрольное число также может отличаться от нуля. Однако декодирование в этом случае будет проведено непра вильно, так как оно рассчитано на исправление лишь одиночных ошибок.
Циклические коды, обладают тем свойством, что при цикли ческой перестановке символов любой кодовой комбинации получает ся другая комбинация, также принадлежащая этому коду. При одном шаге циклической перестановки символы перемещаются справа нале во на одну позицию, причем символ, выходящий за границу разряд ности кода, переносится на место крайней правой позиции, напри
мер, ОН, НО, Ю І. |
|
|
|
|
||
Комбинации |
п, |
-разрядного двоичного циклического |
кода |
|||
удобно |
представлять |
в виде |
полиномов степени |
( л -4) , |
коэффи |
|
циентами которого |
являются |
символы кодовой комбинации. Например: |
||||
ОН = 0 |
I X ' + I Х° |
= X + I ; НО = |
Л> |
; ЮІ = |
=I .
Другое важное свойство циклического кода заключается в том, что построение кодовой комбинации возможно путем умножения ком
бинации первичного кода на некоторый порождающий полином
<Z(x):
А(х,)=А *(х) •С(х.).
Например, кодовая комбинация первичного кода А* = х. = ю при порождающем полиноме Сг(х) -= х + I образует следующую кодовую комбинацию циклического кода:
А(х)-A*(x)Qlx.) =xfxi-i)=x*-+x~ НО.
75
Эти свойства циклического кода приводят к сравнительно не сложным техническим средствам кодирования и декодирования, что объясняет широкое применение кода.
При образовании циклического кода используются следующие операции. В качестве слонения - сложение по модулю два. Вычита ние идентично сложению по модулю два, например:
® 101 |
Ѳ 011 |
|
w |
II I |
^ I O I |
|
010 |
HO |
Определим операцию умножения. При умножении полиномов по обыч ным правилам с приведением подобных членов по модулю два может
нарушиться свойство цикличности, т .е . |
может быть получен поли |
||||||
ном степени выше, чем |
/ъ - I . Поэтому операция умножения ве |
||||||
дется но следующим правилам: |
|
|
|||||
|
|
1. Полиномы перемножаются по обычным правилам с приведени |
|||||
ем подобных членов по модулю два. |
|
|
|||||
П/ |
2. Если старшая степень полученного полинома не превышает |
||||||
- I , |
то этот |
результат является |
окончательным. |
||||
п |
3. Если старшзя степень полученного полинома превышает |
||||||
- I , |
то этот полином делится на |
|
+ I , и результатом ум |
||||
ножения считается остаток от деления. |
|
|
|||||
|
|
Действительно, один такт циклического переиоса эквивален |
|||||
тен |
умножению не |
X |
. Но кодовая комбинация |
||||
+ |
О о |
после у м н о ж е н и я ^ . , +ah.iXn'+'...+CL0)x должна в ре |
|||||
зультате |
циклического |
переноса образовать коыоимацию |
|||||
получим |
, + djx, + CCn.-i |
• Выполняя действия, указанные в п .І-3 , |
|||||
|
|
|
|
|
|||
|
|
a n.-1x '+ a n.-z.xп +... ä 0 X |
І Л І £ / _ |
||||
|
Ѳ а.п.<хлч.ал -< |
|
I |
a «-i |
|||
|
|
|
|
|
|
Ä / w -о с т а т о к . |
|
Видно, что остаток равен искомой комбинации. |
|||||||
|
|
Рассмотрим требования, предъявляемые к порождающему поли |
|||||
ному |
Сг(зо) . Во-первых, все комбинации |
циклического кода |
76
/4(х)должны долиться на него без остатка, так как имеет мес то соотношение
А(ос.)~А*(х)'£(х).
Кроме того, все комбинации могут быть получены из любой одной циклическими перестановками, т .е . умножением на Тогда в соот ветствии с введенными правилами умножения между двумя произволь ными комбинациями А^(л)а ^(-Сосуществует соотношение
|
|
Ас(х,) -X* |
|
|
A jfr) |
|
|
|
||
|
|
х л +і |
~L |
х л+і ’ |
|
|
|
|||
где |
С = 0, |
если |
степень |
|
полинома Аі(х) сс* |
меньше |
п - |
I, |
||
либо |
С = 1 , |
если |
степень |
полинома А^(х) зс к больше |
/2. - |
1; |
||||
Аі |
№ - остаток |
от деления. |
|
|
|
|
||||
|
Следовательно, можно |
записать |
|
|
|
|||||
|
A *(x)x*‘£(x}-C(x°+/)+A;(x) |
|
|
|
||||||
или |
|
|
|
|
|
|
|
|
|
|
|
-Ы * > -А У х )* * -С |
ж * ) ' |
|
|
|
|||||
|
а ( х ) |
{ |
|
|
6 |
|
|
|
||
|
Кодовая комбинация Ajfa) будет делиться без остатка на |
|
||||||||
порождающий полином Сг(х) |
, |
если |
I будет делиться без |
|||||||
остатка на £г(х) . Следовательно, порождающий полином<т(х) |
|
|||||||||
должен быть одним из делителей полинома |
I . Например,для |
|||||||||
трехразрядного циклического кода порождающий полином должен |
|
|||||||||
быть одним из |
делителей |
X + |
I . |
Имеем |
|
|
|
Х А+ І=(х +і)(эс,^4-Х + *);
ВЫбйійМ
<т(х) = Х+1.
s
Пусть имеем первичную кодовую комбинацию
А*(х)= И -Х.+1,
77
тогда соответствующая комбинация циклического кода будет
A{x )=A"G=(x +'I)(x .+4)=X'*-+ X ч-х +4= Х*-+І= Л>/.
Можно убедиться, что остальные кодовые комбинации, полученные из ІОІ циклической перестановкой, будут делиться на(f-(x)~jc+S
без остатка. Следовательно, при Сг(х) - . £ + / кодовые комбина ции могут быть получены как с помощью циклической перестановки, так и с помощью умножения первичных комбинаций на порождающий полином.
Если порождающий полином не является делителем зоА+4 , а равен, например,
£(йС.)=Х ,
ТО при А*(х) в I I получим
А(х.)~(х.+і)х. - -НО.
Здесь кодовая комбинация ІОІ, получаемая циклической переста
новкой, на порождающий полином |
х |
без |
остатка не |
де |
||
лится. |
|
|
|
комбинация Ъ(х) |
||
Любая принятая |
по каналу |
связи кодовая |
||||
может быть представлена в виде суммы по модулю два передаточ |
||||||
ной комбинации А(х,) и вектора |
помехи N(x.) |
: |
|
|
||
В(х>) -А (х ,)® М х ). |
|
|
|
|
||
При делении В(х) на порождающий полином Сг(х.) ошибка мо |
||||||
жет быть обнаружена, |
если вектор помехи |
А/(х) |
не делится |
н а , |
||
(г(х)без остатка. |
Исправлено |
может быть столько ошибок, |
сколь |
ко разных остатков будет получено при делении различных полино
мов А/(х) |
на порождающий полином Сг(х) . Пусть степень порожда |
||
ющего полинома |
|
||
|
|
/тг - а - к , |
|
где |
К - |
разрядность первичной комбинации (до внесения избы |
|
|
п> - |
точности); |
|
|
разрядность циклического кода. |
||
|
Тогда |
наибольшая разрядность |
остатков будет пь~ I . Наи |
большее число различных остатков |
будет равно Z -■/ (исключая нуле- |
76