Текст
                    И. М. БОЯРИНОВ
ПОМЕХОУСТОЙЧИВОЕ
КОДИРОВАНИЕ
ЧИСЛОВОЙ
ИНФОРМАЦИИ
ИЗДАТЕЛЬСТВО «НАУКА»

АКАДЕМИЯ.НАУК СССР научный совет по комплексной проблеме КИБЕРНЕТИКА И. М. БОЯРИНОВ ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ ЧИСЛОВОЙ ИНФОРМАЦИИ е ИЗДАТЕЛЬСТВО «НАУКА» МОСКВА 1983
УДК 621.391.15;f : Бояр инов И? М.' Помехоустойчивое? кодирование числовой ин- формации.— М.: Наука, 1983. ’ Л 1 ,5Л Рассматриваются методы помехоустойчивого кодирования чис- ловой информации и их применение для исправления ошибок в устройствах ЭВМ и системах передачи и обработки цифровой ин- формации. Исследуются арифметические циклические коды, линей- ные коды с неравной защитой информационных символов, коды для каналов с группирующимися ошибками. Анализируются спо- собы исправления ошибок оператора. Для специалистов в области вычислительной техники, систем связи и теории кодирования. Табл. 5. Библиогр. 175 назв. Ответственный редактор доктор технических наук профессор ДО. Г. ДАДАЕВ Б 1502000000-252 jgg 1983 IV 042(02)-83 © Издательство «Наука>, 1983 г.
ВВЕДЕНИЕ \ _ ' '" 1 - л - - - При передаче, обработке й хранении информации могут про- исходить ошибки. Наиболее естественный способ борьбы с ними состоит в улучшении канала передачи информации и среды, в ко- торой она хранится и^и преобразуемся. Если же возможности на . этом пути исчерпаны; а ошибки все еще превосходят допустимый уровень, то применимо другое средство — помехоустойчивое ко- дирование. Методам помехоустойчивого кодирования посвящена обшир- ная литература. Фундаментальным учебником является «Теория кодов, исправляющих ошибки» Ф. Дж. Мак-Вильямс и Й. Дж. А. Слоэна. Имеется целый ряд книг, в которых детально иссле- дуются отдельные разделы теории помехоустойчивого кодирова- ния. Тем не менее многие важные вопросы не нашли своего от- ражения в монографической литературе. К числу таких вопросов относится помехоустойчивое кодирование числовой информации. Как правило, в системах связи и вычислительных системах информация представляется в дискретной форме. Абстрагируясь от физической природы сигналов, будем считать, что информа- ция состоит из последовательностей символов', называемых сооб- щениями, или словами.' Каждый символ сообщения может при- нимать лишь конечное число значений из некоторого алфавита. Часто число значений равно двум —10 и 1. Среди цифровой информации большое место занимает число- вая. Результаты измерений физических величин, большая часть экономической и документальной информации представляются в числовой форме. В некоторых случаях для обнаружения и исправления ошибок в числовой информации могут Выть применены общие методы теории кодирования. Однако-более эффективным оказывается ис- пользование специальных методов кодирования числовой инфор- мации. Исследованию таких методов и посвящена, настоящая монография. Она состоит из девяти глав. В .первых четырех гла- вах рассматриваются "арифметические коды, предназначенные для контроля работы различных устройств ЭВМ, в первую оче- редь для контроля правильности выполнения арифметических операций в процессорах. Главное внимание здесь уделяется арифметическим циклическим кодам и методам их декодирова- ния. ’ • В главах 5, 6 излагаются методы построения и декодирования линейных и циклических блоковых кодов. Эти методы. сущест- венно используются в последующих главах. Вопросам построения линейных кодов, исправляющих груп- пирующиеся ошибки; посвящена глава 7. Модульные коды и ко- ды, локализующие ошибки, исследовались только в периодиче- 3
ской литературе. Что касается кодов, исправляющих пакеты оши- бок, то они обсуждаются шире, чем это делалось ранее. В настоящее время интенсивно исследуются каналы со многи- ми пользователями и коды с неравной защитой информационных символов, рассматриваемые в главе 8, представляют собой есте- ственный переход от кодов для обычных каналов к кодам для ка- налов со многими пользователями. Каналы со многими пользова- телями являются очень естественной моделью для сетей ЭВМ. Наконец, глава 9 посвящена применению числовых кодов для обнаружения и исправления ошибок оператора. • - УСЛОВНЫЕ ОБОЗНАЧЕНИЯ НОК {а, Ь} — наименьшее общее кратное а и Ь\ (а, Ь) — наибольший общий делитель а и Ь; [х] — наибольшее целое, не превосходящее х; ]х[ — наименьшее целое число, большее или равное х; | а| — модуль числа а; a mod b — наименьший неотрицательный вычет числа а по модулю 6; а —число, противоположное числу а, а=—а; б(х, N) — показатель числа х по модулю Т — знак транспонирования вектора или матрицы; ху — скалярное произведение векторов х и у; d\b —d делит нацело Ь\ | М| — мощность множества М, 4
к ГлаваД ОПРЕДЕЛЕНИЯ И СВОЙСТВА ' АРИФМЕТИЧЕСКИХ КОДОВ 1.1. Минимальные представления и арифметический вес Пусть Z — кольцо целых чисел, г>1 — целое. Любое N^Z имеет единственное представление в позиционной системе счис- ления по основанию г вида N = sgn^(^.1r"-i + ^n_2r"^+ ... + N1r + N0), (1.1.1) где О^|АГ| <гп, Ог^МСг; 1=0, ..., п—1; Nt, п — натуральные числа; „ К1 14-1, если М>0, sgn N — I I—1, если N <0. Как правило, представление (1.1.1) числа N записывают в упро- щенном виде: N=sgnN(N^N,^ ... Ne). (1.1.2) Числа 0, 1....г—1 называют цифрами. Все коэффициенты N{, i=0, 1, ..., и—1, — цифры. Число цифр в (1.1.1) и (1.1.2) называется длиной числа N. Длина п числа N в позиционной си- стеме счисления зависит от основания г. В повседневной жизни мы оперируем с числами, представлен- ными в виде (1.1.2) по основанию г=10. В большинстве ЭВМ числа представляются в виде (1.1.2) по основанию г=2. В по- байтно организованных процессорах применяется представление чисел- и по другим основаниям, например г=8 или 16. Будем называть представление числа N в виде (1.1.1) и (1.1.2) обычным, или стандартным. Многие числа N можно пред- ставить более «экономно», с меньшим чем в (1.1.4) числом нену- левых коэффициентов: W=a*rft+aA_1r*-‘+ ... +а0, (1.1.3) где — целые числа или 0, | at | <r, i=0, Так, число А/=31 (У=3-.10+1) в системе счисления по осно- ванию г—2 имеет обычное представление АГ= 11111 и «эконом- ное» представление N = 100001. В отличие от (1.1.1) для любого числа N существует много представлений вида (1.1.3). Например, 1251002 и 1269002 — раз- личные представления числа N—1250998. Назовем весом представления числа N число ненулевых ко- эффициентов этого представления. Наиболее «экономное» (мини- мальное) представление будет иметь минимальный вес, называе- мый арифметическим весом w (Af) числа N. 5
Для того чтобы определить арифметический вес числа, нуж- но найти его минимальное представление и определить его вес. Приведем два алгоритма определения минимального пред- ставления числа ЛГ.Эти алгоритмы, как правило, приводят к раз- личным минимальным представлениям. Одно из этих представ- лений ввиду его свойств назовем каноническим. Первый алго- ритм вытекает из следующей теоремы. Теорема 1.1.1. Для каждого AfeZ существует единственное минимальное представление (называемое каноническим) N= =akr'l+ak-lrh~i+ ... +а0 такое, что 1) если а,<0, то а«+1=0; \ , 2) если а{=—1 (modг), то at-i=0 (по определению Доказательство. Во-первых, докажем существование канонического представления. Пусть М=Ьтгт+Ьт-хгт~1 + ... + &0, (1.1.4) где bt—целые или 0, |<r, i=0, , т, — некоторое пред- ставление числа N. Введем следующие элементарные преобразования представления числа N, не увеличивающие его вес: а) если Ь{<0 и &<+1#=0, 1—г, то Ь1+1г^+Ь^= (bt+i—l)ri+l + (Ь,+г)г\ Например, 2-10=7=10-1+3, т. е. 27= 13; б) если bf+i=—1 и &{>0, то Ь<+1г<+1 + &/= (bt—r)r{, например, —1 • 10+6=—4, т. е. 16=04; • в) .если &<>0, &i+1=6i+2= ... =&i+l=r-l, Ь1+1+1т^г—1, />1, то 6i+I+1ri+,+1+b(+tri+t+ ... + &/=,= (&f+l+1 +1) ri+,+1 + (bf—r) r1, например, 2-104+9-103 + 9-102+9-10+4=3-104—6, t. e. 29994= =30006; г) если &<<0, bi+i=bi+2= ... =bi+[=—(r— 1), .. - ^«+1+1^ (^ 1), 1» to . ; b1+(+1r<+'+i+&<+Jr<+!+ ... +ь<+1г{+*+ь^= j = (bi+l+i--1) /+'+’+ (b\+r) r\ например, 2-104—9-103—9-102—9-10—6= 1 • 104+4, t. e. .29996= = 10004: ; Применим введенные преобразования к представлению. (1.1.4). 1. Пусть в (1.1.4) найдется такое i (здесь и далее, если таких несколько; возьмем наименьшее), что 6(<0 и Ь1+15^0. В случае Ьц.1>—.(г—1) произведем следующую замену: . ’ . 6
bi+ir1-* 4- bir1 = (bz+1 — 1) r/+1 + (bt 4- r) rl = biRr1*1 + b^r1. Тогда b<(1) станет положительным и число ненулевых коэффици- ентов в (1.1.4) либо не изменится, либо уменьшится в случае 6i+1=l. Если же bi+l=bt+2= ... (г—1), bi+(+1> >—(г—1), сделаем замену bM+1rM^ + Ьмгм+ ... 4- bt+1ri+1 4- btr[ = . = bi+z+1rz+z+14- (bt + r)rl>= b(i^rM^ 4- b^r1. Тогда b,w станет положительным и число ненулевых коэффи- циентов в (1.1.4) уменьшится. Будем повторять эту процедуру до тех пор, пока во вновь полученном выражении N = bPrk 4- 4- • • • + № (1.1.5) для всех b(zx) <0 не будет выполняться условие, blii— 0. 2. Пусть далее в (1.1.5) найдется такое i, что Ь^ = — 1 и &(Д14=0. Из условия 1 следует, что &£?!>• 0 и Если эту замену сделать в (1.1.5), то Ь(т станет равным нулю й вес уменьшится на единицу. Будем повторять эту процедуру до тех пор, пока в выражении N = b^rk + b^rk~'+ ... 4-b(oS) (1.1.6) для всех bz2) » — 1. не будет выполняться условие bz-i = 0. 3. Пусть теперь в (1.1.6) найдется такое i, что Ь^ == г—1 й b£i=£0. Из условия 1 следует, чтоЬ^^О. Если b|+i<r—1,то произведем в (1.1.6) следующую замену: b&rz+1 + b$2)rz 4- Ь?\г^ = (b& 4-1) rz+1 + + (bft — r) = b&rz«4- b^r^. Тогда b/3) станет равным нулю и число ненулевых коэффициен- тов уменьшится. Если же bj+i = bj+a = .ч . = bZ+Z-.= Г — 1, bi+i+i 7^ Г 1, ТО b|il+ir^z+1 4- bffir™ 4->.... + b?Vz 4- Ь&г^ = = (b&+14-1) rz+z+1 4- (ЬЙ - г) ₽ b£’z+1rz+z+14- b$r<-K Если, эту зайену сделать в выражении (1.1.6), то число ненуле- вых коэффициентов уменыпйтся. Будем повторять эту процедуру до тех. пор, пока в выражении N = b№k + b$lrk-'+...+bP- • (1.1.7) для всех Ь/3)=г—1 не будет выполняться условие Ь^ = 0. 7
Представление (1.1.7) числа N удовлетворяет условиям 1 и 2 теоремы 1.1.1. Таким образом, мы показали, что произвольное представление (1.1.4) числа N можно, не увеличивая вес, преоб- разовать в каноническое. В частности, взяв в качестве (1.1.4) ми- нимальное представление, мы получим минимальное канониче- ское представление. Всегда ли минимально каноническое пред- ставление? Положительный ответ дается доказательством един- ственности канонического представления для любого числа W(=Z. Пусть Ni = b'krk + 4- ... + bi, N2— bkrk 4- bLi^”14- ... 4- . — два различных канонических представления числа N. Пусть i — наименьшее такое, что bi'=£b", тогда - Nz = (bk - b"k) rk 4- (b^x - bk-J rk~i 4-...4- + (bi — b/)r;4-0 /**4- ... 4-0 = 0; (1.1.8) — N2=(b'i — b“t) r{ = 0 (mod ri+1). Следовательно, bi — bt = Q (modr). Пусть b’i-~ bt=r (если b\— — b“i — —г, рассмотрим N2 — N1), тогда b<>0, Ь/<0и из свойств канонического представления следует bi+1s{=—1 (mod г), b/+i=0. Рассмотрим вычеты (1.1.8) по модулю г<+2: Ni — N2=s. (Ь;+1 — b'-+1)Л+1 4- (bj — ь’() г* = 0 (mod rf+4). (1.1.9) Подставляя в (1.1.9) b'i — bt —r и bj+1 = 0, получим N1 — N2 = b'{+1ri+1 4- rr‘ = (b't+1 4- 1) r/+1 = 0 (mod ri+2). Отсюда b/+1 = — 1 (modr). Получили противоречие. Поэтому наше предположение о. существовании / такого, что Ь'^Ь", неверно. Представления и N2 совпадают. Единственность каноническо- го представления доказана. Одновременно с доказательством теоремы 1.1.1 мы получили алгоритм нахождения канонического представления. Как правило, число N задается обычным представлением. Ес- ли оно не содержит цифр (г—.1) или цифры (г—1) входят в па- ры (г—1)0, то обычное представление само является канониче- ским. В противном случае к обычному представлению достаточно применить (возможно, несколько раз) элементарное преобразо- вание Ь, чтобы получить каноническое представление. Примеры. Пусть г=10. Обычное представление Ni —125682345 со- гласно теореме 1.1.1 является каноническим, и арифметический вес w(/Vt)=9. Пусть теперь N2= 125996420925903189 — обычное представление числа N2. Сделав замены 9-108+2.107=10»—8-Ю7 и 5-10ls+9-10M4-9-1013+6-1012= = 6-1015—4-1012, получим каноническое представление Мз= 126004421085903189. Арифметический вес N2 равен w(N2) = 14. 8
Кроме канонического, известны -и другие минимальные пред- ставления. Так, например, представление N= будет мини- мальным, если его коэффициенты удовлетворяют .условиям | bi+bi+i | <г для всех I, (1.1.10) 16,| < |bi+i|, если &{6,+1<0. Имеет место следующее достаточное условие минимальности представления N = 2 ctrl: Если 1 (mod г), то если Ct=—1 (mod г), то Cj-,^0; (1.1.11) если с(—± (г— 1), то ci+l—0. Для определения арифметического веса числа часто исполь- зуют следующее минимальное представление. Пусть А=Ат-1Гт-1+Ат-ггт~2+ ... +Ло — обычное представ- ление числа Л. Обозначим В=(г+1)Л, и пусть В=Втгт+ + Bm-irm~i+ ... +ВЛ — обычное представление числа В. Теорема 1.1.2. Представление числа С=гА в виде C=cmrm+cm_1rm-‘+ ... +с0, с{=Вг-А{, i=0, 1, ..., т (1.1.12) имеет вес, равный арифметическому весу числа Л. Пример. Пусть г=10 и А =125996420925903189 — обычное представ- ление числа А. Обычное представление числа В— (г+1)А=11А—В= = 1385960630184935079. Минимальное представление числа О=гА=10А вида (1.1.12) равно С= 1260036210861032ПО, и вес w(C)=w(A) = 14. 1.2. Арифметические ААГ-коды Пусть даны два целых числа и N2. Арифметическим рас- стоянием d(Nt, N2) между числами У, и N2 называется арифме- тический вес w(Ni—N2) разности Nt—N2 этих чисел. Арифмети- ческое расстояние является метрикой. Действительно, d(Nb N2)'= 0, если и только если Nt=N2, d(Nt, N2)=d(N2, Nt)-, d(Nt, N2)^d(Nt, Na)+d(N„ Na).- ‘ Два первых свойства очевидны, и требует доказательства лишь последнее. Предположим, что 2 а/*’ и 2 — канонические представления чисел Nt—Na и Na—N2 соответственно. Тогда -N3 + N3 - N2 = 2 atrf + £ M (1.2.1) и вес представления (1.2.1) числа Nt—N2 не превосходит w(Nt—Na).+w(Na—N2). Минимальное представление числа N{—N2 будет иметь вес w(Nt—N2)^w(Nt—Na)+w(N,—N3).
- Пусть ' B=sgnBBn_1.... Во (1.2.2) — обычное представление числа В в позиционной системе счис- ления по основанию г. Арифметическим r-ичным кодом называется произвольное подмножество С кольца Z целых чисел, представляемых в виде (1.2.2). Число В^С называют кодовым словом. Минимальное арифметическое расстояние d(C) кода С определяется как d(C)=mind(cb с2), с^съ\ съ с2еС. Если вместо кодового слова В получено слово В', то говорят, что произошла арифметическая ошибка Е=В'—В. Пусть w (Е) — арифметический вес ошибки Е. Одиночная арифметиче- ская ошибка т. е. ошибка веса 1, имеет вид е=±аг‘, а — целое, 1^а<г. Очевидно, ошибка Е веса w(E) может быть представ- лена как сумма w (Е) одиночных ошибок. Поэтому часто при по- явлении ошибки веса w (Е) говорят, что произошло w (Е) (опус- кая слово «одиночных») арифметических ошибок. При декодиро- вании принятого слова В' всегда ищут ближайшее к нему в смыс- ле арифметического расстояния кодовое слово. Учитывая, что арифметическое расстояние — метрика, заключаем: арифметиче- ский код С исправляет t арифметических ошибок тогда и только тогда, когда d(C) ^2/+1. Арифметические коды предназначены главным образом для исправления ошибок при выполнении арифметических операций (и в первую очередь сложения) в арифметических устройствах ЭВМ. Поэтому естественно потребовать, чтобы код С был замк- нут относительно сложения, т. е. для всех' Вь В^С сумма В=. =В1+В2 должна принадлежать С. Покажем, что в этом случае все слова кода С кратны неко- торому числу А>: 1. Выберем среди ненулевых слов кода С наи- меньшее по абсолютной величине слово В,- и обозначим | В, | =А. Произвольное слово В^С представим в виде B=Aq+r, 0^г<А. (1.2.3) Поскольку код С замкнут относительно сложения, из (1.2.3) следует, что геС, и в силу выбора числа А имеем г=0. Таким «образом, арифметические коды суть множества вида СА= = {0, ±А, ±2А-, . ..}. Из практических соображений рассматри- вают только конечные подмножества Сд,м={0, А, 2А, ... (М—1)А), называемые АЛГ-кодами. Числа'0,1, ..., М—1 и 0;LA72Al’<‘’.., (М—1)А — соответственно информационные и ко- довые слова AM-кода. Число А -называется генератором АЛГ-кода. Всегда предполагают, что (А, г) = 1. Кодовое слово В-АУ-йода Сл и однозначно представляется в э виде В=Ь„_;гп-*+6п-2гп-2+ ...+Ьо,О^6<<г, ’ '1о
bt^Z, n=]log,(Af—1)A[ и записывается как В==Ь^Ь^ ... Ьо. Число п называется длиной АМ-ко'ла. - ' Если Bi и Вг — слова ДА/'-кода, то сумма В=ВГ+В2 будет словом АЛГ-кода, только если В<АЛ1.или Ni+NZ<M., С. практи- ческой точки, зрения это весьма существенный недостаток Л Af-ко- дов. Поэтому вместо ААГ-кодов над кольцом Z целых чисел, рас- сматривают ЛА^-коды над кольцом Zm, т=АМ — кольцевые AN? коды, замкнутые относительно операции сложения^ ’ Арифметическим AAf-кодом Ст над кольцом Z„ (Л делит т) называется ненулевой идеал U—(А) в кольце Zm. Кодовое слово В кода Ст — класс вычетов, принадлежащий идеалу U, Любое число однозначно определяет класс вычетов, которому, оно при- надлежит. В теоретических исследованиях, как правило,. слово В кода Ст представляют наименьшим неотрицательным вычетом В класса вычетов В. Может оказаться полезным -представлять кодовое слово абсолютно наименьшим вычетом В. .Практически слово В представляется любым числом b таким, что |6|.</п, т. е. Ь=В или В. Информационное слово ЛМ-кода над кольцом Zm-y элемент кольца ZM, М—т/А. Определим арифметический вес элементов кольца Zm — коль- цевой арифметический вес. Пусть С — произвольный . элемент кольца Zm ис — наименьший неотрицательный вычет в .С Арифг метичёским кольцевым весом элемента CeZm.называется .чисЛ,о wm(C) =min{t0(x>: x=c(.modm,)}.. ........... (1.2.4j Арифметические кольцевое расстояние dm(B,, В2) ^еждуэлемен- тами Bt и В2 кольца Zm определяется, как. арифметический коль- цевой вес wm(Bi—В£ их разности В,—В2. Точно.так же как'и.в случае арифметического расстояния в кольце Z, нетрудно jio.kaj- зать, что арифметическое расстояние в кольце Zm — метрика. Среди арифметических кольцевых кодов наибольший /интерес представляют и найболее изучены ААТ-коды в кольце Zrn_t — арифметические циклические коды. Они рассматриваются в сле- дующих главах. Кодирование А AZ-кода -—определение по инфор- мационному, слову кодового слова —может быть как-сйстёмати- ческим, так и несистематическим. ..........п Пусть Ст — арифметический r-ичный код над кольцом ,. Zm, М—т/А, n=]logr(m—1)[,.fe=]log,(M—1)1,..Пр'ц.:несистемати- ческом кодировании информационное слово #=#»_,' ДГд_а. i... A^i преобразуется в кодовое слово В=6П_1 Ьп^г.... &0 кода Ст по сле- дующему правилу: AN=B. «Естественное», систематическое, ко- дирование состоит в следующем. Пусть n= ]|ogrA[. .По/инфор- мационному слову N находится С (АГ,.а). .— наименьший неотрй^ тельный выйет числа Кодовое слово. В, copTBeT^yjqi^e| информационному слову У, есть............ , B=r“N+C(N, a).- _ ; ( (1.25) Старший п—а разрядов слова В информационные-,-младшие^ разрядов — проверочные. Для однозначности. кодиров|анйя,. ;м^
должны потребовать В<т или, учитывая (1.2.5), N<(m—C(N, (1.2.6) Таким образом при «естественном» систематическом кодирова- нии кодируются лишь те информационные слова, которые удов- летворяют неравенству (1.2.6). Иными словами, при «естествен- ном» систематическом кодировании мы получаем слова, образую- щие систематический подкод Ст' AN-ко Ла Ст. Подкод Ст' не зам> кнут относительно операции сложения, заданной для исходного AN-кола. Кроме того, не для всех пар информационных слов Nt и yV2 кодовое слово В подкода Ст', соответствующее сумме У= =Nt + N2, будет равно сумме Bt + B2 кодовых слов, соответствую- щих словам Nt и N2 (вследствие переноса при сложении из про- верочной части в информационную). Т. е. подкод Ст' при задан- ной операции сложения не будет линейным. Однако если для слов подкода Ст' задать операцию нераз- дельного и независимого сложения информационных и провероч- ных частей, то относительно этой операции Ст' будет линейным. Скажем несколько слов о декодировании АЛГ-кодов. Обнаруже- ние ошибок — операция, обратная кодированию, — осуществля- ется достаточно просто: принятое слово делится нй генератор А и, если остаток от деления равен нулю, считается, что ошибок не произошло, в противном случае считается, что обнаружены ошибки. Исправление ошибок значительно более трудная задача, чем обнаружение ошибок. Метод декодирования существенно зависит от структуры кода. В следующих главах рассматриваются мето- ды декодирования наиболее важных с практической точки зре- ния классов арифметических циклических АЛГ-кодов. 1.3. Совершенные АЛГ-коды, исправляющие одиночные ошибки Пусть задан арифметический г-ичный AN-код, САМ= = {О, А, 2А,..., (М—1) А} над кольцом целых чисел Z мощности М>1. Как обычно, будем предполагать, что (А, г) = 1. Лемма 1.3.1. Если А — генератор АУ-кода САМ> исправляю- щего одиночные ошибки, то А>г2+г. Действительно, если А^г2+г, то арифметический вес «>(1А)^2 в противоречии с тем, что d(CAM)^3, М>1. Теорема 1.3.1. Арифметический г-ичный АЛТ-код СА,м= = {0, А, 2А, ..., (М—il)А} исправляет одиночные ошибки (т. е. его минимальное расстояние й(Сл.м) ^З) тогда и только тогда, когда вычеты по модулю А одиночных ошибок е=±аг‘, lsgCa<r отличны от 0 и различны для всех е, для которых |е| =аг’^б= =АМ—г. Доказательство. Пусть выполнено первое условие тео- емы, но существуют et=ar* и e2=[5rj, li^a, [р|<г такие, что e2|=^|ei| ^6 и e1=e2(modA). Рассмотрев разность 8, и е2т 12
получим;что 81—е2=аг — ^=г}(аг{-}— (J) ssO(mod Д). (1.3.1) Из (1.3.1), учитывая (А, г) = 1, следует ar1-’—^O(modA), и существует целое Л\>0 такое, что ar1-’—$=ANt. Так как аг’-’^аг^^АМ—г, то AATl=ari-i—р^ДЛ!—г+ (г—1) <АМ. Следовательно, слово ANt — кодовое, но арифметический вес w(ANt) =2 в противоречии с предположением. Пусть выполнено второе условие теоремы, но существует ко- довое слово ANt веса не более 2. Случай веса 1 невозможен, так как (Д, г) = 1 и Д>г. Значит, w(AVt)=2 и A<Aft=ar’—ргд= = rj(ar‘_J—р), 1^а, |р|<г. Из (Д, г) = 1 следует, что аг1-’—р — тоже кодовое слово, т. е. существует N2>0 такое, что аг1-’—р= =AN2. Положив El=ar<~1, е2=р, получим |е21<|et| ^AN2+ |.р|г^Д(М—.1) + |р|<ДМ—г, и вычет одиночной ошибки ei равен вычету одиночной ошибки е2 в противоречии с предположением. Исходя из теоремы 1.3.1, естественно ввести следующее опре- деление совершенности. Определение. Арифметический r-ичный ДУ-код САМ= = {0, Д, 2Д, ..., (М—1)Д}, исправляющий одиночные ошибки, называется совершенным, если все вычеты по модулю А одиноч- ных ошибок е=±аг*', 1^а<г, |в| AM—г различны и совпа- дают с множеством вычетов по модулю Д. Пусть Л4Г(Д, d) —наименьшее натуральное число М, такое, что арифметический вес числа AM в r-ичном представлении меньше d, т. е. w(AMr(A, d))<d. Очевидно, что минимальное расстояние r-ичного ДЛГ-кода СА.м больше или равно d тогда и только тогда, когда M^ZMT(A, d). Для изучения ДУ-кодов, исправляющих одиночные ошибки, нас, естественно, будет интересовать поведение Л4Г(Д, 3). Рас- смотрим алгоритм нахождения МГ(А, 3). Упорядочим одиночные ошибки e= ±ar*, l=Ca<r по возрастанию абсолютной величины и рассмотрим момент первого совпадения 8'ss8"(modA)'. Если е"<е', то е"<р, 1^ |р| <г, иначе это не первое совпадение. Лег- ко видеть, что АМГ(А, <3) =8Z— Отсюда непосредственно следует Теорема 1.3.2. Пусть А>2г, (Д, г) ==1 и N — наименьшее це- лое вида arm(l^a<r), такое, что AT=armss±[J(mod Д), где 1^Р<г. Тогда М ,д Зх f(arm — Р)М, если arm = $ (modA), г ’ - |(агт4-Р)/Д, если агот =—Р (mod А). Отметим, что т равно п или п—1, где п — длина А У-кода СА,м, М=МГ(А. 3) и п=т для г=2. 1а
Приведенный выше алгоритм нахождения МГ(Л, 3) позволяет доказать следующее важное для дальнейшего утверждение. ..Теорема 1.3.3. Перечисленные ниже условия эквивалентны. 1. А—генератор совершенного-АУ-кода, исправляющего оди- ночные ошибки. 2. Вычеты’ первых (в рассматриваемом упорядочении)- Л—1 ошибок отличны от 0 и различны по модулю Л. . . 3. А=2(г— 1)т+2(а»—-Г) + 1, где AMr(A, 3)=arm—р0, ' | р0| <г. Доказательство. 1=^-2. Из определения совершенности ЛТУ-кода. 2=»3. Из описанного выше алгоритма нахождения МГ(Л, 3) следует, что АМГ(А, 3) ==е'—е", где e'sse"(modA) — первое совпадение, е^аоГ”, е"=р0. Из условия 2 следует, что е' — это Л-я ошибка. С другой стороны, номер ошибки аогт равен 2(r—l)m+2(a0—1)4-1. Отсюда Л=2(г—l)m+2(a0— 1) +1. 3=^1. Покажём, что. если условие 3 выполнено, что ЛУ-код Сл,м, М=МГ(А, 3) совершенный. Действительно, он исправляет одиночные ошибки (М^.МГ{А, 3)) й, следовательно, в силу тео- ремы 1.3.1 вычеты одиночных ошибок 8 : |е| ^АМ—г различны и отличны от 0. С другой стороны условие |е|^АМ—г равно- сильно условию |е|<аоГт, а таких одиночных ошибок ровно 2(г—l)m+2(a0—1)=Л—1. Следовательно, AN-кол СА,М, М= =МГ(А, 3) совершенный. Получим необходимые и достаточные условия совершенности ЛУ-кода, исправляющего одиночные ошибки. Обозначим ZA кольцо вычетов по модулю Л. Множество элементов кольца ZA, взаимно простых с А, образуют группу по умножению,.называе- мую группой обратимых, элементов и обозначаемую ZA; \ZA\ = =<р(Л), .где <р (•) — функция Эйлера; |М| — мощность множе- ства М. Если Л=р— простое, то Zp* — циклическая группа, изоморф- ная группе р.р-1 корней (р—1)-й степени из единицы. Обозначим Н={±г1}, где {х‘}—циклическая подгруппа, по- рожденная х. Теперь мы можем, учитывая теорему 1.3.3, доказать основной результат данного раздела. Теорема 1.3.4. Следующие условия эквивалентны: I. Л — генератор совершенного r-ичного Л#-кода, исправляю- щего одиночные ошибки; II: А==р — простое. J#| = (p—l)/(r—1) и различные a (Г^а<г) лежат в'разных смежных классах Zp' по Н. III. Мг (Л, 3) = (r<A-i)/2(,_i) ± р/д . ( . Для доказательства теоремыЛ.3.4 рам. потребуются слёдую- щие леммы. 7 7 ... Лемма 1.3>2.- Если-справедливо утверждение Г теоремы 1:3.4» то А=р — простое. И
* \ 3 ' * * * / ’ -• Доказательство, Пусть А = -JJр?1. Разобьем доказа- \ ••••--•. тельство на две части-. . 1. Если все Pi>r,. то все е=±аг< взаимно просты с Л, т. ее2д‘. Но |ZY| —ср(Л), и согласно определению Г.3.1 ф(Л)|= =Л—1. Следовательно, Л — простое. ....................• / 2. Пусть /^1<г. Рассмдтрим . в 7д идеал (Л/рД/={0, Л/рд, 2Л/р1( ...(pt—<1)Л/р4/Так кацг Л гёнератбр ; соверШенндгр код а; найдется е’=* ± йт*'&{А1р$. ВСилу • (Л,~г) = 1 Элемент г об- ратим’ в ZA и.ег_£=±а также лёэкит в идеале {Л^}. Следова- тельно, в {Л/pJ лежит 2т разных е—ia.’ditir,"•.'•'♦7 ,:^.аг”Ч7 .й> значит, 2/n^pt—1<г—1. • - ; - '• '‘° УУ ? .т'1’ - Так как А=2т(г—l)-F2(a0—1) +1. (теорема 1.3.3,':‘условир 3), то1 Л< (г—1)2+2(г—1) -Н1=г2, что противоречит Яеммё Г.У.1 и завершает доказательство леммы 1.З.2.- У ~ - • Обозначим ((a) —min/ t ar‘s0(modA), 1^а; |0|<г.: В си- лу теоремы 1.3.2 ' - : ”/' f(a)>(mt •’ °^<ао’ > - ' • ' (1.3.2) ( т, а>&0. - и - Лемма 1.3.3. Если справедливо утверждение!теоремы 1.3,4,то /(a) =т+1 при а.<а0 и/(а) =/п.при а^а0. . . .. - Д о к а з а т е л ь с тв о, г. Обозначим Ra= {±a, , ±ar, ... ..., ±ar‘(e>_‘}. Множества Ra. цё пересекаются для разных а .и нё содержат* 0: Следойательно; Л—1 == |Za\0|^ | (J&» I “'З.Ш®)" ,, - - •' a - - , а. х \ г . и из теоремы. 1.3.3 (п. 3) и .1.3.2:получаем доказательство леммы 1.3.3. 7г- - ........I - .... V. Важнейшим шагом в доказательстве теоремы 1.3,4 являемся. - Лемма .1.3.4. Если справедливо утверждений I теоремы» 1^3Л и ЛМг(Л,сЗ)=а0Гт—Ро»:тоа0=|Ро| = 1 Доказательст в;б. Для;Г==2 л.емма> верна в рилу теоремы 1,3.2. Пусть г>2. Покажем .сначала, что.а0==1.,Если а0>1,: то из леммы 1.3.3 следует существование р<( |р<|-<г,./== таких; что г?+‘=?р,(гпос1Л), (ао-т-1')г’п*‘=₽г(то.йЛ)....: . . .. Отсюда. - (rm+‘—00 (a,--l)->((®i-l)^'-MHHi(<Й^-1) =0 (mod Л) и 102—01 (а0—1)|—ЛМ,. Так как 102—т01(ао-—1).|-^ ^г2+г, то из леммы 1.3Л следует 02—0i(ao—Ц|=О,;«о01=л0147 02. '< ‘Аналогично a0(rm+l—0t)—r(aorm—-0) — 0</—a^jsOXmod/l), i0or—ao01| = |0or—017-02l.^^+r, и, следовательно, :0o/‘=02+0i, |0O|—1. Из4ао0/—г0о=±г-следует, чтеь ,а0;дедит г-)и Тогда пр лемме 1.3.1 существует 0S: |0s|<r и (а0+1)гда= арДтибдЛ)’. Отсюда ао((“о+ 1)Гт₽з) — (<*о+ 0(a^m —₽о) = , . .. ' с.' 1)Ро~аоРз ЙО „Xriiod^)’7 ЙЙУ-УУ ' -КаоЛ-ДУРо.— cqj08-|.=rL±-(ao^ 1О=-ачай031:^/С4-Лл s .k?,i Ь-иУ. д 15
3 Следовательно, ao(0s±l) = ±l в противоречии с тем, чтб a0>l. 1 Таким образом, а0=1. Но тогда из леммы 1.3.3 следует сущест- | вование 04: (г—l)rm=04(modA), |04|<г. Отсюда ' \ (r-l)(^-₽o)-((r-l)rm-p4)=-(r-1)₽o+pA0 (modA); j 04— {г—1)00. Поскольку |04|s^r—1, то 10о 1 = /Лемма 1.3.4 I доказана. / Заметим, что попутно мы доказали, что из I следует III. Для >, окончания доказательства I-MI отметим, что из леммы 1.3.4 еле- < дует, что R.t= {± 1, ±г,..., — подгруппа, совпадающая с группой Н. Множество — это смежный класс а по Я, и раз- ные а лежат в разных смежных классах Ra по Я, и в каждом смежном классе есть а: 1,^а<г. Доказательство П-МП почти очевидно. Действительно, пусть А=р— простое, АЛ4ДА, 3)=a0''m—0». Из «of1" ^0о (mod А) сле- дует, что а» и 0о лежат в одном смежном классе по Я, но в силу того, что в каждом смежном классе лежит лишь одно а, 1^а<г и вместе с ним —а, то 0о=±ав и a0rm±a0^0(modА) или, так как А простое, rm± IsO(modA). Из того, что ЖГ(А, 3) — наи- меньшее положительное М, такое, что w(AM)^2, следует АМГ(А, 3) =rm± 1, т= |Я|/2= (A—l)/2(r— 1). Доказательство Ш=>1 также просто. Нетрудно заметить, что если выполнено III, т. е. ДЛ4Г(А, 3) ==г(А-1)/2(г“*'± 1, то выполнено условие 3 теоремы 1.3.3. Таким образом, теорема 1.3.4 доказана. Замечания. В II возможны два случая: Я=;(г) и Н=£ (г). Случай 1 имеет место тогда и только тогда, когда ДМ, (А, 3) = . _r(A-t)/2(r-i)_j_ J сЛучай 2 имеет место тогда и только тогда, ког- да АМГ(А, 3) 1. ( При г—2 эквивалентность условий II и III составляет теоре- му 15.4 [73], а условие II — это описание кодов Брауна—Питер- сона [101,72]. Следствие 1.3.1. АЯ-код Ca.m, исправляющий одиночные ошибки, является совершенным тогда и только тогда, когда А I удовлетворяет условиям II теоремы 1.3.4 и ! ]-^-Мг(А,3)|^М<М,(А,3). (1.3.3) Доказательство. Необходимость. Из d (СА,М) 3 сле- дуетМ^МДА,3). Далее согласно определению 1.3.1 (г—1)гго-1^ | ^АМ—г, или | j (r-ip^+r, М. (1.3.4) Так как(г—l)r’n-1+r=^jrm+r= (АМДА, 3)±1)+г и А>г’+г, то левая часть неравенства (1.3.3) прямо следует из I (1.3.4). Достаточность. Пусть генератор А АЯ-кода СА,м, нс- I правляющего одиночные ошибки, удовлетворяет условию II тео- ремы 1.3.4. а мощность М кода САМ— условию (1.3.3). Очевид- 16
но, 3). С другой стороны, из (1.3.3) следует (1.3.4), т. е. (г—у)гт-1^ДЛ4—г, или | е | —г и ЛУ-код САМ удов- летврряет\>пределению 1.3.1. ’"1 ЛУ-кода'ми, удовлетворяющими следствию 1.3.1, исчерпывает- ся класс совершенных ЛУ-кодов, исправляющих одиночные ошибки. Используем^ теорему 1.3.4 для описания совершенных троич- ных ЛУ-кодов. \ Нам будет удобно переформулировать условие II следующим образом. Рассмотрим гомоморфизм Zr*^-Zf*IH. Так как Zf*IH — циклическая группа порядка г—1, то она изоморфна группе ц.г-1 корней (г—1)—степени из 1. Обозначим х<-« произвольный сквозной гомоморфизм Zp-^ZpIH-^^r-^ Это числовой характер по модулю р. Из того, что —1, г^Н следует %r-i (г) =%r-i(—1) = = 1. Так какЯ=(г)Х (—1), то либо (—1) е (г), и тогда Н=(г), либо —1 6 (г), и тогда ’Н= (—г) и | (г) | = |Я|/2 нечетно. Теперь- условие II можно записать следующим образом: IF. 1) А~р— простое; 2) a) Xr^(r) = %r-i(-l)=l, б) (®i) %г-1 (®г)> I Г» ®1 ®я» 3) |(г)| = (р— 1)/(г — 0 или 1И|=(р—1)/2(г—1)—не- четное. Условие II допускает и другие эквивалентные представления. За- метим, что числовые характеры Xr-i по модулй) р эквивалентны в том смысле, что отличаются на автоморфизм группы pr_t и можно считать, что Xr-i совпадает с (г—1) степенным вычетом по модулю р, обозначаемым (“1 Условие II тогда можно представить в виде , 1Г. 1) А — простое; 2> а) (-£-) “(-V-) “*> \ Р Jr-1 \ Р 'г-1 б) ) , Is^cq, а2<г, 01=^0^’, \ Р /г-1 \ Р 'г-1 3) |(г)| = (р-1)/(г-1) или 1(г)| = (р-1)/2(г-1)-не- четное. Заметим, что условие (—=1 эквивалентно ps= 1 (mod 2(г—1))- X Р /г^1 При г==3 | — | —символ Лежандра (— ], и, используя квадра- \ Р /г—1 \Р J ' тичный закон взаимности [32], условие IF легко разрешить. 17
Действительно, условие II", 2 записывается следующим обра- зом: • • - / 1 и алее из .квад- Условие = 1 эквивалентно р=1 (mod 4) ратичного закона взаимности следует. р-i • 1<или. р=1 (niod3). (2 \ , — I =—1 эквивалентно р=±5(mod 8). Но так* как А/ . - - 1 (mod 4)то pss5(mod8) . Из приведенных рассуждений вы- текает, что условие II",. 2) эквивалентно тому, чтор^5(тоб8). и psl(mod3), т. е. p=d3.(mod24). Таким образом, доказана дающая полное описание троичных совершенных АА/-кодов Теорема 1.3.5. Следующие условия эквивалентны: I. А — генератор совершенного троичного ААГ-кода, исправ- ляющего одиночные ошибки. II. А=р — простое, р= 13(mod24) и а) | (3) |4=(р—1)/2 или •б) | (3) | = (р— 1) /4 — нечетное. III. АЛ43(А) 3)=3'А-1)/‘±1. Пример. 4=37 порождает совершенный троичный 4ДО-код длины п=9 и М3(А, 3)=532. . ' Исследование условия IP или II", 2 позволяет выяснить, су- ществуют или нет для заданного г совершенные r-ичные А#-ко- ды, исправляющие одиночныеошибки. Так, выше было показано существование двоичных и троич- ных кодов. Существуют совершенные AAZ-коды для г=6 и 7. Ана- литическое выражение генераторов А для г—7 находится с по- мощью теории бикубических вычетов [36]. ’ ‘ • Для многих важных значений г соверщенных .АЛГ-кодов, ис- правляющих одиночные ошибки, не существует.. , Теорема 1.3.6. Для г=5 не существует совершенных AjV-ko- дов, исправляющих одиночные ошибки. Д о к а з а f е л ь с т в о. Покажем, что для ,г=5 условие II", 2 не выполняется. Пусть,, условие II", 2, а выполнено. Тогда =1 и, следовательно, р= 1 (mod 8). Отсюда .2 — квадра- \ Р /4 точный вычет по модулю А=р и 4=22-биквадратичный вычет, т‘ е. (—= 1 = |-Ц , что противоречит условию II", 2, б. \Р/1 \Р/л Лемма. 1.3.5. Пусть г=г3, Для существования r-ичного совер- шеийого ААГ-кода необходимо/чтобй S делило г0‘—-1. * Д о к аза т е л ь с^т в о^Покажем, что это услбвие .необходимо для выполнен‘ия ‘П', 2. Пусть б„— порядок ^,-i(ro)^p.r-i, т. ё. б—’ Й i . ’’
наимейыпее натуральное число,’.такое, что X?-i(r0) = l. Так как Xr-i — гомоморфизм, то Xr-i (r)\=%r-t (гв*) =x’-i (г») = 1 и, следовательно, С друг гой сторон^, если б<$, то га6<га’=г и Хгч. (г«) =X>--i (Ж) .= 1 = =Х<-1 (О. что противоречит II', 2). Итак, если выполняется II', 2, то порядок x<--i(ro) равен s, и поскольку порядок элемента делит порядок группы, то $ делит г»*—L . \ Следствие 1.3.2. Для г—гор, р — простое, не делящее га—1, не существует совершенного AW-кода. Доказательство. Согласно лемме 1.3.5 для существо- вания совершенного r-ичного АТУ-кода для г=гор (р— простое} необходимо, чтобы Гор—1=0 (mod р). (1.3.5) По теореме Ферма гар—r0sO(modp). Отсюда, предположив вы- полнение (1.3.5), получим г0—1^0(modp), что противоречит условию. Примеры. Для р=2 не существует совершенных АЛГ-кодов для г=22, 42, 62, в2, ... Для р=3> не существует совершенных АЛЛкодов.над г=2’, З3, 5*, 63, 83, 93,... Теорема 1.3.7. Для г=2ь (6>1) не существует совершенных ААГ-кодов, исправляющих одиночные ошибки. Доказательство. Покажем, что b не делит 26—1 при 6>1 и, следовательно, лемма 1.3.5 не выполняется. Предположим противное, b делит 2ь—~ 1, т. е. 2bsl(mod6) и (&, 2)=^=1. По тео- реме Эйлера 2*(b)ml(mod b). Отсюда 26is=l(modb), где bi— = (b, <р(Ь)) и bt делит Ь. Но если 2*'=в 1 (mod Ь), то тем более 2b'sl(mod&t). По теореме Эйлера 2’’(bi,sl (modfti), и поэтому 2д2=4 (mod 61), где Ь2=(&1, <p(ftt)) и Ьг делит bt. Но если 2b»=s s 1 (mod bt), то тем более 2Ь‘= 1 (mod b2). Продолжая этот про- цесс, рассмотрим такое Л, что Ьк>1, Ьк+1==1 (такое k найдется я силу конечности b и условия &<+1 делит bt). Тогда 2‘his si (mod&J, т. е. 2sl (modftk)> что противоречит предположе- нию Ьк> 1. Анализ условия. II" при больших г осложняется неэлементар- ным характером законов взаимности. Для нахождение совершен- ных АУ-кодов иногда удобно пользоваться представлением усло- вия II на языке индексов. Пусть р — простое нечетное число, g — первообразный корень по модулю р, indga — индекс числа а по модулю р при основании § [32]. • •• ’ Тогда условие II эквивалентно условию II'". 1) А=р —простое, pss l (mod 2 (г—1)); 2). indga^feindg6(mod(r—1)), 1^а, b.<r, a=£b; • 3) .(indgr, p—.1) =r—Г или (indg(—r), p—1) ==r—1> • • <(p-l)/(r-l),2)=l. - ----- 1Э
ЗАМЕЧАНИЯ Здесь и в дальнейшем из экономии места мы ограничиваемся только ссыл- ками на источники, из которых взят описываемый материал, и/на непосред- ственно связанные с ними работы. / В первой главе использованы' следующие источники. / 1.1. основан на работе [14]. Минимальное представление (1.1.10) принад- лежит Кларку и Ляну [112], а теорема 1.1.2. взята из раб^т [14, 112]. Мини- . мальное представление двоичных чисел было открыто Рейтвизнером [159], исследовалось Цзао-У и Чжаном [168], Месси и Гарсиа/[145], Гото и Фуку- гмура [126] и др. / 1.2. Описание свойств двоичных АУ-кодов можно найти в [45, 59, 73, -153], г-ичных АУ-кодов— в [45]. Арифметический кольцевой вес и расстоя- ние введены в [14, 113]. В 1.3 использована работа [23]. Двоичные совершенные АУ-коды— это , •коды Брауна — Питерсона [72, 101]. Троичные совершенные АУ-коды были построены В. М. Гриценко [35]. Гото и Фукумура [128], Гото [125], В. М. Гриценко [36] и [23] исследовали, существуют ли совершённые АУ-ко- ды для конкретных значений г. В частности, в [36, 125] доказано, что не су- ществует десятичных совершенных АУ-кодов. Глава 2 АРИФМЕТИЧЕСКИЕ ЦИКЛИЧЕСКИЕ (и, Л)-КОДЫ 2.1. Свойства (п, 4)-кодов Пусть Z„ — кольцо вычетов целых чисел по модулю т (т> >1 — целое). Любое BeZrn_t (r> 1 и п — натуральные числа) единственным образом представимо в. виде Ьп-1гп-1+Ьп-ггп~2+ ... +b„, O^bt<r (2.1.1) (Ь — наименьший неотрицательный вычет в Ь). Лемма 2.1.1. Коэффициенты Ь, представления (2.1.1), элемен- та В кольца Zrn_t вычисляются из соотношения bi= (Brn-<mod(rn—l))modr. (2.1.2) Элемент В можно представить также в виде an_1rn-1+an_2r’-2.+'... +а<>, |a,|<r. (2.1.3) Такое представление уже не будет единственным. Обычное пред- оставление (2.1.1) является частным случаем представления (2.1.3). Так же как и для кольца Z, весом представления (2.1.3) элемента В кольца Zrn-i будем называть число ненулевых коэф- фициентов этого представления. Представление с' минимальным весом называется минимальным. Вес минимального представле- но
ния элемента В в кольце Zrn_t называется арифметическим цик- лическим\весом а>„(В) элемента В. Легко видеть, что и»„(В) об- ладает следующими двумя важными свойствами: w„(rB)=a?n(B), wn(—B)=ayn(B). (2.1.4) Арифметический циклический вес te»„(B) элемента В равен наи- меньшему арифметическому весу чисел, принадлежащих классу вычетов В, т. е. совпадает с арифметическим кольцевым весом wm(B), т=гп—1 элемента В. Иными словами, если В — наименьшее положительное число в классе вычетов В, то a>n(B) =min{w (В), w(B— (rn—1))}. (2.1.5) Арифметическим циклическим расстоянием d„(Blt В2) между Вь B2eZrn_t назовем шп(Вц—В2). Введенное расстояние будет метрикой. Теорема 2Л.1. Для любого BeZ,»-, существует представле- ние (2.1.3), такое, что если а<<0, то a(i+t)modn=0; i (2.1.6) если a(=—l (modг), то (а(<-1)тодп=0. Это представление, называемое циклическим каноническим пред- ставлением, всегда единственно, исключая случай, когда п чет- ное и представления В'=±((1—r)0... (1—г)0) и В'= -== ± (0(г—1) ... 0(г—1)) имеют одинаковый вес и оба удовлет- воряют условиям (2.1.6). Вее циклического канонического пред- ставления равен о»„(В). Доказательство теоремы 2.1.1 и алгоритм построения цикли- ческого канонического представления (обозначаемого В) элемен- та В кольца Zrn_t практически (с учетом того, что в (2.1.3) a(j+i)modn при i—n—1 равно а0) совпадает с доказательством теоремы 1.1.1 и описанным в 1.1 алгоритмом построения канони- ческого представления целых чисел. Примеры. Пусть г=10, п=9 и Bi= 125682345 — обычное представле- ние элемента В1 в кольце Zio»-i- Согласно теореме 2.1.1 это представление •является каноническим и арифметический циклический вес и»9(В1) =9. Пусть теперь г=10, п=18 и В2=425996420925903189— обычное пред- ставление элемента В2 в кольце Zio*« -1. Сделав замены 9-108+2-107=109— В-107, 5;10'8+9-10,«+9-1013+6-1012=6-1015—4-Ю12 и 8-10+9+1 -1017=9- -10—9-10'7, получим каноническое представление В2=926004421085903290. Арифметический циклический вес элемента В2 равен t»ie(B2) = 13. Для определения ai„(B) можно также воспользоваться сле- дующим аналогом теоремы 1.1.2. Пусть Л=Л„_1ЛП_2 ... Л о — обычное представление AeZrn_,. Обозначим В=1(г+1)Л, и пусть B=B„_tBn_2 ... Во — обычное представление BeZ,»-!. 21
Теорема 2.1,2.- Представление элемента С=гА кольца Zr«-t в виде С=С,*.Д?„_2... С,, где Ci=B{—Ah i=0, 1, ..., ti— 1, име? ет вес, равный арифметическому цикличевкому весу wn(A) эле? мента А. . / Пример. Пусть г=10, п=18 и А = 125996420925903189 — обычно? представление элемента А кольца ь Обычное представление элемента В=(г+1)В=11А равно 6=385960630184935080. Минимальное представление элемента С=гА=10А равно С'=260036210861032109, и арифметический цик- лический вес wi8(C) =Wis(A) = 13. Циклическое каноническое представление обладает рядом важных свойств. Лемма 2.1.2. Пусть B=an-ian-2 ... а0— циклическое канони- ческое представление элемента В кольца Тогда B(f>.— ==an-i-ian-z-t ... ЯоЯп-i ... an_i — циклическое каноническое представление элемента r*BeZrn_t. Лемма 2.1.3. Пусть BeZ,»_1 и при четном п В^(г»-1)/(г+1),В^г(г»-1)/(г+1). Если B=an-lan-t ... а0 — циклическое каноническое пред- ставление В, то тогда если и только если . (гп—l)/(r+l)<B<r(rn—1)7.(г+;1). (2.17) Доказательство. Согласно (2.1.6) при п четном макси- мальное Втах такое,чтоan_tV= 0,равно (г—'1)0(г—1)0... (г—1)0, а минимальное Bmm=0(r—1)0(г—1) ... О(г—.1). При п нечетном Вшах и Вшш равны соответственно (г—1)0(г—1)0 ..., 0(г—2) и 0 (г—1) 0 (г—1) ... 0 (г—1) 1. Как для четного, так и для нечетного п. имеем e. = lZ=±|,s_=[£!t«l. ' J г+1 L L г+1 J Пусть BgZ,»-, и В=/=0. Обозначим г/ДВ) =rn-,B mod(гп—1), где В — обычное представление элемента В. Теорема 2.1.2. Арифметический циклический вес а»п(В) равен числу г/ДВ) таких, что. (г»~1)/(г+1)^уДВ)<г(*г’*-1)/(г+1). (2.1.8) Действительно, пусть при п четном элемент В#=(г"—l)/(r+1) и B=an_tan_2... ,а0 — циклическое каноническое представление В. Согласно лемме.2.1.2 коэффициент представления В равен старшему коэффициенту циклического канонического представ- ления элемента гп-гВ=В(0. Учитывая yt(B)=Bw, получаем, что число ненулевых коэффициентов циклического . канонического- представления В элемента BeZ,»-/,(В=£ (rn— l)/(r+V) в соот- ветствийс леммой 2.1.3 равно числу уДВ), удовлетворяющих (2;1.3)ДПри B=i(rn—1)Цг+1), п — чётное имеем 'М’(В) =п/2}. и справедливость теоремы 2.1.2 проверяется непосредственно. 22
Арифметическим циклическим (л, А)-кодом (в дальнейшем сокращенно (л, А)-кодом), А делит rn— 1, называется ненулевой идеал U=(A) в кольце Zrn_t. Число А называется генератором (л, А)-кода'. Длина (л, А)-кода равна л, мощность (число кодо- вых слов) А*=(гп—1)/А; (л, А’)-код называется двойственным к (л, А)-коду. Произведение любого слова (л, А)-кода на любое слово (л, А’)-кода равно нулю (в кольце Zrn_t). Любое число од- нозначно определяет элемент идеала (класс вычетов), которому оно принадлежит. Слово В (л, А)-кода — элемент идеала U— = (А) — представляют либо одним из чисел В или В—(г"—1) класса вылетов В, меньших г"—1, взятых в обычной форме, либо •циклическим каноническим представлением или другим мини- мальным представлением. В теоретических исследованиях, как правило, В представляют наименьшим неотрицательным вычетом ... &0 и циклическим каноническим представлением В=ап_1а„_2 ... а0. Может оказаться полезным представлять ко- довое слово В абсолютно наименьшим вычетом В в классе В. Поскольку (л, А)-код — идеал в кольце ZTn_t, вместе со сло- вом ,^=&„_1&п-2... Ьо (п, А)-.коду принадлежат все его цикличе- ские- сдвиги: гВ—Ьп~2 ... bob„-ht r2B=bn-i ... 606n-i6n-2, • • • ..., rn~iB=bobn-l... bt. Минимальное расстояние (л, А)-кода (в дальнейшем часто сокращенно — расстояние) определяется как d„(A)^mindn(Bi, Вг) (2.1.9) Bi9'B2^^d9 Вt^B2. ' В силу линейности (л, А)-кода. .d„(A) =min(w„(B). (2.1.10) : Be=W, B^Q ' ' ,. - . . Пусть B=*HA=bn-ibn-z . Л bt—произвольное слово (л, А)-кода, Z=0, 1, 2,..., А’—1. ... Лемма 2.1.4. Арифметический циклический вес wn(lA) слова В=1А (л, А)-кода равен числу целых / таких, что (2.1.11) (2.1.8) и (2.1.12) Действительно,, поскольку AA*=rn— 1, неравенства (2.1.11) равносильны. ... ... Обозначим б(х) число целых точек, в интервале гх/(г+,1)). Тогда ... — 1Х/;(Г+4)Ь. \ , - .Тео^ма ^Г.З. Сумма о„ (А) арифметических циклических ве- совсдов^Хл, А)-кода равна произведению числа целых точек 6(А*) в [А7(г+1), гА7(г+!1)] на длину кода-л: ... DD.... (2.1.13) /Адб^афател ьство. Согласно лемме 2.1.4 сумма. оп(А) ве- соЕкСловДл, А)-кода ривначислу пар (?, /), таких, что r’lmodA’e
е[А*/(г+1), гЛ7(г+1)], где i=0, 1, п—1 и Z=0, I, ..., А*— 1. Обозначим ai t=r4 mod А*. Для каждого Oi,t, а таких чисел ровно [rA*l(r+1) ]—[А*/(г+1) ], существует л пар (Z, I) с указанным выше свойством. Действительно, для каждого t=0, 1, ..., п— 1 в силу (г, А“) = 1 найдется ровно одно число Z, такое, что для выбранного ai>t имеем /=г_{а{1то<1 А*. Из теоремы 2.1.3 можно получить верхнюю границу мини- мального расстояния — границу Плоткина для (л, А)-кодов. Пусть dn(A) —минимальное расстояние (п, А)-кода. Число не- нулевых слов (л, Л)-кода равно А*—1. В силу линейности (л, Л)-кода минимальный вес ненулевых слов (л, Л)-кода “'min(B) =^п(А). Поскольку средний вес слова (л, А)-кода не меньше минимального веса, то dn (А) = й>т1п (В) < -%(Л) . (2.1.14} (Л — Так как 6(А*)< -^-(А* + п т0 г+ 1 d„(A)<n-44£±l. - (2.1.15} г + 1 Л* — 1 Неравенство (2.1.15) называется границей Плоткина для ариф- метических циклических (л, А)-кодов. Арифметические цикли- ческие (л, А)-коды следующим образом связаны с арифметиче- скими циклическими АЛГ-кодами. Арифметический r-ичный AN- код Сл,м={0, А, ..., (М—1)А} называется циклическим, если АМ=гп—1. Арифметический r-ичный циклический (п, А)-код (А делит гп — 1) —ненулевой идеал 11= (А) в кольце Zrn_t. Если в каждом классе вычетов идеала 11= (А) выбрать наименьший неотрицательный вычет, то множество таких чисел образует арифметический циклический АЛГ-код СА, А». Для любого слова B = ZA (л, А)-кода согласно (2.1.5) да„(В) = min {да (В), w(B—(гп—1))} и минимальное арифметическое циклическое расстояние dn(A) (л, А)-кода совпадает с минимальным арифметическим расстоя- нием d(A) соответствующего циклического AAZ-кода. В то же время спектры весов (и, А) и АЛГ-кодов могут различаться. Так, r-ичный (л, А)-код с А*=р (р — простое, г — первообразный корень по модулю р) является эквидистантным (см. 2.3) Соот- ветствующий ему AAZ-код уже не будет эквидистантным при- А*>г4. Действительно, в этом случае длина и, следовательно, вес канонического представления числа А меньше п — 3, и по- этому арифметический вес слова (А* — г2)А AAZ-кода равен. да((А‘ — г2) А) = да (А)+2. В дальнейшем мы будем часто применять к (л, А)-коду опе- рацию s-кратного повторения. А именно, r-ичный (ns, А,)-код. называется s-кратным повторением r-ичного (л, А)-кода, если. 24
Л,*=Л’х (напомним, Л*‘=(гп—1)/Л и соответственно Л,*= = (г”*-1)/Л,). Из определения следует, что Л$ = ^21 А = + 'Аг"1$'г) + • •. + Л, (2.1.16) т. е. генератор А, s-кратного повторения (п, Л)-кода есть s-крат- ное повторение генератора Л (п, Л)-кода. Циклическое каноническое представление слов (ns, Л,)-кода получается s-кратным повторением циклического канонического представления. соответствующих слов (п, Л)-кода. Отсюда, в частности, следует, что минимальные расстояния (ns, Л4)-кода и (п, Л)-кода связаны соотношением dtn(At)=sdn(A). (2.1.17) 2.2. (л,А)-коды, исправляющие одиночные ошибки, модули и пакеты ошибок Арифметический г-ичный циклический (п, Л)-код исправляет одиночные ошибки, если и только если а/‘±а/^0 (тобЛ) (2.2.1) для всех i и /, Os^i, /<п, 0<at, а}<г. Из (2.2.1) следует Л^2(г—1)п+1(п, Л)-коды, исправ- ляющие одиночные ошибки, с Л=2(г—1)п+1 называются со- вершенными. Далеко не для всех г могут быть построены совершенные (п, Л)-коды. Так, не .существует совершенных (п, Л)-кодов для таких важных случаев, как r=10, 2®(s>l) (см. 1.3). В то же время известны совершенные (п, Л)-коды для г=2, 3, 7. Пара- метры и генератор Л этих кодов определяются с помощью тео- ремы 1.3.4. В частности, двоичные .совершенные (п, Л)-коды Брауна—Питерсона [73] задаются следующей теоремой. Теорема 2.2.1. Для совершенности двоичного (п, Л)-кода, исправляющего одиночные ошибки, необходимо и достаточно, чтобы Л было простым числом и —2 (но не 2) — первообразным корнем по модулю Л, п= (Л — 1 )/2. В связи с несуществованием для многих г совершенных (п, Л)-кодов представляют интерес (п, Л)-коды, близкие к со- вершенным. Арифметические циклические (п, Л)-коды, исправляющие одиночные оцгибки и близкие к совершенным, определяются сле- дующей теоремой. Теорема 2.2.2. Число Л =?= (г—1)р, р>г>3 порождает г-ичный (п, Л)-код длины п= (р — 1)/2, исправляющий одиночные ошиб- ки, если б(г, р) = (р—1)/2, —1 является квадратичным невы- четом по модулю р, а все числа bt}=aflt такие, что 0<а«, а}\ и at+as=r— 1 являются квадратичными вычетами. 25
. Доказательство. Так как r'=l(mod (г—1)), то' (2.2.1} равносильно (jnodp), г1ф—1 (modp), • (2.2.2} air14-(mod/>).,. ; (2.2.3) где 0<i<n, 0<af, а}<г, a^a,, сь+а}=г— 1. Из условия д(г, р) = (р—1)/2 следует, что г, а вместе с ним все г*(0<1<п) являются квадратичными вычетами по модулю /г. Разложение циклической мультипликативной группы выче- тов целых чисел по модулю р по подгруппе {Н} дает два смеж- ных класса, причем класс {г1} по доказанному содержит всё квадратичные вычеты, а другой класс {—в силу условия, что —1 является квадратичным невычетом, содержит все квадра- тичные невычеты по модулю р. Обозначим через {*} смежный класс, содержащий х. Тогда {/*}¥={—1}, т. е. —l(modp). В то же время, учитывая п= = d(r, р) = (р—1)/2, имеем r‘^l(modp) при всех i, 0<i<n. Для выполнения соотношения (2.2.3) необходимо и доста- точно, чтобы {а,}# {-а,}/ (2.2.4) Поскольку имеются всего два смежных класса и {!}=/={—1}, то {а}=#={—а} и (2.2.4) равносильно {«<}.= {aj. Следовательно, (к и а} должны одновременно являться либо квадратичными вы- четами, либо квадратичными невычетами, а их произведение—: квадратичным вычетом. Теорема доказана. Пример. Пусть г = 10. Имеем =1.8, =2-7, = 3 • 6 и Ьу) = 4 • 5. Из 4 • 5 заключаем, что 5 должно’ быть квадратичным выче. том, ибо 4=22 — квадратичный вычет при любом- р. Аналогично из выраже- ний для bff, nb ^следует, что 2 и 7 должны быть квадратичными выче- тами, а на 3 никаких ограничений не накладывается. Добавим к этому, что 10 должно быть, квадратичным вычетом, поскольку 6(10, р) = (р—1)/2. Таким образом, число А—9р порождает десятичный ((р—1)/2, 9р)-код, исправляющий одиночные ошибки, если —1 является квадратичным невы- четом по модулю р, а 2, 5 и 7 — квадратичными вычетами. Этим условиям удовлетворяют числа p=280q+t, где — целое и £=31, 111, 159, 271,279. Отсюда, в частности, следует, что десятичный. (15, 279)-код исправляет одиночные ошибки. Алгоритм декодирования (п, А)-кодов, удовлетворяющих теореме 2.2.2, состоит в следующем. Пусть В'=В+£ — принятое слово, В — кодовое слово, Е— слово-ошибка и Е=а{г\ |а<| <л Для слова В' находим две пары синдромов: (В') = В' mod (г — 1), S7^ (В') « В' mod (г — 1) — (г — 1) и S* (В') = В' mod р, Sp (В') в В' mod р — р. 26
Если все синдромы равны нулю, то считаем, что ошибок не про- изошло и прекращаем декодирование. В противном случае на- ходим такое целое i (i=0, 1, ..., n — 1), что-$£-1(В') =S^+(r‘B<) или5^.1(В')—Sp-^B'). В первом случае считаем, что произошла ошибка Е=а{г', at— во втором случае считаем, что произошла ошибка Е=а'гг, а/=аг—(г—1). Находим кодовое слово В=В' — Е и прекращаем декодирование. В главе 7 подробно исследуются линейные коды, исправляю- щие модули и пакеты ошибок. Здесь мы кратко, опуская дока- зательства (которые являются почти дословным . повторением исходных), рассмотрим арифметические аналоги этих кодов.. - Слово-ошибку Е=и}г3\ [ц,|<г\ /=0, 1, .... п/К—1 будем называть модулем ошибок длины А. Очевидно, Аичный (п, Л)- код, исправляющий одиночные ошибки, можно естественным образом превратить в r-ичный (Ап, Л)-код,' исправляющий мо- дули ошибок длины А,.-Это позволяет использовать для исправ- ления модулей ошибок Аичные коды, удовлетворяющие тео- реме 2.2.2. Весьма простую реализацию допускает следующий код. Теорема 2.2.3. Пусть р>2 — простое и А<р. Тогда арифмети- ческий r-ичный (п,Л)-код, порожденный генератором Л = = (/’—1)(гр— 1)/(г—1) имеет длину п=кр и исправляет оди- ночные модули ошибок длины А. Доказательство. Для того чтобы (и,-Л)-код исправлял модули ошибок длины А, необходимо и достаточно, чтобы для любых В и В',/таких, что О^В, B'<rK, B^±B'rM(mqd Л). - . Лемма 2.2.1. Сравнение В~—В'г*(mod (^ — 1) (гр — 1)/(г — 1)) (2.2.5) не имеет места для любых В и В', таких, что 0^В, В'<гь, &< <А<р, (А, р) = 1. Действительно, (2.2.5) равносильно системе сравнений В=— B'r'-fmod^—!)),„ В==—Bzr’« (mod (г” — 1)), (2.2.6) где it=tmodA и i2=imodp. Из (2.2.6) следует, что В+.В'= =гх— 1 и В+В'=гр— 1. Но это невозможно в силу А¥=р. Доказательство B^feB'r(mod Л) аналогично доказательству теоремы 7.1.4. Слово-ошибку Е=и.}г’, /=0, 1....п — Ъ — 1 будем называть-пакетом ошибок длины Ъ. Если /=0, 1, ..., п—1, то Е=щг*— циклический пакет ошибок. Теорема 2.2.4. Генератор А=(г2Ь—1)р (р — простое и (р, г26—1) = 1). порождает г-’ичный (п, Л)-код длины п= =НОК{26. б (А р)}, исправляющий циклические пакеты ошибок длины Ь, еелй р>гь и 6 (г, р) ^fe2 (mod-4) . 27
Арифметические аналоги кодов Гилберта также позволяют исправлять циклические пакеты ошибок. Теорема 2.2.5. Пусть р и q взаимно простые целые числа, q>p>&, am=p — m(q — p), где т=0, 1.....[p/(q — р)]; Пси — наименьший отличный от 1 простой делитель числа ат\ Вси= == Р ССщ/П dm* Тогда г-ичный (п, А)-код длины n=pq, порожденный гене- ратором А = (гр— 1)(г’—1)/(г—1), исправляет одиночные па- кеты ошибок длины 6=min Ват и для любого b'>b существует пакет ошибок длины Ь', не исправляемый этим кодом. Доказа- тельство теоремы 2.2.5 аналогично с учетом леммы 2.2.1 дока- зательству теоремы 7.3.4. Процедура декодирования арифметического циклического г- ичного (п, А)-кода, исправляющего пакеты ошибок длины Ь, состоит в следующем. Пусть принято слово В'. Находим наименьший по абсолют- ной величине вычет Б' числа В' по модулю А. Если |В'| <гь, то полагаем, что кодовое слово В=В' — Б'. Если то на- ходим такое целое / (/=0, 1........................п—1), что наименьший по абсолютной величине вычет Б'г} числа В'г} по модулю А меньше гь и полагаем истинное кодовое слово В=В' — Б'г}. Для арифметического аналога кода Гилберта более удобен следующий алгоритм декодирования. Пусть В'=В+Е — принятое слово, В — кодовое слово, Е — слово-ошибка и E=a{r\ (ajcr6. Для слова В' находим две пары синдромов: . (В') = В' mod (г" — 1), Sp (В') = В' mod (г" — 1) — (г» — 1) и s; (В') = В' mod {гч — 1), S~q (В') = В' mod (гч— 1) — (г» — 1). Если все синдромы равны нулю, то считаем, что ошибок не про- изошло и прекращаем декодирование. В противном случае на- ходим такое целое / (/=0, 1, ..., п—1), что S„+(riB,) = =S,+ (r’B'), SP+ (rJBz) <rb или SP- (rjB') = Sq~ (r}Bf), S," (r’B') < <rb. В первом случае считаем, что произошла ошибка Е=и}г3, uj=Sp+(riB'), во втором случае считаем, что произошла ошибка Е=щ'г}, и/=Sp_ (r’B'). Полагаем кодовое слово В=В'—Е и прекращаем декодирование. 2.3. (п, А)-коды с большим расстоянием Арифметические циклические (п, А)-коды, параметры кото- рых удовлетворяют границе Плоткина (2.1.15) или близки к ней, называются, (п, А)-кодами с большим расстоянием. Рассмотрим следующий г-ичный (п, А)-код. Пусть А* — = (гп—1)/А, А*=р, р — простое число и г — первообразный ко- рень по модулю р, п=А* — 1. Код имеет А* кодовых слов, среди которых одно нулевое, а остальные А’ — 1 слов получаются цик- 28
лическим сдвигом слова А. Поэтому все ненулевые слова (га, А)- кода имеют одинаковый арифметический циклический вес. Так как согласно теореме 2.1.3 сумма весов ненулевых слов (га, А)- кода равна ' • (2-зл> \L г “г 1 J L г * _1/ а число ненулевых слов А*—1=га, то арифметический цикличе- ский вес каждого слова В = /А, 1= 1, 2,..., А* — 1 равен “’-да-Ш-Ш- <2-з-2> В силу линейности (га, А)-кода его минимальное расстояние- dn(A) =ш-„(В). Параметры рассмотренного (га, А)-кода лёжат на границе Плоткина (2.1.15). Перейдем к более общей задаче. Пусть задан некоторый (га, А)-код. Для описания весовой структуры слов кода введем весовую функцию Лп.л)(0 = 2рЛ I где р( — число слов кода веса i. Сопоставим каждому слову В = /А (га, А)-кода элемент I коль- ца ZAt, А*= (г" — 1)/А и положим й(/)=шп(/А). (2.3.3} Тогда из свойств (2.1.3) арифметического циклического веса сле- дует «(±г’7) =(,)(/). (2.3.4} Обозначим Za* группу обратимых (взаимно простых с А*) элемен- тов Za* и рассмотрим подгруппу Н = {± Н} в 2д«. Каждый дели- тель d числа Д‘ задает подмножество Md группы Za*, инвариант ное относительно группы Н: Md= {l^A*: (I, A*) =A*/d}. (2.3.5} Мощность множества Afd равна <p(d), где <p(d) — функция Эйле- s ра. Пусть А‘ = [] Pi , af>0, р, — простые, 0= {0ц..0i(... . ...; 0,}; е= {вь ..., ..., 8,}; е>=0 или 1; i=l,..., s; —8<>0. Теорема 2?3.1. Если ю(>) постоянна на каждом Md, то весовая функция (га, А)-кода равна (S д \ <2-3-6* £=1 / /=1.s 2£>
и значение to на \ 24 (» в в \1 «.- st-ir 4пр?' ‘| - у.'' ' " ф(Цр?' . (2.3.7) Доказатёльство. Введем функции Ж)=3®(0 и £(с) = 2 ©(/). * . /=о Заметим, что Md= (J Мс и, следовательно, c|d м-2т- • - (2.з.8) Используя формулу обращения Мебиуса, [32], имеем или, учитывая теорему. 2.1.3 и (2.3.3), .' ^(^)=л2н(с)б(-К * : ‘ , " (2.3.9) с|</ \с J / . . _ Пусть d=JJ p/, тогда число элементов в Md равно /=х ’ , Ф(<О“Ф (П P/'Y. . (2.3Л0) \/=1. / и если (о постоянна^ 4fd, то ©d==gGO/<р(<0 и S - г 2/s ft \) • ; •' '• ‘ -;-а .... . >• . \j=i 7 - ?" Теперь (2.3.6) следует из. условия, что ©<; постоянна на Md и Мд.= и^. ' ' л\а* . л • - - - . : > Назовем орбитой элемента / кольца Хл/МнЬж^ётво ~ ? Fl= {XSZx» ‘.X = ± Fl} . . ’ • / и определим условия, при которых для каждого Й, й\А* мно-_ жество Ма состоит из одной орбиты. . 30
Лемма 2.3.1. Для того чтобы каждое'множество Md, d\A' со- стояло из одной орбиты, необходимо и достаточно,, чтобы Н = {± г<) = 2%. > \ , (2.3.11) Доказательство. Необходимость условия (2.3.11) оче- видна. Для доказательства достаточности этого условия, во-пер- вых, отметим равносильность его условию: Л4л« = состоит из одной орбиты. Далее, множество {xeZA.: (х, A*)=A*/d} инвариантно относительно Я. Обозначим l=A*/d. Тогда любой элемент х&А4Л имеет вид x=ul, где' (м, й)«=1, и поскольку d|A* имеем («, А*) = 1. Поэгдму и—г* или —г3 для некоторого i или /. А это означает, что' Md состоит из чисел вида ±га, т^ е. состоит из одной орбиты. ' •., ' , ’ Для случая, когда состоит из одной орбиты, мы дадим полное описание (п, А) -кодов. Лемма 2.3.2. 77= {±?} тогда и только тогда;-когда вы- полнено одно из следующих условий: I. б (г, А‘) =<р.(Д‘) или' II. б(г, А‘)=<р(А‘)/2 и —1(£{г;}. Если б (г, А‘) =<р(А‘), то А‘=р“ или 2р“, р>2, . Если же б (г, А‘) = <р(А*)/2, то., учитывая б (г, А*) = НОК{б(г, pJO}, А*—число вида р“(р>2, а>-1), p^p^»(pt>2, а/> 1; i— = 1,2), 2“ (а> 2), 2ар« (а >1), 2р?р? (Pi> 2, а, > 1; t=1, 2). Лемма 2.3.3. Если А* = Pi'Pz'’ то —1е{г4} тогда и только тогда, когда для 7=1,2 - . - б (г, р“4) =0 (mod 2) и б (г, р“9”1 (г, р?*р£’) = 1 (mod 2). S Теорема 2:3.2. Пусть • А* = Ц pf{, Za*. состоит из одной орбиты - - тогда и только тогда, когда выполнено одно из следующих усло- вий: > I. 1) А* = р^р“% pt > 2; i=l,2;:, а) г — первообразный корень по модулю р®*, (Ф (£?*)> ф(р“*)) = 2 и одно из pt = 1 (mod 4) или ' J б) г — первообразный корень по модулюр“’> • (ф(р?)/2, ф(/^’))= 1/ 6(г, ^)=.ф(Р?)/2, . ... где б(х, N) -- показатель, которому принадлежит х по модулю 77; 2) А,=р»,р>2 ЗГ,
a) г — первообразный корень по модулю р“ или б) б(г,'р“) =<р(р®)/2 и р=—1 (mod4). II. г нечетное, 1) A*=2Ai* и А* удовлетворяет условию I. 2) А*=2“, а>2 и б(г, 2“) =2“-2. 3) А’=22р“, а) г — первообразный корень по модулю р“, р= 1 (mod 4) или б) б (г, р“) =<р (р“) /2 и рав—l (mod 4). Во всех описанных случаях верна теорема 2.3.1 и весовая функция (п, А)-кода вычисляется по формулам (2.3.6) и (2.3.7). Длина кода п кратна ф(А‘)/2 (за исключением случаев А*=р“ или А‘==2р“, р“ удовлетворяет I, 2, а, когда п кратно <р(А‘)). Следствие 2.3.1. (п, А)-код с А‘=р“, удовлетворяющим условию I, 2, эквидистантный и Следствие 2.3.2. (п, А)-код с А‘=р“, удовлетворяющим условию I, 2 при р=1 (mod(r+l)), эквидистантный (т. е. все ненулевые слова кода имеют-одинаковый арифметический цик- лический вес) и </п(А) =п(г— l)/(r+1). Назовем (п, А)-код оптимальным в классе (п, А)-кодов, если не существует отличного от него кода, с не меньшими расстоя- нием и мощностью и не большей длиной. Лемма 2.3.5. (п0, Ао) -код с минимальным расстоянием, дости- гающим границы Плоткина dn (А) (2-3.12) оптимален. Доказательство. Обозначим dno(Ao) =п f~;------------- минимальное расстояние (п0, А0)-кода. Предположим, что суще- ствует (п1( Aj-код с минимальным расстоянием dn|(At), такой, 'что dni(At) ^dno(Ao), п^п0 и A,*^A0*. Но тогда из (2.3.12) сле- дует, что «!=«(, и At*=A0*. (п,. А)-коды следствия 2.3.1 теоремы 2.3.2 при р=—1 (mod(r+l)) оптимальны. ЗАМЕЧАНИЯ 2.1 основан на работах [21, 22]. Многие свойства r-ичных (л, А)-кодов (в том числе теорема 2.1.2) были доказаны также Кларком и Лянем [113]. Они являются распространением на случай произвольного основания свойств двоичных (л, А)-кодов, которые исследовались во многих работах, и прежде всего в [41—43, 105, 109, 126, 129, 145, 150, 154]. 2.2. Теоремы 2.2.2 и 2.2.4 принадлежат В. М. Гриценко [35]. Арифмети- ческие двоичные аналоги кодов Гилберта оыли введены и изучены Г. Л. Тауг- лихом и Г. М. Тененгольцем [76]. Лемма 2.2.1 и алгоритм декодирования 32
r-ичных аналогов кодов Гилберта есть обобщение на случай произвольного основания леммы и соответствующего алгоритма из [76]. Теорема 2.2.5 — арифметический аналог теоремы 7.3.4 [90]. Алгоритм декодирования (п,А)- кодов, исправляющих пакеты ошибок взятчнз [11]. В 2.3 использованы результаты работы [22]. Двоичные арифметические коды с большим расстоянием были открыты независимо Бэрроузом [96], Ман- дельбаумом [139], О. Б. Соколовым и И. И. Еникеевым [75] и Чжаном и Цзао-У [104]. Минимальное расстояние этих кодов было определено Бэрроу- зом [95], Гото и Фуку мура [126], Чжаном и Цзао-У [104]. Последние опре- делили также минимальное расстояние троичных кодов. Дальнейшее продвижение в этом направлении было сделано Ю. Г. Дадае-. вым [41—43], Чжаном и Цзао-У [168], В. Н. Дынькиным, Г. М. Тененгольцем и Г. И. Хабелашвили [46, 78]. Минимальное расстояние r-ичных (и, А) -кодов с большим расстоянием было определено Кларком и Лянем [113] и в [14]. Более широкие классы г-'ичных (и, А)-кодов с большим расстоянием были исследованы в [21, 22], Кларком и Лянем [114] и Экером [116]. Глава 3 АРИФМЕТИЧЕСКИЕ ИТЕРАТИВНЫЕ (» Л)-КОДЫ 3.1. Определение и свойства арифметических итеративных (л, А)-кодов Для заданной совокупности целых натуральных чисел пи п2, ..., пт обозначим через Тт={(/1, 1т): lt<=Z} множество целых точек m-мерного параллелепипеда. Множество точек {(/ь ..., 1т)^Тт: Ц=аь i=il..0^с^<п(} назовем s-мерным сечением множества Тт. В частности, одномерное се- чение определяется как множество точек Тт, у которых совпа- дают все координаты, кроме одной. В каждую точку множества Тт поместим некоторый двоичный символ. Тогда всю совокуп- ность символов можно рассматривать как двоичный вектор дли- ны п=п1...пт. , Векторы, у которых сумма символов, расположенных в любом одномерном сечении, равна нулю (в поле Gf(2)), образуют т- мерный (аддитивный) код V(m). Обозначим через V{, i=l, ..., т двоичный кодь сумма всех символов любого кодового слова ко- торого равна нулю. Минимальное расстояние кода Vt равно 2. Код V(m) может быть получен итерацией т кодов Vit i=l,..., т. Минимальное расстояние m-мерного итеративного кода V(m) равно 2т. Пусть п(, i=l ..., т — попарно простые целые числа, и в дальнейшем для определенности rit< ... <пт. Взаимно одно- 2 И. М. Бояринов 33'
значное сопоставление точке (А, ЛДецелого 1 числа. /, такого, что 0^<пи /ss^modn,) (i=*l,ш) задает упоря- дочение. точек; Тт, называемое ’Циклическим [103]. Код V(my при циклическом упорядочении символов будет циклическим кодом с порождающим..‘многочленом g(x) == . НОК, — l},N{=n/n(. По аналогии с аддитивными кодами арифметическим m-мер- ным Итеративным r-йчным кодом .(а -в дальнейшем (п, Д(т))-ко- дом) назовем r-йчный (п, А) -код с генератором . А = Ат= НОК {Л'— 1}/ Nt — nltii, . £=1.............m • (пй nj) = l; i=/=j; i,/ = 1,..., m. Опишем геометрическую структуру r-ичных (n, A(m) j-кодов. Сопоставим каждому целому числу I, 0^1<п точку (/1; ..., /т) е еГп, (отображение, обратное к циклическому упорядочению). Л-1 Пусть В €= и В = btrl —циклическое каноническое пред- /=0 ставление В. Слово В (элемент кольца Zrn^ вычетов целых чисел по модулю гп—1 ),.будем записывать (&„_t, ..., Ьо) и распола- гать символ в точке (А, ..., lm) множества -Тт. Обозначим через ^(0= 2 h l^a(mod nj) .......m<*:‘ _ сумму всех символов слова В, расположенных в одномерном се- чении, проходящем через точку а= (alt..., am). Лемма 3.1.1. Для любого B^Zrn-i ty -1 В= 2 В(о)(0(modг"*— 1). (3.1.1) Д=6 Доказательство ле^ммы вытекает из следующих равенств и , сравнений: в=^ь^, n-i Ni -1 2 S { 3 ^y(modrw‘-l); ' a—Q I /=o(mod n.-) J j . ' - ~ \ Щ-л. ^-1 2 ( 2 2в(а)(о<а. a^Q L/=o(mod hy) j' a^o 34
Следствие. В — кодовое слово (п, А(тп))-кода тогда и толь- ко тогда, когда 2 B(a)(i) г* = О (mod А— 1) (3.1.2) а₽=о для всех i=l,..., т. Отметим, что в аддитивном случае условие N{ -1 2 B<a)(i)№0 (mod А—1) равносильно условию: все B(e)(i) равны нулю. В арифметиче- ском же случае равенство нулю всех B(o)(i) является достаточ- ным для справедливости сравнения (3.1.2), но не является необ- ходимым. Это обстоятельство не позволяет перенести методы до- казательств (в частности, определение минимального расстояния кода) с аддитивного на арифметический случай. Введем для произвольного Ве7,п_, множество MB={(lt, ... ..., bt^0}. Мощность |МВ| множества Мв равна ариф- метическому циклическому весу В, и задача отыскания мини- мального расстояния (п, А)-кода равносильна отысканию min|AfB| по всем ненулевым кодовым словам В. Лемма 3.1.2. Пусть В.— ненулевое кодовое слово /п-мерного итеративного (п, А(т))-кода веса меньше Nm и Мв — множество ненулевых символов циклического канонического представления слова В..Тогда для любого i (i=l, ..., tri) найдутся две точки х, у<=Мв, такие, что х=£у, но Xj=y} для /=#=i. Действительно, если для некоторого i утверждение леммы не выполняется, тогда для этого i и для любого а в выражении ^(0= 3 6/ /=o(mod имеется не более одного bt, отличного от нуля и, следовательно, В(о>(i)e{—(г— 1).....—1, 0, 1, ..., (г— 1)}. Поскольку В=/=0, то хотя бы для одного а Вм (i)=0 и сравнение (3.2.1) возможно лишь при условии, что все В(о) (i) равны одновременно г— 1 или — (г—1). Но тогда арифметический циклический вес слова В будет равен n!nt=N^Nm что противоречит' условию • леммы. Оценку сверху минимального расстояния (n, А(т))-кода дает сле- дующая лемма. Лемма 3.1.3. Минимальное расстояние r-йчного (и, А(т,ркода не превышаем2“. ' ' . П-1 Доказательство. Построим кодовое слово В =2hr1 веса не более 2”*. Пусть bt равны нулю для всех I, не являющихся вер- шинами единичного куба размерности т, т. е. &(=0, если 1&Кт, Кт= {l^Tm: 1}. Значения bt для 1^Кт зададим условием 2» 35
т b,= (—1)2 4 Вес слоза В меньше или равен 2т. Непосредствен- но проверяется, что ВЫ(Г)=О для всех I и a, 0^.a<Nt, и в силу следствия леммы 3.1.1 В — кодовое слово. Получим оценку снизу для минимального расстояния (га, А(т))-кода. Теорема 3.1.1. Пусть для любого i, i= 1, 2,-..., т в множестве М<=.Тт существуют различные точки х и у, такие, что х}=У) для „ j=£i. Тогда |А11 ^т+1. Доказательство. При т=2 непосредственно проверяем, что |Л4|>/п+1. Предположим, что для т условие |Л4| ~^т+1 выполняется. Покажем, что тогда для т+1 будет справедливо |Af| ^т+2. Для этого рассмотрим отображение (проекцию) (х{, ..., xm+t) -+(хь ..., хт). При этом отображении по крайней мере две точки, х, у, спроектируются в одну (а именно те точки, у которых различны только (гаг+1)-е координаты) и, значит, | л(Л4) ||Л4| — 1. Множество л(М) удовлетворяет усло- виям индукции и по предположению |л(Л4) | ^s/n+1. Таким об- р азом | М | > т+2, что и требовалось доказать. Следствие. Минимальное расстояние dn(A(m)) (га, A(m))- кода больше гаг. Действительно, пусть В — ненулевое слово (га, А(т))-кода минимального веса (меньшего Nm) и Мв—мно- жество ненулевых символов циклического канонического пред- ставления слова В. Множество Мв согласно лемме 3.1.2 удовле- творяет условиям теоремы 3.1.1, и поэтому |МВ| >zn. Учитывая, что арифметический циклический вес В равен |МВ|, в силу-ли- нейности (га, А<т))-кода имеем d„(A(m)) >/га. Число избыточных (проверочных) символов (га, А) - кода рав- но наименьшему целому числу, не меньшему, чем logrA. Пока- жем, что число избыточных символов арифметических итератив- ных кодов не более чем на два превосходит число проверочных символов соответствующих аддитивных итеративных кодов. Лемма 3.1.4. Генератор А(т) m-мерного итеративного г-ичного (га, А(т))-кода равен А(т) = П 1)<-1>т~11+1. (3.1.3» Из явного вида А(т' (3.1.3) с помощью несложных оценок по- лучается Теорема 3.1.2. Число избыточных символов и r-ичного (га, А(т>)-кода удовлетворяет неравенству ил^и^ил+2, где «а= П гаг- П (га,-1) = 1 + 2 (Л,_1)...(%_1)_ |Х</П число проверочных символов соответствующего аддитивного ите- ративного кода. 36
Следствие. При фиксированном т и Пг->°°, »=1, .... т скорость /n-мерного итеративного (п, Л<т))-кода стремится к 1, а расстояние кода остается не меньше, чем /п+1. 3.2. Мажоритарное декодирование арифметических итеративных (п, Д(т))-кодов Пусть В — слово /п-мерного итеративного r-ичного (п, Л<т))-кода, порожденного генератором Д(т) = НОК{^— 1}, Ni=n!ni и В= П-1 =^!blrt — циклическое каноническое представление слова В. /==0 Пусть В'=В + Е — полученное слово и Е — слово-ошибка. Обо- значим арифметический циклический вес Е через tw„(E) и пред- ставим Е в циклической канонической форме в кольце Zrn-i (Ви Е — элементы этого кольца): . Е = ap,rPi + ар,гр» + ... + apfPt, (3.2.1) где Pt, ..., pt — номера позиций ошибочных символов, a aPl, ..., ..., аР( — значения этих ошибочных символов и a>n(E) =t. По полученному слову В' определим т синдромов S«, i= 1,..., ..., т: St = В' (mod rN‘ — <1), S{ €= Z^. (3.2.2) Поскольку B'= в + E и В — кодовое слово, то S, = B(mod^—1) или, учитывая (3.2.1), S{ ss 2 ap/rp/mod Nt (mod — 1). (3.2.3) /=i Синдром S, назовем правильным, если представление (3.2.3) есть его циклическое каноническое представление в кольце , и неправильным в противном случае. Из (3.2.3) и определения циклического канонического пред- ставления следует, что для неправильности синдрома S< необхо- димо и достаточно существование ph и ph удовлетворяющих од- ному из следующих условий: Pk=Pi(modN{)-, pk = pi+l (modNt);, aPl<Z0, aPk =/= 0;. (3.2.4) Pk = pi-$- 1 (mod#/), aPk — 1 (modr), aP/#=0. Лемма 3.2.1. Пусть в слове В (п, Д(т>)-кода произошла ошиб- ка Е веса t Тогда среди синдромов St, S2, ..., Sm-t не более t— 1 неправильных. . 37
ч Доказательство. Предположим противное и синдромы Sf|, .. Sit неправильные. Построим граф, вершины которого отождествим с числами рь р2, .... р(. Для каждого из t непра- вильных синдромов ........... Sif существуют два числа из Мв= = {рь Рь •••> Pt}, которые удовлетворяют одному из условий (3.2.4). Соединим ребром соответствующие этим числам верши- ны графа. Так как число ребер не меньше числа вершин, то в графе существует простой цикл: i, {i-i {i , pt,-+ Pi, —*• Pir*pt,, Kt, (3.2.5) ptj = Pil+1 + b/(modNtf), Sz = 0, ± 1; Так как m^{it......ij, то справедлива следующая цепочка срав- нений: z-i i - Pi, = Pi, + si = • • • = Pit+ 2 6/ — Pit + 2 (modПт^‘ <3-2-6) l=i i=i i Из (3.2.6) следует, что 2 6/ = 0 (modom), и в силу имеем 2 fy “ 0 или 2 = — /=1 ;=1 Тёперь выпишем цепочку сравнений по модулю п(, аналогич- ную (3.2.6): /—1 Pi, = Pi, + \ =5 ... s ptl + 6/ (mod nz). f=i Отсюда следует, что p.-^pi.+SJmodn,) и, учитывая, что p,z = sapi.+d^modM), имеем . -Pit-Pt,-}-^- (3.2.7) Таким.образом, числа piz и р{„ удовлетворяют одному из условий (3.2.4) и (3.2.7), а это противоречит (3.2.1). Следствие. Если t=w„(E)<m, то mpx . 6>jvz(Sz) == t . . . <=ri ...,m ,s t . ‘ Лемма 3.2.2. Пусть в слове В (п, Д(,л))-кода произошла ошиб- ка Е веса т. Тогда max wnu (Su) tn—1, и.= 1,2,,.., . Доказательство. Предположим противное. Пустьw^(Su)< т — 2 для U = Г, 2, ..., | у J ? Построим тот же граф, что и в лемме 3.2.1. Так как wjvu(Su)^m — 2, то для каждого и суще- 38
1 ствуют две пары вершин х, у и х',' у', соединенных' между1 собой ребром, т. е. х — у=б (mod Nu), х' — y'=t>' (mod Nu); б, 6'=0J. i 1. Следовательно, число оебер не’меньше числа вершин, и в^графе существует простой цикл. Далее, повторяя дослоййо доказатель- ство леммы 3.2.1, получим противоречие. Теперь мы можем сформулировать алгоритм мажоритарного декодирования /n-мерных итеративных (и, Д(т))-кодов (алго- ритм I). 1. По полученному слову В' вычисляем синдромы S;,-- j= = 1,... /пи находим их циклическое каноническое представление ^.-1 S/= 2 Ni= ”/п/> / = 1 > (3.2.8) fc=o * _ 2. Полагаем E^2firl,ft= {t&odJvr ’ <3-2-9) . '=1..т / ; „, I и В=В'—Е. Теорема 3.2.1. Мажоритарный алгоритм декодирования т- мерных итеративных (п, Д(т))-кодов исправляет все арифмети- ческие ошибки веса f<zn/4. Доказательство. Пусть арифметический циклический вес слова-ошибки Е равен t\ Из леммы 3.2.1 тогда следует, что не менее т — t синдромов правильные. Заметим, что если Е — t ' ' = 2J aPkrPk -циклическое каноническое представление слова- fe=l „ 1 ошибки Е, то в правильном синдроме S,- значение (/)_(0, если I фpk (modN/) для всех k = 1, : i., t C{ ~ \aPk> если i — Pk (mod Nj). > Для любого 1=Рь (k=\, ..., t) значение at не равно нулю, и так как доля правильных синдромов' больше половины, то at=fi. Если же и;=0, то даже среди правильных синдромов S} могут быть такие, у которых.с^”°<1 Nj О.Это может произойти при /= =pfc(ihod-Wj) для некоторого k=\, . .., t. Заметим, что одна ошибка может иёказйть таким образом не более одного правиль- ного синдрома. Иначе из U=ph(raodN}) и Z=p*(modM) следует l=ph, что противоречит предположению а(=0. Поэтому не более t правильных синдромов дают неправильное значение fh а осталь- ные m-i—t—t>m!2 правильных синдромов-дают fi—0.1 Тем са- мым из формулы (3.2.9) и в этом случае определяется истинной значение at. Немного усложнив мажоритарный алгоритм декодирования, мы можем исправлять вдвое большее число ошибок. 39
Модификация мажоритарного алгоритма декодирования {ал- горитм /'). 1. По полученному слову В' вычисляем синдромы Ss, j=\, ... ... , nt и находим их циклическое каноническое представление Nj-l S|- 2 £=0 2. Полагаем Л=0 ci = maj {c^od n>} , если пт« wN, {Si) < /-i.... Л / ‘ /о \ о' о ZmodJV» (3.2.10) <maxa>jv/(S/),S/eS/—czr . 0 в противном случае. Теорема 3.2.2. Алгоритм I' исправляет все арифметические ошибки веса (т+1)/2. Доказательство. Пусть т>3 (справедливость теоремы при т^З проверяется непосредственно). Тогда если а(=#=0, то алгоритм I', так же как алгоритм I, принимает правильное реше- ние. Если же a.i=0, а сгУ=0, то вычитание с,г‘ из Е приводит по крайней мере к неуменыпению веса Е, т. е. числа ошибок. При этом t+Km и в силу следствия леммы 3.2.1 максимальный вес новых синдромов 5/ будет не меньше t, т. е. тях te»jv.(S;-) > >Й1ах WN.{Si), и применение формулы (3.2.10) дает истинное значение а( = 0, что и завершает доказательство. 3.3. Поэтапный алгоритм декодирования арифметических итеративных (n,A(m) )-кодов Мажоритарный алгоритм был алгоритмом декодирования в «целом». Поэтапный алгоритм осуществляет декодирование за t шагов. На каждом шаге по виду синдромов находится одна из ошибок, вычитается ее значение из принятого слова, затем вы- числяются новые синдромы, снова по их виду находится одна из ошибок и т. д. вплоть до исправления всех ошибок. Перейдем к формальным* определениям. Пусть аь ..., at — некоторая совокупность элементов кольца Z, вычетов целых чи- сел по модулю q, причем среди них могут быть совпадающие. Как и ранее будем обозначать одними и теми же буквами эле- мент (класс вычетов) кольца Z, и наименьшее неотрицательное 40
число этого класса. Элемент aia множества называется крайним, если (а(„— а{) mod <7^3 для всех i^=i0. Лемма 3.3.1. Пусть а а/4—циклическоеканоническоепред- /=1 ставление элемента п = г<?—1 и % — крайний элемент совокупности 01,..., оЮп. Тогда коэффициенты t»n(e) любого минимального представления а’ = р<гЬ/ можно перону- &=1 меровать так, что bi==ai—g,(mod?), где ?i=0, 1 и |z0 = 0. Лемма 3.3.2. Пусть элемент — крайний в совокупности эле- ментов а,, ..., а' кольца Zq и все a't, i=1, 2, ..., I различны. Пусть также а=2 a/G= {— (/"—1), . • •, — 1,1,..., (г— 1)} — такой i элемент кольца ^rqs_v что a<=a/— ^(modfl1), где ^«=0, 1 и *k=0- г Тогда среди коэффициентов blt..., 6ц>„(в) циклического кано- &п(а) нического представления-а = ₽/А существует ровно один коэф- фициент bh такой, что Ьк=а'^а^ (mod q). Доказательство лемм 3.3.1 и 3.3.2 получается непосредственно из алгоритма приведения произвольного представления к цикличе- скому каноническому представлению (см. 2.1). Лемма 3.3.3. Пусть 3,- — синдром максимального веса и гч (0 * 3/ = 2 Р/V/ , t<m— его циклическое каноническое представ- i—i ление. Тогда найдется k, k=£i такое, что Ь^,у, &а(,), ..., &,(<) по- парно несравнимы по модулю nfntnk. Доказательство. Предположим ^противное, т. е. что для любого k,k=/=i найдутся b^k и bp}k, сравнимые по модулю п/гцпк. Товда, сопоставив числу Сточку (бр^л,,... . • b/mod^p6^dni+1, .... modПт), получим множество, кото- рое й силу теоремы 3.1.1 имеет мощность не менее т, что проти- воречит условию t<m. Лемма 3.3.4. В условиях леммы 3.3.3 среди элементов *’ = = fe/i)modп/п(пк, j=l,... ,t существует крайний. Доказатель ст в о. Так как все элементы &/’• /= 1,..., t, различны, то крайний элемент существует, если n/n1nft^2^+l. Это условие выполняется при /п^4 и при m=3, П1>5. Теперь мы можем сформулировать поэтапный алгоритм де- кодирования /n-мерных итеративных (п, Л(т)) -кодов (алго- ритм II).. 41
- Л. Вычисляем, для .полученного, слова В/ синдромы > Su;. и= = 1, т. Полагаем Е=0._ . ... 2. Если все Su=0, то считаем, что., произошла ошибка Е, а В = В'—Е—истинное кодовое слово. Прекращаем декодирова- ние. ' ..............' • . ' 3. Приводим все синдромы к циклическому каноническому представлению P/’V6/ идопределяем арифметический цйк- . • Л дический.,вес wWtl(Su)'каждого синдрома. , . . г . 4. Выбираем любой синдром S,- максимального веса t. 5. НахоДим k, k^i 'такое, что все-элементы 6/* /=!,'2,’ .. , .t различны. . ... I . . . Среди элементов bfty находим крайний элемент b^k\ а по Кему .................... ' ’ ' ’ * ' • ‘ 1 * ‘ * ~ ' (fc)\ 7. Среди элементов б)*’(S* == 2) находим такой6^, что (mod n/^itik). ' 8. Решаем систему сравнений: ' ' -ф z=.b$ (mod п/п?)^ ' >' . • . ' 1 z = b^(modni). . 9.’Полагаем e = P/‘V2<^= mod Nu. Определяем .ариф- метический циклический вес w^u (Sfi каждого вновь полученного синдрома $в., Есди , max. w^u(S'u)<Z max Wnu(Su), to переходим u=l....................m ' u=i,...,m К Ц. 11., .... ?m0od П°ЛаГ&еМ 6 = ФА “ Г Sgn Pa> rZ> S“= Su — (fl/?—'- Sgn P^’)X x rzmodW»( Определяем арифметический цикличес- кий вес. WnuISu) каждого вновь полученного синдрома ,SU. Если .rfiafc wN (SB)> max -Wm (Su), то переходим к п. 12. u=i,...,m " u=l,...,/n • 11. Полагаем E: =E+e, Su : =SU' и переходим к п. 2. 12. Прекращаем декодирование и полагаем, что произошла ошибка кратности, не меньшей т. Теорема 3.3.1. Поэтапный алгоритм декодирования т-мер- ных итеративных (га, Л(т>)-кодов исправляет все арифметиче- ские ошибки веса меньше т.. Доказательство. Пусть В' =В-}-Е — полученное слово и Е = aPk,3’k — циклическое каноническое представление слова- ошибки Е веса Вэзьмем какой-либо из синдрэмов Si максимального веса, рассмотрим его циклическое каноническое пред- 42
1 ставление и найдем по алгоритму II k, b%k\ йд’, и z. В соответствии с леммой 3.3.1 перенумеруем позиции ошибок так, чтобы p} = b(i} — ^(modty), — О, I и ^/о = 0. Тогда pit = ^^(fnodA^). Заметим, что все элементы Ь^, различны и крайний. Пусть Sft = 2 ар/Р'mod Nk, где pj == йр —g/(mod л/л*л*). По лем- ме 3.3.2 среди коэффициентов Ь^\ ..., bWNk(sk) существует ровно один, сравнимый с pia по модулю n/ntnk. Этот коэффициент есть Ь1р . А это в совокупности с Pi,,=b{^ (mod АД) означает, что си- стема - t z — (mod Ni), z = b(? (mod Nk), равносильная системе п. 8 алгоритма II, имеет единственное ре- шение (в силу китайской теоремы об остатках), равное. рА. Пос- ле того как найдена позиция ошибки, ее значение ард, равное Рд или —rsgnfJ;^, выбирается из следующих соображе- ний. При вычитании из полученного слова В' правильного зна- чения ошибки согласно следствию леммы 3.2.1 максимальный вес синдромов Su' (и=1, ..., т) будет меньше максимального веса, синдромов Su йа единицу. При. вычитании неправильного значения вес слова-ошибки либо не изменится, либо увеличился на единицу. Максимальный вес синдромов S„' будет не меньше максимального веса синдромов Su. При wn(E)<.m—1.это-сле- дует из следствия леммы 3.2.1, а при wn(E)=m—1—либо из следствия леммы 3.2.1, либо из леммы 3.2.2. Следствие. Арифметическое циклическое, расстояние т- мерного итеративного (л, А<т)) -кода больше 2т—2. * 3.4. Арифметические (л, А)-коды, двойственные итеративным -г Г| Пусть задан m-мерный итеративный r-ичный (л, А^т)) -код, порожденный генератором A(rt) = НОК {г^— 1}, Ni=nlni, п— 1=1.................................т = п1 ...Пт, (п{, п}) = 1, i=£j- i, j=l, .... т; п1<Пг< ... < Обозначим А(т)= (г”->-1)М<,в), тогда (л,А(т))-код называет- ся двойственным (см. 2.1) итеративному (л, А(т>)-коду. Прежде чем рассматривать (л, А(т))-коды для произвольно- го т, исследуем случаи т= 1 и 2. При лг=|1 (л, А(т))-код вырождается в (л, А(1))-код с гене- ратором А(1)=(гп—1)/(гП|—1), являющийся N,=л/лг кратным повторением тривиального (ль 1)-кода. Минимальное расстоя- ние (л, А(|))-кода d„(A(1))=M. 43
Теорема 3.4.1. Минимальное расстояние r-ичного (га, А(2))- кода, порожденного генератором, /1(2) — ' > yw.-r.ij НОК(Л-1)(г"*- 1Г где (гаь Пг) — 1, п2^2п!—1, п=П1П2, равно nt. Доказательство. Пусть B=ZA(2)—ненулевое кодовое слово (га, А(2))-кода такое, что 1=0 (mod гп'—1)". Тогда слово В принадлежит (га,А(1))-подкоду (га,А(2))-кода,'порожденному ге- нератором А(1)=(гп—1)/(г"«—1). Действительно, l=k(rn'—1), —1 и B=/A(2)=fe(r”'—1)А(2)=й1А(1), ki=k(r—1). Ми- нимальное расстояние (га, А(1))-подкода равно rat, так что wn(B)>rat. Пусть теперь U=mA(2)— ненулевое слово (га, А(2))-кода та- кое, что ифО (modr"1—1). Тогда слово' U(r”!—1) есть ненуле- вое кодовое слово (га, A(t/)-KOfla, порожденного генератором А(|),=А(2) (г"2—1)/(г—1) = (гп—1)/(гП|—1). МинимальнЬе рас- стояние (га, А(1/)-кода равно га2, так что a>n(U(r”2—1))^га2. С другой стороны, (U (г«« - 1)) < wn (U г”1) -J- wn (- U) = 2wn (U). (3.4.2) Поэтому ffi/„(.U) ^га2/2. Учитывая условие 2га1<га2, получаем, что минимальное расстояние (га, А(2))-кода равно га,. Для произвольного натурального гаг справедлива следующая Теорема 3.4.2. Минимальное расстояние r-ичного (га, А(т))- кода, порожденного генератором гп_1 Ат)=----------> (3-4.3) НОК {г *=1} 1=1,...,т Где Nt=nlne, п=п1пг ... пт, (nt, пд) = 1; i=/=j, i, j=l, ..., гаг; nt 2t"1 (гах — 1)-|- 1, равно га,. Арифметические циклические (га, А(т))-коды, описанные в теореме 3.4.2, допускают мажоритарное декодирование в гаг шагов, полностью реализующее минимальное расстояние кода. Это декодирование сводится к мажоритарному декодированию гаг (различных) (га, А)-кодов с повторением, точнее, (га, А)-ко- дов с генераторами вида А=(г"—1)/(Л—1), n=nlNi, являю- щимися Пгкратным повторением тривиального (Nt, 1)-кода. По- этому рассмотрим сначала алгоритм декодирования (га, Аа>)- кода с генератором Ац) = (гп—1)/(г^—1), n=n{Ni. Минималь- ное расстояние (га, А$) -кода равно га{. Слово В= /А(1)(га,,А(1))-кода представим в виде (Afy ’~1 \ \ *‘1 / п1 \ 2 S r,Ni s 2 М S ’ (3-4-4) и₽=о / \ / ц,=о \ /—о < / 44
N{ -1 где / — V*1. 0</ц<r; 1. Jl^O Предположим, что B'=B+E— принятое слово и Е —слово- ошибка веса о/„(Е)= /^[(п,—1)/2]. Во-первых, заметим, что а>„(В')^[(п<—1)/2], если и только если B—Q. Далее, посколь- Nt-1 ку t<rw>—1, то в представлении /= 2 имеется |А=0 хотя бы один коэффициент такой, что /ц-<г—1. Вследствие этого любая одиночная ошибка может исказить самое большее один из гц коэффициентов при r**+w«, /=0, 1....nt—1 в пред- ставлении (3.4.4) слова» В. По предположению wn(E)=ts^ ^[(п;-1)/2], и, следовательно, каждый из коэффициентов р,=0, 1, ..., N{—1 в (3.4.4) может быть определен мажори- тарным голосованием значений коэффициентов » /=0, 1, ..., п{—1 в г-ичном представлении B'=b'n-lrn-i + b'n-2rn-i+ ... +bl'r+bt', Q^bt'<r, i=0, 1,... Теперь мы можем сформулировать алгоритм мажорртарного декодирования (и, Д$)-кодов (алгоритм!). 1. Находим арифметический циклический вес wn(B') приня- того слова В' == b'n-ir1*'1 + Ьп~2гп~2 Ц- ... 4- &о> i=0, 1, .... п— 1. 2. Если wn(B,)<:[(n<—1)/2], то полагаем В=0 и прекращаем декодирование. '3. Если wn(B') > [(п,—1)/2], то полагаем by. = maj {bi+jN,}, /=0,1.....Л^—1 Л-1 В = 2 bkrk, bk = by. для р = k mod Nt- kc=O Перейдем теперь к рассмотрению алгоритма декодирования (п, Д(то))-кодов. Пусть задан (и, Л(от)) -код с генератором Ат) = (гп - 1)/ НОК {Л* - !}, Ni - п/т, £=1,2..............т п = . П/п, (гц,п}) = Г, i^r, n/>2f“I(n1 — 1)4-1. Минимальное расстояние (и, Д(т))-кода, согласно теоре- ме 3.4.2 равно nt. Предположим, что В'= В 4-Е — принятое слово, В — слово (и»4(т))-кода и Е — слово-ошибка веса а»„(Е) = Щь—1)/2]. Умножим обе части В' = В 4- Е на (rNi — 1) (rNt — 1) — (/-wm-i—i) 45
и обозначим Вт = В' JJ (rNl— 1), Вт = В JJ (rW/— 1) и Ет = Ех Л=1 £=1 m-1 ХП (rNt~ty- Слово Вт можно рассматривать как кодовое слово <5=1 (п, Ло^-кода с генератором Л($ = (гп — l)](rNm — 1). Действи- телыю, если B = ZA<m), то Вт =ВП (rNt—1) = Z--------------х f=i НОК {г f-1} £=l,...,m т-1 „ т X П (г^_ 1)«Zd-f-1 , где d = П (г**- 1)/НОК И4 -1}. fc=! A-l Й=1 ‘=1..тС Далее по предположению wn(E) = Z^[(n1—1)/2]. Тогда ид, (Е„)= т-1 = дап(Е) И(^- 1)) <2^ [(«!- 1)/2]< [(/^- 1)/2]. fc=l , • Теперь заметим, что минимальное расстояние (и,Л J”*)-кода равно пт, и, следовательно, слово Вт' может быть мажоритарно декодировано с помощью алгоритма I для (п, Л |^)-кода. В результате декодирования слова Вт' найдем Вга и Е„= = Вт'—Вт. Слово-ошибку Ет представим в виде Ет=Ет^(г^-1)-, ’ (3.4.5) т-2 ’ где £m-i= Е — О- Поскольку Ет иЕтч—элементы кольца <=1 то (3-4.5) равносильно Eml{rNm~x —1) = Ет-1 (niod (гл — 1 )l(rNm~1 — 1)) Гили Em/(rNm-i _ 1) = I+ Ет-и Л&Г’ = • (3-4.6) г”1”-1-! Легко видеть, что а»п(Ет-1)^[(Пт-1—0/2], и Em-t можно опре- делить из (3.4.6) с помощью мажоритарного алгоритма I для («» Л(1)-1))-кода с минимальным расстоянием Аналогично т-з по £т-1 найдем £m_2=£ jj (rN/— 1), затем £т_3 и т. д. вплоть £=1 (на т-ъи. шаге) до Е:- . Таким образом, мажоритарный алгоритм декодирования (п, Л(т>)-кода (алгоритм П) состоит в следующем. 1. Находим арифметический циклический вес а>п(В*) приня- того слова В'=В+Е. 2. Если wn(B')^[(n!—1)/2], то полагаем В=0 и прекра- щаем декодирование. 46
3. Если а)п(В')>[(П1—1)/2], то вычисляем Вт'= /П-1 • \.д,..'. . . . ,г\/ ’* •, ' . .л. > > j *» • -> > •. j - •• • * *’ • ь : ""4.'гЙ9)'слову< Вт. с .помощью. алгоритмаД.для (п4 АоуДкодр с —1),определяем !Слово-ошибку;Ёт. . • 5.' Находим . Em-i — Ея^(^’я’-1— 1), и по слову =.B„i^-f-. 4- EmLV с; помощью алгоритма I Для' (n, Ац^-код^ "с; ;ДЙГд) = = (rn— l)/(rWm“1— 1) определяем слово-ошибкуВт-г , . щ+З. Находим •>В/а₽вЕ1/(г?’—1), и по ,олову Д'«='В4Ч?Еи Е^'Е с помощью алгоритма .1 для (п, Д/^Д-кода .с . At(1)^= = (гя—i)/(rN'—\) определяем слово-ошибку Е. т+4'. Полагаем В=В'-Ёи прекращаем декодирование. Теорема 3.4.3. Алгоритм II исправляет все арифметические ошибки веса ^[(п,—1)/2], произошедшие в слове (n,A(m))- кода. Арифметические циклические (п, Д(от)) -коды, порождаемые генераторами Д(т)=(гя—1)/ НОК {гп«—1} и являющиеся под- < - кодами (п, А(та))-кодов, имеют большее, чем (n, А(т)) -коды, ми- нимальное расстояние и также допускают мажоритарное деко- дирование в т шагов. Теорема 3.4.4. Пусть 2— целое,' (пй пД = 1, n=hlhi '.\ . ... пт; i, j=l, ..., т\ 2i_lnj^n1. Тогда минимальное расстояние арифметического г-ичного (n, А (т)) -кода, порожденного генератором:' ; . г"—,1 ......... А(т) = ----:--------1-‘- , ' - НОК (гП{-1) ’ : rfn(A(m>) =?n/ni. Минимальное расстояние реализуется алгорит- мом мажоритарного декодирования в т шагов; • : - Доказательство справедливости минимального расстояния (п, Д(то))-кода аналогично доказательству теоремы 3.4.2. Алго- ритм декодирования практически совпадает с алгоритмом II. Разложим многочлен xn—1 на произведение круговых много- членов хп—1=И QW'fx);,.Назовем Q(n’.(r)' примитивным кру- . d|n .... л . говым множителем rn—1. [w s. Теорема 3.4.5. Пусть п — Ц pt , р{ — простое, р^ ^.2i_1(pi—4)+1 для i>L Тогда r-ичный (п, А^)-код, порож- денный генератором А^)='ф(я)(г), имеет минимальное расстоя- ние dn(A(m))=p1, реализуемое мажоритарным алгоритмом де- кодирования в т шагов. При s,= l и ni=pi, i=l, (n,A(m)) и (n,A(m))-коды совпадают, s 47
ЗАМЕЧАНИЯ В 3.1—3.3 использованы результаты работы [24] и частично [57]. М. А. Кармазин [58] первым предложил и исследовал арифметические двоич- ные двумерные итеративные коды, исправляющие двухкратные независимые ошибки. Его результат для двоичных кодов с был обобщен В. Н. Кон- дратьевым и Н. Н. Трофимовым [63]. Гото и Фукумура [127] распространили результаты [63] на случай произвольного основания. В [24] были предложе- ны и исследованы двоичные m-мерные итеративные (п, А) -коды. В [57] ре- зультаты [24] были обобщены на случай r-ичных (п> А) -кодов. 3.4. можйо рассматривать как обобщение и развитие статьи Чженя, Цзя- ня и Лю [107], касающейся двоичных двумерных (л, А)-кодов, двойственных итеративным, и алгоритма их декодирования. Другое обобщение результатов [107] было сделано Хуаном и Хартманном [133], но оно лежит в стороне от нашего рассмотрения. Глава 4 АРИФМЕТИЧЕСКИЕ МНОГООСТАТОЧНЫЕ КОДЫ И КОДЫ В СИСТЕМЕ ОСТАТОЧНЫХ КЛАССОВ 4.1. Арифметические коды в системе остаточных классов Числовые системы остаточных классов. В предыдущих гла- вах целые числа мы представляли в позиционной системе по ос- нованию г (r> 1 — целое). В некоторых приложениях целые числа представляют в системе классов вычетов (системе оста- точных классов — сокращенно СОК) по попарно простым мо- дулям. Арифметические операции, такие, как сложение, вычитание и умножение, в СОК выполняются независимо для каждого мо- дуля и поэтому быстрее, чем в позиционной арифметике. Труд- ности в СОК возникают при делении и определении величины числа. Последнее существенно ограничивает сферу применения СОК специализированными вычислительными устройствами. Числовая система классов вычетов определяется следую- щим образом. Основаниями системы служат попарно простые числа р1( р2, ..., р*. Любое целое £/.^0 представляется в СОК последовательностью {[/}=(ць и2, ..., и*), где «<=[/modp1, 1=1, 2, ..., k. Числа «<(1=1, ..., k) представляются в пози- ционной системе по основанию г{. Обычно г<=г для всех 1=1, 2....k. k Лемма 4.1.1. Любое целое U, 0^U<Zp= И ^взаимно од- <=i 48 .
1 позначно отображается в последовательность {(/} = (и1, ы2, ... . ..., и»), щ=и mod pt, (plt р}) = 1, i=£j, i, 2, ...» k. Доказательство. Количество целых чисел в интервале [О, р) равно числу соответствующих им последовательностей. Предположим, что найдутся два целых неотрицательных числа {/<*> и Um, меньших р, которые отображаются в одну и ту же последовательность (ult иг, ..., «*). Тогда разность Uli)—Um отображается в (0, 0, ..., 0), т. е. Uw—Uw делится на.р, и поскольку | Uw—Um | <р, то (J(1)=Um. Таким образом, для любого целого U, Q^U<Zp существует единственное представление — и2...........ик), Ui=Umodpj k в» системе классов вычетов р1( р2, ..., рк, где р=П Р< и (pt, fc=l Pi) = b ...» k. По позиционному представлению числа U его представление в СОК находится просто:’ U-*-{U} = (ult иг.......«*), ц1= =(/ mod ре, i= 1,2, ..., k. Обратное преобразование определяется китайской теоремой об остатках [4, 61]. Теорема 4.1.1. Пусть Р3=р/р( и dt — решение сравнения Р(х=ы((тоДpj, O^dtCpi. Тогда последовательности {U} — = («„ иг.....ы») соответствует число (й \ mod р. (4.1.1) Доказательство. Найдем для*числа U (4.1.1) его пред- ставление в системе классов вычетов. Имеем (( k \ . \ U mod pt = mod PI mod pi. ' (4.1.2) \v=i / J Учитывая, что при j=^=i P^ssO (modp«) и Ptdt^Ui (modp<) из 4.1.2 получаем U mod pt=u(. Таким образом, числу U, 0^Й,<Р соответствует в СОК последовательность {£7} = (ц1( ы2, ик), и это соответствие в силу леммы 4.1.1 взаимно однозначно. Что и требовалось доказать. Определим арифметические операции в СОК. Рассмотрим кольцо Z, целых чисел по модулю р. Каждый класс U вычетов кольца Z, будем отождествлять с наименьшим неотрицатель- ным вычетом U, принадлежащим этому классу. Класс вычетов U будем называть положительным, если 0<С7<р/2—1, и отри- цательным*— в противном случае. Пусть («ь ц2, ..., ик) и (»i, о2, ..., о*) — представление в СОК чисел U и V (и классов вычетов U и V) соответственно. Тогда по определению (ul9 и29 uk) + (v<9 v29 ..., vh)=lzi9 z2, zk)9 (4.1.3) 49
где zf—(и{+mod pt; i^=J, 2, k. Легко видеть', что ’ U+V=Z." r ’ . ’ " / .. . (4.1.4) , Сдожениев (4/14) лроизводится в кольце Zp. Если: 17+ И=0 (V — противоположное, О число); то в силу (4.L3) ' и '(4.1.4) Vi=pt—uf. Вычитание.'.Ц—V выполняется в СОК^как сложение Um¥(F—противоположное V число). . i )п . Произведение • ' , - / . (ult U2, . . ., Uk)V2, . . , Vi,) — (zff z2, ..&)? - ’Д.1.5) где z,= («iV^mod pi, 1=1, .... k. Легко видеть, что ” . UV=Z. •••'• (4 j ,6) ' Операцию деления определим лишь для делителей взаим- но простых с р. Последовательность (z,, z2, ..., гк),-,определяе- мая (4.1.7) ; _ ,'(«i,. ..Uk)*(zlt z2, У..;-, zk) = (vi, v2, vk), (4'1.7) есть частнре от деления последовательности (pt, v2, на (иь и2, ..., ик)'. Соотношение (4.1.7) разрешимо, если (и^р,)=, = 1,для всех 1=1, k, т. е. если (U, р) = 1., .Легко .ридёть, что в этрм случае . UZ=V. ' • (4.1.8) Обнаружение и исправление ошибок в системе классов вы- четов. Введем наряду с системой попарно простых осйований k 9 {Pi, р2, •.., рк}, р=* П Pi расширенную систему попарно про- 1-1 стых оснований (РСОК) {pi, р2, .... рк, Рь+t, • • •, Рл+J, л+г , - , Р=П Р» k+r=n. Будем предполагать, что ’ ’ Р1<р2< ... <рк<рк+1< ... <рк+т. , (4.1.9) Пусть {£/} = («ь .... ип)—представление числа U, в РСОК. Назовем весом {С/} число его ненулевых символов (остатков) и обозначим вес а; ({17}). Заметим, что символ и{, i=l, ..., п последовательности {U} = (ut, .... и;,....,, и„.) принадлежит алфавиту Q,=ZP и для i^j Расстояние между!{(7} и {V} определяется как вес их разности w({U—V}). Введенное расстояние, называемое остаточным, будет метрикой. Любое число L кольца Zp единственным образом представи- мо в РСОК с основаниями {ръ ..., рк, рк+1, ..., р„}. Но-для восстановления числа L по {L} = (/ 1, /г, . . • , Ihi Ik+if • - In) Не обязательно знать значения всех остатков lh f=l, 2, ...» n, а достаточно значений любых (учитывая условие (4.1.9)) k остат- ков. 50
Таким образом, представления чисел LeZ, в РСОК имеют г избыточных остатков, которые можно использовать для об- наружения и исправления ошибок. Линейный код Z в РСОК строится следующим образом. По числу C/eZp определяются информационное слово (иь и2....uk) —представление U в СОК {р4, Рг, .... р*} и кодо- вое слово {C7}=(ut, и2, ..., uh, uh+l, ..., un) —представление и в РСОК {pi, Рг....р», р*+ь .... Рп}. Код Z — совокупность всех слов {(/}, 0^U<Zp — систематический, первые k символов (остатков) кода Z — информационные, последние г — провероч- ные. Символы ut (ui= U mod р.), i=l, ..., п кода Z представля- ются в позиционной системе по основанию г. Арифметические операции над ut выполняются в кольце ZP{. Код Z называется арифметическим кодом в остаточных классах. Предположим, что мы используем код Z при обработке или хранении информации. Принятое слово вследствие помех может отличаться от исходного кодового слова. Будем предполагать, что символы (остатки) кода Z могут искажаться либо арифме- тическими ошибками, либо стираниями. Одиночной ошибкой в слове кода Z будем называть произвольное, искажение (за ис- ключением стирания) одного из символов слова кода Z. Соот- ветственно t — кратная ошибка — определяется как произволь- ные искажения t символов кодового слова кода Z. Для того чтобы код Z исправлял t или меньше ошибок необходимо и до- статочно, чтобы минимальное расстояние кода D^2t+1. Код Z с минимальным расстоянием D. обнаруживает (исправляет) лю- бые D—1 или менее ошибок (стираний). Теорема 4.1.2. Арифметический код Z в остаточных классах обнаруживает все одиночные ошибки, если r^sl. Доказательство. Пусть было передано кодовое слово (иъ ..., Uj, ..., u„), принято слово (и/, ..., и/, ..., и„') и {е}=(0.....е}, 0) - слово-ошибка. По {U'} определим F = '£sPifl’i, (4.1.10) &=1 где d< есть решение сравнения Р&=и{'(mod pt), P{=p/pt= (п -\ modp~ i—i J WKp n,di=dt для всех tV=f, представим (4.1.10) ввиде F = U + Pld}, (4.1.11), где df*есть решение сравнения Р^х=е}(modр}). В (4.1.11) чис- ло Pjdi>p, ибо 0<_d'j<p} и согласно (4Л.9) Р^р. Но тогда 51
F>p. Имеем ^max P — 1 H----------~ P — 1 • Pn n Таким образом, p<ZF<^p и FrtioAp = F == 2 P{d{. Сравнивая U, £=1 0^U<p и 0<F<p, получаем признак обнаруживаемой.ошиб- ки: если принятому слову {О'} = («/, и2, ип') соответству- п ет число U'= P<d<'>p, то в слове {(/'} имели место ошибки. Теорема 4.1.3. Арифметический код Z в остаточных классах исправляет одиночные ошибки, если г^2. Доказательство. Пусть в слове {U} = (и1г и2, ..., uh+i, k ик+2) кода Z, соответствующем числу U, 0^U<p= Ч Pi про- i=i изошло две ошибки (случай обнаружения одной ошибки рас- смотрен в теореме 4.1.2) и было принято слово {(/'}=(«/, и2'.... Mfe+i, tik+t), {е} = {t/7}—{£/}== (0, 0, ..., ev, ..., е„, ... ..., 0) — слово-ошибка.’ Л+2 По {U'} найдем, F = 2 ?id'i = U + Pvdv "I" где dt' есть £==1 решение сравнения Ррс=и('(mod pt) и Pvdv s=ev(modpv), Рцйц =eu(mod рц). Так как 0<dv<Pv и 0<</и<р^, то F^p— ==PlPi • • • Р*- Максимальное значение р 1 . _ г шах Р — 1 i------------1---------— ^р(2+ 1~р^~р1»-Л _ 1 <2р— 1. \ Pk+lPk+Ъ / Покажем, что если <iC/Pv4-du/Pu<l> то ’F^.p—1. Действи- тельно, . Л / <£. d’\ FCp-l+p + = V Рц /„ « р I--1----+ — 1. (4.1.12) \ Pk+lPk+2 РуРц ! Так как dC/Pv + dJPvL < 1, то |"Ь ^|Л,Ру 1 1 РуР^ PyP\L Pk+^Pk+2 52
и из (4.1.12) следует Fmax<P—1. Теперь рассмотрим случай F^p. Найдем Fmodp=={/ + p (— + —-------1) . (4.Г.13) \ ₽v Р|Л / Поскольку cFIpv+dJp^i, то Г mod р+ рй+1рА+2р /PvP|x+ 1----I'j >р. \ Pv^u / Таким образом, если в принятом слове имели место одна или две ошибки, соответствующее {1У} число t/'=l Imod р> \z=i / >р—1 и, поскольку для любого кодового слова {£/} число U^ip—1, то эти ошибки будут обнаружены. Следовательно, ми- нимальное расстояние кода равно 3 и он исправляет одиноч- ные ошибки. 4.2. Декодирование арифметических кодов в остаточных классах Пусть задана расширенная система попарно простых осно- ваний {рь р2.......р», рА+1, .... рд+г) и pt<p2< ... <р»< k rt <Рл+г< ... pft+r. Обозначим n=k+r, p= ПрьР=ПРъ /==1 Pi=plpi- Определим арифметический код Z в остаточных классах как множество всех последовательностей {(/}=(«», «2, ...,ип), u,= U mod pt, i=l.....A; U^ZP, О^С7<р. Код Z — линейный, ибо сумма любых двух кодовых слов является кодовым словом. Теорема 4.2.1. Арифметический код в остаточных классах исправляет t или менее ошибок, если 2t^r. Доказательство. Пусть в слове {U} = (иь и2, ..., tin) кода Z произошло 2( ошибок и было принято слово {£/'} = = («/, иг', ..., мп'), {е} = {1Р}—-{(/}—слово-ошибка веса 2f. Найдем по {[/'} 2 Pijd'ij j mod р, (4.2.1) ?=i / где d’ij осп» решение сравнения Pt.x = etj (food ptj). ia< Обозначим C =p{lpt, ... p/2f, Cj = C/pt/, В = ^6^.. Тогда f-i ’ U' = U + mod p. (4.2.2) G 53
Число -^-modp делится на р/С/р/С'^р') ир< —ihodpCp. По- С с этому ;-^-mod р = р & , где В' = BmodC. Если R — р/р, то G С U' = p + ^- = p^ + С~)‘ (4.2.3) Очевидно, 1—B'/c^l/c^l/Rn, значит, ps^U'Cp. (4.2.4) Для любого кодового слова {£7} = (ut, u2, ..., ы„) соответству- ющее ему число 0^U<Zp. Неравенство (4.2.4) означает, что все ошибки веса 2t обнаруживаются кодом Z. Следовательно, мини- мальное расстояние кода D^2t+\ и код Z исправляет t или менее ошибок. Перейдем теперь к построению алгоритма декодирования ко- да Z. Пусть {U'} —принятое слово {U'} = {£/} + {е}, {£/}eZ и {е} слово-ошибка веса Слову-ошибке {e} = {U'}—{£7} со- ответствует число e = Ul — U = -^-^U'. (4.2.5) Для определения числа е=рВ'/С воспользуемся алгоритмом Евклида нахождения наибольшего общего делителя двух чи- сел и свойствами непрерывных дробей [32]. Для каждого слова ошибки {е} веса f(f^f) существует единственное число е=рВ'/С такое, что B'/C<Z1 и С есть про- изведение f оснований С=р1хр{г ... Р{f. Если мы найдем е=рВ'/С (или В'/С), то слово-ошибка {е} = (еь ..., ё(,..., е„), е(=е mod р{ и переданное слово {£7} = {£73—|{е}. Число В'/С будем искать как подходящую дробь для U'/p. Имеем. £/'=Wo + /'i» 0 </-!</?, Р = Г!Ч1+гг, 0<г2<г1) Г1=^2 + г3» 0<г3<г2, (4.2.6) Гs—2 — Гs-i^s-i + , 0 Гs Тs-i > rs-i = rsqs. Ряд равенств (4.2.6) составляет алгоритм Евклида нахождения наибольшего общего делителя г, чисел р и V. Можно (4.2.6) записать в виде 54
, 1 . 7 (4-2.7) ‘ 1 • ' ’.Дроби.' ао=^о, Oi==<7o+1/?ь ... называются подходящими дробями.:‘„Обозначим ,o.=P,/Q«.. Числители и знаменатели под- ходяодйк Дробей вычисляются по.фбрмулам .', . ; р.—q.P^+P.-г, p<,=.q<„ Р-1=1, ... . < .... ....... (4.2.8) (2«=<7«Q»-i4" Q,-2, Qo^ li Q-i=0. ............ т Используем следующее свойство подходящих дробей: ~ (t/'/p-asl^l/QsQs+^l/Qs. (4.2.9) Так как Ul=U+pB4C, то , । B'IC=(U'—U)lp. ’ (4.2.10) В (4.2.10) U' и р известны, U/p неизвестно. Из (4.2.10) следует | U'/P - ВЧС | =Vlp^(p-Р)1р<= 1/7?-1/р. ' (4.2.11) Если 1/7?—1/р<1/2С.2, (4.2.12) тогда согласно (4.2.9) ВЧС — подходящая дробь для U'/p и ВЧС может быть определена из (4.2.6) и (4.2.8). Легко видеть, 1 ЧТО Сшах [] рл+r-f Тогда 1=0 2/-1 2Стах > 2 JJ Pk+r-i = 27? и неравенство (4.2.12) при первой попытке определения ВЧС из (4.2.6) и (4.2.8) может не удовлетворяться. Приходится делать следующие попытки. Для этого U' последовательно шаг за ша- гом уменьшается таким образом, чтобы найти по крайней мере одно число U4p—k8, k= 1,2, ..., такое что |(£/'/р—^6)—В'/С|<1/2С2. (4.2.13) Так как U4p>B4C, то 6 задается таким образом, чтобы по крайне® мере одно из чисел Т/'/Р—попало в интервал (ВЧС — i/2Cautx‘—8, ВЧС -|- 1/2Стах 4~ в) (4.2 14) для любого е>0. Тогда, если б = 1/2Стах 8, 55
то для некоторого k число U'/p—kd попадает в интервал (4.2.14). Максимальное число шагов (попыток) равно наимень- шему k такому, что (*+1)б> 1/Я—1/р. (4.2.15) При использовании описанного алгоритма будет получена един- ственная истинная подходящая дробь. Испытание подходящей дроби осуществляется довольно просто. Пусть Gt=Pi/Qt— под- ходящая дробь, полученная на некотором шаге. Хотя В'/С не обязательно несократимая дробь, истинная подходящая дробь <зи=В'1С всегда несократима, ибо (Р„, Q„) = l. Поэтому, если ра{ не целое число, то a<=P</Q< заведомо не равна В'/С. Кроме того,-а,=/=^7С и в том случае, когда ра{ целое число, но не удов- летворяет U'—р + (4.2.16) Теперь мы - можем сформулировать, алгоритм декодирования кода Z. 1. По принятому слову {U'}=(ut, и.......... цп) определим с помощью формулы (4.1.1) число U'. 2. Вычислим U"= U'—р+1. 3. Вычислим б 1/2Стах—8.Положим k=Q. 4. Определим из p=qlU'+r2 числа qt и.г2. 5. Положим i=2. 6. Определим qt и г<+1 из r{-i=qirf+ri+l. 7. Вычислим Pi—qtPi-i+Pt-z Qt= qiQi-i + Qt-г- 8. Если pPi/Qi не целое, перейдем к 10. 9. Если pPi/Qt не удовлетворяет (4.2.16), перейдем к 10. Если pPJQi удовлетворяет (4.2.16), то pPJQi=B'IC — истин- ная ошибочная дробь. 10. Если Q«<Cmax, увеличим i на 1 и перейдем к 6. Если перейдем к 11. - 11. Увеличим k на 1. Если kb>\IR—1/р (или U'<ZU"), тог- да имеет место неисправимая ошибка. Если 66^ 1/Р—1/р, пе- рейдем к 12. 12. Положим U': = [U'—k8p] +1 и перейдем к 4. Пример. Пусть задана расширенная система оснований {2, 3, 5, 7, И, 13^ 17}, р=2-3-5=30, р=510510. Для числа £7=10 найдем кодовое слово {£/}=(0,1,0,3,10,10,10). Предположим, что в слове {!/} в пятом и шестом символах произошли ошибки такие, что 1Г'=У+р(3/7+6/11). Так как (3/7+6/11)-510510=497250, то U'—10+497250=497260, Воспользуемся (4.2.6) и (4.2.8). Имеем t/'= = <7ор+П, или 49726О=доХ51О51О+Г|, откуда <?о=О, п=497260. Далее 56
p=qiri+r2t или 510510=<7iX497260+r2, <71 = 1, r2= 13250; n = <72г2+гз, или 497260=^2 XI3250+r3, $2=37, r3=7010; P2=<72Pi+P0=37- 1+0=37, Q2=<72Qi+Qo=37* 1 + 1 =38. Убеждаемся, что pP2/Q2=510510 37/38 нецелое число. Поэтому продолжаем вычисления: Г2=^зГз + Г4, или 13250=<7зХ7010+г4, ?3=1, г4=6240; Р3=р3Р2+Р\ = 1*37+1= 38, Фз=<7зФ2+21 = 1 *38+1=39. Подходящая дробь Ps/Qs=38/30 тоже не есть искомое решение, ибо рРз/Фз= =49742Ъ>/7'. Поэтому продолжаем вычисления: или 7010= (/4X6240+г5, <74=1, г5=770, Р4=^р3+Р2= 138+37=75, Q4=^Q3+Q2=b39+38=77. Подходящая дробь P4/Q4=75/77 есть искомая ошибочная дробь В'/С, поскольку I 77 р I 2 • 77» 4.3. Арифметические многоостаточные коды Пусть информационные слова N образуют множество эле- ментов кольца Zm(m>l—целое).-Арифметическим многооста- точным (или, сокращенно, остаточным) кодом называется мно- жество С (т\ ти .... mi) слов вида N={N,Cl(N), ..., Cl(N)}, где yVeZm, Ci(N)^Zm{, Ct(N) =AT(modmt), i=l......../; mt, ... ..., mi — целые положительные числа. Число т будем называть информационным модулем, а числа mt.....mi — проверочными модулями. Каждое из чисел N и Ci(N), i=l, ?.., I представляется в позиционной системе по ос- нованиям г и г,- соответственно. Обычно г=г{, t=l, 2, ..., I. Определим операцию сложения кодовых слов арифметиче- ского многоостаточного кода так, чтобы информационные числа N складывались в кольце Zm, а проверочные числа Ci(N) —в кольцах Zm{. 57
Пусть все nii, i= 1, 2,......, / делят т. Тогда JVJ+jV2={^+A/2; CifNJ+cifNz), , citNJ+c^NJ}. Аналогичным образом можно определить и другие арифме- тические операции над словами арифметического многоостаточ- ного кода. . < ; , Заметим, что операции над информационными числами вы- полняются в основном сумматоре независимо от операции над проверочными числами (остатками), выполняемых 'в провероч- ных сумматорах. Найдем теперь условия, при которых многоостаточные коды позволяют исправлять (обнаруживать) ошибки! Для этого надо определить метрику в остаточных кодах. Мы рассмотрим две метрики. В первой расстояние между словами Nt и N2 остаточ- ного кода по определению равно = w(Nt-N2) + 2A(A/x-y2),- .. (4.3.1) i=l i где w(Nt—N2)—арифметический вес числа —N2, §i(Nl—N2) = = 1, если cJAZJ'^'cJA/z), и 6i(A/l—-N2) =0, если с<(ЛГ|) =c«(W8). Минимальное -расстояние остаточного кода определяется- как d=mind(A<) N}) по всем парам различных кодовых cnoB_Niy Nj. Можно ввести и другое расстояние между словами Ni и ДГ2, полагая . . . D (/Vi, N2) = wm (Nj, - N2) + J, wmi (ct (NJ - ci (ВД, (4.3.2) fc=i , • . . где wm(N) = min w (N + jm) и wm. (c{ (A/)) = min w (ct(N)+ /p=o, ctl . ±2,... /=0, ±1, ±2,.. + jmj—кольцевые веса в кольцах Zm и Zmiсоответственно. Это рас- стояние также будет метрикой.. В обеих метриках минимальное расстояние остаточного кода не больше Z+1, так как. слово 1 = {1, 1, ..., 1} принадлежит коду. Таким образом, арифметический /-остаточный код может исправлять не более J//2^Lошибок. _ Отметим, что D(Nlt N2)^d(Nit N2), и поэтому минимальное расстояние кода в метрике /)(•,•) не меньше минимального расстояния кода в метрике £?(•,•). Укажем на связь арифметических остаточных кодов с (n, А)- кодами. Пусть т=гп—1 и все mt(i=\......../) делят т. Поло- жим А=НОК {mJ. Тогда (п, А)-код с генератором А назовем ассоциированным с остаточным кодом С(т\ ти ..., mJ. Если ошибки произошли только в информационной части, то остаточ- ный код исправляет’или обнаруживает те же ошибки, что и ас- социированный с ним (п, А)-код [146]. 58
Рассмотрим остаточный код с информационным модулем jn=rn—1, п=п! ... tii и проверочными модулями mi = tfllni—1, (raf, rij) — 1; i, / = 1./; i=/=j. Ассоциированной с ним (га, А)- код имеем минимальное расстояние в силу следствия теоремы 3.3.1 не менее 21—1. Минимальные расстояния d и .©/-остаточ- ного кода не могут быть столь большими (при />2) в силу верхней границы ©^/+1. В рассматриваемом случае верхняя граница достигается как показывает Теорема 4.3.1. Минимальное расстояние d арифметического /-остаточного кода С(гаг; mh mt), т=гп—1, /га,-=г"/п;—1, n=ht ... гаъ (га{, «^'=1, i, j=l, 2, I равно /+1. Доказательство. Пусть N={N-, N(,y}—ко- довое слово, т. е. Nw = Ci(N), i=l, ...,/, и пусть для опреде- ленности #“’= ... =Л/(в)=0, aJV(,+v)=#0, v=l......._/—s. По- кажем,_что тогда u»m(Af):>s+l и, следовательно, te»(2V)^/+l, где w (N) = d (N, 0). Пусть N = 2 ор.гР/— циклическое каноническое представление i элемента N кольца Zm. Из N ==0 (тос1(г"/я<—1)), /== 1, ... , s следует (mod НОК {r" /n/—1}), где N'=Nmod(rn'— 1), fc=l,...S ri = «iftj... ns, t. e. N' —кодовое слово арифметического s-мер- ного итеративного (га', А')-кода с А' = НОК {rn'lni— I). Тогда ариф- £=l...,s метический циклический вес. wn>(N') ^2s—1. Учитывая N'— — N mod (rn'—1), получаем, что_ арифметический циклический вес wn(N) :>s4-il. Поэтому w(N) ^s+l+l—s=/+l. В то же время .кодовое слово А={1; 1, ..., 1} веса ai(A/)=/+l принад- лежит коду <7 (гаг; гагь ..., т,). Следовательно, минимальное рас- стояние d. (а вместе с ним и ©) арифметического /-остаточного кода С(гаг;.гагь .. ., гаг;) равно в точности 7+1. ЗАМЕЧАНИЯ 4.1. Числовые системы остаточных классов подробно описаны в книгах И. Я. Акушского и Д. И. Юдицкого [2], В. М. Амербаева [3], А. Ахо, Дж.Хопкрофта и Дж. Ульмана [4], Д. Кнута [61], В. А. Торгашева [82], Н. Сабо и Р. Танака [165]. Теоремы 4.1.2 и 4.1.3 взяты из статьи Мандель- баума [140]. 4.2. Теорема 4.2.1 и алгоритм декодирования принадлежат Мандельбау- му [142]. в 4.3 есть обобщение результатов [24] на случай произвольного основания. Метрика (4.3.1) предложена И. Г. Дадаевой [39]. Арифметические много остаточные коды были введены Ю# Г. Дадаевым и исследовались им в [40, 44], Рао [151], Рао и Гарсиа [154], Месси и Гарсиа [145] и в (24, 39]. - Вопросы применения арифметических кодов обсуждаются в работах Ави- жениса [1, 92], Ю. Г. Дадаева [44, 45]. 59
Глава 5 ЛИНЕЙНЫЕ КОДЫ, ИСПРАВЛЯЮЩИЕ НЕЗАВИСИМЫЕ ОШИБКИ 5.1. Определение и свойства линейных кодов Пусть а= (аь а2, ..., а») — информационное слово длины k с символами из конечного поля GF(q), vus. q — степень простого числа, (в дальнейшем, как правило, q=2 и иногда 2“ или р — простое). Поставим в соответствие слову а по некоторому пра- вилу слово Ъ=(Ь1, b...... Ьп) длины n(n>k) с символами из. того же алфавита GF(q). Такая операция называется кодиро- ванием. При кодировании множество ЭДа информационных слов отображается в множество ЭДЬ, называемое блоковым кодом. Естественный способ описания блокового кода — это кодовая таблица, содержащая (не обязательно упорядоченный) список всех информационных и соответствующих им кодовых слов. Однако практически трудно пользоваться кодовой таблицей, если число кодовых слов велико. Более удобный способ — ли- нейное кодирование. Линейным (n, k) -кодом называется линейное подпростран- ство 14 размерности k линейного n-мерного пространства над GF(q). Вектора подпространства К будем называть кодо- выми словами линейного (и, £)-кода. Пусть {gi, g2, , gj — базис подпространства VK. Тогда . • кодовое слово b=(bt, b2, ..., Ьп) линейного (n,k)-кода 14, соответствующее информационному слову а= (аь а2, ..., а») определяется из (5.1.1): b=atgi+a2g2+ ... +aftg». (5.1.1) Кодирование (5.1.1) часто представляют в матричной форме. Пусть gi^(gti,gi2, .... g<n), т.е. gi=gi,ei+gt2e2+ ... +g<tfin, i=l, 2, где e,= (l 0 ... 0), e2= (0 1.... 0), ..., en= = (0 0 ... 1) —базис пространства Vn. Тогда (5.1.1) эквива- лентно b=aG, (5.1.2) где £11 G= 821 • • • g±n §22 • • • §2tl (5.1.3( &kl §k2 * * * §kn Матрица G называется порождающей матрицей линейного (n, k) -кода V*. Кодирование линейного (n, k) -кода значительно упрощается, если порождающая матрица G имеет приведенно ступенчатую 60
форму 1 0 ... О glt£+1 ,.. gln пр.— О • • • ^2Л (5.1.4> О 0 ... 1 gk,k+i • • • §kn В этом случае Ь= (аи ..., а*, Ьк+1, bn), bk+j= а&;м; <=i j=l, .... п—k, т. е. первые k символов кодового слова b яв- ляются информационными, а последние п—k=r символов — проверочными. Такое кодирование называется систематическим, а (п, й)-код, порождаемый матрицей Gnp, — систематическим кодом. Два кода называются эквивалентными, если они получаются друг из друга перестановкой символов. Если переставить столб- цы порождающей матрицы G линейного кода Vk, то получим порождающую матрицу G' эквивалентного V* кода V/. Пере- становка любых двух строк порождающей матрицы, умножение любой строки на ненулевой элемент поля, прибавление этого- произведения к любой строке приводят к другой порождающей матрице того же кода. Любую порождающую матрицу G (5.1.3) линейного (п,&)-кода с.помощью указанных операций (включая перестановку столбцов) можно привести к виду (5.1.4). Таким образом, любой линейный блоковый код эквивалентен линейно- му систематическому блоковому коду. Линейные (п, £)-код Vk и (п,п—k) -код V„-k называются двой- ственными, если скалярное произведение любого слова b^Vk п на любое слово veFn-s равно нулю, т. е. 2 Пусть ^12 ... hln __ ^21 ^22 • • • h2n hn • • • ^rh (5.1.5> — порождающая матрица кода, двойственного (n, k) -коду Vk. Тогда для любого be V* ЯЬГ=О.# (5.1.6) Матрица Н в силу (5.1.6) называется проверочной матрицей линейного (n, k) -кода Vk. Для того чтобы решить, является ли какое-либо слово Ь ко- довым словом (п, k) -кода Vk, достаточно проверить удовлетво- ряет ли оно (5.1.6). Проверочная матрица систематического (n, k) -кода имеет 61
вид hu hiz ... 1 0 ... 0 Л21 Й22 ... Л24 0 1 ... О hn~k,i ^n-k^n-k.k О О ... 1 (5 J .7) Предположим, что мы используем линейный (п, &)-код 14 над GF(q) при передаче (или хранении) информации. Принятое слово вследствие помех в канале может отличаться от исходно- го кодового слова. Здесь мы ограничимся рассмотрением двух (правда, наиболее типичных) видов искажений: замещений сим- волов (аддитивных ошибок) и стираний. Первый вид искажений состоит в том, что значения некоторых символов кодового сло- ва, позиции которых неизвестны, заменяются другими допусти- мыми (т. е. принадлежащими алфавиту кода) значениями. Зна- чения некоторых символов могут оказаться недопустимыми и поэтому должны исключаться из рассмотрения. Правда, в этом случае нам известны позиции искаженных символов. Символы, значения которых исключаются (стираются), называются стер- тыми символами, или стираниями. Обнаружить ошибки в принятом слове можно тогда и только тогда, когда это слово не будет кодовым (предполагается, что на приемном конце неизвестно, какое именно кодовое слово было передано). Если ошибки обнаружены, то исправить их и при- нять решение о том, какое же кодовое слово было в действи- тельности передано, можно лишь зная некоторую информацию •о характере, ошибок. г Процедура принятия решения по принятому слову о том, какое кодовое слово было передано, называется декодирова- нием. В основе по существу всех известных методов декодирования лежит принцип максимального правдоподобия: переданным ко- довым словом считается то, из которого принятое слово может быть получено наименьшим числом ошибок. Количественную оценку искажений можно дать с помощью расстояния между словами. Аддитивные ошибки оцениваются расстоянием Хэмминга. » Расстояние Хэмминга (в дальнейшем часто просто расстоя- ние) между словами b== (bt, Ь2, ..., Ъп) и с= (съ 4.., с„) (обозначается d(b, с)) равно числу позиций, в которых b и с •отличаются друг от друга. _ Так, расстояние между словами (011101) и (010001) .равно 2. Наряду с расстоянием используется понятие веса слова. Весом Хэмминга (обозначается а>(Ь))' слова b==(bt, Ьг, ..., Ь„) назы- вается число его ненулевых символов. Расстояние. Хэмминга d(b, с) между словами b и с линейного (n, k) -кода над GF(q) равно весу Хэмминга их разности. Точно так же определяется расстояние Хэмминга между двумя любыми словами (векто- <62
рами) n-мерного пространства. У„, содержащего в себе код V*. Расстояние Хэмминга является метрикой; т< е. обладает свой- ствами рефлексивности и симметричности, и удовлетворяет не- равенству треугольника - , Я(а, b)i<;d('a,c)+'d(c,b) (5.1.8) для любых, слов а, b и с. . Одиночная аддитивная ошибка (изменение , значения однрго- символа) в кодовом слове приводит к: слову, , находящемуся от него на расстоянии Хэмминга, равном 1;, t (одиночных) незави- симых ошибок (изменение значений произвольных J символов) в кодовом слове приводят, к слову, .находящемуся от исходно го- на расстоянии Хэмминга, равном t. - Теперь мы можем более строго определить декодирование по- принципу максимального правдоподобия:, переданным кодовым словом считается то,' которое находится на наименьшем рас- стояний от принятого слова. «, Определим - необходимые й. достаточные условия обнаруже- ния и исправления ошибок! блоковым кодом. . Пусть*минимальное расстояние кода, определяемое как ми- нимальное1 из всевозможных попарных-расстояний между кодо- выми словами, равно d. Предположим, что было передано кодо- вое слово Ъ= (blt b2,., 6„) й принято слово bz= (Ь/, b2, ... ..., bn'). Слово е=(еь e2, ..., е„), е(=Щ—bt, i=l, 2, .... п. назовем словом:ошибкой. При декодировании по принятому слову Ь\ как правило, сначала находят слово-ошибку е, а ужа затем кодовое слово b=bz—е и информационное слово а. -Для того чтобы код обнаруживал любые I или меньше оши- бок, необходимо и достаточно, чтобы d^sl+1. Действительно, обнаружить ошибки можно лишь в случае,, когда принятое слово не является кодовым. Возьмем два кодо- вых слова а и b таких, что сЦа, b)=d. Существует некоторая комбинация из- d ошибок, которая переводит кодовое слово b в- кодовое слово а (для линейных кодов — это слово-ошибка е= = а—Ь), и эта комбинация ошибок не может быть обнаруже- на. Отсюда следует, что d должно быть не меньше /4-1. С дру- гой стороны, если d~^l+1, то никакая комбинация из I (или меньше) ошибок не может перевести любое кодовое слово в другое кодовое слово, ибо оно находится от него на расстоянии не меньшем d. Покажем, что для того чтобы код исправлял любые t или менее ошибок, необходимо и достаточно, чтобы минимальное расстояние кода d^2t+1. Пусть код исправляет любые t или менее ошибок. Предпо- ложим, что d^.2t. Возьмем два кодовых слова а и b таких, что- d(a, b)=d и определим слово-ошибку е такое, что w(e)=t,. d(a, e)i=f и d(e, b)=d—t. Теперь, если при передаче кодово- го слова а произошло t ошибок (составляющих слово-ошибку е) и было принято слово а', то при декодировании а' в ближайшее- 63-
кодовое слово мы не получим а, ибо d(a', &)^d(a', b). Таким образом, для исправления кодом любых t или менее ошибок не- обходимо d>2t. Пусть теперь минимальное расстояние кода d^2Z+l. Пред- положим, что в произвольном кодовом слове а произошло Z'(f^7) ошибок и было принято слово а'. Поскольку d(a', а) = =t' и d(a', a);<d(a', b), гдцЬ(Ь^а)—произвольное кодовое слово, то при декодировании слова а' мы всегда можем получить ближайшее к нему, переданное слово а. Что касается исправления I стираний, то для этого необхо- димо и достаточно, чтобы минимальное расстояние кода d^l+ + 1. Действительно, пусть в кодовом слове а=(аь аг, ..., ап) произошло I'(1'^.1) стираний. Обозначим i-й стертый символ xt. Тогда принятое слово а'= (а1( ..., х.„ ..., Xi(„... ап). Будем под- ставлять в а' вместо стертых символов поочередно различные значения (из кодового алфавита). Если l<d, то мы при этом лишь однажды поручим кодовое слово (и это будет а), когда вместо стертых символов подставим их йстинные значения. С другой стороны, если V^d, то всегда найдется пара кодовых слов'а и b таких, что d(a, b)=rf, и при декодировании слова а' мы вместо а получим Ь. В некоторых ситуациях возникает задача одновременного ис- правления ошибок и стираний. Для исправления всех комбина- ций из t или менее ошибок и I илй менее стираний необходимо и достаточно, чтобы минимальное расстояние кода d^2/+/+l. В дальнейшем при декодировании мы будем всегда предпо- лагать (если это специально не оговорено), что в принятом сло- ве произошло меньше чем половина минимального расстояния кода ошибок. Минимальное расстояние линейного (га, й)-кода определяется его проверочной матрицей Н. Теорема 5.1.1. Минимальное расстояние линейного (га, k) -ко- да Vk равно d тогда и только тогда, когда в проверочной матри- це И кода найдутся d линейно зависимых столбцов, а любые d—1 столбцов Н линейно независимы. Доказательство. Слово b веса w является кодовым словом (га, &)-кода Vk, если и только если оно удовлетворяет (5.1.6), что равносильно линейной зависимости w столбцов мат- рицы И, соответствующих ненулевым символам слова Ь. Теорема 5.1.1 позволяет строить линейные (га, &)-коды с раз- личными минимальными расстояниями. А именно, нужно таким образом выбрать столбцы проверочной матрицы Н кода, чтобы никакие d—1 или меньше ее столбцов не были линейно зависи- мы. Тогда минимальное расстояние кода будет не меньше d. Так, матрица, столбцы которой составляет множество все- возможных различных ненулевых двоичных r-мерных векторов, является проверочной матрицей линейного двоичного (га, ^-Ио- да с минимальным Ьасстоянием d=3, называемого кодом Хэм- 64
минга. Длина кода Хэмминга л=2г—1,. число- информационных символов k=2T—1—г. При заданной длине п и минимальном расстоянии d стремят- ся построить линейный (л, k) -код с наибольшим- k. или (что для линейных кодов одно и то же) наибольшим числом М кодовых слов (мощностью) и скоростью R. Для линейных кодов М=2\ R—kfn. Известны [66, 73] верхние и нижняя границы мощности линейного (л, k) -кода с заданным минимальным расстоянием. Мы приведем лишь те. из них, которые будут использоваться в дальнейшем. Нижняя граница гарантирует существование (при выполне- нии некоторого условия) линейного (л, Л)-кода с минимальным расстоянием d, имеющего не более чем г=п—k проверочных символов. Теорема 5.1.2. (Нижняя граница Варшамова—Гилберта). Су- ществует линейный код над GF(q) длины л с минимальным рас- стоянием, не меньшим d, имеющий не болеё г проверочных сим- волов, если d-2 2 Сй(<7-1/«7г. (5.1.9) 1=0 Верхние границы мощности линейных кодов показывают, что минимальное расстояние d кода обеспечивается введением из- быточных символов и число этих символов не может быть мень- ше некоторой, зависящей от d положительной величины. Теорема 5.1.3 (Верхняя граница Хэмминга — граница сфери- ческой упаковки). Для любого линейного (л, £)-кода над GF(q) с минимальным расстоянием d^2(+l число проверочных сим- волов г=п—k удовлетворяет неравенству Г > log4 1+2 ^(<7-1/ Г=1 (5.1.10) Теорема 5.1.4 (Граница Синглтона). Для любого линейного (л, &)-кода над GF(q) с минимальным расстоянием d n—k^d—1. (5.1.11) Декодирование принятого слова Ь' линейного (л, k) -кода, как правило, начинается с вычисления синдрома S(b')=Wb'r. ' . (5.1.12) Согласно (5.1.6) r-мерный вектор-столбец S (Ьх) равен нулю тогда и только тогда, когда Ь'— кодовое слово. Пусть b'=b+e, где b — переданное кодовое слово; е — слово-ошибка. Тогда 5(Ь') = ЯЬ'г = ЯЬгЧ-^ег=Яег=5(е). (5.1.13) Из (5.1.13) следует, что все слова-ошибки, переводящие какие- либо кодовые слова в слово Ь', имеют один и тот же синдром. 3 И. М. Бояринов 65
Множество всех.слов длины//?.:(//-мерных векторов), имеющих один и тот же синдром, образует смежный класс //-мерного про- странства .V» по линейному (n; k) -коду (A-мерному подпростран- ству Vh). Слово,: имеющее наименьший вес среди всех слов неко- торого смежного /класса,' называется лидером смежного класса. Согласно принципу максймального-правдоподобия при деко- дировании принятопгслова Ь'. лидер смежного класса, которому принадлежит bz принимается за слово-ошибку е и считается, что было передано кодовоехлово Ь=Ь'—е. Таким образом, процедура исправления ошибок в принятом слове Ь' линейного (n, k) -кода состоит в следующем: 1. Вычисляем синдром Ь'г. 2.. Если S=0, полагаем е=0, Ь=Ь'. 3. Если 5^=0, определяем лидер е смежного класса; соответ- ствующего синдрому 'S.. 4. Полагаем bs^b'—e. 5.2. Циклические коды и коды Рида — Соломона Линейные блоковые (//, 6)-коды имеют целый ряд преиму- ществ перед произвольными (нелинейными) блоковыми кодами. Так, для описания линейных, кодов нет необходимости в состав- лении и запоминании кодовой таблицы (полного списка кодо- вых слов), но вполне, достаточно задания , порождающей илц проверочной матриц. Для линейных кодов известен общий ме- тод определения их минимального расстояния, основанный на теореме 5.1.1. . Сравнительно просты операции кодирования и обнаружения ошибок. Как правило, сложной и в общем случае нерешенной для линейных кодов является лишь операция деко- дирования. Дальнейшее и существенное упрощение методов кодирования и декодирования связано с применением линейных цйклических кодов. Для циклических кодов операции кодирования и обнаруже- ния ошибок и их реализация на регистрах сдвига оказались на- столько простыми, что циклические коды сразу же нашли при- менение в системах передачи данных с обнаружением ошибок. Кроме того, для исследования свойств циклических кодов оказа- лось возможным применить мощные алгебраические методы. Это привело к построению больших классов циклических кодов с достаточно простыми алгоритмами декодирования. В этом параграфе мы приведем используемые в дальнейшем краткие сведения о циклических-кодах и алгоритм декодирова- ния кодов Рида-тгСоломона. (с исправлением ошибок и стира- ний) . Линейный (n, k) -код V над GF(q) называется циклическим, если вместе с любым словом Ь=(&1, ..., 6П) коду V принадле- жит слово <p(b) == (&z, b3,...;, Ь). Слово <р(Ь) = (b2, bit..., bn, Ь^ 66
называется циклическим сдвигом (на один разряд влево) слова b= (bi, bn). Очевидно, что циклическому коду наряду с b и <р(Ь) принадлежат слова <p~,(b)i= (6„_<+i, &„_i+2,Ь„_<) — цик- лический сдвиг на i разрядов вправо и ф<(Ь) = (Ь<+1, bi+2, ... ..., bt) — циклический сдвиг слова b на i разрядов влево. Циклический код можно описать, как и любой линейный код, •с помощью порождающей и проверочной матриц. Такое пред- ставление. циклических кодов часто используется для исследова- ния их свойств. Прежде всего заметим, что двойственный (с точ- ностью до эквивалёнтности) к циклическому коду также будет циклическим кодом. Порождающую матрицу циклического (п, k)-кода.можно построить, взяв в качестве первой строки ка- кой-либо базисный вектор кода, в качестве второй строки — ее циклический сдвиг, ..., в качестве k-& строки — циклический сдвиг (k—1)-й строки. Аналогично строится и проверочная мат- рица циклического (п, k) -кода, в которой в качестве первой •строки берется базисный вектор двойственного кода. Циклический (n, k) -код — ^-мерное циклическое подпрост- ранство га-мерного линейного пространства. Циклическое под- пространство можно описать на языке алгебры многочленов по модулю х”—1. Поставим в соответствие кодовому слову Ь= -= (bi, Ь2,..., Ьп) циклического (п, &)-кода над GF(q) многочлен b(x) = biXn~l + .. .+bn в алгебре А„ многочленов по модулю хп—1. Строго говоря, в соответствие слову b ставится класс вы- четов {& (х)} алгебры Ап. Поскольку каждый класс вычетов {&(х)} алгебры Ап однозначно определяется многочленом &(х) степени, меньшей п, то обычно отождествляют Ь(х) и {Ь(х)}. При таком отображении циклического подпространства Vh в алгебру А„ вектору <р(Ь) (циклическому сдвигу вектора Ь) ста- вится в соответствие многочлен <p(k(x)) =xb(x). Таким образом циклическому сдвигу в циклическом подпространстве Vh в ал- гебре Ап соответствует умножение многочлена на х. Отсюда не- посредственно следует, что циклическое подпространство п-мер- ного линейного пространства изоморфно идеалу в алгебре мно- гочленов по модулю многочлена х”—1. Кодовые слова цикличе- ского (п, &)-кода представляют или векторами Ь= (6Ь Ьг, ... ..., Ьп) или многочленами 6(x)i==61xn_1 + 62xn“2-|-.. . + Описание циклического (п, k) -кода как идеала Uk алгебры Ап многочленов по модулю многочлена х"—1 сводится к следую- щему. Каждый кодовый многочлен кратен нормированному (старший коэффициент равен 1) многочлену g(x) степени г>= =п—k, наименьшей среди степеней всех кодовых многочленов. Многочлен g\x) называется порождающим многочленом цикли- ческого (п, А;)-кода. Многочлен g(x) делит хп—1, х”—1= —g(x)h(x), где h(x) — многочлен степени k — называется про- верочным многочленом (п, &)-кода. Любой делитель хп—1 по- рождает некоторый циклический код длины п. В частности, h(x) порождает (п, п—£)-код, двойственный (с точностью до эквива- лентности) циклическому (п, &)-коду, порожденному g(x). Точ- з* 67
но так же как линейный (п, £)-код полностью определяется по- рождающей (или проверочной) .матрицей, циклический (n, k)- код полностью определяется порождающим (или проверочным) многочленом. Длина циклического кода п определяется как наименьшее положительное целое такое, что g(x)| (хп—1). Вообще говоря, длина циклического 'кода может быть выбрана и большим чис- лом I. Но тогда из х1—\\=g(x)m(x) и хп—i=g(x)h(x) будет следовать 1=рп, р>\, хп—1 — кодовый многочлен (/, &)-кода, и минимальное расстояние (/, k) -кода равно 2. Таким образом, минимальное расстояние двоичного цикличе- ского (л, k)-кода, порожденного многочленом g(x), равно самое меньшее 3, если п — наименьшее целое такое, что хп—1 делится на^(х). Будем предполагать в дальнейшем, что многочлен g(x) не имеет кратных корней. Для этого необходимо и достаточно, что- бы п и q были взаимно просты (напомним, символы кода принад- лежат полю GF(<?)). Пусть порождающий многочлен g(x) кода V равен* произве- дению I различных неприводимых многочленов gt(x), ..., gt(x), а{ — корень g<(x), gi(<Xt\==Q, i=l, ..., I. Для любого кодового многочлена Ь(х) кода V 6(а<)=0 и матрица аП-1 а«-2 . j “s’1 “s-2 ••• «2 1 а"**1 а"**2 ...а, 1 (5.2.1) будет проверочной матрицей кода V. Элементы аД i= 1,...,/; 7=1,. • •, п—1 матрицы (5.2.1) сов- сем не обязательно должны быть элементами поля символов ко- да GF(q). Пусть элемент ос,, а вместе с ним и все его степени аД принадлежат некоторому расширению GF(qm^ поля GF(q). Для того чтобы из матрицы (5.2.1) получить обычную форму проверочной матрицы линейного кода (элементы обычной фор- мы матрицы принадлежат полю символов кода.)', нужно каждый элемент а/ представить в виде вектора (столбца) линейного т(- мерного пространства над GF(q). Элементы аД /=0, 1.........п—1 разлагаются, как правило, по базису {1, а, ..., а"**-1}, а перво- образный элемент поля GF(qmi). Пример. Многочлен g(x)=gi(x)g2W = (*4+*+l)(*2+*-l-l) порожда- ет двоичный циклический (15,9)-код. Если aeGF(2*) и a — корень gi(x) = =х4+х+1, то p=a5eGF(22), f —корень g2(x) =х2+«4-1. Проверочная матрица кода (15.9) —кода //== а14 а13 ... а 111 (а3)14 (а3)13 ... а3., 111 (5.2.2) 68
может быть приведена к обычной форме, если представить каждый элемент- а* ..., 15) первой строки матрицы Н в виде вектора-столбца линейного четырехмерного пространства над GF(2) в базисе {а3, а2, а, 1}, а каждый элемент (а5)’=0' (i'=l.... 15) второй строки — как вектор-столбец линейно- го двумерного пространства над GF(2) в базисе {0, 1}. Тогда 1 1 1 1 0 1 0 1 1 0 0 1 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 1 0 0 //= 0 0 1 1 1 1 0 1 0 1 1 0 0 1 0 (5.2.3) 1 1 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 Кодирование циклического , (п, k) -кода производится с по- мощью порождающего многочлена, если &/п>1/2, и с помощью проверочного многочлена в противном случае. Если а=(а1( ..., ак) — информационное слово, а(х) = =alxk-l + a2x?~2 + --. + <h — информационный многочлен и мно- гочлен g(x) =xr+glx'~t + .. ,+gr порождает циклический (п, £)- код над GF(q), г=п—то кодирование — определе- ние кодового многочлена b (х) — состоит в умножении а (х) на g(x), т. е. b(x)=a(x)g(x) = blxn~t + b2xn-2 + .. . + Ьп. При таком кодировании код получается несистематическим. Для систематического циклического (n, k)-кода кодовый мно- гочлен &(х) определяется (5.2.4) b (х) = а (х) хп~к—г (х), (5.2.4) где a(x)xn~k—g(x)q(x) +г(х) и степень многочлена г(х) мень- ше г. При определении кодового многочлена b(x) = btxn~l+... ...+ bn систематического циклического (п, £)-кода с kln<_ll2 ис- пользуют рекуррентные соотношения а/, / = 1.........k k —2 /= i > • • •» (5.2.5) где а.(х)=а1х*_‘ + .. . + аЛ — информационный многочлен, /i(x) = =xk+hlxk~i + .. .+hh — проверочный многочлен кода. Соотно- шение (5.2.5) следует из Ь(х)й(х) =0 (в алгебре Ап). Для обнаружения ошибок достаточно разделить принятый многочлен Ь'(х) на порождающий многочлен g(x) и рассмот- реть остаток г(х) от деления. Если г(х)=0, то считается, что ошибок не произошло. Если же г(х)#:0, то при передаче произо- шли обнаруживаемые ошибки. Для обнаружения ошибок можно также воспользоваться синдромом. Если &'(х)=Ь(х)+е(х) — принятый многочлен циклического кода V с проверочной матрицей Н (5.2.1), то 69
синдром . . $(Ь') = ЯЬ'Г = I. St Если S(b')=0, то считаем, что ошибок в принятом слове Ь'= = (6/.....Ьп') -не произошло. В противном случае произошли обнаруживаемые ошибки. , Что касается декодирования, то на сегодняшний день извест- ны эффективные алгоритмы декодирования, применимые к боль- шим классам циклических кодов. В первую очередь это алгорит- мы декодирования кодов Рида—Соломона, БЧХ и Гоппы, а так- же мажоритарное декодирование. Здесь мы рассмотрим итеративный алгоритм декодирования циклических кодов Рида—Соломона (с исправлением ошибок и стираний).. .Коды Рида—Соломона используются в качестве вйёшних кодор в каскадных кодах и прямых. суммах произведе- ний кодов, рассматриваемых в гл. 6 ЙВ. ... Пусть а — примитивный элемент поля GF(q). Циклический (п, Л)-код над :GE(q), порожденный многочленом t g(x) = Г ' .. =Уг-Ц-(х—а*), г—п—k называется кодом Рида—Соломона (со- кращенно кодом PC). Длина кода PC равна, л=<?—!, минималь- ное расстояние d=n—k+l. Коды PC являются разделимыми кодами с максимальным расстоянием. . Проверочная матрица кода Рида—Соломона (5.2.6) ' а"-1 ап“2 « 1 а2(П~1) а2(П-2) а2 J аГ(П-1) аг(п-2) аг ! Все элементы матрицы //.принадлежат полк? символов кода. Код PC можно удлинить на два (информационных) символа- так, что его минимальное расстояние не изменится (но код уже йе будет циклическим). Проверочная матрица удлинённого кода Рида—Соломона , 10 а"-1 ап~2 ... а 1 = 0 0 а1^ а^>‘... а« 1 ’ 6 1 аг("“2) ... аг 1 ‘ ' Двойственным к циклическому (я, &)-коду PC будет (с точ- ностью до эквивалентности). циклический (я, я—&)-код PC. К циклическим кодам Рида—-Соломона применим любой ме- Уо.
тод кодирования циклических кодов. Кроме того, часто исполь- зуют .следующий способ кодирования несистематического кода PC. Пусть а(х) =а1х*-1 + а2х*-2+.. .+ак — информационный мно- гочлен.. Коэффициенты кодового многочлена. Ь(х) = 6|Х”-‘4- 4- Ь2хп-2+... + Ьп кода PC определяются из (5.2.7): Ь<=а\ап~{),i= 1, 2, п. . (5.2.7) Перейдем к рассмотрению итеративного, алгоритма декоди- рования циклического кода Рида—Соломона (с исправлением ошибок и стираний). Пусть b(x) = 61xn-t4-62x’,-2-|-.. .+bn — ко- довый многочлен (ri; k) -кода PC над GF(q), порожденного мно- d-1 гочленом g(x)=n (х—o’), а — .примитивный корень GF(q). Предположим, что при передаче в Ь(х) произошло v ошибок и и стираний (2v+«+l^d) и был принят*многочлен Ь(х)- При- своив всем стертым символам (коэффициентам) Ь(х) какие-либо значения, скажем, нулевые, получим .из многочлена b (х) много- член b'(x)=bl'xn-i + b2'xn~2+.. .4-6/. Введем многочлен искаже- ний е (х) = Ь' (х) —6 (х) = + е2х"-2 + .-..+е0, который можно задать множеством v=u+v пар (е(, Nt), где et — значение i-ro искаженного символа, А^=а"-*' — номер этого символа. Для многочленая 6'(х) найдем d—1 синдромов: S/ = 6'(a/) = e(a/)=2 ^(а/)"'^ 2 ^(«0 JA^-l i==X “ S («““')'= S (5.2.8) £=1 . 1 „ ' ' ' г Из системы (5.2.8), зная Sj (/=1....d—.1), мы должны опре- делить значения и нбмера искаженных символов, тле. v пар (е^, NУравнения (5.2.8) нелинейны и непосредственно их решить не удается. Обходной путь их решения состоит в следу- ющем. Введем многочлен номеров ошибок ст(г) = П (1 — N z)=<Joz° + a1zv-1+ . -. +<г0,- . ' (5-2.9) (=! 14 • =‘ „ I многочлен номеров стирании 7(2) = Ц (1 -ATrz) = Yoz“4-+-.-•+?« (5-2-Ю) (=i и многочлен номеров искажений. . . ф(z) = ст(z)у (z) = П (1 — АГИ 2) = <P»2V 4- 4- .. • + Фт- •
Степень многочлена a(z') равна числу произошедших ошибок, степень 7(2) — числу стираний и/наконец, степень <p(z) равна общему числу искажений (ошибок и стираний). Значения корней многочлена 0(2) (7(2), <p(z)) обратны но- мерам ошибок (стираний, искажений). Чтобы связать 0(2), <p(z), 7(2) с Sh j=\, , d—1 сделаем следующие формальные преобразования. Положим по определению Sj~e(as) для всех /, 1^/<оо. Тогда, учитывая что e(x)=^ %* Тимеем для всех / i=i ‘ 5/ - е(а/) = 2 = £ е^(. 1=1 1=1 оо . Обозначим S (z) = и преобразуем /₽=1 00 00 / V \ V Q N S (2) = 2 s,2H -22 гн = 2 (5.2.12) /=1 /=1 \i=l / £=1 *4 v Умножая' обе части (5.2.12) на q>(z) = IJ (1—Nfiiz) и произведя i=i упрощения, получим 5(г)ф(2) = 2^П(1-ад. Введем многочлен значений искажений . (1-^4 ( (5.2.13) • i=l k^i Тогда получим уравнение S(2)<p(z) = fi>(z). (5.2.14) Поскольку нам известны первые 2t коэффициентов ряда (про- изводящей функции) 5 (г), а именно St, S2,... ,Sjt ..., Sd_b и не- известен ни'один из S,-, j^d, то решение (5.2.14) сводят к реше- нию сравнения 5(z)<p(z)s(a(z) (modz*-1), (5.2.15) называемого ключевым уравнением. Введем функцию Td_1(z) = ^ Т^~1, определяемую сравне- /=1 нием (mod^-1). (5.2.16) 72
Тогда (5.2.15) равносильно Td-l(z)d(z) = (i>(z) (mods'*-1). (5.2.17) Подставив в (5.2.17) П-!(г)=2 Т/2М+ f Tjzi-i, /=1 j-u+1 получим 2 (7>-») о (г) = СО (?) — Tjzi-i\o (г) (mod г"-*). (5.2.18) /=«+i \/=i ’ J Левая часть (5.2.18) делится на z“, поэтому должна делиться на z“ и правая часть: z х ® (*) - ( S Tizi'1) °(г) ( 2 ) ст(2) =-------------------(mods4'"*1). (5.2.19) \i=«+i / В левой части (5.2.19) сделаем подстановку i=j—и и обозна- чим . 1 P(z) = <о(г)-[2 Т/^а(г) . П(г) =-------(5.2.20) 2Г Тогда (5.2.19) примет вид P(z)o(z)=r\(z) (mod zd-“-1). (5.2.21) Для многочлена &'(х) можно вычислить S(z)modzd“t и пр (5.2.16), учитывая Ti+^=Ph определить P(z). Если в принятом многочлене Ь(х) нет стираний, то 6(х) = = У(х), «=0 и ключевое уравнение (5.2.21) превращается в S(z)о(z)so(z) (mods'1-1). (5.2.22) Ключевые уравнения (5.2.21) и (5.2.22) решаются одним и тем же сйособом и поэтому ограничимся (из-за простоты обо- значений) рассмотрением решения уравнения (5.2.22). Много- член ®(z) в (5.2.22) имеет степень v—1 (о— число ошибок) По- этому все коэффициенты в правой части (5.2.22) при степенях I (v^l<zd—1) равны нулю, а в коэффициентах при этих степе- нях в левой части участвуют все S} (/= 1, ..., d—1) и все коэф- фициенты многочлена o(z). Воспользовавшись этими соображе- 73
ниями, сведем уравнение (5.2.22) к системе линейных уравне- ний: 4~ J- ... 4- Sd-i-ctTg - 0; Sd-3<Jv 4* Sd-sCp-i4- ... -f-Sd_2-vCTg = 0; >•. So+iGp 4* SpOo-i 4~ ...•-+- = • (5.2.23) Мы приведем итеративный алгоритм нахождения мйогочле- на o(z) наименьшей степени, коэффициенты которого удовлетво- ряют системе (5.2.23). Этот алгоритм принадлежит Берлекэмпу [6] й был усовершенствован Мэсси [144]. Алгоритм состоит в нахождении такой последовательности многочленов og(z) с неубывающими степенями рл, > что коэффи- циенты каждого последующего многочлена удовлетворяют боль- шему числу уравнений системы (5.2.23) по сравнению с преды- дущим. Отметим, что при отыскании многочлена а (г) нам неиз- вестно число v в действительности произошедших ошибок. Тем не менее'-7мнедочлен. а (z) может- быть определен без предвари- тельного знания V. ' ’ . Теорема 5.2.1 [33]. Пусть v' — минимальное целое число та- к.ое.что существует многочлен o' (z) с о„,—,1, коэффициенты ко-: торого удовлетворяют системе (5.2.23) и степень которого ..-не больше vr. Тогда v=vr и o(z)=o'(z). . .. . Рассмотрим произвольный (ц-й) шаг'итерации. На этом ша- ге будем использовать ц первых синдромов 5t, S2, ..., Sg. Пред- положим, мы нашли такой многочлен 0/(2) степени pg, что его коэффициенты удовлетворяют системе уравнений . ‘5цОрц4_ 4- ... 4- Sg-pyOo® 0; Spu+i^pg 4- Spg^pg-i + • • • + 5хо0 -- Q- v s (5.2.24) На следующем (ц4-1)-м шаге, используя еще -один S„+*i-fr синд- ррм и предыдущие многочлены. ац(а), ag-i(z)..........будем пытать- ся найти многдчлен og+J (z) . ’удовлетворяющий Системе из боль- шего числа уравнений: • - : : - Sji+iCTpM+f4‘!SgQp(i+1-1-i.47 ••• "Ь ^М^Рц+1?о =; 9’ .. • ' ASp^i+iOp|X+i4-Sp^1Opg+i-i+ ... 4-^iffo = °- ' (5.2.25) п ^Естественно проверить; не будет ли сгц+1(^)=ом(г); Введем величину Dg, называемую ц-м расхождением и равную по'опре- делению ’ ; ‘ • ! ' ’ < v ‘5ц+1стРц,4'SgOp^i 4~ • -. (5.2.26) Если Dfi—О, то, очевидно, к системе ,('5.2.24), можно добавить еще .одно уравнение (Dg=0), и при этом многочлен ou+1(z) = =fc<jp(zy будет удовлетворять системе (5.2.25). 74
Если же D^O, то Оц(г) уже не будет решением система 15.2.25) на (р+1)-м шаге Легко убедиться, что многочлен Рц+г(г) = аД2)-ОиР^Ч(г) "X ..(5,2.27 при всех £<р таких,, что. D^Q, будет решением системы (5.2.25) на (р+1)-м шаге. Степень многочлена ой+1(г),.как видно.из (5.2.27), равна или, возможно, меньше рй+1=тах{ри, р—£+pJ, где рй и.р5—^ степени соответственно многочленов о|Х(г)..и oE(z). Число рц+1 бу- дем называть в дальнейшем формальной степенью многочлена <ji,+1(z) (рм+1 — максимально возможная согласно. (5.2.27). сте- пень многочлена og+1(z)). В итеративном алгоритме* pM+1,. а не истинная степень многочлена оц+1 (z) определяет' число уравне- ний (5.2.25), которым удовлетворяют коэффициенты.oM+t(z). По- скольку Оц+1 (z) и рм+1 определяются итеративно, то упомянутые выше pg и pi — это тоже формальные степени многочленов 04(z) и ot(z). Следуя теореме 5.2.1,. мы хотим найти многочлен o(z) наи* меньшей степени, удовлетворяющий системе (5.2.23). Поэтому и на каждом шаге будем отыскивать многочлен наименьшей сте- пени. Для этого в качестве o»(z) в (5.2.27.) следует взять много- член; . формальная степень рЕ которого удовлетворяет условию Pt<.Pvn, но р5+1=ри (здесь pt+i — формальная.степень много- члена <ts+1(z), получаемого на g+1-м шаге). Легко видеть, что ри+1=тах{рм, р—р„+1}. Поскольку на каждом шаге добавляет» ся один из d—1 синдромов, то всего шагов d—1. Осталось задать начальные условия. Они выбираются еле» дующим образом: р=0, GJ1(z)=Oo(z)' = Oo=l, Ро = О, .. В=—1, o{(z)=o_t(z)=G0=l, Опишем последовательность алгоритма определения a(z). Первый шаг итерации (р=1). ВЫЧИСЛИТЬ Z)0i=S1Oo = S1. Если Do=O, то положить ojz^s ==0o(z)i=l, рл=р^=0. Если Ро=#О, то положить о,(z)» =o0(z)—D0Di“‘zg_,1(z) = 1—SiZ, pt= l, стереть первоначальные значения g, os (z), и запомнить новые значения |=0, aE(z) = = Oo(z) = l, Di = Do = St. Щаг итерации (p+1). - . - ; Вычислить ' Пц - 4- + .. • + Su-Pu+iffo. Если £>u=0, то положить ag+1(z)=all(z), p|ll+1=Pn. Если ZV#O, to положить oM.i(z)=o|1(z)—DgDs_1z*_|<jE (z); Pu, если 2рц>р. p+1 — Pn, если 2рц<p 75 Pu+i
стереть старые значения g, o$(z), запомнить новые значения |=|л, oe(z)=og(z), Dl=Dli. Последний шаг итерации. -Вычислить Dd-z — Sd-iOp^2 -J- Sd-iPp^-i + . . . 4- Sdr-i-Pd-a^Q. Если £>d-2=0, то положить Od-i(z)==Gd_2(z). Если Z)d-i¥=O, то положить Od-1 (z).=<Jd-2 (z)— D^D^z4-2-^ (z). Коэффициенты многочлена- od-i (z) удовлетворяют системе (5.2.23). Кроме того, многочлен od-i (z) по построению имеет наи- меньшую возможную степень среди многочленов, коэффициенты которых удовлетворяют (5.2.23) (на каждом шаге отыскивался многочлен наименьшей степени). Поэтому по теореме 5.2.1 мно- гочлен номеров ошибок o(z) ^ad-i(z) и число в действительно- сти произошедших ошибок равно степени (истинной) многочле- на Od-i'(z). Последовательным испытанием элементов. GF(q) находятся корни многочлена o(z), обратные элементы к которым суть но- мера ошибок. Так как кодовые многочлены передаются начиная со-j старших членов, то испытание начнем со старшего номера которому соответствует обратный' элемент а1. И если' покажется корнем o(z), то делаем вывод, что ошибочный сим- вол. имеет номер Nf=a,n~'. Вообще, если а° — корень o(z), то де- лаем, вывод, что испытываемый символлс номером Ne==<x°~e оши- бочный. . : > . - Многочлен значений ошибок to(z) (в (5.2.22)) найдем с по- мощью рассмотренного алгоритма одновременно с o(z) по сле- дующему правилу: на (ц+1)-м шаге алгоритма ®1x+i(z) = ®n(z) — ’ (5.2.28) где и D\ — те же, что и при определении Ъи+1(г). Начальные условия: ®0 (z) =0, <0—2 (z) =—z-t. Число шагов d—1. : В результате решения ключевого уравнения (5.2.22) (при на- личии только ошибок) мы определили o(z) и-ы(г). Точно так же, решая ключевое уравнение (5.2.21) (при наличии ошибок и.стираний), мы определим o(z) и r)(z). Тогда многочлен иска- жений в силу (5.2.20) равен о (z) = ц (z) z“ + | /гМ |а (2) (5.2.29) \/=i / (w — число стираний). Зная <i(z) и ш(г),мы можем определить номера и значения ис- каженных символов. Номера ошибочных символов обратны корням многочлена o(z) (номера стираний нам известны). Значения и+о искажен- ных символов определяются следующим образом. Пусть Ns номер /-го искаженного символа. Подставив в
(5.2.13) вместо z элемент Nf~l, найдем (1-ад/1). (5.2.30) k^i Формальная производная многочлена номеров искажений <p(z) (5.2.11) равна V <Р'(2) — ЗЛГ^Ц (1-ад, „ (5.2.31) i=i k^i , . а ее значение при г’=Л^_1 ф' т = - Nf П (1 - N»kN7). (5:2.32) Сравнивая (5.2.30) и (5.2.32), получим значение е} искаженного символа с номером Nj=an~>: е, =---. (5.2.33) ф' (АГ/1) Ф! (а7) (а (а') • Y (а'))' Теперь мы можем сформулировать алгоритм исправления ошибок и стираний кодом Рида—Соломона. 1. В принятом многочлене Ь(х) все стертые символы заменя- ются нулями, что приводит к многочлену Ь'(х). 2. Для многочлена Ь'(х) определяются d—1 синдромов 53=&'(а’), /=1, .,.,d—\. 3. Находится многочлен номеров стираний y(z). 4. Из сравнения (5.2.16) находится функция Td-i(z). 5. С помощью итеративного алгоритма из ключевого уравне- ния (5.2.21) находятся <j(z) и r)(z). 6. Определяются корни многочлена o(z), обратные элемен- ты к которым суть номера ошибок. 7. Вычисляется по формуле (5.2.29) многочлен искажений <o(z). 8. Определяются по формуле (5.2.33) значения всех искаже- ний (ошибок и стираний). 9. Результатом декодирования является кодовый многочлен b(x) = b'(x)—е(х). Пример. Пусть а — примитивный элемент поля GF(24) (а — корень б многочлена х4+х+1), многочлен g(x) = Ц (х — а*) порождает циклический (15, И)-код Рида — Соломона над GF(24) с минимальным расстоянием d—5. Пусть в кодовом слове Ь= (аОа3ООО1ОООаа4а3а10) произошла ошибка в пер- вом символе (значение ошибки а8) и оказались стертыми третий и шестой символы, так что было принято слово Ь=(а1°0Л00Л01000аа4а3а10). Заменим стертые символы нулями и вычислим синдромы слова Ь'= (а100000001000 77
aa4a3a10): S1==b'(a)=a9, Ss'^b'Ca2) =а\ iy==b'(a8)=a8, S4=a12. Опре- делим номера стираний #3==а12, #в=а9 и найдем многочлен .номеров стираний 2 ? (г) = П (1 — N*?) = (1 — a12z) (1 — a’z) = a«z2+ a«z + 1. f=i Из сравнения S(z)y(z) =Ti(z) (mod z4) найдем ' \ T1==SiY2=a9l=a9, T2—SiYi+S2Yi=a9a8+a4l =a10, T3 = SiYo + S2Y1 + S3Y2 = a9a® + a4a8 + a8l *= a, T4 = S2Yo + S3Y1 + 54?2 = a4a8 + a8a8 + а12Г= Г, и Tt(z) =z3+az2+a10z+a9. t h Решим относительно o(z) и tj(z) сравнение P(z)a(z)=v\(z) (mods2), (5.2.34) где P(z)=z+a (Pl==T3=a, P2=T4=1). Начальные условия: |x = 0, o^ (z) = o0 (z) = 1, Po = O» J = -l,a6(2) = a.1(z)=l, Dg = D.1=i. 1. Найдем Ро=Л<Го=а. Положим Gi(z) = l+az, Л = 1. Ввиду pi>po заме- ним начальные значения g, o$(z), D| на новые значения g=0, G|(z) = l,Z)g=a. 2. Найдем Di=P20i+PiOo= 1 • l+aa= l+a2=a8. Положим a2(z) =az+1—a8* a~1zl=a14z4-l. .Отсюда, учитывая, что число шагов итеративного алгоритма решения сравнения (5.2.34) равно 2, получаем o(z) == о2(z) = a14z+l; Корень o(z), очевидно, z=a, а номер соответствующей ошибки Ni=au. ’ . Многочлен tj(z) определим непосредственно из (5.2.34). Имеем a14z2+ +a=ij(z) (mod z2) Hi](z)=a. По формуле (5.2.29) вычислим <o(z): со (z) = az2 + (a10z + a9) (a^z + 1) = a’z2 + az + a9. Формальная производная <p'(z) многочлена номеров искажений <p(z^ =Y(z)a(z) = (a6z2+a8z+l) (al4z+ l)==a5z8+a10z24-a6z+1 равна <p'(z) = =a5z2+a6. Определим по формуле (5.2.33) значения всех искажений: __ со (a) _ a8 + a2 + a9 _ a3 _ 8 в1’ ~ФЛ (a) ”. a74-a8 a10 ' co (a8) _ a9 + a4 + <x9 a4 _ 3 *3 co' (a3) a11 + a8 a °° ’ „ . co (a8) 1 + a7 + a9 a вв q>' (a8) . a2 + a8 a8 78
5.3. Мажоритарное декодирование линейных кодов Известны два варианта мажоритарного декодирования ли- нейных блоковых кодов — алгоритм Месси и алгоритм Рида. Наибольшее распространение поЛучил алгоритм Месси. На, этом алгоритме основано мажоритарное'Декодирование систематиче- ских циклических. КОДОВ. Алгоритм Рида применяется, При. декб;. дировании кодов Рида;—Малдера... • Алгоритм Месси и его;применения' к широким классам Ко- нечно геометрических кодов подробно. Описаны в*литературе [71, 73]. В то же время для декодирования линейных кодов с нерав; ной защитой информационных символов более удобен алгоритм Рида. Кратко определив оба алгоритма, покажем,' как, исполь- зуя Систему ортогональных проверок для алгоритма Месси, по- строить систему проверочных форм для алгоритма Рида. . Пусть V — линейный (и, А)-код над.ОР(^). с минимальным расстоянием d, Vх — двойственный к V — линейный ' (п, код. •; , ‘ . . Пусть Ь'=Ьч-е, Ь==( .61, слово кода V, е= (е1(..., е„) — слово-ошибка.. ' Обозначим через ху скалярное, произведение, векторов .х== = (xlt ..., хп) и у= («л.pn); .xy=xtpi+. .;+хпро. Для любо- го слова h= (й1(..., 6„) кода Vх имеем ... _• bh=&1fti+6262+....+6»Л>==0, ' (5.3.1) b'h = bihi 4~ b2/i24- ••• .4“ bnhn = .... .. * (5.3.2) eh=e1/i1+e2/i2+...+en/in=a, -- " ' t (5.3.3) где а элемент поля GF (q). . . .' Если в векторе h=(hi.....ft,, hn), ht^Q, тоЬ называется проверочным вектором, а (5.3.1), (5.3^2) и (5:3.3) проверочными суммами (проверками) для символов ft/, и* ^.соответственно. • Проверочные суммы можно разрешить относительно любого входящего в них символа (символ’6,-входит, в проверочную .сум- му, если Л^О).. Например, если й^О, то из (5.3.1) получим — ft^Mi—• — ^hnbn =_ bt. • • ’ " (5.3.4) Аналогично определяются симврлы.' b/сги ;е{. £уммы;4&3.1)— (5.3.3) называются неявными, а суммы вида.-^бДЛ);—явными проверочными суммами. Значения • . левых, частей , (5.34)— (5.3.4) называются- значениями этих проверочных сумм. .. Пусть h, h'eVx Если йДл^=0, а йД<=0 для ’/^i; ..., п, то проверочные вектора п и h' называются брФогональньь ми относительно символов’^/ 6/ и- е(: Ортогональным- векторам соответствуют ортогональные проверки bh=O и.ЬЬ'=.О, b(h.^=a и b'h'=a', eh=a и ezh,=az».... . Код V называется мажоритарно декодируемым с алгоритмом Месси-в один шаг-с реализуемым! расстоянием df, если для:каж- 79
дого символа кодового слова кода V или слова-ошибки может быть найдено множество dP—1 ортогональных относительно это- го символа проверок. К ортогональным проверкам присоединя- ют тривиальную проверку (для символа Ь( это &,=&<). При dp= =d код V называется полностью ортогонализуемым. Если в слове Ь= (Ь1г ..., Ьп) произошло не более ^[(dP—1)/2] ошибок, то абсолютное большинство явных прове- рочных сумм дает истинное значение.^ проверяемого символа bt, абсолютное большинство неявных проверочных сумм отно- сительно &/ дает истинное значение произошедшей ошибки. При этом, если ни одно из ненулевых значений неявных проверочных сумм относительно Ь/ не имеет абсолютного большинства, то считают е{=0. Существуют два различных способа определения значений ортогональных проверочных сумм и соответственно два типа ма- жоритарного декодирования. В первом типе мажоритарного декодирования сначала вы- числяется синдром принятого слова, а уже затем по нему нахо- дятся значения ортогональных проверочных сумм. Поясним суть этого способа. Синдром — это вектор, символы которого есть значения проверочных сумм, соответствующих строкам прове- рочной матрицы кода. Строки проверочной матрицы кода обра- зуют базис двойственного кода,- и любое слово двойственного кода — линейная комбинация строк проверочной матрицы. Зна- чение проверочной суммы, соответствующей этому слову, равно сумме значений проверочных сумм, соответствующих строкам проверочной матрицы, через которые выражается это слово. Другими словами значение любой из проверочных сумм, орто- гональных относительно некоторого символа, равно сумме не- которых символов синдрома. Как правило, таким способом опре- деляют неявные проверочные суммы и по ним символы слова- ошибки. Во втором типе мажоритарного декодирования значения ор- тогональных проверочных сумм находятся непосредственно как линейные комбинации символов принятого слова. Таким спосо- бом определяют явные проверочные суммы и по ним — символы кодового слбва. Первый тип мажоритарного декодирования применяют для высокоскоростных кодов (^/n>‘/2), второй тип — для низко- скоростных кодов. Обобщением мажоритарного декодирования в един шаг яв- ляется мажоритарное декодирование в L шагов. Пусть в векторе h = (ftj, h^,..., hn), h£ V1 символы hi,, h^, ..., hi( не р’вны нулю. Тогда вектор h будет проверочным для линейной комби- нации 1гцЬ'ъ + hifiii ... + a hb' — р (0 i= GF (q))— провер- кой этой комбинации. Если h, h'S V1 и для i = iv (v = 1,2,...,/) имеем hi* “ h'iv-, а для всех других i (i = 1, ..., n) Mit = 0, to 80
вектора h и h' называются ортогональными относительно линей- ной комбинации с = h^bi 4- ... 4- Tufa Пусть мы имеем некоторое множество линейных комбинаций с“>,..., c(v),..., c(m>, для каждой из которых может быть найде- но dp-t ортогональных проверок. К ортогональным проверкам, присоединяют тривиальную проверку (для линейной комбина- ции см это c(v)=cfv)). Для линейной комбинации c(v) по проверочному вектору l1(v,i»)= (/цомо, ффф> ц=1.......dp—1 построим два сопро- вождающих вектора u<v)= (wt(v), ..., u„(v)) и v(v-’,)=(o1(v-'*), ... ...»vnM) такие, что если входит в c(v), то utiv)=h/'1^ и. иначе ui(v)=0 и , 'Линейный (n, k) -код V называется мажоритарно декодируе- мым (с алгоритмом Месси) в L шагов с реализуемым расстояни- ем если код К,двойственный коду V1-L=<V-L(J{u(1),• • • ,u(m)}>, мажоритарно декодируем в L—1 шагов с реализуемым расстоя- нием dp (<А>— линейная оболочка векторов множества А). Пусть Q линейное n-мерное пространство над GF(q). и Е= = {е1; е2, ..., еп} его базис. Пусть V подпространство Q и {g1( g2....gj — базис V. Слово beV может быть представлено, в виде b=bte14-&2e24-.. .+М, или b—aigl+aig2+.. .4-afeg*. По- следнее представление можно также рассматривать как коди- рование информационного слова а= (а„ ..., ак) в кодовое слово. Ь= (Ьъ ..., Ьп) кода V с помощью порожденной матрицы §11 §12 • • • §1п §21 §22 • • • §ъп 61 gjt §kl §k2 * * ’ ^kn & = i= 1» 2,...., k\ b = aG. Рассмотрим в пространстве Q линейную числовую функцию f(x), xeQ — линейную форму координат вектора х. Например, проверочные суммы для слова Ь, являющиеся скалярными про- изведениями слова b и слов двойственного кода, есть линейные формы символов слова’ Ь. Линейную форму f<(x), xeQ будем называть проверочной формой для базисного вектора g{ и информационного символа at кода V, если h(gj)=6lj, /=1, 2 ..., k. Если /<(х) —провероч- ная форма для базисного вектора g<, то Д(Ь) =а,- для всех ЬеК таких, что b=a1gi4-...4-aigi4-...4-aKgfc. Проверочную форму называют также декодирующим функ- ционалом. Минимальное подмножество векторов Eff= {е,р ..., } ба- зиса Е={е1( ..., е„} пространства Q такое, что jh(Ci)=O для всех ъ&Ец, называется носителем проверочной формы f((x). 81
. Говорят^ что множество проверочных форм Д,(х), . для информационного .символа at (базисного вектора g{) ортого- нально, еслй носители этих проверочных форм для не пересе- каются. ' . 7' Код V называйся мажоритарно декодируемым (с алгорит- мом Рида) Д один шаг с реализуемым расстоянием dP(d9s^.d) , если существует базис {gb gj кода V такой,.что для каждо- го базисного вектора (и соответствующего информационного символа) можно построить не менее d9 ортогональных проверок ных форм. * ' ,, . АлгоритМ.декодйрования Рида в один шаг с реализуемым расстоянием dp состоит в следующем. Предположим, что. для каждого информационного символа dp имеется dp проверочных форм с йёперёсекающймйся носителями. Тогда значение инфор- мационного символа at, i=l,‘..., k полагают равным значению, которое принимает абсолютное большинство его проверочных форм.' \ • Код 'У'может. быть таков, что не. для всех, а лишь для неко- торых ’Информационных символов можно найти df проверочных форм, с неперёсекающимися носителями. Бёз потери общности будем считать, что это символы alt а2, ..., ah. Соответствующие им базисные вектора gt, g2,..." gfl образуют код Vi, являющийся подкодом кода V. Рассмотрим прямую'сумму V^=Vt'®Vi и.выделим в коде У/ все те информационные символы, для которых можно построить dp проверочных форм с непересекающймися носителями. Пусть это будут символы ail+i.ah. .. • Рассмотрим прямую сумму У/= К'® Уг, где У2 — код, по- рожденный векторами g11+1, ..., gl2J! Выделим в коде У/ макси- мальный подход У2, для всех информационных символов кото- рого можно построить dp проверочных гформ с непересекающи- мися носителями. Пусть мы можем повторить эт/ процедуру вплоть до опреде- ления, кода Уд-1(У =я Уд-i ®Уь-«Ф'.:. .©УД, “для всех информаци- юнных символов которого можно найти dp проверочных форм с непересекающймися носителями. Заметим,’ что каждый йз кодов Ум (ц=1,..., А), Уд-1 = Уд мажоритарно декодируем в один Шаг с алгоритмом Рйда. Тогда говорят, что код У мажоритарно декодируем в L шагов с алго- ритмом Рида с реализуемым расстоянием dp. ' .. На первом шагё алгоритма Рида по принятому слову Ь'= = (Ъ/,..., bn') определяются информационные символы at, а2,... ..., а;„ соответствующие базисным векторам {gi, g2.gzj = =£, кода У1. На втором шаге по слову Ь'—v1( где и v^atgi-F... определяются информационные символы а11+1...аг„ соответствующие базисным векторам {g11+i, ..., gl2}=£2.KOfla У2. 32 • .
L-l Наконец, на L-м шаге по слову Ь' — vu определяются ин- и=х формационные символы «z^+i, ..a'iL, соответствующие базис- ным векторам {gzL_1+i, .... gzL} = El кода VL- Пусть линейный (п, £)-код.У мажоритарно декодируем в L шагов с алгоритмом Месси с реализуемым расстоянием dp. По- строим базис кода V, в котором этот код будет мажоритарно'де- кодируем в L шагов с алгоритмом Рида с тем же самым реали- зуемым расстоянием. На первом шаге базисные вектора g{, t=l, А находим как решения системы уравнений &Нт=0, g<u(i) = l, g,u(j)=0, j=/=i, /= 1, 2,..., /1( где Н — проверочная матрица кода V; и(1), uw — линейно независимые вектора, сопровождающие линейные комбинации с(1), ..., с(11), определяемые на первом шаге алгоритма Месси, такие, что Vt±= Р-ф(и(|),..., и’1*’). Для каждого базисного век- тора gi (i=l, ..., 4) зададим ^проверочных форм .b'v(iM) (ц== = 1, ..., dp—1) и b'u(<) и с их помощью определим информаци- онные символы alt..., alt. На втором шаге находим базисные вектора g«, 1=4 + 1, ... ..., 12 как решения системы уравнений gitf — 0, паю = 1, gzu</> =0, j^i; i = lt + 1, ...Ji, где Нс—проверочная матрица кода V\, а вектЪра и('1+1), ..., и('2> такие, что V2J-=V1J-©<u(,'+1,) .... и'2>. Для каждого базисного вектора g< (i=4+l, • • •, 4) зададим dp' проверочных форм b/v’*-**’ (ц=1, .... dp—1) и b/u(i>, где b/<=b—^atgt. С по- i₽=l мощью этих форм определим информационные символы ah+i, ... ..., al2 и т. д. На последнем L-м шаге найдем базисные вектора g(, i= = Il-i + 1,как решения системы уравнений gM-i = 0, gzu<6 =1, =0, i^i, i = h.-i+ 1,— Л где HL~i—проверочная матрица коДа Vl-i, а вектора u<L“1+1), . .. ..., u<*> такие, что Vl = ф (u(Zz-1+1), ..., u(*>). Для каждого базисного вектора gi( i = lL-i + 1, ..., k зададим dp проверочных форм bi-iV^»*)(р = 1, ..z, dp— 1) и bL-iU(,), где b£_i = b^2 — lL-l — 2 =b' — 2 °'®- 83
Пример. Пусть V — двоичный циклический евклидово-геометрический *(15.5)-код с минимальным расстоянием d=7, мажоритарно декодируемый в 2 шага с алгоритмом Месси. Проверочный многочлен кода h(x) = (х-Ы) (х++ +х3+1), проверочная матрица 110101000 060000 01 1010100000000 11100 '0 010000000 _ 01 1 100001000000 ““ 00 1 11 0000 1 00 000 1 1 00 1 00000,1000 о 101 100000001000 010110000000100 111110000000010 101010000000001 . Пусть b'= (b\t b2't ..., &i5z) — принятое слово кода V. На первом шаге алго- ритма Месси определяем множество линейных комбинаций сЮ=Ь/+ 4-Ь'(<+1) mod is, i=.l> 2, ..., 15. Так, например, линейная комбинация сСОяввб/ч- Ч-Ьг' определяется следующими шестью проверочными соотношениями: *1 + *2 + *8 + *io = *$!> Ь1 + *2 + Ь& + Ь9 = Ь1 + *2 + *10 + *15=55» *^ + *2 + *< + *8 = S*> *1 + *2 + *7 + *13 — Ь1 + Ь2 + *12 + *24=S8- (5.3.5) Среди сопровождающих векторов uW возьмем четыре линейно не- зависимых вектора: и<1>= (110000000000000), u<2>= (011000000000000), и<3)= = (001100000000000), u<4>= (000110000000000) таких, что Vi-L= V-i-©<u<1), ... u<4>>. Базисные вектора g£ (i=l, ...» 4) определим из систем уравнений gi#T=0, g<uU)=6u,/=l,4. Для каждого i=l, ...» 4 имеем систему 14 линейно независимых уравнений с 15 неизвестными. В результате решения системы получаем g!= (011110001001101), g2= (110001001101011), g3= (111000100110101), g4= (111100010011010). Базисный вектор g5 определим из решения системы g5#r = 0, g5u(*> = 0, *=1, ... 4; g5u5=l, где u<5)= (100000000000000)., Решая систему, находим g5= = (111111111111111). В базисе gi, g2, ge, g4, gs код V мажоритарно декодируем с алгоритмом Рида. Проверочные^формы для первого информационного символа а\ (базис- ного вектора gi) имеют вид fi(J)(b') =b'v^'>, /=1, 6; fi(7)(b') = b'uO>, где ц(О определяются из (5.3.5), например, v(O= (001000000100000), u(')= = (110000000000000). <84
Проверочные формы для информационных символов ац, а3 и получа- ются из проверочных форм для at циклическим сдвигом вправо на одну, две и три позиции соответственно. Проверочные формы для а$, определяемого на втором шаге, имеют вид 4 /s<»)(b/)=bi'Xj, где b/=b'—Kj—вектор, /-я компонента которого i=i равна 1, а остальные 0, / = 1, 2,..., 7. 5.4. Декодирование линейных кодов в обобщенной метрике Обобщенная метрика. Пусть Z — линейный (л, &)-код над *GF{q) с минимальным расстоянием Хэмминга d, y=/=(yi,у2, ... • • • > Уп) — некоторое слово с символами из алфавита Q, состоя- щего из элементов поля G'F(q) и символа х, называемого стер- тым символом или, кратко, стиранием. Если в слове у нет стер- тых символов, то существует не более одного кодового слова .г— (zi, z2, ..., zn) кода Z такого, что d(y, z) <Zd/2, где d(y, z) — расстояние Хэмминга'между у и z. Если в слове у имеется tn .стертых символов, то в коде Z существует не более одного слова z' такого, что s+tnl2<zdl2, где s — число нестертых позиций, в .которых у и z' различаются. На использовании этих свойств ос- нованы практически все алгебраические методы исправления не- зависимых ошибок в блоковых кодах. Теперь предположим, что о каждом символе yt слова у= = (yt....уп) имеется дополнительная информация, выражае- мая числом р/’0, называемым крэффициентом недо- стоверности символа у{, i=l, 2, ..., п. Стертым символам, если таковые имеются в слове у, присваивается наибольший коэффи- циент недостоверности, равный ‘/2- Будем считать, что все сим- волы любого слова кода Z имеют коэффициент недостоверности, равный нулю. Таким образом, каждому слову у.= (t/t, уг..уп) о символами из алфавита Q ставится в соответствие вектор ₽„<»’), 0<pi(I',<72, 1=1, 2, .... л. Назовем обобщенным весом слова у число wa (у): z \ [ Pi, У( = ® S U — Рь У/¥=0. Пусть даны два слова у= (z/b у2, . . •, уп) и z= (zb z2, ..., zn) с векторами недостоверности p(v)= (p1(v), p2(v).PnW) й р<г) = -= (Р1<г), Рг^\ .... pn(I)) соответственно. Определим функцию п My.'z) = 2 ti,^ = IP?’ —P(iz)|, yi^zh 1-|Р?°-Р1г)1. (5.4.1) и покажем, что она является метрикой, т. е. обладает свойства- ми рефлективности* симметричности и удовлетворяет неравенст- 85
ву треугольника d0(у, z)<d„(y, w);+d0(w, z) (5.4.2) для любых слов у, Z, W. Из этих свойств два первых очевидны, доказательства требу- ет лишь последнее. Пусть п d0(y,w) = 2 ФьФ/= ;=i |Р^-рГ|, i-IP^-PH d0(w, z) = %<,%< = i=l I Й’’-P?’ I. 1-1Йч-Й’|. Возможны 5, вариантов соотношений тами слов у, z и w (i= 1, 2,..., п): yt = Й, yi^wi (5.4.3) a>i = zit wt^<zt. (5.4.4) между d-ми компонен- и а) y(=Zi=w{; б) yt=zit y(=£wf, z{^wf; в) yt¥*z(, yt=w(, zt^=wf\ г) yi^Zi yt^=wi, z(=Wi; Д) y{^zt, z^Wf. Для каждого из этих пяти соотношений справедливы следу- ющие пять неравенств: a) Ip^-P^KIP^-Pn + Ipr-P^b 6) IP^-p^lci-IP^-pr’ld- 1-IP^-PHl, в) 1 -ipI10-р<2)к |р^-pH +1 -1рН-рН, (5.4.5) г) i-ip^-pr’Ki-IP^-pHl + lpr-P^I, Д) I-IP^-P^KI НР<Ю-РН+ I-HP^-PH- Действительно, неравенства а, в и г — это неравенства вида |а+&|г^|а| + |6| и справедливы при любых р/у), р/х), р/ю). По- скольку коэффициенты недостоверности неотрицательны и не превосходят 1/2, правая часть неравенств б и д всегда не мень- ше 1, в то время как левая часть неравенства б не больше .1/2, а левая часть неравенства д не больше 1. Поэтому неравенства б и д выполняются при любых возможны^ значениях р/у), р/х) и р/ш). Из неравенств (5.4.5) следует, что • ' Ф«^ф.+Х«, i=l, 2, ..., п. (5.4.6) Суммируя (5.4.6) по всем i, i=l, 2.п, получим (5.4.2). Функцию d0 (у, z) будем называть "обобщенным расстоянием 86
между у и z. Если z и w — кодовые слова, то d0 (z, w) совпадает -с расстоянием Хэмминга d(z, w) между z и w. Лемма 5.4.1. Для любого слова y=(ylt уг......1/п) ,над ал- фавитом & существует самое большее одно кодовое слово z кода Z такое, что d„(y, z)<d/2. (5.4.7) Действительно, если найдется еще одно слово z'eZ такое, что (у, z') <d/2, то do (у, z)+d0(z/, y)<d. (5.4.8) Но согласно (5.4.2) " d0(z, z')^d0(y, z)+d0(z', у). (5.4.9-) •Сравнивая (5.4.8) и (5.4.9) и учитывая, что d0(z, z')=d(z, z'), получаем d(z,iz,)<d. Это противоречит тому, что минимальное расстояние кода Z равно d. Если слово у имеет вектор недостоверности р(») в (рЮ р(«)...рШ), . р(Л=- Р/8» i = h. , im, (О, в пр.отивном случае (в слове у имеется т стираний, а остальные символы имеют ко- эффициент недостоверности, равный 0), то существует не бо- лее одного слова zeZ такого, что d0(у, z) =s+m/2<d/2, где s — число нестертых позиций, в которых у и z различаются. Общий метод декодирования в обобщенной метрике. Для определения по слову у= (yt, у2, ..., уп) и его вектору недосто- верности p(v) = (Р/*’, ₽2(v>, • • •, ₽й(а>) кодового слова z = = (zt, z2, ..., zn) кода Z, удовлетворяющего (5.4.7) будем ис- пользовать следующий алгоритм. Предположим, что для кода Z известен алгоритм исправления ошибок и стираний, реализу- ющий минимальное расстояние Хэмминга кода d. Упорядочим символы вектора pw в виде убывающей после- довательности (добавив к ним произвольное Р^г такое, что >$’>$"<• - <5.4.10) Будем прследовательно для каждого 2.....п+1) присваивать коэффициенты недостоверности 1/2 символам, ко- эффициенты недостоверности которых расположены в (5.4.10) •левее _р<т (иными словами, считать эти символы стертыми), а остальным символам присваивать коэффициент недостоверно- сти 0. На каждом шаге будем пытаться декодировать построен- ные таким образом, слова у1'п) с помощью алгоритма исправле- 87
яия ошибок и стираний. Покажем, что если существует слово» zeZ такое, что d0 (у, z) <d/2, то хотя бы на одном шаге d0 (y(m), z) =sm+tn/2<d/2, где sm — число нестертых позиций, в которых у(т) и z различа- ются. Слову у(т> соответствует вектор недостоверности gm = (.gm,ly gm,2y • • • > gm,n)у , где gm,v= gm Поэтому (У'т’> z) — 2 'фтл = Введем обозначения: = 1 - 2₽|f>, К = 2 (₽£>- $>), ... (В^>) = //2’ /</й; /=1.2, v 10, т = 1,2,...,« + 1. gm.v, если у\ = zv, 1 ’ если t/v ) —г— Zvo п+1 п Тогда 2 = 1. Пусть d0(y, z) = 2^v‘ Непосредственной про- Ш=1 V«=l верной убеждаемся, что П+1 фу = 2 ^лгфт,у> т=1 п л+1 л+1 л (у., z)= S S 2 ф«»** V—1 т=1 гпс=1 у=1 Предположим, что для всех т 4 (y<m).z) = fn» + m/2 = 2 d/2- v₽=l Тогда defy, z) = 2 2 ^bn,v><i/2 2 —d/2. m=i v=l ' m=l Но это противоречит условию d0 (у, z)<d/2. Поэтому d0(y(m), z) =sn+m/2<d/2 хотя бы для одного т, и с помощью алгоритма исправления! ошибок и стираний по слову у*"0 определяется кодовое слово z. Вообще говоря, делая попытки декодирования для каждого т, мы можем получить не одно кодовое слово, а некоторое мно- 88
.жество. Чтобы выяснить, какое из этих слов истинно, доста- точно проверить выполнение условия (5.4.7). Кроме того, не нужно делать все n+1 шагов декодирования. Число шагов не превосходит min{(d+l)/2, ц.}, где ц — число различных коэф- фициентов недостоверности символов слова у. Описанный алгоритм декодирования в метрике d0(y, z) яв- ляется вариантом метода декодирования по критерию миниму- ма обобщенного расстояния, введенного Форни. Во всех тех си- туациях, где применялся критерий МОР, можно использовать и данный алгоритм. В особенности он удобен при декодировании произведений кодов и их прямых сумм. Это применение алгорит- ма рассматривается в следующей главе. Мажоритарное декодирование в обобщенной метрике. Ра- нее мы показали, что для определения в обобщенной метрике ио слову у= (уъ у2,..., t/n) и его вектору недостоверности 0<!° = = (01(у)» P2<IZ>> • • •» &n<v>) кодового слова г= (zt, z2,..., zn) кода Z можно использовать любой метод декодирования (с исправле- нием ошибок и стираний) кода Z в метрике Хэмминга. Если •код Z допускает мажоритарное декодирование в метрике Хэм- минга, то его декодирование в обобщенной метрике может быть существенно упрощено по сравнению с общим случаем. Ради простоты изложения предположим, что код Z — двоич- ный и полностью ортогонализуем в один шаг. Обобщение на случай кодов над произвольным основанием и случай ортогона- лизации в L .шагов легко получить по аналогии с мажоритар- ным декодированием в метрике Хэмминга. Пусть было передано слово z= (z1( z2...z„) кода Z, соот- ветствующее .информационному слову а= (at, а2, .., а*), и при- нято слово y=(«/i, Уг, ..., Уп) с вектором недостоверности pw = == (Pi(v>. ₽2(в), • • • > ₽пы) такое, что d0(y, z)<d/2. По принятому слову у = (уь у2, ... уп) вычислим для i-ro информационного символа a,-(i=l, 2, ..., k) значения d—1 ортогональных прове- рок. Еще одно значение для а( дает тривиальная проверка а<= = а{. Обозначим через Хо, Ai и соответственно число проверок, дающих значение а,=0, а,= 1 и содержащих стертые символы. При декодировании в метрике. Хэмминга истинное (передан- ное) значение, символа щ считается равным 1, если и О в противном случае. При декодировании в обобщенной метрике будем учитывать значения коэффициентов недостоверности символов принятого слова у. Обозначим через S и S суммы коэффициентов недостоверности символов, входящих в проверки, дрющие значения а,= 0 и а(=1 соответственно. При декодировании в обобщенной метрике переданным зна- чением а{ будем считать 1, если *1-2 2 0<>Ч-2 S (5-4.11) и 0 в противном случае. 89
Для обоснования решения (5.4.11) предположим, что пере- данное значение символа at равно 1. Тогда в каждой из Ло про- верок имеется по крайней мере один ошибочный символ и <Му,*)>2 (i-fy)+ 3 з Р'+ 2 Рь (5-4.12) /=i {sl' i^ie где рь — коэффициент недостоверности одного из ошибочных (лю- бого) символов в /-й проверке (/ — 1, .,., 10); 2 Р^ + 2 Р/ =* /=! is/' О = 2 ₽« и 2 Р/— сумма коэффициентов недостоверности в А.с про- itEJo верках, содержащих стертые символы. Поскольку d0(y, z)-<d/2,To> 2 piCd/2- ie/i A,' S(1-₽<,)+ 2 P‘+ /—1 ^!С 0 (5.4.13) Неравенство (5.4.13) равносильно Ч-2 2₽/>^-2 d/2- 2 (i-₽/p+ 2 ₽<+ 2 fr , re/ Представив правую часть (5.4.11) в виде ч-2 2 Р'/+ 2 М’ /=1 ie/o is/e J J (5.4.14) видим, что справедливость неравенства (5.4.14), будет след9вать из справедливости (5.4Л1), неравенства учитывая 1,-2 d/2- 2(i-Pi/)+ 2 P'+ S P< > is/' о 4-2 г Хо 2 ₽'/+ S ₽' 1~1 te=l' (5.4.15) Неравенство (5.4.15) приведением. подобных членов преобразу- ется в равносильное неравенство ^-i + ^o+2 2Pi"b4 2Pi>rf- i&c (5.4.16) /e/1 ~ Xo 90
Заметим, что 2 и + Ч + = d. Поэтому (5.4.16) «е/с следует из 4 2 £«•> 0. которое справедливо для любых 0i>O- ' гЧ Таким образом, решение (5.4.11) при мажоритарном декоди- ровании в обобщенной метрике всегда приводит к истинному информационному слову а= (аь а2...........ак), если только tZ0(y, z)<d/2. ЗАМЕЧАНИЯ 5.1, 5.2. Свойства линейных и циклических блоковых кодов подробно опи- саны в книгах Ф. Дж. Мак-Вильямс и Н. Дж. А. Слоэна [66], У. Питерсона и Э. Уэлдона [73], Т. Касами, Н. Токура, Е. Ивадари, Я. Инагаки [59], Р. Гал- лагера [33], Э. Берлекэмпа [6] и др. Здесь мы ограничиваемся материалом, используемым в последующих главах. В частности, приводим алгоритм деко- дирования кодов Рида — Соломона с исправлением ошибок и стираний, при- меняемый при декодировании каскадных кодов и прямых сумм произведений кодов, рассматриваемых в главах 6 и 8. В 5.3 использованы результаты работы [28], которая, в свою очередь, развивает работу Гора [122]. Мажоритарное декодирование линейных и цик- лических коув подробно описано в книгах [62, 66, 71, 73]. 5.4 основан на работе [18]. Описанный алгоритм декодирования в обоб- щенной метрике является вариантом метода декодирования по критерию ми- нимума обобщенного расстояния, введенного Форни [83]. Декодирование в обобщенной метрике можно трактовать как декодирование в каналах с ?-ич- ным входом и (2-ичным выходом (Q>q) илц как декодирование с мягким'ре- шением в отличие от декодирования с жестким решением (т. е. декодирования в метрике ‘Хэмминга) [83, 166, 169, 170, 175]. . Глава 6 МЕТОДЫ КОМБИНИРОВАНИЯ ЛИНЕЙНЫХ КОДОВ 6.1. Прямая сумма, перемежение, расширение и соединение кодов Прямая сумма. Пусть Q—n-мерное линейное пространство над GF(у). Линейные (n, kt)- и (п, £2)-коды V*, и соот- ветственно kt- и й2-мерные подпространства Q. Говорят, что ли- нейный (п, &)-код V есть прямая сумма линейных кодов У», и, У*,, если любое слово veV представимо в виде v=vt + v2, v2eV2 и это представление единственно, т. е. из v=v1+v2= = ut+u2; Vi, UtfeVi-, v2, и2ЕУ2 следует v2=Ui и v2=u2. Порождающая матрица линейного (и, А)-кода V—прямой 91
суммы кодов Vk, и — равна где G, и G2 — порождающие матрицы кодов IZkl и- Vk2 соответ- ственно. Число информационных символов кода V равно k=ki+k2t. минимальное расстояние d2}, где d{— минимальное- расстояние кода Ук{, i=l, 2. Неизвестны непереборные спосо- бы определения минимального расстояния прямой суммы V произвольных линейных кодов УД1 и Vk2. В некоторых случаях: расстояние удается определить довольно просто. Примером слу- жит следующая теорема. Теорема 6.1.1. Пусть Vt—линейный (п, £)-код с минималь- ным расстоянием dt и максимальным расстоянием Dit D^. ^.п—di, V2— линейный (п, 1)-код с повторением и d2=n. Тогда! прямая сумма V=Vt©V2 есть (п, А+1)-код с минимальным рас- стоянием d=dY. Действительно, возьмем произвольное ненулевое слово ve eV и представим его в виде v=v1 + v2, vteVt, v2eV2. Если v2= =0, то w(v) =k»(v1) ZSsdp Если же v2=£0 и a»(v2)=n, то' w(v) = =a>(v1+v2)i:>u!(v2)—o»(vtj —D^d{. Прямая сумма V циклических кодов Vt и V2 йад GF(q} также будет циклическим кодом. Если gi(x)—порождающий- многочлен кода Vi2 a g2 (х) — порождающий многочлен кода V2t. то HOK{£i(x), g2(x)}=xn—1 и g(x) = (gl(x), g2(x)) — порож- дающий многочлен кода V=Vi®V2. В частности, если хп—1=- =gi(x)g2(x)v (n,q) — 1, то V=Q. Повторение кодов. Пусть —(no fej-код с минимальным- расстоянием Будем повторять каждое слово кода Vt X раз и рассматривать получающиеся последовательности длины п= =^nt как слова нового кода V, называемого кодом-повторением? кратности %. Код V— линейный (Хпь ^0-код с минимальным расстоянием d—hit. Если исходный код Vt циклический с по- рождающим многочленом gi(x), то код-повторение V также циклический с порождающим многочленом g(x) = =gi(x) (хКп‘— 1)/(хп>— 1). Укорочение кодов. Практически важной (в особенности для- циклических кодов) является операция укорочения кода. Уко- рочение может применяться с различными целями. Часто оно- определяется техническими требованиями. С другой стороны укорочение есть один из эффективных способов построения ко- дов с большим расстоянием. Пусть Vt — линейный (иь Л^-код с минимальным расстоянием d(. Рассмотрим множество слов; кода Vt, первые X символов (для систематического кода это бу- дут информационные символы) которого равны нулю. Укоротим теперь каждое такое слово, исключив из него первые X симво- лов. Множество полученных таким образом слов длины nt—X образует линейный (и, £)-код V (n—tii—X, k=kt—X)—подкод 92
кода 14. Минимальное расстояние кода V d^dt. Если (n1( kt)- код Vi — циклический, то (n, k) -код V называется укороченным циклическим кодом. Код V уже не будет циклическим, но его свойства будут близки к свойствам циклического кода. Так, V есть идеал в алгебре многочленов по модулю многочлена Г(х) (F(x)#=xn—1), порожденный тем же самым многочленом g(x), что и код 14 (Vi — идеал в алгебре многочленов по модулю хП|—1). Многочлен F(x)=xn—г(х), где г(х) определяется из равенства xn=g(x)q(x) + r(x), причем степень г(х) меньше степени g(x). Перемежение и расширение кодов. Перемежение — эффек- тивный метод построения кодов с требуемыми свойствами. Весь- ма часто перемежение применяется для разнесения (декорре- ляции) ошибок в каналах с группирующимися ошибками. Раз- личают посимвольное и цоблоковое перемежения. При посим- вольном перемежении (разнесении) степени % передача (в ка- нал) слов линейного (л, k) -кода V одного за другим заменяется для каждой совокупности из Л слов передачей сначала первых символов (по порядку) этих слов, затем вторых символов и т. д: При поблоковом перемежении К кодовых слов предварительно разбиваются на блоки (длина кода кратна длине блока), а за- тем (в канал) передаются первые блоки кодовых слов, за ни- ми — вторые блоки и т. д. В то же время перемежаемую совокупность Л кодовых слов кода V можно рассматривать как слово нового кода Vi, назы- ваемого кодом-иеремежением. Точнее, (посимвольным) кодом— перемежением степени Л линейного (n, k) -кода V над GF(q) называется линейный (/гх, 6х)-код V* над GF(q) такой, что если (&i(1>, ..., b„w), (&.<?>.&„<2)), ...» (Ь1(М, .... &П(М) — произ- вольные слова кода У, то (6t(1), bt(2).btw,..., bnw, bn{2), ... ..., &nw) будет словом кода 14, и обратно, если (6i(1), bii2), ... ..., biw, ..., &n(2), ..., baw) —произвольное слово кода К, то (&i(1>. ..., V‘>), (bi(2), .... Ьп(2)), .... .... Kw) - слова кода V. Очевидно, лх=лЛ и Коды V и V* имеют одно и то же минимальное расстояние (о способности кода 14 исправлять пакеты ошибок см. в гл. 7). Если (л, k) -код V — циклический с порождающим многочле- ном g(x), то посимвольный (пХ, £%)-код — перемежение V* также будет циклическим с порождающим многочленом g(xx). Действительно, произвольный кодовый многочлен кода V>. пред- ставим в виде f(xx), где f(x) —кодовый многочлен кода V. По- рождающий многочлен g(x) кода V делит многочлены f(x) и хя— 1, а многочлен g(xF), в свою очередь, делит f(x*) и х”*—1. Отметим, что символы кода V и его кода — перемежения V* принадлежат одному и тому же полю GF(q). Преобразуем код V* следующим образом. Первые % символов кода V* будем считать представлением некоторого символа поля GF(q2) в виде вектора Х-мерного линейного пространства над GF(q) и запи- сывать последовательность этих X символов из поля GF(q) как 93
символ поля GF(q>-). Аналогично следующие А, символов кода К будем считать представлением некоторого символа поля GF(q) в виде вектора Х-мерного линейного пространства над GF(q) и записывать поэтому последорательность этих 1-симво- лов как символ поля GF{qx) и т. д. В результате этих преобра- зований получим линейный код V, имеющий те же параметры п, k и d, что и код V, кодом-перемежением которого является код Ух. Но если символы'кода У— элементы GF(q), то симво- лы кода У — элементы расширения поля GF(q) —поля GF^q*). Поэтому код У естественно назвать кодом-расширением (степе- ни 1) кода У. Теперь рассмотрим в некотором смысле обратную операцию. Пусть У — линейный (п, &)-код с символами из GF(jp) и мини- мальным расстоянием d. Множество слов линейного кода У та- ких, что все их символы являются элементами поля GF(q), об- разует линейный подкод У над GF(q) кода У над GFlq*), на- зываемый GF(q) -подкодом. Как правило, число кодовых слов <?Г(/?)-подкода У намного меньше числа слов в коде У. Наи- меньшее различие в мощностях кодов У и У получается тогда, когда код У можно получить с помощью операций перемеже- ния и расширения из его же GF(q)-подкода. Справедливо сле- дующее необходимое и достаточное условие того, что У над GF(q>i) есть код-расширение своего GF (q)-подкода У. Теорема 6.1.2. Линейный код У над GF(q>') есть код-расши- рение своего GF. (q) -подкода У тогда и~только^тогда, когда су- ществует такая проверочная матрица Н кода У, что все ее эле- менты являются элементами поля GF (q). Доказательство. Необходимость. Пусть код У над GF(g*) есть код-расширение своего GF(q) -подкода У. Если Н— проверочная матрица подкода У в обычной форме, т. е. все ее элементы суть элементы поля GF(q), то из определения кода- расширения непосредственно следует, что Н будет проверочной матрицей кода-расширения кода У. Достаточность. Предположим, ,что найдется такая проверочная матрица Н кода У над GFiq*’), что все ее элемен- ты являются элементами поля GF(q). Рассмотрим GF(q)-non,- код кода У. Очевидно, проверочная матрица Н кода У может служить проверочной матрицей и для GF(q) -подкода У кода У. Далее, код-расширение У* степени А, кода У будет иметь прове- рочную матрицу, совпадающую >с проверочной матрицей кода У, т. е. с Н. Два кода, У* и У, имеющие одну и ту же провероч- ную матрицу, должны совпадать. Следствие. Код У над GF(qK) есть код-расширение сво- его GF (q) -подкода, если все элементы'проверочной матрицы. И кода У суть 0 или 1. 94' ’
Последнее утверждение, часто применяется к различным классам линейных кодов, и в первую очередь к кодам с мажо- ритарным декодированием. . Соединение кодов. Пусть даны две прямоугольные матрицы ап ai2 ... а1т. а& О22 ... aWl bll" b12 • • b21 b^ ... akil aJit2 ‘ • • akitlt ЬЬ.\ bk.9. • • • bl Обозначим через А'- и В' матрицы размерности n/ХЛ/ и га2'Х Х&/ соответственно, получающиеся из. матриц А-и В вычерки- ванием некоторого числа строк и столбцов. Будем называть соединением первого типа матриц А и В прямоугольные матрицы вида . - Сг : Ов, А' Г В7 Нулевые матрицы 0А- и Ов- выбираются из условия прямоуголь- ности матриц и Сг. Размерность матрицы Ci есть ihXkb = п1'+п/, k^ki'+m, размерность матрицы Су есть nvXky, ky—kt. Соединением второго типа матриц А и В называют матри- цы вида г И М г _ л" I 11 |ол. В” |и 11' ов, В" 0^1; С' = А' в и С" = Размерность матрицы Сп есть nuxkn, Ьп=т+П2", 0^т<п", &n=&i"+V', размерность матрицы C1V — nlvXkn’, nU’=n",. kir=k"+кг". Оба типа соединения, используются для построе- ния линейных кодов, исправляющих ошибки различного вида. Ограничимся здесь рассмотрением двух частных видов (ис- пользуемых в гл. 8) соединения первого типа матриц Л и В: <1- Матрица А' получается из матрицы А отбрасыванием нижних kt—ki строк (для определенности полагаем в (6.1.1) fe4^fe2). Матрицу С' будем называть минимальным, а матрицу С" мак- симальным соединениями матриц Л и В. Пусть теперь Vt и V2 — линейные (n„ kt)- и (п2, Л2)-коХы над GF(q) с минимальными расстояниями dt и d2 соответственно, Gt и G2 — порождающие матрицы кодов Vt и V2. Тогда, как легко видеть, минимальное соединение G'. матриц.Gt и G2 по- рождает, линейный (гц + гаг, &2)-код У' с минимальным расстоя- нием d'=dt + d2, а максимальное соединение G" матриц Gt и G2 95.
порождает линейный (п4+П2, &1)-код V" с минимальным рас- стоянием d"^dt. Оказывается, во многих случаях для кода Vt можно выбрать такую порождающую матрицу О1( что код V" будет иметь ми- нимальное расстояние d">dt. Так, предположим, что код V, имеет подкод размерности —k2 с минимальным рассто- янием dt>di. Построим порождающую матрицу кода Vt таким •образом, чтобы ее нижние строк образовывали базис подко- ла Vi. Теорема 6.1.3. Матрица Ga о €" = | Gi. Gt I G1 О (6.1.2) где Gt, Gt— l^l и G2— порождающие матрицы линейных ко- дов Vt и V2, 0 — нулевая матрица размера n2X (kt—k2) по- рождает линейный код V" с минимальным расстоянием d"= =min{#t, dt+J2}. Доказательство. Произвольное слово v" кода V" •есть линейная -комбинация строк порождающей матрицы G". Если в эту комбинацию входит хотя бы одна из строк матрицы G2, то вес a>(v")^dt-j-d2. В противном случае вес 6.2. Произведения кодов Итеративные коды. Пусть даны линейные (п„, £„)-код V и (пт, &т)-код Т над GF(q) с минимальными расстояниями dv и dT •соответственно. Кодовое слово и прямого (итеративного) произ- ведения (итеративного кода) U sap..GF(q) кодов V и Т стро- ится следующим образом. Информационное слово а — последо- вательность длины ku — преобразуется по некоторому правилу в прямоугольную таблицу (матрицу) А, имеющую kv строк и kT столбцов. Каждая строка кодируется кодом Т, а каждый столбец — кодом V. В результате получается прямоугольная матрица А?, состоящая из п/строк и пт столбцов. Символы этой матрицы образуют кодовое слово и кода V. Независимо от по- рядка кодирования, а именно от того, что кодируется сначала — строки или столбцы, кодовое слово и однозначно определяется по информационному слову а. Легко видеть, что итеративное произведение U линейных кодов V и Т также будет линейным кодом. Длина кода U равна nu=n^nr, число информационных символов ku—kJtT, минимальное расстояние du=d„dT. Слово и линейного кода U — это «„-мерный вектор, получающийся из матрицы Аи считыванием символов в заданном порядке. Чаще всего используется считывание символов по строкам, считыва- ние по столбцам и циклическое упорядочение. Циклическое упорядочение (взаимное однозначное сопостав- ление паре чисел i, / (l^i^/i®, 1^/^Пт) числа I такого, что l^Z<nrnT=n„ и Z==i(mod n0), l=j(mod пт), приводит, если 96
коды V и Т циклические и (п„, иг) = 1, к циклическому коду U. Итеративный код U (с точностью до эквивалентности) равен тензорному произведению линейных кодов V и Т. Код U будем обозначать U=V®T. Порождающая матрица G тензорного произведения U кодов V и Т равна кронёкеровскому произве- дению (см.. 7.2) порождающих матриц Gv и GT. Можно рассмотреть прямое произведение Um не только двух, но й m {т>2 — целое) линейных кодов V„ V2, Vm. В этом случае Um= Vt®V2® ... ® Vm= (Vi® V2... ® Vm-i)® Vm назы- вается m-мерным итеративным кодом. Символы слова и кода Um составляют матрицу, строки которой — это слова (т—1)- мерного кода Um-t, а столбцы — слова кода Vm. Длина линей- ного кода Um равна п=п1п2... пт, число информационных, сим- волов А=^А...йт, минимальное расстояние d=dtd2.. .dm. Итеративные коды можно описать и на геометрическом язы- ке. Это мы сделаем на примере итерации т двоичных кодов с проверкой на четность. Обозначим через Тт={(1и ..., 1т) :0^1{<Пч, /^^множе- ство целых точек /n-мерного параллелепипеда. Множество то- чек {{It, ..., lm)<=Tm : lt=at, i=it, ..., im-„ Q^at<n} назовем s-мерным сечением множества Тт. В частности, одномерное се- чение определяется как множество точек Тт, у которых совпада- ют все координаты, кроме одной. В каждую точку множества Тт поместим некоторый двоичный символ. Тогда всю совокуп- ность символов можно рассматривать как двоичный вектор дли- ны n = nt ... Пт. Векторы, у которых сумма символов, расположенных в лю- бом одномерном сечении, равна нулю, образуют /n-мерный код Um- Этот код вместе с тем является итерацией т кодов К с про- веркой на четность длин th, i= 1, ..., т. Если n{, i= 1,"..., m — попарно простые числа, то код Um при циклическом упорядоче- нии символов будет циклическим кодом с порождающим мно- гочленом g{x) =НОК{хЛГ* —1}, N{=n/nt. Каскадные коды. Пусть V— (п„, &„)-код над GF^q) с мини- мальным расстоянием d„, Z— (пг, &г)-код над GF{qk°) с мини- мальным расстоянием dz. Кодовое слово и каскадного произведения (каскадного кода) U над GF(q) внутреннего кода V и внешнего кода Z строится следующим образом. Информационное слово а — последова- тельность длины ku — преобразуется по некоторому правилу в прямоугольную матрицу А, состоящую из k„ строк и kt столб- цов.-Каждый «столбец матрицы А есть вектор длины с симво- лами из GF(q). Его можно рассматривать как представление символа поля GF(qkv) в виде вектора А«-мерного линейного пространства над GF{q). При замене каждого столбца соответ- ствующим символом поля GF{qk°) матрица А превращается в последовательность a=(«i, а2, ..., а* )» a^GF{q °), i= 4 И. М. Бояринов . 97
= 1, ..., z. Эта последовательность рассматривается как ин- формационное слово а внешнего кода Z. Кодирование слова vt приводит к кодовому слову z= (zb z2, .... z„z) кода Z. Каж- дый символ zf^GF(qkv), i=l, nz слова z представляется в виде ^„-мерного вектора-столбца с символами из GF(q) так, что слово z преобразуется в матрицу Аг. Далее каждый столбец матрицы Az кодируется внутренним кодом V. В результате по- лучается прямоугольная матрица Аи размерности n„Xnz, сим- волы которой образуют слово и кода U. Если коды V и Z ли- нейные, то и каскадный код U линейный. Длина кода U равна nu=nvnz, число информационных символов ku=kzkz, минималь- ное расстояние d~^d»dz. Код-Г/ будем обозначать t/=V|x|z. В отличие от итеративного кода для- каскадного кода U су- ' ществен и однозначен порядок кодирования информационно- го слова а: сначала кодируются внешним кодом Z символы, со- ответствующие столбцам информационной матрицы А, а уже затем каждый столбец новой матрицы Az кодируется внутрен- ним кодом У. Слово и линейного каскадного кода U — это «„-мерный век- тор, получающийся из матрицы Л„ считыванием символов по столбцам. Хотя для каскадного произведения кодов могут быть использованы и другие порядки считывания, например считы- вание., по строкам или циклическое упорядочение, мы будем рассматривать в дальнейшем только 'считывание по столбцам. Такой способ наиболее удобен с точки зрения технической реа- лизации. Декодирование итеративных и каскадных кодов. Известно несколько методов декодирования произведений кодов. Здесь мы изложим общий метод, использующий декодирование в об- общенной метрике (см. гл. 5), а также мажоритарное декоди- рование. Ради пр'остоты и краткости изложения ограничимся при рассмотрении общего метода декодирования каскадными кодами (на другой тип произведений — итеративные коды — все рассуждения переносятся почти дословно). Мажоритарное . декодирование, наоборот, опишем для итеративных кодов. Пусть V— (пт йв)-код над GF(q) с минимальным расстоя- нием dz, Z— (nz, &г)-код над GF(qk°) с минимальным расстоя- нием dz, {7= Vlx^Z— каскадный («в«х, &в&х)-код с минимальным расстоянием du^dzdz. Предположим, что-для кода V имеется алгоритм неполнота декодирования, т. е. алгоритм, находящий по принятому слову Ъ' кодовое слово b такое, что d(b', b)<[(dB—1)/2] и, если, такого слова не найдется, производящий отказ от декодирова- ния. Для кода Z потребуем наличия алгоритма исправления независимых ошибок и стираний, реализующего минимальное расстояние dz. Пусть а — информационное слово, z и и — соответствующие ему слова кодов Z и U. Предположим, что было передано слова 98
и и принято слово u'=u+E, Е — слово-ошибка. Алгоритм деко- дирования слова и' состоит в следующем. Слово и' преобразу- ется в матрицу А„<. (Порядок этого преобразования обратен преобразованию Au->u.) Каждый столбец матрицы Аи> декоди- руется кодом V, и ему присваивается в зависимости от резуль- татов декодирования коэффициент недостоверности, что при- водит к слову z' с вектором недостоверности (?'. Слово z' де- кодируется кодом Z с помощью описанного в 5.4 алгоритма декодирования по минимуму обобщенного расстояния, приводя к кодовому слову z* кода Z. По слову z* находится информаци- онное слово а* кода U, а по нему в случае необходимости — и кодовое.слово и* кода U. Для выяснения истинности результатов декодирования слу- жит следующая. Лемма 6.2.1. Для того_чтобы слово-ошибка Е исправлялась каскадным кодом t/= v| X |Z с помощью описанного алгоритма, достаточно, чтобы d0(z', z)<dx/2. (6.2.1) Действительно, как это следует из 5.4, в коде Z может най- тись не более одного слова z* такого, что d0(z', z*)<dx/2, и если такое слово существует, то в результате декодирования слова z' получается именно это слово. Поэтому согласно (6.2.1) ре- зультатом декодирования является истинное кодовое слово z кода Z, а следовательно, истинные кодовое и и информацион- ное а слова кода U. Исправление независимых ошибок. При передаче по состав- ному каналу (с помехами) может произойти одно из двух воз- можных событий: либо в слове происходят независимые ошиб- ки, либо пакеты ошибок. В сложном канале в слове могут про- исходить оба типа ошибок одновременно. Для кодов, исправля- ющих ошибки в составных каналах, не всегда удается постро- ить один алгоритм декодирования для обоих типов ошибок. Описанный выше алгоритм декодирования каскадных и итера- тивных кодов исправляет ошибки обоих типов без предвари- тельного выяснения состояния канала. Для независимых ошибок алгоритм декодирования по кри- терию минимума обобщенного расстояния позволяет полностью реализовать оценку dvdz минимального расстояния произведения кодов. __ Пусть и' — принятое слово кода U = V| х \Z. Декодируем сна- чала все столбцы матрицы Аи>, соответствующей слову и', ко- дом V. Запоминаем число ошибок ei, исправляемых в i-м столб- це, i=l, 2, .... nz. В результате декодирования столбцов полу- чаем слово z'= (zt', z2', ..., zn') о символами из алфавита £2 = = GF(qkv)\Jx (в z' могут быть стертые символы, соответствую- щие столбцам, в которых произошёл отказ от декодирования). 4» 99
Для слова г' строим вектор недостоверности p<xz) = = (Р?9, • • •, №...)« =ejdv, если et<dv!2, и рГ = = 1/2 в противном случае. По слову z' и его вектору, недосто- верности р(х° с помощью алгоритма декодирования в обобщен- ной метрике находим кодовое слово z кода Z, а по нему—инфор- мационное слово а кода Z, которое является одновременно и информационным словом каскадного кода U. По информаци- онному слову а в случае необходимости находится кодовое сло- во и кода U. Решение о правильности результата декодирова- ния каскадного кода U принимается на основании сравнения слов г' и z внешнего кода Z. А именно при /-й попытке по слову z' находится слово (z),- внешнего кода Z, и если d0((z)b z')< <dz/2, то z= (z),-считается истинным переданным словом. По z находится переданное кодовое слово и и информационное сло- во а кода U. Если d0((z)j, z')^dz/2, то производится (/4-1)-я попытка алгоритма декодирования. Всего требуется самое большее /=min{[(dv+1)/2], [(dz4-l)/2]} попыток декодиро- вания. Покажем, что если в принятом слове и' каскадного кода U произошло не более {{dvdz—1)/2] ошибок, то описанный алго- ритм декодирования всегда приводит к истинному переданному слову и. Действительно, пусть u'=u4-E, ueU и Е — слово-ошиб- ка веса w (E\<dvdz/2r. Обозначим через w(E^) число ошибок, про- «г изошедших в i-м столбце, так что w(E) = ^ w(E4). Пусть е,— 1=1 число ошибок, исправляемых при декодировании кодом V в t-м столбце. Тогда е{=w(E{), если столбец восстановлен правиль- но, и d„—et^2w(Ei) в противном случае. При отказе от декоди- рования в v-м столбце считаем (и это соответствует правилу определения коэффициента недостоверности 0» символа zv' сло- ва z'), что ei=d„/2 (Ev). Таким образом, п 2 е»+ 2 dc/2-t- 2 (d„-er)<2 «в)» w(E)<zd-dzl2, 1^.1 • rGR где I — множество правильно декодируемых столбцов, J — мно- жество столбцов, в которых произошел отказ от декодирования, 7? — множество неправильно декодируемых столбцов. Учиты- вая, что левая часть неравенства равна d^d^z', г), где z' — слово, полученное в результате декодирования столбцов, z — слово внешнего кода Z, соответствующее переданному сло- ву и каскадного кода U, имеем d0(z', z)<dz/2. Согласно лемме (6.2.1) это означает, что Е — слово-ошибка, исправляемая опи- санным алгоритмом. Если код Z мажоритарно декодируем в обобщенной метри- ке (см. 5.4), то декодирование каскадного (и итеративного) 100
кода существенно упрощается, поскольку на втором этапе де- кодирования (определении по слову z' истинного кодового сло- ва z кода Z) достаточно вместо Z=min{[ (de+1)/2], [ (dx+1)/2]} попыток одной попытки декодирования, и эта попытка является мажоритарным декодированием. Исправление группирующихся ошибок. 1. Во многих ситуациях (например, при исправлении оши- бок в запоминающих устройствах) возникает задача исправле- ния модулей ошибок. Одиночным модулем ошибок длины Ь называется слово- ошибка е= (еъ е2, ..., е„), в котором могут быть не равны нулю только символы с номерами i=kb + j, где k — целое (0г$£< <п/Ь) и j = l, 2..Ъ. Другими словами, если разбить слово- ошибку на подблоки длины Ь, то ненулевые символы будут только в одном из подблоков. Длина п кода кратна длине b подблока. Если ненулевые символы имеются в t подблоках сло- ва-ошибки, то говорят, что произошло t модулей ошибок дли- ны. Ь. Коды, исправляющие модули ошибок, называются мо- дульными кодами. Они предназначены для коррекции ошибок в различного рода цифровых устройствах с модульной реали- зацией. Известен простой и эффективный способ построения модуль- ных кодов. Возьмем (пх, £х)-код Z над GF(qb) с минимальным расстоянием dz. Каждый символ этого кода заменим последова- тельностью g-ичных символов длины Ь. В результате этой операции получим (nx&, ktb) -код Z над GF(q). Ошибка в ка- ком-либо символе в слове (пх, &х)-кода Z эквивалентна ошибке в последовательности (модуле) длины b в слове кода Z. Таким образом, код Z исправляет Zx=[(dz—1)/2] модулей ошибок дли- ны Ь. В некоторых приложениях нужно исправлять модули оши- бок с ограниченной плотностью. Модуль ошибок длины b имеет плотность р, если число не- нулевых символов в модуле равно рб. Очевидно, O^p^l. Пусть V— (п„, &„)-код над GF(q) с минимальным расстоя- нием dv, Z— (п^&^-код над GF(q^°) с минимальным расстоя- нием dz и U= vjx|Z. Код U исправляет все пх модулей ошибок длины п„ и плот- ности p<(dv—1)/2п„ на первом же этапе алгоритма декодиро- вания — декодировании столбцов. Если плотность моделей р^ (dv—V)lnv, код U исправляет dz—1 модулей ошибок длины Сначала с помощью кода V обнаруживаются и стираются столбцы, содержащие ошибки. За- тем с помощью кода Z исправляются стирания. Наконец, код U исправляет [(dx—1)/2] модулей ошибок длины nv произвольной плотности р. (Последнее свойство кода U выполняется при любом внутреннем коде V. В частности, код V может быть безызбыточным.) Декодирование состоит в ис- правлении независимых ошибок кодом Z. Если код U исполь- 10J
зуется в составном канале, в котором происходят либо незави- симые ошибки, либо модули ошибок, описанный алгоритм деко- дирования исправляет одновременно оба типа ошибок. Это не- посредственно следует из применения леммы 6.2.1 к данному классу ошибок. 2. Предположим, что внутренний («„, £„)-код V с минималь- ным расстоянием dv исправляет одновременно с независимыми ошибками пакеты ошибок длины . &„._Внешний (пх, fej-код Z над GF(qk°) каскадного кода J7=V|2<|Z имеет минимальное расстояние dz. Как правило, в качестве внешнего кода в кас- кадных кодах используется код Рида—Соломона. Его способ- ность к исправлению пакетов ошибок полностью определяется минимальным расстоянием. Покажем, что одновременно с [ (d„d—1)/2] независимыми ошибками каскадный код с помощью описанного выше алго- ритма исправляет все одиночные пакеты ошибок длины не бо- лее bu=nv(dz—Л)/2+%&„+1, где Х=3, если dz нечетное, и Л=4 в противном случае. Пусть u'=u+E —’принятое слово кода U, ueC7, Е — слово- ошибка, состоящее из пакета длины Ь. Будем декодировать слово и' с помощью описанного алгоритма с одним небольшим изменением. При декодировании какого-либо столбца ему при- сваивается коэффициент недостоверности ejdv, если в нем ис- правляется е,- (е,<сЦ2) ошибок, и р&„/(2&„+1), если в нем ис- правляется пакет ошибок длины bv плотности р, pb^dv!2. Во всех остальных случаях столбцу присваивается коэффициент недостоверности 1/2. Пусть г' — слово, полученное после декодирования столб- цов, z — истинное кодовое слово кода Z, соответствующее сло- ву и. Согласно лемме 6.2.1 слово-ошибка Е (пакет ошибок дли- ны Ь) исправляется, если 2s+m+\^.dz, (6.2.2) где т — число стертых символов в слове z', s — число нестер- тых позиций, в которых z и z' различаются. Все пакеты ошибок длины b^nv(dz—!к)/2 исправляются правильно, ибо они иска- жают не более Z2=[(dz—1)/2] смежных столбцов. Легко постро- ить пример пакета ошибок (учитывая условие 6.2.2), искажаю- щего /2 + 2 смежных столбцов и исправляемого неправильно. Рассмотрим множество всевозможных пакетов ошибок, ис- кажающих tz+1 смежных столбцов. Для того чтобы произволь- ный пакет ошибок из этого множества исправлялся данным ал- горитмом декодирования, необходимо и достаточно, чтобы оба крайних столбца в сумме содержали .не более чем 3b„+1 сим- волов этого пакета при dz нечетном и не более чем 46v+ 1 сим- волов при dz четном. Доказательство утверждения состоит в простой проверке для этого пакета ошибок условия (6.2.2). Та- ким образом, все пакеты ошибок длины Ьи исправляются пра- 102
ВИЛЬНО и существует пакет ошибок длины &„+1, который не может быть исправлен правильно данным алгоритмом. 3. При передаче по сложному каналу в слове может про- изойти комбинация независимых ошибок и пакетов ошибок. Пусть u'=u+E — принято^ слово кода U и uei7, Е —сло- во-ошибка, состоящее из t независимых ошибок и v пакетов длины_/ь i—\, 2.....v. Слово-ошибка Е исправляется кодом 17= у| x|z с помощью описанного алгоритма декодирования, если t, -v и Ц удовлетворяют соотношениям /,= (ц;—l)n0+dD, Pi = xCdzIZ, t<.d„(dz— 2х)/2. (6.2.3) i=i 6.3. Прямые суммы произведений кодов Пусть Qt и Q2— линейные пространства над GF(q) размер- ности п, и п2 с базисами {et....е„,} и {&, ..., g„2}; ViSQt и V2=Q2— линейные (n1( kt)- и (п2, £2)-коды с минимальными расстояниями d, и d2 соответственно. Образуем всевозможные формальные произведения: т);/=е<®^, i= J,..., nt; j= 1..п2. Векторы т]у по определению образуют базис (ntn2)-мерного линейного пространства, называемого тензорным произведением пространств Qt и Q2 и обозначаемого Q=Qi®Q2. Аналогично определяется Q = Qi®Q2® ... ®Qm. Для' произвольных векторов vteQi и v2eQ2, vt= = uHei+ ... +1»1П1еП1 и v2=v2>1gi+ ... + t»2„2|„2 положим nt пг V1®V2 = 2 2 (6.3.1) i=l /«=1 Рассмотрим подпространство V пространства Q = Q1®Q2, по- рожденное всевозможными векторами: v=vt®v2, Vi^Vj, v2eV2. Если {gj, ..., g»,} — базис Vi n{g', ...» g^}— базис V2, то век- тора g«=g<®g/, i= 1, • • •, ki, /= 1,..., k2 образуют базис кода V=Vt®V2 — тензорного произведения ко- дов Vt и У2. Произведение V=Vt®V2 — линейный итеративный (п, &)-код с параметрами n=nln2, k=k,ik2 и минимальным рас- стоянием d=did2. Аналогичным образом определяется тензор- ное произведение V= Vt® V2® ... ®Vm. Для линейных (п, &{)-кода Vt с минимальным расстоянием di и (п, £2)-кода У2 с минимальным расстоянием d2 таких, что Vit V2eQ (Q— n-мерное линейное пространство) и У1ПУ2—О, обозначим через Vt®V2 прямую сумму Ул и V2. Прямая сумма кодов Vt и У2— линейный (п, &1+&2)-код с минимальным рас- стоянием 4^ min {dt, d2}. юз
Для прямой суммы и произведения кодов выполняются со- отношения дистрибутивности Vt 0 (V2® V») = (Vt 0 V») Ф (V, ® V»), (6.3.2) (У2Ф V,) 0 К = (V20 Vt) Ф (Vs0 Vt). .Пусть линейный (п„, Л»)-код V. над GF(q) с минимальным расстоянием d„ разложен в прямую сумму кодов - V=Vt®V2©...©Um (6.3.3) такую, что (га„, .. .-f-A,)-подкод V,= Р^ФУгФ ... ©V{ (i= = 1, .. т) имеем минимальное расстояние Очевидно, = = di^d2^ ... ^fZm=rf<>. В том случае, когда di>d2> ... >dm, говорят, что разложение (6.3.3) кода V является монотонным. Далее будем предполагать, что разложение (6.3.3) монотонно. Рассмотрим тензорное произведение линейного (п», £„)-кода V и линейного (пг, Лг)-кода Z с Минимальным расстоянием dz. Учитывая (6.3.2), имеем V0Z= V10Z©y20Z© ... Ф Vm0Zm. (6.3.4) Длина линейного кода V0Z равна nvtix, число информационных символов — kvkz и минимальное расстояние — dvdz. Покажем, что можно построить линейный (nu, &и)-код U такой, что длины и минимальные расстояния кодов U и F0Z одинаковы, а размерность (число информационных символов) кода U больше размерности кода V0Z. Наряду с тензорным произведением V0Z будем рассматри- вать и каскадное произведение V|x]Z. Определим V*Z как про- изведение кодов V и Z, понимая под этим тензорное произведе- ние V0Z, если Z — код с символами из GF(q), и каскадное произведение, если Z — код с символами из GF(qkv). Пусть задана последовательность линейных кодов Zt, Z2, ... ..., Zm(Zm=Z) такая, что все коды имеют одинаковую длину пг‘, Zi(i=l, ..., т) есть либо код с символами из GF(q), либо код с символами из GF(qk{) (k{ — размерность кода VO; в обо- их случаях число информационных символов кода Z< равно Ki(Km=kt), а минимальное расстояние равно Di(Dm=dt). Предположим, что diDi'^d.odz, i— 1, ..., tn. Теорема 6.3.1. Пусть коды V и Zt, Z2, ..., Zm удовлетворяют сделанным предположениям. Тогда Vi*Zt® V2*Z2© . . . ©Vm*Zm есть линейный (n, k) -код U длины п=пкпг с числом информаци- т онных символов и минимальным расстоянием du~^ i=l dvdz. Доказательство. Линейность кода U очевидна, длина и число информационных символов определяются простым под- 104
счетом. Переходя к оценке минимального расстояния кода U, обозначим Ut—Vf^Zi. Тогда U=Ul®U2® ... ®Um и произволь- ное слово w=U единственным образом представимо в виде u=u1+u2+ ... + um, (6.3.5) гдеи(е{7,-. Если ur=#0, а все и(=0 для то (6.3.5) можно запи- сать в виде u=u1 + u2+ ,.. +ur. (6.3.6) Представим слово u,-, i=l....г в виде матрицы Аи( (см. 6.2). В матрице Аи/. имеется не менее Dr ненулевых столбцов, каждый из которых имеет вес, не меньший dr. Если занумеро- вать эти столбцы, то столбцы матрицы =Ли|+Л„2+ ... +Л„Г с такими же номерами будут иметь вес, не меньший dr, как сло- ва кода Vt— Vi® V2® ... Ф Vr. Таким образом, вес слова и w (и) drDr d„dt. Как следует из неравенств diDi'^dvdz и dj>d2> ... >dm— = dv, код 2, ..., tn—1) может иметь минимальное рас- стояние D(<dt. Следовательно, размерность кода Zt может пре- вышать размерность кода Zm, соответственно код U будет иметь размерность, вообще говоря, превышающую размерность кода V0Z (Z=Zm). Мажоритарное декодирование итеративных кодов. Пусть А(х) и f2(y)—линейные формы, заданные на пространствах Qi и Q2 с базисами {еь ..., еЯ1) и {£,, ..., ?П2) соответственно. Определим линейную форму f=fi®f2 на Q = Qt0Q2 как f(e^,) =/«(*)№)• Тогда для любых хе($, и уеф2 f(x0y)=ft(x)f2(y). Линейная форма f(z), zeQt0Q2 определяется линейными формами /,(х) и f2(y) и не зависит от выбора базисов в про- странствах Qi и Q2. Обозначим ab скалярное произведение век- торов а и Ь. Легко видеть, что если f1(x)=c1x и ^г(у)=с2у, то для z=x0y имеем f (z) = (ct0c2)z. Теорема 6.3.2. Пусть линейный (пь й()-код Vt мажоритарно Декодируем в Li шагов с реализуемым расстоянием и линей- ный (и2, 62)-код V2 мажоритарно декодируем b .L2 шагов с реа- лизуемым расстоянием d2. Тогда линейный (ntn2, ^^2)-код К=У1®Уг мажоритарно де- кодируем. в Lt+L2—1 шагов с реализуемым расстоянием d= dtd2 Доказательство теоремы 6,3,2 основано- на лемме 6.3.1. 105
Лемма 6.3.1. Пусть множества Ew = {g$l),... , gl1/} CQi и £(2) — I = {^3)....g^}GQ2 разделены соответственно в Lr и £2 непересёкаю- • J щихсяподмножествEi\e£\... ,Е11,)и£18),E^,...£(1)— UE(i} I L /=1 I и £(2) = (J £;2). Тогда множество £ = £(1)® £(2) может быть раз- | делено в £х + £2 — 1 непересекающихся подмножеств Е1г Е2,..., | таких, что для любь х двух подмножеств Ет, и Ет, и любых I векторов gil/t = (g^ ® gj2)) е£т, и g,t/t = (g£> ® gj2))e£mi, где g^’s €= £«?, g/2) = £«?, gi2) G e£ и g'-2) e £«2) имеем sx <s2 или «i<«2 при ml Wl2 и, В03М0Ж0, Si -= S2, «i = «2 при ni! = m2. , Для доказательства лемм л 6.3.1 достаточно положить £/= | = U £|п ® £ |2); /=1,2,..., Z.J L2 — 1 и рассмотреть разбиение | ii+««=/+l 1 ‘ i £= U £/• I /=1 . . I Переходя к доказательству теоремы 6.3.2, будем считать | £(1) и. £<2> базисами соответственно кодов Vt и V2, в которых эти ; коды мажоритарно декодируемы, и £={gil)® gi2),..., g^1,’ ® g*?}— базисом кода V=Vi®V2. | Пусть f,v(v=l, 2....dt) — множество ортогональных про- | верочных форм для базисного вектора g/*’ (i=l, ..., £t) кода 1 Vt и fj)JU(p=l, 2, ...., d2) — множество ортогональных провероч- 1 ных форм для базисного вектора g/2) (/=1......k2) кода V2. I Код V=Vt®V2 представим в виде прямой суммы V= I = у<‘)®у(2)ф...фу<ь1+ь2-1)> где код 1) ; имеет базис Е}. Зададим множество d,d2 проверочных форм fj (v = = 1, 2, ..., dt-, jx=l, 2....d2) для базисного вектора gn (1=1, ..., ki‘, /=il, ..., k2). Для всех v иц носители прове- ‘ рочных форм fj-ц для базисного вектора g{J не пересёка- . ются. . - По лемме 6.3.1 проверочные формы для базисного вектора | g«e£u (u=l, 2........£i + L2—1) могут быть ненулевыми только ( на векторах из множеств £t, £2,. , £u-i. Пусть Ь'=Ы-Е — принятое слово, beV, Е — слово-ошибка ! вёса tw(E).^[(did2—1)/2]. На первом шаге алгоритма декодирования по принятому слову мы можем определить информационные символы, соот- ветстфутрпще базисным векторам из множества £ь на втором < шаге — информационные символы, соответствующие базисным векторам цз ,„ множества £2, и т. д. Наконец, на последнем , .106 ! j >
Li+L2—1 шаге определим информационные символы, соответ- ствующие базисным векторам множества ELl+L2-i. Мажоритарное декодирование прямых сумм произведений линейных кодов подробно рассматривается в 8.3. ___ ЗАМЕЧАНИЯ В этой главе описываются методы комбинирования кодов, используемые в главах 7 и 8. Различные методы комбинирования кодов изложены в книге Ф. Дж. Мак-Вильямс и Н. Дж. А. Слоэна [66]. 6.1. Теорема 6.1.1. взята из [25], а теорема 6.1.2 — из [26]; кроме того,, использованы результаты работы [17]. В 6.2 использованы результаты части работы [18]. Итеративные коды были разработаны Элиасом [87], а каскадные коды — Форни [83]. Известны несколько методов декодирования итеративных [53, 156, 170] и каскадных [53—56, 135] произведений кодов. Здесь для исправления независимых оши- бок излагается алгоритм декодирования [135]. 6.3 основан на работе [68] А. С. Марчукова, впервые рассмотревшего прямые суммы итеративных произведений кодов. В частности, теорема 6.3.1 есть обобщение теоремы 1 [68]. Мажоритарное декодирование итеративных кодов рассматривалось А. С. Марчуковым [68], Гором [123] j С. Д. Берманом и А. Б. Юданиной [7], Лином и Уэлдоном [138] и др^ Теорема 6.3.2 принад- лежит Гору [123]. Глава 7 ЛИНЕЙНЫЕ КОДЫ, ИСПРАВЛЯЮЩИЕ ГРУППИРУЮЩИЕСЯ . £ ОШИБКИ Исправляющие свойства кодов в значительной степени зави- сят от их согласованности с характером ошибок в канале связи. Во многих, если не в большинстве, каналах ошибки группируют- ся. Наиболее интенсивно до. настоящего времени изучались ме- тоды исправления частного случая группирования ошибок — одиночных пакетов. Обработка, хранение и передача информа- ции в (между) ЭВМ организуются побайтно, чем определяете^ байтная структура ошибок. В связи с этим.представляют интерёр коды, исправляющие байтные, или модульные ошибки. Еще один подход к исправлению группирующихся ошйбок состоит в при- менении кодов, локализующих ошибки. Эти коды позволяют об- наруживать и в ряде случаев исправлять независимые и груп- пирующиеся ошибки, локализующиеся в пределах" одного или нескольких подблоков кодового слова. - В Данной главе рассматриваются методы построения и реали- зации модульных кодов, кодов, локализующих ошибки,^.и кодов, исправляющих одиночные пакеты ошибок; анализируютей ха-, рактёристики кодов и алгоритмы их кодирования и декодирова- ния. 107
7.1. Модульные коды Пусть V — двоичный линейный (п, Х)-код, Ь=(6ь Ьг, ... -.., Ьп) — слово кода V. Если было передано слово b и принято слово ..., Ь/, ..., bn'), то вектор е=Ь'—b называется словом-ошибкой. В данном разделе будем предполагать, что длина кода п кратна X, п—'кт. Определение. Одиночным модулем ошибок длины % на- зывается слово-ошибка е= (вь ..., et,..., еп) такое, что символы е, с номерами i=M+/, где k—целое (0^&<п/Х) и /=1,2,... ,Х, • могут быть не равны нулю, в то время как все остальные сим- волы 6i заведомо равны нулю. Другими словами, если разбить слово-ошибку на подблоки длины X, то ненулевые символы будут только в одном из под- блоков. Если ненулевые символы имеются в t подблоках слова- ошибки, то говорят, что произошло t модульных ошибок дли- ны X. Пример. Пусть п=15, Х=3. Тогда е= (000101000000000) есть одиноч- ный модуль ошибок длины 3 и е'= (000110000101010) —слово с 3 модульны- ми ошибками длины 3. Коды, исправляющие модули ошибок, называются модульны- ми кодами. Они предназначены для коррекции ошибок в различ- ного рода цифровых устройствах с модульной (байтной) орга- низацией. Выход из строя одного модуля устройства искажает лишь один подблок (модуль) кодового слова. Применение мо- дульного кода позволяет наряду с исправлением искаженного модуля кодового слова определить поврежденный модуль устройства. Перейдем к построению и исследованию модульных кодов. Обнаружение одиночных модулей ошибок. Для того чтобы линейный код обнаруживал одиночные модули ошибок длины %, . необходимо число проверочных символов кода г^Х. Действи- тельно, если линейный код обнаруживает одиночные модули ошибок длины X, то совокупность столбцов проверочной матри- цы, соответствующая любому модулю (подблоку) кодового сло- ва, должна быть линейно независимой. Но ранг проверочной матрицы не превосходит числа г ее строк, и поэтому г^Х. С другой стороны, легко построить линейные коды, обнаружи- вающие одиночные модули ошибок длины X, с числом провероч- ных символов г=Х. Тривиальный пример —это код длины п= =Х/п, /п>0 — целое с проверочной матрицей Я=14 Л-.-М. где 1к — единичная Х-мерная матрица. Очевидно, любой, двоич- ный циклический код нечётной длины, порожденный многочле- цом степени X, обнаруживает модули ошибок длины X. И оправление.одиночных модулей ошибок. Теорема 7.1.1. Параметры двоичного линейного модульного 108
кода, исправляющего одиночные модули длины к, удовлетворя- ют соотношениям г^2Л, r>pog2^(2x-l)4-l (7.1.1) (7.1.2) где Гх] обозначает наименьшее целое, не меньшее х. Доказательство. Соотношение (7.1.1), называемое границей минимальной избыточности, следует из того факта, что код, исправляющий одиночные модули ошибок длины %, дол- жен обнаруживать, в частности, модули ошибок длины 2Л, а для этого, как мы показали выше, необходимо, чтобы код имел г^2Х проверочных символов. Граница (7.1.2) следует из того, что раз- личные модули ошибок должны иметь различные синдромы, и поэтому число синдромов, равное 2Г, должно быть не меньше числа модулей длины X. Последнее равно — (2х—1) + 1,что ве- дет к (7.1.2). Код, достигающий границы (7.1.2) при целочисленности вы- ражения справа, назовем совершенном модульным кодом, по- скольку в нем синдромы исправляемых модулей ошибок исчер- пывают все линейное пространство размерности г. Число под- блоков (модулей) совершенного модульного кода, исправляю- щего одиночные модули ошибок длины к, равно mCOB=(2r-l)/(2x-l). (7.1.3) Из (7.1.2) и (7.1.3.) следует, что необходимым условием совер- шенности модульного кода является делимость г на к. Теорема 7.1.2. Если %\г, то двоичный код длины п=кт с проверочной матрицей Н == || 1 а ... ,JaV1ppa ... paw . .. р*"’1... pmMaw ||, (7.1.4) где р — примитивный элемент поля GF(2r), a=Pm, /ns = (2Г—1)/(2х—1) исправляет одиночные модули ошибок дли- ны к и является совершенным. Доказательство. Покажем, во-первых, что различным модулям соответствуют различные синдромы. Пусть Е<= = (0.. .0 ва+1... £(<+1р.0.. .0) и Е/= (б.. .0 0 ... 0) два модуля ошибок. Синдромы этих модулей равны соответст- , вецно . S?= р‘£ Г«ыи S/-₽'2 Предположим, что Е<=|=Е/, но тем не менее S,=S/. Тогда из р Л X St=S}' при i=j следует 2 а<4~1ел+в = 2 aU'le^«« а это в силУ Ус" 109
ловия, что а—примитивный элемент GF(2X) означает eA+u=e'<>,+„ для всех и=\, ..., X, т. е. Ef=E/. Получили противоречие. Если же i^=j, то 8<=8/ невозможно ни при каких ненулевых Ej и Е/. Действительно, из 8,=8/ следует ля. Р‘2 = (7.1.5) U<=1 1#=1 ИЛИ (X \ 2 a**~leA+« I Р (7.1.6) 12 a““leZUu j • Здесь p<-i=4=l и p<_^GF(2x), в то время как правая часть (7.1.6) есть элемент поля GF (2х). Поэтому равенство в (7.1.6) невоз- можно. Осталось доказать, что указанный код совершенный, иными словами, удовлетворяет границе (7.1.2). Это проверяется непо- средственно; учитывая, что п= (2Г —1 )Х/(2х —1). При г=2Х кодирование кодов теоремы 7.1.2 можно осуще- ствить с помощью проверочной матрицы (7.1.4) в приведение- ступенчатой форме. Декодирование основано на той идее, что синдром принято- го слова, или, что одно й то же, слова-ошибки, тогда и только тогда есть элемент поля GF(2X), когда искажен первый модуль слова. Мы предполагаем, что в принятом слове может быть искажен только один какой-то модуль. Теорема 7.1.3. Пусть р(х) неприводимый многочлен над GF(q) степени s, принадлежащий показателю е. Тогда цикли- ческий код, порожденный многочленом (х®—1)р(х), имеет дли- ну п=НОК{с, е}, г=с+$ проверочных символов и исправляет одиночные модули ошибок длины X=min{s, с}. При X=c=s коды теоремы 7.1.3 лежат на границе (7.1.1). Если же р(х) — примитивный многочлен степени X, т. е. р(х) Принадлежит показателю е=2х—1, то эти коды лежат вблизи границы (7.1.2). Отсюда следует, что случай X=c=s наиболее интересен, и ради, простоты обозначений мы ограничимся толь- л л ко им. Пусть Ef(x)=xx< 2 вл+«Х“-4 и £/(х)=хм 2 е/л+“*и-1— , два многочлена ошибок, соответствующие двум модулям Е< и Е/. Предположим, что синдромы 8« и 8/ этих модулей равны. Иными словами, имеет место сравнение л • л ^w-Bx“^ = ^2 epn.„xa(modp(x)(xx—1)) . (7.1.7> «=1 и=11 ' 110
Из соотношения (7.1.7) следует - х х 2 в№&'Цтой.р(х)). (7.1.8) Uf=l Uf=l Поскольку степень р(х) равна X, то (7.1.8) равносильно % X 2 еа+кх“-1 = 2 (7.1.9) Подставляя (7.1.9) и (7.1.7) и производя элементарные преоб- разования, получим а(х)(х(‘“/)Х—l)^0(modp’(x)(xx—J1)). (7.1.10) Но соотношение (7.1.10) возможно лишь при а(х)=0 или i=j. А это означает, что Ej=E/. Таким образом, различным модулям длины X соответствуют различные синдромы. Кодирование кодов осуществляется так же просто, как и лю- бых высокоскоростных циклических кодов. Достаточно разде- лить , информационный многочлен an_1xn_1+an_2xn_2+ :.. 4- +агхг на порождающий многочлен кода (хх—1)р(х). Коэффи- циенты ar-i, ...,а0 остатка отделения aT-iXr~l+aT-txr-i+ .. .+ -Ьа0, взятые с- противоположными знаками, суть проверочные символы кодового слова (a„_t,..., а, — информационные сим- волы) . Декодирование основано на двух вполне очевидных фактах. Во-первых, остатки от деления принятого многочлена а'(х') на многочлены х?—,1 и р(х), называемые в дальнейшем синдрома- ми Sx(x)' и Sp(x), совпадают тогда й только тогда, когда иска- жен последний модуль a'r_txr~l + ... +а<>' многочлена а'(х) (разумеется, если в принятом слове искажен только один мо- дуль). Во-вторых, остаток от деления а'(х) на Xх—1, т. е. синд- ром Sx(x), дает изображение модуля ошибок. Точнее говоря, если многочлен ошибок X X Et(x)--= хи etxtuX^1, toSx(x) = 2 U=1 U=1 Процедура декодирования состоит в следующем. 1. Находим синдромы Sx(x) и Sp(x) принятого многочлена <а'(х). •2. Sx(x) =SP(x) =0 — ошибок не произошло и декодирование на этом заканчивается. 3. Полежим I: =0, Sp(<+1)(x)=SP(<) (x)x’rnodp(x), Sp<0)(x) = . =S„(x). Л ' 4. Sx(x) =SP<0(*) — считаем, что многочлен ошибок £,(х) — y=SK(x)x^\ кодовый многочлен aty) =а'(х) —Е{(х), и прекраща- ем декодирование. 5. (х) =HSP(<> (х) — находим SP(,+I) (х) =SPW (х) xhnodp(х)' и, положив i: =i+l, переходйм к’4. " ' ill
Алгоритмы кодирования и декодирования особенно просто ре- ализуются аппаратурно (на регистрах сдвига). И если кодиро- вание осуществляется за k тактов работы устройства, то для декодирования требуется всего и/% тактов. Правда, при декоди- ровании на каждом такте приходится выполнять более сложные операции (это видно из алгоритма декодирования), чем при ко- дировании. Еще более простую реализацию имеет следующий код. Теорема 7.1.4. Пусть р>2 — простое и Х<р. Тогда цикличе- ский (п, k) -код над GF(q), порожденный многочленом g(x) = = (хк—1) (хр—1)/(х—1), имеет длину п=Хр, г=Х+р—L прове- рочных символов и исправляет одиночные модули ошибок длины X. Доказательство. Пусть Е, (х) =xwB(<) (х), Вюм = X Л, =Sea+“x““‘ и Е,(х)=хмВ0)(х), В(1У (х) = 2 вд+иХ“_‘ — два мно- «==1 Й=1 гочлена ошибок, соответствующие модулям Ef и Е5 длины X(i, /<п). Предположим, что синдромы и S} этих модулей равны. Иными словами, имеет место сравнение xwB'i)(x)=x^B(/)i(x)(mod(xx—l)(xi— 1)/(х— 1)). Но тогда В(<)(х) =В0> (х) =а(х) и а (х) (х<^\— 1) =;о (mod(xi—;i)(x"— 1)/(х— !))• Заметим, что степень многочлена а(х) меньше % и (х“ — 1, х”—1)=х(“’,,) — 1. Поэтому последнее сравнение возможно лишь при а(х)=0 или l=j. А это означает, что E<=Ej. Таким образом, различным модулям длины % соответствуют различные синдромы. При р=Л+1 циклические (п, £)-коды теоремы 7.1.4 имеют г=2Х проверочных символов и лежат на границе (7.1.1). Если отказаться от свойства цикличности, то коды 7.1.4 (для удобства ограничимся случаем р=%+1) можно удлинить на 2Л информационных символов. Теорема 7.1.5. Линейный (n, k) -код над GF(2е), е^1 с про- верочной матрицей где /»— единичная й-мерная матрица, р=Х+1 —простое число, имеет длину n=A,(X+1)+2%, г=2% проверочных символов и ис- правляет одиночные модули ошибок длины X. Проверочная матрица Н линейного кода теорема 7.1.5 имеет минимальное число единиц (для заданного А, или г). Это свой- ство оказывается весьма полезным во многих практических при- . менениях, в частности при исправлении байтных ошибок в опе- ративной полупроводниковой памяти ЭВМ. .112 I
Известен еще один простой и эффективный способ построе- ния модульных кодов. Берется (п, £)-код над GF(^X), исправ- ляющий t или менее независимых ошибок. Затем каждый </х-й символ этого кода заменяется последовательностью q-x символов длины %. Каждая такая последовательность есть представление заменяемого ею элемента поля GF(qK) как вектора Х-мерного линейного пространства над GF(q). В результате этой операции мы получим (пХ, £Х)-код над GF(q). Ошибка в каком-либо сим- воле (n, k) -кода над GF(qK) эквивалентна некоторому множе- ству ошибок в соответствующей этому <7х-му символу последо- вательности (модулю) q-x символов в кодовом слове (nX, АХ)- кода над GF(q). Таким образом, последний код исправляет t или менее модулей ошибок длины X. В качестве иллюстрации построения модульного кода ука- занным способом рассмотрим следующее. Возьмем удлиненный код Рида—Соломона над GF(2X), исправляющий одиночные ошибки. Проверочная матрица этого кода 1 1 ...1110 а2 2 а2 3 ... а 1 0 1 где а — примитивный элемент поля GF(2K). Параметры кода п=2х+1, г=2, А=2Х—1. Пусть a=(at, а»,...» ап)—произволь- ное слово этого кода. Заменив-каждый символ at^GF(2*'), i=- = 1,..., п его представлением как вектора Х-мерного линейного пространства над GF(2) а{= {atw, а<т,..., а/Х)), получим слово а = (<£>...а^,а^\ ... ,а*>.....а™,... ,4м), a^EGF (2) двоичного ((2Х+ 1)Х, (2х—1)Х)-кода, исправляющего одиночные модули ошибок длины X. Параметры этого двоичного кода: п= (2*+1)Х, Л=(2Х—1)Х, г=2Х. Мы видим, что параметры рас- смотренного кода удовлетворяют обеим границам—(7.1.1) и (7.1.2), т. е. код имеет минимальную избыточность и одновре- менно является совершенным. Пример. Удлиненный код Рида — Соломона над GF(2®) с проверочной матрицей || 1 ! ... 1 1 1 ° I п Ц а62 а61 ... а 1 0 1 Г где а — корень примитивного многочлена х6+х+1, исправляет одиночные* ошибки. Параметры кода п=65, г=2, £==63. Пусть а= (а10000а10а14) — кодовое слово этого кода. Заменим каждый символ этого слова его представ- лением как вектора линейного 6-мерного пространства над GF (2): ai10= 110000, а14=010100, 0=000000. В результате получим а= = (110000 ... • 1100000101100) — кодовое слово двоичного (390,378) «кода, ис- правляющего одиночные модули ошибок длины 6. Параметры кода л=390». £=378, г=12. Кодирование и декодирование рассмотренного двоичного ко- да, исправляющего одиночные модули длины X, сводится к коди- рованию и декодированию кода Рида—Соломона над GF(2х), 113
исправляющего одиночные ошибки. На алгоритмическом уров-, не это все очень просто. Довольно просто это и при аппаратур- ной реализации, так как в этом случае мы имеем дело по суще- ству не с кодом Рида—Соломона, а с требуемым модульным ко- дом, ибо устройства состоят из элементов с двумя состояниями, что приводит к представлению элементов GF (2х) в виде Х-мер- ных двоичных векторов. При программной реализации необхо- димо иметь в памяти ЭВМ все элементы GF (2х), что при боль- ших X затруднительно, либо находить для каждого элемента GF(2X) его векторное представление с последующим преобразо.- • ванием. к виду а‘(а — первообразный элемент GF(2X)), на что требуется большое число операций. Поэтому при программной реализации лучше воспользоваться другимкодом, близким по конструкции к рассмотренному. Возьмем код V над GF(p) (р— простое число) длины га с г проверочными символами, исправляющий t или менее ошибок, и заменим каждый символ этого кода, являющийся целым числом в диапазоне от 0 до р — 1, его двоичным Х-разрядным представ: лением (% — наименьшее целое, большее log2(p—1)). В резуль- тате этого р-*|2-перехода получим двоичный- код V длины п — пК с г=Хг проверочными символами, исправляющий t модулей (под- блоков) ошибок длины X. Рассмотрим следующую модификацию удлиненного кода Рида—Соломона, исправляющего одиночные ошибки. Символы кода суть элементы простого поля GF(p), где р — простое число. Проверочная матрица этого кода Длина кода п=р+1, число информационных символов k=p— 1, число проверочных символов 2. Если мы теперь осуществим р->2-переход, то получим дво-. ичный код, исправляющий одиночные модули ошибок, длины X (X='[log2(p—1)]). Длина кода л=(р+3)Х, число проверочных символов 4Х. Кодирование этого кода Рида—Соломона состоит в следую- щем. Пусть (а,, Ог,..., Ор-Э — информационная последова- тельность. Проверочные символы а, и а,+1 вычисляются с по- мощью фуНКЦИЙ Uj И. Vj‘. i ' u/ = Sa<’ vi = vhi+ut,v0 = 0‘,j = 1,2,... ,p — 1. (7.1.11) Символы Op и ap+l равны соответственно йр= Up—i и aP+1=—vp—i. (7.1.12) Декодирование. 1. Находим синдромы St и S2 принятого слова а'= (а/, Ог',... \ ,., а/) с помощью функций / Ф/ “ 2 at> % = ty-1 + Ф/> Фо = ° (7.1.13) 1=1 114
по следующему правилу: Si фр» S2 Фр— 1 “Ь • (7.1.14> 2. Если Si=S2=0, считаем, что ошибок не произошло и пре- кращаем декодирование. 3. Если St = 0, то искажен последний символ и значение ошиб- ки равно S2. Полагаем an=an' — S2 и а= (а,.ап), где а<= =а/ для всех i=l, ..., п—1 и ап=ап'—S2— искомое кодовое слово. • 4. Если St =4=0, то Si суть значение ошибки, а номер ошибоч- ного символа равен SjSi. Полагаем а=(аь..., а„), где at=Oi для всех t=f=S2/Si и аВ11в1=а>— Si — кодовой слово. Как видно из алгоритмов кодирования и декодирования, для осуществления всех этапов, кроме п. 4, требуется выполнение лишь операций сложения и вычитания в простом поле GF(p)t т. е. по существу целых чисел. В п. 4 алгоритма декодирования необходимо осуществить деление элементов простого поля GF(p). В случае небольшого р это можно сделать посредством перебора. Если р большое, то деление можно свести к умноже- нию на обратный элемент, который, в свою очередь, можно най- ти с помощью метода, основанного на алгоритме Евклида и свойствах непрерывных дробей. Он состоит в следующем. Пусть и — некоторый ненулевой элемент GF(p). Найдем для и обратный ему элемент ы-1, для которого ««“* = !. Поскольку (и, р)’=1, то существуют числа end такие, что uc+pd=A, (7.1.15) причем с<р и |d|<u. Тогда ис=1 в поле GF(p). Воспользуем- ся алгоритмом Евклида и свойствами непрерывных дробей. Имеем ' р = «^1 + г2, 0<г2<«; и = + г3, 0<г8<г2; . . •.................. (7.1.16> Гп-2 — fn—lQn—l + fnt 0 Гд ^П-1» Гп-1 — f nQn* Легко видеть, что наибольший общий делитель чисел р и и ра- вен гп. В нашем случае г„=1. Можно (7.1.16) записать в виде р *, 1 + —Г ,,+^+ 1 115
Дроби al=ql, O2=4'i+1/^2,... называются подходящими дробя- ми. Обозначим <r,=P,/Q». Свойства непрерывных дробей описа- ны в [32]. В частности, имеет место следующее равенство: P.Q.-i—Q.P«-i=(—1)’. Заметим, что при s—n, Р,=р, Q.=u выполняется pQn-t— — uPn-i=(—1)". Умножая'обе части этого равенства на (—1)“, получим uPn_!(—1)"+‘4-pQ„-i(—1)п=1. * (7.1.17) Сравнивая теперь (7.1.15) и (7.1.17), имеем с=Рп_1(-1)"+‘. (7.1.18) Таким образом, задача определения с=и~1 сводится к нахож- дению числа Pn-.i Это число находится итеративно по следую- щему правилу [32]: P«=?s'P«-i4-P»-2, Ро=1, Р-!=0. Легко показать, что число шагов п алгоритма определения обратного элемента не превосходит 21og2p. На каждом шаге нужно выполнить одно деление (с остатком), одно умножение и одно сложение в кольце целых чисел. Из сказанного видно, что удлиненный код Рида—Соломона над простым полем GF(p) может быть очень просто реализован на ЭВМ, ведь по существу требуется выполнять лишь операции сложения и вычитания целых чисел. Чтобы еще более упростить программную реализацию, желательно выбрать р«а2П|>, где л0 — длина машинного слова, а -г- либо натуральное число, ли- бо правильная дробь вида 1/0 (0 — натуральное). Обсудим, в частности, два таких возможных варианта: р= =2"64-’1 и р=2п«—1 (например, р=284-1=257 и p=23t—1 = =2147483647). При реализации на ЭВМ мы имеем дело с двоич- ным представлением элементов GF(p) (символов рассматривае- мого кода Рида—Соломона), иными словами, не с самим кодом Рида—Соломона, а с его.двоичным эквивалентом — модульным кодом. Этот двоичный код исправляет одиночные модули оши- бок длины К. При р=2п»+1 или р=2п«—1 код исправляет произвольные ошибки, произошедшие в одном машинном слове. Заметим, что, если р=2п«4-1, то в качестве информационных символов можно взять любые машинные слова, но для представления любого из двух проверочных символов может потребоваться не одно, а два машинных слова — в случае, когда этот проверочный символ равен р—1=2П». Если же р=2п»—1, то для представления любо- го, как информационного, так и проверочного, символа достаточ- но одного машинного слова, но зато мы будем лишены возмож- ности брать в качестве информационных символов число 2"«—1, что во многие случаях неудобно. 116
Пример. При р=2’4-1=257 рассмотрим удлиненный код Рида — Со- ломона над GF (257), исправляющий одиночные ошибки. Проверочная матри- ца кода I 1 1 ...1 1 1 0|| л ~ II 256 255 ... 2 1 0 1 И Длина кода п=258, число информационных символов Л=256, число прове- рочных символов 2. Символы кода представим как 8-разрядные машинные «слова. Пусть информационные символы ai = l (в двоичном представлении <00000001), О2=10 (00000110), а3=200 (11000100), а4=а5= ... =а25в= — 0 (00000000). Проверочные символы а257 и а258 вычисляются в поле GF (257) :по формулам (7.1.12): а257=—211=46= (00101110), а258=—t>256=—150= = 107= (01101011). Таким образом, кодовое слово а=(1, 10, 200, 0..., 0, 46, 107), или в двоичном представлении а= (00000001, 00000110, 11000100, Ю0000000, ..., 00101110, 01101011). Предположим, что при' передаче кодового слова а произошла ошибка в четвертом символе (удобно присвоить i-му (i=l, 2, ...» р+1) символу но- мер Ni = p—i, так что четвертому символу присваивается номер 257—4=253) и было принято слово а'=(1,Л0, 200, 125, 0, ..., 0, 46, 107). При декодирова- нии находим синдромы Si и S2 принятого слова по формулам (7.1.13) и (7.1.14): Si = ф257 = 125, «$2 = Фг5б "Ь ^258 = 4“ 107 = 14. Таблица 7.1 Код Параметры Длина Число проверочных символов Длина модуля ошибок Совершенный код, удов- (2"Л— 1)Х/(2х—1) mk X летворяющий теореме 7.1.2 (2К4-1)Х 2Х X Циклический код, удов- (2х— 1)А, - 2Х летворяющий теореме 7.1.3 при% = с=5 (код а» Бартона) Код, построенный из уд- линенного кода Рида— Соломона над GF (2*) (2х+1)Х 2Х А, Код, построенный из уд- линенного кода Рида— (P4-3)Z а A,=[log2(p—1)J Соломона над GF(p) Циклический код с по- рождающим многочленом g(x) = Ш+1) 2Х А /(х—1) (Х+1=р — про- стое) Код» удовлетворяющий теореме 7.1.5, с мини- мальным числом единиц Щ+1)+2Х 2Х А. в проверочной матрицу 117
Согласно алгоритму декодирования (п. 4) считаем, что значение ошибки равно $1=125, а номер ошибочного символа равен Л^=$2/$1= 14/125 = 14- • (125)-I=253, т. е. искажен четвертый (257—253=4) символ принятого сло- ва а'. В табл. 7.1 приведены параметры рассмотренных двоичных модульных кодов. 7.2. Линейные коды, локализующие ошибки Коды, локализующие ошибки (ЛО-коды), обладают свойст- вами, промежуточными между кодами обнаруживающими и ко- дами исправляющими ошибки. Они позволяют указать (лока- лизовать) искаженные подблоки (модули) кодового слова- Строятся ЛО-коды комбинированием кодов с заданными свой- ствами. Все известные ЛО-коды двойственны тензорному про- изведению кодов, двойственных исходным кодам. Это означает,, что проверочная матрица такого ЛО-кода есть кронекеровское произведение проверочных матриц исходных кодов. Именно на этом языке мы будем описывать свойства ЛО-кодов. Пусть V,— линейный (th, kt)-код над GF(2m>), m^l с ми- нимальным расстоянием d, и проверочной матрицей Hi=. hw hw hw "11 Л12 • • • "in, fctt) fc(l) “Я2 • • • “2П1 ai) м hw “ni "rt2 • • • "nn, где eGF(2m*), i=l,..., rt; /=1....nt. Пусть Vt — линейный (th, й2)-код над GF (2) с минимальным расстоянием dt и проверочной матрицей Hi= № h nrti где hPq(=GF(2), p=l......r2; q=l...... n2. Определив произведение элемента M/* на матрицу Я2 <я,= Л';’4Й> ...да?, да? ...да?, да?, -да?.. покажем, что (п, k) -код V над GF(2), проверочная матрица ко- торого равна кронекеровскому произведению матриц nt и Нг: 118
н=нт®н2= h^H2 h™H2 ...h™H2 h%H2 h$H2 ...h%H2 h^Hf h^H2...h^H2 локализует Л=[(<Л—1)/2] модулей длины n2, в каждом из ко- торых произошло не более d2—1 ошибок. Пусть b — слово кода V, Ь= (Ьи, ...» bt„2b2ii, ..., bn,„2), Ь'= =Ь + Е — принятое слово, Е — слово-ошибка. Для того чтобы линейный код V локализовал tt (или менее) модулей, искажен- ных не более d2—1 ошибками каждый, необходимо и достаточно, чтобы синдром S(b') принятого слова Ь', в котором dt—1 или менее модулей искажены не более d2—1 ошибками каждый, не был бы равен нулю. Предположим противное: S(b') =Ь'ЯТ=О, т. е. «1 л» 22бЖ,=о^ = 1....л;₽ = 1....л (7.2.1) Ф=1 Преобразуем (7.2.1) к виду П1 / л2 \ 2 S^wW=0,f=l..............г/.р» 1,... ,г2. (7.2.2) /=i \e=i ) Представим таким же образом синдром кодового слова Ь: 2 ipX’Ul’ = 0,i = l,...,rl;p = 1,...,r2. (7.2.3) /==1 \<7=1 / При фиксированном р(р=1, ..., г2) системы равенств (7.2.2) и (7.2.3) можно рассматривать как синдромы слов bp — (bip, Ь2Р,... , bn,p) и Ьд = (bip, b2P, ... , bn,p), (7.2.4) принадлежащих коду Vt. В силу линейности кода Vi слова ср= =Ь/—Ьр=.(с1р, с2Р.......с„,Р) будут кодовыми словами кода К- По построению ненулевыми символами слов ср(р=1,..., г2) могут быть только символы, соответствующие искаженным мо- дулям. Так, /-му модулю соответствует символ <?*»(/=!,..., п,) и каждому /-му искаженному модулю соответствует по крайней мере одно слово сР с ненулевым символом Сд>. Действительно, л, л, с/р = 0=1 <7=1 и поэтому cSp можно трактовать как р-й символ синдрома 5(е^) слова-ошибки е}=(ел,..., е}п^) кода V2. Если j-й модуль не искажен, то и ей=0 для всех q—Л,..., п2; если же /-й модуль искажен, то синдром S(e,) не равен нулю (по предполо- 119
жению вес K<(ej)^d2—1) и имеет по крайней мере один нену- левой символ. Таким образом, в каждом из слов ср (р= 1, ..., т2) ненулевы- ми символами могут быть только те, которые соответствуют искаженным модулям. Но по предположению искаженных мо- дулей не более di—1, так что ни одно из слов ср не может быть кодовым словом кода Vt. Получили противоречие. Следователь- но, синдром S(b')H=O и код V локализуют dt—1 модулей оши- бок. Элементы проверочной матрицы Н построенного двоичного кода V принадлежат, вообще говоря, полю GF(2m). Для опре- деления числа проверочных символов кода V матрицу //-нужно привести к обычной двоичной форме. При этом каждый элемент Н представляется в виде вектора-столбца линейного /п-мерного пространства над GF(2), и во вновь полученной матрице Нг оставляются только линейно независимые строки. Верхняя оцен- ка числа строк в Н' (числа проверочных символов кода V) рав- на г fam. Если оба кода Vt и V2— двоичные, то код V — двоич- ный линейный (п, й)-код длины n=ntn2 с числом проверочных СИМВОЛОВ r^rfa И — rfa. Во многих случаях избыточность кода V удается существен- но сократить при сохранении локализующей способности. Обоз- начим (г2, т)=1 наибольший общий делитель г2 и т. Провероч- ную матрицу Н2 кода V2 преобразуем так, чтобы ее элементами были элементы поля GF(2‘). Для этого каждый вектор-столбец h/2’ матрицы Н2 разобьем, на г2/1 векторов длины I и каждый такой вектор будем рассматривать как элемент GF(2l). Обозна- чим полученную при этом матрицу через Н2. Заметим, что ана- логичным образом представляются прбЬерочные матрицы цик- лических кодов, если в качестве их элементов берутся степени корней порождающего многочлена. Синдром слова Ь2, найден- ный с помощью матрицы Н2, имеет г2 символов, каждый из ко- торых есть элемент GF(2). Синдром слова Ь2, найденный с по- мощью матрицы Н2, имеет г2/1 символов, каждый из которых есть элемент поля GF(2‘). Очевидно, что оба синдрома либо од- . повременно равны нулю, если Ь2еУ2, либо одновременно не рав- ны нулю, если b2(j£V2 и в слове Ь2 произошло не более d2—1 ошибок. При этих предположениях все утверждения о локали- зующих свойствах кода V остаются в силе при замене матрицы Н2 на Н2, что приводит к новой оценке числа проверочных Сим- волов кода V r^rtr2m/(r2, т). В частности, если г2=т, то код V имеет не более r^rtm проверочных символов. Этот важный случай был рассмотрен Вулфом [172]. Код V в этом случае можно считать двойственным каскадному коду. Пример. Пусть Vi—(nt, #1)-код Рида — Соломона над CF(2m), п = = П|—ki с минимальным расстоянием di и V2 — двоичный (п2, й2)-код, г2== — п2—k2=m с минимальным расстоянием d2. Тогда двоичный (n, k) -код У длины п=П|П2 с числом проверочных символов г^г\т локализует Л=ч 120
= [(di—1)/2] или менее модулей, в каждом из которых произошло не более <d2—1 ошибок. Локализующие свойства кода V могут быть определены и при более общих предположениях об исправляющих и обнару- живающих свойствах кодов Vt и V2. Предположим, что код исправляет ошибки класса Еи, а код V2 обнаруживает ошибки класса Еа. Для каналов с незави- симыми ошибками Еи и Ео — это множество слов-ошибок веса не более Л и d2—1 соответственно. Для каналов с группирую- щимися ошибками Еи или Ео — это, например., множество v-крат- ных пакетов ошибок длины Ь. Для составных каналов Еи и Et — объединение множества пакетов и независимых ошибок. Повторяя почти дословно приведенное выше доказательство локализующих свойств кода V для случая независимых ошибок, получаем следующее утверждение. Теорема 7.2.1. Пусть V\—линейный (п, А^-код над GF(2m), r^tii—ku исправляющий класс ошибок Еи, Ht— проверочная матрица кода Пусть V2 — двоичный линейный (п2, &2)-код, г2=п2 — k2, 1=(т, г2), обнаруживающий класс ошибок Ео, Н2 — проверочная матрица кода V2, элементы которой принадлежат полю GF(2‘). Тогда двоичный линейный (п, &)-код V, провероч- ная матрица Н которого равна кронекеровскому произведению матриц Hi и Н2, локализует класс модулей Еи длины п2, иска- женных ошибками класса Ео. Длины кода n=ntn2, число прове- рочных символов r^.rir2m/l, k=n — г. Если исходные коды V\ и V2 выбрать циклическими, то при определенных условиях ЛО-код V будет эквивалентен цикличе- скому. Теорема 7.2.2. Пусть V2 — двоичный циклический код длины п2, обнаруживающий класс ошибок £0; GF(2m) —наименьшее расширение GF(2), содержащее все корни порождающего мно- гочлена g(x) =gt(x) ... gr(x); gt(x), i=d, ...,r — различные неприводимые многочлены. Пусть Vt — циклический код над GF(2m) длины nt взаимно простой с п2, исправляющий класс ошибок Еи, G (х) = Gt (х) ... ... Gs(x)—порождающий многочлен кода Vt, Gi(x), i=l, ... ..., s—различные неприводимые многочлены над GF(2m). Пусть GF(2m₽)—наименьшее расширение поля GF(2m), содержащее корни ntn2-fi степени из единицы. Тогда существует двоичный код V длины n=ntn2, имеющий не более rspm проверочных символов, который локализует класс модулей Еи длины п2, искаженных ошибками класса Ео. Код V эквивалентен циклическому коду. Доказательство. Если р,- — любой-корень g<(x) и у. — любой корень G,(x), то 121
и pn2-l Р">-2... рх1 РГ1 ₽гз- ₽»’ ₽п,-1 рп.-а... pri тГ1 v?“2 • • • Y11 тГ1 тГ3..-Т11 тГ1 тГ3 •••V — проверочные матрицы кодов V2 и V, соответственно. В каче- стве проверочной матрицы кода V возьмем кронекеровское про- изведение Н матриц Hi и Н2: ^н2...н2 ^-*н2...н2 (7.2.5) ^н2 ^-*Н2...Н3 где произведение ^,п'~’Н2 определяется в поле GF(2mp). Локали- зующая способность-кода V рпределяется так же, как и в теоре- ме 7.2.1. Число проверочных символов кода V оценивается свер- ху числом строк матрицы Н', получающейся из Н заменой каждо- го ее элемента /пр-мерным вектором-столбцом, и не превосходит таким образом rsmp. Осталось доказать эквивалентность кода V циклическому коду. По условию (по п2) = 1, следовательно, найдутся такие целые а и Ь, взаимно простые с п2 и nt соответ- с.твенно, что ап2+6П1—1. Если а — примитивный корень n-й степени из единицы, то Р=адП| и у=аоп« — примитивные корни п2-й и пгй степени из у единицы соответственно. Пусть ₽«—Р и у<=У , где р< и — це- лые положительные числа. Элемент ht}, i=ri"+i' и j=nj"+j' матрицы Н представим в виде или йй= (аХ,)А/, где . > + Vranjinod п, kj= (j'btii 4- j"an2) modn, (7.2.6) так что элементы i-й строки есть расположенные в некотором порядке первые п степеней элемента aAi=p У .Элементы» и o'1* являются корнями различных неприводимых надбЕ(2) де- лителей многочлена хп—1. Действительно, если предположить, что а иа *—корни одного неприводимого многочлена, тогда - 122
Xi,=2%-2mod n, или, используя (7.2.6), p , — 2°p, mod n2. Послед- 4 %' нее сравнение, невозможно, так как 0 и 0 — корни различных неприводимых над GF(2) многочленов g,-(х) Hgr-(x). Ниже мы покажем, что декодирование ЛО-кода V сводится в основном к декодированию кода Vt. Поэтому желательно вы- бирать в качестве кодов Vt такие, которые допускают простые методы декодирова'ния. Прежде всего в качестве кодов Vt по возможности следует брать -двоичные коды, а не коды над GF(2m|). Вообще говоря, выбор в качестве кодов Vt кодов над GF(2m‘), а не над GF(2) позволяет получить ЛО-коды с лучши- ми параметрами при одной и той же локализующей способности. Однако в случае локализации одиночного блока удается пост- роить и на базе двоичных кодов Vt и V2 двоичные ЛО-коды V, по своим параметрам не уступающие лучшим ЛО-кодам, а в ря- де случаев и оптимальные. Лемма 7.2.1 [173]. Число г проверочных символов двоично- го линейного (n, k)-кода, локализующего одиночные модули длины Л(п=Л$), искаженные не более чем t ошибками, удовлет- воряет неравенству / П/2] \ r>log2 1 + . (7.2.7) \ 1-1 / ЛО-коды, достигающие границы (7.2.7), называются оптималь- ными. Теорема 7.2.3. Пусть Vt — двоичный укороченный код Хэм- минга длины пь — проверочная матрица кода Vlt 0 — примитивный элемент по- ля GF(2m<). Пусть V2— двоичный циклический код длийы п2, обнаруживающий ошибки класса Ео, aj*-1 a"’-2 ... afl a”*-1 a2’“2 ... a2l a"*"1 a"’“2 ..._ arl — проверочная матрица кода V2, a, — корень неприводимого многочлена gt(x) и все gi(x), i=l, 2.г различны; GF(2m*) — наименьшее «расширение GF(2), содержащее а,, »=1, 2,..., г. Пусть ml=m2v, v>l — целое, (2”1—1)1(2^—1). Тогда двоич- ный код V длины n=nin2 с проверочной матрицей Н—Н{®Нг имеет не более чем гпц проверочных символов и локализует оди- ночный модуль длины п2, в котором произошли ошибки класса Еа. 123
Доказательство. Для того чтобы линейный код V ло- кализовал одиночный модуль, искаженный ошибками класса Еа, необходимо и достаточно, чтобы синдром кодового слова, в котором два (или один) произвольных модуля искажены ошибками класса Ео, не был равен нулю. Предположим противное. Пусть /-й и /-й модули принятого слова Ь' искажены ошибками класса Еа и тем не менее синдром S(b') равен нулю, т. е. rtj П2 » (Ь') = 2 + pn*-z2 Ьна^1 = 0, (7.2.8) i=i i=i ц==1;2,..., г; К/. Так как код У2 обнаруживает ошибки класса Ел, то найдется по крайней мере одно ц такое, что по крайней мере одна из двух сумм в SM(b') отлична от нуля. Пусть первая сумма SM(b') от- лична от нуля. Тогда из (7.2.8) следует, что (»« \ 2 Wj р =—-----------Z_. (7.2.9) (Л, \ i=i ) Правая часть (7.2.9) есть элемент поля GF(2ra»), в то время как элемент р,_ 1 поля GF(2m<) не принадлежит подполю GF(2mi) при всех j>l, j—1<(2т'—1)/(2’"2—<1). Таким образом, равенство (7.2.9) невозможно при I и /, меньших Получили противоре- чие. Следовательно, предположение о равенстве нулю синдрома S(b') слова Ь' неверно и код V локализует одиночные модули длины п2. Число проверочных символов двоичного кода V, очевидно, не превосходит rmt. Следствие. Положим в теореме 7.2.3 nt=(2mi—l)/(2m=— —1), г—1. Тогда код V имеет длину п—2т‘—1, число провероч- ных символов mt и локализует одиночный модуль, в котором произошло не более двух ошибок. Код V, как это следует из сравнения его параметров с (7.2.7), является оптимальным. Пример. Пусть V — двоичный циклический (255, 247)-код Хэмминга, порождающий многочлен кода g(x) =х8+х4+х3+х2+1. Р— корень g(x) и Я=ПР254Р253...р 1|| —проверочная матрица кода.К. Пусть V2— циклический (15,7)-код БЧХ с d2=5, порожденный многочле- ном g2(x) = (x4+x+l)(x4+x3+x2+x+l)-, <х, а8 —корни g2(x) и _ | а14 а13 ... а8 al II Я2“|а“ а®...а8 а81 || — проверочная матрица кода V2. В соответствии с теоремой 7.2.3 код Vi получим укорочением кода V до длины «1=255/15=17. Код Vi—укороченный циклический (17.9)-код Хэм- 124
минга и ₽15...₽2?1 II — проверочная матрица кода Vi. Проверочная матрица кода V н = нг®н2 = pieau pieai3 ... al n pieaH piea8 ... | ’ Код V имеет длину n=255, число проверочных символов 16 и локализует одиночный модуль, в котором произошло не более четырех ошибок. Перейдем к обсуждению процедур кодирования и декодиро- вания ЛО-кодов. Кодирование ЛО-кода осуществляется совер- шенно так же, как и произвольного линейного блокового кода. Что касается декодирования, то мы рассмотрим алгоритмы де- кодирования только ЛО-кодов, удовлетворяющих теореме 7.2. L В принципе эти алгоритмы пригодны для всех ЛО-кодов, про- верочные матрицы которых равны кронекеровскому произведе- нию проверочных матриц исходных кодов. В специальных слу- чаях можно построить более простые алгоритмы. Это иллюстри- руется примером. Итак, пусть Ь'==(Ьц,Ьц.......&п,п2) —принятое слово кода V, удовлетворяющего теореме 7.2.1. Предположим,, что алгоритм декодирования кода Vt включает в себя вычисле- ние синдромов (например, алгоритм декодирования кодов БЧХ), Найдем синдром (S (Ь') слова Ь'. Символы S (Ь7) суть /I, п, i—l <F=1 Если S(b')=0, считаем, что ошибок в слове Ь7 нет и декодиро- вание на этом заканчивается. В противном случае для каждого р(р= 1, ....Из) вычисляем синдром S(b7p) bp = (b’ip,b'2P,... , Ьп„ Р) отличающегося от слова bp= (Ь1Р, Ьгр, .... bniP) кода Vt в пози- циях, соответствующих (не обязательно всем) искаженным мо- дулям (/-му модулю соответствует символ bjp, / = 1, ..., по следующему правилу: vP-ft символ (vP—p+vr2, v=0, 1,..., г»—1) синдрома S(b') суть (v+l)-ft символ синдрома S(b'p). По синдрому S(b7p) в соответствии с алгоритмом декодиро- вания кода Vt находим искаженные символы слова Ь'р, опреде- ляя тем самым соответствующие им искаженные модули слова Ь7 кода V. Заметим, что в каждом из слов Ь'р (р=1, ..., г2) могут быть искажены символы, соответствующие лишь некоторым искажен- ным модуля», но для каждого искаженного модуля найдется по крайней мере, одно слово Ь'р, в котором будет искажен соот- ветствующий этому модулю символ. Поэтому, повторяя проце- дуру декодирования слова Ь'р для каждого р (р=1, ..., г2) и объединяя результаты вычислений, определим все искаженные модули. 125
Если метод декодирования кода V, не включает в себя вы- числение синдрома (например, первый тип мажоритарного де- кодирования), то процедура декодирования кода V сводится к построению гг слов Ь'9 и последующему их декодированию с по- мощью кода Способ построения слов Ь'р вытекает из доказа- тельства теоремы 7-2.1. Первый символ слова Ь'р равен Кд = п« , п* , — 2 » второй символ Ь'3р = 2 .... наконец, п,-й <7=1 9~1 символ Ь'щ.р — 2 В каждом из слов Ь'Р, используя про- <7=1 цедуру кода Уь находим искаженные символы и тем самым со- ответствующие им искаженные модули. Объединяя результаты вычислений по всем р. (р=1, ..., г2), определим все искаженные модули. Алгоритмы декодирования ЛО-кодов, построенных с по- мощью теорем 7.2.2 и 7.2.3, в целом аналогичны описанной про- цедуре. Проиллюстрируем это на примере декодирования кода, удовлетворяющего теореме 7.2.3. Пример. Пусть У — двоичный линейный (255, 239)-код, локализующий одиночный модуль, в котором произошло не более четырех ошибок (струк- тура кода Vt определена в предыдущем примере). Предположим, что при пе- редаче слова b=(Z»i,i, bi,2, .... bias, b2.i, .... bn,is) в пятом модуле произошли четыре ошибки, было принято словоb' = (b'fv 2, ..., Ь*715). Слово-ошиб- ка е=Ь'—Ь= (0, .... О, eB ii, ... e6 /j, ... e6 f>, ....ев><<.0). Символы синдрома S(b') слова Ь' (слова-ошибки е) равны Л(Ь')= 2 <7-2-10) ]И/=1 s2(b')= 2 (7-2.11) Ц₽=1 По крайней мере один из символов синдрома S(b'), например, Si(b'), не ра- вен нулю. Учитывая, что сумма является элементом поля GF (24) и, следовательно, 4 \ 15 2 гб / а ** ) =1» возведем Si(b') в 15-ю сте- ^1 / пень: (Si(b'))15=P180. Далее умножим (Si(b'))15 на ₽-15, полученный резуль- тат Р165 снова умножим на р~15 и т„ д. вплоть до момента, когда в результате очередного умножения (это’будет на 12-м шаге) получим единицу. Тогда делаем вывод, что был искажен 17—12=5-й модуль. 126
Эта процедура по существу совпадает с декодированием кода Vi — уко- роченного (17.9)-кода Хэмминга. 'Отличие лишь в том, что мы на каждом шаге умножали не на р_| (как это делается при декодировании кода Хэм- минга), а на р-’8. 7.3. Линейные коды, исправляющие пакеты ошибок Пакетом ошибок длины b называется слово-ошибка е= = (et, е2, ..., е„) длины п(п>6) такое, что упорядоченное в по- рядке возрастания множество номеров {i, /, ..., v} всех его не- нулевых символов ей е}, ..., ev удовлетворяет неравенству v—i+ + 1<6. Другими словами, пакет ошибок длины b — это слово-ошиб- ка, в котором ненулевые символы могут быть среди не более b каких-либо последовательных символов. Предполагается, что первый из этих символов ненулевой. Пример. Слово-ошибка е= (00001010110) есть пакет длины 6=6. При п=Ьи и i=bv (и и v—целые) пакет ошибок образует модуль (фазированный пакет). Большинство известных линейных кодов, исправляющих па- кеты ошибок, являются циклическими кодами. Они исправляют более широкий (по сравнению с линейными кодами) класс па- кетов ошибок — циклические пакеты. Циклическим пакетом ошибок длины b будем называть сло- во-ошибку е= (et, ..., еп), для которого найдется / такое, чта циклический сдвиг е(й = (е1+1, ej+2, ..., Bj) есть пакет ошибок длины Ь, а все остальные циклические сдвиги, e(v), v^j, v= =0, 1, ..., п—1, суть пакеты ошибок не меньшей длины, чем Ь. Образно говоря, если свернуть циклический пакет длины b (слово-ошибку длины п>6) в кольцо, соединив первый символ с последним, то. ненулевые символы в кольце могут оказаться только среди b каких-либо последовательных символов. Пример. Слово «=(0100000110) можно рассматривать как цикличе- ский пакет длины Ь=5. Таким образом* из определений обычного и циклического па- кетов ошибок следует, что код, исправляющий (обнаруживаю- щий) пакеты ошибок длины 6,- исправляет (обнаруживает) па- кеты и любой длины, меньшей Ь. Сумма t одиночных пакетов ошибок длины b называется /-кратным пакетом ошибок. Кратность обычных (не циклических) 6-пакетов (пакетов; длины 6) в слове-ошибке е= (в,.....еп) определяется следую- щим образом. Первый 6-пакет начинается с первого ненулевого символа, первый ненулевой символ, следующий за этим пакетом, начинает второй 6-пакет и т. д. Число обычных 6-пакетов в слове е называется 6-пакетным весом слова е (обозначается w(b) (е)). Минимальное число цикли- ческих 6-пакетов в слове е называется циклическим 6-пак'етным 127
весом слова е (обозначается w„(6)(e)). Циклическое ft-пакетное расстояние dnw (u, v) между словами и и v (и и v-вектора «-мер- ного линейного пространства) равно wnw (и—v). Это расстояние является метрикой. Аналогично вводится и обычное (нецикличе-. ское) ft-пакетное расстояние. Пусть минимальное ft-пакетное расстояние линейного кода V, определяемое как минимальное из всевозможных расстояний между кодовыми словами, равно dm. Тогда код V исправляет (обнаруживает) все комбинации ошибок, имеющие Ь-пакетный вес/=$[(</(Ь)—1)/2] (f^dw—1). Остановимся сначала на задаче обнаружения и исправления одиночных пакетов ошибок. Для обнаружения линейным кодом одиночных пакетов оши- бок длины b необходимо, чтобы число проверочных символов кода г>6, что следует из доказанного в 7.1 утверждения для ча- стного случая пакетов — модулей ошибок. С другой стороны, легко построить коды, обнаруживающие одиночные пакеты ошибок длины b с числом проверочных сим- волов г=Ь. Так, очевидно, любой двоичный циклический код не- четной длины, порожденный многочленом степени Ь, обнаружи- вает циклические пакеты ошибок длины Ь. Исправление пакетов ошибок — более трудная задача. Преж- де всего определим предельные параметры кодов. Теорема 7.3.1. Параметры линейного (п, &)-кода над GF(q), исправляющего одиночные пакеты ошибок длины Ь, удовлетво- ряют соотношениям r>2ft, г=п—k, (7.3.1) r>ft-14-logg[ (</-!)(«—64-1)4-1]. (7.3.2) Параметры кода, исправляющего одиночные циклические па- кеты ошибок длины Ь, удовлетворяют (7.3.1) и более жесткому, чем .(7.3.2), условию r>log<Jl + n<7b_1(<7—1)]. (7.3.3) Доказательство. Соотношение (7.3.1), называемое гра- ницей минимальной избыточности (границей Рейгера) для ко- дов, исправляющих пакеты ошибок, следует из (7.1.1). Границы (7.3.2) (граница Файра) и (7.3.3) следуют из того, что различ- ные пакеты ошибок’должны иметь различные синдромы, и по- этому число синдромов, равное 2Г, должно быть не Меньше чис- ла пакетов длины Ь. Последнее подсчитывается непосредственно и равно qb~l[(q—1)(л—Ь +.1)4-1] для обычных пакетов и 14- nqb~l (q—1)—для циклических пакетов. Линейные коды, достигающие границы (7.3.2) (цикличес- кие— границы 7.3.3) при целочисленности выражения справа, называются совершенными кодами, исправляющими одиночные пакеты ошибок. До сих пор неизвестно ни одного примера со- вершенного кода. Более того, как легко видеть из (7.3.3), не су- 128
ществует совершенных кодов, исправляющих циклические паке- ; ты ошибок. Известны^ однако, примеры как конкретных кодов, так и целых классов кодов, довольно близких по своим пара- i метрам к (7.3.2) и (7.3.3). С практической точки зрения коды, • близкие к совершенным, даже не при очень больших b (6>15) представляют малый интерес, ибо имеют весьма большую дли- ну. Слова таких кодов скорее будут искажены многократными, чем одиночными, пакетами ошибок. Большинство известных ре- зультатов относится к кодам с минимальной (или близкой к Ми- нимальной) избыточностью, т. е. к кодам, . удовлетворяющим (или близким) границе (7.3.1). Линейные коды, исправляющие пакеты ошибок. Элементар- ный, но не очень эффективный метод построения кодов, исправ- ляющих пакеты ошибок,— посимвольное перемежение. Напом- ним, кодом — перемежением степени А кода V над GF(q) — на- I зывается код К над GF(q) такой, что если (а/1’, ..., а„(1)), (а/2), ..., а„(2)), • • • (а1<м» • • •, anW)— произвольные слова кода V, то (а^", а/2*, ..., atw, ..., ап(1), ап(2), ..., anw) будет словом кода VK, и обратно, если (о/1’, ..., atw, ..., anw, ..., anw)— произвольное слово кода К, то (а/1’.........ап(1>), ..., (g/*1, ... ..., anw) будут словами кода V. Иными словами, при посим- вольном перемежении передача слов кода V одного за другим заменяется для каждой совокупности А слов передачей сначала первых символов (по порядку) этих, слов, затем вторых симво- лов и т. д. Ясно, что при таком способе передачи скорость не ме- няется. Длина и число информационных символов кода VK в Л раз больше длины и числа информационных символов кода V. У кодов V и Vt одно и то же минимальное расстояние d. Од- нако у кода . К появляется дополнительная способность исправ- лять t=\_(d—1)/2] пакетов ошибок длины А. В частности, если код V исправляет одиночные ошибки, то код К будет исправлять одиночные пакеты ошибок длины А. Так, возьмем двоичный код V Хэмминга длины п=2т—1 с г=т и k=2m—т—1, исправляющий одиночные ошибки. Код— перемежение Vb кода Хэммингд степени b — будет иметь длину пь= (2т—1)6, гь=Ьт и kb— (2m—т—1)6 и будет исправлять оди- ночные пакеты ошибок длины 6. | Пример. Пусть т=6, Ь=4. Двоичный ход Хэмминга имеет параметры л=63, г=6, 6=57. Код — перемежение этого кода степени 4 — имеет длину «4=252, г=24, 6=228 и исправляет одиночные пакеты ошибок длины 4. Код — перемежение степени 6 циклического (п, 6)-кода над GF(q), порожденного многочленом g(x), будет циклическим (nb, kb) -кодом над GF(q) с порождающим многочленом g(xb). Кодирование и декодирование линейного кода — перемеже- ния степени 6 — очевидным образом сводится к кодированию и декодированию 6 слов исходного кода. Другим простым, но значительно более эффективным мето- дом построения кодов, исправляющих пакеты ошибок, является метод поблокового перемежения. Этот метод приводит к~кодам х/45 И. м. Бояринов 129
с асимптотически минимальной избыточностью. Суть его состоит в следующем. В отличие от посимвольного.перемежения при по- блоковом перемежении группируются и передаются не символы исходных слов, а подблоки (модули) слов. Точнее это можно вы- разить так. Поблоковым кодом — перемежением степени Л кода V над GF(q)—называется код VKm над GF(q) такой, что если ..., 4/Ui, • • , а»'1’), ..., (a^, .... am™, ... ..., an/m+i, • • •, a„w)—произвольная последовательность Л слов кода V, то (а/0,..., ат(1),.... atw,..., amw,.... а„(1),..., a„w) будет словом кода VKm, и обратно. Метод поблокового перемежения дает хорошие результаты при применении его к кодам, исправляющим модули ошибок. Теорема 7.3.2. Пусть (п, /г)-код V над GF(q) исправляет t или менее модулей ошибок длины т. Тогда поблоковый (n%, kX)- код — перемежение степени Л — будет исправлять t или ме- нее пакетов ошибок длины Ь = т(к—1) +1. Действительно, пакет ошибок длины b=m(k—1) + 1 может исказить лишь один из модулей каждого из X исходных слов кода V. Но тогда, если имеется не более t пакетов ошибок длины Ь, в каждом из этих Л слов будет искажено не более t модулей. Применим поблоковое перемежение к модульным кодам. Возьмем, к примеру, двоичный циклический код Бартона, порож- денный многочленом g(x) = (xv—1)р(х), где р(х)—примитив- ный многочлен степени v. Код имеет длину n=(2v—l)v, r=2v проверочных символов и исправляет одиночные модули ошибок длины v. Его поблоковый вод — перемежение К.» степени Л—бу- дет иметь длину п— (2V—l)vX, r=2v% проверочных символов и исправлять одиночные пакеты ошибок длины &=v(X—1) +1. Этот код будет квазициклическим. Пример. Многочлен g’.(x)=(x8—1)(х84-х4+х34-х24-1) порождает дво- ичный код Бартона длины п=(28—|1)Х8=2040 с г=16 проверочными сим- волами. Этот код исправляет Одиночные модули ошибок длины v=8. Побло- ковый код — перемежение Ув.в степени 6 кода Бартона — будет иметь пара- метры: длину «=2040X6=12240, г= 16X6=96 проверочных символов и исправлять одиночные пакеты ошибок длины &=8Х(6—1)4-1=41. Параметры поблокового кода — перемежения кода Бартона— близки к границе (7.1.1), границе минимальной избыточности. Более того, этот код является примером так называемых кодов с асимптотически минимальной избыточностью, исправляющих одиночные пакеты .ошибок. Действительно, зафиксируем ско- рость передачи кода Ух,»: , k_ = (2V — 1) у% — 2vl = J _ 2 п (2V— l)vX 2V—1 (иными словами, зафиксируем v). По любому в>0 найдем Л' такое, что для всех X>V ‘А——*/2vX<e. 130
Это означает, что при п->оо (%->оо) отношение т. е. к максимально возможному. Легко видеть, что посимвольное перемежение степени Л кода V над GF(qv), а затем pv->-p-nepexoA к <?-му коду эквивалентны поблоковому перемежению степени A, q-ro кода, полученного' из исходного кода V с помощью р’-^р-перехода. Так, если мы возь- мем код Рида — Соломона над GF(qv), йсправляющий t или 'менее независимых, ошибок, затем возьмем его посимвольный код — перемежение степени Л — и совершим от последнего кода qv—^-переход, то получим <?-й код, исправляющий t пакетов оши- бок длины &=v(A,—1) +1. В частности, если код Рида—Соломо- на над GF(2V) длины n = 2v—1 с г=2 проверочными символами исправляет одиночные ошибки, посимвольный код — перемеже- ние степени 1 этого кода — будет исправлять 2V одиночных па- кетов ошибок длины X. Совершив 2v->-2-nepexofl, получим двоич- ный код длины п,Л= (2V—1) vA, с r = 2vA,, исправляющий одиноч- ные пакеты ошибок длины b=v (А,—1) + 1 (или одиночные мо- дули ошибок длины vA,).. Параметры этого кода полностью сов- падают с параметрами поблокового кода — перемежения кода Бартона. Можно несколько улучшить параметры полученного кода, если в качестве исходного взять удлиненный код Рида—Соло- мона над GF (2V), исправляющий одиночные ошибки (рассмот- ренный выше). Эти улучшенные параметры будут: длина кода (2V+l)vi, число проверочных символов r=2vA., длина ис- правляемых пакетов ошибок b=v(k—1) +1. Кодирование и декодирование этих двоичных кодов, исправ- ляющих одиночные пакеты ошибок, естественным образом сво- дятся к кодированию и декодированию исходного кода Рида— Соломона над GF(2V), исправляющего одиночные ошибки. При программной реализации более удобен следующий код. Возьмем удлиненный ko/j Рида—Соломона над GF(p) (р—про- стое число) исправляющий одиночные ошибки. Длина кода п= = р+1, г=2. Посимвольный код—перемежение над GF(p) сте- пени А, этого кода — имеет параметры пк= (р М)А,, г=27. и ис- правляет р-е пакеты ошибок длины А,. Применив к последнему коду р->2-переход, получим "двоичный код с п= (p+3)vA,, r=4vA, (v—[log2(p—1)]), исправляющий одиночные пакеты ошибок длины &=v(A,—.1)4-1. Кодирование и декодирование кодового слова этого кода естественным образом сводятся к кодированию и декодированию А, слов удлиненного кода Рида—Соломона (или модульного кода), подробно рассмотренного в 7.1. Все рас- смотренные .коды, основанные на кодах Рида—Соломона, так же как поблоковый код — перемежение кода Бартона, являются кодами с асимптотически минимальной избыточностью. ’ К линейным кодам с асимптотически минимальной избыточ- ностью относятся и коды Ивадари. Проверочная матрица двоич- ного (n, k) -кода Ивадари, исправляющего одиночные пакеты 5* И. М Бояринов 131
ошибок длины b, имеет вид 1ь 00 .... О 0-... 00 О ... 00 ... 1Ь 'Jtb+a 00 ... О 00 ... О 00 ... О ... 00 ... о — 00 ... О 00 ... о 1ь 00 ... О 1Ь 1Ь 00 ... О ... 00 о 00 ... О 00 ... О ... 00 ... о (7.3.4) где 1Ь и /2ь+о—единичные Ь- и 2Ь+о-мерные матрицы соответст- венно. Параметры кода: п=Ь(о+1)+2&+о, k = b(a+V), г= —п—k=2b+o и R = b(o+ 1)/(&(оЧ-1) +2b+o). Проверочная матрица Н (7.3.4) имеет низкую плотность еди- ниц. Это свойство весьма полезно во многих практических при- менениях, в частности при исправлении ошибок в оперативной полупроводниковой памяти ЭВМ (этим же свойством обладают линейные коды Гилберта, рассматриваемые ниже в цикличес- ком варианте). Структура проверочной матрицы Н (7.3.4) определяет алго- ритм декодирования кода Ивадари. Информационные символы кодового слова v составляют последовательность о+1 подбло- ков, каждый из которых имеет длины Ь. Предположим, что в'сло- ве v произошла одиночная ошибка в j-м информационном сим- воле (lc/<&) i-ro подблока (lcico+1) и было принято сло- во v'. Тогда синдром S (v') слова v' имеет вид S (V') = 00 ... 0 10 ... 01 00 ... 0. (7.3.5) \ Из (7.3.5) определяется /, равное числу нулей, предшествующих первой единице, и номер блока i=b+o+2—Л, где X — число сим- волов в комбинации (10 .. 01). Если в слове v произошла не одиночная ошибка, а пакет ошибок длины 6,то синдром S(v") принятого слова v" может быть однозначно разложен в линей- ную комбинацию синдромов вида (7.3.5) . Алгоритм декодирования кода Ивадари состоит в следую- щем: 1. По принятому слову v,=v+e находится синдром S(v'). 2. Если S(v')=0, то v'=v и декодирование прекращается. 3. Символы синдрома S(v')=/:0 разбиваются на два подмно- жества: (S„ S2, ..., S„) и (Sb+1, Sb+2, ..., S2b+0). Первое под- множество определяет тип пакета, второе —• его местоположение. 4. Если S6=l, то из последовательностей (Зд, ..., S2b), (Sb, ...» S 2ь+1)> • • •, (Sb, . •., S2b+a) выбирается последователь- 132
ность (5ь,.... s26+i) наибольшей длины вида (1, ..., 1). Полага- ется в(,(<,+1-4)=1, v(1,=v/—вь(<т+1-о; Sb=S2b+i=0. 5. Для каждого из ненулевых Sj (j=b—1, b—2, ..1) повто- ряется процедура п.4. На р-м шаге (1сцс6) все S,- (/=1, ... ..., Ь) будут равны нулю. Полагается v=v(l,>, и декодирование прекращается. Циклические коды, исправляющие одиночные пакеты ошибок. Циклические коды исправляют не только обычные, но и цикли- ческие пакеты ошибок. Для построения циклических кодов ча- сто используется следующая теорема. Теорема 7.3.3. Пусть g\ (х) — порождающий многочлен дво- ичного циклического кода Ct длины nt, исправляющего одиноч- ные циклические пакеты ошибок длины ft; g2(x)—порождаю- щий многочлен двоичного циклического кода С2 длины п2 степе- ни, не меньшей Ь, причем каждый делитель многочлена g2(x) принадлежит показателю п2. Тогда многочлен g(x) = = HOK{gi(x)g2(x)} порождает двоичный циклический код С длины n=n1n2/(n1, и2), исправляющий одиночные циклические пакеты ошибок длины Ь. Доказательство. Пусть Е<(х) =х’’е<(х) и £,(х) =х>е}(х) — многочлены, соответствующие различным циклическим пакетам ошибок Е,- и Е; длины Ь. Будем считать, что многочлены е,(х) и еДх), степень которых меньше Ь, не делятся на х. Это всегда можно сделать соответствующим выбором i и /, Oct, j<n—1. Предположим, что /< 1 <п и х*~*е( (х) + е} (х) = О (mod g (х)). (7.3.6) Пусть i—j=lni + ilt 0^.1. Тогда из (7.3.6) следует х^е( (х) + ej (х) = xtie{ (х) + (х) = 0 (mod gt (х)). (7.3.7) По условию теоремы код С1 исправляет пакеты ошибок длины b и поэтому (7.3.7) имеет место, если только i, = 0, ef(x) =е)(х). Тогда (xZn* — 1) et(x) = 0 (mod g (х)). Отсюда следует, что (?п* — 1) е{ (х) = 0 (mod g2 (х)). (7.3.8) Степень многочлена е{(х) меньше степени многочлена g2(x), так что хотя бы один делитель g2(x) должен делить х'П|—1. Это возможно лишь при условии /«£=^2, k—целое. Но 1щ<п= ^щПгЦщ, п2), и поэтому /п,=Ы2, лишь когда l=k=0. В слу- чае 1=0 и it=0 сравнение (7.3.6) имеет место, только если Е{(х)=Е}(х\. Следовательно, наше предположение, что сумма двух произвольных различных ненулевых циклических пакетов ошибок Е{(х) и Ej(x) длины b является кодовым многочленом, неверно. Это означает, что код С исправляет циклические паке- ты ошибок длины Ь. Следствие 1. Пусть gl(x) =х2Ь-‘—1, g2(x)=p(x), р(х)— неприводимый многочлен степени Ь, принадлежащий показате- 5»* 133
Лю п2. Многочлен gi'(x) порождает тривиальный .циклический код длины nt=2b—1; состоящий из. одного ну левого слова. Этот код; очевидно, исправляет- одиночные пакеты «длины nt. Однако, для того чтобы применить теорему, 7.3.3,. мы будем, считать, что циклический код, порожденный gt(x)=x2b~l~-A, исправляет па- кеты ошибок длины Ь. Тогда многочлен g(x)=gl(x)g2(x) =.(х2Ь_1—1)р(х) порождает циклический код длины п= = НОК {26—1, п-} -с г=36—1 проверочными символами,, исправ- ляющий одиночные ^пакеты ошибок длины Ь. Циклические коды; порожденные многочленами вида (х2Ь~1—\)р(х), называются ко- дами Файра. • Следствие .2. Пусть gi,(x) =х2Ь_‘—1, gi(x) =р1(х)р2(х) ... .. .pv(x), где pt(x),1, ..., v — неприводимый многочлен степе- ни 61. Предположим; .что все многочлены р4(х) принадлежат од- ному и тому же показателю е и J 6i>6. Тогда согласно теоре- ме 7;3.3. циклический (n, k) -код, порожденный многочленом g(x) = (х26-1—i)pi(x) ... Pv(x), имеет длину га=НОК {26—1, е}, п ' r= V 61+26—1 и.йсправляет одиночные пакеты ошибок длины £=1 b- • . . .. г- . Кодирование циклических кодов, исправляющих пакеты оши- бок,' ничем не отличается от кодирования, произвольных, высоко1 скоростных циклических кодов (см. гл. 5). Что касается декодирования, то мы ограничимся методом, применимым к любому циклическому коду, исправляющему па- кеты ошибок, и основанным на следующем соображении. • ' • , • •, п ' Остаток от деления принятого многочлена а' (х) — V огХл“‘ на порождающий многочлен g (х) т. е. синдром S (х) = 2 S/Xr~'1 Р \ ' 1=1 равен пакету ошибок х? I 2 I»исказившему а' (х), если v=0, \u=l J т. е. когда пакет (и синдром) есть многочлен eV1xb 1 + • • • + Алгоритм декодирования циклического (и, й)-кода, порож- денного многочленом g(x) степени г и исправляющего одиноч- ные пакеты ошибок длины 6, состоит в следующем: .1. Находим синдром S(x) принятого многочлена а'(х). 2. S.(x)=0— считаем, что ошибок не произошло, и декоди- рование на этом заканчиваем. . 3. .Положим i: = 0, S(0)(x)=S(x). . । .. 4. Определим.степень S(0 многочлена S(i)(x),'. . 5. S(0<6—считаем, что многочлен ошибок £i(.x) =S(i> (х), ко- довый многочлен а(х) =а'(х)—Е4(х), и прекращаем декодиро- вание. 134
6. S{i>^b — находим S<i+,)(x)=xS(i>(x) mod g(x) и, положив i: = i+1, переходим к п. 4. ........... Описанный алгоритм декодирования реализуется на.регист- рах сдвига с обратной связью. Для его выполнения требуется п тактов работы устройства (п — длина кода), что ограничивает сферу его использования низкоскоростными системами. В высо- коскоростных системах может быть использован гибридный ме- тод декодирования, в котором конфигурация пакета ошибок оп- ределяется на регистрах сдвига за небольшое число тактов, а местоположение — вычислениями, основанными на китайской теореме об остатках [108]. Весьма интересными и полезными в практических примене- ниях являются коды Гилберта. Код Гилберта длины n=pq, где р и q(p<q)—взаимно простые целые числа, есть множество двоичных последовательностей (а0, а„ ..., ап^), удовлетворяю- щих .следующим проверочным соотношениям: <7-1 2 a*₽+s — ° для s = o,i,..., р—1, /=0 р*-1 ^а^; = 0 для t = 0, 1, ... , q — 1. (7.3.9) /=б При циклическом упорядочении символов код Гилберта бу- дет циклическим с порождающим многочленом g(x) = (х”+1) (х’+ 1)/(х+ 1). Теорема 7.3.4 Пусть р и q — взаимно простые целые числа': <7>р>0; ап=р—n(q—р), где п=б, 1, ..., [pl(q—-р)]; Пап—наи- меньший отличный от 1 простой делитель, числа ап; Вап = =р—ап1Пап. Тогда двоичный циклический (pq, pq—р—^-|-1)-код, порож- денный многочленом (хр+1) (х’+1)/(х+1), исправляет одиноч- ные пакеты ошибок длины b=min Вап и для любого b'>b суще- п ствует пакет ошибок длины Ь', не исправляемый этим кодом. , > Рассмотрим следующий алгоритм исправления пакетов оши- бок с помощью кода, определенного в теореме. Принятое слово; • многочлен делится на многочлены хр+1 и х9+1. Остатки от де,- ления сравниваются между собой. Если свободные члены обоих остатков равны 1 и сами остатки равны между собой, то любой из этих остатков есть произошедший пакет ошибок. В противт ном случае^ каждый из остатков умножается на х и приводится по модулю хр+ 1 и х9+1 соответственно. Новые остатки сравниг ваются. Если они совпадают и их свободные члены равны 1, то любой из этих остатков, умноженный на х, есть произошедший пакет ошибок. В противном случае каждый из остатков снова умножается на х и т. д. Для любого пакета сшибок длины не бо- лее р да каком-нибудь шаге (меньшем pq) фавенство остатков 135
наступит. И если для любого пакета длины b за pq последова- тельных шагов равенство остатков происходит один раз, то рас- сматриваемый код исправляет пакеты ошибок длины Ь. Оценка снизу длины исправляемого пакета ошибок основы- вается на следующей теореме. Теорема 7.3.5. Пусть существуют такие многочлены Р(х), Р'(х) Q(x) и Q'(x) степени, меньшей р, что P(x)=Q(x) и P'(x)=Q(x), a P'(x)=P(x)x‘(mod (хр+1)) и Q'(x) = ==Q(x)x3 (modx’+l), где Q<s<pq и свободные члены всех мно- гочленов равны 1. Тогда коэффициенты многочлена Р(х) обла- дают тем свойством, что среди них имеется некоторое (быть мо- жет, нулевое) число несмежных блоков длины q—р, состоящих из одних нулей. Остальные (за вычетом блоков из q—р нулей) коэффициенты многочлена Р(х) образуют периодическую по- следовательность — /-кратное повторение некоторой последова- тельности, которой начинается и заканчивается последователь- ность коэффициентов многочлена Р(х). Доказательство. Пусть s=i (modp) и s==j (modp), 0</<р, Ос/<<?. Тогда P,(x)=P(x)x<(mod (хр+1)) и Q'(x) = == Q (х) xJ (mod (х’+1)). р-i Предположим, что /=/. Пусть Р(х) == V phxk и Р'(х) = &г=0 Р-1 = ^р/х*. По условию р0'=1. Из указанных сравнений следу- fo=o ет, что pp_i—1, а из /=/ и P(x)=Q(x) будет следовать, что Q'(x) имеет степень, не меньшую р. Но это противоречит усло- вию. Таким образом, i^j. Из условия Q'(x)=Q(x)xi (mod(x’+l)), учитывая, что степень Q(x) меньше р, следует, что среди коэффициентов Q(x) имеется блок из q—р нулей. А* из того, что свободный член Q'(x) равен 1, вытекает, что за блоком из q—р нулей следует 1. Ввиду P(x)=Q(x) этот же блок нулей содержится среди коэффициентов многочлена Р(х). Далее из сравнения Р'(х) ==P(x)x‘(mod(xp-|-1)) получаем, что такой же блок нулей имеется среди коэффициентов Р' (х) и Q,(x)=P'(x). Блоку из q—р нулей среди коэффициентов Q'(x) соответствует блок из q—р нулей среди коэффициентов Q(x). По этому блоку из q—р нулей найдем соответствующие ему бло- ки из q—р нулей среди последовательностей коэффициентов многочленов Р(х), Р'(х), Qz(x) вплоть до того, как этот процесс оборвется. Вычеркнем из всех последовательностей коэффициен- тов многочленов Р(х), Р,(х), Q(x), Q'(x) все найденные выше блога из q—р нулей. Пусть при этом_получатся последовательно- сти Р, Q, Р' и Q'. рчевидно, P = Q, P'=Q' и последовательность Р' получается из Р циклическим сдвигом на i позиций, a Q' по- лучается из Q циклическим сдвигом на j позиций. Отсюда, учи- тывая i^=j, следует, что Р есть /-кратное повторение некоторой ненулевой последовательности. Последовательность коэффици- 436
ентов многочлена Р(х) начинается и заканчивается этой ненуле- вой последовательностью, ибо свободный член Р(х) равен. 1, а за каждым блоком из q—р нулей следует 1. Получим оценку снизу длины исправляемого пакета ошибок. Предположим, что найдется неисправимый пакет длины <:min Вап. Поскольку Вап<р, то найдутся многочлены Р(х), п Р'(х), Q(x) и Q'(x), удовлетворяющие теореме, и степень Р(х) меньше Ь. Согласно теореме 7.3.5 последовательность коэффици- ентов многочлена Р(х) начинается и заканчивается некоторой ненулевой последовательностью длины, не большей max ап/77ав. п Отсюда следует, что степень Р(х) —max aB/77an=min Вап. По- лучили противоречие. Таким образом, все пакеты длины Ь= =minSaB исправимы. Теперь для любого Ь*>ттВап построим неисправимый пакет ошибок длины Ь*. Будем считать Ь*<р, ибо для tf^-p такой пакет строится элементарно. Обозначим п* наи- меньшее п, для которого Ь*>Вап*. Тогда Пап* не делит ат для т<п*. В противном случае Пап»^Пат и ат>а„*, так что ат1Пат>ап»1Пап». Но тогда Вап*>Ват, а это противоречит пред- положению, что п*—минимальный номер, для которого Ь*>Ва^. Далее Пап*>п*. Иначе r=an» + IIan»(q—р)=р—(п*—Пап*)- • (q—р), с одной стороны, делится на Пап* и в то же время г= = ат для т=п*—Пап»<п*, что противоречит доказанному выше. Пусть А — последовательность длины ап*/77ав«, первый и (&*—Вап*)-й элементы которой равны 1, элементы (Ь*—Вап* + + 1, ..., ап*/Пап» равны 0, а остальные — произвольны. Заметим, что Ь*—Вап»<ап*/Пап*, поскольку Ь*<р. Пусть С есть (77а„*—п")-кратное повторение последователь- ности А. Такую последовательность, учитывая Пап*>п*, всегда можно построить. Пусть, наконец, D — последовательность из одних нулей дли- ны q—р. Тогда последовательность P = CDADA ...DA, где DA повторяется п* раз, будет являться пакетом длины Ь*. Этот па- кет будет неисправим в силу того, что можно найти четыре по- следовательности Р, Q, Р', Q', где P'=ADAD ... ADC (AD по- вторяется п* раз), Q = PD, Q'=P'D такие, что соответствующие им многочлены Р(х), Q(x), Р'(х) и Qz(x) удовлетворяют теоре- ме 7.3.5. Таким образом, рассматриваемый код исправляет все оди- ночные пакеты ошибок длины Ь=ттВап и для любого Ь*> >min Вап найдется пакет ошибок длины Ь*, не исправляемый этим кодом. Следовательно, теорема 7.3.4 доказана^ В табл. .7.2 приведены примеры параметров двоичных кодов Гилберта (длины исправляемых пакетов ошибок взяты из ра- бот [77] и [90]), а в табл. 7.3 — параметры двоичных кодов, ис- правляющих одиночные пакеты ошибок. 137
Т абл и ца 7.2 р Q Длина кода 5 Jr G Я Д Длина пакета ошибок р q Длина кода Число провероч- ных сим- волов . Длина пакета ошибок ‘, 11 15 165 25 ю 29 35 1015 63 28 13 19 247 31 12 37 43 1591 79 32 17 23 391 39 16 43 49 2107 91 38 19 25 475. 43 18 53 65 3445 117 52 Таблица 7.3 Код Параметры Длина Число провероч- ных символов Длина пакета ошибок Посимвольный код — пере- мещение кода Хэмминга (2т—1)6 mb b Поблоковый . код — переме- жение кода Бартона (2v-l)vX 2vX v(X-l)+l Код, построенный из посим- вольного кода перемежения удлиненного кода Рида—Со- ломона над GF(2V) ' (2v4-l)vZ 2vX v(X—1)+1 Код, построенный из, посим- вольного кода— перемеже- ния удлиненного кода Ри- да—Соломона над GF(p) (P+3)vX 4vX ' v(%-l)+l Код Файра НОК{(26—1), (26—1)} 3&-1 b Код Гилберта Р<1 p+g-1 min Ban n Код Ивадари 6(о+1)+26+а 2b-\-o о . ЗАМЕЧАНИЯ 7.1 и 7.3 основаны на работе [29], а 7.2 — на [12]. 7.1. Теорема 7.1.3 принадлежит Бартону [102]. Он же исследовал взаи- мосвязь модульных кодов с кодами Рида — Соломона. Хон и Пейтель [131] построили совершенные модульные коды, имеющие отличную от. кодов теоре- мы 7.1.2 структуру. Линейные модульные коды, проверочная матрица кото- рых имеет малое число единиц, исследовались в [49, 69, 164]. 7.2. Коды, локализующие ошибки, были Введены Ъулфом и Элспасом [173] и исследовались Вулфом [172], Ужаном и Веном [106], Геталсом [121] и в [12]. Циклические коды, локализующие ошибки, исследовались Геталсом [121], которому принадлежит теорема 7.2.2, и в [12]. Лемма 7.2.1—это тео- рема 1 [173]. Вулфом [172] построены оптимальные ЛО-коды способом, от- 138
личным от изложенного в следствии теоремы 7.2.3. Алгоритмы декодированйя ЛО-кодов, описываемые в 7.2, основаны на [12, 121, 172]. 7.3. Определение пакета ошибок в 7.3 принадлежит Цзяню и Тану [Ц1], b-пакетное расстояние введено Вайнбергом и Вулфом [169]. Граница Рейтера (7.3.1) получена в [158], граница Файра (7.3.2)—в [118], граница 7.33 —в [72]. Линейные коды с проверочной матрицей (7.3.4) и алгоритм их декоди- рования построены Ивадари [134]. Эйбрамсон [88] построил первый циклический код, исправляющий паке- ты ошибок длины 2. Файр [118], обобщая работу [88], построил важный класс кодов, исправляющий пакеты ошибок длины b (см. следствие 1 теоремы 7.3.3). Корр [115] ввел в рассмотрение и исследовал циклические коды — перемежения, исправляющие пакеты ошибок. Поблоковое перемежение циклических кодов Бартона приводит к кодам с асимптотически минимальной избыточностью [102]. Мелас и Горог [146] рассмотрели возможности получения длинных кодов из коротких с той же " корректирующей способностью. Теорема 7.3.3 является обобщением [146] и [20]. Элспас и Шорт [117]. Касами и Матоба [136] исследовали и нашли с помощью ЭВМ оптимальные циклические и укороченные циклические коды, исправляющие пакеты ошибок. Метод декодирования циклических кодов, ис- правляющих пакеты ошибок, принадлежит Питерсону [72]. Линейныё коды Гилберта были введены в работе [120] Гилберта. После- довательно улучшали оценку длины, исправляемых этими кодами пакетов ошибок, Ньюман [147], Бал и Цзянь [94], Г. М. Тененгольц, А. А. Давыдов, Г. Л. Тауглих [77]. Арази [90] нашел точное значение длины исправляемых циклическими кодами Гилберта пакетов ошибок. Изложение кодов Гилберта в 7.3 основано на этой работе. В статье [ПО] Цзяня и Спенсера и в [13] рассматривались линейные ко- ды, исправляющие пакеты ошибок с низкой плотностью. Исправлению сплош- ных пакетов ошибок посвящены работы Шилингера [162], Вайнера [174] и [9]. Для исправления многократных пакетов ошибок обычно используют пе- ремежения (см. 6.1 и 7.3) и произведения (см. 6.2) кодов, исправляющих мно- гократные независимые ошибки. Глава 8 > ЛИНЕЙНЫЕ КОДЫ С НЕРАВНОЙ ЗАЩИТОЙ ИНФОРМАЦИОННЫХ СИМВОЛОВ 8.1. Определения и основные свойства линейных кодов с неравной защитой информационных символов Пусть V — линейный, возможно, несистематический (п, .&)- код над GF(q) с минимальным-расстоянием Хэмминга d. Обо- значим через G порождающую матрицу кода V. Тогда, если а= (а1( ..., ak),— информационное слово, то b = aG=(&1, ... • • • bn) — кодовое слово кода V. Пусть было передано кодовое слово b и почнято слово Ь'= «=ЬХ—Ь=(е1,_... 139
..., еп) — слово-ошибка. Наилучший результат декодирования получается при использовании принципа максимального правдо- подобия. Для независимых ошибок это означает, что принятое слово декодируется в ближайшее в смысле расстояния Хэммин- га кодовое слово. Будем предполагать, что любой метод декоди- рования кода V основан на принципе максимального правдопо- добия. Если число ошибок в принятом слове не превосходит/ <((d—1) /2]), то этот метод правильно находит переданное слово. Допустим-теперь, что число ошибок в принятом слове равно f, где В этом случае мы не можем гарантировать, что всегда результатом декодирования будет истинное кодовое сло- во. Однако код V может иметь такие свойства, что некоторые ин- формационные символы могут быть определены правильно. Будем говорить, что /-й информационный символ (/-й символ информационного слова) кода V имеет степень защиты Д, если какие бы f ошибок не произошли в кодовом слове, этот символ может быть определен верно, даже если все кодовое (и информационное) слово в целом будет декодировано неверно. Очевидно, каждый информационный символ кода V с мини- мальным расстоянием d имеет степень защиты Д>/ (/^= =[(d—1)/2]), и при числе ошибок f^t он может быть правиль- но определен с помощью любого метода декодирования, реали- зующего кодовое расстояние. Если степень защиты /-го информа- ционного символа fi>t, а число ошибок в принятом слове равно f то метод определения этого символа из принятого слова должен основываться на возможности различать кодовые слова с различными /-ми информационными символами и выби- рать среди них то кодовое слово, которое находится на расстоя- нии не более Д от принятого слова. Для этого расстояние м*ежду двумя любыми кодовыми словами с различными /-ми информа- ционными символами должно быть не менее чем 2Д +1. Лемма 1. Для того чтобы /-й информационный символ линей- ного кода V имел степень защиты Д, необходимо и достаточно, чтобы вес произвольного кодового слова кода V с ненулевым /-м информационным символом был не менее чем 2Д + 1. Код, информационные символы которого имеют различные степени защиты, называется кодом с неравной защитой инфор- мационных символов (НЗ-кодом). Для построения и исследования проверочных матриц линей- ных НЗ-кодов удобно ввести понятие степени защиты кодового символа. Будем говорить, что /-й символ кодового слова кода V имеет степень защиты Д, если какие бы f (f<h) ошибок не произошли в кодовом слове, этот символ может быть определен верно, да- же если все кодовое слово в целом будет декодировано неверно. В конечном счете нас интересуют только информационные символы. Поэтому, если для кода V известны степени защиты кодовых символов, по ним определяют степени защиты инфор- мационных символов. Для систематических кодов способ опреде- 140
ления очевиден. Для несистематических кодов задача сводится к исследованию эквивалентного коду V систематического кода. Рассмотрим множество М кодовых слов кода V такое, что Af={ve V : w(y) =С26, 6>t=[(d—1)/2]‘}. Обозначим через Гм число векторов максимальной линейно независимой подсистемы векторов множества Af; гм — ранг множества М. (Слово кода V — вектор «-мерного линейного пространства Q.) Лемма 8.1.2. Для того’ чтобы k* информационных символов линейного (п, k) -кода V имели степень защиты б, необходимо и достаточно, чтобы ранг множества Af={veV: w(v)<26} был не более чем k—k*. Доказательство. Необходимость. Пусть а=(аъ ... ..., ак„ ..., ак) — произвольное информационное слово кода V. Предположим для определенности, что первые k* символов име- ют степень защиты 6. Остальные информационные символы, оче- видно, имеют степень защиты не меньше t. Множество всех кодо- вых слов, соответствующих информационным словам а=(аь ... ..., ак) таким, что сц=О для всех i=l.k* образует линейное (А—k*)-мерное подпространство V' кода V. Кодовое слово v, &V' соответствует информационному слову а—(аъ ..., ак) с по крайней мере одним а^О, i=l, ..., k*. Тогда согласно лемме £.1.1. вес ам (v) ^26+1. Таким образом, все слова v кода V с w(v),^26 принадлежат подкоду V' и, следовательно, ранг ги множества М не превосходит размерности V', т. е. rM^k—k*. Достаточность. Предположим, что ранг гм множества A4={veV : w(v)<26} равен ц. Пусть {gt, ..., gu}—максималь- ная система линейно независимых векторов множества М. Обо- значим линейную оболочку этой системы векторов — линейное р,-мерное подпространство кода V — через V*. Дополним • систе- му {gb .... gj до базиса {gj, ..., g„, gM+i, ..., gfc) пространства V. Информационному слову а= (аь ..., ак), имеющему по край- ней мере один символ ац+^0, /=1 k—ц,, соответствует сло- во veF с w(v) >26+1. Согласно лемме 8.1.1 это означает, что (ц+/)-й информационный символ (/=1, ...» k—р,) имеет сте- пень защиты 6. Часто бывает полезна другая формулировка леммы 8.1.2. Лемма 8.1.3 Для того чтобы k" информационных символов линейного (n, k) -кода V имели степень защиты 6, необходимо и достаточно, чтобы код V разлагался в прямую сумму V—V'®V" такую, что размерность V" равна k" и все слова кода veV веса не более 26 принадлежат V'. Лемма 8.1.3. позволяет получить каноническую форму порож- дающей матрицы линейного кода с неравной защитой информа- ционных символов. Пусть V=V'®V". Если {gi, ..., gM}—базис V' и {gM+1, .... gj — базис V", тогда порождающая матрица G кода V <=<!• 141
.6 до» (»ТР & () ’ 6’'=’ И!/ ' lg2 = где - 4/ г t '1 - -. .ftl+l G = . • t g|l+2‘ ik §11 §12 . • • §ln §21 §22 • • • §in £111 £jl2 * ’ * - #Ц+1,1 . £11+1,2 * * * £g+l,rt - £ц+2,1 £j1+2,2 * * ’ £ц+2,П §kl §k% ••• §kn — порождающие матрицы подкодов У' и V" соответственно. , Любое элементарнре преобразование строк и столбцов мат- рицы G, не затрагивающее одновременно строки матриц G' и G", Приводит к коду F, эквивалентному исходному коду У, т. е. коды V и Г имеют одинаковое число информационных символов со степенью защиты б,» в то время как степень защиты остальных информационных символов обоих кодов не меньше I. Преобра- зуем матрицу G' к приведенно ступенчатой форме. Заметим, что вычитание любой комбинации строк матрицы G7 из произволь- ной строки матрицы G" также приводит к эквивалентному коду в определенном нами смысле. Это позволяет преобразовать мат- рицу G" так, чтобы все первые р, столбцов содержали только нули. Другими словами, матрица G" преобразуется в матрицу 110мД11, где 0м —нулевая ^Хйг-матрица и 5 — k2X(n—kt)- матрица. Преобразуя матрицу S посредством элементарных пре- образований к приведенно ступенчатой форме, мы получим сле- дующую каноническую форму порождающей матрицы линейного НЗ-крда: 1 0 .. ... 0 £1,11+2 • • • §lk £i,^+i • • £in • - 0 1 .. .. 0 £г,‘Д+1 £2,11+2 • ’ • £26 £ ,£+i • * £ n G = 0 0 . ,. 1 £ц,ц+1 £ц,и+^ • • ’ £цл £цЛ+1 • • £цп . (8.1.1) ; r 0 0 . .. 0 1 0 .. 0 £цнЛ+1 • • £ц+1n I* 0 0 .. 0 0 i 4 . .. 0 £ц+2,£+1 ' • • £ц+2,Л 0 0 . .. q 0 0 .. 1 £fr.&+4 • ♦ §kn ; Из (8.11) следует, что линейный НЗ-код будет систематиче- ским (или'эквивалентным систематическому коду в смысле оп- ределенном выше), если и только если все £\>ц+5=0, г=1, ...» р; /= 1,..., k—р. Утверждение леммы 8.1.2 может быть обобщено на любое ко- нечное число степеней защиты. Пусть заданы две последователь- 142
ности неотрицательных чисел 6,, б2, ..., в; ^84^82^-;.. =^6/) и kt, k2, . .. , ^.и.линейный-код V, k=^k‘j . Обрзна^им,л)<= = 2 k» ®l = k- . j=i - : -.. ; st*. Лемма 8.1.4.' Для .того(чтобы не менее Ь • • • ’> 0? инфор- мационных символов-динейноро (п.'й)-кода V имели стецень за- щиты 6, или более, необходимо и достаточно, чтобы для- любого i, i=l, I ранг множества М4—{у^У’.да (v).<26,} был-не бо- лее чем k—и.. Леммы 8.1.2—8.1.4 позволяют, властности,.определить, обла- дает ли данный код свойством неравной защиты символов. Так, очевидно, все информационные символы любого’ несистематиче- ского циклического кода, порожденного многочленом, вес кодо- рого равен минимальному расстоянию кода d, имеют одинако- вую степень защиты t=[(d—1)/2]. Отметим, что все символы си- стематического циклического кода имеют равную защиту. 1 Эти примеры имеют негативный характер, в то время как нас больше интересуют позитивные, утверждения,. ; - В следующих параграфах приводятся различные конструк- ции НЗ-кодов, при построении которых используются леммы 8.1.2—8.1.4. Здесь же мы ограничимся одним примером исполь- зования леммы 8.1.2. Обозначим: Jn — га-мерный.вектор, состоящий из одних еди- ниц, Рп—код с повторением длины п, D — максимальный вес ко- довых слов линейного двоичного (п, &)-кода V с минимальным расстоянием d, 8 — целое и 6>((.d—1)/2]. Теорема 8.1.1. Если п>£>+26, то линейный двоичный (п, /г+1)-код У'=Рп®У имеет минимальное расстояние d и по крайней мере один информационный символ кода У имеет сте- пень защиты f>6. Доказательство. Пусть v'eV'. Тогда v'=A,J„+v, veV и Х=0 или 1. Если %=0, то v'eV и ffi>(v')>d. Если же Х= 1, то- гда ay(v') =w(J„+v)>«>(Jn)—a»(v):>n—£)>26>d. Таким обра- зом, минимальный вес кодовых слов кода V', а в силу линейно- сти и минимальное расстояние равно Кроме того, слова кода V', имеющие вес, меныпий или равный 26, принадлежат коду V. й поэтому согласно лемме 8.1.2 по крайней мере один информа- ционный символ имеет степень защиты f>6. Пример. Рассмотрим двоичный циклический (33,18)-код с минималь- ным расстоянием d=10 и его (33,12)-подкод с тем же самым минимальным расстоянием <1=10 [73]. Вектор J33 принадлежит (33,13)-коду. Расстояние между этим вектором и любым кодовым словом (33,12)-подкода равно по крайней мере 10.-Все слова (33,12)-кода имеют-четный вес. Поэтому макси- мальный вес любого слова (33,12)-кода не превосходит-22. Пусть V —двоич- ный циклический (66,24)-код, являющийся итеративным произведением (33,12)-кода и-циклического (2,2)-кода. Минимальное расстояние кода Урав- 143
но 10. Максимальный вес D слов кода V не превосходит 44. Согласно теореме 8.1.1 код Р"=РббФ1/ есть двоичный циклический (66,25)-код с минимальным расстоянием d=10, один информационный символ которого имеет степень защиты 10. Для сравнения укажем, что наилучший циклический (65.24)-код имеет d=16. Исследуем теперь'свойства проверочной матрицы линейного кода с неравной защитой информационных символов. Лемма 8.1.5. i-й символ кодового слова линейного (п, k) -кода V имеет степень, защиты Д, если и только если i-й столбец прове- рочной матрицы Я кода линейно зависит от не менее чем 2ft столбцов матрицы Н. Доказательство. Пусть Ли Ли ... hln _ Лах Лаа ... Л^ Л/i ЛГ2 ... Лте — проверочная матрица кода V, Л/ = цы Н. hu hfj — j-й столбец матри- Предположим, что i-й символ кодового слова кода V имеет степень защиты Д. Тогда для любых двух слов-ошибок e(t) = = (е/0. • • •, еп(1>) и е<2)= (et(2>, ..., е„<2)) таких, что а»(е(|)) ^Д, и>(е<2)) <Д и е1<1,#=е1<2), их синдромы S (е(1>) = e^hj и S (е<2)) = п /=1 = 2 eiW^i не Равны- М Следовательно, для е= (еь ..., е„), е,-=е,(1)—е/2), е,#=0,, , п w(e)c2ft имеем еД=/=0, что означает линейную независи- мость i-ro столбца от любых 2f{—1 (или менее) других столбцов матрицы Н. С другой стороны, если i-й столбец матрицы Н ли- нейно независим от любых ~2ft или 2f(+1 столбцов, тогда, какие бы слова-ошибки е(1> и е(2) веса w(ew) ^Д+'l и о>(е<2)) ^Д+1 мы не взяли из S(e(t>) =S(e(2)), следовало бы e{w = =е<(2), а это означает, что i-й информационный символ имеет степень защиты не менее Д+1. Обратно, пусть i-й столбец матрицы Н зависит от не менее чем 2fi столбцов. Предположим, что i-й символ имеет степень за- щиты, меньшую^ чем Д. Но тогда по доказанному выше этот сим- вол зависит от 2Д—1 других столбцов. Получили противоречие. Лемма 8.1.6. Степень защиты любого информационного сим- вола линейного (п, й)-кода не превосходит Дпах=((я—А)/2]. 144
Доказательство. Предположим, что существует линей- ный (п, £)-код V, в котором по крайней мере один информаци- онный символ имеет степень защиты fmax+1. Тогда согласно лем- ме 8.1.2 множество Af={veV: ffi>(v)<2(fmaI+l)} имеет ранг rM<k. Но 2 [(и—£)/2]4-2^п—Л+1, и поэтому М'еЛГ, где М'= = {veV : w(y)^n—k4-1}, Гм'^гм. Принимая во внимание, что вес любой из k строк порождающей матрицы в приведенно сту- пенчатой форме линейного (п, k) -кода не превосходит п—&+1, заключаем, что rM'=k и, следовательно, rM=k. Получили про- тиворечие. Минимальное расстояние линейного (n, k) -кода не превосхо- дит dmax=«—k 4-1. Коды с таким расстоянием называются разде- лимыми кодами с максимальным расстоянием (кодами МДР). I Примером кодов МДР служат коды Рида—Соломона. Степень защиты любого информационного символа кода МДР не мень- ше чем [(d—1)/2]=[(п—k)/2]. С другой стороны, по лемме 8.1.6 степень защиты любого информационного символа линейного (n, k) -кода не больше чем Цп—k)/2]. Следовательно, все инфор- мационные символы кодов с максимальным расстоянием имеют одинаковую максимально возможную степень защиты [(п—k)/2]. 8.2. Оптимальные двоичные линейные систематические коды с неравной защитой информационных символов Пусть V — линейный двоичный систематический (п, £)-код с минимальным расстоянием d=2^4-l, k2 информационных• сим- волов которого имеют степень защиты 4(4>М- Первые k сим.- волов кодового слова v —это информационные символы, а по- следние п—k символов — проверочные. Среди k информацион- ных символов k2 имеют степень защиты 4, а остальные инфор- мационные символы, а также проверочные символы кода V име- ют степень защиты по крайней мере Тогда, если произошло не более it ошибок, то по принятому слову всегда можно.одно- значно определить кодовое слово, и, более того, если произошло ошибок, то также можно определить переданное слово, но лишь при условии, что в символах со степенью защиты ti произошло не более Л ошибок. Последнее утверждение есть прямое следствие леммы 8.1.5. Отсюда, учитывая, что число раз- личных синдромов линейного кода никак не меньше числа ис- правляемых им комбинаций ошибок, получаем следующую оцен- ку снизу числа г проверочных символов кода V: h t, tt iog2 14-4- 2 \ £=1 /=/i+l (8.2.1) Граница (8.1.1) — это аналог границы Хэмминга для линей- ных двоичных систематических кодов с неравной защитой ин- фррмационных символов. В асимптотике (при п->оо и фиксиро- 145
ванных t, и t2 и 7?2=^2М<а< 1) (8.2.1) эквивалентно (главный член в (8.2.1) аппроксимируется (п—k2) *'к2^-‘'): log2 п 4- (f2 — »\) log2 k2. (8.2.2) Линейный (п, &)-код с неравной защитой информационных символов назовем оптимальным, если для него в (8.2.1) имеет' место равенство, и асимптотически оптимальным, если равенст- во имеет место в (8.2.2). Обозначим через а примитивный элемент поля GF(22m). Тог- да 0=а2'"+1—примитивный элемент GF(2m), являющегося под- полем GF (22т). Рассмотрим линейный двоичный (n, 6)-код с проверочной матрицей Н = Il 1 а ... а2” а2"41 а2”42 .'.. а24”’2 II 1 о ... о р о ... о (8.2.3) Длина кода V п=22т—1, число проверочных символов г=3ш, число информационных символов й=22т—Зт—1. Код V — под- код кода Хэмминга, и его минимальное расстояние d>3. Теорема 8.2.1. Пусть т — нечетное число. Тогда линейный (n, k) -код V с проверочной матрицей И (8.2.3) эквивалентен ли- нейному систематическому коду, в котором не менее ^чем 2”—пг—{ информационных символов имеют степень защиты 2. Доказательство. Пусть h1( h2, ..., h„— последователь- ность столбцов матрицы Н. Покажем, что любой столбец hf с номером i= 14-/(2m+1), /=0, ..., 2т—2 линейно зависим от не менее четырех столбцов матрицы Н. Предположим противное, т. е. что существует линейно зависимая комбинация w <4) столбцов, включающая у (0<7<ау) столбцов с указанными номерами. Если y = w, то наше предположение означает, что матрица । а(2т+1)(2т-2) 1 Р3 рЗ(2т-2) 1 0 ... 02^3 1 Р3 рЗ(2т -2) содержит w (w<4) линейно зависимых столбцов. Но матрица В есть проверочная матрица кода БЧХ с d>5. Получили противо- речие. Если y = 1, тогда согласно предположению найдутся it, i2, h, is (ii^O) такие, что = p + + ррг‘, (8.2.4) где ц.=0,.если w=3, и ц=1, если w = 4. Сумма в правой части (8.2.4) есть элемент GF(2m), в то время как элемент a*1, it=0 не принадлежит GF(2m) и (8.2.4) не может иметь место. Далее, если y=w—2, то из второй строки матрицы Н следует p3fl4-рр3/’= 0,4 (8.2.5) 146
где ц принимает такие же значения, как и в (8.2.4). Так как пг нечетно, р3 есть примитивный элемент GF(2m) и равенство (8.2.5) несправедливо при любых i1( i2, ii¥=i2. Наконец, если y = w—3, а»=4, то p3i> должно равняться нулю, что невозможно. Таким образом, наше предположение неверно, и любой столбец h4 с номером i=l + /(2m+l), /=0, 1, ..., 2т—2 линейно зависим от не менее четырех других столбцов матрицы Н. Согласно лемме 8.1.5 это означает, что i-й символ кодового слова кода V имеет степень защиты не менее 2. Мы доказали, что 2т—1 символов кода V имеют степень за- щиты не менее 2. По виду проверочной матрицы определить, ка- кие кодовые символы являются информационными, можно лишь для систематических кодов. Поэтому преобразуем матрицу Н (предварительно представив ее в двоичном виде) в матрицу, имеющую приведенно ступенчатую форму. Другими словами, по- строим систематический код V', эквивалентный коду V. Заметим, что любые элементарные преобразования столбцов и строк про- верочной матрицы не изменяют степень защиты любого кодово- го символа. Так как верхняя строка матрицы Я является прове- рочной матрицей циклического кода Хэмминга, то любые 2т по- следовательных кодовых символов кода V' можно выбрать в ка- честве проверочных символов. Если мы выберем в качестве про- верочных символы с номерами /=2, ..., 2/п+1, имеющие сте- пень защиты 1, тогда не более Зт—2т=т других проверочных символов будут иметь степень защиты 2. Таким образом, не менее k*=2m—1—т информационных символов систематического кода V имеют степень защиты 2. При т>3 для линейного систематического кода V' в (8.2.1) имеет место равенство. Следующая конструкция является обобщением теоремы 8.2.1. Рассмотрим двоичный линейный (п, k) -код Vt с проверочной матрицей я; — 1. 1 0 0 .. 0 .. 0 р Р3 0 0 , (8.2.6) \ 1 0 .. 0 рзмз 0 1 а2*'1 . a(2/-i)2/n а(2/^1(2т+1) a(2f-l)(22m-2) где а — примитивный элемент поля GF(22m) и p=a2m+1. Длина кода Vt п=22т—1, число проверочных символов г не больше чем (f+l)m, ц, следовательно, число информационных символов k не меньше чем 22т—1—(t+l)m. Минимальное расстояние кода Vt, очевидно, не'меньше 3, так что степень защиты любого ин- формационного символа не. меньше 1. Теорема 8.2.2. Пусть т и t — целые числа такие, что (2/—1, 22т—1) = 1, />3. Тогда линейный (п, £)-код Vt с прове- рочной матрицей Ht (8.2.6) эквивалентен- линейному систёмати- 147
ческому коду V/, в котором не менее чем 2т—(t—1)т—1 инфор- мационных символов имеют степень защиты I. Доказательство теоремы 8.2.2 основано на той же идее, что и доказательство теоремы 8.2.1. Поэтому ограничимся лишь кратким замечанием. Любой столбец матрицы Ht с номером t=l+j(2m+1), j=0,..., 2m—2 линейно зависим от не менее чем 2t других столб- цов. Множество всех столбцов с указанными номерами образует проверочную матрицу кода БЧХ длины n'=2m—1 и d^s2^+l. При пг>3 линейный систематический (п, &)-код V/ достигает асимптотической границы (8.2.2). Пример. Пусть т=5. Тогда код, удовлетворяющий теореме 8.2.1, име- ет длину п=1023, £=1008, d=3 и 26 информационных символов кода имеют степень защиты 2. При 1=3 код, удовлетворяющий теореме 8.2.2, имеет дли- ну и=1023, £=1003, d=3 и 21 информационных символов имеют степень защиты 3. , Рассмотрим конструкцию линейных кодов с неравной защи- той информационных символов, основанную на соединении по- рождающих матриц кодов с заданными свойствами. Пусть Vt и V2—линейные (tit, kt)- и (га2, й2)-коды над GF(q) с минимальными расстояниями dt и d2 соответственно, Gt и G2— порождающие матрицы кодов Vt и V2. Пусть код V, имеет под- код Vt размерности kt = k,—k2 (kt>k2) с минимальным расстоя- нием d,>dt. Предположим, что ch<dt-Vd2. Преобра- зуем порождающую матрицу G, кода Vt ( таким образом, чтобы ее нижние %, строк образовывали базис подкода Vt. Составим следующую матрицу: (8.2.7) где Gi, Gi= | и G2— порождающие матрицы кодов Vx, и V2 соответственно, 0 — нулевая матрица размера n2X (kt—k2). Теорема 8.2.3. Матрица G (8.2.7) порождает линейный (nt + n2, kt)-код. V над GF(q) с минимальным расстоянием ch, k2 информационных символов которого имеют степень защиты t2= =[(dt+d2-l)/2].- Доказательство. Утверждение, что минимальное рас- стояние кода V равно ch следует из теоремы 6.1.3. Произвольное слово V кода V есть линейная комбинация строк порождающей матрицы G. Если в эту комбинацию входит хотя бы одна из строк матрицы G2, то вес w(v)>-dl + d2. Таким образом, все сло- ва v кода V, вес которых w(v) <dt + d2, принадлежат (П1 + Пг, kt—fe2)-подкоду V, порожденному матрицей бг = ЦбчО||, а все слова v кода V, не принадлежащие этому подкоду, имеют вес w(v)>dt+d2. Следовательно, в силу леммы 8.1.3, k2 информа- 148
ционных символов кода V имеют степень защиты /2=((^1+^2)/2]. В табл. 8.1 приведены параметры линейных кодов с неравной защитой информационных символов, построенных с помощью теоремы 8.2.3. Таблица 8.1 Линейный код V, рассматриваемый в теореме, вообще говоря, не будет систематическим. Можно, однако, построить эквива- лентный коду V систематический код V', k2 информационных символов которого имеют ту же, что и в коде V, степень защиты ^2=[(<Л + </2—1)/21- Для этого следующим образом преобразу- ем порождающую матрицу G кода V к приведенно-ступенчато- му виду G'. Матрицу Gt кода Vt с помощью элементарных пре- образований приведем к виду где/I,— единичная %гмерная матрица, 0 — нулевая (&2Xnt)- матрица, Pt и Р/ — матрицы соответствующих размеров. Мат- рицу G2 кода V2 преобразуем к приведенно-ступенчатому виду ^2 = 11^ -Ч ' где /*2 — единичная &2-мерная матрица. Завершает преобразова- ние матрицы G к приведенно-ступенчатому виду G' перестанов- ка столбцов матрицы G. Из построения матрицы G' непосредственно следует, что матрица G' порождает эквивалентный коду V линейный систе- матический* (nt + n2, Л,)-код V', k2 информационных символов которого имеют степень защиты ^2=[(di+rf2—1)/2]. Теорема 8.2.3 позволяет построить класс линейных двоич- ных НЗ-кодов, лежащих на границе (8.2.2) (что позволяет счи- тать их аналогами кодов БЧХ для неравной защиты информа- ционных символов). Для этого возьмем в качестве кода Vt 149
двоичный (nt, AsJ-код БЧХ с минимальным расстоянием d,— =2^—1, в качестве подкода Pi кода Vt— («„.й^-код БЧХ с.ми- нимальным расстоянием <Л=2ЛЧ-1, наконец, в качестве кода И2 — двоичный (п2, &2)-код БЧХ с минимальным., расстоянием d2=2(t2—ti + 1). Тогда линейный двоичный систематический (п,+п2> код -И'-будет иметь □минимальное ..расстояние = = 2lt+l и защищать k2 информационных символов от t2 ошибок. При &2 = ]log2nt[ и -достаточно большом п==п1 + «2 число г проверочных символов кода V' лишь на конст'анту отличается от правой*части (8,-2;2). - _ Предположим, что., заданы алгоритмы декодирования кодов Vt, Vt и У2,-реализующие их1.минимальные расстояния. Построим алгоритм декодирования, позволяющий правильно определить k2 информационных символов кода V, удовлетворяющего теоре- ме 8.2.3, если в . слове этого кода произошло 12 ошибок, и все информационное слово, если ошибок произошло не более t,= = [И.-1)/2]. . . Алгоритм I. Пусть а= (а13 а2,.... ,аьг, c/k,+i, ... , ?*,) —ин- формационное слово кода V. Кодовое слрво b = aG кода V пред- ставим в виде Ь= (by,, by,), где by, —кодовое слово кода Р^Ьу,— слово кода V2. Предположим, что блло передано слово b и при- нято слово b' = b 4; Е, где Е — слово-ошибка ве.-а ш (Е) ^/2. При- нятое слово b' — (&i, ... , ЬП1, Ь'П1+1, ... , ЬП1+пг) разобьем на два слова: by, = (bi, , b'n,) и.bp, = (Ь'П1+г, ... , Ьп,+п2). Слово by, де- кодируем с помощью алгоритма декодирования кода Рх, й слово Ьу2— с помощью алгоритма декодирования кода V2. В результате декодирования получаем слова by, и by, код в Рх и V2 соответ- ственно. По кодовым словам by, и by, нйх^дим информаци >нные солва ay, = (fli.y,, • • • , о*,,у,, o*2+i,y,, • • • , с*,,у,) и ay, =('’i,y2, • • • ... , я*,,у,). Если Cf.y, = Oi,y2 для всех i — 1,2, ... ,k2, то поле- гаем ijf.y, = at, i = 1, ... , k2. В противном случае определяем веса'ay (by, — by,) - 4 и ш(Ьу, — by,)~= 4- Полагаем by, = by, и о/ == ct(,v3> i = 1, ... , й2, если dx — ti 4" t2 ^2л или by, = by, и ai = ai,Vi, i = 1, ... , /гх в противном случае. Егли при декодиро- вании одного из слов by, или by, произошел откгз от декодиро- вания, то считаем, что в результате декодирования второго сло- ва получается истинное переданное слово. Теперь предположим, что вес слова-ошибки a»(E)^Fi. В этом случае мы можем определить информационное слово кода V полностью. Первые k2 информационных символов alt а,, ..., ак2 находим описанным выше образом. Затем по инфор- мационному слову а= (а,.....акг, 0,... ,0) находим кодовое слово b кода V,. Декодируя слово Ь'=Ь'Г1—b с помощью алго- ритма кода Г1, находим кодовое слово Ьр, кода Рь а по нему — fei—k2 последних информационных символов ак,+1,..., ак, кода 150
V и тем самым информационное слово а=(аъ ..., ah2, aft2+l, • • • , ahi) • • Теорема 8.2,4. Алгоритм I декодирования кода V правильно, определяет k2 информационных символов, если в слове этого кода произошло не более t2 ошибок, и все информационное сло- во, если произошло не более Л ошибок. . Доказательство теоремы 8.2.4 основано на следующей лемме. Лемме 8.2.1. Пусть а»(Е)^2 и хотя бы для одного, i, i=\,...,k2 at.Vt =£ oi.v,- • ‘ Тогда /х + d2 t2 t2» dx — 4- t2 t2 и by, = by,, или G + d2 — dx— ti t2^2 by, ==2 by2. Доказательство. Одно из слов by, или by, декодируется неправильно, поскольку по условию лемм>1 для некоторого i (i = I, ... , k2) сч,^ ^ at,v2. В то же время оба слова одновре- менно не могут декодироваться неправильно. Ибо тогда число ошибок в слове Ь' не менее [(dx 4-1)/2] 4~ [(а2 4-1)/2]>-?2, что противоречит условию Ъ(Е)<Д2. Пусть слово Ь^/ декодируется правильно, т. е. by, = Ьу,. Тогда истинное число ошибок в слове by, совпадает с числом исправляемых ошибок, ,а истинное число ошибок вслове by, не менее d2 — t2. Поэтому d2 — t2^t2, но dx—+ Точно так же, если слово by, декодируется правильно, то d1 — i1 + t2, но tr +d2 — t2~>t2- Итак, если в принятом слове Ь' произошло не более t2 оши- бок, алгоритм I согласно лемме 8.2.1 правильно определяет либо bF„ либо bF„ а по ним находит информационные символы ait ..., ак2. .В случае да(Е)^г, правильно определяется все ин- формационное слово, поскольку t1=[(d'1—1)/2], где ch— мини- мальное расстояние кода V. При построении алгоритма I для кодов Vlt и V2 предпола- галось существование произвольных алгебраических методов , декодирования, реализующих их минимальные расстояния. Если коды Vi и V2 допускают мажоритарное декодирование в £, и L2 шагов соответственно, для кода V можно построить су- щественно более простой по сравнению с изложенным алгоритм. Пусть at = fij (by,), j = 1, ... , dx — 1 — множество ортогональ- ных проверок для i-го (i = 1, ... , k2) информационного символа кода V1( = ф^(Ьу,)—множество ортогональных проверок для 151
i-го (i = 1, ... , k2, v = 1.d2 — I) информационного символа кода V2. Очевидно,/^ = ftl (by,) и at = (by,); j =1, ... , ^—1; v=l,..., d2—1 образуют множество ортогональных проверок для i-ro информационного символа кода V. Добавив к ним две независимые тривиальные < проверки сц=сй,у, и ог = а,-,у,, полу- чим d^+dz проверок, позволяющих правильно определить i-й ин- формационный символ кода V, если в слове Ь' произошло не бо- лее /2=[ (<Л + </2—1)/2] ошибок. Алгоритм !!. Предположим, что было передано слово b и принято слово Ь'=Ь + Е, где Е— слово-ошибка веса u»(E)^t Значения информационных сймволов at,..., ak2 находим реше- нием по большинству проверок, имеющих для символа о< вид ai — fij (by,9» / =J..— 1; oj = Of,yt; a<==ihv(by,), v = I...<f2 —1; Ci —oz.y,. Если o»(E) определяем по информационному слову a= = (at,. aKi, 0, ...,0) слово b кода Vt. Декодируя слово b'= =by, —b с помощью алгоритма декодирования кода находим слово Ь^ кода а по нему — информационные символы аЙ2+ь ..., ak, и все информационное слово а= (аъ-..., ahi) ко- да V. Отличие и преимущество алгоритма II по сравнению с алго- ритмом! заключается в непосредственном определении инфор- мационных символов 01,..., ак2 без предварительного декодиро- вания слова кода полностью. Если -код Vt мажоритарно де- кодируем в Lt шагов и Л>1, то следует воспользоваться алго- ритмом Рида, ибо он позволяет определить информационные Символы alt..., ак2, как правило, на первом шаге, в то время как алгоритм Месси определяет их всегда на последнем, Лгм шаге. Пример. Пусть Vi — (31,26)-код с dj=3^ мажоритарно декодируемый с алгоритмом Месси в 4 шага, код V)—(31,21)-код БЧХ с di=5, код Vs— (14,5)-код с d=6, полученный укорочением на один символ кода (15.6). Тогда V—(45,26)-код, d=5,5 информационных символов которого защищены от 4 ошибок. При декодировании кода V можно использовать как алгоритм I, так и алгоритм II. В случае применения второго алгоритма 5 информацион- ных символов со степенью защиты 4 определяются на 4-м шаге в алгоритме Месси й на первом шаге в алгоритме Рида. Пусть V — линейный (пЛ)-код над GF(q) с минимальным расстоянием dv и- порождающей матрицей G„, V—(п„, й/)-под- код кода V с минимальным расстоянием dv' и порождающей матрицей G/. Пусть W—(«и, К)-код над GF(q) и W'—(nw, km) -подкод кода W с минимальными расстояниями dw и dw' и по- рождающими матрицами Gw и Gw' соответственно. Обозначим 152
k"=kv—k„', kw''—kw—kw' и предположим, что k"=kw" dv+dw^.dw'^.dv'. Представим матрицы Gv и Ga в виде и Составим следующую прямоугольную матрицу: (8.2.8) где 0„ и 0w — нулевые прямоугольные матрицы соответствующих размеров. Теорема 8.2.5 Матрица G (8.2.8) порождает линейный (nv+ + nw, kv+kw,')-KOji U над GF(q)„ с минимальным расстоянием d/, kw информационных символов которого имеют степень за- щиты не менее 6Ш'= [(<?»'—1)/2], a kw" из них имеют степень защиты не менее 6м>'/= [(d„+dw—1)/2]. Доказательство теоремы 8.2.5 аналогично доказательству теоремы 8.2.3. Линейный код U над GF(q), удовлетворяющий теореме 8.2.5, эквивалентен линейному систематическому коду U', имею- щему kw информационных символов со степенью защиты 6Ю'. На основе теоремы 8.2.5 может быть построен класс асимп- тотически оптимальных двоичных линейных систематических кодов, k2=kw (k,x3na, а<1) информационных символов кото- рых имеют степень защиты /2=би>/, а остальные информацион- ные символы имеют степень защиты t,. Действительно, выберем в качестве кода V — двоичный (п„, £„)-код БЧХ с минимальным расстоянием dv=2t,—1 и подкода V кода V—(nv, £/)-код БЧХ с d/=2£t+1; выберем в качестве кода W (пю, &ю)-код БЧХ с dw=2(t2—4+1) и подкода W' кода W— (nw, £ю')-код БЧХ с dw/=2t2+2. Тогда линейный двоичный систематический (п„+ +па, £/+&„)-код U' будет иметь минимальное расстояние du'— = 2^+1 и kw информационных символов кода U' будут иметь степень защиты не менее t2. При kw=ctP (с — константа, 0^ =sjl/^) и достаточно большом п число г проверочных символов кода U' лишь на константу отличается от правой части (8.2.2). Кратко опишем алгоритм декодирования кода U, удовлетво- ряющего теореме 8.2.5. Предположим, что заданы алгоритмы декодирования кодов V, V', W и W', реализующие их минималь- ные расстояния. Пусть а = (аг.... аг,..., аь, ako+i,..., а > — информа- ционное слово кода U. Кодовое слово b = aG кода U предста- вим в виде Ь = (Ьи, Ь/), где by— кодовое слово кода К, Ь117—слово кода W. Предположим, что было передано слово b и принято 153
сл.во b' = b-|-E, где E— слово-ошибка веса щ(Е)<^да,. Декоди- рование слова b' осуществляется следующим образом. Слово Ь' = = (bi.....bnv, bn0+u • • •. разобьем на два слова; by = (bi, ..., b„0) и bz = (Ь„и+1, ..., bnv+nw). Декодируем слово b'v с помощью алгоритма декодирования кода V, а слово buz— с по- мощью алгоритма декодирования кода W так, что в результате получаем слова by ~ by и buz находим a - , . fe„+i.v Если a< akv,v) и by кодов V и W соответственно. По словам информационные слова ау = (а^у.......ц - , и a tz = (alt -,..., a « , a* ,vz, ..., ). для всех i — 1, 2, ..., &L то полагаем a * — V» = a , ; i = 1,2, ..., kv. В противном случае определяем веса w (by— by) - t0 и w (by— bz) = ?ir. Полагаем by =by и a,- = =-= @i,V> i == 1, • • • , еСЛИ ty -4— dw tw ИЛИ bjz == Ьд/’ и a . = Ицу, i = 1,2, ..., kw в противном случае. Если при деко- даровании одного из слов by или Ъ / произошел отказ от деко- дирования, то считаем, что в результате декодирования второго слова получается истинное переданное слово. Теперь предположим, что вес слова-ошибки щ(Е)<^С. В этом случае мы можем правильно определить k'w последних информа- ционных' символов. Сначала с помощью описанного алгоритма на- ходим kw информационных символ ~в a > , akv переданного слова Ь. По инфэрмациэн ому сл ову а/ = (о^......а^, 0,...,0) кода W находим кодовое слово b.z кода W. Декодируя слово bjz- = b z — b.z с помощью алгоритма кода W, находим кодовое слово b.iz- кода W, а по нему — k'w информационных символов ak^ ••’ak+k'- K1TK’W Наконец, если вес слова-ошибки w(z) -.^.[(dv-^- 1)/2], то мы можем полностью определить информационное слово кода I/. Вдва описанных выше этапа находятся информационные симв’лл a , .... ak п ak 4-й .... a . Затем по информационному слову V1 ° V kv+kw ai, = (0., ... ., О, a ' , .. -, ofe„) кода V определяем кодовое слово by кода V. 'Декодируя слово b/< = by— by с помощью алгоритма декодирования кода V, находим кодовое слово- by- кода V', а “по нему — информационное слово aV' = ....a ) и тем сам дм все kv информационное слово а = (alt ..., о -) иода U- 154
8.3, Итеративные и каскадные конструкции линейных кодов с неравной защитой. информационных символов , ' Применение итеративных и каскадных конструкций позволя- ет построить широкий спектр линейных НЗ-кодов. . . Лемма 8.3.1. Пусть Vt — линейный (гаь ^)-код, k/ информа- ционных символов которого'имеют степень защиты 6Ь и V2— линейный (га2, &2)-код с минимальным расстоянием d2. Тогда k/k2 информационных символов итеративного (м2, к^г2)-код.а V=V1®V2 имеют степень защиты 6t,2=[{(26i+l)d2—1}/2J. Лемма 8.3.1 доказывается .непосредственным применением леммы 8.1.3 к коду V= К®У2. Теорема 8.3.1. Пусть V, Т, U и W — линейные (га„, М (пт, kT)-, (nu, &„)- и (гаю, Л„)-коды с минимальными расстояниями d„, dT, du и dw соответственно, nv=nu и nT—nw. Предположим, что: 1) сумма V+U — прямая и минимальное расстояние кода V®U равно dvu-, 2) со,- информационных символов кода имеют степень защиты не менее 6Ь /=1, 2,...,/; [.(dtdT—1)/2] =6,^62^ ... . . . 6( ‘, 6(4-1 = d„. Тогда 1) сумма V®T+U®W прямая; 2) (га, &)-код Т= V®T®U®W имеет длину п=п„пт, число информационных символов кода Т равно k=k„kT+kukw и мини- мальное расстояние d=dvdT\ 3) не менее <о3+&и&ю информационных символов кода Т име- ют степень защиты 63- или более, /= 1, 2,..., 1\ 4) не менее kukw информационных символов кода Т имеют степень защиты 6i+i или более. Доказательство. Покажем, что сумма V&T+U&W прямая. Слово х кода V®T и слово у кода U®W представим в виде матриц X и У, строки которых суть слова кодов V и U со- ответственно. Тогда У®ТП U® F=0, ибо в противном случае VT|[7=/=0, а это противоречит- тому, что сумма V+U прямая. Условие У®'ТГ\и&№=0 означает, что сумма V&T+UQW пря- мая. Далее, все слова кода Т, не принадлежащие подходу V&T, имеот веса, не меньшие чем <iOuda>. Действительно, слово z. кода Т, не принадлежащее пэдкоду V & Т, представимо в виде z=x+ + у, где х, возможно, ненулевое слово кода V ® Т и у #=0 — слово кода Ц ® W. Матрица Y имеет по крайней мере .один нену- левой столбец я» являоцийся словом кода W веса w(yi)~^>dw, и, следовательно, c(c>da,) ненулевлх строк g,2, ..., (l<t’i<-.. ... <ic<гаа,). Пусть строки матрица X с номерами суть Ч. • • •. Ч- Тогда СЛ9ВЧ- (Ч + Ч)s v ЭU Для всех s=l,... ..., с. Кроме того, w (£«s + Ч) и te»(z)> dvuc duu^w 155
Таким образом, все слова кода 7 , имеющие вес, не больший 26/, / = 1,2, ..., I, принадлежат подкоду V ® Т и множества Мб. — {z<=T: a) (z) 26/} и М6/ = {xgV® Г: щ(х)<26/} совпа- дают. Кроме того, л7б,+1 = {ге Т: w (z) < dvudw — 1} с V ® Т. Поэтому по лемме 8.1.4 kJzT-\-kukw—d:mMi+1'^kukw информа- ционных символов кода Т имеют степень защиты не менее 6/+1. Что касается минимального расстояния d кода Т, то заме- тим, что УфТсгТ и d(V®T)=d„dT. С другой стороны, все слова кода Т, не принадлежащие подкоду V®T, имеют вес больший или равный dvudm^dvdT. Следовательно, d=dvdT. Если коды V, Т, U и W — циклические и (га„, пг) = 1, то код Т также будет циклическим кодом (при циклическом упорядо- чении символов). Действительно, прямая сумма циклических кодов есть циклический код, а для цикличности тензорного про- изведения (итерации) циклических кодов достаточно взаимной простоты их длин и циклического упорядочения символов. Пример. Пусть V— (3.2)-код с d„=2, Т—(21,20)-код с dr=2, U — (3.1)-код такой, что сумма V+U прямая, W— (21,3)-код с dw —12 (все коды двоичные). Тогда T=V®T®U®W есть двоичный (63,43)-код с минимальным расстоянием d=<7„dT=4 и 3 информационных символа -кода Т имеют сте- пень защиты 5. Конструкцию, использованную в теореме 8.3.1, можно при- менить не только_к.итеративным, но и к каскадным кодам. .Обо- значим через линейный каскадный (n, k) -код над GF(q)t образованный внутренним (п„, kv) -кодом V над GF(q) и внеш- ним (NT, Кг)-кодом Т над GF(qk°'). Теорема 8.3.2. Пусть К, и V2— линейные (nt, kt)- и (n2, k2)- коды над GF(q) с минимальными расстояниями dt и d2 соот- ветственно; Ti и Т2 — линейные (К,, КД- и (N2, К2)-коды над GF(qK') и GF(q^) соответственно и минимальными расстояния- ми Di и D2. Предположим, что nt = n2, N2=N2, сумма Vt + V2 прямая и минимальное расстояние кода КФИ2 равной, 2 и diDi ^dt, 2D2. Тогда 1) сумма |~[ Т\ 4- V21'x’l T2 прямая; 2) (п,Л)-код Т = К1|ЗТ1фУ20Т2 над GF (q) имеет длину n=nlNl, k=kiKt+k2K2 информационных символов и минималь- ное расстояние d^dtjD,; 3) А2К2 информационных символов кода Т имеют степень защиты не менее 6 = [ (dt.2£)2—1)/2]. Доказательство теоремы 8.3.2 состоит по существу в дослов- ном (с учетом, естественно, замены ® на[х|) повторении дока- зательства теоремьГ 8.3.1. 156
Пример. Пусть —двоичный (7,3)-код с di=4; Г) —(9,8)-код над GF(23) cdi=2; V2— двоичный (7,3)-кодcd2=4 такой, что сумма Vi-f-Vj пря- мая и di,2=2; Га — (9,4)-код над GF(23) с £>2=6. Тогда f=Vi |_Х_| Ti®V2 | х| |xj Т2 есть двоичный (63,36)-код с минимальным расстоянием <7=8 и 12 ин- формационных символов кода Т имеют степень защиты 5. Конструкции теорем 8.3.1 и 8.3.2 могут быть распространены на случай прямой суммы произвольного (но конечного) числа слагаемых (каждое слагаемое — итеративное или каскадйое произведение двух кодов). Пусть заданы две последовательности линейных кодов. Пос- ледовательность Vt, V2,, Vm кодов над GF(q) такова, что длины всех кодов одинаковы и равны п„, число информацион- ных символов кода К (i=l, 2,...'tn) равно kit для каждого i сумма Vt+V2+...+Vi является прямой и минимальное рас- стояние кода V(= Vi© V2® . • • ® Vt равно dt. Последовательность Zt, Z2...Zm кодов такова, что все коды имеют одинаковую длину nz; Zt (i=l, 2,..., m) есть либо код с символами из GF(q), либо код. с символами из GF(q’)-, в обоих случаях чис- ло информационных символов кода Zt равно Kt, а минимальное расстояние равно Df. Предположим, что dtDt^.d2D2^Z ... ^dmDm. Определим yt*Zi как произведение кодов Vt и Zf, понимая под этим тензорное произведение Vt®Zt, если Zf — код над GF(q), и каскадное произведение У<1 х \Zit если Zs — код над GF(qkt). Теорема 8.3.3. Сумма Vt*Zt + V2*Z2+ ... + Vm*Zm прямая; 17= Vt*Zt®V2*Z2f& ... (&Vm*Zm — линейный (n, Л)-код над GF(q) длины n=nvn2 с числом информационных символов k = .tn m = 2 WG и минимальным расстоянием du^dtDt‘, а}= ktK{ информационных символов кода. U имеют степень защиты не менее 6j= [ (2?,Д—1) /2]. Доказательство. Утверждение: сумма Vt*Z,+ V2*Z2+ + ... + Vm*Zm— прямая, следует из того, что сумма 1Л + У2+ + ...+V'm — прямая. Линейность кода U очевидна, длина и число информационных символов —Определяются простым под- счетом. Обозначим Uf=Vi*Zi, U(=Vt*Zt® ... ®Vf~t*Z{_t, i= = 1,..., m. Тогда U=Um®Um. _ Все ненулевые слова ue(7, не принадлежащие Um, имеют вес w(u)^sdmDm. Действительно, кодовое слово и кода U, не принадлежащее подкоду Um, представимо в виде u=um+um, где um — слово кода Um, ura — ненулевое слово кода Um=Vm*Zm. В матрице соответствующей слову um (см. 6.2), существует не менее Dm ненулевых столбцов. По крайней мере таким же будет число ненулевых столбцов в матрице Аи, соответ- ствующей слову и. Так как вес каждого ненулевого столбца 157
матрицы Аи не меньше dm, то вес слова и будет не меньше, чем dmDm. Таким образом, все ненулевые слова кода U, имеющие вес, меньший, чем dmDm, принадлежат_Ё7т. Применяя лемму 8.1.3 к коду U=Um®Vm*Zm, получаем, что kmKm информационных символов кода U имеют степень защиты не менее 8m=[(dmDm—1)/2]. Для любого / (/=1, 2,..., т) по индукции показываем, что ненулевые слова и кода U, не принадлежащие коду Uh имеют вес, не меньший dfij. т Применяя лемму 8.1.3, получили, что а,-=2 информа- • t=i ционных символов кода U. имеют степень защиты не менее 6,. Переходя к оценке минимального расстояния du кода, U, за- метим, что Ui = Vli»Zlc.U и минимальное расстояние кода равно или больше dj^. С другой стороны, все слова кода U, не принадлежащие подкоду t/1( имеют вес, больший или равный й2£)2 (diDi^diD,). Следовательно, du'^dlDl. Рекурсия конструкции теоремы 8.3.3 позволяет получить ши- рокий спектр линейных кодов с неравной защитой информаци- онных символов. В качестве примера применения рекурсии построим следую- щий класс линейных НЗ-кодов над GF(q). Теорема 8.3.4. Пусть для каждого i(i = 1, ..., tn) Vt — линей- ный (п0., kv^-Kод с минимальным расстоянием dO{; Wt— линейный (Па,г, ^ш^-КОД С минимальным расстоянием dw‘, Ui — линейный (п0£, &В£)-код такой, что сумма Vi+Ui прямая и V( © Ui = Q_t,Qi— линейное иО£-мерное npocTpai ство. Пусть 7\ — линейный (nTa,kT1)= код с минимальным расстоянием dr,. Предположим, что ... dVldr, ^dVlndOm_v ... dv,du;,^dOmdOm_1.. .dV3dWa^.... C dWm и обозначим 6/ = [(dVm ... dDj+1dw.— 1 )/2], / = 1, ..., m. Тогда линейн яй (и, £)-код Tm+i—Vm ® Vm~l '<$ • • • ® Vi ® 7*1 © Vm ® Vm~l ® . V2 ® U . ... имеет длину n = nVmnVm^ ... jiVlnTl, k=k„m ... kV1kTl -f- k„m ... ... kv,kU1kWl+ ... +^umkw^ информационных символов и мини- мальное расстояние d=dVmdOm~1 ... lio.drj Для каждого /(/= 1,... * т ..., т) <д! = ^,кОт... kto kUikw. информационных символов кода Тт+1 имеют степень защиты не менее чем б7«. Доказательство. В условиях теоремы 8.3.4 линейный код Tz+1 = Vj^Tj^Ui^tW] 158
удовлетворяет условиям теоремы 8.3.1- для - всех / =1,..., т. Индукцией по / с использованием леммы 8.3.1 получаем утверж- дение теоремы 8.3.4. . -........... . Ниже ,мы-рассмотрим алгоритм мажоритарного декодирова- ния кода Тт+1, удовлетворяющего теореме 8.3.4.- Предположим, что все коды Уь ..., Vm, Tlt 1У„..., Wm — циклические и их длины попарно просты.- Тогда код Тт+1 будет циклическим при циклическом упорядочении'его символов, если могут быть выбраны циклическими коды Um. Для это- го, как видно из леммы 8.3.2, достаточно выполнения условия (прр q) =1, i=l, 2,..., tn. Лемма 8.3.2. Пусть V — циклический (п, &в)-код над GF(q)r порожденный многочленом g (х), (и, q) = 1; U — циклический (п, Аи)-код над GF(q), порожденный многочленом у(х)Л(х), где h (х) = (xn— 1) /g (х) и 7 (х) — делитель g (х). Тогда сумма V+U прямая и УФ U — циклический (n, ku+ +&в)-код над GF(q) с порождающим многочленом у(х). Доказательство. Предположим, что найдется много- член Л(х), принадлежащий одновременно кодам V и U. Тогда Х(х)—v(x)g(x') и Л(х) =ы(х)у(х)й(х). Отсюда v(x)g(x) = = «(х)т.(х)й(х). В виду условия (n, q) — \ многочлен хп—1 не имеет кратных корней и (й(х), g(x)) = l. Поэтому многочлен и(х) делится на й(х), и в алгебре многочленов по модулю хп—1 многочлен Х(х) — v(x)g(x) =0. Таким образом, У(~|С/=О и сум- ма V+U прямая. Код УФ U — циклический с порождающим многочленом т(х) = (g(x), 7(x)h(x)) =у(х) (g(x), й(х))=7(х). =?(*)• Пример. Пусть Vlt V2, Ti —двоичные циклические коды с проверкой на< четность, длины кодов равны соответственно = 5, = 7, пГ1 = 3, а мини- мальные расстояния dVi — dv* = dT^ — 2. Пусть U2 и — двоичные циклические (3.1) и (5.1)-коды такие, что У2 $ U2 — Q2 и Ух ф = Qx, Q2 и Qi — линейные трех- и пятимерные Пространства соответственно; W2 и — двоичные цикличе- ские коды с повторением длины nw* = 35 и nWi — 7, dw* = 35 и dw^ = 7. Сог- ласно теореме 8.3.4 линейный код Т3— V20У10ЛФV20t/i0Wi<&U2®W2 при. циклическом упорядочении символов есть двоичный циклический (105,51)-код с минимальным расстоянием J=8, причем один информационный символ кода Т3 имеет степень защиты 17, а два других информационных символа имеют степень защиты 6. Во' всех рассмотренных конструкциях прямых сумм итера- тивных и каскадных кодов требовалось, чтобы первые сомно- жители все» произведений образовывали прямую сумму. Для итеративных кодов это требование может быть ослаблено. Теорема 8.3.5. Пусть Vit V2, V3 —линейные (n, &4)-, (n, k2)- и (n, k3) -коды над GF(q) соответственно, удовлетворяющие ус- ловиям: 1) минимальное расстояние кода равно d4; 159'
2) сумма Vt+V2 прямая и минимальное расстояние кода 1Л® ФУ2 равно d2; 3) минимальное расстояние кода V3 равно <4. . Пусть также I/t, U2, U3 — линейные (N, (N, K2)-, (N, Лз)-коды над GF(q) соответственно, удовлетворяющие усло- виям: 1) минимальное расстояние кода Ut равно £>3; 2) минимальное расстояние кода U2 равно D2; 3) сумма Ui+U2 может не быть прямой, но коды C7t + U2 и Ua имеют только одно и притом нулевое общее слово; 4) минимальное расстояние кода (Й1 + 1/2)ФЙ3 равно Da. Предположим, что d1£>t^d2D2^d3Ds. Тогда 1) сумма V2®U2+ Va®Ua прямая; 2) минимальное' расстояние кода V=Vl®Ui®V2®U2®Va® <®Ua равно djD,; ’ 3) k2K2 + k3Ka информационных символов кода V имеют сте- пень защиты не менее чем [(d2D2—1)/2] и k2K3 из них имеют степень защиты не менее [(daD3—1)/2]. Доказательство. Покажем, что сумма Va®Ua+ V2®U2 прямая. Представим слово х кода Vt®f/t и .слово у кода У2® ®С/2 в виде матриц X и У, строки которых есть слова кодов 1Л и V2 соответственно. Тогда 1/1®П,Г1У2®С72=0, ибо в противном случае 71П7г=#О, а это противоречит условию, что сумма 1Л + + V2 прямая. Точно так же показывается, что сумма (У\®1ЛФ ®V2®t/2) 4- 73®t/3 прямая. Минимальный вес ненулевых слов кода 7=1Л®£ЛФ72®(/2Ф Ф73®{73 равен Ненулевое слово xel^®^ имеет вес ^(xJ^djDp Далее, слово z=x+y кода Vt®C/t©V2®U2 (ye <=У2®(/2, y=#0) имеет вес o>’(z)^d8D2^diZ)l, так как матрица Az, соответствующая слову z, имеет не менее чем D2 ненулевых строк, являющихся словами кода 7|Ф72 с минимальным рас- стоянием d2. Аналогичным образом доказывается, что слово v= =z+u кода V (и =5^0, ueV,®[/3) имеет вес w(y)^d3D3. Из леммы 8.1.4 следует, что k2K2+k3K3 информационных символов кода V-имеют степень защиты [(d2D2—1)/2) и k3K3 из них имеют степень защиты [(d3D3—1)/2]. Общий метод декодирования линейных НЗ-кодов, являю- ' щихся прямыми суммами произведений кодов. Алгоритм I. Рассмотрим алгоритм декодирования кода U, удовлетворяющего теореме 8.3.3, позволяющий реализовать оценку минимального расстояния кода, и, если в -принятом сло- ве произошло f ошибок, реализовать для <а} информа- ционных символов степень защиты б,. Будем предполагать, что для каждого кода V{ (i= 1,..;, /п) имеется алгоритм декодирова- ния, позволяющий исправлять /<(2f<+1^31) или меньше оши- бок. Для кодов Zt(i= 1,..., m) потребуем наличия алгоритмов исправления независимых ошибок и стираний, реализующих ми- нимальные расстояния. 160
Алгоритм декодирования кода U существенно зависит от способа кодирования, который состоит в следующем. Образуем из символов информационного слова а кода Um прямоугольных матриц таких, что число строк i-й матрицы равно числу инфор- мационных символов кода V,-, а число столбцов — числу инфор- мационных символов кода Zt. Расположим эти матрицы одна под другой так, чтобы за /-м столбцом i-й матрицы следовал j-й столбец (id-1)-й матрицы. Далее, для каждого i(i=l,..., т) закодируем строки i-й матрицы кодом Zit а затем столбцы п'олу- ченной матрицы (составленной из т матриц) закодируем кодом Vm так, чтобы каждый столбец i-й матрицы оказался бы закоди- рованным кодом Vt. В результате кодирования получим прямо- угольную матрицу Аа размерности п„Хпг, символы которой об- разуют кодовое слово и кода U (как правило, считыванием по столбцам). Пусть и' — принятое слово, u'=u-|-E и ue U, Е — слово-ошиб- ка. Учитывая, что слово и единственным образом представимо в виде u=ut+u2+ ... um, где и(е!Л= Vi*Zlt декодирование слова иг будем осуществлять в т шагов. На первом шаге по слову и' оп- ределим кодовое um и информационное ато слова кода Um. На вто- ром шаге по слову u'm-i=u'—um определим кодовое um-i и ин- формационное ат-4 слова кода Um-t. На i-м шаге по слову Um—(i-l) = U' • Um-(i-2) ’ Um-(i-g) • • • ’ Um (8.3.1) определим кодовое Um-ji-D и информационное am—(i-t) слова кода Uv-(i-t}. Наконец, на т-м шаге по слову u'=u'—u2—u3— ... ...—uOT определим кодовое и, и информационное а, слова кода Ui и тем самым кодовое u=u1+u2+ ... +um и информационное а=а14-а2+ ... +ат слова кода U. Опишем подробно i-й (i = 1,2, ..., т) шаг алгоритма. На этом шаге по слову Um-a-i) находим слово Zm-(i-i). Это слово декоди- руем кодом Zm-(i-i). Результатом декодирования являются кодо- вое Zm_(1-t) и информационное am-^-t) слова кода Zm-{i-l}. Слово am-(i-i) является одновременно и информационным словом кода С7т_0_п = Vm-ti-o’t'Zm-o-i). По слову am-(i-t) (практически по сло- ву zm_(i_t|) находим слово um-(1-i), а по последнему в соответствии с (8.3.1) определяем um-i =ии-(.-1)—Нт-ц-л и переходим к (i+ 1)-му шагу декодирования. Заметим, что решение о правильности декодирования на i-м шаге, т. е. об истинности am_(i_1) и um-(«-i), будем принимать на основании исследования слов z,m_(<_1) и Покажем, что если в принятом слове и' произошло не более 6m-(i-l} ошибок (вес да(Е)^6т-(.-1)), то кодирование на i-м шаге будет правильным. Предположим, что мы уже нашли (разумеется, правильно) слова um, am, um-i, am-t,.... um-(i-2), am-(<-2). Будем декодировать столбцы матрицы А-- .соответствующей слову и/т-(.-1)=и'— 1) 161
—um_(i_2)— ... —um, с помощью алгоритма декодирования кода Vm-o-q. В результате декодирования столбцов получим т—i+1 слов z/, z'2....Нас будет интересовать только слово Z т-(<-!)• Для этого слова построим вектор недостоверности ₽' = (₽i, : • •, Р/, •. •, ₽«,)> ₽/ = ei < dm~a-D/2, (1/2 в противном случае. По слову z'm_(<_t) и его вектору недостоверности ₽' с помощью метода декодирования по критерию минимума обобщенного рас- стояния находим слово кода такое, что Л ("Z т— (i— 1), (г—1)7 (i-1)/2. Такое слово единственно, и оно вместе с соответствующим ему информационным словом ат-,,-,, будут истинными передан- ными словами. Действительно, по предположений в принятом слове и' произэ- шло не более ошибок и &> (Е) < < dm_(,-_1)Dm_(i.i)/2. Столько же или меньше Ошибок будет содержаться в слове Um-(i-i). Если z’n_(j_i) — истинное переданное слово кода Zm-(i.1)t то, учитывая правило формирования коэффициентов недостовер- ности слова Zm-(i-i), имеем d0(Zm-n-u, zX-a-n) < w (E)/dm-(f-D и, сле- довательно, z^,.(»•_!)) <Pm_(t.1)/2. Декодер, исправляющий ошибки по критерию минимума обобщенного расстояния, оперирует со словами и их векторами недостоверности, и на него никоим образом не влияет процедура определения вектора недостоверности. Так, в 6.2 вектор недосто- верности Р' слова z' внешнего кода Z каскадного кода t/=Vj><|Z определялся исходя из декодирования слов-столбцов внутренним кодом V. Здесь же вектор недостоверности 0х слова кода не может-быть определен с помощью кода (коды Vm—(i—1) И Zm—({—fy СВЯЗаНЫ В (i—1) = 1) (<—1)) , Ибо МЫ НС знаем слов-столбцов этого кода и вынуждены Использовать для определения 0' слова-столбцы кода Ут-о-п, содержащего код в качестве подкода.. Наконец, если в слове и' произошло не более 6, ошибок, на последнем m-м шаге алгоритм декодирования правильно опреде- лит кодовое и, и информационное а! слова кода Ut и тем самым слова 11=11,-1- ... +um и а=а,+ ... +ат кода U. Одновременно с описанием алгоритма мы доказали следую- щую теорему. Теорема 8.3.6. Пусть код U удовлетворяет условиям теоремы 8.3.3 и u'=u + E, uet/, Е — слово-ошибка. Если вес &у(Е)^6;, то описанный m-шаговый алгоритм I декодирования кода U восста- навливает истинные значения информационных символов подко- да Vt*Zt® ... ®Vm*Zm кода U. .При ai(E) алгоритм I по 'и' находит истинное кодовое слово и. 162
Вообще говоря, мы можем вместо /«-шагового алгоритма де- кодирования использовать более простой, одношаговый алго- ритм. На первом шаге m-шагового алгоритма I, декодируя столб- цы матрицы Аи-, соответствующей принятому слову и', кодом Vm=V1®... ®Vm, мы наряду с гт' получаем слова z'm_t, z'm-2,..., z/. Мы можем продекодировать не только слово zm', как это делается в m-шаговом алгоритме I; но и все слова г'т_и z'm_2,..., z/ и получить в результате слова ат, ат_,,..., at и тем самым информационное слово а=а, + а2+ ... -кат кода U. Однако при таком одношаговом алгоритме мы, как правило, не сможем полностью реализовать оценку минимального расстоя- ния кода U, даваемую теоремой 8.3.3. Действительно, результат декодирования при одношаговом алгоритме будет правильным, если число ошибок в слове и' не превосходит 6'=min{(dmD,—1)/2). Учитывая условие dj)^ ^d2D2^ ... ^3mDm и то, что, обычно dt>d2> ... >dm, имеем £>,<£>,< ... <Dm и б'= (dmDt—l)/2<[(d^Z)i—1)/2]=61. Прямые суммы произведений кодов могут быть использованы для исправления ошибок в составных и сложных каналах. При- ведем без доказательств (они являются модификациями доказа- тельств теорем 8.3.3 и 8.3.6) оценки корректирующих способно- стей предложенного алгоритма декодирования прямых сумм про- изведений кодов в составных и сложных каналах. Теорема 8.3.7. Пусть линейный код U удовлетворяет условиям теоремы 8.3.3. и u,=u+E, uetZ, Е — слово-ошибка. Тогда алго- ритм I декодирования кода U восстанавливает истинные значе- ния информационных символов подкода Vt*Zt® ... G)Vm*Zm {1= = 1, 2,..., т) кода U, если слово-ошибка Е принадлежит одному из классов ошибок: а) комбинация не более 6( независимых ошибок; б) комбинация Di—1 модулей ошибок длины nv и плотности l)«v; в) комбинация (Di—1)/2 модулей ошибок длины «о и произ- вольной плотности р; • г) комбинация из v .пакетов ошибок длины b‘<Z, = (|4Z>-l)«o+dm, / = V и t независимых ошибок, где 5! рУ* = и < Dj/2 и t < min (Dj — ?K)dj/2. ............................m Пусть для последовательности кодов V1; V2,..., Vm и Zh Z2,... ,Zm выполнены условия теоремы 8.3.3 й, кроме того, для любого i (i= 1, 2,..., т) код Vt— К® ... ©К исправляет одно- временно с tt—[(dt—1)/2] независимыми ошибками пакеты оши- бок длины Ь. К коду U=Vi*Zi® ... (&Vm*Zm применим модифи- ииоованный алгоритм декодирования, отличающийся от основно- 163
го алгоритма I правилом определения коэффициентов недосто- верности, Теорема 8.3.8. Пусть код U удовлетворяет условиям теоремы 8.3.3 и указанным выше условиям. Пусть u'=u+E, uetL Е — слово-ошибка. Тогда модифицированный алгоритм декодирова- ния кода U восстанавливает истинные значения информационных символов подкода Vi*Zt® ... ®Vm*Zm(l=l, 2, ..., т) когда U, если слово-ошибка Е принадлежит одному из классов-ошибок: а) комбинация'не более 6i независимых ошибок; б) пакет ошибок длины buw=nv(Dt—Х)/2+%&, где %=3, если Dt—нечетное, Л=4 в противном случае. Мажоритарное декодирование прямых сумм произведений линейных кодов с неравной защитой информационных символов. Теорема 8.3.9. Пусть коды V, Т, U и W удовлетворяют услови- ям теоремы 8.3.1 и код V®U мажоритарно декодируем в Lv+Lu шагов с реализуемым расстоянием dvu таким образом, что на пер- вых Lu шагах определяются информационные символы, соответ- ствующие базисным векторам кода U и на следующих Lv шагах определяются информационные символы, соответствующие ба- зисным векторам кода V. Пусть коды V, Т и W мажоритарно де- кодируемы в L„, LT и Lw шагов с реализуемыми расстояниями d„, dT и dw соответственно. Тогда код Т— V®T®U®W мажоритарно декодируем в (LB+ ,+ Lr+Lu+Lu,—2) шагов с реализуемым расстоянием d^dT. Кро- ме того, kukw информационных символов кода Т могут быть деко- дированы правильно, даже если произошло [(doudw—1)/2] или менее ошибок. На первых Lu+L™^- 1 шагах определяются ин- формационных символов, соответствующих базисным векторам кода U®W, в то время как k„kT информационных символов, соот- ветствующих базисным векторам кода У®Т, определяются на следующих L„+LT—1 шагах. Доказательство. Из условия теоремы 8.3.9 следует, что код О мажоритарно декодируем в Lu шагов с реализуемым рас- стоянием 4иг. Пусть {gi1’, ..., g^},.{gl2), ., gl2/}, {gl3), ..., gl’u} и {g*4), ..., — базисы кодов V, T, U и W соответственно, в кото- рых эти" кода мажоритарно декодируются. Тогда множество век- торов {g?’ ® gl2), ..., ® &т> gl3> ® .$1 ® образует базис кода Т. Покажем, что в этом базисе код Т мажоритарно декодируем в (L„+LT+LU+L„—2) шагов. Информационные символы кода Т, соответствующие базис- ным векторам ig1(”®g1'4),... будем находить следую- щим образом. Для каждого вектора, g^^g/4’ мы определим dvudw линей- ных форм: : 164
Ф^-фК’^хЛ Р=1,2, .... s=l,2, ..., dw, (8.3.2) где ф/р> и х/*’ — линейные формы для базисных векторов gt(3) и g/4), используемые при мажоритарном декодировании кодов U и W соответственна. Носители линейных форм ,<p^s) и Ф(4р'> не пересекаются при р¥=р' или s=^=s'. Из 8.3.2 следует, что = 1 для р= 1, 2...dvu и 5=1, 2....dw. Разделим множество векторов Еию= {gt(3)®gi(4),..., g*„ ® g!^} в Lu + Lw—1 подмножеств. Вектор g*<S)<S>gj(4) принадлежит /-му (/=1, 2 Lu+La—1) подмножеству, если и только если 1= =4(3) + //4)—1, где //3) и //4)— числа шагов, за которые опреде- ляются информационные символы, соответствующие базисным векторам gtw и g/4> при декодировании кодов U и W соответст- венно. Если Lu^//3)^/i(3) и ц#=/, тогда ф/’’ (£ц<3))=0, так .как код U мажоритарно декодируем в Lu шагов. Аналогично, если Lw^ ^lvw^lsw и v=/=/, тогда x/s) (gv(4))==0. Таким образом, при ц,¥=/ или v¥=j соотношение <ptj(ps) (g^)®gv(4)) =^0 имеет место только, если /'</, где /,=4(3)4-/»(4>—1. По условию теоремы 8.3.9 код УФ U мажоритарно декодирует- ся так, что на первых Lu шагах определяются информационные символы кода U. Поэтому для любого слова veV линейная фор- ма ф/р)(у) =0 при любых /= 1,2,..., ku и р= 1,2,..., dm. Таким образом, дЛя любого вектора g<(3)®g/4) (/= 1,..., ku и j= 1,... ..., kw) из /-го (/=1,2,..., Ln+La— 1) подмножества множества F„„ dmidw линейных форм (8.3.2) имеют следующие свойства. Носители линейных форм, для этого вектора не пересекаются и Ф</8) (g/3)® g/4)^ — 1 • Кроме того, значение ф//*3) (gr’ ® g,^) может быть ненулевым, только если g'/P ® g<.4,’ принадлежит к /-му под- множеству, I' <1. Значения всех линейных форм фч(р,) (/=1, 2......ku", /=1, 2,..., kw; р= 1,2,..., dm‘, s=l,2,..., d„) для векторов, принад- лежащих подпространству У®Т равны нулю. Следовательно, ин- формационные символы кода Т, соответствующие базисным век- торам gi’(3>®gi(4).gl3)® могут быть определены за Lu+ + Lm—1 шагов мажоритарного декодирования. Эти символы бу- дут определены правильно, если произошло [(d««d«,—1)/2] или менее ошибок Аналогично за LT+L„—1 шагов мажоритарного декодирова- ния могут быть определены/;^,, информационных символов кода Т, соответствующие базисным векторам gi(l)®gi(2),..., gVJ ® g!$- Эти информационные символы будут определены правильно, ес- ли в слове кода Т произошло [(dvdT—1)/2] или менее ошибок. 6 И. М. Бояринов 165
Пример. Пусть V — двоичный (8.4)-код Рида-Маллера с dv=4* Т— двоичный (3.3)-код с б/т = 1; U-*-двоичный (8.3)-код такой, чтЬ код VQU есть (8.7)-код с проверкой на четность и. dvu=2; W — двоичный (3.1)-код с dw — 3; jL®==2, Lt — 1, Lu === 1 и 1. По теореме 8.3.3 T=V®T®U®W есть двоичный (24,15)-код с d=4, три? информационных символа которого имеют степень защиты 2. По теореме 8.3.Ф этот код мажоритарно декодируем в три шага. Верхние четыре строки матрицы Gvu образуют порождающую матрицу* Gv кода V, а нижние три строки — порождающую матрицу Gu кода £7. Про- верочные формы для базисных векторов gi<3), g2(3) и g3(3) кода U имеют сле- дующий вид. Проверочные, . формы для вектора — это ф1(,)(х) = =,(10101010)х и ф1<2)(х) = (01010101)х, для вектора g2(3)—ф2(О(х) =- = (11001100)х и ф2(2)(х)= (001110011)х, а для вектора g3(3)—Фз(1)(х) = = (11110000)х и ф3(2)(х) = (00001111)х. Порождающая матрица кода W Gw— = ^^4)= (Ш). Проверочные формы для вектора gi<4> суть Xi(1)(x) = (100)хг Xi<2> (х) = (010) х и Xi(3)(x) = (00})х. На первом шаге декодирования определяются информационные символы,, соответствующие базисным векторам gi(3)®gi<4), g2(3)®gi(4) и g3(3)®gi(4), кото- рым соответствуют проверочные формы ф1<<>(х)0%1^)(х), ф2(<)(х)®Х1^>(х)г ф3(;)(х)®х1<^(х), где 7=1, 2; /=1, 2, 3. Остальные информационные символы» определяются за два шага мажоритарного декодирования кода VQT. Л Используя теорему 8.3.9, можно доказать, что более широкий класс кодов Tm+l9 удовлетворяющий условиям теоремы 8.3.3, до.- пускает мажоритарное декодирование. ~ Теорема 8.3.10. Пусть линейный код ^тп+1 = Vm ® Vm-i ® ® ® ^*1 ® Vm ® Vm*-1 ® ® V2 — ®Um® удовлетворяет всем условиям теоремы 8.3.4 и, кроме того, для всех /=], 2,..., m коды Vi9 7\ и Wi мажоритарно декодируемы в Lv.9LTih LwjnaroB с реализуемыми расстояниями dVi> d^VL dWico- ответственно; коды Ui таковы, что для всех i=l, 2,..., ш кодьй Vi®Ui удовлетворяют'условиям теоремы 8.3.9 и Vi®Ut= QnV{. 166
Тогда код Tm+i-мажоритарно декодируем'в т т-1 т - L =S 4+ s S +1 i=l i=l ' 1=1 2 шагов. . \ , ... ' /Доказательство. В условиях теоремы 8;3.10 линей- ный код. . . Тм=у}®т}®и}®^} - удовлетворяет условиям тёоремы 8.3.9 для всех /=1, 2, ...,т. Индукцией по / получаем утверждения теоремы 8.3.10. Пример. Рассмотрим алгоритм кодирования и мажоритарного декоди- рования двоичного циклического (105,51)-кода Т3= У2® Уг® ^1® ^2. Минимальное расстояние кода Т3 равно d=8, причем один ^информационный символ кода Т3 имеет степень защиты 17, а два других ин- формационных символа имеют степень защиты 6.- Порождающий многочлен кода Т3 g(x) = (x105—1)/Л(х), где Л(х)== , , „ z х , / \ (Л-1О«— 1) (л-7— 1) (х5_1)<Л-з_ !) =fti(x)ft2(x)/i3(x);fti(x) =—--угу------тут;--—--------— —проверочный (х36— 1) (ДГ21 — 1)(?в- 1 )(х— 1) многочлен кода V2®Vi®Ti; /i2W = (^3—1)/(х—1)—проверочный многочлен жода Нз(х)=х— 1—проверочный многочлен кода U2®W2. Пусть a=(ai, a2t ...; asi) информационная последовательность кода Т3. При кодировании поставим в соответствие информационному слову а кодо- вое слово Ь== (&ь Ь2, &105) по следующему, правилу b=aG: тде G— порождающая матрица кода Т3, G3, G2t Gi — порождающие матрицы "кодов и U2®W2 соответственно, {gb g2, ...» gsi}—ба- зис кода Т3. При этом G1 = II “1 ® w2 И, Ux ® WS = gi, Ux = (111), Uj e Ui, w2= (11 ...1), w2e1F2; ' - p,0«. ®».| Is, .Vi_(110)eVi. || v2 ® u2 ® ws II II gs 'v2 = (101),v2eVi; u2 = (lllll),u2eiz2; w3 =( 1111111), w,ev8. 61 Пусть при передаче кодового слова b= 2 произошли ошибки й ic=l •было принято слово b'=b+e. На первом шаге мажоритарного декодирования определим значение ин- формационного символа Ль Проверочную форму фг(1)(у), /’=1, ...» 35' для ба- зисного вектора gt можно представить в видефг(1)= (hi®cr)у, (111) еУу1-, 6* 167
cr— вектор длины 35, r-я координата каждого равна 1, а остальные 0. Для любого ЬеТз i|>r(1)(b)=ai. Так как b'=b+e, то фг(1)(Ь') =фг(1>(Ь) + +фг(1)(е) =а1+,фг(1)(е)-Положим а[ = maj {ф^ (Ь')}. Если произошло Г=1, ... , 35 не более 17 ошибок, то ct\=a\*. Перейдем ко второму шагу декодирования. Положим bi'=b'—а\%\. Про- верочную форму (у) для базисного вектора g2eV3 можно представить в виде (y) = (gi®h2®cj)y, Z=l, 2; /=1, ..., 7, где gi=(010), |2=(101);. h2= (11111); с, — вектор длины 7, /-я координата которого равна 1, а осталь- ные 0. Для любого ЬеТз 'Фп (bi) =02, bj = b—aigi. Положим 02 = maJ ' fc=l,2;/=l,... , 7 Если произошло не бо’лее 6 ошибок, то а2*=а2. Аналогично оп- ределяется значение информационного символа а3. 6,1 На третьем шаге декодирования положим Ь2'=Ь|'—a2g2—а2&з= 2 a<g<4- 4-е, b2eV2®Vi®Ti. Код V2®Vi®Ti—трехмерный итеративный код с про- верками на четность мажоритарно декодируется в один шаг. Наконец, скажем несколько слов о мажоритарном декодиро- вании кода U = ®Z1 ф V2® 2,ф ... ф ® Zm, удовлетворяющего условиям теоремы 8.3.3. Выше мы описали m-шаговый алгоритм I декодирования кода U в предположении, что код Vt (/=!,... ,т) имеет произволь- ный алгебраический алгоритм декодирования, исправляющий tt или меньше ошибок, а код Z, (i=l,...,m) имеет произвольный алгоритм исправления независимых ошибок и сти- раний, реализующий минимальное расстояние Dt. На каж- дом из шагов алгоритма I требовалось производить вплоть до min {[ (di+1)/2], [ (Di+1)/2]} попыток декодирования. Если код Zj допускает мажоритарное декодирование, то на (т—/4-1)- шаге достаточно одной попытки декодирования. Если все коды V, и Z( мажоритарно декодируются в L„. и L4 шагов соответ- ственно, то, как легко видеть, код U мажоритарно декодируется т т и L — LV{ -f- Ь2/— т шагов. t^l i=l ЗАМЕЧАНИЯ Линейные коды с неравной защитой информационных символов были вве- дены Масником и Вулфом [143], которые описали свойства, нашли границы и дали примеры систематических НЗ-кодов. Методы построения и алгоритмы декодирования НЗ-кодов рассматривались в работах [10], Гора и Килгуса [124, 137], Мандельбаума [141], В. Н. Дынькина и В. А. Тогонидзе [47]» Р. П. Мегрелйшвили и Т. Г. Николайшвили [70], В. А. Зиновьева и В. В. Зяб- лова [51], а также в работах [16, 18, 19, 25, 27, 98]. 168
В 8.1 и 8.3 использованы результаты работ [18, 25, 98]. 8.2 основан на работах [17, 19, 27, 98]. Достаточность условия леммы 8.1,5 была доказана в {143]. Граница (8.2.1) есть прямое следствие теоремы 2 [143]. Общий метод декодирования линейных НЗ-кодов, являющихся прямыми суммами произвел дений кодов (см. разд. 8.3), применим к декодированию обобщенных каскад-, яых кодов [8] для каналов с пакетами и независимыми ошибками. Сходный алгоритм декодирования обобщенных каскадных кодов предложен в [50]. Глава 9 ПРИМЕНЕНИЕ ЧИСЛОВЫХ КОДОВ ДЛЯ ОБНАРУЖЕНИЯ И ИСПРАВЛЕНИЯ ’ ОШИБОК ОПЕРАТОРА 9.1. Характер и виды ошибок оператора Повышение достоверности процессов формирования первич- ных документов и переноса данных на технические носители ин- формации является одной из ключевых проблем, определяющих качество и эффективность системы обработки информации. Относительно низкая достоверность первичных входных дан- ных обусловлена высокой трудоемкостью процессов регистра- ции, сбора и переноса информации на технические носители. Обеспечение требуемой достоверности осуществляется в ос- новном следующими средствами: 1. Сокращением количества промежуточных документов и ручных операций, являющихся источником субъективных итера- тивных ошибок, вплоть до полной автоматизации процесса сбора; подготовки и ввода данных. Это предполагает приближение устройств подготовки данных к источникам данных, совмещение во времени и по оборудованию процессов заполнения форм документов с подготовкой машин- ных носителей, совершенствование форм документов и уменьше- ние количества промежуточных документов на этапе подготовки данных. 2. Повышением эффективности работы оператора за счет со- вершенствования форм документов, языка обмена оператора с техническими устройствами, эргономических характеристик тех- нических устройств и условий труда операторов. 3. Автоматическим контролем информации, который основы- вается на использовании естественной избыточности и (или) из- быточности, искусственно вводимой в данные для обнаружения и исправления ошибок. Среди методов, использующих искусствен- но вводимую избыточность, одно из важнейших мест занимают методы, основанные на помехоустойчивом кодировании данных. Эти методы Достаточно универсальны и позволяют обнаруживать 169
и-исправлять ошибки независимо от источника и этапа их воз- никновения; При-этом методы помехоустойчивого, кодирования можно ориентировать на более эффективную .защиту от ошибок того или: иного вйда. Выбор и эффективность применения конкретного метода по- мехоустойчивого кодирования в основном' зависят от возможно- стей технических средств системы обработки информации, форм представления данных в системе (в частности, от объема и соста- ва алфавита) и, наконец, от вероятностей появления тех или иных специфических субъективных интерактивных ошибок. Современные технические средства сбора, подготовки и ввода информации позволяют широко внедрять методы автоматического контроля. Наибольшие возможности по контролю и редактиро- ванию данных обеспечивают терминальные устройства и систе- мы, содержащие дисплеи, как автономные, так и управляемые центральной ЭВМ. Формы представления данных. Данные, вводимые в систему, могут содержать,-как цифровую, так и алфавитно-цифровую ин- формацию. В зависимости от назначения системы, а также вида вводимой информации' применяются либо специальная клавиату- ра с ограниченным составом символов, либо универсальная ал- фавитно-цифровая клавиатура. ' В промышленных системах, построенных на базе универсаль- ных устройств подготовки и ввода данных, можно выделить устройства, содержащие только цифровую и служебную клавиа- туру, устройства, содержащие алфавитно-цифровую клавиатуру с русским алфавитом и специальными знаками, и устройства, со- держащие алфавитно-цифровую клавиатуру с русским и латин- ским алфавитами и специальными знаками. К последним, например, принадлежит вся периферийная ап- паратура ЕС ЭВМ. Каждой клавише периферийного устройства ставится в соот- ветствие внешний код и внутреннее представление внешнего кода в ЭВМ. Имеется большое разнообразие стандартов, регламентирую- щих внешние коды символов устройств подготовки данных на перфокартах, перфолентах, в дисплеях и внутренние коды ЭВМ [86]. Стандарты устанавливают два класса символов: управляю- щие, которые инициируют, изменяют или останавливают управ- ляющую функцию; графические, предназначенные для представ- ления данных. Управляющие символы делятся на шесть подклассов: разде- лители информации, символы пользователя, символы расшире- ния; символы связи, символы формата и символы устройства. Об- щее количество управляющих символов — 35. Графические символы делятся на четыре подкласса: цифры (от 0 до 9); буквы прописные (33 русских и 26 латинских); бук- вы строчные (33 русских и 26 латинских); специальные знаки 170
* (34 знака: знаки арифметических и логических операций, скобки,' разделители и т. п.). В частности, отметим, что в системе ЕС ЭВМ применяется следующий набор символов: управляющие; цифры, буквы ла- тинские прописные, буквы русские прописные/специальные зна- ки. Внутреннее представление внешнего кода в ЭВМ осуществ- ляется 7-бйтным двоичным кодом с добавлением 8-го провероч- ного бита чётности (нечетности). Классификация интерактивных ошибок. Данные, вводимые в систему обработки информации, чаще всего представляют собой некоторую логическую структуру, организованную по иерархи- ческому принципу. Минимальной логической единицей информа- ции является реквизит — неделимая по смыслу единица инфор- мации. ; Реквизиты в зависимости от типа представляются либо чис- лом, либо последовательностью символов входного алфавита. Реквизиты группируются в записи — логически упорядочен- ные совокупности реквизитов. . Иерархически упорядоченная совокупность записей образует «документ в целом» — структуру, или файл. Файл — совокуп- ность связанных записей, рассматриваемая как единое целое. В процессе подготовки и ввода информации оператор может совершать ошибки на различных иерархических уровнях объеди- нения информации: в реквизите, в записи, в файле и т. д. Ошибки, совершаемые оператором, можно разделить на два больших класса — синтаксические й семантические. К синтаксическим ошибкам относятся ошибки, связанные с нарушением синтаксических правил формирования документа. Например, вставка или выпадение символа при фиксированном формате реквизита, сдвиг по строкам или столбцам, приводящий к изменению форматов нескольких реквизитов, замена правиль- ного символа на посторонний, не соответствующий шаблону, вы- падение или вставка строки документа и т. п. Семантические ошибки искажают смысл даннйх, не нарушая формальных правил построения документа. Например, переста- новка соседних правильных символов в реквизите, перестановка соседних Правильных однотипных реквизитов в строке или строк в документе. Деление ошибок на синтаксические и семантические довольно условно и зависит от конкретной структуры документа, степени формализации правил его заполнения и введения этих правил в процедуру программного контроля документа при его первичной обработке. • Методы контроля синтаксических ошибок легко формализу- ются, но специфичны, так как зависят от структуры документа [79, 80]. . Методы контроля семантических ошибок связаны с анализом логических и арифметических связей и соотношений логических 171
4 единиц информации. Различают орфографические, смысловые и блочные семантические ошибки. Ч Семантические ошибки на уровне реквизита часто называют орфографическими. Орфографические ошибки заключаются в ис- кажении символов реквизита (например, замена одного правиль- ного символа на другой, перестановка соседних символов и т. п.). Удельный вес орфографических ошибок в общем числе ошибок ввода информации превышает 60% и составляет около 78% от общего объема семантических ошибок [79]. К семантическим ошибкам относятся и «смысловые ошибки», которые заключаются в искажении смысла предложения, опре- деляемого записью. Например* перестановка одноименных «пра- вильных» реквизитов (чаще всего соседних) записей. Причиной появления таких ошибок является переключение внимания опе- ратора с одной строки на другую, относящуюся к другой записи. Удельный вес смысловых ошибок в общем объеме семантических ошибок составляет 16% [80]. Блочные семантические ошибки искажают блок записей. При этом каждая запись блока остается правильной. Причинами воз- никновения этих ошибок могут быть пропуски и перестановки за- писей и т. п. Орфографические ошибки (наиболее вероятные среди семан- тических) можно разбить на следующие классы: замещения сим- волов (транскрипционные ошибки), перестановки символов (транспозиционные ошибки), вставки и выпадения символов, ошибки сдвига, арифметические ошибки. Менее изученными (хо- тя и достаточно распространенными) являются ошибки, связан- ные с неправильным переключением регистров клавиатуры уст- ройства ввода [5]. Такие ошибки называются регистровыми. 1. Замещения символов (транскрипционные ошибки) приво- дят к замене одного или нескольких символов другими символа- ми. Среди них следует выделить: а) однократные ошибки замещения типа b-^с, приводящие к искажению одного символа, например 3397-^-3327; они наиболее вероятны среди всех орфографических ошибок оператора; б) многократные идентичные ошибки замещения в одинако- вых символах типа bxbby-*-cxccy, приводящие к замене несколь- ких одинаковых символов одним и тем же ошибочным символом, например 124116->-724776; чаще встречаются двукратные иден- тичные ошибки в соседних символах (bb-^cc), например 73346-*- -*-78846; трехкратные идентичные ошибки в соседних символах (6&&-*-ссс), например 577764-*-511164; в) многократные случайные ошибки замещения (axbcy-*- -+dxefy), например 57893-^-67923. 2. Перестановки символов (транспозиционные ошибки) — ошибки типа db-+bd, dxb^-bxd, dxyb-^-bxyd и т. д., заключающие- ся в перестановке местами двух символов, например 3297-»-3927. Особенно часто происходят перестановки в соседних символах. По вероятности появления перестановки в соседних символах на- 172
ходится на втором месте среди орфографических ошибок (после однократных ошибок замещения). 3. Вставки и выпадения символов (ошибки типа db-^dxb, dxb-^b, ddxybb-^-dxybb и т. д.). Такие ошибки относят к орфографическим, если они не меня- ют длины реквизита или в случае, когда длина реквизита не фик- сирована. 4. Ошибки сдвига (ошибки типа: ... ху ... z f2f2...f2gu^> « г - ”** -^dbfi ... xy ... zf2 ... f2gu— сдвиг влево группы из v сим- nti—l v mt+l волов на I позиций, dbf^ ... ху ... zf2 ... f2gu-*-db f1.. ./pt mi v m, пц+l xxy... zf2 ...f2gu — сдвиг вправо; чаще всего = f2). v mt-l Ошибки сдвига происходят в реквизитах фиксированной дли- ны, содержащих две или более последовательностей одинаковых («фоновых») символов, например 000035700->003570000, 77125777->77712577. Особенно часты ошибки сдвига на фоне пробелов. 5. Арифметические ошибки могут происходить при арифмети- ческих операциях с числами, представленными в позиционной си- стеме счисления. Одиночной арифметической ошибкой в системе счисления по основанию г называют число а(г*, |а<| <г. Напри- мер, если г=10, то 125062-И32062 означает одиночную арифме- тическую ошибку, 125062+7* 103= 132062. Сумма однократных арифметических ошибок называется многократной арифметиче- ской ошибкой. Данные о доли ошибок некоторых типов среди всех орфогра- фических ошибок оператора приведены в табл. 9.1. Таблица 9.1 Категория орфографических ошибок Обозначение Доля ошибок данной катего* рии среди всех орфографиче* ских ошибок оператора Однократные ошибки за- в->с 0,755-0,86 мещения Транспозиция соседних вс->св 0,08 символов > Двукратные идентичные ошибки замещения в со- вв->сс ' 0,012 ; седних символах Транспозиция* символов, вхс->схв 0,004 разделенных одним сим- волом . - - Трехкратные идентичные ошибки замещения в со- ввв->ссс 0,002 седних символах Остальные ошибки 0,042—0,147 .17.3
9.2. Методы обнаружения ошибок Отображение реквизитов в кодовые слова. Пусть А = -=(АьА2, .... Ак)—исходный информационный реквизит, Де0' (0' — один из стандартных алфавитно-цифровых наборов или его подмножество). Для того чтобы можно было обнаружить ошиб- ки, вносимые оператором, реквизит А преобразуется по некото- рому правилу в кодовый реквизит А=(А1у Аг......Ак, ЛЛ+1, ... ..., Ап), Де0, .j=k-]rl, ..., п, 0zs0 (0 — стандартный алфавит- но-цифровой набор). Преобразование реквизита А в А называет- ся кодированием. ... ......... Кодовый реквизит А, обработанный оператором, обозначим А/=.(А/, Л/,..., Л/). Если оператор.внес в Л какие-либо ошиб- ки, то Л'=#Л. Обнаружение и исправление ошибок в реквизите А' называется декодированием. Для осуществления операций кодирования и декодирования алфавит реквизита 0 взаимно, однозначно отображается в кодо- вый алфавит £2 (одновременно 0'->-£2'). При этом отображении информационный реквизит A=(At, ..., Л*) переходит в инфор- мационное слово а=(аь ..., ак), а кодовый реквизит Л=(Л4, Л2, ..., Лп) — в кодовое слово а= (аь а2, ..., ап). В частности, £2=0. Например, для числовых реквизитов £2=0= {0, 1,2,..., 9}. Если £2 — кольцо целых чисел .по модулю q (q&s 10), то все циф- ровое элементы алфавита; 0.при 0->-£2 отображаются сами< в себя. Для обнаружения и исправления- ошибок в реквизитах мож- но использовать различные как числовые, так и нечисловые ко^ ды, в том числе, коды, рассмотренные в предыдущих главах. Здесь мы ограничимся в основном числовыми кодами, обнаружи- вающими одиночные ошибки различных типов. Будем рассматривать числовые коды, называемые весовыми кодами с контролем по модулю. Весовой код V над алфавитом £2 (£2 — кольцо целых чисел по модулю q) определяется как сово- купность всех слов (аъ а2, • • •., А»), i=l, ..., п, удовлет- воряющих системе сравнений " S Л0)(и»Р,А) = 0( mod -ty), (9.2.1) Si /=1-2.s , где K>j<i)e£2 — вес i-й позиции в J-м сравнении (контрольном со- отношении), N} (У>>1 — целое число) — контрольный модуль, fi(i) (х, у) — целочисленная функция целых аргументов. . Для весового кода не обязательно совпадение кодового £2 Н информационного алфавита £2'. Так, информационные символы а„ а2, ..., ак могут быть десятичными цифрами, в то время как проверочные символы — элементы кольца целых ч'йсел по моду- лю <?, <7>10. При кодировании :по информационному слову a=(alt ..., ак) из (9.2.1) находятся проверочные символы ак+1,..., ап и тем са- Mbita кодовое слово а= (а, а2,..., ап). । ЭД!4
При декодировании принятого, слова. а'— (а/, а/, , ап') проверяют, .удовлетворяет ли она (9.2.1). Считают, что в слове а' обнаружены ошибки, если хотя бы одно' из сравнений (9.2.1) не выполняется. Весовой код над алфавитом Q с одним, контрольным,- соотно- шением образуют слова, удовлетворяющие сравнению 2 ft&t, at) = 0"(mod N). ” (9.2.2) В простейшем (и наиболее распространенном) случае ft(wh at) = wtai и контрольное соотношение (9.2.2) принимает вид ; 2 xtnat = 0 (mod N), (9’2.3) где (modAO, i=l, 2,...,п. Контроль ошибок на основе (9.2.3) называют простым взве- шенным контролем по модулю. Если веса в (9:2.3) образуют геометрическую прогрессию со знаменателем г и i0n—1, то слова а= (at....ап), удовлетворя- ющие (9.2.3), образуют r-ичный арифметический код: На основе (9.2.3) легко выводятся [171] условия обнаруже- ния ошибок различных типов для простого^взвешенного контро- ля по модулю. 1. Однократные, ошибки замещения: необходимое' и достаточное условие обнаружения 0 (mod АГ), = {0, 1, ..., q—.1}, i = 1, ., и; ., ' ' (9-2.4) достаточное условие обнаружения .• . (wt, N) =d, i= 1, 2,..., п, . (9.2.5) или ' N^q, N—простое число, N>w{, i—-1, 2.........п. (9.2.6) 2. Многократные идентичные ошибки замещения кратности v:T необходимое и достаточное условие обнаружения ' b 2 wtj Ф 0 (mod N), b е Й, Ь Ф 0; (9.2.7) /=1 достаточное условие обнаружения . •- • • V ' ‘ . 2 Wtj<?N', N^q, N— простое число. (9.2.8) 3. Однократные перестановки двух символов: необходимое и достаточное условие обнаружения (10/, — £0/,) Ь ф0 (mod АГ); & е Q, 6 =/= 0, Ф i2. . (9.2.9) 17&
Достаточное условие обнаружения Wit фин, (modAZ), N~^q, N^wt, i=l, .. .,n, N — простое число, it, t2e{l......n}. (9.2.10) 4. Сдвиговые ошибки. Пусть кодовое слово а имеет вид а —- (... /?, bf »• •, b, ^24-1, • • •, d, .. •, d, d, ...) т г и в слове а произошел сдвиг блока с<+1, с2+;, ..., cv+< длины v на I (l^m) символов влево. Для того чтобы код, удовлетворяющий (9.2.3), обнаруживал сдвиговую ошибку такого типа, необходимо и достаточно, чтобы 2 ci (WH — “’/) — ь 3 wi~l + d S WH^ (modJV). (9.2.11) /=Z+1 /=/+1 j—i+v+1 Если b—d, to (9.2.11) равносильно сравнению /4-V i+l 2 Cj(wH — Wj) — b 2 (u>H — t0/+v-./)^O(modAZ). (9.2.12) f=/+l /=1+1 При b=d=O (9.2.12) сводится к 2 Cj (tijj..! — Wj) ф 0 (mod N). (9.2.13) /=i+i Используя (9.2.11) — (9.2.13) в конкретных случаях, можно получить достаточные условия обнаружения сдвиговых ошибок. Так, если'модуль N — простое число, то для обнаружения сдви- гов блока длины v или менее на I l^r) или менее симво- лов (как влево, так и вправо) достаточно, чтобы max i+v' 2 Cj(Whli — Wj) /=/+1 (9.2.14) <N, c/^Q, v,= l, 2,.... v; p=l, 2.Z; p+l^i^n+l—v'. В частности, если k\=i, то из (9.2.14) получаем достаточное ус- ловие [79] (q—V)vl<N. (9.2.15) Контроль цифровой информации. При кодировании числовых реквизитов А = (Ль Д2...Ак) , A^Q'= {0, 1, 2, ..., 9} стремят- ся выбрать кодовый алфавит Q=0/. Однако это ограничивает об- наруживающую способность кода. Более широкие возможности по обнаружению ошибок возникают при использовании кодового алфавита Q=-{0, 1, 2, ..., q—1}, q — простое, или степень про- стого числа. Пусть кодовый алфавит Q= {0, 1,2,..., 9}, q= 10. Весовой код длины п^'Ю определим одним контрольным .соотношением 176
(одной проверочной цифрой): 2 fi at) (moci Ю)* <«=i Известны несколько способов задания функций /<(о><, а,): метод Эндрью [89, 160], метод расщепления [74, 130], обобщенный ме- тод расщепления [79] и др. В методе Эндрью а<) = = (&у,(а(+1)—l)modll, одна из последовательностей весов: ayt=2, u/2=4, u/3=8, о»*=5, ау5=10, u/6=9, w,=7, ws=3, wa=f>, 2^10=1 [99, 160]. Во всех случаях ^k+1='l и fs+1(l, ak+l)—ak+i, Л+\=п. Все методы позволяют обнаруживать одиночные ошиб- ки замещения, большинство двукратных и трехкратных идентич- ных смежных ошибок, перестановок смежных символов. Все ошибки указанного типа, а также одиночные вставки и выпадения позволяют обнаруживать весовой код длины с двумя проверочными цифрами. Если (аь а2, ..., ак) — информа- ционное слово, то проверочные символы (цифры) ак+1 и ак+г jk+2=ri) определяются соотношениями [167] ' к \ %+i = I S at) аА+8 = 2“ &i+ 2^2. где = \i=l / = £mod2, bz = (ctk — ak-4— ...)mod4. При использовании для контроля цифровой информации ко- довых алфавитов Q={0, 1, ..., q—1}, q— простое или степень простого, вместо весового кода целесообразней выбрать линей- ный код над GF(q), например код Рида—Соломона над простым полем GF(p). Контроль буквенно-цифровой информации. Символы произ- вольного реквизита принадлежат алфавиту, состоящему из стан- дартного алфавитно-цифрового набора или его подмножества. Наиболее употребительны алфавиты, состоящие из 31, 37, 16, 32 я 128 символов. При кодировании реквизитов над алфавитами из 31 и 37 символов используют линейные коды над GF(31) и <GF(37) соответственно. В других случаях — линейные коды над <GF(2m), m=4,5 и 7. 9.3. Методы исправления ошибок Обнаружение ошибок с последующим повторным вводом дан- пых является наиболее распространенным подходом к борьбе с •ошибками оператора. Однако в некоторых случаях такой подход •оказывается нецелесообразным. Например, когда повторный ввод даннцх в ЭВМ либо принципиально невозможен вследствие временных ограничений, либо приводит к большим материаль- ным затратам. В этих случаях приходится использовать методы исправления ошибок. Здесь мы ограничимся в основном рассмот- рением методов исправления одиночных ошибок различных ти- пов— наиболее вероятных ошибок оператора. 177
Исправление одиночных ошибок замещения. Наиболее из- вестными кодами, исправляющими одиночные ошибки замеще- ния, являются коды Хэмминга и Рида2—-Соломона >[66, 73]. Эти коды строятся над полем GF(pm), где р — простое, т — целое. Если алфавит кода.й= {О, 1,, ?—1}, где q>A — произвольное;- целое, то для исправления одиночных ошибок могут быть исполь- зованы коды Кириллова [60] и коды над полем рациональных. йи’сел_[37, 38],__ ’. . ; При выборе кода стремятся, к наименьшему числу г прове- рочных символов, максимальной мощности М, минимальной (или Допустимой)' сложности кодирования и декодирования. Очевидно, ' , г>2,' . . (9.3.1> Для верхней границы мощности М кода длины п, исправляю^ щего одиночные ошибки замещения,- известна оценка Хэмминга ’ M^qn/[(q— 1)п+1], ......... (9.3.2} Для q — степени простого — известны коды, достигающие- границ (9.3.1),и (9.3.2).,Так, код Рида—^Соломона, исправляю- щий одиночные ошибки, имеет два проверочных символа. Код Хэмминга при n=(qm—V)/(q—1) имеет - мощность, Которая до- стигает границы (9.3.2). Если n^’(qm—Y)/(q— 1), то укорачива- нием кодов Хэмминга -строятся коды, мощность которых отлича- ется от. верхней границы (9.3.2) не. более чем в q раз. Для q, не: равног.о.степени простога, систематические коды Кириллова [60} имеют мощность " ' M>qnl<f(ti—loggH+Д(?)), ..... где А (?:)<‘/г© (?),©(?) — произведение всех простых чисел, меньших:?. - . ’ . Свойства кода Хэмминга.детально описаны в литературе [66, 73]; -. >: Удлиненный код Рида—Соломона над GF(p), исправляющий: одиночные ошибки,, удобно задавать проверочной матрицей „ И 1 1 ... 1 1 1 о | Л = • | р — 1 р—2 .... 2 1 0 1 I Длина кода п=р+1,.число информационных символов k= =±=р—^12 дисло проверочных символов г=2. ; - Кодирование этого кода состоит в следующем. Пусть a^=(ai, a2, Оп-г].— информационная последователь- ность: Проверочные символы an~i и ап находятся с помощью функций ..... .., ...... ”г. .3 л*’* \ \ ‘ 4 I ' • - ? . (9.3.3> ,::т г ?:*/•? у:’. ' -у — -......................г v^Vj-t + щ, vo=0G - (9.3.4} 178
по следующему правилу: tin—“~^n—2 И tln ”“^n—2* При декодировании [261 слова a=i(a/, а/, , а/) находятся гсиндромы St и 32 с помощью функций / Ф/ = 2 a'i> Ф/ = Ф/-1 + Ф/» Фо = ° (9.3.5) i=i это следующему правилу: Si=q>n-i, 52=ф„_2+ап'. (9.3.6) Если St=S2=0, считается, что ошибок не произошло. В против- ном случае исследуется синдром S«. Если St=0, то искажен по- следний символ а/ и значение, ошибок равно S2. Если же 5,=/= О, то Si суть значение ошибки, а номер позиции ошибочного симво- ла равен р—S2/St. Для определения S2/St необходимо осущест- вить деление элементов простого поля GF(p).,B случае неболь- шого р это можно сделать посредством перебора или табличного умножения. Если же р большое, то деление сводится к умноже- нию на обратный элемент, который находится с помощью мето- да, основанного на алгоритме Евклида и свойствах непрерывных дробей. Пример. Пусть р=П. Проверочная матрица удлиненного (12,10)-ко- да Рида—Соломона над I 1 1 1 1 1 1 1 ! 1 1 ! 0 ] 10 9876543 2 101 |' Пусть а = (2500000001)—информационная последовательность. Прове- рочные символы ац и ai2 находятся в соответствии с (9.3.3) и (9.3.4) и равны ац=3 и au=0. Таким образом, кодовое слово а== (250000000130).,Предполо- жим, что в слове а в пятом символе произошла ошибка и было принято слово а'= (250040000130). Находим согласно (9.3.5) и (9l3.6) синдромы Si=4, -S2=2. Значение ошибки равно Si=4, номер ошибочного символа р—S2fSi = = 11—2/4=11—6=5 (в поле GF(ll)) 2/4=6). Рассмотренный код Рида—Соломона легко реализуется про- граммно. Для аппаратурной реализации более подходит следую- щий циклический код. Пусть a — элемент поля GF(p). Много- член g(x) = (x—aa) (х—аь), (а—Ь, п) = 1 порождает циклический \п, Л)-код U над GF(p). Длина кода п равна порядку элемента таи максимальна (равна р—1), если a — примитивный элемент поля GF(p). Код U исправляет одиночные, ошибки замещения. Действи- тельно, двучлен е{х*+е}х? ни при каких / и /, i^j, 0<i, /<л не является кодовым. Предположим противное, тогда et<xla -|- e/aJa = 0 и e/a№ -J- в/а/* = 0. (9.3.7) -йд. (9.3.7) следует - ..аЦ-,)(а-Ь) = ^ - ... (9.3.8) 179
Учитывая условия а—6^0, (а—Ь, п) = Ь, получаем, что (9.3.8) имеет место только при I—jssO(modn). Получили проти- воречие. Поэтому минимальное расстояние кода равно 3 и код U исправляет одиночные ошибки замещения. В частности, если 6=а+1 и а примитивный элемент GF(p)t то код U—'это циклический код Рида—Соломона длины п= =Р— 1. Код Кириллова [60] над алфавитом Q={0, 1....q—1}, q— произвольное целое, строится следующим образом. Пусть а, р и N — произвольные натуральные числа. Обозна- чим через DnN(a, р) множество всех слов (аь а2, ..., а„), кото- рые удовлетворяют условиям 2 а/= a (mod (2<у — 1); 2 w,E=p(mod N). (9.3.9) Z=1 i=i Будем говорить, что число N удовлетворяет (q, п—1) — усло- вию несравнения, если для любой пары чисел i и Л, где —1, —1, имеет место t/i^0(mod N). Теорема 9.3.1. Если W удовлетворяет (q, п—1) —условию не- сравнения, то при любых аир множество Dnrr(a, Р) является ко- дом с исправлением одиночных ошибок. Доказательство. Пусть слово а=(аъ аг, ..., а„) при- надлежит DnN(а, Р) и слово а'=(а/, а2, ..., а„') получено из слова а в результате ошибки h в /-м разряде. Тогда п п п п 2 = 2 3 ia’i = S ia/+ (9.3.Ю) i=l fc=l £=1 и в силу определения Dnlf (а, р) Я= 2 о,—a(fnod(20—1)), (9.3.11) jh s 2 — P (mod (9’3.12) i=i Так как —(q—\}^h<q—1, то сравнение (9.3.11) позволяет по слову а' и числу а определить величину h ошибки. При из- вестной величине h сравнение (9.3.12) позволяет по слову а' и числу р однозначно (в силу (q, п—1) —условия несравнения) определить номер / искаженного разряда. Dnrr(a, Р) является несистематическим кодом и поэтому не- удобен в реализации. Но на его основе можно построить система- тический код. Пусть q и k — произвольные натуральные числа, причем k^q—1^1, и пусть число L удовлетворяет (q, k) —условию не- сравнения. Каждое fe-разрядное информационное слово принад- лежит одному и только одному из кодов £>ы,(а,р), где О^а^ 180
^2q—2 и —1. Положим L=N(q, k), где N(q, k) — наименьшее N, удовлетворяющее (q, k) — условию несравненна.. Кодирование систематического кода состоит в следующем. По информационному слову а= (аь аг, ..., ак) находим а0 и: Ро такие, что аеРыДао, 0О). При этом k ' k a0 = 2°<modQ; ₽о = 2 IafmodL; Q = 2^—1. (9.3.13) i=l l=l Находим слово &=й1Ь2, которое является записью числа а0 в <?-ичной системе счисления, и слово c=CjC2... ст, где m=]loggL[„ которое является записью числа 0О в <?-ичной системе счисления, т. е. “о = Ь1Ч + Ь2; р0 = -J- c2qm~2 + ... + ст. (9.3.14) Составляем слово a=abc и считаем это слово кодовым сло- вом, соответствующим информационному слову а. Множество слов, вида abc образует систематический код с исправлением одиноч- ных ошибок замещения. При декодировании принятого слова а/=а/Ь'с,= (а/, а/, .. _ ..., а/, bi', b2', с/, ..., ст') вычисляем at и по формулам k k = 2 mod (2?—0> ₽! = 2 ЦmodL. (9.3.15) fe=i i=i Затем находим синдром S=(St, S2), St=at—а/ и S2=0t—pt\ где ai'=bi'q+bi, ii'=Ci'qm~l + ... +cm'. Если St=S2=0, счи- таем, что ошибок в принятом слове нет. Если З^О, 32=0 или St=0, 32#=0, то полагаем, что искажены проверочные символы^ при З^О имеем ошибку в одном из символов bt', bt'; при 32=/=0 имеем ошибку в одном из символов с/, с/, ..., ст'. Если З^О и 32#=0, то искажен один из информационных символов а/. Ве- личина ошибки hj=aj—а} равна наименьшему по абсолютной величине вычету числа St по модулю 2q—1. Номер позиции / символа а/ равен наименьшему положительному решению срав- нения /yssSJmodL). (9.3.16) Для упрощения реализации сравнение (9.3Л6) можно заме- нить уравнением [37] hri^S, (9.3.17> (32 — наименьший ио абсолютной величине вычет числа 32 по- модулю £),%сли выбрать L^2(q—1)^+1; Q—q. При кодирова- нии это приведет к а0—Ьг. Так как />0, то знаки hf и S2 совпадают, и поэтому h. = 5imod если S2 > 0 (9.3.18) (Simodq — q, если 32<0. 18t
Номер j искаженной позиции находим из (9.3.17): /=5’2/ftj. Если деление произошло с остатком, считаем, что обнаружена неисправимая ошибка. Исправление перестановок соседних символов. Перестановку «смежных символов всегда можно рассматривать как пакет оши- бок замещения длины 2. Поэтому все коды, исправляющие оди- ночные пакеты ошибок длины 2, могут быть использованы для исправления одиночных перестановок соседних символов. Здесь мы покажем, что при определенных условиях одиночные пере- становки символов могут исправлять коды, исправляющие оди- ночные ошибки замещения [59, 167]. Лусть q — степень простого числа и V — линейный цикличе- ский (n, k) -код над GF{q), исправляющий одиночные ошибки .замещения, g(x) —порождающий многочлен кода V и£(1)=/=0. Пусть а(х) —alxn-i+a2xn~2+ ... +а„ — кодовый многочлен. Перестановка соседних символов aiai+l->-at+ta( в слове а= =<(а„ аг, ..., ап) кода V эквивалентна сложению кодового мно- гочлена а(х) с двучленом е(хп~{—eixn~i~', где et—ai+l—at. Но ’ e(xt+i—etxi=ei(x—1)х‘, и если е({х—Л)х(+е3{х—1)х’^ Й0(пю(1£(х)) (9.3.18) при любых i и /, i, j=0, 1,..., п—1, то код V исправляет одиночные перестановки соседних симво- лов. В силу g(l) #=0 (9.3.18) следует из е{х’+ерс^О(шоб£(х)). (9.3.19) Поскольку код V исправляет одиночные ошибки замещения, ^9.3.19) имеет место при любых i и /; i, /=0, 1, .'., п—1, i#=j. Декодирование рассматриваемого кода осуществляется сле- дующим образом. Пусть в кодовом слове а= (аь ..., ah а,+1, ... ..., ап) произошла перестановка и а'(х)—приня- тый многочлен. Находим синдром 5(х) многочлена а'{х) S(x) = =a'(x)modg(x). Определим S'(x)=S(x)/(x—l)modg(x). Находим i, удовлет- воряющее сравнению е(х{з= Sf (х) (mod g (x)), et=a<+i—a(, посредством метода исправления одиночных ошибок замещения для кода V. Перестановка i-ro и (i+l)-ro символов завершает декодирование. Построенный код позволяет исправлять перестановки сосед- них символов только в случае, когда кодовый алфавит есть ко- нечное поле. Если же алфавит кода й= {0, 1, ..., q— 1), q>d — произвольное целое, то можно использовать циклические (п, Д)- коды, исправляющие одиночные арифметические ошибки. Пусть в слове b= (bt, bz, ..., bn) (п, Д)-кода произошла пе- рестановка символов bi и bi+t и было принято слово Ь'= — {bi, Ьг', ..., bn). Разность чисел B'=bi,qn-i+bi'qn~2+ ... -.. +bn' и B=biqn-l + b2qn~z+ ...!+&„ равна В'-В ^{Ьы-bi) q^^ibi-bi^) q*-^ = (bi+l - b{) {q -1) q"-^. 382
Если в слове b произошли две перестановки соседних символов bibt+r-^bi+ibi и bjbj+i~*~bj+ibj, тогда В‘ — В = (bi+1 — bi) {q — 4- (6/+1— tf){q — (9.3.20) Из (9^3.20) следует, что (п, Л)-код, исправляющий одиночные арифметические ошибки, будет исправлять одиночные переста- новки соседних символов тогда, когда (Л, q—1) — 1. При q=2r 3, 6 и 7 можно использовать совершенные (п, Л)-коды, исправ- ляющие одиночные ошибки, для кдторых Л — простое' число: Для: составных q можна использовать (п,. Л) -коды, близкие к совер- ' шенным, с генераторами вида Л=р1р2,‘ pt и р2— простые числа,. Pi, Pt>q [36]. Так, при <7=10 генератор Л = 11X41 порождает десятичный циклический (п, Л)-код длины n=10 с k=7 инфор- мационными символами, исправляющий одиночные перестановки соседних символов. Одновременное исправление одиночных ошибок замещения и перестановок соседних символов.,Для одновременного исправле- ния одиночных ошибок и перестановок соседних символов мож- но использовать код, исправляющий пакеты ошибок длины 2. Од- нако во многих применения^ стремятся использовать код с наи- меньшей избыточностью. Для данной задачи она составляет два; символа. Мы рассмотрим весовой код, имеющий именно такую* избыточность [163]. Символы кода Z принадлежат- алфавиту1 Q={0, 1, ... ,~р—1}, р — простое число. Пусть &==(at, ..., ak) — информационная последовательность, ak+i и ак+2 — проверочные, символы, так что а= (аь ..., ah, ak+l, ак+2) — кодовое слово.. Символы слова а — неотрицательные целые числа, меньшие р„. 0*СО<<Р- Положим k+2=n. Если Wiw, w2m, ..., wnw и w2<2), ...,wnm— весовые последовательности кода Z, То кодо- вое слово а должно удовлетворять системе сравнений 2 = 0 (mod р), = 0 (mod р). (9.3.21 У i<=l i=l >- Для одновременного исправления кодом Z одиночных ошибок, замещения и перестановок соседних символов достаточно, чтобы: весовые последовательности удовлетворяли бы следующим усло- виям: ‘ : ' . ud1*<Zp и .иф<р, i — \,2f ...,n‘, и ву|а) #= j; i, j = 1,2, ..., n; а)(1)ц)(2)(modp), i=^jy j., / = 1,2,...., n; (uy||> — ф (w)1^ — w*1)) (ad.^ — wW) (mod p)r l Ф j, h i — 1.2,.'.., n; s (дар — ^(s) ф ((0(2) — ш(2)^ (0(1)(тод для i=1,2.......n— 1;. / = 1/2,..., n. 183'.
Приведем два метода построения весовых последовательно- стей, удовлетворяющих этим условиям. В методе 1 для данного р и любого выбора Ь, О^Ь<р равен- ства • а=п—2, и=[(р+2—&)/3] (9.3.22) дают значения а и п, по которым определяются весовые после- довательности a;(4 = f(t) = i+a, 1,0<аХл (9.3.23) = g(0 =(1’ + а)(1’+&)» i = 1,..., n; 1 г^п<р— а. Пример. Числовые системы с основанием р=37 широко применяются для представления алфавитно-цифровых данных [130, 163]. При этом буквы кодируются в числа А-*-10, 2?—>-1(1, С-* 12.Z->35, дополнительный знак *-*36. Максимальная длина кода получается при &=0 и равна п=13. Сле- дуя (9.3.22) и (9.3.23), определяем а— 11 и и»<1>=12, 13, 14, 15, 16, 17, 18, 19, 20; 21, 22, 23, 24; w<2>=12, 26, 5, 23, 6, 28, 15, 4, 32, 25, 20, 17, 16. .Декодирование кода Z состоит в следующем. Пусть а'= (а/, аг',..., а„') — принятое слово. Вычислим син- п п дромы Sj =2 р и S2 = ©/2)а/ mod р. Если Si=S2= i=i i=i = 0, считаем, что ошибок не произошло. Если S,=0, S2¥=0 или ^,=#0, S2=0, считаем, что произошла некорректируемая ошибка. Наконец, если и S2=#0, вычислим Z=(S2S1-t—b) modp. При ХХ« считаем, что в /-й позиции произошла ошибка за- мещения e=S1(J+a)-tmodp и истинное значение J-ro символа <а,=а/—е. В противном случае вычисляем J'=(J—а—1)/2. При l^JXn—1 и Г целом считаем, что произошла перестановка символов и производим обратную перестановку. При других J' считаем, что обнаружена неисправимая ошибка. Метод 2 дает возможность построить более длинный код, правда, с несколько более сложной процедурой декодирования. Рассматривается простое поле GF(p), р>2. Пусть а — примитив- ный элемент GF(p), тогда весовые последовательности суть a,(i) = а‘а+с, = abt+d, i = 1,2, ..., л; л = (р— 1)/2, (9.3.24) где а=/=0, &#=0, а=^Ь, (а, р—1X2, (Ь, р— 1X2, (&—а, р—1) = — 1, ао+аь=2, cud — произвольные целые. Пример. Пусть р=37 и а=2 — примитивный элемент GF (37). Тогда, положив c—d=Q и решая 2а+2ь=2 с учетом (9.3.24), найдем а=2, 6=19 и w<»= (а2, а4, а6, ...) = (4^ 16, 27, 34, 25, 26, 30, 9, 36, 33, 21, 10, 3, 12, 11, 7, 28, 1); w(2)=(a19, а38, ...) = (35, 4, 29, 16, 5, 27, 20, 34, 6, 25, 24, 26, 22, 30, 14, 9, 19, 36). Декодирование кода Z, построенного по методу 2, состоит в следующем. 184
Пусть а'= (а/, а/,..., а„') — принятое слово. Вычислим син- п п лромы Sj = р и S2 = a(tt>,(2)mod р. Если St=S2=0, <*=»! /=»i ошибок не произошло. При St=0, S2=/=0 или St=?£=0, S2=0 счи- таем, что обнаружена некорректируемая ошибка. Наконец, если 5,=И=0 и S2#=0, вычислим S2St-1 и найдем k такое, что a*==S2Si-1. Положим J=r(k+c—d)mod(p—1), где 'г определяется из .г(Ь—a)+s(p—1) = 1. При ls£/<n считаем, что произошла «ошибка замещения в J-й позиции e=S1a_(aJ+c) и истинное значе- ние J-vo символа aj=(a/—e)modp. В противном случае вычис- ляем J'=(rk+t)mod(p—1), где t—rt', az' = (a°—l)/ad_,!(a!’—1). При —1 считаем, что произошла перестановка ->-а.г+,а.г, и производим обратную перестановку. При других J' •считаем, что обнаружена неисправимая ошибка. Исправление одиночных вставок и выпадений. Пусть а= = (аъ ..., at-i, at, Oi+i, ..., ап) — слово длины п с символами из алфавита Q={0, 1, ..., q—1}, q> \ — произвольное целое. Пре- образование слова а в слово а'= (аъ ..., а,-!, а<+1, ..., ап), со- стоящее в удалении i-ro символа (i= 1,2,..., п), называется оди- ночным выпадением символа. Преобразование слова а в слово (at, ..., a,-, X, aj+i, ..., an), состоящее во вставлении симво- ла % между /-м и (/+1)-м (/=0, 1, ..., п) символами (%, как •правило, но не всегда — символ алфавита Q), называется оди- ночной вставкой символа. Нет проблем для обнаружения вста- вок или выпадений символов в кодах постоянной длины: при •выпадении символов длина кода уменьшается на число выпаде- ний, при вставке — увеличивается на число вставок. Гораздо сложнее задача исправления вставок или выпадений. До сих пор не известно не только ни одного кода, исправляющего многократ- ные вставки или выпадения, но и кода, исправляющего двукрат- ные вставки или выпадения. Наилучшим среди известных <?-ичных кодов, исправляющих •одиночные вставки или выпадения, является код [67]. Код за- дается следующим образом. Для слова а=(аъ ..., an), построим двоичную последовательность а= (аь ..., ап) такую, •что «,= (’• «ли „,><^,1-1............п, } (0, если ai < а^, 'ай = 0. Множество слов а=(аъ ..., а„), вместе с последовательно- стями a=(at, ..., an), удовлетворяющих системе сравнений 2 ai = b(piodq), 2 iat = с (mod (п 4- 1)), (9.3.26) f=l i₽=l •где b и с — произвольные целые числа, образует /у-ичный код, ис- правляющий одиночные вставки или выпадения символов. Код, задаваемый (9.3.25) и (9.3.26), несистематический и по-, этому неудобен в реализации. Но на его основе можно построить 185
систематический код. Слово систематического кода имеет вид -2 = (^1> • • •» Clkt'Ok+it Ok+2> • • • <- ^ft+r+2» Ok+r+3> о, 1), „ где а= (at, ..., ак) — информационная последовательность, г= = ]log;(A!+l)[, n=k+r+5, ак41—ак+2= (aft+l) mod?; aft+r+3= (k \ Г+2 k 2 ял mod?, 2 °W<_S= 2 mod (^+!) 1=1 / /=3 fc=l .,., a*)—двоичная последовательность; соответствующая инфор- мационной последовательности a=(at, ... ,'ак) (см. (9.3.25)). Комбинация 0, 1 в конце слова а играет роль запятой между- кодовыми словами. Символы ak+L и ак+2 служат для отделения; информационной части от проверочной. Для упрощения реализа- ции при определении проверочной последовательности а*+3,_____ ..., aft+r+2 вместо модуля k+1 следует выбрать модуль qr~^k+ L Выбор модуля в виде степени ? позволяет свести определение- проверочной последовательности к вычислению г младших раз- ft ' рядов суммы 2 й=1 Декодирование принятого слова &'= (а/, ..., a'n-i) система- тического кода состоит в следующем (ограничимся рассмотре- нием выпадений). Если а'„_1=0, то выпадений не произошло- Если а'п-,^1 и а\^=а\+ъ то считаем; что выпадений в.информа- ционных символах нет. В противном случае полагаем, что про- изошло выпадение информационного символа. Находим двоич- ную последовательность a'.=i(a/, а/, .... d'h-i), соответствую- щую информационной последовательности а=(а/, а/........ Вычисляем синдромы (Л-i \ /г+1 Л-1 \ а'п-з — 2 mod = 12; a'k^ — 2 ia'i mod v 1^=1 J \t=2 £^=1 J и вес последовательности a' w(a') =2ar £=1 Двоичная последовательность a=(at, a2, ..., aft), построен- ная по информационной последовательности а= (at, a2, ..., ак)г является словом двоичного кода с • исправлением одиночных вставок и выпадений [65]. Так что по а'=•(«/....а'^-Э мы мо- жем однозначно восстановить а= (аь ..., а»). Обозначим (ц.о) число единиц .(соответственно нулей), расположенных правее вы- Л-I Л павшего символа, и2 W=/’(a,)»2} ia<=P(a). Тогда, если вы- 1=1 £=1 пал символ 0, то Р(а)—Р(а')=ц1, а если выпал символ 1 то> Р(а)—P(a')=k—р0. Очевидно, что в обоих случаях 0^ ^Р(а)—P(a').^k. Поэтому Р(а)—P(a,')=S2. Учитывая ^.w(a')<Z.k—|л0, заключаем, что при S2^w(a') нужно в последо- 186
«вательности а' вставить символ 0 так, чтобы правее него было JS2 единиц. При $2>ау(а') в последовательности а' вставляем символ 1 так, чтобы правее него было k—S2 нулей. В силу ото- бражения (9.3.25) выпавшему ^-ичному символу а{ соответству- ет двоичный символ, находящийся либо в серии, в которой про- изведена вставка двоичного символа, либо в предшествующей се- рии (серией называется отрезок последовательности, состоящей из одинаковых символов). Кроме того* одной серии символов в последовательности а соответствует группа монотонно неубы- вающих или, напротив, монотонно убывающих символов в по- следовательности а и, зная величину выпавшего символа (она равна S4), можно однозначно восстановить слово а. Пример. Пусть <7= 10 и а=792541 — информационная последователь- ность, ей соответствует двоичная последовательность а= (110100). Найдем, учитывая r=]logio7[=l, / в \ а9 = I 2 j m°d W — 7> а?,= — (1 + О m°d 10 = 2> 4=1 / (k \ 2 ] m°d 10 = 8, Оц = 0, a12 = 1. J Таким образом, кодовое слово десятичного систематического кода, исправ- ляющего одиночные вставки или выпадения, имеет вид а=79*2541227801. Дли- на кода п=12, число информационных символов k=6. Предположим, что в слове а произошло выпадение одного символа и было принято слово а'=92541227801. Поскольку ац'=1 и ав=а7'=2 считаем, что произошло выпадение информационного символа. Находим по информационной последо- вательности а'=92541 соответствующую ей двоичную последовательность <а'= 10100. Вычисляем синдромы Sx = (8-(9-V 2 + 5 + 4+ l))mod 10 = 7 и S2 = (7 - (Ь1+3-l)mod 10- = 3 и вес w (а') = 2. Так как S2>w(a'), считаем, что в последовательности а' выпал символ 1. Вставляем символ 1 так, чтобы правее него было k—5г=6—3^=3 нуля. По- лучаем а= 110100. Поскольку в двоичной последовательности. произведена вставка единицы в первой серии, то делаем вывод, что выпадение произошло на одной из позиций, соответствующих первой серии. Учитывая, что значение выпавшего символа равно Si=7, делаем вывод, что выпал первый информа- ционный символ и. кодовое слово а=792541227801. ЗАМЕЧАНИЯ 9.1. Таблица 9.1 построена с использованием [79, 97, 171]. 9,2. Методы обнаружения ошибок оператора с помощью весовых кодов рассматривались в работах Бекли [97], Уайлда [171], Эндрью [89], Ричард- сода [160], Бригса-[99, 100], Тана и Лама [1671, Гера [130], Б. Б. Тимо- феева и В. А. Литвинова [79] ~и др. , ' - .. 9,3. Все ссылки даны в тексте.
ЛИТЕРАТУРА 1. Авиженис А. Отказоустойчивость — свойство, обеспечивающее постоян?- ную работоспособность цифровых систем — ТИИЭР, 1978, т. 66, № 101. с. 3—25. 2. Акушский И. Я., Юдицкий Д. И. Машинная арифметика в остаточных: классах. М.: Сов. радио, 1968. 3. Амербаев В. М. Теоретические основы машинной арифметики. Алма-Атаг Наука, 1976. 4. Ахо А., Хопкрофт Дж., Ульман Дж. Построение й анализ вычислитель- ных алгоритмов. М.: Мир, 1979. 5. Балабанов В. Г. Актуальные проблемы подготовки машинных носителей информации для ЭВМ.— УСиМ, 1979, № 3, с. 691—73. 6. Берлекэмп Э. Алгебраическая теория кодирования. М.: Мир, 1971. 7. Берман С. Д., Юданина А. Б. Коды с обобщенным мажоритарным деко- дированием и сверточные коды.— ППИ, 1970, т. 6, № <1, с. 6—9. 8. Блох Э. Л., Зяблое В. В. Обобщенные каскадные коды. М.: Связь, 1976- 9. Бояринов И. М. Класс циклическйх кодов, исправляющих пакеты ошибок: без пропусков.— ППИ, 1970, т. 6, № 4, с. 91—93. 10. Бояринов И. М. О кодах с неравной защитой символов.— В кн.: Тр_ V конф, по теории кодирования и передачи информации: Тез. докл. Горь- кий. М.: Наука, 1972, ч. II, с. 22—24. 11. Бояринов И. М. О декодировании AN-кодов, исправляющих пакеты оши- бок.— ППИ, 1972, т. 8, № 2, с. 111—112. 12. Бояринов И. М. О кодах, локализующих ошибки.— Проблемы управле- ния и теории информации, 1972, т. 1 (3/4), с. 277—286. 13. Бояринов И. М. О кодах, исправляющих пакеты ошибок с ограниченной^ плотностью.— ППИ, 1973, т. 9, № 1, с. 104—107. 14. Бояринов И. М. Недвоичные арифметические коды с большим расстоя- нием.— ППИ, 1975, т. 11, № 9, с. 57—63. 15. Бояринов И. М. О сложности реализации некоторых циклических кодов^ исправляющих многократные независимые ошибки.— В кн.: Вопросы ки- бернетики. Кодирование и передача информации в вычислительных сетях М.: ВИНИТИ, 1977, с. 56—81. 16. Бояринов И. М. Об исправлении ошибок прямыми суммами итеративных: и каскадных кодов.— Докл. АН СССР, 1980, т. 252, № 3, с. 563^-565. 17. Бояринов И. М. Об одной конструкции линейных кодов с неравной за- щитой информационных символов.— ППИ, 1980, т. 16, № 2, с. 103—Ю7. 18. Бояринов И. NL Метод декодирования прямых сумм произведений кодов: и его применение.— ППИ, 1981, т. 17, № 2, с. 39—51. 19. Бояринов И. М. О декодировании линейных'кодов — соединений с не- равной защитой информационных символов.— В кн.: Тр. VIII Всесоюз^. конф, по теории кодирования и передаче информации: Тез. докл. Куйбы- шев. М.: ВИНИТИ, 1981, ч. II, с. 33—37. 20. Бояринов И. М., Дзодзуашвили А. Г. Коды, исправляющие пачки оши- бок.— Сообщ. АН ГССР, 1969, т. 56, № 1, с. 45—47. 21. Бояринов И. М., Кабатянский Г. А. Спектр весов арифметических кодов, с большим расстоянием.— В кн.: Тр. VI симпоз. по проблеме избыточно.- сти в информационных системах: Тез. докл. Л.: ЛИАП, 1974, ч. I, с. 6—12.. 22. Бояринов Й. М., Кабатянский Г. А. Арифметические (и, А)-коды над про- извольным основанием.— Докл, АН СССР, 1975, т. 221, № 4, с. 794—797~ 23. Бояринов Й. М., Кабатянский Г. А. Совершенные арифметические AN- коды, исправляющие одиночные ошибки.— ППИ, 1976, т. 12, № 1, с. 16— 23. 24. Бояринов И. М., Кабатянский Г. А. Арифметические итеративные кодыг. исправляющие независимые ошибки.— ППИ, 1979, т. 15, № I, с. 381—49.- 25. Бояринов И. М., Кацман Г. Л. Линейные коды с неравной защитой ин- формационных символов.— В кн.: Вопросы кибернетики: Проблемы из- 188
быточности в информационных системах. М.: ВИНИТИ, 1977, с. 60—91. 126. .Бояринов И. М., Кацман Г. Л. О. реализации линейных кодов на ЭВМ.— В кн.: Вопросы кибернетики: Кодирование и передача информации в вы- числительных сетях. М.: ВИНИТИ, 19'78, с. 110—118. 37. Бояринов И. М., Кацман Г. Л. Класс оптимальных двоичных линейных кодов с неравной защитой информационных символов.— В кн.: Тр. V Междунар. симпоз. по теории информации: Тез. докл. Тбилиси. М.: Наука, 191791, ч. I, с. 56—58. 38. Бояринов И. М„ Кацман Г. Л, О мажоритарном декодировании в один такт линейных блоковых кодов.— В кн.: Тр. V Всесоюз. школы-семинара по вычислительным сетям: Тез. докл. Владивосток. М.: ВИНИТИ, 1980, ч. IV, с. 68—73. 39. Бояринов И. М., Кацман Г. Л, Методы построения и реализации линей- ных кодов, исправляющих пакеты ошибок.— В кн.: Информационный об- мен в вычислительных сетях. М.: Наука, 1980, с. 168—194. .30. Бояринов И. М., Хабелашвили Г, И. Арифметические циклические кода, исправляющие пачки ошибок.—’Сообщ. АН ГССР, 1970, т. 60, № 1, с. 25—26. -31. Ван дер Варден Б. Л. Алгебра. М.: Наука, 1976. -32. Виноградов И. М. Основы теории чисел. М.: Наука, 1961. 33. ГалЛагер Р. Теория информации и надёжная связь. М.: Сов. радио, 1974. 34. Геворкян Д. Н. О недвоичных кодах с фиксированным расстоянием.— В кн: Тр. V Междунар. симпоз. по теории информации: Тез. докл. Тби- лиси. М.: Наука, 1979, ч. I, с. 93—96. 35. Гриценко В. М. Недвоичные арифметические корректирующие коды.— ППИ, 1969, т. 5, № 4, 19—24. 36. Гриценко В. М. Синтез AN-кодов, исправляющих одиночные ошибки.— ППИ, 1976, т. 12, № 3, с. 13—19. 37. Давыдов А. А. Повышение надежности хранения информации с помощью программно-реализуемых корректирующих кодов.— АиТ, 1973,. № 1, с. 153—160. 38. Давыдов А. А. Исправление ошибок при хранении и передаче инфор- мации в управляющих системах с вычислительными машинами.— АиТ, 1973, № 10, с. 116—*127. 39. Дадаева И. Г. Метрика для остаточных кодов.— Изв. АН КазССР. Сер. физ.-мат., 1976, № 3, с. 18—24. 40. Дадаев Ю. Г. Арифметические разделимые коды с исправлением незави- симых ошибок.— Изв. АН СССР. ТК, 1965, № 6, с. 84—93. -41. Дадаев Ю. Г. К теории циклических арифметических кодов.— ППИ, 1970, т. 6, № 1, с. 45—51. 42. Дадаев Ю. Г. Циклическая структура AN-кодов.— ППИ, 1970, т. 6, с. 16—26. 43. Дадаев Ю. Г. К задаче определения минимальных расстояний цикличе- ских AN-кодов.— ППИ, 1974, т. 10, № 1, с. 29—32. 44. Дадаев Ю. Г. Помехоустойчивое кодирование в вычислительных маши- нах.— В кн.: Вопросы кибернетики: Кодирование и передача информации в вычислительных сетях. М.: ВИНИТИ, 1977, с. 30—35. 45. Дадаев Ю. Г. Теория арифметических кодов. М.: Радио и связь, 1981. 46. Дынькин В. Н., Тененгольц Г. М., Хабелашвили Г. И. Об одном классе циклических арифметических кодов.— Сообщ. АН ГССР, 1969, т. 55, № 3, с. 533—536. 47. Дыньйин В. Н., Тогонидзе В. А. Циклические коды с неравной защитой символов.— ППИ, 1976, т. 12, № 1, с. 24—28. 48. Ерош И. Л., Ерош С. Л. Арифметические коды с исправлением много- кратных ошибок.—ППИ, 1967, т. 3, № 4, с. 72—80. 49. Зайцев Г. В., Зиновьев В, А., Семаков Н. В. Коды с минимальной плот- ностью проверок для исправления байтов дефектов, ошибок и стира- ний.— В кн.: Тр. V Междунар. симпоз. по теории информации: Тез. докл. Тбилиси. М.: Наука, 1979i, ч. I, с. 153—156. 50. Зиновьев В. А. Обобщенные каскадные коды ддя каналов с пакетами ошибок и независимыми ошибками.— ППИ, 1981, т. 17, № 4, с. 53—62. 189
51. Зиновьев В. А., Зяблое В. В. Коды с неравной защитой информационных символов.— ППИ, 1979, т. 15, № 3, с. 50—60. 52. Зиновьев В. А., Зяблое В. В. Исправление пакетов ошибок и независимых ошибок обобщенными каскадными кодами.— ППИ, 1979, т. 15, №2» с. 58—70. 53. Зяблое В. В. Алгоритмы поэтапного декодирования итерированных ж каскадных кодов.— В кн.: Передача цифровой информации по канала»® с памятью. М.: Наука, 1970, с. 86—92. 54. Зяблое В. В. Анализ корректирующих свойств итерированных и каскад- ных кодов.— В кн.: Передача цифровой информации по каналам .с па- мятью. М.: Наука, 1970, с. 76—85. 55. Зяблое В. В. Оценка сложности построения двоичных линейных каскад- ных кодов.— ППИ, 1971, т. 7, № 1, с. £—13. 56. Зяблое В. В. Оптимизация алгоритмов каскадного декодирования.— ППИ, 1973, т. 9, № 1, с. 26-32. 57. Кабатянский Г. А. Об арифметических кодах — произведениях над про- извольным основанием.— В кн.: Вопросы кибернетики: Кодирование и пе- редача информации в вычислительных сетях. М.1 ВИНИТИ, 1978, с. 125— 131. 58. Кармазин М. А. Об одном классе корректирующих кодов.— Докл. АН СССР, 1964, 157, № 2, с. 303—306. 59. Касами Т.} Токура М„ Ивадари Е., Инагаки Я. Теория кодирования. М.: Мир, 1978. 60. Кириллов А. А. Коды с произвольным основанием, исправляющие оди- ночные ошибки.— В кн.: Проблемы кибернетики. М.: Наука, 1970, вып. 22; с. 282—287. 61. Кнут Д, Искусство программирования для ЭВМ: Получисленные алгон ритмы. М.: Мир, 1977, т. 2. 62. Колесник В. д., Мирончиков Е. Т. Декодирование циклических кодоы М.: Связь, 1968. 63. Кондратьев В. Н., Трофимов И. Н. Корректирующие коды с расстояние»® не меньше 5 по Питерсону.— Изв. АН СССР.. ТК, 1969, № 3, с. 95—1001 64. Кострикин А. И. Введение в алгебру. М.: Наука, 1977. 65. Левенштейн В. И. Элементы теории кодирования.— В кн.: Дискретная? математика и математические вопросы кибернетики. М.: Наука, 1974; с. 207—305. 66. Мак-Вильямс. Ф., Дою. Слоэн Н. Дою. А. Теория кодов, исправляющих ошибки. М.: Связь, 1979. 67. Максимов Е. М. Недвоичный. код, исправляющий одиночные выпадения символов.— В кн.: Моделирование и управление в развивающихся систе- мах. М.: Наука, 1978, с. 139—143. 68. Марчуков А. С. О суммировании произведений кодов.— ППИ, 1968; т. 4; №2, с. 11—20. 69. Мегрелишвили Р. П., Николайшвили Т. Г., Фам Хонг Тхай. Класс кодов,, исправляющих пакеты ошибок.— Сообщ. АН ГССР, 1976, т. 81, № 2^ с. 337—339. . ' 70. Мегрелишвили. Р. П., Николайшвили Т. Г. Коды с неравной защитой си»®» волов.— Тр./Тбил% гос. ун-т, 1976, №,168, с. 85—88. 71. Месси Дою. Пороговое декодирование. М.: Мир, 1966. 72. Питерсон У. Коды, исправляющие ошибки. М.: Мир, 1964. 73. Питерсон У., Уэлдон Э. Коды, исправляющие ошибки. М.: Мир, 1976. 74. Система ИБМ/360. Введение в запоминающие устройства прямого до- ступа и методы организации данных. М.: Статистика, 1974. 75. Соколов О. Б., Еникеев И. И. Класс арифметических кодов с исправле*- нием нескольких ошибок.— ППИ, 1967, т. 3, № 3, с. 73^—75. 76. Тауглих Г. Л., Тененгольц Г. М. Коды, йсправляющие пакеты ошибок- при передаче информации и при выполнении арифметических операций.— ППИ, 1974, т. 10, № 1, с. 33—38. 77. Тененгольц Г. М., Давыдов А. А., Тауглих Г. Л. Код, исправляющий па- кеты ошибок, и его использование при обмене информацией между ввит числительными машинами.— ППИ, 1972, т. 8, № 3, е. 27—37. 190
"78 . Тенеголъц Г. М,, Дынькин В. И. Циклические коды, исправляющие ариф- метические ошибки.— ППИ, 1970, т. 6, № 3, с. 38—42. *79 . Тимофеев Б. Б., Литвинов В, А. Методы обнаружения ошибок в алфа- витно-цифровых последовательностях на этапе подготовки и ввода дан- ных в ЭВМ.—УС и М, 1977, № 4, с. 20—27. 80. Тимофеев Б. Б., Литвинов В. А., Жолудь П. В., Крамаренко В. В. Пакет программ* контроля Достоверности информации в АСУ.— УС и М, 1979, 5, с. 46—51.. <81. Тончев В, Д. Графы ранга 3, блок-схемы и коды с неравной защитой символов.— ППИ, 1981, т. 17, № 2, с. 19—25. 82. Торгашев В. А. Система остаточных классов и надежность ЦВМ.— М.: Сов. радио, 1973. #3. Форни Д. Каскадные коды. М.: Мир, 1970. 84> Хассе Г. Лекции по теории чисел. М.: ИЛ, 1953. 85. Цыбулевский И, Е. Ошибочные реакции человека-оператора.— М.: Сбв. радио, 1979. 86. Четвериков В. Н. Подготовка и телеобработка данных . в АСУ.— М.: Высш, школа, 1981. * 87. Элиас IL Безошибочное кодирование.— В кн.: Коды с обнаружением ; и исправлением ошибок. М.: ИЛ, 1956, с. 59—71. 88. Abramson N. A class of systematic codes for non-independent errors.— IRE Trans. Inform. Theory, 1959, N 2, p. 150—157. *89. Andrew A., M. A variant of modulus 11 checking.— Comput. Bull., 1970, N 10, p: 261—265., •*90. Arazi B. The optimal burst-error correcting capability of codes generated by (x₽ + l) (x« + l) (x+1).— Inform, and Control, 1978, Vol. 39, N 3, p. 326— 334. 91 . Arora R. K, Sharma Saroj. Correction of multiple errors and detection of additive overflow in residue code.— Inform, and Control, 1978, vol. 39, N h p. 46—54. 92 .' Avizienis A. Arithmetic error codes: cost and .effectiveness studies for ap- plication in digital system design.— IEEE Trans. Comput., 1971, vol. 20, N 5, p. 1322—1330. * 93. Baht L. R., Chien R.'T. Multiple-burst-error correction by threshold deco- ding.— Inform, and Control, 1969, vol. 15, N 2, p. 397—406. * 94. Baht L. R., Chien R. T. On Gilbert burst-error-correcting codes.— IEEE Trans. Inform. Theory, 1969, vol. 15, N 3, p. 431—433. * 95. Barrows J. T. A. New method for constructing multiple error correcting linear residue codes.— Coordinated Sci. Lab. Univ, of Illinois, Urbana» 1966, rep. 277. * 96. Barsi F., Maestrini P. Error codes constructed in residue number systems with non-pairwise-prime moduli.— Inform, and Control, 1978, vol. 46, N 1, p. 16—25. 97. Beckley D. F. On optimum system with «modulus 11».— Comput. Bull., 1967, vol. 11, N 3, p. 213—215. 98. Boyarinov I. M., Katsman G. L. Linear unequal error protection codes.— IEEE Trans. Inform. Theory, 1981, vol. 27, N 2, p. 168—175. '99 . Briggs J. Modulus 11 check digits systems.— Comput. Bull., 1970, vol. 14, N 8, p. 266—269. 100. Briggs J. Weights for modules 97 systems.— Comput. Bull., 1971, vol. 15, N 2, p. 79. 101. Brown D. T. Error detecting and correcting binary codes for arithmetic operations.— IRE Trans., 1960, vol. 9, N 3, p. 333—337. 102. Burton H. (У. Some asymptotically optimal burst-correcting codes and their relation to single error-correcting Reed—Solomon codes.— IEEE Trans. Inform. Theory, 1971, vol. 17, N 1, p. 92—95. 103. Burton H. O., Weldon E. J. Cyclic product codes.— IEEE Trans. Inform. Theory, 1965, vol. 11, N 2, p. 433—439. 104. Chang S. H., Tsao-Wu N. T. Discussion on «Arithmetic codes with large distance».— IEEE Trans. Inform. Theory, 1968, vol. 14, N 1, p. 174.—176. 105. Chang S. H., Tsao-Wu N. Distance and structure of cyclic arithmetic co- 191
des.— In the book: Proc. Hawaii Intern. Conf. Syst. Sci., 1968, p. 463— 466. 106. Chang S. H., Weng L. J. Error-locating codes.— IEEE Intern. Convent.. Rec., 1965, pt 7, p. 252—258. 107. Chen C. L., Chien R. T., Liu С. K. On majority-logic-decodable arithmetic codes.— IEEE Trans. Inform. Theory, 1973, vol’ 19, N 5, p. 678—682. 108. Chien R. T, Burst-correcting codes with high-speed decoding.— IEEE Trans.. Inform. Theory, 1969, vol. 15, N 1, p. 109—112. 109. Chien R. T., Hong S. J., Prepar ata F. P. Some results in the theory of arith- metric codes.— Inform, and Control, 1971, vol. 19, N 3, p. 246—264. 110. Chien R. T., Spencer W. N. Dual product codes for correction of multipt low-density burst errors.— IEEE Trans. Inform. Theory, 1973, vol. 19, N 5^ .p. 672—677. 111. Chien R. T., Tang D. T. On definitions of a burst.— IBM J. Res. Develop.,. ° 1965, vol. 9, N 4, p. 292—293. 112. Clark W. E., Liang J. J. On arithmetic weight for a general radix repre- sentation of integers.—IEEE Trans. Inform. Theory, 1973, 19, N 6, p. 823— 826. 113. Clark W. E., Liang J. J. On modular weight and cyclic nonadjacent forms? for arithmetic codes.— IEEE Trans. Inform. Theory, 1974, vol. 20, N 6^ p. 764—770. 114. Clark W. E., Liang J. J. Weak radix representation and cyclic codes over Euclidean domains —Comm. Algebra,, 1976 vol. 4, N 11, p. 999—1028. 115. Corr F. Multiple burst detection.—Proc. IRE, 1961, vol. 49, N 8, p. 1337. 116. Ecker A. How to compute the minimum distance for cyclic AN-codes over an arbitrary base. I. Elementary methods.— Inform, and Control, 1980,. vol. 46, N 3, p. 219—240. 117. Elspas B., Short R. A. A note on optimum burst-error-correcting codes.— IRE Trans. Inform. Theory, 1962, vol. 8, N 1, p. 39—42. 118. Fire P. A class of multiple-error-correcting binary codes for non-indepen- dent errors.— Sylvania Reconnaissance Systems Lab., Mountain View, Cal.„ 1959, Sylvania Rep. RSL-E-2. 119. , Garner H. L. Error codes for arithmetic operations.— IEEE Trans. Elect- ron. Comput., 1966, vol. 15, N 8, p. 763—770. 120. Gilbert E. N. A problem in binary encoding.— Proc. Symp. Appl. Math.,. 1960, vol. 10, p. 291—297. 121. Goethals J. M. Cyclic error-locating codes.— Inform, and Control, 1967*,. vol. 10, N 4, p. 376—385. 122. Gore W. C. The equivalence of L-step orthogonalization and Reed decoding procedure.— IEEE Trans. Inform. Theory, 1969, vol. 15, N 1, p. 184—186. 123. Gore W. E. Further results on product codes.— IEEE Trans. Inform. Theo- ry, 1970, vol. 16, N 4, p. 446—451. * 124. Gore W. C., Kilgus С. C. Cyclic codes with unequal error protection.— IEEE Trans. Inform. Theory, 1971, vol. 17, N 2, p. 214—215. 125. Goto A. A note on perfect decimal AN codes.— Inform, and Control, 1975,. vol. 29, N 4, p. 385—384. , 126. Goto M., Eukumura T. The distance of arithmetic codes.— Mem. Fac. Eng- Nagoya Univ., 1968, vol. 20, N 2, p. 474—482. 127. Goto M., Fukumura T. Nonbinary codes with distance not less than five.— IEEE Trans. Inform. Theory, 1973, vol. 19, N 1, p. 129—134. 128. Goto M., Fukumura T. Perfect nonbinary AN-codes with distance three.— Inform, and Control, 1975, vol. 27, N 4, p. 336—348. 129. Hartman W. P. Modular arithmetic weight and cyclic shifting.—Inform- and Control, 1972, vol..21, N 4, p. 339—343. 130. Herr J. R. Self-checking number system.—Comput. Des., 1974, vol. 13; N 1, p. 85—91. 131. Hong S. J., Patel A. A general class of maximal codes for computer appli- cations.—IEEE Trans. Comput, 1972, vol. 21, N 12, p. 1322—1331. 132. Hsu H. T., Kasami T., Chien R. T. Error-correcting codes for a compound channel.— IEEE Trans. Inform. Theory, 1968, vol. 14, N 1, p. 135—139. 192
133. Hwang T. У., Hartman С. R. Р. Some results on arithmetic codes of com- posite length.— IEEE Trans. Inform. Theory, 1978, vol. 24, N 1, p. 93—99^ 134. Iwadare У. A class of high-speed decodable burst-correcting codes.— IEEE Trans. Inform. Theory, 1972, vol. 18, N 6, p. 817—821. 135. Justesen J. A. Class of constructive asymptotically good algebraric codes.— IEEE Trans. Inform. Theory, 1972, vol. 18, N 5, p. 652—656. 136. Kasami T., Matoba S. Some efficient shortened cyclic codes for burst- error-correction.— IEEE Trans. Inform. Theory, 1964, vol. 10, N 2, p. 252— 253. 137. Kilgus С. C., Gore W. C. A class of cyclic unequal — error-protection co- des.— IEEE Trans. Inform. Theory, 1972, vol. 18, N 5, p. 687—690. 138. Lin S., Weldon E, J. Futher results on cyclic product codes.— IEEE Trans. Inform. Theory, 1970, vol. 16, N 4, p. 452—459. 139. Maldelbaum D. Arithmetic codes with large distance.— IEEE Trans. In- form. Theory, 1967, vol. 13, N 2, p. 237—242. 140. Mandelbaum D. Error correction in residue arithmetic.— IEEE Trans. Com- put., 1972, vol. 21, N 6, p. 538—545. 141. Mandelbaum D. Unequal error protection codes derived from difference sets.— IEEE Trans. Inform. Theory, 1972, vol. 18, N 5, p. 686—687. 142. Mandelbaum D. On a class of arithmetic codes and a decoding algorithm.— IEEE Trans. Inform. Theory, 1976, vol. 22, N 1, p. 85—87. . 143. Masnick B., Wolf J. On linear unequal error protection codes.— IEEE Trans. Inform. Theory, 1967, vol. 13, N 4, p. 600—607. 144. Massey J, L. Shift register synthesis and BCH decoding.— IEEE Trans._ Inform. Theory, 1969, vol. 15, N 1, p. 122—128. 145. Massey J. L., Garcia O. N. Error correcting codes in computer arithmetic- in: Advances in information systems science. N. Y.: Plenum, 1972, vol. 4^ p. 273—326. 1, 46. Melas С, M., Gorog E. A note on extending certain codes to correct error bursts in longer messages.— IBM J. Res. Develop., 1963, vol. 7, N 2; p. 15.1—152. 147. Neumann P. G. A note on Gilbert burst-correcting codes.— IEEE Trans. Inform. Theory, 1965, vol. 11, N 4, p. 377—384. 148. Neumann P. G>, Rao T. R, N. Error-correcting codes for byte-organized arithmetic processors.— IEEE Trans. Comput., 1975, vol. 24, N 3, p. 226— 232. 149. Peterson W. W. On checking and adder—IBM. J. Res. Develop., 1958,. N 2, p. 166—168. 150. Preparata F. P. On the representation of integers in non-adjacent form.— SIAM J. Appl. Math., 1971, vol. 21, N 4, p. 630—635. 151. Rao T. R. N. Biresidue error-correcting codes for computer arithmetic.— IEEE Trans. Comput., 1970, vol. 19, N 3, p. 398—402. 152. Rao T. R. N. Error correction in adders using systematic subcodes.— IEEE Trans. Comput, 1972, vol. 21, N 3, p. 254—259. 153. Rao T. R. N. Error coding for arithmetic processor. N. Y.: Acad, press, 1974. 154. Rao T. R. N., Garcia О. M. Cyclic and multiresidual codes for arithmetic, operations.— IEEE Trans. Inform. Theory, 1971, vol. 17, N 1, p. 85—91. 155. Rao T. R. N., Trehan A, K. Single-error-correcting nonbinary arithmetic- ‘ codes.— IEEE Trans. Inform. Theory, 1970, vol. 16, N 5, p. 604—608. 156. Reddy S. M., Robinson J. R. Random and burst correction by iterated co- des.—IEEE Trans. Inform. Theory, 1972, vol. 18, N 1, p. 182—185. 157. Reed I. S.'A class of multiple-error-correcting codes and the decoding: scheme.— IEEE Trans. Inform. Theory, 1954, vol. 4, N 1, p. 38—49. 158. Reiger S. H. Codes for the correction of «clustered» errors.— IRE Trans. Inform. Theory, 1960, vol. 6, N 1, p. 16—21. 159. Reitwiesner G. W. Binary arithmetic.— In: Advances in computers. N. Y.: Acad, press, 1960, vol. 1, p. 231—308. 160. Richardson M. Check digits.— Comput. Bull., 1970, vol. 14, N 10, p. 359.. 161. Rudolf L. D„ Hartmann C. R. P., Hwang T. У., Due N. Q. Algebraic analog decoding of linear binary codes.— IEEE Trans. Inform. Theory, 1979, voh 25, N 4, p. 430—440. 19$
162. Schilinger A. G, A class of solid burst error correcting codes.— In: Intern. Conf. Microwaves, Circuit Theory and Inform. Theory. Tokyo, 1964, p. 13—14. 163. Sethi A. S., Rajaraman V., Kenjale P. S. An error-correcting coding scheme for alphanumeric data.— Inform. Process. Lett., 1978. N 2, p. 72—77. 164. Srinivasan С, V. Codes for error correction in high-speed .memory system. Pt II: Correction of temporary and catastrophic errors.—IEEE Trans. Com- put., 1971, vol. 20, N 12, p. 1514—1520.. 165. Szabo N. S., Tanaka R. I. Residue arithmetic and its applications to com- puter technology. N. Y.: McGraw-Hill, 1967. . 166. Tanaka H., Futusawa K., Kaneku S. A novel approach to soft decision de- coding of threshold decodable codes.— IEEE Trans. Inform. Theory, 1980, vol. 26, p. 244—246. 467. Tang D. T., Lum V. J, Error control for terminal with human operations.— IBM J. Res. Develop, 1970, vol. 14, N 4, p. 406—416. 468. Tsao-Wu N. T., Chang. S. H. On the evaluation of minimum distance of binary arithmetic cyclic codes.—«IEEE Trans. Inform. Theory' 1969, vol. 15, N 5, p. 628—631. 169. Wainberg S. Wolf I. K. Burst decoding of binary block codes on Q-ary output channels — IEEE Trans. Inform. Theory, 1972, vol. 18, N 5, p. 684— 686. 170. Weldon E. J. Jr. Decoding binary block codes on Q-ary output channels.— IEEE Trans. Inform. Theory, 1971, vol. 16, N, 6, p. 613—718. ' •** j/i. Wild-W. G. The theory of modulus N check digits systems.— Comput. Bull, 1968, vol. 12, N 8, p. 309—311. . 472. ' Wolf J. K. On an extended class of error-locating codes.— Inform, and Control, 1965.дго1. 8, N 2, р.ДбЗ—169. „ - > . . 173. Wolf J. K., Elspas B. Error-locating codes —a new concept in error con- . trol — IEEE Trans. Inform. Theory, 1963, vol. 9, N 2,4 p. 20—28. >74. Wyner A. D. A note on a class of binary cyclic codes which correct solid- burst errors.— IBM Develop, 1964, vol. 8, N 1, p. 68—69. 475. Yu C. C>H., Costello D. J. Generalized minimum distance decoding algo- rithms for Q-ary output channels.— IEEE Trans. Inform. Theory, 1980> vol. 26, N 2, p. 238—243.
1 ОГЛАВЛЕНИЕ Введение..................................................... & Глава I. Определения и свойства арифметических кодов 5* 1.1. Минимальные представления и арифметический вес . 5 1.2. Арифметические AW-коды......................; . 9 1.3. Совершенные AW-коды, исправляющие одиночные ошибки 12* Глава 2. Арифметические циклические (/г, А)-коды .... 20 2.1. Свойства (п, А)-кодов..............................20* 2.2. (и, А)-коды, исправляющие одиночные ошибки, модули и пакеты ошибок . .......................25 2.3. (и, А)-коды с большим расстоянием...................28 Глава 3. Арифметические итеративные (п,А)-коды . 33' 3.1. Определение и свойства арифметических итеративных (и, А)-кодов............................................33‘ 3.2. Мажоритарное декодирование арифметических итера- тивных (n, А<т)) -кодов..................................37 3.3. Поэтапный алгоритм декодирования арифметических итеративных (n, А(т)) -кодов............................ 40 3.4. Арифметические (я, А)-коды, двойственные итеративным 43* Глава 4. Арифметические многоостаточные коды и коды в систе- ме остаточных классов.........................................48 4.1. Арифметические коды в системе остаточных классов 4.2. Декодирование арифметическйх кодов в остаточных классах....................,......................... 4.3. Арифметические многоостаточные коды............. Глава 5. Линейные коды, исправляющие независимые ошибки 5.1. Определение и свойства линейных кодов . . . . 5.2. Циклические коды и коды Рида—Соломона 5.3. Мажоритарное декодирование линейных кодов 5.4. Декодирование линейных кодов в обобщенной метрике Глава 6. Методы комбинирования линейных кодов . . . . 6. Г. Прямая сумма, перемежение, расширение и соединение кодов ...... ...................... 6.2. Произведения .кодов............................. 6.3. Прямые суммы произведений кодов................. Глава 7. Линейные коды, исправляющие группирующиеся ошибки 7.1. Модульные коды.................................. 7.2. Линейные коды, локализующие ошибки . . . . 7.3. Линейные коды, исправляющие пакеты ошибок Глава 8. Линейные коды с неравной защитой информационных символов.................................................. 8.1. Определения и основные свойства линейных кодов с неравной защитой информационных символов 8.2. Оптимальные двоичные линейные систематические коды с неравной защитой информационных символов 8.3. Итеративные и каскадные конструкции линейных кодов с неравной защитой информационных символов Глава 9. Применение числовых кодов для обнаружения и исправ- ления ошибок оператора.................................... 9.1. Характер и виды ошибок оператора................ 9.2. Методы обнаружения ошибок....................... 9.3. Методы исправления ошибок....................... • Литература.............................................. 48 53 57“ 60 69 66 79 85. 91 91 96 103 ЮТ 108 118 12Т 139 139 145' 155 169 169 174 17Г 18&
ИГОРЬ МАРКОВИЧ БОЯРИНОВ ПОМЕХОУСТОЙЧИВОЕ КОДИРОВАНИЕ ЧИСЛОВОЙ ИНФОРМАЦИИ Утверждено к печати Научным советом по комплексной проблеме «Кибернетика» АН СССР Редактор А. А. Кавецкая Художник А. М. Дроговой Художественный редактор Н. Н. Власик Технический редактор А. М. Сатарова Корректоры Т. С. Козлова, И. А. Талалай ИБ № 27233 Сдано'в набор 02.02.83 Подписано к печати 19.04.83 Т-09504. Формат 60Х901/1в Бумага, для глубокой печати Гарнитура литературная Печать высокая Усл. печ. л. 12,25. Усл. кр. отт. 12,5. Уч.-изд. л. 12,7 Тираж 2750 экз. Тип. зак. 4445 Цена 1 р. 30 к. Издательство «Наука» 117864 ГСП-7 Москва, В-485, Профсоюзная ул.,'90 2-я типография издательства «Наука» 121099, Москва, Г-99, Шубинский пер., 10
1 р. 30 к. ии 00 Р669