Аннотация
От редактора перевода
Предисловие к русскому изданию
Предисловие
1. ВВЕДЕНИЕ
1.2. История кодирования, контролирующего ошибки
1.3. Приложения
1.4. Основные понятия
1.5. Простейшие коды
Задачи
2. ВВЕДЕНИЕ В АЛГЕБРУ
2.2. Группы
2.3. Кольца
2.4. Поля
2.5. Векторные пространства
2.6. Линейная алгебра
Задачи
Замечания
3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ
3.2. Матричное описание линейных блоковых кодов
3.3. Стандартное расположение
3.4. Коды Хэмминга
3.5. Совершенные и квазисовершенные коды
3.6. Простые преобразования линейного кода
3.7. Коды Рида‒Маллера
Задачи
Замечания
4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА
4.2. Конечные поля, основанные на кольце целых чисел
4.3. Кольца многочленов
4.4. Конечные поля, основанные на кольцах многочленов
4.5. Примитивные элементы
4.6. Структура конечного поля
Задачи
Замечания
5. ЦИКЛИЧЕСКИЕ КОДЫ
5.2. Полиномиальное описание циклических кодов
5.3. Минимальные многочлены и сопряжения
5.4. Матричное описание циклических кодов
5.5. Коды Хэмминга как циклические коды
5.6. Циклические коды, исправляющие две ошибки
5.7. Циклические коды, исправляющие пакеты ошибок
5.8. Двоичный код Голея
5.9. Квадратично-вычетные коды
Задачи
Замечания
6. СХЕМНАЯ РЕАЛИЗАЦИЯ ЦИКЛИЧЕСКОГО КОДИРОВАНИЯ
6.2. Цифровые фильтры
6.3. Кодеры и декодеры на регистрах сдвига
6.4. Декодер Меггитта
6.5. Вылавливание ошибок
6.6. Укороченные циклические коды
6.7. Декодер Меггитта для кода Голея
Задачи
Замечания
7. КОДЫ БОУЗА‒ЧОУДХУРИ‒ХОКВИНГЕМА
7.2. Декодер Питерсона‒Горенстейна‒Цирлера
7.3. Коды Рида‒Соломона
7.4. Синтез авторегрессионных фильтров
7.5. Быстрое декодирование кодов БЧХ
7.6. Декодирование двоичных кодов БЧХ
7.7. Декодирование с помощью алгоритма Евклида
7.9. Коды Юстесена
Задачи
Замечания
8. КОДЫ, ОСНОВАННЫЕ НА СПЕКТРАЛЬНЫХ МЕТОДАХ
8.2. Ограничения сопряженности и идемпотенты
8.3. Спектральное описание циклических кодов
8.4. Расширенные коды Рида‒Соломона
8.5. Расширенные коды БЧХ
8.6. Альтернантные коды
8.7. Характеристики альтернантных кодов
8.8. Коды Гоппы
8.9. Коды Препараты
Задачи
Замечания
9. АЛГОРИТМЫ, ОСНОВАННЫЕ НА СПЕКТРАЛЬНЫХ МЕТОДАХ
9.2. Исправление стираний и ошибок
9.3. Декодирование расширенных кодов Рида‒Соломона
9.4. Декодирование расширенных кодов БЧХ
9.5. Декодирование во временной области
9.6. Декодирование за границей БЧХ
9.7. Декодирование альтернантных кодов
9.8. Вычисление преобразований в конечных полях
Задачи
Замечания
10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ
10.2. Китайские теоремы об остатках
10.3. Декодирование кода-произведения
10.4. Многомерные спектры
10.5. Быстрые коды БЧХ
10.6. Декодирование многомерных кодов
10.7. Длинные коды над малыми полями
Задачи
Замечания
11. БЫСТРЫЕ АЛГОРИТМЫ
11.2. Быстрые алгоритмы свертки
11.3. Быстрые преобразования Фурье
11.4. Алгоритмы Агарвала‒Кули вычисления сверток
11.5. Алгоритм Винограда быстрого преобразования Фурье
11.6. Ускоренный алгоритм Берлекэмпа‒Месси
11.7. Рекуррентный алгоритм Берлекэмпа‒Месси
11.8. Ускоренное декодирование кодов БЧХ
11.9. Свертка в суррогатных полях
Задачи
Замечания
12. СВЕРТОЧНЫЕ КОДЫ
12.2. Описание сверточных кодов с помощью многочленов
12.3. Исправление ошибок и понятия расстояния
12.4. Матричное описание сверточных кодов
12.5. Некоторые простые сверточные коды
12.6. Алгоритмы синдромного декодирования
12.7. Сверточные коды для исправления пакетов ошибок
12.8. Алгоритм декодирования Витерби
12.9. Алгоритмы поиска по решетке
Задачи
Замечания
1З. КОДЫ И АЛГОРИТМЫ ДЛЯ ДЕКОДИРОВАНИЯ МАЖОРИТАРНЫМ МЕТОДОМ
13.2. Схемы мажоритарного декодирования
13.3. Аффинные перестановки для циклических кодов
13.4. Циклические коды, основанные на перестановках
13.5. Сверточные коды с мажоритарным декодированием
13.6. Обобщенные коды Рида‒Маллера
13.7. Евклидово-геометрические коды
13.8. Проективно-геометрические коды
Задачи
Замечания
14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОНТРОЛИРУЮЩИХ ОШИБКИ КОДОВ
14.2. Вероятности ошибочного декодирования и неудачного декодирования
14.3. Распределение весов сверточных кодов
14.4. Границы минимального расстояния для блоковых кодов
14.5. Границы минимального расстояния для сверточных кодов
Задачи
Замечания
15. ЭФФЕКТИВНАЯ ПЕРЕДАЧА СИГНАЛОВ ПО ЗАШУМЛЕННЫМ КАНАЛАМ
15.2. Энергия на бит и частота ошибок на бит
15.3. Мягкое декодирование блоковых кодов
15.4. Мягкое декодирование сверточных кодов
15.5. Последовательное декодирование
Задачи
Замечания
Литература
Именной указатель
Предметный указатель
Выходные данные
Текст
                    ТЕОРИЯ И ПРАКТИКА КОДОВ,
КОНТРОЛИРУЮЩИХ ОШИБКИ


THEORY А ND Р РАСТ1СЕ OF ERROR СО NTROL CODE S RICH A К',0 Е. В LAH UT ADDISON-WESLEY РUBLISHING СОМРАNY READING, MASSACHUSETTS ME NLO PA КК, CALI РОК N IA LO NDO N AMSTERDAM DO N MI LLS, O NTA QlO SYDNEY КЕРЩМТЕ0 WITH CORRECTION 1984 
P. ÁËÅÉXÓT ТЕОРИЯ M ПРАКТИКА КОНТРОЛИРУЮЩИХ ОШИБКИ ПЕРЕВОД С АНГЛИЙСКОГО И. И. ГРУШКО и В. М. БЛИНОВСКОГО ПОД РЕДАКЦИЕЙ К. Ш. ЗИГАНГИРОВА МОСКВА „МИР" 1986 
ББК 32.811 Б68 УДК 519.725 Блейхут P. Монография известного американского специалиста, адресованная тем, кто непосредственно разрабатывает программы и аппаратуру помехоустойчивого кодирования. В ней впервые излагается разработанный автором единый подход к коднрованню и декодированию, основанный на дискретном преобразовании Фурье. Для чтения книги достаточно знать математику в объеме втузовских программ (первые главы содержат необходимые сведения по алгебре). Она может служить и основой для курсов лекций, и пособием при первоначальном ознакомлении с предметом. Для математиков-прикладников, программистов и инженеров, а также для аспирантов и студентов вузов. 1502000000 ‒ 183 041 (01) ‒ 86 ББК 32.811 Редакция литературы по математическим наукам Copyright ф 1983 by Addison-Wesley РиЬ1Ы! пд Company, Inc. © перевод на русский язык, «Мир», 1986 Б68 Теория и практика кодов, контролирующих ошибки: Пер. с англ. М.: Мир, 1986. ‒ 576 с., ил. 
ОТ РЕДАКТОРА Л ЕРЕВОДА Книга P. Блейхута посвящена разделу науки, за которым традици- онно закреплено название «теория кодов, исправляющих ошибки». В последнее время, однако, в зарубежной литературе все чаще используется более точный термин «коды, контролирующие ошибки», поскольку эта теория изучает не только исправление, но и обнаружение ошибок. В отличие от традиционных курсов теории кодирования, адресованных в первую очередь специали- стам в области передачи информации, данная книга ориентиро- вана на проектировщиков цифровых комплексов обработки дан- ных независимо от того, для чего предназначены эти комплексы: для передачи данных, для их хранения или для других операций над ними. Это условие наложило свой отпечаток на структуру книги. В ней почти не рассматриваются вопросы оптимальности предла- гаемых методов кодирования, а вопросы их схемной реализации исследуются более подробно, чем это обычно принято. Хотя книга в первую очередь адресована читателю с инженерным образова- нием и формально не требует от него предварительного знакомства с высшей алгеброй, ее математический уровень достаточно высок (отметим, что в начале книги имеются специальные главы, изла- гающие сведения из алгебры). Центральное место в книге занимает спектральная теория циклических кодов, в развитие которой автор внес существенный вклад. Достаточно отметить модификацию автором процедуры Бер- лекэмпа ‒ Месси, позволившую сократить число операций декоди- рования с О (и') до О (п log n). Эта теория излагается в гл. 8‒ 11 и частично в гл. 13 на основе дискретного преобразования Фурье (ДПФ) в конечных полях. Хотя связь ДПФ с циклическими ко- дами была известна и ранее, P. Блейхут был первым, KTQ заметил большие потенциальные возможности такого подхода. Этот под- ход не только позволяет упростить процедуру декодирования, но и способствует более глубокому пониманию теории циклических кодов. В основном книга посвящена теории блоковых кодов, и автор излагает ее превосходно. Теория сверточных кодов излагается 
OT РЕДА KTOPA П ЕРЕВОДА несколько бегло и не всегда достаточно четко. В частности, ми- нимальное расстояние 'сверточных~кодов, введенное в гл. 12, мало связано с реальными характеристиками этих кодов, а их теоретическое описание неточно. Некоторые неточности содержит и гл. 15, посвященная связи модуляции и кодирования. В списке литературы неполно отражен вклад в теорию коди- рования советских ученых, так что в отдельных случаях перевод- чики (гл. 1, 2, 4 ‒ 6 и 8 15 переведены И. И. Грушко, гл. 3 и 7 В. М. Блиновским) сочли необходимым дать соответству- ющие комментарии. При переводе учтены исправления, внесенные автором в первоначальный вариант книги, и исправлены заме- ченные опечатки. Переводчики и редактор выражают признательность автору книги за сотрудничество в процессе перевода книги, в част- ности за любезно присланное им исправленное ее издание. Соответствующие изменения внесены в перевод в корректуре. К. И. Зигангирав 
ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЙ) Автор переведенной на иностранный язык книги чувствует себя как отец, сын которого покидает дом, чтобы начать собствен- ную жизнь: к чувству гордости примешивается сознание, что книга начинает новую жизнь, которую ты никогда не узнаешь. Русское издание готовилось специалистами высокого класса: редактором Камилем Зигангировым и переводчиками Инной Гру- шко и Владимиром Блиновским. Я очень благодарен им за боль- шую работу по переводу книги «Теория и практика кодов, контро- лирующих ошибки» на русский язык. Используя возможность, предоставленную мне издательством «Мир», я обращаюсь к советскому читателю. Он несомненно за- метит, что книга адресована как инженерам, так и математикам, работающим в области приложений, и что в ней декодерам и ал- горитмам декодирования уделяется гораздо больше внимания, чем в других книгах. Это связано отчасти с моими научными интере- сами и отчасти с широким распространением декодеров, исправ- ляющих ошибки, за последнее десятилетие. Найти хороший алго- ритм декодирования сейчас TBK же важно, как и найти хороший код. Читатель обнаружит также, что в книге недостаточно отра- жен крупный вклад советских исследователей в эту область. Ча- стично это объясняется моей неосведомленностью, частично тем, что во многих советских работах принят более высокий уровень математической строгости, чем принятый в данной книге, и, нако- нец, тем, что советские исследователи не столь интенсивно ра- ботают в области алгоритмов декодирования, которая интересует меня больше всего. Я хотел бы поблагодарить переводчиков и редактора за ис- правление многочисленных ошибок, которые онп нашли, и при- нимаю ответственность за оставшиеся ошибки. P. 9. Блейхдт 
ОДНИ ЛИШЬ СЛОВА ‒ Э70 НИЧТО ‒ девиз Королевского общества ПРЕДИСЛОВИЕ В настоящее время невозможно представить себе инженера- конструктора цифровых систем, который бы не был знаком с ко- дами, контролирующими ошибки. Сегодняшний интерес к этому предмету резко контрастирует с тем, что в прежние годы такие коды считались практически применимыми лишь в самых дорогих системах связи. Необходимость в контроле ошибок сейчас так велика, а возможности электроники столь развиты, что интерес к этой тематике непрерывно растет. Умение применять кодирова- ние стало важным для любого специалиста, создающего современ- ные системы связи или большие цифровые системы, и это умение ценится все больше. По этой теме написаны превосходные книги, но в них основное внимание уделяется математическим исследо- вательским аспектам. Традиционно превалируют вопросы, свя- занные с построением лучших кодов. Хотя эти вопросы важны для дальнейшего развития теории, конструктору в принципе инте- ресно лишь то, что он может построить. Эта книга написана для студентов и инженеров, которые ин- тересуются кодами, контролирующими ошибки, и намереваются использовать их в различных приложениях. Сказав это, мы дол- жны, однако, также сказать, что отделить практику OT теории невозможно. Не располагая необходимой математической базой и опираясь лишь на поверхностное знакомство с материалом, конструктор не сможет удовлетворительно работать, хотя ему нет необходимости столь же мастерски владеть всеми аспектами теории, как исследователю. Книга возникла из конспекта курса лекций, посвященного кон- тролирующим ошибки кодам, который автор много раз читал как в Корнеллском университете, TBK и в корпорации ИБМ. OT слуша- телей этих лекций нельзя было ожидать какой-либо подготовки по современной алгебре. Поэтому одно из требований к курсу со- стояло в изложении необходимых основ алгебры, которое обеспе- чило бы достаточную математическую строгость, и в то же время умещалось в считанное число лекционных часов. Учитывая это ограничение, я попытался включить в книгу все те основы ал- гебры, которые требуются для введения в теорию контролирую- 
П РЕд ИСЛОВИ E 9 щих ошибки кодов и позволяют проводить доказательства или убедительную аргументацию. Это тот минимум, без которого ин- женер не может быть уверен в своих построениях. На протяжении тех лет, что читался курс, аудитория измени- лась: сначала это были аспиранты и студенты старших курсов, а затем появились и студенты младших курсов; это заставило за- ботиться о более простых объяснениях, излагавшихся, по возмож- ности, на языке, понятном инженерам. Математические рассужде- ния проводились на возможно более низком уровне, хотя в неко- торых вопросах уровень оставался достаточно высоким. Материал излагается в форме «теорема ‒ доказательство», хотя в инженерной литературе чаще используется описательная форма. Принятая нами форма позволяет читателю прн желании пропу- скать доказательства и выделять необходимые главные факты. Кроме того, те, кто заботится о строгости, могут разбить теорию на легче усваиваемые части. Я пытался выдвинуть на первый план преобразование Фурье в конечных полях, так как оно интуитивно понятнее инженерам и быстро усваивается людьми с техническим образованием. При- менение преобразования Фурье проясняет также тот факт, что теория контролирующих ошибки кодов является одной из ветвей теории дискретной обработки сигналов. Хотя для студентов ин- щенерных специальностей предпочтительнее другой способ изло- жения того же круга идей, который основан на использовании многочленов Мэттсона ‒ Соломона, такое изложение вызвало бы необходимость изучать новый для них язык в то время, как они уже владеют одним, столь же употребительным. По возможности подчеркивалась тесная связь теории кодов, контролирующих ошибки, и теории обработки дискретных сигна- лов. Во многих работах эта связь оставалась невыявленной; объяснение заключается в том, что данные дисциплины развива- лись совершенно различными путями: одна разрабатывалась в основном алгебраистами, а другая в основном инженерами. Однако, если не считать различия в числовых системах поле Галуа в одном случае и поле комплексных чисел в другом ис- пользуемые методы аналогичны. Обе дисциплины основаны на преобразовании Фурье, фильтрах с конечным импульсным откли- ком, циклических свертках и соотношениях между свойствами последовательностей во временной и частотной областях. В книге на первый план выдвигается реализация кодеров и декодеров с помощью цепей, содержащих регистры сдвигов, причем по возможности используется техническая терминология, принятая в теории фильтров. Для максимально возможной яс- ности изложения описывается построение регистров сдвига и часто выявляются модификации, позволяющие уменьшить число эле- ментов устройства. Даже в тех случаях, когда описывается про- 
f p пюдисловик граммная реализация кодеров и декодеров, приводятся некоторые соображения о том, как использование регистров сдвига может упростить программу. Моя точка зрения состоит в том, что окон- чательным критерием качества кода или алгоритма является сто- имость кодера и декодера. Инженер не будет интересоваться кодами с наибольшим минимальным расстоянием, если неизвестны хо- рошие алгоритмы их декодирования. Хорошие коды нуждаются в хорошем декодере, а хорошие алгоритмы декодирования найти трудно. По-видимому, поиск теоретиками новых кодов, допуска- ющих использование известных алгоритмов декодирования, мо- жет оказаться более плодотворным, нежели поиск новых алгорит- мов декодирования для известных кодов. При выборе обозначений и терминологии всегда возникает вопрос, использовать ли традиционные или ввести новые, более удобные. В выборе обозначений предпочтение отдается традици- онным, хотя в некоторых случаях я считал, что важнее добиться методологической ясности и согласованности. Например, при обсуждении сверточных кодов я выбрал обозначения, подчерки- вающие их аналогию с блоковыми кодами, хотя иногда они от- личаются от обозначений, принятых в литературе по сверточным кодам. Благодарности. Было бы очень трудно перечислить все беседы и источники, оказавшие существенное влияние на эту книгу: любой список оказался бы неполным, и поэтому я упомяну лишь главные. Профессор Тоби Бергер был моим другом и консультантом на протяжении всех лет работы над книгой: его советы всегда были очень полезны. Профес- сор Д. Л. Сервейт внимательно прочитал большую часть рукописи и спас меня от многих ошибок и неточностей. Полезные советы и критические замечания сделали также К. Л. Чинь, A. ЭльГамаль, М. P. Бест, Н. М. Блечман, Т. Ха- симото, К. Кобаяси, М. Симада, Г. Унгербек, В. Вандеркулк, С. Виноград и С. К. Вест. Книги и статьи, прямо или косвенно оказавшие существенное влияние на нашу книгу, перечислены в списке литературы; список статей, ока- завших меньшее влияние, был бы необъятным. Я должен выразить признательность корпорации ИБМ за поддержку при подготовке этой книги н Корнеллскому университету за предоставление лекцион- ных помещений, в которых ее текст прошел апробацию. Текст книги шлифовался также в процессе лекций, прочитанных в Технологическом институте Южного Китая. Наиболее важное участие в подготовке книги приняла моя жена Барбара. Она помогала и морально поддерживала меня, разделяя все трудности и удачи. Наконец, эта книга посвящается Эдварду Я',ж. Блейхуту, Эндрю С. Чамеру и Карлу А. Краченфелсу; частицы их душ живут в ней. 
ГЛАВА 1 ВВЕДЕНИЕ Обработка дискретных сигналов является инженерной дисци- плиной со многими разветвлениями. Сюда относится и теория кодов, контролирующих ошибки, ‒ отдельный предмет со сво- ими собствениымп задачами и собственными арифметическими си- стемами. Однако наиболее эффективными из этих арифметических систем являются известные операции обработки сигналов, в том числе свертки, преобразования Фурье, фильтры и регистры сдви- гов. Теория кодов, контролирующих ошибки, ‒ предмет со своей собственной историей и своими прелестями; его различные грани смыкаются со многими другими дисциплинами. Рассматриваемая в теории кодов, контролирующих ошибки, техническая задача состоит в защите цифровых данных от появ- ляющихся в процессе передачи по каналам связи ошибок. Многие хитроумные способы защиты QT ошибок, развитые на основе бо- гатой математической теории, превратились в зрелые важные ин- женерные методы с многочисленными приложениями. Большие объемы данных в современных системах связи и хранения данных, больши IcTBQ из которых очень чувствительно к ошибкам, приводят к необходимости контроля ошибок. Зрелая теория хороших кодов и хороших кодовых алгоритмов способна удовлетворить эту потребность.. Кроме того, быстрые успехи в создании интегральных цифровых схем открывают возмож- ность реализации этих алгоритмов. 1.1. ДИСКРЕТНЫЙ КАНАЛ, СВЯЗИ Система связи соединяет источник данных с получателем данных посредством канала; примерами каналов являются микроволновые линии, коаксиальные кабели, телефонные сети и даже магнитные ленты. При проектировании системы связи разрабатываются устройства, подготавливающие вход и обрабатывающие выход каналов. Уже стало традицией подразделять основные функции 
12 ГЛ. 1. ВВЕДЕНИЕ Шум Рис. 1.1. Блок-схема цифровой сисчечы связг. цифровой системы связи так, как показано на блок-схеме на рис. 1.1. бранные, поступающие в систему связи от источника данных, прежде всего обрабатываются кодером источника, предназначен- ным для более компактного представления данных источника. Это промежуточное представление является последовательностью символов, которая называется кодовым словом источника. Затем данные обрабатываются кодером канала, преобразующим после- довательность символов кодового слова источника в другую по- следовательность символов, называемую кодовым словом канала. Кодовое слово канала представляет собой новую, более длинную последовательность с большей, чем у кодового источника, избы- точностью. Каждый символ кодового слова канала может быть представлен битом или, возможно, группой битов. Далее модулятор преобразует каждый символ кодового слова канала в соответствующий аналоговый символ из конечного мно- жества допустимых аналоговых символов. Последовательность аналоговых символов передается по каналу. Так как в канале возникают различного типа шумы, искажения и интерференция, то выход канала отличается от его входа. Демодулятор преобра- зует каждый полученный на выходе канала сигнал в последова- тельность символов одного из кодовых слов канала. Каждый при- нятый символ является лучшей оценкой переданного символа, но из-за шума в канале демодулятор делает ошибки. Демодулиро- 
ванная последовательность символов называется принятым сло- вом. Из-за ошибок символы принятого слова не всегда соответст- вуют символам кодового слова канала. Декодер канала использует избыточность кодового слова канала для того, чтобы исправить ошибки в принятом слове, и затем выдает оценку кодового слова источника. Если все ошибки исправлены, то оценка кодового слова источника совпадает с ис- ходным кодовым словом источника. Декодер источника выполняет операцию, обратную операции кодера источника, результат которой поступает к получателю. В данной книге рассматривается только конструкция кодера и декодера канала дисциплина, известная как кодирование, контролирующее ошибки. Сжатие данных или функции более компактной записи данных, выполняемые кодером и декодером источника, а также устройства модулятора и демодулятора в ней не рассматриваются. Кодер и декодер канала будут в дальнейшем называться просто кодером и декодером соответственно. 1.2. ИСТОРИЯ КОДИРОВАН ИЯ, КОНТРОЛИРУЮЩЕГО ОШИБКИ История кодирования, контролирующего ошибки, началась в 1948 г. публикацией знаменитой статьи Клода Шеннона. Шен- нон показал, что с каждым каналом связано измеряемое в битах в секунду и называемое пропускной способностью канала число С, имеющее следующее значение. Если требуемая от системы связи скорость передачи информации Я (измеряемая в битах в секунду) меньше С, то, используя коды, контролирующие ошибки, для данного канала можно построить такую систему связи, что веро- ятность ошибки на выходе будет сколь угодно мала. В самом деле, из шенноновской теории информации следует тот важный вывод, что построение слишком хороших каналов является расточитель- ством; экономически выгоднее использовать кодирование. Шен- нон, однако, не указал, как найти подходящие коды, а лишь до- казал их существование. В пятидесятые годы много усилий было потрачено на попытки построения в явном виде классов кодов, позволяющих получить обещанную сколь угодно малую вероят- ность ошибки, но результаты были скудными. В следующем деся- тилетии решению этой увлекательной задачи уделялось меньше внимания; вместо этого исследователи кодов предприняли длитель- ную атаку по двум основным направлениям. Первое направление носило чисто алгебраический характер и преимущественно рассматривало блоковые коды. Первые блоко- вые коды были введены в 1950 г., когда Хэмминг описал класс блоковых кодов, исправляющих одиночные ошибки. Коды Хэм- минга были разочаровывающе слабы по сравнению с обещанными 
гл. l. в в еде и и е Шенноном гораздо более сильными кодами. Несмотря на усилен- ные исследования, до конца пятидесятых годов не было построено лучшего класса кодов. В течение эгого периода без какой-либо общей теории были найдены многие коды с малой длиной блока. Основной сдвиг произошел, когда Боуз и Рой-Чоудхури [1960) и Хоквингем [1959] нашли большой класс кодов, исправляющих кратные ошибки (коды БЧХ), а Рид и Соломон [1960) нашли свя- занный с кодами БЧХ класс кодов для недвоичных каналов. Хотя эти коды остаются среди наиболее важных классов кодов, общая теория блоковых кодов, контролирующих ошибки, с тех пор успешно развивалась, и время от времени удавалось открывать новые коды. Открытие кодов БЧХ привело к поиску практических методов построения жестких или мягких реализаций кодеров и декоде- ров. Первый хороший алгоритм был предложен Питерсоном. Впоследствии мощный алгоритм выполнения описанных Питерсо- ном вычислений был предложен Берлекэмпом и Месси, и их реа- лизация вошла в практику как только стала доступной новая цифровая техника. Второе направление исследований по кодированию носило скорее вероятностный характер. Ранние исследования были свя- заны с оценками вероятностей ошибки для лучших семейств блоковых кодов, несмотря на то что эти лучшие коды не были из- вестны. С этими исследованиями были связаны попытки понять кодирование и декодирование с вероятностной точки зрения, и эти попытки привели к появлению последовательного декодиро- вания. В последовательном декодировании вводится класС не- блоковых кодов бесконечной длины, которые можно описать дере- вом и декодировать с помощью алгоритмов поиска по дереву. Наиболее полезными древовидными кодами являются коды с тон- кой структурой, известные под названием сверточных кодов. Эги коды можно генерировать с помощью цепей линейных регист- ров сдвига, выполняющих операцию свертки информационной последовательности. В конце 50-х годов для сверточных кодов были успешно разработаны алгоритмы последовательного декодирова- ния. Интересно, что наиболее простой алгоритм декодирования‒ алгоритм Витерби ‒ не был разработан для этих кодов до 1967 г. Применительно к сверточным кодам умеренной сложности алго- ритм Витерби пользуется широкой популярностью, но для более мощных сверточных кодов он не практичен. В 70-х годах эти два направления исследований опять стали переплетаться. Теорией сверточных кодов занялись алгебраисты, представившие ее в новом свете. В теории блоковых кодов за это время удалось приблизиться к кодам, обещанным Шенноном: были предложены две различные схемы кодирования (одна Юсте- сеном, а другая Гоппой), позволяющие строить семейства кодов, 
1.3. OPHAO)KE>HSI 15 которые одновременно могут иметь очень большую длину блока и очень хорошие характеристики. Обе схемы, однако, имеют пра- ктические ограничения, и надо ждать дальнейших успехов. Ме- жду тем к началу 80-х годов кодеры и декодеры начали появляться в новейших конструкциях цифровых систем связи и цифровых систем памяти. 1.3. ПРИЛОЖЕНИЯ Так как развитие кодов, контролирующих ошибки, первоначально стимулировалось задачами связи, терминология теории кодиро- вания проистекает из теории связи. Построенные коды, однако, имеют много других приложений. Коды используются для защиты данных в памяти вычислительных устройств и на цифровых лен- тах и дисках, а также для защиты от неправильного функциони- рования или шумов в цифровых логических цепях. Коды исполь- зуются также для сжатия данных, и теория кодирования тесно связана с теорией планирования статистических экспериментов. Приложения к задачам связи носят самый различный характер. Двоичные данные обычно передаются между вычислительными терминалами, между летательными аппаратами и между спутни- ками. Коды могут быть использованы для получения надежной связи даже тогда, когда мощность принимаемого сигнала близка к мощности тепловых шумов. И поскольку электромагнитный спектр все больше и больше заполняется создаваемым челове- ком сигналами, коды, контролирующие ошибки, становятся еще более важным инструментом, так как позволяют линиям связи надежно работать при наличии интерференции. В военных при- ложениях такие коды часто используются для защиты против намеренно организованной противником интерференции. Во многих системах связи имеется ограничение на передава- емую мощность. Например, в системах ретрансляции через спут- ники увеличение мощности обходится очень дорого. Коды, контро- лирующие ошибки, являются замечательным средством снижения необходимой мощности, так как с их помощью можно правильно восстановить полученные ослабленные сообщения. Передача в вычислительных системах обычно чувствительна даже к очень малой доле ошибок, так как одиночная ошибка может нарушить программу вычисления. Кодирование, контроли- рующее ошибки, становится в этих приложениях весьма важным. Для некоторых носителей вычислительной памяти (магнитных лент, например) использование кодов, контролирующих ошибки, позволяет добиться более плотной упаковки битов. Другим типом систем связи является система с многими поль- зователячи и разделением по времени, в которой каждому из данного числа цользователей заранее предписаны некоторые вре- 
16 Гл ° 1° . ВВеДение менные окна (интервалы), в которых ему разрешается передача. Длинные двоичные сообщения разделяются на пакеты, и один пакет передается в отведенное временное окно. Из-за нарушения синхронизации или дисциплины обслуживания некоторые пакеты могут быть утеряны. Подходящие коды, контролирующие ошибки, защищают от таких потерь, так как утерянные пакеты можно вос- становить по известным пакетам. Связь важна также внутри одной системы. В современных сложных цифровых системах могут возникнуть большие потоки данных между подсистемами. Цифровые автопилоты, цифровые системы управления процессами, цифровые переключательные системы и цифровые системы обработки радарных сигналов все это системы, содержащие большие массивы цифровых данных, которые должны быть распределены между многими взаимно связанными подсистемами. Эти данные должны быть переданы или по специально предназначенным для этого линиям, или посредст- вом более сложных систем с шинами передачи данных и с разде- лением по времени. В любом случае важную роль играют методы кодирования, контролирующего ошибки, TBK как они позволяют гарантировать соответствующие характеристики. Со временем коды, контролирующие ошибки, и устройства кодирования и декодирования достигли такого уровня развития, на котором они могут обрабатывать большие массивы данных. Можно ожидать, что в системах связи будущего методы кодиро- вания, контролирующего ошибки, будут играть центральную роль. Представляется правдоподобным, что в будущем грамофон- ные пластинки, ленты и телевизионные сигналы будут содержать цифровые сообщения, защищенные кодами, контролирующими ошибки. Влияние повреждений пластинки или интерференции в принятом сигнале может быть полностью устранено кодирова- нием, если число ошибок не выходит за пределы возможностей заложенного в конструкцию кода, контролирующего ошибки. 1.4. ОСНОВНЫЕ ПОНЯТИЯ Предмет кодирования, коцтролирующего ошибки, одновременно прост и сложен. Он прост в том смысле, что ero задачи легко объяснить любому технически грамотному человеку, и сложен в том смысле, что для того, чтобы получить решение задачи (и даже частное ее решение), потребуется весь объем данной книги, причем изложению должно предшествовать отступление, посвя- щенное некоторым разделам современной алгебры. Предположим, что все представляющие интерес данные могут быть представлены в виде двоичной (закодированной двоична) информации, т. е. в виде последовательности нулей и единиц. Эта двоичная информация подлежит передаче по каналу, подвержен- 
1.4. ОСНОВНЫЕ ПОНЯТИЯ 1 7 ному случайным ошибкам. Задача кодирования состоит в таком добавлении к информационным символам дополнительных сим- волов, чтобы на приемнике эти искажения могли быть найдены и исправлены. Иначе говоря, последовательность символов данных представляется в виде некоторой более длинной последовательнос- ти символов, избыточность которой достаточна для защиты данных. Двоичный код мощности М и длины и представляет собой множество из М двоичных слов длины и, называемых кодовыми словами. Обычно М = 2", где й некоторое целое число; такой код называется двоичным (n, Й)-кодом. Например, можно построить следующий код: 10101 10010 011 10 11111 Это очень бедный (и очень маленький) код с М = 4 и n = 5, но он удовлетворяет приведенному выше определению. Данный код можно использовать для представления 2-битовых двоичных чисел, используя следующее (произвольное) соответствие: 00 10101, 01 10010, 10 01110, 11 11111. Если получено одно из четырех 5-битовых кодовых слов, то по- лагаем, что соответствующие ему два бита являются правильной информацией. Если произошла ошибка, то мы получим 5-битовое слово, отличающееся от кодовых слов. Тогда попытаемся найти наиболее вероятно переданное слово и возьмем его в качестве оцен- ки исходных двух битов информации. Например, если мы при- няли 01100, то полагаем, что передавалось 01110, и, следовательно, информационное слово равнялось 10. В приведенном примере код не является хорошим, так как он не позволяет исправлять много конфигураций ошибок. )Кела- тельно выбирать коды так, чтобы каждое кодовое слово по воз- можности больше отличалось от каждого другого кодового слова; в частности, это желательно в том случае, когда длина блока велика. Первой целью данной книги является построение хороших кодов. Хотя с внешней стороны эта задача может показаться про- стой, на самом деле она чрезвычайно трудна, и многие хорошие коды пока еще не найдены. По неопытности может показаться, что достаточно определить требования к хорошему коду и затем предпринять машинный поиск 
$8 Гл. 1. ввЕДЕНВЕ по множеству всех возможных кодов. Но сколько кодов существует для данных и и И Каждое кодовое слово представляет собой по- следовательность и двоичных символов, и всего имеется 2~ таких слов; следовательно, код описывается и 2' двоичными символами. Всего существует 2"'-" способов выбора этих двоичных симво- лов; следовательно, число различных (n, Й)-кодов равно 2" г~. Конечно, очень многие из этих кодов не представляют интереса (как в случае, когда два кодовых слова равны), так что надо либо проверять это по ходу поиска, либо развить некоторую теорию, позволяющую исключить такие коды. Например, выберем (n, Й) = (40, 20) ‒ код, весьма умерен- ный по современным стандартам. Тогда число таких кодов пре- взойдет величину 10" '" ООО ‒ невообразимо большое число! Сле- довательно, неорганизованные процедуры поиска бессильны. В общем случае блоковые коды определяются над произволь- ным конечным алфавитом, скажем над алфавитом из g символов 10, 1, 2, ..., g ‒ 1~. На первый взгляд введение алфавитов, от- личных от двоичного, может показаться излишним обобщением. Из соображений эффективности, однако, многие современные ка- налы являются недвоичными, и коды для этих каналов должны быть недвоичными. На самом деле коды для недвоичных каналов часто оказываются достаточно хорошими, и сам этот факт может служить причиной для использования недвоичных каналов. Дво- ичные данные источника тривиальным образом представляются символами д-ичного алфавита, особенно если g равно степени двой- ки, как это обычно и бывает на практике. Определение 1.4.1. Блоковый код мощности М над алфавитом из д символов определяется как множество из М д-ичных последо- вательностей длины и, называемых кодовыми словами. Если д = 2, то символы называются битами. Обычно М = д" для некоторого целого k, и мы будем интересоваться только этим случаем, называя код (n, k)-кодом. Каждой последовательности из k д-ичных символов можно сопоставить последовательность из и д-ичных символов, являющуюся кодовым словом. Имеются два основных класса кодов: блоковые коды и древо- видные коды; они иллюстрируются рис. 1.2. Блоковый код за- дает блок из й информационных символов гг-символьным кодовым словом. Скорость Я блокового кода г) определяется равенством R = k/и. ') Скорость ‒ величина безразмерная или, возможно, измеряемая в еди- ницах бит/бит или символ/символ. Ее следует отличать от другого называемого I тем же термином скорость понятия, нзмсря1огцего канальну1о скорость в бит,с. Используется и другое определение скорости: Я = ‒ (A,'ï) log,,q, единицей которой является иат/символ, где один нат равен log> е битов. Принято также опре- деление P =- (й/~г) 1о~~ О, в котором скорость измеряется в едпи11иах бит/символ. 
1.4. Ос нОВн ы е пО ня'Ги я 1 9 Инц)ормаоионная последовал)ельносаь. k боков Кодовое слово: и бцвов Скоросгпь =k/n Я-бинтовый блм А-бловый блок и-бшповый блок и- баповыо блок Кодер декодер Канал блоковый код Ин(рормацоонная скоросо(ь: Х, 0umoe/кадр Скоросо(ь канала: л, бц(ооо/кадр Скорость кода: k,/n, бшпов/6unl k0 баков/кадр П0 burnoe//кадр ЯекоЬер Канал ЯревовиЬный код Pgc. 1.2. Основные классы кодов. Древовидный код более сложен. Он отображает бесконечную по- следовательность информационных символов, поступающую со скоростью Й, символов за один интервал времени, в непрерывную последовательность символов кодового слова со скоростью и, символов за один интервал времени. Мы отложим рассмотрение древовидных кодов до гл. 12 и сначала сосредоточим внимание на блоковых кодах. Если сообщение состоит из большого числа битов, то в прин- ципе лучше использовать один кодовый блок большой длины, чем последовательность кодовых слов из более короткого кода. При- рода статистических флуктуаций такова, что случайная конфи- гурация ошибок обычно имеет вид серии ошибок. Некоторые сег- менты этой конфигурации содержат больше среднего числа оши- бок, а некоторые меньше. Следовательно, при одной и той же ско- рости более длинные кодовые слова гораздо менее чувствительны к ошибкам, чем более короткие кодовые слова, но, конечно, со- ответствующие кодер и декодер могут быть более сложными. На- пример, предположим, что 1000 информационных битов переда- ются с помощью (воображаемого) 2000-битового двоичного кода, способного исправлять 100 ошибок. Сравним такую возможность с передачей одновременно 100 битов с помощью 200-битового кода, исправляющего 10 ошибок на блок. Для передачи 1000 битов не- обходимо 10 таких блоков. Вторая схема также может исправлять 100 ошибок, но лишь тогда, когда они распределены частным об- ра,ом ‒ по 10 ошибок в 200-битовых подблоках. Первая схема может исправлять 100 ошибок независимо от того, как они рас- 
гл. i. вввдение положены внутри 2000-битового кодового слова. Она существенно эффективнее. Эти эвристические рассуждения можно обосновать теорети- чески, но здесь мы к этому не стремимся. Мы только хотим обо- сновать тот факт, что хорошими являются коды с большой длиной блока и что очень хорошими кодами являются коды с очень боль- шой длиной блока. Такие коды может быть очень трудно найти, а будучи найденными, они могут потребовать сложных устройств для реализации операций кодирования и декодирования. О блоковом коде судят по трем параметрам: длине блока и, информационной длине Й и минимальному расстоянию d*. Ми- нимальное расстояние является мерой различия двух наиболее похожих кодовых слов. Минимальное расстояние вводится двумя следующими определениями. Определеиие 1.4.2. Расстоянием по Хзммингу между двумя д-ичными последовательностями х и у длины и называется число позиций, в которых они различны. Это расстояние обозначается через d (х, у). Например, возьмем х = 10101 и у = 01100; тогда имеем d (10101, 01100) = 3. В качестве другого примера возьмем х = = 30102 и у = 21103; тогда d (30102, 21103) = 3. Определение 1.4.3. Пусть %' = 1с;, 1 = О, ..., М 1i код. Тогда максимально расстояние кода Ж равно наименьшему из всех расстояний по Хэммингу между различными парами кодовых слов, т. е. d' = min d(c<, с;). с~, с ° (@ Ф+/ (n, Й)-код с минимальным расстоянием d~ называется также (n, Й, d*)-кодом. В коде Ю, выбранном в первом примере данного параграфа, d (10101, 10010) = 3, d (10010, 01110) = 3, d (10101, 01110) = 4, d (10010, 11111) = 3, d (10101, 11111) = 2, 0 (01110, 11111) = 2; следовательно, для этого кода d* = 2. Предположим, что передано кодовое слово и в канале про- изошла одиночная ошибка. Тогда принятое слово находится на равном 1 расстоянии по Хэммингу от переданного слова. В слу- чае когда расстояние до каждого другого кодового слова больше чем 1, декодер исправит ошибку, если положит, что действительно переданным словом было ближайшее к принятому кодовое слово. 
1.4. ОСНОВНЫЕ ПОНЯ'~ ИЯ Я1 В более общем случае если произошло 1 ошибок и если рас- стояние от принятого слова до каждого другого кодового слова больше 3, то декодер исправит эти ошибки, приняв ближайшее к принятому кодовое слово в качестве действительно переданного. 3то всегда будет так, если d* ~ 2/+ 1. Иногда удается исправлять конфигурацию из t ошибок даже тогда, когда это неравенство не удовлетворяется. Однако если d* а. 2/+ 1, то исправление любых 1 ошибок не может быть гарантировано, так как тогда оно зависит от того, какое слово передавалось и какова была конфигурация из t ошибок внутри блока. Геометрическая иллюстрация дается на рис. 1.3. В простран- стве всех д-ичных и-последовательностей выбрано некоторое множество Il-последовательностей, объявленных кодовыми сло- вами. Если dÐ минимальное расстояние этого кода, а наибольшее целое число, удовлетворяющее условиюд *~2/+1, то вокруг каждого кодового слова можно описать непересекающиеся сферы радиуса t. Принятые слова, лежащие внутри сфер, деко- дируются как кодовое слово, являющееся центром соответству- ющей сферы. Если произошло не более t ошибок, то принятое слово всегда лежит внутри соответствующей сферы и декодируется правильно. Некоторые принятые слова, содержащие более 1 ошибок, попадут внутрь сферы, описанной вокруг другого кодового слова, и будут декодированы неправильно. другие принятые слова, Произвольные л-последовааельноспа Кодовые РМс. 1.3. Сферы декодирования. 
ЯЯ ГЛ. 1 ° ВВЕДЕНИЕ содержащие более 1 ошибок, попадут в промежуточные между сферами декодирования области. В зависимости от применения последний факт можно ингерпретировать одним из двух способов. Неполный декодер декодир ует только те и р инятые слова, которые лежат внутри сфер декодирования, описанных вокруг кодовых слов. Остальные принятые слова, содержащие более допустимого числа ошибок, декодер объявляет нераспознаваемыми. Такие конфигурации ошибок при неполном декодировании на- зываются неисправляемыми. Большинство используемых деко- деров являются неполными декодерами. Полный декодер декодирует каждое принятое слово в бли- жайшее кодовое слово. Геометрически это представляется следу- ющим образом: полный декодер разрезает промежуточные обла- сти на куски и присоединяет их к сферам так, что каждая точка попадает в ближайшую сферу. Обычно некоторые точки находятся на равных расстояниях от нескольких сфер; тогда одна из этих сфер произвольно объявляется ближайшей. Если происходит более / ошибок, то полный декодер часто декодирует неправильно, но бывают и случаи попадания в правильное кодовое слово. Полный декодер используется в тех случаях, когда лучше угады- вать сообщение, чем вообще не иметь никакой его оценки. Мы будем также рассматривать каналы, в которых кроме оши- бок происходят и стирания. Это значит, что конструкцией прием- ника предусмотрено объявление символа стертым, если он полу- чен ненадежно или если приемник распознал наличие интерфе- ренции или сбой. Такой канал имеет входной алфавит мощности g и выходной алфавит мощности g + 1; дополнительный символ называется сгпиранием. Например, стирание символа 3 в сооб- щении 12345 приводит к слову 12-45. Это не следует путать с дру- гой операцией, называемой вабрасыванием, которая дает 1245. 3 таких каналах могут использоваться коды, контролиру- ющие ошибки. В случае когда минимальное расстояние кода равно d*, любая конфигурация нз р стираний может быть восстановлена, если Н ) р + 1. Далее, любая конфигурация из v ошибок и р стираний может быть декодирована при условии, что d ~o2v+ 1+ р. Для доказательства выбросим из всех кодовых слов те р ком- понент, в которых приемник произвел стирания. Это даст новый код, минимальное расстояние которого не меньше сР р; сле- довательно, v ошибок могут быть исправлены при условии, что выполняется выписанное выше неравенство. Таким образом, можно воссгановигь укороченное кодовое слово с р стертыми компонентами. Наконец, так как д* > р + 1, существует только 
1.5. n PORTE A m H E КОДЫ Я3 Одно кодовое слово, совпадающее с полученным в нестертых компонентах; следовательно, исходное кодовое слово может быть восстановлено. 1.5. ПРОСТЕЙШИЕ КОДЫ Некоторые коды настолько просты, что их можно описать в са- мом начале. Простые коды с проверкой на че~пность. Это высокоскоростные коды с плохими корректирующими характеристиками. К задан- ным k информационным битам дописывается (k + 1)-й бит так, чтобы полное число единиц в кодовом слове было четным '). Таким образом, например, для й = 4 0000~00000, 0001 00011, 001 0~00101, 001 1 ~00110 и т. д. Этот код является (k + 1, k)-кодом или (n, n 1)-кодом. Минимальное расстояние кода равно двум, и, следовательно, никакие ошибки не могут быть исправлены. Простой код с про- веркой на четкость используется для обнаружения (но не исправ- ления) одной ошибки. Простые коды с повторением. Это н изкоскоростные коды с хорошими корректирующими характеристиками. Один заданный информационный символ повторяется п раз (обычно п нечетко). Таким образом, 0 ~00000, 1 ~11111. Это (n, 1)-код. Для него минимальное расстояние равно п, и при предположении, что большинство принятых битов совпа- дает с переданным информационным битом, может быть исправ- лено (n 1)!2 ошибок. Коды Хэмминга. Эти коды позволяют исправлять одну ошибку. Сейчас мы введем эти коды с помощью непосредственного описа- ния. Дл я каждого т существует (2 1, 2~ 1 т)-код Хэмминга. При больших т скорость кода близка к 1, но доля общего числа битов, которые могут быть искажены, очень мала. (7, 4)-код Хэмминга можно описать с помощью приведенной на рис. 1.4, а реализации. При заданных четырех информационных битах (i„ i„ i„ i4) полагаем первые четыре бита кодового слова ') В дальнейшем этот дополнигельцый бит н33ьщаегся битом проверки иа четность. ‒ Прим. равд. 
24 ГЛ. 1. ВВЕДЕНИЕ б Рис. 1.4. Кодер/декод~р для простого (7, 4)-кода Хэмминга. а ‒ кодер; б‒ декодер. 4-бловое слово данных с» бивоеое коЬовое слово Сложение по модулю 2, 7-5umosoe кодовое слово 4-бловое слово даннь х 
1 s. ЛРостейшие коды Яб равными этим четырем информационным битам. дополняем тремя проверочными битами, задавая их равенствами Pi = C~+ Са+ Сз р2 С2 + Сд + C4 Pa ‒ Сд+ 4+ С4 ° Здесь -+ обозначаетсложение по модулю2: 0+ О =- О, 0+ 1 = ‒ 1, 1 + О = 1, 1 + 1 = 0. Шестнадцать кодовых слов (7, 4)-кода Хэмминга выписаны в табл. 1.1. Декодер принимает 7-битовое Таблица 1.! (7, 4)-код Хэмминга 0000000 0001 0 1! 00101 10 00111 01 0100! ! ! 0101 100 0110001 01!1010 !000101 1001!10 101001! 1011000 !I00010 110100! 1110100 !! 11111 слово v = (Eg, с~, Eg, 64, р|, р2, рз). При передаче в этом слове про- изошло не более одной ошибки. Изображенный на рис. 1.4, б декодер вычисляет биты 81 = Р1 + CI + С2+ С3э S2 р2 1 С2 + С3 + Cjэ S~, = P3+ Cj + C2+ Трехбитовая последовательность (з„з„я,) называется син- дромом. Она зависит не от истинных информационных битов, а только от конфигурации ошибок. Всего имеется восемь возмож- ных синдромов: один для случая отсутствия ошибки и по одному для каждой из семи возможных одиночных ошибок. Простая проверка показывает, что каждая из этих ошибок имеет свой един- ственный синдром. Таким образом, не составляет труда скон- струировать цифровую логику, которая по синдрому локализует 
26 ГЛ. 1 >SEAEHHE соответствующий бит. После внесения исправления проверочные символы можно опустить. Две или более ошибки превышают возможности кодовой конструкции, и код будет ошибаться. Это означает, что он будет вносить неправильные исправления и выдавать искаженные информационные биты. Идея этой кодовой конструкции, естественно, не меняется при перестановке позиций битов в кодовых словах. Все такие вари- анты называются (7, 4)-кодом Хэмминга. ЗАДАЧИ Проверка до сврокам I] 1 It g ° ° ° !~/~< I'i.r„+ i I ki.k +! Проверка по спчолбцОм ‒ + Рк. i >.1 I~a ° + ! Ai I~'к +s к,yt 1.1. Исправляющие одну ошибку коды Хэммппга содержат 2"' ‒ 1 битов, т из которы х являются проверочными б итамц. а. Выписать (и, й) для первых пяти пст11цвиальпых кодов Хэмминга (начиная с т = 3). б. Вычислить скорости этих кодов. в. Выписать выражение для вероятности р, ошибки декодирования при условии, что код используется в двоичном канале с вероятностью ошибки q. Как ведет себя вероятность р„с ростом и? 1.2. Руководствуясь рис. 1.4, сконструировать кодер/декодер для (15,11)- кода Хэмминга. Опустить повторяющиеся детали (т. е. в принципе показать, как это можно сделать). 1.3л. Методом проб и ошибок найти множество из четырех двоичных слов длиной 3, таких, что каждое слово находится от каждого другого слова на расстоянии, не меньшем 2. б. Найти множество из 16 двоичных слов длиной 7, такое, что каждое слово находится от каждого другого слова на расстоянии, не меньшем 3. 1.4.а. Описать, как вырезать 88 кругов диаметром ! дюйм (м2,5 см) из листа бумаги шириной 8,5 дюйма и длиной 11 дюймов.,Локазать, что нельзя вырсзать более 119 кругов диаметром 1 дюйм. б. Доказать, что нельзя найти 32 двоичных слова длиной 8, таких, что каждое слово отлпчается от каждого другого слова не менее чем тремя ком- понентами. 1.5.;~оказать, что число й информационных символов любого блокового (n, й)-кода с минимальным расстоянием, нс меньшим 21+ 1, удовлетворяет неравенству l~>log 1-~ (q 1) + (q 1) + + (q 1) (граница Хэмминга для алфавита из q элементов). 1.6. Простейший пр~аер кодовой конструкппи. пзвсстиой под пазванцем «код-произведение», пмест вид 
ЗАДАЧИ Я7 где k>k~ символов верхнего левого блока являются двоичными информационными символами. Конструкция дает ((k + 1) (ka+ 1), kafka)-код. а. Показать, что р>, 1 ~, 1 является проверочным символом 2-Т- . 1+ и по строкам, и по столбцам. б. Показать, что данный код является кодом, исправляющим одну ошибку. в. Показать, что данный код является кодом, обнаруживающим две ошибки. Привести пример двух двойных ошибок, которые этот код не может отличить одну от другой. г. Чему равно минимальное расстояние данного кода? 1.7. Доказать, что расстояние по Хэммингу обладает следующими тремя свойствами: (t) d (х, у) ) О, причем равенство достигается тогда и только тогда, когда x = у: (И) d(x, у) = d(у, x); (ш) выполняется неравенство трсугольника d (x, у) ~ d (у, z) + +d(x, z). Функция расстояния, обладающая этими тремя свойствами, называется метри- кой. 1.8.а. Показать, что код Ю позволяет обнаруживать любую конфигурацию не более чем из d ошибок тогда и только тогда, когда минимальное расстояния кода У больше d. б. Показать, что код способен исправлять любую конфигурацию не более чем из 1 ошибок, если минимальное расстояние кода равно по меньшей мере 21+ 1. в. Показать, что код можно использовать для исправления всех кон- фигураций не более чем из 1 ошибок и одновременного обнаружения всех конфигураций не более чем из d ошибок (d ) t), если минимальное расстояние кода не меньше d+ t+ l. г. Показать, что код можно использовать для восстановления р стер- тых символов, если минимальное расстояние «ода не меньше р+ 1. 1.9.а. Показать, что если двоичный (15, 11)-код Хэмминга используется в канале, который вносит две ошибки, то выход декодера всегда будет ошибоч- ным. б. Показать, как используя проверку на четность, расширить (15, 11)-код Хэмминга до (l6, 11)-кода, исправляющего все одиночные и обнаружи- ваю цего все двойные ошибки. Чему равно минимальное расстояние этого кода? 
ГЛАВА 2 ВВЕДЕНИЕ В АЛГЕБРУ Поиск хороших кодов, контролирующих ошибки, в значительной мере связан с мощными и изящными структурами современной алгебры. Многие найденные важные коды основаны на структу- рах колец многочленов и полей Галуа. Кроме того, эти алгебраи- ческие понятия и методы являются необходимым рабочим инстру- ментом для конструирования кодеров и декодеров. Яанная глава и гл. 4 посвящены изложению тех разделов алгебры, которые важны для теории кодов, контролирующих ошибки. Изложение ведется строго, но ограничивается лишь используемым в даль- нейшем материалом. 2.1. 2-ПОЛЕ И 6-10-ПОЛЕ Вещественные числа образуют известное множество математиче- ских объектов, которые можно складывать, умножать, вычитать и делить. Аналогично комплексные числа образуют множество объектов, которые можно складывать, вычитать, умножать и делить. Оое эти арифметические системы являются важнейшей основой всех инженерных дисциплин. Нам необходимо построить другие, менее известные арифметические системы, полезные при исследовании кодов, контролирующих ошибки. Такие новые арифметические системы состоят из множеств и операций над элементами этих множеств. Хотя мы будем называть операции «сложением», «вычитанием», «умножением» и «делением», они не обязательно будут теми же операциями, что в элементарной арифметике. Изучаемые в современной алгебре арифметические системы классифицируются в соответствии с усложнением их математи- ческой структуры. Такая формальная классификация будет приведена ниже в данной главе. Пока мы дадим следующие не- формальные определения: 
2.1. 2- ПОЛ Е И 0-10- ПОЛЕ Я9 О 0=0, О 1=0, 1 0=0, 1 ° 1 = 1. О, 1, 1, О, О+ О = 0+1= 1+О = 1+1 = Так определенные сложение и умножение называются сложением по модулю 2 и умножением по модулю 2. Заметим, что из равенства 1 + 1 = О следует, что 1 = 1, а из равенства 1 1 = 1 что 1 ' = 1. Используя это, легко проверить, что, за исключением деления на нуль, вычитание и деление всегда определены. Алфа- вит из двух символов О и 1 вместе со сложением по модулю 2 и умножением по модулю 2 называется полем из двух элементов и по приведенным в гл. 4 соображениям обозначается через GF (2). В указанной арифметической системе можно осуществлять известные алгебраические операции. Пример дается следующей системой уравнений над полем GF (2): Х+ Y-[-Z= ‒ 1, Х+ Y ==0, Х -[- Z= ‒ 1. Эту систему можно решить вычитанием третьего уравнения из первого, что дает Y = 0. Тогда из второго уравнения получаем Х = О, а из первого уравнения Z = 1. Подстановкой получен- ~) Абелева группа является частным случаем гр уппы. Арифметическая операция группы общего вида слишком слаба для того, чтоб1 называться сло- жением. 1) абелева группа '): множество математических объектов, которые можно «складывать» и «вычитать»; 2) кольцо: множество математических объектов, которые можно «складывать», «вычитать» и «умножать»; 3) поле: множество математических объектов, которые можно «складывать», «вычитать», «умножать» и «делить». Заметим, что названия этих операций взяты в кавычки потому, что, вообще говоря, они не являются принятыми арифметиче- скими операциями; эти названия употребляются из-за их сход- ства с принятыми. Прежде чем переходить к формальным понятиям, выполним некоторые вычисления в простейшем из всех возможных полей, а именно в поле, состоящем только из двух элементов. (Поле ве- щественных чисел содержит бесконечное число элементов.) Обозна- чим через О и 1 два элемента поля и определим операции сложе- ния и умножения равенствами 
30 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ ного решения в исходную систему уравнений проверяем, что оно правильно. Чтобы получить другой способ решения, предположим, что можно доказать возможность применения обычных методов ли- нейной алгебры над полем GF (2). Определитель системы вычис- ляется следующим образом: 0 =- det 10 10 11 01 11 ' 10 = 1 ° 1 ‒ 1 ° 1 ‒ 1 ° 1 = ‒ 1 = 1 ° Эту систему уравнений можно решить по правилу Крамера'. Х =0' 111 1 00 111 =О, Y=O' z=в-. 111 1 10 =1. 101 Вторым примером поля является 6-10-поле. Это поле содержит 16 элементов, которые мы обозначим символами О, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, F. Таблицы сложения и умножения в этом поле выписаны на рис. 2.1. Отметим, что здесь правила сложения и умножения значительно отличаются от известных правил сложения и умножения вещественных чисел; в то же время эти таблицы обладают внутренней закономерностью и позволяют осуществлять вычитание н деление. Для деления надо взять х: у = х (у '), где у ' элемент поля, удовлетворяющий усло- вию у у ' = 1. Просмотр таблицы умножения показывает, что каждый ненулевой элемент имеет обратный, и, следовательно, деление всегда определено, за исключением деления на нуль. Большинство методов линейной алгебры, так же как и матрич- ные операции, переносится на случай произвольного поля. Именно поэтому поля с конечным числом элементов оказались очень полезными. Мы будем изучать эти поля и найдем способы построе- ния таблиц сложения и умножения, которые порождают поле даже для большого числа элементов. Со временем мы увидим, что поля с д элементами можно построить тогда и только тогда, когда д равно р, где р простое, à m произвольное поло- жительное целоа число. Но прежде мы должны ввести понятия групп и колец. 
2.2. ГРУП ПЫ 31 Рис. 2.1. 6-l0-поле. а ‒ таблица сложения; б ‒ таблица умпоження. 2.2. ГРУППЫ Группа ‒ это собирательное название некоторых алгебраиче- ских структур. Хотя существуют многие конкретные примеры интересных групп, в математике введено абстрактное понятие группы, так как лсгче олиовременпо исследовать все матема- (i 547 7 -1 7(,5 () ) ) 0 3 0 '~ ~ ) ( О I; 1) (.' 1 1; 1' C 7Я9.!В 698 В ,1ВХ 9 В;1 9 3(OI I. D ( ' l: F. ) 1 I'('!) (I 1: f. !)(' l <l с 1) ' : )) ) (' I) 1 I. !) (.'1 E EFCl) I:EI)C' 89,48 9 Х 84 -18~ 9 В.)9 Я 4 567 5176 (1 74 0 Е ! ' !) 1 ) 9 (~ 4 ' В ) F: (.' 3 8 А 7 В 5 А 
3Я 1 Л. 2 ° ВВЕДЕНИЕ В АЛГЕБРУ тические системы с общей структурой, чем исследовать каждую из них по отдельности. Определение 2.2.1. Группой G называется множество элемен- тов с определенной для каждой пары элементов операцией (обо- значаемой е), обладающее следующими четырьмя свойствами: 1) замкнутосгггь: для каждой пары а и Ь из множества эле- мент с =-= а* b принадлежит множеству; 2) ассог1аативность: для всех а, Ь и с из множества а "" (Ь * с) ‒ (а ~ Ь) * c; 3) существование единицы: в множестве существует элемент е, называемый единичным элементом II такой, что а* е =-- е* а == а для любого элемента а множества; 4) существование обратных элементов. для любого а из мно- жества существует некоторый элемент b из множества, называе- мый обратным элементу а и такой, что a*b = b*a = е. Если гр уппа 6 содержит конечное число элементов, то она называется конечной гоуппой, а число элементов в G называется порядком G. Некоторые группы обладают тем дополнительным свойством, что для любых а и b из группы a* b = b*a. Это свойство называется комхупштивностью. Группы, облада- юшие этим дополнительным свойством, называются коммутатив- нь~ми или абелевыма группами. 3а исключением некоторого мате- риала этого параграфа, мы всегда будем иметь дело с абелевыми группами. В случае абелевых групп групповая операция обозначается символом + и называется сложением (даже тогда, когда она не является обычным арифметическим сложением). В этом случае единичный элемент называется нулем и обозначается О, а обрат- ный элементу а элемент записывается в.виде а, так что а + ( ‒ а) = ( ‒ а) + а = О. Иногда групповая операция обозначается символом и назы- вается умножением (даже тогда, когда она не является обычным арифметическим умножением). В этом случае единичный элемент называется единицей и обозначается 1, а обратный элементу а элемент записывается в виде а ', так что а. а ' =- а ' а = 1. 
й.г. ггъппы 33 'Георема 2.2.2. Еданичныа элемент в каждой группе является вдинстввнныч. Для каждого элемента группы обратный элемент также является единственным, и (а ') ' = а. Доказательство. Предположим, что е и е' единичные эле- менты группы; тогда е = е*е' = е'. Далее, предположим, что b и b' ‒ элементы, обратные элементу а; тогда Ь = b» (a» b ) = (Ь» а)» Ь' = Ь'. Наконец, а 'а = аа ' = 1, так что а обратный элементу а '. Но в силу единственности обратного элемента (а ') ' = а.~] Имеется бесконечно много примеров групп. Многие группы содержат бесконечное число элементов. Примерами являются целые числа относительно сложения, положительные рацио- нальные числа относительно умножения '), множество веществен- нозначных (2 х 2)-матриц относительно сложения. Многие дру- гие группы содержат только конечное число элементов. Приме- рами являются двухэлементное множество 10, 1} относительно операции «исключительного или» (сложения по модулю 2), мно- жество 10, 1, ..., 8, 9) относительно сложения по модулю 10 и т. д. В качестве более сложного примера построим конечную не- абелеву гр уппу, т. е. менее известную структуру. Одним из способов построения групп с интересной алгебраической струк- турой является исследование преобразований простых геометри- ческих фигур и алгебраическая интерпретация этих преобразо- ваний. Например, равносторонний треугольник с вершинами А, В и С (занумерованными по часовой стрелке) можно вращением или отражением относительно оси отобразить на себя точно шестью различными способами, причем каждое из этих враще- ний и отражений имеет обратное преобразование. Используя некоторые очевидные факты, можно быстро построить алгебраи- ческую группу. Обозначим эти шесть преобразований символами 1, а, b, с, d и е следующим образом: 1 = (АВС-»- АВС) (нет изменений), а = (АВС-»- САВ) (вращение против часовой стрелки), Ь = (АВС-»- ВСА) (вращение по часовой стрелке), с = (АВС-»- АСВ) (отражение относительно биссек- трисы угла А) d = (АВС-»- СВА) (отражение относительно биссек- трисы угла В), е = (АВС-»- ВАС) (отражение относительно биссек- трисы угла С), ') Этот пример дает удобный повод предостеречь относительно терминологии. В случае произвольной абелевой группы групповая операция обычно называется сложением, но не обязательно является обычным сложением. В данном примере она является обычным умножением. P. Блейхут 
Q4 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ где преобразование АВС ‒ ~ BCA означает, что вершина А пере- ходит в вершину В, вершина В переходит в вершину С, а вер- шина С переходит в вершину А. Таким образом, треугольник поворачивается иа 120'. Пусть группа (G, ~) определяется мно- кеством 6=11,а,Ь,с,d,е} и у*х является элементом группы, обозначающим преобразо- вание, которое получается последовательным выполнением сна- чала преобразования х, а затем преобразования у; например, a~d = (АВС-~- ВСА) ~(ABC~ СВА) = (АВС- ВАС) = е. Поступая таким образом, можно построить таблицу для х*у: Поскольку таблица построена, можно забыть о ее геометри- ческом происхождении. Таблица сама определяет группу. Под- черкнем, что это пример неабелевой группы, так как а~ с ~'= с*а. Заметим также, что каждый элемент появляется один раз в каж- дом столбце и в каждой строке. Для конечных групп это выпол- няется всегда. Нашим последним примером группы является группа пере- становок п букв. Пусть Х представляет собой множество 11, 2, ..., п}. Взаимно-однозначное отображение этого множества на самого себя называется перестановкой. Всего имеется nt таких перестановок, и можно определить группу, называемую симме- трической группой и обозначаемую через S„, элементами которой являются перестановки на множестве Х. (Сначала может не- сколько смущать то обстоятельство, что элементами группы яв- ляются операторы операторы перестановок на множестве X. На самом деле в примере преобразований равностороннего тре- угольника речь также идет о группе перестановок.) Если взять перестановку на выбранных целых числах и переставить их еще раз, то получится другая перестановка на этих целых числах. Выберем в качестве групповой операции такую композицию 
2 2 ГРУППЫ 35 перестановок и возьмем, например, и = 4. Всего имеется 4! = 24 перестановок в группе S4. Типичный элемент группы S4 равен а = [(1 2 3 4) ‒ з- (3 1 4 2) ] и является перестановкой, заменяющей 1 на 3, 2 на 1, 3 на 4 и 4 на 2. Другой такой перестановкой является Ь = [(1 2 3 4) -э (4 1 3 2) ]. Тогда произведение Ь:~ а в группе S4 равно перестановке, полу- чающейся в результате применения сначала а, а затем b: b ~ а = [(1 2 3 4) -э (2 3 4 1) ], что является элементом группы S4. С таким определением умно- жения группа перестановок S4 является неабелевой группой, содержащей 24 элемента. Пусть 6 группа, и пусть Н некоторое подмножество в 6. Тогда Н называется подгруппой группы 6, если оно является группой относительно ограничения операции е на H. Для того чтобы проверить, что непустое множество Н является подгруп- пой группы 6, необходимо только проверить, что для всех а и b из Н элемент а ~ Ь принадлежит Н (замкнутость) и что элемент, обратный к а из Н, также принадлежит H. Остальные группо- вые свойства наследуются из группы 6. Как вскоре мы увидим при рассмотрении циклических подгрупп, в случае конечных групп из свойства замкнутости автоматически вытекает даже свойство существования обратного элемента. Например, множество всех четных чисел и множество чисел, кратных 3, являются подгруппами в множестве всех целых чисел (положительных, отрицательных и нуля) относительно опера- ции сложения. Один из путей построения подгруппы Н конечной группы 6 состоит в выборе произвольного элемента h группы Н и формиро- вании H как множества элементов, образованнь!х умножением h на самого себя произвольное число раз. Таким образом, строим последовательность элементов h, h*h, h*h*h, h*h*h*h, ..., обозначая их для простоты через h, h, h3, h4, .... Так как 6 ко- нечна, то только конечное число этих элементов различно, так что с некоторого момента последовательность начнет повторяться. Первым повторяющимся элементом должен быть сам элемент h, так как если два различных элемента h' и h> равны, то их можно умножить на элемент, обратный h, и получить, что h' ‒ ' и h> ‒ ' также равны. Далее заметим, что если h> = h, то h> ‒ ' = 1, еди- ничному элементу гр уппы. Множество Н называется подгр уп- пой, порожденной элементом h. Число с элементов в Н называется 2* 
36 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ gm+~2 Дт + ~3 ° ° gm + h ат* hi=0ò Первый элемент слева в каждой строке называется лидером смеж- ного класса. Каждая строка таблицы называется левым смежным классом, а в случае абелевой группы просто смежным классом. Если при построении разложения группы на смежные классы использовать правое умножение на элементы группы 6 вместо левого, то строки называются правыми смежными классами. B силу указанных выше правил построения разложение на смеж- ные классы всегда представляется прямоугольной таблицей, все строки которой полностью заполнены. Докажем теперь, что всегда получается таблица, в которой каждый элемент группы встречается точно один раз. порядком элемента h. Множество элементов h, h', h', ..., h' = 1 называется циклом. Цикл является подгруппой, так как произ- ведение двух элементов такого вида снова является элементом этого вида, а элемент, обратный элементу h', равен h' ‒ ' и, следо- вательно, является одним из элементов цикла. Группа, состоя- щая из всех степеней одного из ее элементов, называется цик- лической гру~гпой. Для заданных конечной группы 6 и подгруппы H существует важная операция, которая устанавливает некоторые взаимо- связи между 6 и H и называется разложением группы 6 на смеж- ные классы no H. Обозначим через Ь„Ь„Ь„... элементы из Н, причем через h обозначим единичный элемент. Построим таб- лицу следующим образом. Первая строка состоит из элементов подгруппы Н, причем первым слева выписан единичный элемент h1 и каждый элемент из Н записан в строке один и только один раз. Выберем произвольный элемент группы 6, не содержащийся в первой строке. Назовем его g, и используем в качестве первого элемента второй строки. Остальные элементы второй строки получаются умножением слева элементов подгруппы на этот пер- вый элемент. Аналогично строим третью, четвертую и пятую строки: каждый раз в качестве элемента первого столбца выби- раем не использованный на предыдущих шагах элемент группы 6. Построение заканчивается тогда, когда после некоторого шага оказывается, что каждый элемент группы записан в некотором месте таблицы. Процесс обрывается в силу конечности 6. В ре- зультате получается следующая таблица.' hç h„ Д2 '" h1 Дг2 Дг2 ~2 g2* h> ' ' ' Дг2 ~ h„ Й'з * h1, = =gÜ Кз *h2 Д'3* hç ,.. Д'3 ~ h„ 
Теорема 2.2.3. В разложении группы 6 на смежные классы каждый элемент из 6 встречается один и только один раз. Доказательство. Каждый элемент появится хотя бы один раз, так как в противном случае процесс не остановится. QoxameM теперь, что каждый элемент не может появиться дважды в одной и той же строке и что один и тот же элемент не может появиться в двух разных строках. Предположим, что два элемента одной и той же строки, g< * hj и g; ~ h~, равны. Тогда умножение [слева. Перев. ] каждого из них на g~' дает равенство h~ = h~. Это противоречит тому, что каждый элемент подгруппы выписан в первой строке только один раз. Предположим, что два элемента различных строк g<~h> и g>+h< равны и что й ~ ~3 Умножение справа Hà h приводит к равенству ф; = g<~h<~hq'. Тогда g; порождает й-й смежный класс, так как элемент h< * h принадлежит подгруппе. Это противоречит указанному выше правилу выбора лидеров смеж- ных классов. G Следствие 2.2.4. Если H подгруппа группы 6, то число элементов в H делит число элементов в 6. Таким образом, (Порядок H) ° (Число смежных классов 6 по H) = = (Порядок 6). 0 Доказательство следует непосредственно из прямоугольности таблицы разложения на смежные классы. Теорема 2.2.5. Порядок конечной группы делится на порядок любого из ее элементов. Доказательство. Группа содержит циклическую подгруппу, порожденную любым из ее элементов; таким образом, утвержде. ние теоремы вытекает из следствия 2.2.4. D 2.3. КОЛЬЦА Следующей необходимой нам алгебраической структурой является кольцо. Кольцо представляет собой абстрактное множество, которое является абелевой группой и наделено дополнительной структурой. Определение 2.3.1. Кольцом Я называется множество с двумя определенными на нем операциями: первая называется сложением (обозначается +), вторая называется умножением (обозначается соседним расположением), причем имеют место следующие ак- сиомы: 1) относительно сложения (+) P является абелевой группой; 2) замкнутость: произведение аЬ принадлежит Р для любых а и b из Я; 
38 ГЛ. 2 ° ВВЕДЕНИЕ В АЛГЕБРУ 3) закон ассоциативности: а (bc) = (ab) c; 4) закон дистрибутивности:. a(b+c) =ah+ac, (b+c)a =ba+ñà. Сложение в кольце всегда коммутативно, а умножение не обязательно должно быть комм утативным. Коммутативное кольцо ‒ это кольцо, в котором умножение коммутативно, т. е. ab = ba для всех а и b из R. Закон дистрибутивности в определении кольца связывает операции сложения и умножения. Этот закон имеет несколько непосредственных следствий, как, например, приведенная ниже теорема. Теорема 2.3.2. Для произвольных элементов а и b в кольце R (i) аО=Оа=О, (й) а ( b) = ( ‒ а) b = ‒ (аЬ). Доказательство. (i). аО = а (О + О) .‒ ‒ аО + аО. Вычитая из обеих частей равенства аО, получаем О = аО. Вторая часть утверждения (i) доказывается аналогично. (й). О=аО=а(b b) =ab+а( ‒ b). Следовательно, а ( ‒ b) = (ab). Вторая часть утверждения (й) доказывается аналогично. О Операция сложения в кольце имеет единичный элемент, назы- ваемый нулем. Операция умножения не обязательно имеет еди- ничный элемент, но если он есть, то является единственным. Кольцо, обладающее единственным элементом относительно умно- жения, называется кольцом с единицей. Этот единичный элемент называется единицей и обозначается символом 1. Тогда для всех а из R имеет место равенство la = аl = а. Относительно операции сложения каждый элемент кольца имеет обратный. Относительно операции умножения элемент, обратный данному элементу, не обязательно существует, но в кольце с единицей обратные элементы могут существовать. Это означает, что для данного элемента а может существовать элемент b, такой, что ab = 1. Если это так, то b называется пра- вым обратным к а. Аналогично если существует элемент с, такой, что ca = 1, то с называется левым обратным к а. Теорема 2.3.3. В кольце с единицей (i) единица единственна; {ii) если элемент а имеет как правый обратный b, так и левый обратный с, то элемент а называются обратимым, 
ю 4 полЯ 39 причем обратный ему элемент является единственным (и обозначается через а '); (iii) (а ') ' =- а. Доказательство. Рассуждения аналогичны проведенным при доказательстве теоремы 2.2.2. О Обратимый элемент кольца называется единицей. Множество всех единиц в кольце замкнуто относительно умножения, так как если а и b единицы, то с = ab имеет обратный элемент, равный с ' = b 'а '. Теорема 2.3.4. (i) Множество единиц кольца образует группу относительно умножения в кольце. (ii) Если с = ао и с единица, то а имеет правый обратный, а b ‒ левый обратный элемент. Доказательство. Непосредственная проверка. О Имеется много известных примеров колец, и ниже приводятся некоторые из н их. Представл яется поуч ительным проиллюстр и- ровать этими примерами теоремы 2.3.3 и 2.3.4. 1. Множество всех вещественных чисел образует коммута- тивное кольцо с единицей относительно обычных сложения и ум- ножения. Каждый ненулевой элемент кольца является единицей. 2. Множество всех целых чисел (положительных, отрицатель- ных и нуля) образует коммутативное кольцо с единицей относи- тельно обычных сложения и умножения. Это кольцо принято обозначать через ~; его единицами являются только «+1. 3. Множество всех квадратных (и ~ n)-матриц, элементами которых являются вещественные числа, образует некоммутатив- ное кольцо с единицей относительно матричного сложения и умножения. Единицей является единичная (и х и)-матрица. Еди- ницами в кольце служат все невырожденные матрицы. 4. Множество всех квадратных (n x n)-матриц, элементами которых являются целые числа, образует некоммутативное кольцо с единицей относительно матричного сложения и умножения. 5. Множество всех многочленов от х с вещественными коэф- фициентами образует коммутативное кольцо с единицей отно- сительно сложения и умножения многочленов. Единицей кольца является многочлен нулевой степени р (х) =- 1. 2.4. ПОЛЯ Нестрого говоря, абелевой группой является множество, в кото- ром можно складывать и вычитать, а кольцом множество, в котором можно складывать, вычитать и умножать. Более силь- 
4О ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ ной алгебраической структурой, называемой полем, является множество, в котором можно складывать, вычитать, умножать и делить. Определение 2.4.1. Полем называется множество с двумя определенными на нем операциями сложением и умножением, причем имеют место следующие аксиомы: 1) множество образует абелеву группу по сложению; 2) поле замкнуто относительно умножения, и множество нену- левых элементов образует абелеву группу по умножению; 3) закон дистрибутивности: (а + b) с = ас + Ьс для любых а, b, с из поля. Единичный элемент относительно сложения принято обозна- чать через О и называть нулем, аддитивный обратный элементу а элемент через а; единичный элемент относительно умноже- ния обозначать через 1 и называть единицей, мультипликативный обратный к элементу а элемент через а-~. Под вычитанием (а b) понимается а + ( b); под делением (alb) понимается b-~a. Широко известны следующие примеры полей: 1) IR: множество вещественных чисел, 2) C: множество комплексных чисел, 3) Q: множество рациональных чисел. Все эти поля содержат бесконечное множество элементов. Мы интересуемся полями, содержащими конечное число элемен- тов. Поле с д элементами, если оно существует, называется конеч- ным полем или полем Галуа и обозначается через GF (g). Что представляет собой наименьшее поле? Оно обязательно содержит нулевой элемент и единичный элемент. На самом деле этого уже достаточно при следующих таблицах сложения и умно- жения: Это поле GF (2), с которым мы уже встречались в $ 2.1. Проверка показываег, что не существует другого поля с двумя элементами. В гл. 4 конечные поля будут изучены более детально. Сейчас мы приведем два простых примера и опишем их таблицами сло- жения и умножения (вычитание и деление неявно определяются этими же таблицами). 
2.4, ПОЛЯ 41 Поле GF(3) = (О, 1, 2) с операциями Поле GF (4) = 10, 1, 2, 3) с операциями Отметим, что умножение в поле GF (4) не является умножением по модулю 4 и сложение не является сложением по модулю 4. Существуют многие другие поля Галуа. Даже для этих приме- ров очень маленьких полей не так легко с помощью простой про- верки установить, что они обладают указанной структурой. Структура этих и больших полей будет разъясняться в гл. 4. Прежде чем расстаться с этими примерами, заметим, что поле GF (2) содержится в GF (4), так как в поле GF (4) два эле- мента О и 1 складываются и умножаются точно так же, как они складываются и умножаются в поле GF (2). Однако GF (2) He со- держится в GF (3). Определение 2.4.2. Пусть F некоторое поле. Подмножество в F называется подподем, если оно само является полем относи- тельно наследуемых из F операций сложения и умножения. В этом случае исходное поле F называется расширением поля. Для того чтобы доказать, что подмножество конечного поля является подполем, необходимо доказать только, что оно содер- жит ненулевой элемент и что оно замкнуто относительно сложе- ния и умножения. Все остальные необходимые свойства насле- дуются из F. Обратные элементу р по сложению или умножению элементы содержатся в порожденной р циклической группе относительно операции сложения или умножения. Поле обладает всеми свойствами кольца, а также важным дополнительным свойством в нем всегда возможно сокращение. 
42 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ Сокращение представляет собой слабую форму деления и озна- чает, что если ab = ас, то b = с. Теорема 2.4.3. Если в произвольном поле ab = ac и а ~ О, то b=c. Доказательство. Умножь,ть на а '. П Некоторые кольца могут также удовлетворять этому условию сокращения, но все-таки не быть полями. Простым примером служит кольцо целых чисел. В этом кольце сокращение возможно, но приведенное для теоремы 2.4.3 доказательство не проходит, так как в этом кольце не существует элемента а-'. Кольца, в ко- торых всегда возможно сокращение, имеют специальное название. Определение 2.4.4. Коммутативное кольцо, в котором b = с, если ab = ас и элемент а отличен от нуля, называется областью и,елостности. 2.5. ВЕКТОРН Ы Е ПРОСТРАНСТВА Известный пример векторного пространства дает трехмерное евклидова пространство, фигурирующее во многих физических задачах. Его обобщением является и-мерное векторное простран- ство над полем вещественных чисел. Понятие и-мерного про- странства тесно связано с идеями линейной алгебры и теории матриц и играет важную роль во многих приложениях. Для произвольного поля можно дать абстрактное определе- ние векторных пространств. Определение 2.5.1. Пусть F некоторое поле. Назовем эле- менты из F скалярам и. Множество V называется векторным пространством, и его элементы называются векторами, если для пар элементов из V определена такая операция векторного сложения (обозначается плюсом), а для элементов из V и эле- ментов из F определена такая операция умножения на скаляры (обозначается приписыванием), что результат выполнения опе- рации дает элемент из V, причем имеют место следующие ак- сиомы: () V является абелевой группой относительно векторного сложения; 2) закон дистрибутивности: для каждой пары векторов v,, v и скаляра с выполняется равенство с (v~ -' vg) = cvy + ~2, 3) закон дистрибулиiвности: для произвольного вектора v и произвольных скаляров с, и с., выполняются равенства 1ч =- v н (с,',- с.,) ч = cv,' ,‒ cv,.; 
2.5. BEКТОРНЫE ПРОСТРАНСТВА 43 4) закон ассоциативности: для произвольного вектора v и произвольных скаляров с, и с, выполняется равенство (с1С2) v = с1 (cgv). Нулевой элемент из V называется началом координат простран- ства V и обозначается через О. Отметим, что мы использовали символ + двумя различными способами: для векторного сложения и для сложения в поле. Отметим такими, что мы использовали символ О для обозначения нулевого элемента поля и символ 0 для обозначения начала коор- динат векторного пространства. В качестве менее известного примера векторного простран- ства V можно указать множество многочленов от х с коэффициен- тами из GF (q). Векторами этого пространства служат много- члены. Векторное сложение совпадает со сложением многочле- нов, а умножение на скаляр с умножением многочленов на элементы поля. В векторном пространстве V сумма вида u = a~v~ --,‒ a2v2 -}- .. ~ agv] где а; ‒ скаляры, называется линеинои комбинацией векторов v„..., v<. Множество векторов v,, ..., vj, называется линейно зависимым, есл и существует множество не всех равных нулю скаляров 'a,, ..., а~(), такое, что а,ч, + а,ч, -,'‒ ‒,' а„ч~ = О. Множество векторов, которое не является линейно зависимым, называется линейно независимым. Никакой вектор из множества линейно независимых векторов не может быть представлен в виде линейной комбинации остальных векторов этого множества. Отметим, что нулевой вектор 0 не может принадлежать линейно независимому множеству; каждое множество, содержащее О, является линейно зависимым. О множестве векторов говорят, что оно порождает векторное пространство, если каждый вектор пространства равен хотя бы одной линейной комбинации векторов из этого множества. Век- торное пространство, порождаемое конечным множеством век- торов, называется конечномерным векторным пространством. Мы в первую очередь интересуемся конечномерными векторными пространствами. Теорема 2.5.2. Если векторное пространство V порождено конечным множеством из k векторов А =- }v„...,v„} и V содер- жлт т линейно независимых векторов В =- ',и„..., и,„}, то й ~т. 
44 гд. г. введEHHE в AJll'Eâåó Доказательство. Мы опишем правило построения последова- тельности множеств А,, А» А„..., А, таких, что каждое из множеств порождает V, каждое из множеств содержит Йэлемен- тов, выбираемых из А и В, и множество А, содержит и» u„. Таким образом, среди Й элементов множества А будут содер- жаться u, u, и, следовательно, 4 ~ wт. Так как никакая линейная комбинация векторов из В с нену- левыми коэффициентами не равна нулю, то никакой элемент из В не может быть представлен в виде линейной комбинации других элементов из В. Если множество А„, не содержит а„и порож- дает V, то должен быть способ представления а„в виде линей- ной комои наци и элементов из А „„включающи й хотя бы оди н вектор из А (скажем, v;), не принадлежащий множеству В. Урав- нение, задающее эту линейную комбинацию, можно разрешить относительно v, представив v> в виде линейной комбинации из а„и других элементов из А,»,. Это построение осуществляется следующим образом. Пусть Ао ‒ ‒ А. Если А,, содержит а„то полагаем А„= А„,; в про- тивном случае а„не принадлежит множеству А„„но может быть представлен в виде линейной комбинации элементов из А„» содержащей некоторый элемент v; из А, не принадлежащий В. Множество А„образуем из множества А„, заменой v> Hà и,. Произвольный вектор v равен некоторой линейной комбинации элементов из А„», и, следовательно, также элементов из А„ если исключить вектор ч;, используя линейную комбинацию, связывающую ч; и u„c другими векторами из А,,. Следова- тельно, множество А„порождает V, и из А„», мы построили А, с желаемыми свойствами. Таким образом, множество А,„может быть построено, и доказательство закончено. 2 Теорема 2.5.3. Два множества линейно независимых векторов, порождающие одно и то же векторное пространство, содержат одинаковое количество векторов. Доказательство. Если одно множество содержит и векторов а другое й векторов, то по теореме 2.5.2 m w й и й w т, и, сле- довательно, т = й. П Число линейно независимых векторов в множестве, порожда- ющем конечномерное векторное пространство V, называется размерностью пространства V. Множество й линейно независи- мых векторов, порождающее Ьмерное векторное пространство, называется базисом этого пространства. Согласно теореме 2.5.2, в Ьмерном векторном пространстве каждое множество, содер- жащее более й векторов, является линейно зависимым. Теорема 2.5.4. В И-мерном векторном аространстве V любые й линейно независимых векторов обрюуют базис пространства V. 
2.5. ВЕКТОРНЫЕ ПРОСТРАНСТВА 45 Доказательство. Пусть }v,, v„} произвольное множе- ство й линейно независимых векторов из V. Если оно не порождает ~~, то в V найдется такой вектор v, что он не равен никакой ле- нейной комбинации векторов v„..., v>,. Множество }ч, v» v„} содержит Й + 1 линейно независимых векторов из V, что про- тиворечит теореме 2.5.3. Следовательно, множество Iv,, v>} горождает V и является базисом. Б Если множество линейно независимых векторов й-мерного пространства не является базисом, то оно должно содержать меньше k векторов. Дополнение такого множества векторами так, чтобы оно превратилось в базис, называется пополнением базиса. Теорема 2.5.5. Заданное множество линейно независимых век- торов в конечномерноя векторном пространстве всегда может быть дополнено до множества, образую~це о базис. Доказательство. Если данное множество не является базисом, то некоторый вектор пространства не является линейной комби- нацией векторов данного множества. Выберем такой произволь- ный вектор и присоединим его к исходному множеству, увеличив объем множества на единицу. Если полученное множество все еще не является базисом, повторим процесс. Процесс обяза- тельно оборвется, так как число линейно независимых векторов в множестве не может превосходить размерность пространства. Полученное по завершении процесса множество векторов удо- влетворяет условиям теоремы. О Непустое подмножество векторного пространства называется векторным подпространством, если оно также является вектор- ным пространством относительно исходных операций векторного сложения и умножения на скаляр. Относительно операции век- торного сложения векторное пространство является группой, а векторное подпространство подгруппой. Чтобы установить, что непустое подмножество векторного пространства образует подпространство, достаточно проверить только замкнутость под- множества относительно векторного сложения и умножения на скаляры. Замкнутость относительно умножения на скаляры гарантирует, что нулевой вектор принадлежит подмножеству; другие необходимые свойства наследуются из исходного про- странства. Теорема 2.5.6. Множество всех линейных комбанаций множе- ства векторов }ч„..., ч„} произвольного векторного пространства V образует подпрострацство в V. Доказательство. Каждая линейная комбинация векторов v„..., v>, является вектором из V, и поэтому множество 5' всех линей- ных комби наций образует подмножество пространства V. Оно пе пусто, так как О принадлежит 5'. Мы должны показать, что 
4Q ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ 5' является подпространством. Если w =- b,v, + ... + b„v„è u = ср, + ... + c<v> ‒ два произвольных элемента подмноже- ства W, то w + и = (b, + с,) v, + ... + (b< + с„) v~ также при- надлежит W. Далее, для произвольного вектора w скалярное кратное вектора w, aw = ab,v, + ... + аЬ„ч~, также принад- лежит O'. Так как N' замкнуто относительно векторного сложе- ния и умножения на скаляр, то оно является векторным под- пространством. П Теорема 2.5.7. Если размерность векторного подпространства N' конечномерного векторного пространства V равна размерно- сти V,то I'= V. доказательство. Обозначим размерность обоих пространств через k. Выберем в O' базис. Он образует множество й линейно независимых векторов пространства V, поэтому является бази- сом в V. Следовательно, каждый вектор из 5' принадлежит также V. О Для заданного поля F величина (а„а„..., а~), составлен- ная из элементов поля, называется и-последовательностью эле- ментов поля. Относительно операций покомпонентного сложения и покомпонентного умножения на скаляры множество и-последо- вательностей элементов поля F образует векторное пространство, которое обозначается через F С помощью выбора базиса v ч„лю5оа конечномерное векторное пространство можно превра- тить в пространство п-последовательностей, представляя каждый вектор v = ар, + ... + a„v„n-последовательностью его коэф- фициентов (а,, ..., а„). Следовательно, мы можем ограничиться рассмотрением только векторных пространств и-последователь- ностей. Скалярное произведение двух и-последовательностей из F: и=(а„..., а„) и v=(b„..., Ь„) равно скаляру, определяемому так: и v=(aÄ ..., а„) (b„..., Ь„)=аb,+. ‒,а„Ь„. Можно сразу же проверить, что и v = vи, ,(си) v = с (и v) и w (и + v) = (w и) + (w v). Если скалярное произведение двух векторов равно нулю, то они называются ортогональными. Ненулевые векторы над GF (q) могут быть ортогональны сами себе. Вектор, ортогональный к каждому элементу множества, называется ортогональным к множеству. Теорема 2.5.8. Пусть V ‒ векторное пространство и-после- довательностей над некоторым полем F, и пусть N' некоторое его подпространство. Множество векторов, ортогональных к N', также образует подпространство. 
2.5. ВЕКТОРНЫЕ ПРОСТРАНСТВА 47 Доказательство. Ооозначим через U множество всех векто- ров, ортогональных к 5'. Так как 0 принадлежит U, то U не пусто. Пусть w произвольный вектор из 5', à и, и и, два произвольных вектора из U. Тогда w а, = w а, = О и w а, + + ш и, = 0 = w (и, + и,), так что и, + и, принадлежит U. Также w (сп,) = с (w и,) = О, и, следовательно, сп, принадле- жит U. Таким образом, U является подпространством. [] Множество векторов, ортогональных к 5', называется орто- гональным дополнением N' и обозначается через 5'~. В случае конечномерных векторных пространств над полем вещественных чисел пересечение 5' и 5'~ содержит только нулевой вектор, но над полем GF (q) надпространство W~ может иметь нетривиаль- ное пересечение с N' или может даже принадлежать 5' либо со- держать _#_. В действительности можно даже построить при- меры подпространств, которые сами являются своими ортогональ- ными дополнениями. Например, в GF' (2) надпространство 100, 11) совпадает со своим ортогональным дополнением. Теорема 2.5.9. Вектор, ортогональный к каждому вектору множества, порождаюи~его 5', принадлежит ортогональному дополнению пространства N'. Доказательство. Предположим, что множество ~ш„..., ш„) порождает И~. Вектор w из F можно записать в виде w=c,w, + + c„w„. Тогда llV ll = (С1Ш1 ‒; + Сдшд) ll = ClllVl ll + ° ° ° ~ СПЧЧд ° ll. Если и ортогонален к каждому w;, то он ортогонален к каждому е из N'. П Если размерность подпространства 5' в векторном простран- стве и-последовательностей равна k, то размерность ортогональ- ного дополнения Wl- равна п k. Этот факт часто используется в дальнейшем и поэтому будет доказан в виде теоремы 2.б.9. Мы со;племся на этот факт при доказательстве следующего ре- зультата. Теорема 2.5.10. Пусть 5' подпространство в пространстве п-последовательностей, и пусть Г- его ортогональное допол- нение. Тогда 5' представляет собой ортогональное дополнение подпространства 5'~ . Доказательство. Пусть размерность N' равна k. Тогда, со- гласно теореме 2.6.9, размерность 5'-(- равна и k, а размер- ность ортогонального дополнения пространства %'~ равна k. Но каждый вектор из 5' ортогонален к W )-. Следовательно, 5' содержится в ортогональном дополнении к W'-~- и имеет ту же самую размерность, так что эти подпространства совпадают. Д 
48 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ 2.6. ЛИНЕЙНАЯ АЛ ГЕБРА а„ а~, ...а,„, а22 ... а„„ = [ац], аП, В большинстве приложений кольцо R в действительности является полем, и мы ограничимся этим случаем. Как правило, мы будем рассматривать матрицы над конечным полем Ог' (д). Множество элементов а«, для которых номер строки совпа- дает с номером столбца, называется главной диагональю. Если п равно т, то матрица называется квадратной матрицей. (и X Х n)-матрица, все элементы главной диагонали которой равны единичному элементу поля, а остальные элементы равны нулевому элементу поля, называется единичной (и X n)-матрицей. Единичная матрица обозначается через I. Примерами единич- ных матриц являются 1 0 0 1 Две (п X т)-матрицы А и В над полем GF (q) можно скла- дывать по правилу а1~+ bye 1 а1„, ‒, А+В = 1 ali1 П(Л [ П!П Широко используемые разделы прикладной математики ли- нейная алгеора, в частности теория матриц, обычно изучаются только для поля вещественных чисел и поля комплексных чисел, однако большинство известных операций линейной алгебры спра- ведливо также для произвольного поля. Мы кратко изложим этот материал отчасти в порядке обзора и отчасти для доказа- тельства того, что известные методы остаются справедливыми над произвольным полем (а иногда даже над произвольным кольцом). Определение 2.6.1. (и Х m)-матрицей А над кольцом Я назы- вается прямоугольная таблица, состоящая из п строк и т столб- цов и содержащая nm элементов из кольца R: 
2.В. ЛинейнАЯ АлГеБРА 49 (п X и)-матрицу А можно умножать на элемент поля р по пра- вилу Ра„ра12 ... Ра,m Pa„, ра„,- ... Ра„,„ =1,..., 1, j=1,..., т. обозначается через С =АВ. Как легко проверить, множество квадратных (п Х n)-матриц образует кольцо относительно так определенных умножения и сложения матриц. Эго кольцо не коммутативно, но обладает еди- ницей, а именно единичной (п X n)-матрицей. Матрицу можно разбить на блоки по правилу A„A„, A, и A„ìåíüøèå матрицы, размеры которых очевидным Образом дополняют друг друга до размеров матрицы А. А именно сумма числа строк матрицы А„(или А„) и числа стРок матрицы Д„, (или А„) Равна числУ стРок матРицы А; аналогич- ное утверждение выполняется для столбцов. Матрицы можно перемножить поблочно, а именно если 1 В,, В= е 1 В„; В„ 1 А,, А,, А= 1 А, ',A и С = АВ, то при условии корректного выбора размеров блоков (корректного в том смысле, что все произведения и суммы матриц определены) 1 С= А,,В,, +А,2В~~ А,~В~~+А,2В22 Ag В,, + А В, ', А„В,2+ A>28'> ! Такое разло кение можно получить как простое следствие аксиом ассоциативности и дистрибутивиости основного поля. (1 X n)-матрицу А можно получив результирующую и ~1 с;;= Z aib с k'=1 Эго произведение матриц умножить на (п X и)-матрицу В, (1 X и)-матрицу С, по правилу 1 А,,',А,, I А„, А22 
60 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ Транспонированной к (и X т)-матрице А называется (т X X; = а,,. Таким образом, строками матрицы А' служат столбцы матрицы А, а столбцами матрицы А> служат строки матрицы А. Обратной к квадратной матрице А называется квадратная матрица А ~ (если она существует), такая что А ~А = АА-> = 1. Как можно сразу проверить, множество всех обратимых (п X n)-матриц образует группу относительно операции умножения. Следовательно, если матрица имеет обрат- ную, то обратная матрица единственна, так как в силу теоремы 2.2.2 это свойство выполняется в каждой группе. Матрица, име- ющая обратную, называется невырожденной; в противном случае она называется вырожденной. Если С = АВ, то при условии, что А и В обратимы, С~=В~А~, так как (В~А~)С=1= = С (В ~А ~). Впоследствии мы увидим, что если у А или у В нет обратной матрицы, то и у С нет обратной матрицы. Определение 2.6.2. Пусть задано поле F. Определитель ква- дратной (п X n)-матрицы А для каждого п является функцией на множестве всех (п Х п)-матриц над F со значениями в поле F, обозначается через det (А) и задается формулой det(A) = ,;,; аи a~; ... аи Vå. 1''' и 1 2 где i'„æ,, ..., 1„перестановка на множестве целых чисел 11, 2, ..., и), (;, ~ равно ~-1 в зависимости от четности или нечет- кости перестановки, а суммирование ведется по всем переста- новкам. Нечетная перестановка определяется как произведение нечет- ного числа транспозиций (транспозицией называется переста- новка двух членов). Четная перестановка определяется как пере- становка, которая не может быть получена нечетным числом транс- позиций. Один из способов сделать это определение наглядным состоит в рассмотрении множеств всех матриц, которые можно получить из матрицы А перестановкой строк. ~ля каждой из таких матриц возьмем произведение всех членов, лежащих на главной диаго- нали (если перестановка была нечетной, то изменим знак произ- ведения), и сложим все полученные таким образом произведения. Конечно, вычислять таким образом определитель не следует, но это дает хороший способ установления свойств определи- телей. В приведенной ниже теореме перечислены свойства функции det (А), вытекающие непосредственно из ее определения. Теорема 2.6.3. (i) Если все элементы некоторой строки квадратной матрицы равны нулю, то определитель этой матрицы равен нулю. 
2.8. ли ней нАЯ АлГеБРА 5] (ii) Определитель матрицы равен определителю транспони- рованной матрицьс. (iii) Если две строки матрицы поменять местами, то ee опре- делитель изменит знак. (iv) Если две строки матрицы равны, то ее определитель ра- вен нулю. (v) Если все элементы одной строки матрицы умножить на злемент поля с, то определитель новой матрицы будет равен определителю исходной матрицы, умноженной на с. (vi) Если матрицы А и В отличаются только i-u строкой, то сумма «х определителей равна определителю матрицы С, t',-я строка которой равна сумме с-х строк матриц А и В, а осталь- ные строки равны соответствующим строкам матрицы А или В. (vii) Если к элементам некоторой строки матрицы Й раз прибавить соответствующие злементьс некоторой другой ее строки, то определитель матрицы не изменится. Доказательство: исполь- зовать свойства (iv), (v) и (vi). (viii) Определитель матрицы отличен от нуля тогда и только тогда, когда ее строки (столбцы) линейно независимы. Доказательство предоставляется читателю в качестве упраж- нения. Замечание: в общем случае утверждение (iv) не может быть доказано с помощью перестановки двух строк и применения свойства (iii). Почему? П Если в квадратной матрице удалить строку и столбец, содер- жащие элемент а;;, то определитель оставшейся квадратной таблицы размера и 1 называется минором элемента а;; и обо- значается через М;>. А лгебраическое дополнение, обозначаемое здесь через С;>, определяется равенством C„‒ ‒ ( ‒ 1)'+~ М;;. Из способа задания определителя матрицы следует, что алгеб- раическое дополнение элемента а,~ является коэффициентом при а;; в разложении определителя: П det(A) = Q a;„C«. .'г=-1 Эго известная формула Лапласа для разложения определителей. Она дает выражение определителя (и X и)-матрицы через опре- делители (и 1) X (и ‒ 1)-матриц. Формула разложения Лап- ласа лежлт в основе рекуррентного способа вычисления опре- делителей. Если а«заменить на а;~, то получится сумма ~~,al~C;.I„ равная определителю новой матрицы, полученной из старой за- 
52 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ меной элементов ~-й строки элементами j-й строки; этот опреде- литель равен нулю, если ~~ ь Таким образом, det(A), с = у, О i =ф'=,1. Q а,,C«= 4=1 Поэтому если det (А) ~ О, то матрица А = [а„] имеет обратную, равную с; с1е1 (А) Если det (А) = О, то обратной матрицы не существует. Строки (п X т)-матрицы А над GF (q) можно рассматривать как множество т-мерных векторов над GF (q). Пространство строк матрицы А определяется как множество всех линейных комбинаций векторов-строк матрицы А. Размерность простран- ства строк называется рангом матрицы по строкам. Аналогично столбцы матрицы А можно рассматривать как множество и-мер- ных векторов над GF (q). Пространство столбцов матрицы А определяется как множество всех линейных комбинаций векто- ров-столбцов матрицы А, а размерность пространства столбцов называется рангом матрицы по столбцам. Множество всех век- торов ч, таких, что Av' = О, называется нулевым простран- ством матрицы А. Ясно, что нулевое пространство является под- пространством в GF" (q). В частности, нулевое пространство является ортогональным дополнением пространства строк матрицы А, так как нулевое пространство можно задать как множество всех векторов, ортогональных ко всем векторам пространства строк. Элементарными операциями над строками матри цы назы- ваются следующие действия: 1) перестановка двух произвольных строк; 2) умножение произвольной строки на нулевой элемент поля; 3) замена произвольной строки на сумму ее самой и некото- рого кратного любой другой строки. Каждая элементарная операция над строками обратима, и обратная операция имеет такой же вид. Каждая элементарная операция над строками (и X n)-матрицы A может быть выполнена путем левого умножения A на соответствующим образом подо- бранную так называемую элементарную (и х n)-матрицу F. 
2Я. ЛКЯЕЙНАЯ АЛ~ ЕБРА 63 Элементарные матрицы определяются как одна из следующих модификаций единичной матрицы: О 1 1 О Элементарные операции над строками используются для при- ведения матрицы к стандартному виду, называемому каноническим ступенчатым видом и определяемому следующим образом: 1) ведущий ненулевой элемент каждой ненулевой строки ра- вен единице; 2) все остальные элементы каждого столбца, содержащего такой ведущий элемент, равны нулю; 3) ведущий элемент любой строки находится правее любого ведущего элемента любой расположенной выше строки. Нулевые строки расположены ниже всех ненулевых строк. Примером матрицы, приведенной к каноническому ступенча- тому виду, является 110130 001 100 000001 000000 Заметим, что нулевая строка расположена снизу и что если уда- лить последнюю строку, то все столбцы единичной (3 х 3)-матрицы появятся среди столбцов матрицы, но в разбросанном виде. В об- щем случае если имеется й ненулевых строк и по меньшей мере такое же количество столбцов, то матрица в каноническом сту- пенчатом виде всегда будет содержать все столбцы единичной матрицы размера й. Частным случаем канонической ступенчатой формы матрицы является матрица вида A=[I.:Ð], где ! единичная матрица. С помощью элементарных операций над строками каждая матрица, содержащая по меньшей мере столько же столбцов, сколько и строк, может быть приведена к каноническому ступенчатому виду, но не к указанному выше его частному случаю. 
54 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ Теорема 2.6.4. Если матрицы А и А' получаются одна из другой с польо~цью элементарных операций, то пространства строк этих матриц совпадают. Доказательство. Каждая строка из А' является некоторой линейной комбинацией строк матрицы А. Следовательно, каждая линейная комбинация строк матрицы А' также является линей- ной комблнацией строк матрицы А, и, таким образом, простран- ство строк матрицы А содержит пространство строк матрицы А'. Но матрица А получается из матрицы А' с помощью обратных элементарных операций, и, следовательно, пространство строк матрицы А' содержится в пространстве строк матрицы A. Таким образом, А и А' имеют одно и то же пространство строк. Теорема 2.6.5. Если матрицы А и А' связаны между собой последовательностью элементарных операций над строками, то любое множество линейно независимых столбцов в А линейно не- зависимо и в А'. Доказательство. Так как для элементарных операций над стро- ками первого и второго вида теорема очевидна, то достаточно доказать ее только для элементарной операции третьего вида. Итак, предположим, что А' получается из А прибавлением крат- ного строки а к строке р. В любой линейно зависимой комбинации столбцов матрицы А' элементы строки а должны давать нуль и, следовательно, не оказывать никакого воздействия на строку р. Таким образом, рассматриваемое множество столбцов в матрице А также является линейно зависимым. Теорема 2.6.6. (k X п)-матрица А, k строк которой линейно независимы, содержит й линей но независимых столбцов. Доказательство. Приведем А к каноническому ступенчатому виду А'. Так как строки линейно независимы, то ни одна из них не является нулевой. Следовательно, для каждой строки суще- ствует столбец, элемент которого в этой строке равен единице, а в каждой другой строке равен нулю. Множество из й таких столбцов матрицы А' линейно независимо, и, следовательно, в силу теоремы 2.б.5 это же множество столбцов линейно незави- симо в А. П Теорема 2.6.7. Ранг матрицы А по строкам равен ее рангу по столбцам и равен размеру наибольшей квадратной подматрицы, определитель которой отличен от нуля. (Поэтому данная вели- чина называется просто рангом матрицы.) Доказательство. Достаточно показать, что ранг матрицы А по строкам равен размеру наибольшей квадратной подматрицы с ненулевым определителем. То же самое доказательство при- менительно к транспонированной матрице дает доказательство 
2.6. Ли ней нАЯ АЛГЕБРА 55 утверждения для ранга матрицы по столбцам, и, таким образом, доказывается, что ранг по строкам равен рангу по столбцам. Подматрица матрицы А получается выбрасыванием из А некоторого числа строк и столбцов. Пусть М невырожденная квадратная подматрица матрицы А наибольшего размера. Со- гласно теореме 2.6.3 (viii), строки матрицы М линейно незави- симы, и, следовательно, их продолжения до строк матрицы А также должны быть линейно независимыми. Следовательно, ранг матрицы А по строкам не меньше размера матри- цы М. С другой стороны, выберем произвольное множество из й ли- нейно независимых строк матрицы А. Согласно теореме 2.6.7, матрица, образованная такими строками, имеет й линейно незави- симых столбцов. Таким образом, определитель матрицы, состав- ленной из расположенных на пересечении этих й столбцов и этих й строк элементов, будет отличен от нуля. Следовательно, размер наибольшей невырожденной подматрицы не меньше ранга ма- трицы А по строкам. Это завершает доказательство. а Пусть А квадратная (nXn)-матрица с ненулевым опреде- лителем. Тогда, согласно теоремам 2.б.4 и 2.б.7, ее каноническая ступенчатая форма является (nXn)-матрицей, все строки которой отличны от нулевой, и, следовательно, представляет собой еди- ничную матрицу. Так как А может быть получена из ! обраще- нием последовательности элементарных операций над строками, то А можно записать через элементарные матрицы: 1FQ Fp Теорема 2.6.8. Еела в кольце (n X n)-матриц над полелi F С=-АВ, то де1(С) = det(A) det(B). Доказательство. Иаг 1. Сначала покажем, что если det (A) или det (В) равны нулю, то и det (С) равен нулю. Предположим, что det (В) равен нулю; тогда по теореме 2,6.3 (viii) строки матрицы В линейно зависимы. Но строки матрицы С являются линейными комбинациями строк матрицы В. Следовательно, строки матрицы С линейно зависимы и det С равен нулю. Аналогично исследуется случай, когда det (A) равен нулю. Шаг 2. Предположим, что det (A) не равен нулю. Тогда ма- трицу А можно записать в виде произведения элементарных матриц: Fl а 2 
56 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ Каждая из матриц F( соответствует элементарной операции над строками матрицы А, и, следовательно, согласно пп. (ш), (ч) и (vi i) теоремы 2.б. 3, имеем det (AB) = det [(F,F, ... F,) В] = det [Р, (F, ... F,B)] = = (det F~) det (F, . F,В) = (det F~) (det F2) ... (det F,) (det В). При В = ! это дает det (A) = (det Р,) (det F,) ... (det F,). Подставляя последнее равенство в формулу для случая произ- вольной В, получаем det (AB) = det (А) det (В), что и требова- лось доказать. H Одно из следствий этой теоремы состоит в том, что если С = = АВ, то матрица С обратима тогда и только тогда, когда обе матрицы А и В обратимы, так как квадратная матрица имеет обратную тогда и только тогда, когда ее определитель отличен от нуля. Заканчивая данный параграф, завершим работу, оставшуюся от предыдущего параграфа. Теорема 2.6.9. Если размерность подпространства В' век- торного пространства всех и-последовательностей равна й, то размерность его ортогонального дополнения 5'~ равна и й. Доказательство. Пусть (g„..., g„} базис надпространства Я7; определим матрицу G равенством gl где строками являются базисные векторы. Ранг этой матрицы равен й, и размерность пространства столбцов матрицы G равна й. Вектор v принадлежит W~, если GvT О, так как в этом случае он ортогонален к каждому базисному век- тору. Пусть (h„..., Л,} ‒ базис надпространства W-L. Попол- ним этот базис до базиса всего пространства (Л„..., h„ Теперь вектор v из пространства столбцов матрицы G запишется в виде v = Gb', где вектор Ь представляет собой не- которую линейную комбинацию базисных векторов. Следова- тельно, каждый вектор в пространстве столбцов матрицы G 
ЗАДАЧ И 67 должей запись1ваться в виде линейной ко мбинации векторов (Ghi, Ghg, ..., Gh,', Gf1, ..., Gf'„,). Покажем теперь, что векторы (Gf;, ..., Gf'„,j образуют базис пространств столбцов матрицы G. Так как Gh'. = О, то это множество порождает пространство столбцов матрицы G. Далее, эти векторы линейно независимы, так как если а~ (Gf1) -) . + а„, (Gf,) = О, то С (аф~+ + а„,t'„,) = О, и поэтому а, =- а, = = а„„= О, поскольку единственной линейной комбинацией векторов f, f„„, принадлежащей нулевому пространству матрицы G, является нулевой вектор 0. Следовательно, (Gf1, ..., Gf'„,) образуют базис пространства столбцов матрицы G. Таким образом, и ‒ r = й, что и доказывает теорему. П ЗАДАЧИ 2.1. Используя вращения и отражения, отображающие на себя пятиуголь- ник, можно построить группу. а. Сколько элементов содержит эта группа? б. Является ли эта группа абелевой? в. Построить эту группу. r. Найти в этой группе подгруппу, содержащую пять элементов, и подгруппу, содержащую два элемента. д. Существует ли подгруппа этой группы, содержащая четыре эле- мента? Почему? 2.2.а. Доказать, что существует только одна группа, содержащая три элемента. Построить эту группу и доказать, что она абелева. б. Доказать, что существуют только две группы, содержащие четыре элемента. Построить эти группы и доказать, что они абелевы. Доказать, что одна из этих групп с четырьмя элементами не содержит элемента четвертого порядка (эта группа называется четвертой группой Клейна). 2.3. Грусть групповая операция в группах из задачи 2.2 называется сло- жением. а. Определить умножение так, чтобы превратить эту трехэлементную группу в кольцо. Единственно ли оно? б. Для каждой из четырехэлементных групп определить умножение так, чтобы превратить их в кольца. Единственны ли эти кольца? 2.4. Какие из трех колец задачи 2.3 являются также и полями? Можно ли задать умножение другим способом н получить при этом поле? 2.5. Доказать, что множество всех целых чисел (положительных, отри- цательных и нуля) не образует группу относительно операции вычитания. 2.6. Привести пример кольца без единицы. 
58 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ 2.7. Рлссм острим мнэже"тво S {О = 1, 2, 3} с операциями Является ли оно полем? HycTb 6 пРоизвольная группа (не обязательно конечная). Для назовем ~ру~повую операцию умножением, а единичный элемент единицей. Пусть g ‒ произвольный элемент, а м (если оно существует) ‒ наи- м~н~шее целое число, такое, что g~ = 1, где g~ означает g g ... g (> раз). Тогда v называется порядком элемента g, Доказать, что подмножество (g, g2, ..., ч ‒ 1 образует подгруппу группы б. Доказать, что эта подгруппа абелева даже если б не является абелевой. 2.9. Доказать теоремы 2.3.3 и 2.3.4. 2.10. Пусть задано некоторое кольцо с единицей 1, и пусть а 6 = 1 До- казать эквивалентность следующих утверждений: (i) b ‒ левый сбратный к а; (ii) если ах =- О, то х = О; (ш) если уЬ == О, то у = О. Замечание. В некоторых кольцах условие (И) не выполняется. B таких кольцах элемент может иметь только правый обратный или TOJlbKO JleBbIH обратный. 2.]1. Поле из четырех элементов Я' (4) задается арифметическими таоли- цами Решить в GF (4) систему уравнений 2х+ у=- 3, х+ 2y =- 3. 2.12. Поле с тремя элементами бР (3) задается арифметическими таблицами 
3Ад1~ ч g 59 Вычислить определитель матрицы и доказать, что ее ранг равен 3. 2.13. Привести матрицу ! 1 0 1 1 0 1 1 0110 010 к каноническому ступенчатому виду. Можно ли решить задачу, не конкрети- зируя поле? Почему? 2.14. Сколько векторов содержит векторное пространство бР" (2)? 2.15. Верно ли, что если векторы х, у и z ‒ линейно независимы над бР(д), то и векторы x+ у, у+ z и z+ x линейно независимы? 2.16. Существует ли над полем бР (д) векторное пространство, содержащее 24 элемента и имеющее размерность, большую 1? 2.17. Пусть S и Т ‒ различные двумерные поднространства трехмерного векторного пространства; доказать, что их пересечение образует одномерное подпр остр анство. 2.18. Пусть S ‒ произвольное конечное множество, и пусть б ‒ множе- ство подмножеств из элементов S. Для двух подмножеств А и В обозначим через А Ц В подмножество, состоящее из элементов, принадлежащих хотя бы одному из А и В, через А П В множество элементов, принадлежащих как А, так и В, а через А ‒ В множество элементов, принадлежащих А и не при- надлежащих В. а. Доказать, что относительно операции объединения множеств множество б не является группой. б. Теоретико-множественная операция симметрической разности Ь определяется равенством А ЬВ = (А ‒ В) Q (В ‒ А). Доказать, что если в качестве групповой операции в б выбрать симметрическую разность, то б на самом деле будет группой. Является ли эта группа абелевой? в. Доказать, что относительно операций Ь и П множество б образует коль|~о. Является ли это кольцо коммутативным? Имеется ли в нем единица? 2.19. Поле с бесконечным числсм элементов, содержащее конечное поле, также называется полем Галуа. Пусть F ‒ множество всех формальнь!х вы- ражений вида J ‒ ! Ь~х~ j=0 а;х 'i =0 где 1 и J ‒ некоторые положительные целые числа, а а; и b~ ‒ элементы поля бР (3) Предложить свои собственнь|е определения операций сложения и умножения, такие, чтобы множество F превратилось в поде Галуа с беско- нечным числом элементов. 
6О ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ ЗАМЕЧАНИЯ В этой главе рассматривался обычный материал современной алгебры. Можно указать много учебников, в которых этот материал излагается более детально. В качестве легко усваиваемого вводного курса, по уровню достаточного для данной книги, мы рекомендуем книгу Биркгофа и Маклейна [1953]. Моногра- фия Ван дер Вардена [1950, 1953~ представляет собой курс более высокого уровня, адресованный в основном математикам и углубленно излагающий многие вопросы. Материал по линейной алгебре и теории матриц можно найти также и в учебниках, специально посвященных этим разделам алгебры. Особенно подходящей является книга Тралля и Торнгейма [1957], так как она не предполагает никакой предварительной подготовки '). Поля Галуа названы в честь Эвариста Галуа (1811 ‒ 1832). Абелевы группы названы в честь Нильса Хенрика Абеля (1802 ‒ 1829). ~) Не требующее предварительной подготовки хорошее изложение начал линейной алгебры и чеории матриц можно найти также в книге: Головина Л. И. Линейная алгебра и некоторые ее приложения. ‒ 4-е изд. ‒ М.: Наука, 1985. Более углубленное изложение содержится в следующих книгах: Курош А. Г. Курс высшей алгебры. ‒ 11-е изд. ‒ М.: Наука, 1975; Мальцев А. И. Основы линейной алгебры. ‒ 4-е изд. - ‒ М: Наука, 1975. ‒ Прим. перев. 
ГЛАВА 3 ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ Большинство известных хороших кодов принадлежит классу ли- нейных кодов. Зтот класс кодов определяется специально выбирае- мой структурой кода. Такая структура облегчает поиск хороших кодов, а также помогает создать хорошие кодеры и декодеры. Следует подчеркнуть, что мы изучаем линейные коды не потому, что это лучшие коды, а скорее потому, что в настоящее время мы располагаем весьма скудной информацией о построении нелиней- ных кодов. В то же время хорошие линейные коды существуют и некоторые из них известны. Большинство наиболее эффективных теоретических методов применимо только к линейным кодам, и поэтому при поисках новых кодов обычно ограничиваются клас- сом линейных кодов. 3.1. СТРУКТУРА Л И Н ЕЙ Н Ы Х БЛОКОВЫ Х КОДОВ Напомним, что векторное пространство GF" (q) представляет со- бой множество п-последовательностей элементов из GF (q) с по- компонентным сложением и умножением на скаляр. Наиболее важным частным случаем является GF" (2) ‒ векторное простран- ство двоичных слов длины и, в котором при сложении двух век- торов в каждой компоненте происходит сложение по моду- лю 2. Определение 3.1.1. Линейиый код есть подпространство в в GF (q) Таким образом, линейный код есть непустое множество и-по- следовательностей над GF (д), называемых кодовыми словами, та- кое, что сумма двух кодовых слов является кодовым словом, и произведение любого кодового слова на элемент поля также яв- ляется кодовым словом. В любом линейном коде нулевое слово как начало координат векторного пространства всегда есть кодо- вое слово. Точнее, если с ‒ кодовое слово, то ‒ c также кодо- 
62 ГЛ. 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ вое слово и, следовательно, с + ( ‒ c) тоже будет кодовым сло- Вом. Каждое слово в линейном коде связано с остальными словами кода так же, как любое другое кодовое слово. Расположение со- седних кодовых слов вокруг нулевого слова есть типичное распо- ложение слов вокруг любого другого кодового слова. Например, предположим, что с ‒ некоторое кодовое слово и c„..., с„ кодовые слова, находящиеся на некотором расстоянии d от с; тогда с ‒ с ‒ нулевое слово и с, ‒ с, с» с, ..., c„ с ‒ кодовые слова, находящиеся на расстоянии d от нуле- вого слова. Таким образом, для определения минимального рас- стояния линейного кода достаточно определить расстояние между нулевым словом и ближайшим к нему другим кодовым словом. Определение 3.! .2. Вес Хгмминга и (c) кодового слова с равен числу его ненулевых компонент. Минимальный вес кода ж* есть минимальный вес ненулевого кодового слова. Теорема 3.1.3. Яля линейного кода минимольног расстояние d* находигася из равенства d* = min и(с) = w*, с~О где минимум берется по всем кодовым словам, кроме нулевого. Доказательство. d*= min d(c;, c,) = min d(0, c; ‒ c;) = min au(c). i+j l+/ П Следовательно, для нахождения линейного кода, исправляющего t ошибок, необходимо найти линейный код с минимальным весом, удовлетворяющим неравенству ж* о 2/+ 1. Изучение метрических свойств линейных кодов много проще, чем нелинейных. 3.2. МАТРИЧНОЕ ОПИСАНИЕ ЛИНЕЙНЫХ БЛОКОВЫХ КОДОВ Линейный код %' образует подпрсстранство в GF" (q). Для изуче- ния этих кодов будет полезна теория линейных пространств. Любсе множество базисных векторов может быть использовано в качестве строк для построения (k Xn)-матрицы С, которая назы- вается порождающей матриией кода. Пространство строк матрицы 6 есть линейный код Ж, любое кодовое слово есть линейная ком- бинация строк из G. Множество q кодовых слов называется линей- ным (n, k)-кодом, 
9.2. мАтРич нОе ОписА ний 68 Строки матрицы б линейно независимы, и число строк Й равно размерности подпространства. Размерность всего прострапства GF" (q) равна и. Всего существует q~ кодовых слов, и q" различных k-последовательностей над GF (q) могут быть отображены на множество кодовых слов. Любое взаимно однозначное соответствие й-последовательно- стей и кодовых слов может быть использовано для кодирования, но наибслее естественный способ кодирования использует отобра- жение c=iG, 1 0010 01 001 001 11 В этом случае информационное слово i= — - [О 1 1] будет кодироваться в кодовое слово 1 0010 01001 001 11 с=[0 11] = [О 1 1 1 О]. Порождающая матрица является сжатым описанием линейного кода. Сравните двоичный линейный (100,50)-код, для описания которого требуется 100X50 =- 5000 битов, определяющих эле- менты матрицы 0, с произвольным (100, 50)-кодом, имеющим 2" кодовых слов и требующим для описания примерно 10" битов. Поскольку %' является подпространством, оно имеет ортого- нальное дополнение%'~, которое состоит из всех векторов, ортс- гональных к У. Ортогональное дополнение также является под- пространством и, таким образом, может рассматриваться как код. Когда %'~ само рассматривается как код, оно называется кодом, дуальным к %'. где i ‒ информационное слово, представляющее собой Й-по- следовательность кодируемых информационных символов, а C ‒ образующая кодовое слово и-последовательность. Зада- ваемое последним равенством соответствие между информацион- ным и кодовым словами определяет кодер и зависит от выбора базисных векторов в качестве строк матрицы б; в то же время само множество кодовых слов не зависит от этого выбора. В качестве простого примера двоичного блокового кода рас- смотрим порождающую матрицу 
Яф ГЛ. 3. ЛИНЕЙНЫЕ БЛОКОВЬ1Е КОДЫ Ортогональное дополнение У-" имеет размерцость п ‒ й, й любой его базис также состоит из п ‒ ‒ й векторов. Пусть Н ма- трица со строками, являющимися этими базисными векторами. Тогда и-последовательность с является кодовым словом в том и только том случае, когда она ортогональна каждой вектор-строке матрицы Н, т. е. когда снт= О, Это равенство позволяет проверить, является ли данное слово ко- довым. Матрица H называется проверочной матрицей кода. Она является (и k) Y, и матрицей; поскольку равенство сН' = 0 выполняется при подстановке вместо с любой строки матрицы б, то 6Н'= О. Для порождающей матрицы 0, рассмотренной в предыдущем при- мере, получаем 101 10 01101 что является одним из возможных выборов матрицы Н. Заметим, что точно так же, как существует много способов выбора матрицы б, с уществует много способов выбора матрицы Н. Теорема 3.2.1. Порождающая матрица кода У является про- верочной матрицей дуального кода У~. Доказательство непосредственно следует из предыдущих рас- сужденийй. О Связь минимального веса кода и проверочной матрицы уста- навливается следующей теоремой. Теорема 3.2.2. Код F содержит ненулевое кодовое слово веса Хэмминга не более ж тогда и только тогда, когда Н содержит множество из ur линейно зависимых столбцов. Доказательство. Для любого кодового слова с выполняется равенство cH' = О. Пусть с имеет вес ж. Исключим из рас- смотрения нулевые компоненты вектора с. Полученное равенство будет соотношением линейной зависимости ж столбцов из Н. Следовательно, Н содержит множество из ж линейно зависимых столбцов. Обратно, если Н содержит множество из а~ линейно зависимых столбцов, то найдется равная нулю линейная комбинация, соста- вленная не более чем из ж столбцов. Соответствующие ж ненулевых коэффициентов определяют вектор веса не более mr, для которого СНТ = О. О 
3.2. МАТРИЧ НОЕ ОДИСАНИЕ 66 Следствйе 3.2.3. Ксд имеет минимальный вес не менее ы тогда и только тогда, когда каждое множество из ы ‒ 1 столбцов ма- трицы Н линейно независимо. Отсюда следует, что для того чтобы найти (и, Й}-код, исправля- ющий t ошибок, достаточно найти (и Й} X п-матрицу Н, в ко- торой любые 21 столбцов линейно независимы. Из данного (и, Й)-кода с минимальным расстоянием d* можно получить новый код с теми же параметрами, если в каждом кодо- вом слове выбрать две позиции и поменять местами символы в этих позициях. Однако в этом случае мы получим код, который лишь тривиальным образом отличается от исходного. Говорят, что такой код эквивалентен исходному. Вообще два линейных кода, одинаковых с точностью до перестановки координат, называются эквивалентными. Порождающие матрицы б и б' эквивалентных кодов просто связаны друг с другом. Сам код является пространством строк ма- трицы б и поэтому остается неизменным при элементарных опера- циях над строками. Перестановка координат кода эквивалентна перестановке столбцов в матрице G. Таким образом, два кода эквивалентны тогда и только тогда, когда их порождающие ма- трицы получаются одна из другой посредством: 1} перестановки столбцов и 2) элементарных операций над строками. Каждая порождающая матрица G эквивалентна некоторой ма- трице канонического ступенчатого вида, и, поскольку строки 6 линейно независимы, все строки эквивалентной матрицы являются ненулевыми. Следовательно, с точностью до перестановки столб- цов любая порождающая матрица эквивалентна матрице, которая в первых й столбцах содержит единичную подматрицу размером k Х k. Эквивалентную матрицу можно записать в виде 0=[I'P], где Р есть /г X (и lг}-матрица. Любая порождающая матрица может быть приведена к такому частному виду при помощи после- довательности элементарных операций над строками и последу- ющей перестановки столбцов. Такую порождающую матрицу будем называть порождающей матрицей в систематическом виде. Предположим, что 6 =- [I Р]. Тогда естественным опреде- лением проверочной матрицы в систематическом виде, очевидно, является равенство H = [ ‒ Р': 1 ], поскольку Р GH'= [I.P] = Р+Р=О. ! P. Блейхут 
Гл. 3. Линейные БлОКОВые Ko+bl Определение 3.2.4. Систематическилс ') кодом называется код, у которого каждое кодовое слово начинается с информационных символов. Оставшиеся символы называются проверочными сим- волами. Принято говорить о систематическом коде, хотя это всегда означает систематическое кодирование соответствующего кода. Теорема 3.2.5. Каждый линейный ксд эквивалентен система- тическому линейному коду. Доказательство. Систематический линейный код кодируется умножением информационного вектора на порождающую матрицу б в систематическом виде, а каждая порождающая матрица 6 эквивалентна некоторой систематической матрице. Cl В качестве примера выберем 1 00,'1 0 01010 1 0 01',1 1 1 0 111 0 0 1 1]0 1 тогда i = [О 1 1 ] при систематическом кодировании отобра- зится в слово с =-- [О 1 1 1 0]. Рассматривая код в систематическом виде, можно получить простое неравенство, связывающее параметры кода. Эта граница является очень неточной, и большинство хороших кодов имеет минимальное расстояние, существенно меньшее, чем следует из границы, но бывают случаи, когда она оказывается полезной. Пусть задан некоторый систематический (и, Й)-линейный код с минимальным расстоянием d Следующая теорема накладывает ограничение на возможные значения (и, Й, d*). Теорема 3.2.6 (граница Синглтона). Минимальное расстоя- ние (минимальный вес) любого линейного (и, k)-кода удовлетворяет неравен спгву d* <1+n ‒ k. Доказательство. Ненулевое слово минимального веса в коде имеет вес д*. Существуют слова систематического кода с одним ненулевым информационным символом и и Й проверочными сим- волами. Такое кодовое слово не может иметь вес, больший 1 + ') В гл. 5 будут рассматриваться циклические коды и будет удобно по со- глашению считать, что кодовое слово с начинается с координаты с максималь- ным номером с„1 и кончается со. В этом случае будем использовать экви- валентные матрицы вида С ‒. [P; I] н Н = [I:. ‒ P'] для некоторой новой P. Эти матрицы получаются обращением всех столбцов и строк матриц, записанных в систематическом виде. Такие матрицы также называются система- тическими. 
9.9. СТА НДАРТНОЕ РАСПОЛОЖЕН И E Q7 и ‒ k. Таким образом, минимальный вес кода не может быть больше 1 + n ‒ k. П Определение 3.2.7. Любой код с минимальным расстоянием, удовлетворяющим равенству d*=-1+и Й, называется кодом с максимальным расстоянием. Граница Синглтона показывает, что для исправления 1 ошибок код должен иметь не менее 2t проверочных символов (2 провероч- ных символа на ошибку}. Большинство кодов, даже оптималь- Hblx, имеют намного больше проверочных символов, чем требует граница Синглтона, но параметры некоторых кодов удовлетво- ряют границе с равенством. Коды с максимальным расстоянием имеют точно 2/ проверочных символов. 3.3. СТАНДАРТНОЕ РАСПОЛОЖЕНИЕ Поскольку разность двух кодовых слов линейного кода является кодовым словом, нулевое слово всегда будет кодовым. Если мы знаем, какое множество принятых слов линейного кода лежит ближе всего к нулевому слову, то с помощью простого сдвига на- чала координат нетрудно выяснить, какие из принятых слов лежат ближе всего к любому др угому кодовому слову. Пусть d* нечетно и d* = 2t + 1. Внутри сферы радиуса t с центром в нулевом слове находится множество точек S0 ‒ ‒ {v { d (О, v) а t}. Эта сфера содержит все принятые слова, которые декодируются в нулевое кодовое слово. Внутри сферы радиуса t с центром в ко- довом слове с находится множество точек S, = {v { d (с, v) а t }; тогда Sñ = Sp+ с = {v+ с I v E Sp}. Таким образом, мы можем выписать точки, лежащие внутри каждой сферы декодирования или (что эффективнее} внутри сферы декодирования с центром в нулевом слове, а точки, лежащие вну- три других сфер получать по мере необходимости с помощью про- стого сдвига. Стандартное расположение представляет собой способ описа- ния всех этих сфер. Пусть О, сд, сз, ..., c,l, суть g" кодовых слов (n, Й)-кода. Построим таблицу, изображенную на рис. 3.1 следующим образом. В первой строке выпишем все кодовые слова Из оставшихся в GF" (g) слов, лежащих на расстоянии 1 от нуле- вого слова, выберем любое и обозначим его ч,. Во второй строке 3' 
68 ГЛ. 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ Обласвь Оекобырования Ñðåðà бекобирования Смежны класс Горцзона черва Лмберы смежных классов Ооласвь мезкду ссрерамц, вяаоаеющая С3 Рис. 3.1. Стандартное расположение. запишем 0 + v~, с2 + v~, сэ + v~, ..., с,~ + v~. Таким же, образом строятся следующие стрски. На j-м шаге выберем слово v~, которое является ближайшим к нулевому и отсутствует в пре- дыдущих строках, и запишем в j-й строке 0 + v>, с, + v> сз + v>, ..., с,> + vf. Эта процедура закончится, когда после счередного шага не останется неиспользованных слов. Если рассматривать код как подгруппу, то описанная проце- дура порождает смежные классы по этой подгруппе. Следова- тельно, процесс закончится, когда каждое слово в таблице встре- тится ровно один раз. По следствию 2.2.4 всего в таблице будет д" ‒ ~ строк. Слова из первого столбца называются лидерами смеж- ных классов. Пссксльку строки таблицы построены подобно чешуйкам лука, начиная с нулевого слова, первый столбец должен содержать все слова, лежащие внутри сферы декодирования с центром в ну- левом слове, т. е. все слова, находящиеся на расстоянии не более 
з.з. стАндАРтное РАсйоложвнив Qg 1 от нулевого. Когда чешуйки заполнят всю внутренность сферы радиуса 1 вокруг нулевого слова, проведем в таблице горизон- тальную черту. Могут остаться векторы, не занесенные в таблицу выше этой черты, и далее в стандартном расположении эти век- торы будут сопоставляться ближайшим, но отчасти произволь- ным кодовым словам. Существуют два основных класса декодеров, которые могут быть описаны с помощью стандартного расположения: полные декодеры и неполные декодеры. Полный декодер сопоставляет принятому слову ближайшее кодовое слово. Принятое слово необ- ходимо найти в стандартном расположении, определить столбец, в котором оно находится, и декодировать его в кодовое слово в верхней позиции этого столбца. Неполный декодер сопоставляет каждому принятому слову кодовое слово, находящееся от него на расстоянии не более 1, если такое существует, в противном же случае отказывается от деко- дирования. Принятое слово необходимо найти в стандартном рас- положении. Если оно лежит выше горизонтальной черты, то деко- дируем его в кодовое слово в вершине столбца, в котором оказы- вается принятое слово. Если же оно лежит ниже горизонтальной черты, то помечаем принятое слово как не поддающееся декоди- рованию. В таком слове имеется более 1 ошибок. В качестве примера рассмотрим (5, 2)-код с порождающей матрицей 10111 01 101 Этот код позволяет исправлять одну ошибку. Стандартное располо- жение выглядит следующим образом: 00000 00001 00010 00 100 О 1000 1 0000 1011 ! 10110 ] O I O I 1001 11 11 OO I I I 01101 01 100 O l l ] 1 O I OO I 00]OI 11]0! ! 1010 11011 1 000 110 10010 01010 0001 1 10100 001 i O 10001 O] 110 ] 100] 0101 ] 11100 Сферы радиуса 1 не пересекаются. Имеются всего четыре сферы, шесть точек внутри каждой сферы и восемь точек вне каждой сферы. 
7Q гд. з. линкйныE 5JIQKQBblE ~оды Очевидно, что ценность стандартного расположения относи- тельна. Для больших п и й составлять такую таблицу было бы не практично. Таблицу можно упростить, если мы сможем помнить только первый столбец и находить остальные столбцы по мере необхо- димости. Это можно сделать, введя понятие синдрома оши- бок. Для любого принятого вектора v определим синдром равен- ством s — vHY Теорема 3.3.1. Все вектора из одного смежного класса имеют одинаковый синдром, присущий только зтому смежному классу. Доказательство. Если V u V лежат в одном смежном классе, то v = с~ + у, v' = с~ + у для некоторого у и кодовых слов с;. и с~. Для любого кодового слова с выполняется равен- ство сН' = О. Отсюда получаем s =vH" =уН', s = v'Н =УНт, и, следовательно, s =- s Обратно, допустим, что з = s'; тогда (v v') Н' = О, и поэтому разность v ‒ v' является кодовым словом. Следовательно, v и v' принадлежат одному смежному классу. П Любые два вектора из одного смежного класса имеют одинако- вый синдром. Следовательно, нам необходимо только свести в таб- лицу синдромы и лидеры смежных классов. Затем мы можем про- изводить декодирование следующим образом. По принятому вектору v вычисляем синдром и находим соответствующий этому синдрому лидер смежного класса. Зтот лидер является разностью между и ринятым c JIQEQM и кодс вым словом, которое одновре- менно является центром сферы кодирования. Таким сбразом, мы исправим ошибку, вычтя из слова v лидер смежного класса. В примере, приведенном выше, проверочной матрицей будет 1 1100 1 0010 1 1001 
3 4. кОды хэмминГА 7f Либеры смежных классов Синдромы 0001 l 001 10 011 110 Эта таблица проще, чем стандартное расположение. Предположим, что принят вектор v =- 10010, Тогда s = чН' ==- 101. Лидер смежного класса будет равен 01000. Отсюда получим, что пере- данное слово равно 10010 ‒ 01000 = 11010, а информационное слово равно 11. 3.4. КОДЫ ХЭММИНГА Код, у которого минимальное расстояние не менее трех, в силу следствия 3.2.3 имеет проверочную матрицу, в которой все столбцы ненулевые и различные. Если проверочная матрица двоичного кода имеет пг строк, то каждый столбец оказывается двоичным чис- лом длины т. Существует всего 2'" ‒ 1 возможных столбцов. Следовательно, если Н ‒ матрица двоичного кода с dÐ w 3‒ имеет т строк, то она может иметь не более 2 ‒ 1 столбцов. В результате получается (2 ‒ 1, 2 1 ‒ m)-код. Простейший нетривиальный пример соответствует т = 3. В этом случае ма- трицы Н и б в систематическом виде запишутся с.чедующим обра- зом: 1101100 101 10 10 011 1001 1000110 0100 101 00 1001 1 000111 1 и новая таблица запишется в виде 00000 00001 00010 00100 01000 10000 000 001 010 100 101 111 
7Я ! Л. 3..!3ИНЕЙХЬ|Е БЛОКОВЫЕ КОДЬ1 Таблица 3.1 Параметрь| (и, Ф) некоторых кодов Хэмминга GF(S) GF(16) - GF(27) бр(2) GF(4) (5, 3) (21, 18) (85. 81) (341. 336) (9, 7) (73. 70) (585, 581) (17. ! 5) (28, 26) (273, 270) (757. 754) (7. 4) (15. 11) (31, 26) (63. 57) (127. 120) Например (13,]0)-код Хэмминга иад GF (3) задается провероч- ной матрицей 111 ! 111100100 И=-001112''110 I О 1201'О! !2О()! Такие ('"' ‒ 1, 2'" 1 ‒ m)-коды называются кодами Хэм- минга. Ясно, что каждая пара столбцов матрицы Н линейно незави- сима (поскольку никакая пара различных двоичных векторов не дает в сумме нуля}, а некоторые множества из трех столбцов будут линейно зависимы. Следовательно, согласно теореме 3.2.2, минимальный вес кода равен 3 и код исправляет одиночные ошибки. Определение кодов Хэмминга легко обобщить на случай боль- ших алфавитов. Достаточно просто заметить, что главная идея построения таких кодов ссстоит в определении матрицы Н, любая пара столбцов которой линейно независима. Для задания прове- рочной матрицы нельзя использовать все ненулевые т-последо- вательности над GF (q), g + 2, поскольку некоторые из них по- парно линейно зависимы. Чтобы обеспечить линейную независи- мость, выберем в качестве столбцов матрицы все т-последова- тельности, у которых первая ненулевая компонента равна единице. Тогда все столбцы будут попарно линейно независимыми, а неко- торые тройки столбцов могут оказаться линейно зависимыми, и минимальный вес в коде будет равен трем. Всего существует (q~ 1)/(q ‒ 1) таких различных столбцов. Следовательно, получившийся код будет ((г/ ‒ 1)/(g 1}, (q 1)/(q 1) ‒ т)-кодом. Код Хэмминга, исправляющий оди- ночные ошибки, существует для каждого д, для которого сущест- вует поле GF (q), и для любого т. Для примера в табл. 3.1 приве- дены параметры нескольких кодов Хэмминга. 
3.5. СОВЕРШЕННЫЕ И КВАЗИСОВЯРЩЕ Н Н Ь1 Е КОДЬ! 7Д и порождающей матрицей 1000000000101 0100000000102 0010000000110 0001000000111 0000 1000001 1 2 0 0 0 0 0 1 0 0 0 0 1 2 0 00000010001 21 0 0 0 0 0 0 0 1 O O I 2 2 00000000 1001 0000000001012 Второй пример носит более практический характер. Предполо- жим, что ЭВМ и периферийное устройство связаны кабелем, по которому параллельно передаются 4 бита. Четыре бита предста- вляют один 6-10-символ, и передается последовательность таких информационных символов. Нам бы хотелось объединить символы в блоки и защитить каждый блок от одиночных ошибок. Взяв q = 16 и т = 2, мы видим, что можно было бы получить (17, 15)- код Хэмминга над полем GF (16) при условии, что такое поле суще- ствует. Но поле GF (16) уже было приведено на рис. 2.1 (хотя мы еще не проверили, что оно удовлетворяет аксиомам поля). Исполь- зуя это поле, можно построить порождающую матрицу (17, 15)- кода Хэмминга над GF (16) и с ее помощью выписать следующие соотношения для проверочных символов: РД ЕД + Со + Å3 + ' ' '+ СД4 + ЕД5 р, = I', + 2iа + 3i3 + + Е~д4+ Fige. После каждого блока из 15 информационных символов ставятся эти два проверочных символа. Используя это, декодер может ис- правлять одиночные ошибки в блоке из 17 символов. Конечно, все это имеет смысл только в том случае, когда поле GF (16) суще- ствует и задано так, как на рис. 2.1. Прежде чем проводить только что описанное построение в некотором поле GF (q), мы должны доказать, что такое поле существует, и задать в нем сложен ие и умножение. 3.5. СОВЕРШЕННЫЕ И КВАЗИСОВЕРШЕННЫЕ КОДЫ Представьте себе маленькие сферы с центрами во всех кодовых словах; все эти сферы имеют один и тот же (целеочисенный) радиус. Пусть теперь радиус сфер увеличивается (оставаясь целыми чис- 
74 ГЛ. S. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ лами} до тех пор, пока дальнейшее увеличение радиуса будет не- возможно без пересечения сфер. Значение этого радиуса равно числу исправляемых кодом ошибок. Этот радиус называется ра- диусол~ сферической упаковки кода. Теперь позволим радиусу уве- личиваться далее (оставаясь при этом целым числом) до тех пор, пока каждая точка пространства не окажется внутри хотя бы одной сферы. Такой радиус называется радиусом покрыпия кода. Радиус упаковки и радиус покрытия кода могут совпадать; если это так, то построение стандартного расположения закон- чится в тот момент, когда исчерпаются все векторы внутри сфер радиуса t. Все точки пространства содержатся внутри этих сфер, и ни одна точка не остается вне сфер. Определение 3.5.l. Совершенный код есть код, для которого сферы некоторого одинакового радиуса вокруг кодовых слов, не пересекаясь, покрывают все пространство. Совершенный код удовлетворяет границе Хэмминга из задачи 1.5 с равенством. Код Хэмминга, имеющий длину и = ‒ (q ‒ 1) '(q ‒ 1), является совершенным. Это происходит потому, что внутри каждой сферы радиуса 1 содержится 1 -1- и (q 1) = q~ точек, и число точек в пространстве, деленное на число сфер, равно q"tq' =- q", ,поскольку и ‒ Й = т. Совершенные коды (в случаях, когда они существуют} обладают замечательными свойствами, и с ними приятно иметь дело, но они столь редки, что имеют ограни- ченное практическое значение. Определение 3.5.2. Квазиссвершенный код ‒ это код, у кото- рого сферы радиуса t вокруг каждого кодового слова не пере- секаются и все слова, не лежащие внутри какой-либо из этих сфер, находятся на расстоянии ~ -+- 1 хотя бы от одного кодового слова. Евазисовершенные коды встречаются чаще, чем совершенные коды. Когда для заданных и и Й существует такой код (и не суще- ствует совершенного кода}. то для этих и и Й не существует кода с большим значением д*. Однако мы должны снова отметить, что квазисовершенные коды редки и по всей видимости не являются особо важными в практических приложениях. 3.6. ПРОСТЫЕ ПРЕОБРАЗОВАНИЯ ЛИ Н ЕИ НОГО КОДА Существует набор простых преобразований, которые, незначи- тельно изменяя исходный линейный код, приводят к новому коду. Если новый код также оказывается линейным, то эти преобразо- вания соответствуют небольшим изменениям порождающей ма- 
3.6. ПРОСТЫЕ ПРЕОБРАЗОВАНИЯ ЛИНЕЙНОГО КОДА 75 трицы 6; например, можно добавить в эту матрицу столбец или строку, выбросить из нее столбец или строку, добавить одновре- менно столбец и строку, выбросить одновременно столбец и строку. Все эти изменения кода легко описать, хотя может оказаться, что непросто найти такое преобразование, которое необходимо в каж- дом конкретном случае. Длину кода и можно увеличить за счет увеличения Й или и A.. Мы будем называть такие преобразования удланениея и раси~ире- ниея~ кода соответственно и объединим оба этих понятия более об.цим понятием увеличения кода. Под увеличением кода мы пони- маем увеличение длины или за счет расширения, или за счет удли- нения. Шесть основных преобразований кода выглядят следую- щим образом. Расширение кода. Увеличение длины путем добавления новых проверочных символов, что приводит к возрастанию большего размера порождаю.цей матрицы. Удлинение кода. Увеличение длины кода путем добавле- ния новых информационных символов, что приводит к увели- чению обоих размеров порождающей матрицы на одно и то же число. Вакалывание кодовых координат. Уменьшение длины кода уда- лением проверочных символов, что приводит к уменьшению боль- шего размера порождающей матрицы. Укорочение кода. Уменьшение длины кода удалением информа- ционных символов, что приводит к уменьшению обоих размеров порождающей матрицы на одно и то же число. Пополнение кода. Увеличение числа информационных симво- лов без увеличения длины кода, что приводит к увеличению мень- шего размера порождающей матрицы. Код с еыбрасыванием. Уменьшение числа информационных сим- волов без изменения длины кода, что приводит к понижению мень- шего размера порождающей матрицы. Указанные преобразования можно использовать для модифи- кации известных кодов, чтобы сделать их подходящими для каких либо конкретных приложений, а также для получения новых клас- сов хороших кодов. Любой двоичный (и, Й, d*)-код с нечетным минимальным рас- стоянием можно расширить до (и + 1, Й, d* + 1)-кода добавле- нием к каждому кодовому слову суммы всех его компонент в каче- стве проверки на четность. Так происходит потому, что в случае, когда исходное слово имеет нечетный вес, к нему будет добав- ляться единичный символ. Следовательно, все кодовые слова веса d* становятся кодовыми словами веса d' + 1. Если H— 
76 гл. 3. JIHHEAHblE Блоковыв коды проверочная матрица исходного кода, то расширенный код будет иметь проверочную матрицу 1 1 ... 1 Н'= О В частности, каждый (2 1, 2 ‒ 1 ‒ и)-код Хэмминга может быть расширен до (2, 2 ‒ m)-кода, исправляющего одиночные ошибки и обнаруживающего двойные ошибки; обычно этот код также называется кодом Хэмминга. Можно произвести и редукцию кода, переходя к коду над меньшим полем. Из некоторого кода над полем 6Р (g ) выберем все слова с координатами из подполя GF (g). Получившийся код называется подкодои иад подполеи исходного кода. Если исходный код является линейным, то подкод над под- полем также линеен, но не является подпространством исходного кода. Это происходит потому, что подпространство должно содер- жать все возможные произведения кодовых слов на элементы поля GF (у). Подкод над подполем является линейным потому, что над подполем GF (g) все линейные комбинации кодовых слов будут оставаться в подкоде над подполем. Любое множество базисных векторов в подкоде над подполем является линейно независимым также и в поле GF (g"'}, и поэтому размерность исходного поля не меньше размерности подкода над подполем. Обычно, однако, ис- ходный код имеет большую размерность; подкод над подполем имеет меньшую скорость, чем исходный код. 3.7. КОДЫ РИДА ‒ МАЛЛЕРА Коды Рида ‒ Маллера представляют собой класс линейных кодов над GF(2) с простым описанием и декодированием, осуцествляе- мым методом простого голосования. По этим причинам коды Рида‒ Маллера играют важную роль в кодировании '),хотя если судить об этих кодах по минимальному расстоянию, то, за некоторыми исключениями, они не заслуживают особого внимания. Для лю- бых целых и и r ( и су цествует код Рида ‒ Маллера длины 2, который называется кодом Рида ‒ Маллера r-го порядка дчины 2 . Код Рида ‒ Маллера является линейным кодом. Мы определим этот код через порождаю.цую матрицу; эгу матрицу будем строить ') Коды Рида ‒ Маллера были использованы при передаче фотографий Марса космическим кораблем Маринер в 1972 г. В настоящее время для этой цели можно было бы использовать более эффективное кодирование. 
з.7. коды РидА ‒ мАлли А 77 в удобной для декодирования несистематической форме. Прежде всего определим покоипонентное произведение двух векторов а и Ь; если а =(а„а„..., а„,) и b =(b„b„..., b„,), то их произведение равно вектору аЬ = (а,Ь„а,b„..., а„,b„,). Порождающая матрица кода Рида ‒ Маллера r-го порядка длиной 2"' определяется как совокупность блоков где б, вектор размерности и = 2, состоящий из одних еди- ниц; б, есть (и Х2)-матрица, содержащая в качестве столбцов все двоичные и-последовательности; строки матрицы б~ полу- чаются из строк магрицы G, как все возможные произведения I строк из G,. Для определенности будем считать, что первый стол- бец в б, состоит из одних нулей, последний из одних единиц, а остальные m-последовательности в G, расположены в порядке возрастания, считая, что младший бит расположен в нижней строке. m Поскольку существует всего, способов выбора l строк, т входящих в произведение, то матрица б~ имеет размер, Х X 2. Ясно, что для кода Рида ‒ Маллера порядка r = +()+ +(,) п ‒ 1=1+(;)+ "+(.;,), 00000000111 11111 00001 1 1100001 1 11 001 1001 1001 1001 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 G) что обеспечивается линейной независимостью строк в матрице G. Код Рида ‒ Маллера нулевого порядка является (n, 1)-кодом. Это просто код с повторением, который тривиально декодируется с помощью мажоритарного метода. Минимальное расстояние та- кого кода равно 2 . В качестве примера положим т = 4, и =- 16, r =-- 3. Тогда 0, = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1] = [а ], 
Поскольку G, имеет 4 строки, матрица G., имеет ., строк.' а,а, а,а, а,а, ®~~з а.,а, а,а, '4 а матрица б, имеет ( строк: 000000000000001 1 0000000000000 10 1 00000000000 1000 1 0000000100000001 G-, =‒ а,а,а., а,а,а, а,а,,а, а,а„-а, Таким образом порождающая матрица кода Рида ‒ Маллера третьего порядка длины 16 является (15X16)-матрицей вида ~0 G= G., Эта порождающая матрица задает (16, 15)-код над GE (2) (на са- мом деле это просто код с проверкой на четность). Другой код Рида ‒ Маллера может быть получен с использованием этих ма- триц, если мы положим r = 2. В этом случае порождающая ма- трица имеет вид и задает (16, 11)-код над GF (2). (В действительности это (15, 11)- код Хэмминга, расширенный с помощью проверки на четкость.) Из определения порождающей матрицы ясно, что код Рида‒ Маллера r-го порядка может быть получен пополнением кода Рида ‒ Маллера (г 1)-го порядка, а код Рида ‒ Маллера (г ‒ 1)- го порядка получается из кода r ro порядка с помощью выбрасы- вания. Поскольку код Рида ‒ Маллера r-го порядка содержит код (г ‒ 1)-го порядка, ясно что его минимальное расстояние не может быть больше минимального расстояния кода (г ‒ 1)-го порядка. В дальнейшем мы докажем, что код Рида ‒ Маллера r-го порядка имеет минимальное расстояние d* =- 2'" ‒ '. 78 ГЛ. 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ 000000000000 1 1 1 0000000000 1 100 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 000000110000001 000001010000010 000100010001000 1 1 1 1 1 1 
з 7 коды PHYSIÀ ‒ MAJlJIEPA 79 Каждая строка матрицы б~ имеет вес 2 ‒ '. Таким образом, любая строка матрицы G имеет четный вес, а сумма двух двоичных векторов четного веса также имеет четный вес (см. задачу 3.11). Следовательно, все линейные комбинации строк матрицы 6 имеют четный вес, а это означает, что все кодовые слова имеют четный вес. Матрица С„содержит строки весом 2"' ‒ ', и, следовательно, ми- нимальный вес кода не превосходит 2 ‒ ". Мы должны доказать, что строки С линейно независимы, и найти минимальный вес кода. Мы докажем, что код имеет мини- мальный вес 2'" ‒ ' и строки в матрице G линейно независимы. Для этого мы построим алгоритм декодирования алгоритм Рида, который позволяет исправлять ~ .2 ‒" ‒ 1 ошибок и восстанавливать k информационных символов. Отсюда следует, что минимальное расстояние будет не меньше 2'" ‒ ' 1, но оно долж- но быть четным и поэтому будет не меньше 2 ‒ ". Алгоритм Рида был разработан специально для кодов Рида‒ Маллера. Можно, конечно, использовать процедуру синдромного декодирования, описанную в $ 3.3, но в данном случае осущест- вить ее довольно сложно. Алгоритм Рида отличается от большин- ства алгоритмов декодирования тем, что позволяет восстановить информационные символы прямо из принятого слова и при этом не дает точного значения самой ошибки. В этом алгоритме не ис- пользуются также промежуточные переменные, например син- дром. Предположим, что у нас имеется декодер для кода Рида‒ Маллера (г ‒ 1) -го порядка, исправляющего,' 2'" ‒ <' ‒ '> ‒ 1 ошибок. Мы построим декодер для кода Рида ‒ Маллера r-го по- / рядка, исправляющего ~ ‒, 2 - ' ‒ 1) ошибку, сведя этот случай к предыдущему. Поскольку мы уже знаем, что код Рида ‒ Маллера нулевого порядка может быть декодирован с помощью мажори- тарного метода, мы по индукции получим метод декодирования для кодов высших порядков. Удобно разбить информационный вектор на г + 1 сегмент, no- m ложив i = 11,, 1„..., 1„), где сегмент 1~ содержит, ин- формационных битов. Каждый сегмент будет умножаться на один блок матрицы 6. Кодирование можно представить поблочным умножением вектора на матрицу: G, с [ !О !3 ' ! 1 
Я() ГЛ. 3. ЛКНЕЙНЫЕ БЛОКОВЫЕ КОДЫ Предположим, что информационная последовательность разбита на сегменты следующим образом: каждому сегменту соответствует один из r блоков порождающей матрицы, который при кодирова- нии умножается на этот сегмент. Если мы сможем восстановить ин- формационные биты в r-M сегменте, то затем сможем вычислить их вклад в принятое слово и вычесть его из принятого слова. Тогда задача сведется к декодированию кода Рида Маллера (r 1)-го порядка. Процедура декодирования представляет собой последо- вательность мажоритарных декодирований и начинается с нахо- ждения мажоритарным методом информационных символов в сег- менте с номером r. Принятое слово запишем в виде +е. G„ Алгоритм декодирования сначала по вектору v восстанавливает 1„, затем вычисляется разность G, v' = v ‒ IrGr = [lo Il Ipl) +е, г-1 G которая является искаженным кодовым словом кода Рида ‒ Мал- лера (r 1) -го порядка. Прежде всего рассмотрим декодирование информационного бита iz>, который умножается на последнюю строку матрицы GÄ. Декодируем этот бит, вычисляя 2 ‒ ' проверочных сумм по 2' бит из 2 бит принятого слова, так что каждый принятый бит входит лишь в одну сумму. Проверочные суммы строятся таким образом, что символ iz> вносит вклад только в один бит, а все другие ин- формационные символы вносят вклад в четное число битов в каж- дой проверочной сумме. Таким образом, при отсутствии ошибок все проверочные суммы равны i>>. Но, даже если имеется не бо- лее ‒, 2 ‒ ' ‒ 1 ошибок, большинство проверочных сумм по- 1 прежнему будет равняться i>,. >. Первая проверочная сумма представляет собой сумму по мо- дулю 2 первых 2 битов принятого слова, вторая ‒ сумму по мо- дулю 2 вторых 2' битов принятого слова и т. д. Всего получается П1 ‒ Г 2"' ' проверочных сум.ц и по предположению имеется ‒ «2"' ‒ ' ‒ 1 
ЗАДАЧ К Щ ошибок. Таким образом, мажоритарное голосование проверочных сумм дает правильное значение i>~. Для построенного ранее (16, 11)-кода Рида ‒ Маллера эти четыре суммы выглядят следую- щим образом: l10 =00+ О1+В2+ВЗе „~n~ 410 = Ь4 Г О5 + ™6 + О7е -~з> l I0 = 518 ~ 09 + 010 + о115 (4) l IP = 012, 013+ О14 + О15. Если произошла только одна ошибка, то одна из оценок, даваемых проверочными суммами, будет неверна; мажоритарное решение дает значение i>0. Если произошло две ошибки, то ни одно значе- ние проверочных сумм не встречается чаще других и обнаружи- вается двойная ошибка. Аналогично может быть продекодирован любой информацион- ный символ, который умножается на одну из строк матрицы G„. Это происходит потому, что любая строка матрицы G, ничем не выделяется среди остальных. Перестановкой столбцов мы можем добиться того, что любая строка будет выглядеть так же, как по- следняя строка матрицы G„. Следовательно, можно использовать те же самые проверочные суммы, соответственно переставив ин- дексы у символов, входящих в эти суммы. После построения 2 ‒" проверочных сумм каждый бит декодируется мажоритарным ме- тодом. После того как эти информационные символы найдены, их вклад в кодовое слово вычитается из принятого слова. Это экви- валентно тому, что мы получаем слово кода Рида ‒ Маллера (r ‒ 1)-го порядка. В свою очередь его последний сегмент инфор- мационных битов вычисляется с помощью той же самой процедуры. Этот процесс повторяется до тех пор, пока не будут найдены все информационные биты. ЗАДАЧИ 3.1. Порождающая матрица кода над GF (2) задается следующим образом: а. Найти порождающую и проверочну1о матрицу эквивалентного си- стематического кода. б. Выписать вектор дуального кода. в. Выписать стандартное расположение для этого кода. г. Сколько кодовых слов имеет вес О, ..., 6? д. Найти кодовое слово, соответствующее информационной последо- вательности 101. Декодировать принятое слово 111001. 
Щ ГЛ. 3. JlHHEAHblE БЛОКОВЫЕ КОДЫ 3.2. Д,1я заданного кода с проверочной матрицей Н показать, что смежный класс, соответствующий синдрому s, содержит вектор веса аи в том и только том случае, когда некоторая линейная комбинация аи столбцов матрицы Н равна s. З.З. В этой задаче доказывается, что хороший декодер должен производить нелинейные операции (даже если сам код является линейным). а. Доказать, что процедура вычисления синдрома линейна по отно- шению к вектору ошибок. Это значит, что если s = F (е), то F (ае1 + be>) = aF (е,) + bF (е2). б. Линейный декодер ‒ это такой декодер, у которого функция е =- =- f (s), связываю.цзя синдоом н вектор ошибок, удовлетворяет равенству f (as> + bsm) = af (з1) + bf (s.,). Доказать, что линейный декодер может исправлять самое большее (и ‒ /г) Х Х (д ‒ 1) из и (д ‒ 1) возможных одиночных ошибок. в. Доказать, что если мы хотим, чтобы декодер исправлял все одиноч- ФЪ ные ошибки, то функция е = ‒ f (s), связывающая синдром и вектор ошибок, должна быть нелинейной. 3.4. Доказать, что еслн линейный двоичный код имеет нечетное минимальное расстояние. то расширение кода добавлением проверки на четность увеличивает м ин имальное расстоя н ие па 1. 3.5. Определим линейный (5, 3)-код над GF (4) с помощью порождающей матрицы а. Найти проверочную матрицу. б. Доказать, что этот код исправляет одииочные ошибки. в. Доказать, что этот код исправляет два стирания [см. задачу 3.9.‒ Перев. ] г. Доказать, что это совершенный код. 3.6. Чему равна скорость (максимального) двоичного подкода над подпо- лем, лежащего в коде над GF (4) из задачи 3.5? Выписать для э1ого подкода пор ождающ) ю матрицу в систематическом виде. 3.7. Сделав несбходимый расчет, доказать возможность существования совершенного (11, 6)-кода над CiF (3), исправляющего 2 ошибки (Голей построил такой код в 1949 г.). 3.8. Сделав цеобходимый расчет, доказать возможность существования совершенного (д+ 1, д ‒ 1)-кода над GF (д), исправляющего одииочные ошибки. (Эти коды являются расширенными кодами Рида ‒ Соломона. Они эквивалентны кодам Хэмминга.) 3.9. Предложить процедуру восстановления двух стираний для двоичного (7, 4)-кода Хэмминга. (Стиранием называется потеря передаваемого символа в некоторой позиции. Оно отличается от ошибки тем, что известно, в какой именно позиции это произошло.) 3.10. Найти проверочную и порождающую матрицы для (21, 18)-кода Хэм- минга над GF (4). Разработать кодер и использующий таблицу синдромов деко- дер, не входя во все детали, а только указывая необходимые для работы де- кодера блоки. Является ли подлежа~цая просмотру таблица сиидромов чрез- мерно большой для практического использования? 3.11. Доказ1ть, «го сумма двух двоичных m-мерных вскторов четного веса имеет чегный вес. 
ЗАМЕЧАНИЯ 83 3.12. Взвешивание ~èàðîâ. Пусть имеются весы с двумя чашками и12 бильярд- ных шаров, из которых один может оказаться легче или тяжелее остальных. а. Используя проверочную матрицу укороченного (l2, 9)-кода Хэммин- га над GF (3), предложить способ, как за три взвешивания определить нестандарт- ный шар (если он имеется) и выяснить, легче или тяжелее он остальных шаров. б. Можно ли решить задачу таким же способом, если шаров будет 13? Можно ли решить задачу в случае 13 шаров, если можно использовать четырнадцатый, заведомо стандартный шар? в. Используя сферическую упаковку, доказать, что задачу нельзя решить для 14 шаров, один из которых может оказаться нестандартным. 3.13. Код, совпадающий с дуальным ему кодом, называется самодуальным. а. ~оказать, что линейный код с проверочной матрицей [( ‒ Р) ~) является самодуальным тогда и только тогда, когда P ‒ квадратная матрица, удовлетворяющая равенству РР = 1. б. Построить двоичный самодуальный код длины 4 и 8. 3.14. Предложить алгорнтм декодирования кодового слова кода Рида‒ Маллера при наличии 2~ ~ ‒ 1 стираний. 3.1~. Можно ли с помощью проверки на четность расширить любой не- двоичный (n, !г, d*)-код Хэмминга для получения (и+ 1, К d'+ 1)-кода? Привести доказательство или контрпример. 3. I6. Доказать, что граница Синглтона верна также и для нелинейных кодов. 3.17. Построить двоичный (7, 4)-код Хэмминга с помощью диаг раммы Венна: пересечь три круга так, чтобы получилось семь областей, и четырем обла- стям поставить в соответствие информационные символы, а остальным трем‒ проверочные символы. Обсудить исправление ошибок и стираний, используя полученную диаграмму. ЗАМЕЧАНИЯ Изучение линейных кодов восходит к ранннм работам Хэмминга [l950] и Го- лея [1949]. Большинство положеннй, нспользуемых в настоящее время при изучении линейных кодов, заложено Слепяном [1956, 1960]; первые три пара- графа тесно связаны с этимн работами. Еще до этого Киясу [1953] обратил вннмание на связь между линейными кодами и подпространствами векторных пространств. Коды с максимальным расстоянием впервые изучал Синглтон [1964]. Двоичные коды Хэмминга как коды, исправляющие ошибки, впервые рас- сматривал Хэмминг, хотя подобные комбинаторные структуры, ранее встреча- лись в задачах статнстики. Недвоичные коды Хэмминга были получены Голеем [l958] н Коком [l959]. Понятие совершенного кода впервые встречается у Голея, хотя он не поль- зовался таким термином. Делалось много попыток найти новые совершенные коды, но лишь отдельные из них увенчались успехом. В ряде работ Тиетявяй- нен и Ван Линт (работы завершились в l974 и l975 гг. соответственно) до- каззлн, что не существует линейных (нетрнвиальных) совершенных кодов, отлич- ных от кодов Хэмминга или Голея, и не существует нелинейных (нетривиаль- ных) кодов, за исключеннем кодов Васильева [1962] и Шенхейма [1968] '). Коды Рида ‒ Маллера были получены Маллером [1954], и в этом же году Рид разработал алгоритм нх декодирования. Этот алгоритм необычен тем, что прнннмает решение, основанное на мажоритарной логике. Коды Рида ‒ Маллера являются предшественниками обширных семейств мажоритарно декодируемых кодов, с которымн мы встретимся в следующих главах. 1) Одновременио этот же результат был получен Семаковым и Зиновьевым (см. Семаков Н. В., Зиновьев В. A. Совершенные н квазисовершенные коды.‒ Проблсмы передачи информации, 1969, вып. 2, с. 14 ‒ -18). ‒ Прил~. перео. 
ГЛАВА 4 АРИФМЕТИКА ПОЛЕЙ ГАЛУА Важнейшие и наиболее мощные идеи теории кодирования осно- ваны на арифметических системах полей Галуа. Многим из нас эти арифметические системы не известны, и, прежде чем продол- жать изложение теории кодирования, нам придется изучить ос- новы этого раздела математики. В настоящей главе мы возвращаемся к начатому в гл. 2 опи- санию структуры полей Галуа. Там мы ввели определение поля, но не указали процедур построения полей Галуа, а именно их таблиц сложения и умножения. Мы будем изучать поля Галуа с помощью двух построений, одно из которых основывается на кольце целых чисел, а другое ‒ на кольцах многочленов, и докажем, что таким образом можно построить все поля Галуа. 4.1. КОЛЬЦО ЦЕЛЫХ ЧИСЕЛ Множество всех целых чисел (положительных, отрицательных и нуля) образуют кольцо относительно обычных операций сложе- ния и умножения. Это кольцо принято обозначать через Z. В дан- ном параграфе мы будем изучать структуру кольца целых чисел. Говорят, что целое число s делится на целое число r или что r делит s (или что r является делителем s), если ra ‒ s, где а ‒ не- которое целое число. Если r и делит s, и делится íà s, то r =- ~ь. Действительно, r -=- sa u s = rb для некоторых целых чисел а и b; следовательно, r =- rab u ab должно равняться 1. Так как а и b‒ целые, то и а, и b должны быть либо 1, либо ‒ 1. Положительное целое число р ) 1, которое делится только на ~р или ~1, называется простым. Положительное целое число, большее 1, не являю:цееся простым, называется составным. Наи- больший общий делитель двух целых чисел r u s обозначается через НОД (r, s) и определяется как наибольшее положительное число, которое делит оба из них. Наиленьшее общее кратное двух целых чисел г и s обозначается через НОК (r, s) и определяется как наи- 
4. ~. КОЛЬЦО ЦЕЛЫХ ЧКСЕЛ Я5 меньшее положительное число, которое делится на оба из них. Два числа называются взаимно простыми, если их наибольший общий делитель равен 1. В общем случае в кольце целых чисел деление возможно не всегда, зато имеют место две почти столь же важные операции, а именно сокращение и деление с остатком. В силу возможности сокращения кольцо целых чисел является областью целостности. Возможность деления с остатком (известного как алгоритм деле- ния) обычно доказывается с помощью конструктивной процедуры. Мы сформулируем его в виде самоочевидной теоремы. Теорема 4.1.1 (алгоритм деления). Для каждой пары целых чисел с и d при отличнох от нуля d найдется единственная пара целых чисел Q (частное) и s (остаток), пгакпх, что с -= dQ + з, где О а в ( [ с( (. Обычно нас будет больше интересовать не частное, а остаток. Мы будем часто записывать остаток в виде равенства s = ‒ Rq [с), которое читается так.' «s является остатком от деления с íà d». Другим обозначением является s = с (mod d). Соотношение такого вида называется сравнениеч и читается так'. «s сравнимо с с по модулю d». Оно означает, что при делении íà d числа s и с имеют один и тот же остаток, ноя необязательно меньше d. Вычисление остатка от сложного выражения, содержащего сложение и умножение, облегчается тем, что можно менять после- довательность выполнения операции вычисления остатка со сложением и умножением. А именно справедливо следующее утвер- ждение. Теорема 4.1.2. (i) R~ [а + Ь] = R~ (R~ [а] -[- R„[b](. (11) р~ [а b] = R~ (R~ [а] R~ [Ь]}. Доказательство предоставляется читателю в качестве упраж- нения. П Используя алгоритм деления, можно найти наибольший общий делитель двух целых чисел. Например, НОД (814, 187) находится следующим образом: 814 =- 4x187 + 66, 187 ‒ 2х 66 -I- 55, 66 =- 1'.-:55 + 11, 55 = 5.<1, +O 
86 ГЛ. 4. АРКФМЕТККА ПОЛЕЙ ГАЛУА Так как НОД (814, 187) делит и 814, и 187, то он должен делить и остаток 66. Так как он делит и 187, и 66, то он делит и 55. Так как он делит и 66, и 55, то он делит и 11. С другой стороны, 11 делит 55, а поэтому и 66, и 187, и, наконец, также 814. Следовательно, НОД (814, 187) равен 11. Теперь можно выразить 11 в виде линейной комбинации чисел 814 и 187, начиная снизу выписанной выше последовательности и поступая следующим образом: 11 =-66 1 М 55=- ‒ ‒ 66 ‒ 1 х (187 2 .". 66) = ‒ 3 '; 66 ‒ 1 ';. 187 ‒‒ = 3 ". (814 ‒ 4 '. 187) ‒ 1 .". 187 ==- 3 '". 814 ‒ ‒ 13 х 187. Следовательно, мы выразили НОД (814, 187) в виде линейной ком- бинации чисел 814 и 187 с коэффициентами из кольца целых чисел, а именно s=Qr+r„ r =--= =Q.r, + г„ r< =. Я,г., + гз rn 1 ‒ Qn+trni и процесс заканчивается, когда полученный остаток равен нулю. Последний ненулевой остаток г„равен наибольшему общему дели- телю. Наконец, мы приходим к важному и интуитивно не очевидному результату теории чисел. Следствие 4.1.4. Для любьсх целых чисел r и s су;цесавуют целые числа а и Ь, такие, что НОД (r, s) = ar + bs. НОД (814, 187) = ‒ 3:< 814 13 .': 187. Эти рассуждения могут быть проведены в общем виде для произ- вольных целых чисел r u s и позволяют доказать приведенные ниже теорему и следствие. Теорема 4.1.3 (алгоритм Евклида). Наибольший общий де- литель двух различных ненулевых целых чисел r и s л~ожет быть вычислен итеративным применением алгоритма деления. Предпо- ложил~, что r ( s и оба эти числа положительны; тогда алгоритм состоит в следующелк 
4.2. Конечные пОля; КОльцО целых чисел 87 Доказательство. Последний остаток в теореме 4.1.3 равен НОД (I, s). Воспользуемся множеством выписанных в этой теореме уравнений, чтобы исключить все остальные остатки. Это даст выра- жение для r,„â виде линейной комбинации r u s с целочисленными коэффициентами. I~ 4.2. КОНЕЧHЫE ПОЛЯ, OCHOBAHHЫЕ НА КОЛЬЦЕ ЦЕЛЫХ ЧИСЕЛ Имеется очень важная конструкция, позволяющая по заданному кольцу построить новое кольцо, называемое кольцом отношений. В случае произвольного кольца для построения кольца отноше- ний строятся смежные классы, однако в случае кольца целых чи- сел кольцо отношений строится просто. В некоторых случаях это построение приводит к полям (в случае, когда кольцо является об- ластью целостности}. Определение 4.2.1. Пусть д положительное целое число. Кольцом отношений, именуемым также кольцом целых чисел по модулю q и обозначаемым через Z /(q), называется множество 10, 1, ..., q ‒ 1} с операциями сложения и умножения, опреде- ляемыми равенствами а + 'о = Rq [а + 'о), а о = Я„[аЬ). Элементы, обозначенные через О, 1, ..., д ‒ 1, принадлежат как Z, так и ZI(q). Пожалуй, лучше под элементами из Zl(q) по- нимать не первые д элементов из Z, а некоторые другие объекты, обозначенные таким же образом. Произвольный элемент а из ~ можно отобразить в Z/(q), полагая а' = Я [a]. Два элемента а н Ь из Z, отображаемые в один элемент из У~(q), сравнимы по мо- дулю д и а = Ь + тд для некоторого целого m. Теорема 4.2.2. Кольцо отношений 7 /(q) является кольцом. Доказательство предоставляется читателю в качестве упраж- нения. О Как показывают примеры из $ 2.4, арифметику полей GF (2) и GF (3) можно описать как сложение и умножение по модулю 2 и 3 соответственно, а арифметику в поле GF (4} так описать нельзя. Таким образом, в принятой нами символике GF (2) = = Z/(2), GF (3} = ‒ Zi(3), GF (4) + Z/(4). Общий результат дается следующей теоремой. Теорема 4.2.3. Кольцо отношений Z/(q) является полем тогда и только когда, когда д равно простол~у числу. Доказательство. Предположим, что q ‒ простое число. Для доказательства того, что кольцо является полем, надо показать, что каждый ненулевой элемент имеет мультипликативный обрат- 
8Q ГЛ ° 4. АРИФМЕТИ КА ПОЛЕЙ ГАЛУА ный. Пусть s ‒ ненулево"; тогда 1 ~ s ®p Так как q просто, то HO+ (s, q) = 1, и в силу следствия 4.1.4 1 =ад+И для некоторых а и b. Таким образом, 1 = R, [1] = R, [aq + Ьз] = R, (R, [aq] + R, [Ьз]] = = R, [Ьз] = R, ( R, [Ь] . R, [s]] = R, ( R [Ь] s]. Следовательно, элемент Я~ [Ь] является мультипликативным об- ратным элементу s относительно операции умножения по модулю д. Теперь допустим, что д ‒ составное число. Тогда д = rs. Если данное кольцо представляет собой поле, то r имеет обратный элемент r ', и поэтому s = R, [s] = R, [r ' rs] = R, [r 'q] =- О. Но s + О, так что мы получили противоречие. Следовательно, рас- сматриваемое кольцо не является полем. H В случае когда кольцо отношений Z/(q) образует поле, оно также обозначается через GF (q), чтобы подчеркнуть тот факт, что оно является полем. 4.3. КОЛЬЦА ' МНОГОЧЛЕНОВ Многочленом над полем GF (q) называется математическое выра- жение f (x) = /„1х" ' + ~„йх" + . + f~x + f~, где символ х называется неопределенной переменной, коэффициенты f, принадлежат полю GF (q), а индексы и показатели сте- пеней являются целыми числами. Нулевым многочленом назы- вается многочлен f (х) = О. Приведенным многочленом называется многочлен, старший коэффициент f„, которого равен 1. Два мно- гочлена равны, если равны все их коэффициенты f;. Степенью ненулевого многочлена f (х) называется индекс старшего коэффициента f„,; степень многочлена f (х) обозначается через deq f (х). Степень ненулевого многочлена всегда конечна. Степень нулевого многочлена по соглашению полагается равной отрицательной бесконечности ( ‒ oo). Множество всех многочленов над полем GF (q) образует кольцо относительно сложения и умножения, определяемых по обычным правилам сложения и умножения многочленов. Такое полино- миальное кольцо можно определить для каждого поля Галуа GF (q). Это кольцо обозначается через GF (q) [х]. В исследованиях по кольцам GF (q) [x] элементы поля GF (q) иногда называются скаляоами. 
4.3. КОЛЬЦА МНОГОчл ЕНОВ 89 Суммой двух многочленов / (х) и g (х) нз GF (д) [х] называется многочлен из GF (q) [х), определяемый равенством ОО Р (х} + g (х} = Q ф - [- gz) х', ',~ =0 где, конечно, члены с индексом, большим наибольшей из степеней многочленов f (х) и g (х), равны нулю. Степень суммы не превос- ходит наибольшей из этих двух степеней. Например, над GF (2) (х'+ х'+ 1)+ (х'+ х+ 1) = =- л' + (1 + 1) х-' + х + (1 + 1) = х' + х. Произведением двух многочленов из GF (а} [х] называется много- член из GF (q) [x J, определяемый равенством /(х) д(х) = ~'.~ h f>g ~ х'. с j=o Например, над GF (2) (хз + х' + 1) (х' + х + 1) = х5 + х + 1. Степень произведения равна сумме степеней множителей. Кольцо многочленов во многих отношениях аналогично кольцу целых чисел. Чтобы сделать эту аналогию очевидной, в изложе- нии данного параграфа мы следуем ~ 4.1. Скажем, что многочлен s (х) делится на многочлен r (х) или что r (х) делит s (х), если су- ществует многочлен а (х), такой, что r (х) а (х) =- s (х}. Многочлен р (х), делящийся только на многочлены ар (х) или а, где и про- извольный ненулевой элемент поля GF (q), называется неприводи- мым многочленом. Приведенный неприводимый многочлен назы- вается простым многочленом. Наибольший общий делитель двух многочленов r (х) и s (х) обо- значается через НОД [r (х), s (х}] и определяется как приведенный многочлен наибольшей степени, делящий одновременно оба из них. Наименьшее общее кратное двух многочленов r (х) и s (х) обозна- чается через НОК ]r (х), s (х) J и определяется как приведенный многочлен наименьшей степени, делящийся на оба из них. Как мы увидим, наибольший общий делитель и наименьшее общее кратное определены единственным образом, так что наше определение кор- ректно. Если наибольший общий делитель двух многочленов ра- вен 1, то они называются взаимно простыми. Если r (х} одновременно делится Hà s (х) и делит s (х}, то r (х} = = а s (х}, где а ‒ элемент поля GF (а}. Это доказывается следую- щим образом. Должны существовать многочлены а (х) и Ь (х}, та- кие, что r (х) =- s (х) а (х) и s (х) = r (х) Ь (х); следовательно, < (х) = r (х} Ь (х} а (х}. Но степень правой части равна сумме степеней r (х}, Ь (х} и а (х}. Так как эта величина должна быть рав- 
QQ а'Л. 4. АРКФМЕТККА ПОЛЕЙ ГАЛУА ной степени левой части, то Ь (х} и а (х} должны иметь нулевуЮ степень и, таким образом, являться скалярами. Для многочленов над полем вещественных чисел очень полезна (и элементарно вводится} операция дифференцирования. В случае многочленов над конечным полем определение дифференцирова- ния в смысле операции предельного перехода невозможно. Тем не менее удобно определить операцию над многочленами, резуль- тат которой ведет себя так, как вела бы производная. Такой мно- гочлен называется формальной производной от многочлена. Определение 4.3.1. Пусть r (х) ‒ г„,х" ‒ ' + rÄg х" ‒ -' + + + r,õ + r, ‒ многочлен над GF (а}. Формальная производная от r (х) определяется как многочлен вида r' (х) = ((и ‒ 1)) r„, х" ‒ ' + ((и -- 2)) r„,ë" ‒ ' ‒ ','- r„ где коэффициенты ((i)) называются числами поля GF (q) и вычис- ляются как сумма i членов в поле GF (а}: ((1')) ‒ 1 + 1 + + 1. Легко проверить, что сохраняются многие полезные свойства производных, а именно что [r (х) s (х) ]' = r' (х) s (х) + r (х) s' (х) и что если а' (х) делит r (х), то а (х) делит r' (х.) В кольце многочленов, так же как и в кольце целых чисел, деление в общем случае невозможно. Однако для многочленов над полями тоже имеют место сокращение и деление с остатком. Алгоритм деления для многочленов дается следующим утвержде- нием. Теорема 4.3.2 (алгоритм деления для многочленов). Для каждой пары многочленов с (х) и d (х), d (х) + О, существует единственная пара многочленов Q (х) (частное) и s (х) (остаток), таких, что с (х) =. Q (х} d (х) + s (х) и deg s (х} ( deg d (х}. Доказательство. Частное и остаток находятся по элементар- ному правилу деления многочленов. Они единсгвенны, так как если с (х} =- d (х) Q, (л.) + s, (х} =- d (х) Q, (л.} + s., (х), то d (х) [Q, (х) ‒ Q., (х) ] - ‒ ‒ s., (х) ‒ s, (x). В правой части стоит ненулевой многочлен, степень которого меньше deg d (х}, а в левой ‒ ненулевой многочлен, степень ко- торого не меньше deg d (х}. Следовательно, ооа многочлена равны нулю, и представление единственно. О 
4.3- КОЛЬЦА МНОГОЧЛЕ НОВ 9] Практическое вычисление частного и остатка выполняется с по- мощью простого правила деления многочленов «уголком». Обычно мы будем больше интересоваться не частным, а остатком. Остаток можно также записать в виде s (х) =- Rd<x> [с (х)]. Часто оста- ток называют вычетом многочлена с (х} по модулю многочлена d (х). Несколько отличным понятием является сравнение s (х): ‒ с (х) (mod d (х)), которое означает, что при делении на d (х) многочлены s (х) и с (х) дают один и тот же остаток, но степень многочлена с (х) не обязательно меньше степени многочлена d (х}. Иногда при вычислении остатка удобнее разбивать деление на этапы. Это можно осуществить с помощью следующей теоремы. Теорема 4.3.3. Пусть d (х) кратен многочлену g (х). Тогда для любого а (х) Яг <„> [а (х)] = Rs <„> [Яг <„> [а (х)]]. Доказательство. Пусть d (х) = g (х) h (х) для некоторого h (х}. Раскрывая правую часть, получаем а(х) = Q> (х) d(x)+ Яг <,> [а(х)] = = Q> (х) g (х) Й (х) (- Q~ (х) g (х) + Rs <„> [Кг <„> (а (х)]], где степень остатка меньше deg g (х}. Раскрывая левую часть, имеем а (х) = Q (x) g (x) + Rz <„> [а (х) ], и, согласно алгоритму деления, такая запись однозначна при сте- пени остатка, меньшей deg g (х}. Теорема вытекает из отождест- вления подобных членов в обоих выражениях. О Теорема 4.3.4. (i) Яг <„> [а (х) + b (х) j = Яг <„> [а (х)] + Яг <, > [b (х)], (й) Rq <„> [а(х} b(x)] = Рг <„> (Rq < >[а(х)] Яг <„> [b(x)]}. Доказательство сводится к упражнению: использовать алго- ритм деления для выражений в сбеих частях равенства и прирав- нять остатки. О Подобно тему как часто бывает полезным представление поло- жительных целых чисел в виде произведения простых сомножите- лей, часто бывает полезным представление приведенных много- членов в виде произведения простых многочленов. Теорема 4.3.5 (тес рема сб сднозначнсм разложении). Ненулевой многочлен р (х) над некоторым полем однозначно (с точ- ностью до порядка следования множителей) разлагается в произве- дение элемента поля и простых многочленов над этим полем. 
92 Гл. 4. АРкФметккА пОлей ГАЛУА Доказательство. Ясно, что входящим в произведение элемен- том поля должен быть коэффициент р„„ где п 1 степень многочлена р (х). Можно пренебречь этим элементом и доказывать теорему для приведенных многочленов. Предположим, что теорема не верна. Пусть р (х) ‒ приведен- ный многочлен наименьшей степени, для которого не верна тео- рема. Тогда имеются два разложения: р (х) = а, (х) а, (х) ... а» (х) =- Ь, (х) 6, (х) ... b (х), где а~ (х) и b~ (х) простые многочлены. Все многочлены аь (х) должны отличаться от всех многочле- нов b; (x), так как в противном случае можно было бы сократить общие члены и получить многочлен меньшей степени, который можно разложить двумя разными способами. Без потери общности предположим, что степень многочлена Ь, (х) не больше степени многочлена а, (х). Тогда а, (х) = Ь, (х) h (х) + s (х), где deg s (х) ( deg Ь, (х) ( deg а, (х). Далее, s (х) а., (х) а., (х) ... а» (х) = =- Ь, (х} [b, (х} ... bJ (х) ‒ h (х) а, (х) ... а» (х) ]. Разложим многочлен s (х) и многочлен, стоящий в квадратных скобках, на простые множители, разделив, если надо, на соответ- ствующий элемент поля так, чтобы все множители были приве- денными. Поскольку b, (х} не содержится в левой части, мы полу- чили два различных разложения приведенного многочлена, сте- пень которого меньше степени р (х}. Это противоречие доказывает теорему. В силу теоремы об однозначном разложении теперь ясно, что для любых двух многочленов r (х) и s (х) НОД [r (х), s (х)] и НОК [r (х), s (х) ] являются единственными, так как наибольший общий делитель равен произведению всех общих для r (х} и з (х} простых делителей, причем каждый делитель входит в наимень- шей из степеней, в которых он входит в r (х) и в s (х), а наименьшее общее, кратное равно произведению всех простых делителей, вхо- дящих либо в r (х), либо в s (х), причем каждый делитель входит в гаибсльшей из степеней, в которых он входит в r (х} или в s (х). Далее, лкСсй мнсгсчлен, делящий как r (х), так и s (х), делит НОД [r (х), s (х)], а лкбсй многочлен, делящийся и íà r (х), и на s (х), делится на НОК [r (х), s (х) ]. Из алгоритма деления многочленов вытекает важное следствие, известное под названием алгоритма Евклида для многочленов. Теорема 4.3.6 (алгоритм Евклида для многочленов). Наибольший общий делитель двух многочленов r (х) и s (х) над 
4.3. кОльцА мнОГОчлEМОВ 93 полем GF (q) можно вычислить с помощью итеративного приме- нения алгоритма деления. Если deg s (х) ) deg r (х) ) О, то после- довательность вычаслений такова: s (х) = Q, (х) г (х) + r, (л), r (х) =- Q, (х) r, (х) + r„(x), г1 (х) ‒ Qg (х) rg (х) + гд (х), ' r„ , (х) = Q„+, (х} г„ (х), и nроцесс обрьаается, как только получается равный нулю остаток. Тогда г„(х) = а НОД [r (х), s (х) ], где а ‒ некоторый скаляр. Доказательство. Отправляясь от первого уравнения, видим, что НОД [г (х), s (х) ] делит и делимое, и делитель, и, следователь- но, остаток. Проводя это рассуждение далее по всем уравнениям, видим, что НОД [r (х), s (х) ] делит г„(х). Отправляясь от послед- него уравнения, видим, что r (õ) делит делитель и остаток, так что он делит и делимое. Проводя это рассуждение по всем уравне- ниям вплоть до первого, видим, что г„(х) делит HOP, [r (х), s (х) ]. Так как г„(х} делит НОД [r (х), s (х) ] и делится на него, то полу- чаем утверждение теоремы. П Следствие 4.3.7. НОД [г (х), s (х) ] = а (х) r (х) + b (х) s (х), где а (х} и b (х) многочлены над GF (q). Доказательство. Последнее уравнение с ненулевым остатком в утверждении предыдущей теоремы дает выражение многочлена г„(х} через r„, (х} и r„, (х). Перебирая уравнения снизу вверх, исключаем сначала r„, (х), затем r„, (х) и т. д. и в конце концов получим выражение r„(x) только через r (х) и s (х). 0 Для произвольного элемента р поля GF (q) можно вычислить значение мнсгочлена иад GF (q) в этой точке, подставив элемент р вместо неопределенной переменной. Например, пусть над GF (3) р (х} = 2х~ + х4 + х~ + 2. Тогда (см. рис. 4.1) получаем р (О) = 2 О' + О' + О' + 2 = 2, р (1) = 2 1' + 1' + 1' + 2 = О, р (2) = 2 2' + 2' + 2' + 2 = 2. В случае поля вещественных чисел известной процедурой является вычисление значений многочлена в расширении этого поля; широко применяется вычисление значений многочлена с веществен- ными коэффициентами в поле комплексных чисел. Аналогично 
94 ГЛ. 4. А РИФМ ЕТК КА OOJI E A ГАЛУА (iF(3) 6й4) Рис. 4.1. Примеры конечнык полей. можно вычислять значения многочлена над GF (а) в расширении поля GF (а). Такое вычисление проводится подстановкой элемен- тов из расширения поля вместо неопределенной переменной х и выполнения операций в расширении поля. Например, пусть над GF (2) р(х) =х'+х+1. Тогда (см. рис. 4.1) для элементов поля GF (4) имеем р (0) = 0 + 0 + 1 = 1, 1з' р (2) = 2' + 2 + 1 =- 2, р (3) 3з + 3 + 1 . 3 Если р ($) = О, то элемент $ называется корнем многочлена р (х) или корнем уравнения р (х) =- О, Многсчлен не обязательно имеет корни в свсем сс~ственном поле. Многочлен х'+ х + 1 не имеет корней в GF (2), а также в GF (4). Теорема 4.3.8. Элемент $ является корнем многочлена р (х) тогда и толтотогда, когда х ‒ $ делит р (х). Более того, корня- ми многсчлена р (х) степени п являются не более п элементов поля. Доказательство. Согласно алгоритму деления, р (х) = ‒ (х ‒ $) Q (х) + s (х), где степень s (х) меньше единицы. Таким образом, s (х) является =-лементом поля s,. Следовательно, О: ‒ р ($) == (I) ‒ $) Q ($) + + э„и соответственно s (х) ‒ ‒ s, == О. 
4.4. КОНЕЧНЫЕ ПОЛЯ; КОЛЬЦА ИНОГОЧЛЕНОВ 95 Обратно, если х ‒ [} делит р (х), то р (х) --: (х P) Q (х), так что р ([)) ‒ (р ‒ [)) Q (]]) =- О, и, таким образом, р ‒ корень многочлена р (х). Разложим теперь многочлен р (х} в произведение элемента поля и простых множителей. Степень многочлена р (х) равна сумме степеней простых множителей, и для каждого корня имеется один такой множитель. Следовательно, существует не более и корней. Д 4.4. КОНЕЧНЫЕ ПОЛЯ, ОСНОВАННЫЕ НА КОЛЬКАХ МНОГОЧЛЕНОВ К,онечные поля можно построить из колец многочленов таким же образом, каким были построены поля из кольца целых чисел. Пусть имеется кольцо многочленов F [х ] над полем F. Так же, как были построены для кольца 7. кольца отношений, можно построить и кольца отношений для кольца F [x ], Выбирая из Р [x ] произвольный многочлен р (х}, можно определить кольцо отноше- ний, используя р (х) в качестве модуля для задания арифметики этого кольца. Мы ограничимся рассмотрением только приведен- ных многочленов, так как это ограничение снимает ненужную неопределенность построения. Определение 4.4.1. Яля произвольного приведенного много- члена р (х) ненулевой степени над полем F кольцом многочленов по модулю р (х) называется множество всех многочленов над F, степень которых не превосходит степени многочлена р (х), с опе- рациями сложения и умножения многочленов по модулю р (х). Это кольцо принято обозначать через F (х}/(р (х}}. Произвольный элемент r (х} кольца F [х] можно отобразить в элемент кольца F [х]/(р (х)) с помощью соответствия r (х)- Я, <,> [r (х) ]. Два элемента а (х) и b (х) из F [х], отображаемые в один и тот же элемент из F [х] (р (х)), называются сравнимыми: а (х)‒ : b (х) (mod р (х)). Тогда Ь (х} =- а (х) + Я (х} р (х) для некоторого многочлена Q (х}. Теорема 4.4.2. Множество F [х ],'(р (х}} является кольцом. Доказательство предоставляется читателю в качестве упраж- нения. П Выберем в кольце многочленов над GF (2), например, много- член р (х) ‒ х' + 1. Тогда кольцо многочленов по модулю р (х) равно GF (2} [х]/(х'+ 1}. Оно состоит нз элементов [0, 1, х, 
Щ f'Ë. 4. АРифмЕТККА пОЛей ГАЛУА х + 1, х', х- "-,'- 1, х'+ х, х" + r + 1}. В этом кольце умноже- ние выполняется, например, следующим образом: (х' -]- 1) . (х-") = Я„+) [(х'+ 1) х'] = = R» ~) [х (х' + 1) + х'- + х] = х' + х, где использована редукция по правилу х' = х (x' + 1} + х. Теорема 4.4.3. Кольцо многочленов по модулю привсденного многочлена р (х) является полел< тогда и только тогда, когда мно- гочлен р (х) прост ') . Доказательство. Пусть многочлен р (х} прост. Чтобы доказать, что рассматриваемое кольцо образует поле, достаточно показать, что каждый ненулевой элемент имеет мультипликативный обрат- ный. Пусть s (х) ‒ некоторый ненулевой элемент кольца. Тогда deg s (х) ( deg р (х). Так как многочлен р (х} прост, то НОД [s (х), р (х) ] = 1. По следствию 4.3,7 1 = a(x)p(x)+ b(x)s(x) для некоторых многочленов а (х) и b (х}. Следовательно, 1 = R«„) [1] = Rp <„) [а (х} р (х) + Ь (х) s (x)] = = Рр <х) [R«õ) [1)(х)] 'R«» [s(x)]I R«„) IR«» [b (x)] 's (x) $. Таким образом, в кольце многочленов по модулю р (х) многочлен R«Ä) [b (х}] является мультипликативным обратным к s (х). Предполсжим теперь, что степень многочлена р (х) равна по меньшей мере 2 и что он не прсст. Тогда р (х) = r (х) s (х) для некоторых r (х) и s (х), степени которых равны по меньшей мере 1. Если кольцо является полем, то многочлен r (х) имеет обратный r ' (х}, и поэтому s (x) = R, <„) [s (x)] = R„<„) [r ' (х) r (x) s (x)] = = R«„) [r ' (х) р (х)] = О. Но s (х} =,й О, и мы получаем противоречие. Следовательно, такое кольцо не может быть полем. П Если над полем GF (q) найден простой многочлен степени и, то, используя развитую в данном параграфе теорию, можно по- строить поле Галуа, содержащее д" элементов. В этом построении элементы поля представляются многочленами над GF (q) степени не выше и ‒ 1. Всего существует д" таких многочленов, и, следова- тельно, их столько же, сколько элементов в поле. ') Напомним, что простой многочлен является одновременно неприводимым и приведенным. Яля построения поля достаточно только неприводимости р (х), но мы условились рассматривать только приведенные многочлены, так что дальнейшие результаты носят менее общий характер. 
4.4. КОНЕЧ НЫЕ ПОЛЯ; КОЛЬЦА МНОГОЧЛЕНОВ 97 Целочисленнь!е обозначения Двоичные обозначения Степенные обозначения Многочаенные обозначения 00 О1 io 1l о о .с' .с х+! Рис. 4.2. Структура поля GF (4). а -- представления поля GF (4); б ‒ арифме- тические таблицы. В качестве примера построим поле GF (4) по полю GF (2), используя примитивный многочлен р (х) = х' + х + 1. Переби- рая все возможные разложения, легко проверить неприводимость этого миогочлена. Элементы поля задаются многочленами 10, 1, х, х + 1}. Приведенные на рис. 4.2 таблицы сложения и умно- женпя строятся по готовым правилам. Конечно, после того как арифметические таблицы построены, можно заменить миогочлеи- ные обозначения на целочисленные пли другпе желаемые обозна- чения. Таблица 4.1 содержит список простых многочленов над GF (2). Одним цз способов проверки простоты этих многочленов является метод проб и ошибок, т. е. непосредственная проверка всех воз- можных разложеипй, хотя для многочленов высоких степеней для этого потребуется ЭВМ. Собранные в табл. 4.1 простые много- члены представляют собой специальные частные случаи простых многочленов, известных под названием примитивных многочленов. Как будет описано в следующем параграфе, они дают наиболее удобное представление расширения поля. В заключение параграфа подытожим, где мы находимся. Мы разработалп необходимые для получеиия полей построения, которые будут использованы в дальнейшем, ио для полного пони- мания предмета необходимы еще некоторые сведения. В частности, необходимо установить следующие факты: 1) иад каждым нолем Галуа существуют простые многочлены любой заданной степени; 2) разработанные построения достаточны для получения всех 4 Р. яде~хут 
98 Гл. 4. АРКФметикА пОлей ГАЛУА Таблица 4.1 Простые многочлены над 0F (2) Свепень Простые мноаочлень! '3 "4 л I Примечание. Все многочлены являются примитивными. полей Галуа ‒ других полей нет'); 3) в каждом поле имеются некоторые предпочтительные, так называемые примитивные эле- менты. На рис. 4.3 дается сводка наиболее существеиных результатов, относящихся к полям Галуа. Остальная часть главы посвящена ') Математическая строгость требу ет здесь большего формал изма, и надо было бы сказать, что нет других полей с точностью до изоморфизма. Нефор- мально это означасг, что любые два поля Галуа с одинаковым числом элемен- тов являются двумя различными представлениями одного и того жс поля. Иллюзия другои струкгуры может быть, например, создана перестановкой тех же самых символов. 2 3 4 5 6 7 8 9 lO 11 !2 13 14 15 1б )7 18 19 20 21 х'+ х+ l 3-+- + 1 х +х+1 x +x +l хб+х+ 1 х +х +1 х8+ х4+ х3+ х'+1 х'+ х'+ ) х' +х +х +х+) !3+ 4+ 3+ x+ ) х~4+ х'0+ хб+ х+ х'6 + -х'2 + -х3 + х + -1 '!7+ 3+ 1 х'9-+х +хг+ х+! 20+ 3+ ) Х21, х2+ 1 х +x+1 хг'+ х + l хг4+ ~7+ ~2+ ~+ х~~+х~+х'+x+ 1 +x +х +х+1 >28+ 3 + ) 
4.5. пРимитиВные элементы 99 1. Число элементов любого поля Галуа равцо степени про- стОГО числа. 2.,Яля любого простого р и целого положительного и наи- меньшим подполем поля GF (р) является поле GF (р) Элементы поля GF (р) называются целыми числами поля GF (р"'), а число р ‒ -его характерис~пикой. 3. В поле Галуа характеристики 2 для каждого элемента р поля выполняется равенство 4,,Для любого простого р и целого иоложительного ni суще- ствует поле Галуа с р"' элемецтами. 5. 1(аждае поле Галуа GF (q) содержит хотя бы один прими- тивный элемент. 6. Над каждым полем Галуа существует хотя бы одии при- м итшшый многочлеп любой иоложптельной степени. 7. Каждый примитивиый элемент имеет иад любым подполем простой минимальный мцогочлен. 8. Два поля Галуа с одним ц тем же числом элементов изо- морфны. 9.,Яля любого д, являющегося степенью простого числа, и любого положительного целого т поле GF (q) является подполем в GF (q ), à GF (д"') является расширением поля GF (д). 10. Если и не делит т, то GF (q") не является подполем поля GF (qm) 11. Для любого элемента поля GF (q ) степень минимального многочлена над GF (q) является делителем m. Рис. 4.3. Некоторые основные свойства полей Галуа. доказательству большинства из этих результатов и введению новых понятий. Доказательство существования примитивных многочленов мы откладываем до конца $ 5.3. 4.5. ПРИМИТИВНЫЕ ЭЛЕМЕНТЫ В предыдущем параграфе было построено поле GF (4). На рис. 4.2 видно, что элемент поля, представляемый многочленом х, можно выбрать как бы в качестве некоторого основания логарифмов. За исключением нуля, все элементы поля могут быть представлены в виде степени элемента х. Определенне 4.5.1. Примшпивным алементом поля GF (q) на- зывается такой элемент а, что все элементы поля, за исключе- нием нуля, могут быть представлены в виде степени элемента а. 4'в 
1 PQ ГЛ ° 4. А Р ИФМЕ1'И КА ПОЛ Е Й ГАЛ УА Напр((ыер, в поле GF (5) 2' - 2, 2' ‒ 4, 2' =-- 3, 2' = 1, так что 2 является примитивным элементом поля GF (5). Примитив- ные элемснты полезны при пострсении пслей, так как еслп один из нпх найден, то, перемножая степени этог~~ примитивного эле- мента, можно псстроить таблицу умножения в поле. В данном параграфе будет доказано, что каждое лоле содержит примитив- пь!й элемент. Поле образует абелеву группу двояким способом. Миожество всех элементов поля образует абелеву группу по сложению, и мнсжество всех элементов поля, исключая нуль, образует абелеву группу по умножению. Мы будем работать с группой ло умноже- нию. Согласи~о теореме 2.2.5, порядок этой группы делится на по- рядок каждого ее элемента. Теорема 4.5.2. Пггсгггь (1„!) „..., 13,г ‒ нснгглевыг элементы гг(глгг GF (q); тоедгг х'-' 1 = (х ‒ рг) (х ‒ ~3,)... (х -- I)~,), Доказательство. Множество ненулевых элементов поля бг" (д) образует конечную группу ло умножению. Пусть I) - ‒ - какой-либо ненулевой элемент из GF (q), и пусть Й ‒ порядок этого элемента по умножению. Тогда, согласно теореме 2.2.5, h делит q ‒ 1. Сле- довательно, рд ‒ I (I)h)(q ‒ г >гл 1(q ‒ г >гл ! так что р является корнем многочлена х~ ' 1. О Теорема 4.5.3. Гругггга ненулевых элементов (галя GF (q) no умножению является циклической. Доказательство. Если число q ‒ 1 простое, то теорема три- виальна, ибо порядок всех элементов, за исключением нуля и еди- ницы, равен д ‒ 1, так что каждый такой элемент примитивен. ,Д,оказывать теорему надо только для составного числа q ‒ 1. Рассмотрим разложение числа д ‒ 1 на простые множители: S ю ‒ ! =Пр' Так как GF (q) поле, то среди его q ‒ 1 ненулевых элементов должен найтись хотя бы один, не являющийся корнем многочлена Ы ‒ ~)!о 1, поскольку этот многочлен может иметь не более (q ‒ 1)/р( корней. Следовательно, для каждого г можно найти такой (ч ‒ t)/~; ненУлевой элемент аг полЯ GF (q), что аг ' + 1. ПУсть b( = (ю ‒ 1 (Р~ , и пусть Ь = P((Ь( Докажем,что порядок Ь равен Ч ‒ 1 и, следовательно, группа является циклической. 
4.5. ПРИМИТИВНЫЕ ЭЛЕ11ЕНТЫ f P$ ъ. Шаг I. Порядок элемента b; равен р . Докизательство. V- Очевидно, что b,"' = 1, та к что порядок элемента b, дел цт р"i. ~ .--1 и. p . Он равен числу вида р, . Если и, мень пе ~,, то b,.' 1. Hp 3'. ‒ 1 b,.' =-- а,.' ' " =ф= 1, и, следовательно, порядок элсмента (I- 1)/Р. Y ° b; равен р Й7аг 2. Пор ядо к элемента Ь р авен д 1. Доказательство. Предп(лож~м, что b" = ‒ 1. Покажем сначала, что из этсго следует Y ° 1 равенство и =- 0(mod p;'у для всех c' = 1, ..., s. Для каждого 1 можно за и исать пДр j'+i р.j Заменяя 6 на Д; 1b,. и используя равенство b",~:= 1, находим .Д'' /+с Такич образом, и Д р'.~ = 0(mod р",). /+1 Поскольку р~ являются различными простыми числами, то n = = 0 (mod р,') для каждого 1. Следовательно, и = Д,,р,.'. Теорема доказана. О Эта теорема дает важнейший ключ к пониманию структуры полей Галуа, а именно следующее утверждение. Теорема 4.5.4. В каждом поле Галуа имгется примитае~ый элс.чент. Доказательство. Так как ненулевые элементы поля GF (q) образуют циклическую группу, то среди них имеется элемент порядка д ‒ 1. Этот элемент является примитивным. О Использование примитивного элемента для умножения в поле иллюстрируется следующими примерами. В поле GF (8) порядок каждого ненулевого элемента делит 7. Так как 7 ‒ простое число, то каждый элемент, за исключением нуля и единицы, имеет порядок, равный 7, и, следовательно, примитивен. Поле GF (8) можно построить с помощью миогочлена. 
fPg ГЛ. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА р (z) = z + z + 1. Основываясь на лримитивном элементе а =- 2, имеем а2 22 1 2+ 1, а4 22 + cc5 — — z'+ z + 1, 6 22 +1, В таком представлении умножение выполняется легко; например, ц4 ~5 а-~7 +2 .... а2 Порядок каждого элемента в лоле GF (16) делит 15. Элемент может иметь лорядок 1, 3, 5 или 15. Поле GF (16) можно на- строить с ломощью многочлена р (z) = z + z + 1 и лримитив- ного элемента а =- z; имеем а2 22 аз э а4 а' ае zg + я = z а8 СР =2З 1О „11 З+ (~12 23 + ;1З<Å~ д з + j.5 g2 + 22 +z+1, z' +1, +z, 2'+ Z+ 22 + ,Р.~ 2+ 1, г +1, + 1. В таком представлении поля умножение опять просто; например, ©11. ~13 ~16. ~Э Йри построении расширения поля в виде множества мнОГо- чланов удобно, чтобы многочлену х соответствовал примитивный 
4.8. СТРУКТУРА КОН ЕЧ НОГО flOJf4 $ ОЗ элемент поля. В этом случае в таблице умножения можно исполь- зовать х в качестве основания логарифмов, и это самое простое из возможных оснований. Такое построение поля можно осуще- ствить с помощью простых многочленов специального частного вида, называемых примитивными. Определение 4.5.5. Примитивным многочленом р (х) над по- лем GF (q) называется простой многочлен над GF (q), такой, что в расширении поля, построенном по модулю р (х), соответствую- щий многочлену х элемент лоля является лримитивным. ,Для каждого поля Галуа существуют примитивные многочлень| всех степеней, но доказательство этого результата мы отклады- ваем до конца следующего параграфа. Предваряя этот результат, можно сказать, что примитивный многочлен представляет собой простой многочлен, корнем которого является примитивный эле- мент лоля. 4.6. СТРУКТУРА КОНЕЧНОГО ПОЛЯ Ранее в данной главе мы изучали, как строить лоле. Предлола- гая, что можно найти простой многочлен стелени и над лолем GF (р), мы научились строить конечное поле с р" элементами. Теперь изменим точку зрения на лротивололожную. Вместо того чтобы строить поле, лредположим, что нам дано конечное поле, и докажем, что независимо от происхождения этого лоля всегда можно лредлолагать, что оно построено соответственно идеям, изложенным в предыдущих параграфах. Никаких других полей так лостроить нельзя. В процессе работы над материалом данного параграфа мы углу- бим наше лоиимание структуры конечных лолей. Структурные свойства будут лолезны во многих лриложениях. Мы докажем также, что для всех полей Галуа существуют лростые многочлены всех стеленей. Определение 4.6.1. Число элементов наименьшего подполя поля GF (q) называется характеристикой поля GF (q) Теорема 4.6.2. Каждое поле Галуа содержат единственное наименьшее подполе, число элементов которого равно простому числу. Следовательно, характеристика каждого поля Галуа яв- ляется простым числом. Доказательство. Поле содержит элементы 0 и 1. Для задания подноля рассмотрим подмножество G = 10, 1, 1 + 1, 1 + 1 + + 1, ...), обозначая его элементы через 10. 1, 2, 3, ...). Это лодм ножество является цц клической гр уп лой ло сложен и ю, которая должна содержать конечное число р элементов. Мы лока- жем, что р ‒ простое число и что G = GF (р). Сложение в G 
$ ()4 ГЛ. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА является сложением по модулю р, так как G образует цикличе- скую группу по сложению. В силу закона дистрибутивности умно- жение также должно быть умножением по модулю р, ибо р=()+" +1) P=P+. +р где элемент р суммируется а раз и суммирование ведется по мо- дулю р. Следовательно, умножение также является умножением ло модулю р. По умножению каждый элемент обратим, так как последовательность IP, 2р, Зр, ...) образует циклическую под- группу в G. Таким образом, подмножество 6 содержит единичный элемент, замкнуто относительно операций сложения и умножения и содер- жит элементы, обратные его элементам и по сложению, и по умно- жению. Следовательно, оно является подполем, и арифметика в этом подполе есть арифметика по модулю р. Но это в точности лоле, описываемое теоремой 4.2.3, и, следовательно, р должно быть простым. О В поле Галуа GF (q) мы построили подполе GF (р), где p— простое число. В частности, если д, с которого мы начинаем, само является простым числом, то, как мы видим, поле GF (q) можно интерпретировать как лоле чисел ло модулю д. Следовательно, для заданного простого числа действительно существует только одно поле с данным числом элементов, хотя, конечно, оно может быть представлено многими разными способами.,Ява поля, раз- личающиеся только представлениями, называются изоморфными. Мы увидели, что исходное поле GF (q) является расширением подполя GF (p). Теперь мы рассмотрим многочлены над GF (р), корнями которых являются некоторые выбранные элементы поля GF (q). Для большей точности введем следующее определение. Определение 4.6.3. Пусть GF (q) ‒ некоторое поле, пусть GF (q) - расширение поля GF (q), и пусть P ‒ элемент GF (Q). Простой многочлен f (х) наименьшей степени над GF (q), для кото- рого f (P) == О, называется минимальным многочлено.и элемента р над бр (q). Мы должны доказать, что минимальный многочлен всегда су- ществует и является единственным. Теорема 4.6.4. Каждый элемент р из GF (q) имеет единс~пвен- ный минимальный многочлен над GF (q). Если минимальный много- член элемента р равен f (х) и р .являеiпся корнем многочлгна g (x), mo f (х) делит а (х). Доказательство. Прежде всего р всегда является корнем многочлена л(~ х, представляющего собой многочлен над GF (q), Воспользуемся теоремой об однозначном разложении: ха ‒ х = f, (х) f, (х) ... fI, (х), 
4.8. стРУктУРА кО неч НОГО пОЯЯ g О5 где множители в правой части все простые многочлены над полем GF (q). Если р корень левой части, то в правой части должен найтись некоторый член, корнем которого является Это может быть только один из членов правой части, так как над расширением GF (Q) простые многочлены дальше разлагаются в произведение линейных членов и констант, и р может быть корнем только одного из линейных членов. Чтобы доказать вторую часть теоремы, положим g (х) = f (х) h (х) + s (х), где степень многочлена s (х) меньше степени f (х), так что р не может быть его корнем. Но О = g (р) =- f (р) " (р) + s (р) = s (р); следовательно, s(x) должен равняться нулю, и теорема доказана. П Следствие 4.6.5. Если f, (х), ..., f> (х) все различные мно- гочлены над GF (q), являющиеся минимальными для одного или нескольких элементов из GF (Q), то хч х = fi (х) f. (х) ... fa (х). Доказательство следует из теоремы, так как каждый такой элемент р является корнем многочлена хч х. О При Q = q разложение сводится к равенству х~ х = х(х P,) (х P,) ... (х P,,). которое мы уже встречали в теореме 4.5.2. Минимальный много- член над GF (а) элемента р, принадлежащего GF (о), является многочленом первой степени f (х) = х Теорема 4.6.6. Пусть g (х) произвольный многочлен над GF (q). Тогда существует расширение GF (Q), в котором g (х) распадается на произведение линейных множителей. Доказательство. Без потери общности можно предположить, что g (х) приведен. Построим последовательность расширений GF (q) с GF (Q,) с GF (Q,) c c GF (Q) по следующему правилу. На каждом шаге запишем g (х) в виде произведения простых многочленов над GF (Q>). Если еще имеются нелинейные множители, то выберем один из них, скажем g> (л), и~ построим расширение поля GF (QJ), используя gg (у) в качестве простого модуля. В этом расширении g (х) можно раз- ложить далее, поскольку новый элемент P = у является корнем многочлена g> (х). Таким образом (в случае необходимости уни- фицируя обозначения) будем действовать до тех пор, пока все множители не станут линейными. Поскольку степень g (х) конечна, этот процесс закончится после конечного числа шагов. 
$ QQ1 ГЛ. 4. АР КФ МЕТК КА ПОЛЕЙ ГАЛУА Определение 4.6.7. Любое расширение поля GF (q), в котором многочлен g (х) над GF (q) распадается в произведение линейных множителей и констант, называется полем разложения много- члена а (х). Теперь у нас есть все необходимое для олисания структуры произвольного лоля Галуа. 'Теорема 4.6.8. Пусть а ‒ примитивнай элемент поля Галуа GF (Q), являющегося расширением поля GF (q), и пусть т степень минимального многочлена f (х) элемента а над GF (q). Тогда число элементов в поле равно Q = д"' и каждый элемент р может быть представлен в виде р = а,а -' + a~,à -'+ ' ' + а,а + а„ где а,„„..., а„элементы поля GF (q). Доказательство. Очевидно, что каждый элемент р вида р = а,а"' ‒ '+ а,а ‒ '+ + а,а+ а, принадлежит полю GF (Q). Такое разложение единственно, так как если p = Ь,а -' + Ьо,оао-2 + ° ° ° + Ь а + Ьо ‒ другое представление элемента р, то О = (а, ‒ b„,,) а ‒ ' + + (а, ‒ b,) а + (а, ‒ b,), и, следовательно, а является корнем многочлена степени т 1, что лротиворечит выбору числа т. Всего имеется д таких эле- ментов р. и, следовательно, число элементов поля Q не меньше о"'. С другой стороны, каждый ненулевой элемент поля может быть лредставлен в виде некоторой степени элемента а. Но если f (х) ‒ минимальный многочлен элемента а, то f (а) = О. Следо- вательно, а'"+~„,,а~-'+ +~,а+ fo = О, Полученное равенство можно использовать для того, чтобы выра- зить элемент а через сумму меньших степеней элемента а: а = „, 1а ' ‒ ° ‒ 1а ‒ 0. Полученное соотношение можно ловторно лрименять для редук- ции любой степени элемента а к линейной комбинации стеленей (um ‒ ', ..., а', ао), что дает а~+' = ‒ f,( ‒ /,„,а~ ‒ ' ‒ . ‒ г,а ‒ !о) f ат ‒ 1 ... fа2 fg 
4еб ° СТРУКТУРА КО НЕЧ НОГО ПОЛЯ $ О7 й т. д. Следовательно, каждый элемент поля GF (Q) может быть представлен в виде линейной комбинации элементов а ‒ ', а ‒ 2,... ..., а, а', так что Q не может быть больше q, и теорема доказана. Следствие 4.6.9. Каждое поле Галуа содержит р элементов, где р некоторое простое, а т положительное целое число. Доказательство. Каждое поле Галуа содержит подполе с р элементами, к которому надо лрименить теорему 4.6.8. О Заметим, что теорему 4.6.8 можно ислользовать для того, чтобы связать с каждым элементом поля некоторый многочлен степени не выше т 1 путем простой замены элемента а на неопре- деленную переменную х. Эти многочлены можно рассматривать как элементы поля. Складываться и умножаться они будут по модулю минимального многочлена f (х) элемента а. Это в точности то же самое поле, которое получается в теореме 4.4.3, если в ка- честве простого многочлена выбрать f (х). Следовательно, число элементов в каждом лоле Галуа равно стелени лростого числа, и каждое поле Галуа может быть построено с помощью арифме- тики по модулю лростого многочлена. Наконец, мы должны доказать и обратное: такое поле суще- ствует для каждого простого р и целого положительного числа т. Прежде всего установим некоторые предварительные результаты. Теорема 4.6.10. Пусть харакпмристика поля GF (q) равна р. Тогда для любых элементов а и р из GF (q) и любого положитель- ного целого т (а ~ р)р = аР ~Pt Доказательство. Предположим, что теорема верна для т = 1. Тогда (а ~ р)р =- аР ~ Y. Возведем это равенство в р-ю стелень: ((а ~ р)~)р = (аР ~ 5~) Р, и снова используем теорему для т = 1: (а ~ р)~' = а~' + Pp'. Повторяя эту процедуру т 1 раз, получаем (а ~ р)~ =а~ Следовательно, теорему надо доказать только для т = 1. Вос- пользовавшись биномиальным разложением (а ~ ~р)л = 2 ( ) а~(~l)p ‒ ! i=0 
166 ГЛ. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА видим, что достаточно доказать, что в поле бР (q) выполняется равенство = 0, с = 1, ..., p ‒ 1. Но для каждого ~ ° ° Р~ u(p ‒ >)1 ~! (р ‒ с)! к 3 (р ‒ с)! является целым числом, а р ‒ лростое. Следовательно, знамена- Р'1 тель делит (р ‒ I) I, а число,. ~ кратно р. Таким образом, P = О (mod р), и поскольку арифметпкой целых чисел в лоле GF (q) является арифметика ло модулю р, то в GF (q) биномиаль- P ный коэффициент, = О. Наконец, если р = 2, то (+5)' = = P', а если р нечетно, то (+ ~)р=~~~. Это завершает доказа- тельство теоремы. Q Теорема 4.6.11. Пуапь р ‒ простое, а т положательное целое число. Тогда наименьшее поле разложения многочлена g (х) = = х~ х, рассматриваемого над полем GF (p), содержит р элементов. Доказательство. Каждый многочлен над GF (р) имеет наимень- шее лоле разложения. Пусть GF (Q) ‒ наименьшее лоле разложе- ния многочлена < (х) =- xp ‒ х. Тогда в лоле GF (Q) многочлен g (х) имеет р корней (возможно, кратных). Мы покажем, что все р"' корней различны и образуют поле. Из этого будет следовать, что GF (Q) содержит р элементов. Для того чтобь| доказать, что множество корней образует поле, достаточно локазать, что оно замкнуто относительно оле- раций сложения и умножения и содержит обратные для всех ненулевых элементов. Пусть а и P ‒ корни многочлена g (х). Согласно теореме 4.6.10, (а~р)~ =аР ~bp =а~р, так что и + P ‒ также корень многочлена, и, следовательно, множество замкнуто относительно операции сложения. Далее, (ар)~ = u> PP = ар, и, таким образом, иР тоже является корнем, и множество корней замкнуто относительно олерации умножения. Далее, ‒ а является аддитивным обратным элементу а, так что каждый элемент имеет аддитивный обратный. Аналогично легко лроверить, что если я‒ корень многочлена, то а ' ‒ также его корень. 
3,в. сФРукт»А кон~чного поля 1 Наконец, проверим, что все р корней многочлена хр ‒ g различны. Это вытекает из вида формальной производной: d [х~ ‒ x]/dx= ((р ))х~ ' ‒ 1= ‒ 1, так как ((р)) =- О в поле QF (q). Следовательно, многочлен х~ --х не имеет кратных корней. 0 Телерь мы лолучили обращение теоремы 4.6.9. Следствие 4.6.12. Для каждого простого р и положительного целого числа пг гущегтвует поле Галуа с р элементами. Покажем, наконец, что если д является не простым числом, а степенью простого числа, то GF (q ) можно построить как рас- ширение поля GF (q). Для этого достаточно доказать существова- ние над GF (q) простых многочленов степени т. Теорема 4.6.13. Для каждого целого положительного т над каждым конечным полем GF (q) существует хотя бы один простой многочлен степени т. Доказательство. Так как q ‒ степень простого числа, то q'" также является стеленью лростого числа. Согласно следствию 4.6.12, существует поле с д элементами. Это поле содержит при- митивный элемент я, и, ло теореме 4.6.8, минимальный многочлен этого элемента а иад GF (q) является простым многочленом сте- пени т. О Следствие 4.6.14. Для каждого целого положительного т над каждым конечны.и полем GF (q) су.иествует хотя бы один прилпс- тивный многочлен степени и. Доказательство. Пусть сс ‒ примитивный элемент поля GF (q ), и пусть f (х) ‒ минимальный многочлен элемента и над GF (q). Тогда в поле многочленов по модулю f (х) примитив- ный элемент а =- х является корнем многочлена f (х), так что мно- гочлен л лредставляет собой лримитивный элемент поля. р В заключение главы рассмотрим вопрос о существовании квад- ратного корня в поле Галуа. Теорема 4.6.15. Каждый элемент поля GF (2"') имеет в этом поле квадратный корень. Для нечетных простых р половина нену- левых элементов поля GF (р"') имеет квадратный корень в GF (р). Половина ненулевых элементов поля GF (p ) имеет квадратный корень в расширении QF (p' ), а не в QF (p ). Доказательство. Так как нулевой элемент имеет квадратный корень в любом лоле, то рассматривать надо только ненулевые элементы поля. Сначала рассмотрим поле бр (2 ) характеристпки 2 с лримитивным элементом а. Тогда лорядок элемента а является 
f f 0 1л. 4. АРиФметикА пОлей l АЛУА нечетным числом. Каждый элемент поля р может быть записан в виде n' для некоторого i, и поэтому ~~( = а'", если > четко, и Д = а<'+">>', если > нечетко. Влюбом случаеД является эле- ментом поля GF (2 ). Рассмотрим теперь поле GF (q), характеристика которого равна простому нечетному числу р, а примитивным элементом является а = у~+', где у ‒ примитивный элемент расширения GF (q'} (порядка q' 1 = (q + 1} (q ‒ 1)) и и + 1 четно, так как q равно степени нечетного простого числа. Любой элемент р может быть записан в виде а' или в виде 7<~+'> ' для некоторого ~. Тогда если i четко, то ~P = а'>' н принадлежит полю GF (q), а если i нечетно, то +f3 = »«+» '>' и принадлежит полю GF (д'), но неполюбР (q), так как > (q + 1)/2 в этом случае не кратно q+1. Cl ЗАДАЧИ 4.1. Пусть над GF (2) р~ (х) = хз+ 1 и р~ (х) = х4+ хз+ х+ 1. а. Найти НОД [р~ (х), р, (х) J. б. Найти многочлены А (х) и В (х), удовлетворяющие равенству ЙОД [р1 (х), р, (х) J =- А (х) р~ (х) + В (х) р, (х). 4.2.а. Сколько различных приведенных многочленов второй степени вида х~+ ах+ b, b =~ О, имеется над полем GF (16)? б. Сколько различных многочленов вида (х ‒ a) (х ‒ P), и, P =~ О, имеется над полем GF (16)? в.,Яоказывает ли это су1цсствование иеприводпмых многочлепов над полем GF (16)? Сколько простых многочленов степени два имеется над полем GF (16)? 4.3. Я~оказать теорему 4.1.2, связывая обе части равенств с алгоритмом деления. Этим же способом доказать теорему 4.3.4. 4.4.а. Используя алгоритм Евклида, найти НОД (1573, 308). б. Найти целые числа А и В, удовлетворяющие равенству НОЯ (1573,308) =- 1573А + 3088. 4.5. Доказать, что в кольце 7~(15) целых чисел по модулю 15 многочлеи р (х) =-- х"- ‒ 1 имеет более двух корней. Этот же миогочлен над полем имеет два корня. В каком месте не проходит доказательство теоремы в случае кольца? 4.6. Сколько различных приведенных миогочленов над GF (2) делят ыно- гочлен х~ ‒ 1? 4.7. Построить поле GF (5), выписав для него таблицы сложения и умно- жения. 4.8. Построить таблицы сложения и умножения для полей GF (8) и GF (9). 4.9.а. Доказать, что многочлен р (х) =- хз+ х~+ 2 непрпводим над по- лем GF (3). б. Каковы возможные (мультиплпкативпые) порядки элементов поля GF (27)? в. Чему равен порядок элемента х в попе GF (27), построенном по мо- дулю этого многочлспа р (х)? г. Предполагая, что поле GF (27) построено по модулю данного много- члена р (х), найти (2х+ 1) (х'+ 2). 4.10. Вычислить 31ОО (mod 5). 
ЗАМЕЧАНИЯ ! 1 ! 4.11. Доказать, что кольца отношений Zl(q) и GF (д) [х]/(р (х)) являются кольцами. 4.12. Многочлеп Р (х) = х4+ хз+ х~+ 1 неприводим над пслем Gp (2) (ледовательно, кольцо многочленов по модулю р (х) является полем GF (16). а. Доказать, что в этой конструкции элемент IIQJIH, соответствующий многочлену х, н е является п р имнти вным. б. Показать, что многочлену х+ 1 соответствует примитивный эле- мент этого поля. в. Найти минимальный многочлсн элемеита х+ 1. 4.13.а. Построить таблицы сложения и умножения поля GF (2~), исполь- зуя иепрпводимый миогочлен хз+ х""+ 1 иад GF (2). б. Повторить задачу и. а для многочлепа х" + х+ 1 и доказать, что этп два поля изоморфпы. 11начс говоря. доказать, что второе поле можно получить из исрвого путем псреимснования его элементов. 4.14. Таблицы сложения и умножения для поля 6Р ("4) можно построить по мсньшсй мерс двумя слсдующими способами: (i) используя пеприводимый многочлен степени 4 иад GF (2); (ii) используя иеириводимый многочлен степени 2 над GF (4). Построить эти таблицы, используя второй способ. 4.15..Чногочлеи р (х) = х о -~ х" 1- 1 ирпмигивсп пад полем GF (2) п может быть использован для посгроеиня поля GF (1 048 576), в «отором элемспти, соот- ветствуюший миогочлепу х, будет примитивиым. а. Каковы подполя этого lloJIH? б. Сколько из этих иодполей ие имеют иикаких собственных подполей, отличных от GF (2)? в. Вычислить в этом поле выражспие аЬ' = 1. гдс а =- x'~+ х7 + 1 xiç+ x5 + xã 4.16. Доказать, что для формальной производной многочлсна выполняется равенство [r (x) s (х) ]' = r' (х) s (х) + r (х) s' (х) и что а' (х) делит r (х) тогда и только тогда, когда а (х) делит r' (х). 4.17. Доказать, что в любом поле характеристики 2 любой элемент р удовлетворяет условию ‒ р = р. ЗАМЕЧАНИЯ Материал данной главы обычен для математичсской литературы. Свойства полей Галуа описываются во миогих киигах по абстрактной алгсбре, например в кни- гах Биркгофа и Маклейна [1953], а также Ван дер Вардена [1950, 1953]. Однако стандартное изложение является формальным, уделяет основное внимание аб- страктным свойствам и содержит мало примеров и приложений. В книге Бер- лекэмпа [1968) подробно рассматриваются те свойства полей Галуа, которые используются в теории кодирования. 
ГЛАВА 5 ЦИКЛИЧЕСКИЕ КОДЫ Циклические коды являются подклассом в классе линейных кодов, удовлетворяющим дололнительному сильному структурному тре- бованию. В силу этой структуры поиск хороших кодов, контроли- рующих ошибки, в классе циклических кодов оказался наиболее успешным. При этом в качестве математического алларата, облег- чающего лоиск хороших кодов, была ислользована теория лолей Галуа. Вне класса циклических кодов теория лолей Галуа ломо- гает мало; большинство завершенных лостроений, использующих идеи этой теории, относится к циклическим кодам. Важность циклических кодов обусловлена также тем, что зало- женные в основу их определения идеи теории лолей Галуа лри- водят к процедурам кодирования и декодирования, эффективным как с алгоритмической, так и с вычислительной точки зрения. В лротивололожность необходимым для лроизвольного линейного кода табличным методам декодирования алгоритмические методы декоди рования находят важные лрактические лриложения. 5.!. КОД С ТОЧКИ ЗРЕНИЯ РАСШИРЕНИЯ ПОЛЯ Циклические коды над GF (д) представляют собой класс линейных кодов, долускающих слециальное олисание, которое, как будет показано, оказывается достаточно мощным. Хотя эти коды яв- ляются кодами над GF (q), они часто яснее просматриваются из расширения GF (q~). Подобно тому как теория функций комплекс- ного леременного ислользуется для более детального исследова- ния функций вещественного переменного, функции над GF (q) можно изучать над GF (q~). Поэтому не следует рассматривать введение расширения лоля как нечто искусственное; вместо этого надо набраться терления, и вы будете вознаграждены за него. Мы видели, что линейный код над GF (q) может быть описан посредством матрицы с элементами нз GF (q), называемой прове- 
5.1. КОД С ТОЧКИ ЗРЕНИЯ РАСШИРЕНИЯ ПОЛЯ f f 3 рочной матрицей. Вектор с над ОР (д) является кодовым словом тогда и только тогда, когда сН' = О. Налример, выберем следую- щую проверочную матрицу (7, 4)-кода Хэмминга: 100101 1 010111 0 001011 1 Переходя в расширение поля, эту матрицу можно записать более комлактно. Столбцы матрицы Н можно отождествить с элементами поля GF (8). В многочленах, представляю;цих элементы поля, используем элементы первой строки матрицы в качестве коэффи- циентов при z, второй ‒ в качестве коэффициентов при z~, а третьей ‒ в качестве коэффициентов при Р. Тогда, используя для построения поля GF (8) многочлен p (z) -== Р +- z + ! и выбирая z в качестве представителя лрим~ пивного элемента а, перепишем матрицу Н в виде Н [ цО (-~~ с~2 (~3 ~1 +5 (-~6 ) Над расширением поля GF (8) проверочная матрица оказалась (1'.; 7)-матрицей. Используя эту матрицу, кодовое слово можно определить как вектор над GF (2), такой, что в расширении поля GF (8) он дает нулевое произведение с Н'. сН'= О, или с;а' = О. i=0 Теперь мы подошли к идее представления кодовых слов в виде многочленов: кодовое слово с представляется многочленом п I с(х} = g c;»', i=0 и олерация умножения кодового слова на проверочную матрицу превращается в операцию вычисления многочлена с (х) в точке х = u. Условие того, что с (х) представляет кодовое слово, пре- вращается в равенство с(сс) ‒ 0. Иначе говоря, двоичный много- член с (х) является кодовым словом тогда и только тогда, когда и является корнем многочлена с (»), Представ.пенне миогочленами (7,4}-кода Хэмминга образует множество всех многочленов над GF (2) степени не выше 6, таких, что а из GF (8) является корнем каждого из них. Существует обширный класс линейных кодов, к которому лри- меним тот же метод, который был использован для лредставления кода Хэмминга в виде множества многочленов. Предлоложим, 
$ f 4 Гл. 5. циКличесКие КОды что проверочная матрица линейного кода содержит и столбцов и что число и ‒ И строк этой матрицы делится на т. Каждая грулпа из т строк такой матрицы может быть лредставлена в виде одной строки, содержащей элементы из ОР (q~). Таким образом, первые т строк становятся одной строкой (Pf$ ..., ~,„), а матрица H cso- дится к матрице с г =- (n ‒ k)lm строками. Вместо l(n ‒ k) .; m]-матрицы над GF (q) мы получили (rAn)-матрицу над GF (qm). Мы, конечно, ничего не изменили лри таком лредставлении, а только сделали его более компактным. В данной главе будет исследоваться частный случай, когда проверочная матрица может быть записана в виде n ‒ ! "~1 0 1 и ‒ 2 ~~1 е ° ° ~1 0 1 и ‒ 2 ~2 ~2 ° ° ~2 Н = 0 1 и ‒ 2 n ‒ 1 gf ° ° ° gf' "~~) где п ==- q"' ‒ 1 и у; Q GF (д'") для всех у =- 1, ..., г. Заменяя каждый элемент поля GF (q'") коэффициентами пред- ставляющего его многочлена над GF (q), эту матрицу можно запи- сать в виде проверочной матрицы над~дОР (q) с п = q'" ‒ 1 столб- цами и rm строками. Мы, однако, предпочитаем работать в боль- шем поле. Каждое кодовое слово с является вектором над GF (q), таким, что в расширении GF (q"') выполняется матричное равенство СНт =0, и ‒ 1 f сд) =0, L=0 / 1 у ° ° э 1 е Это соотношение в точности совладает с утверждением, что все элементы у„ ..., у, являются корнями кодового многочлена с (х). Рассматриваемый код определяется как множество многочленов с (х) = f,"oñ,õ' степени не выше п ‒ 1 и таких, что для всех / = 1, ..., г выполняется равенство с (у~) = 0. которое для выбранного выше частного вида матрицы Н можно записать в виде 
6 1 ° КОД С ТОЧКИ ЗРЕЙИЯ РАСШИРЕНИЯ ПОЛЯ ) 18 Таким образом мы перешли от матричного описания линейных кодов к полиномиальному олисанию одного частного подкласса линейных кодов. Мы ограничиваемся рассмотрением этого под- класса потому, что полиномиальная формулировка облегчает поиск хороших кодов и разработку кодеров и декодеров. По при- чинам, которые выясняются в следующем параграфе, эти коды назь|ваются циклическими кодами. Налример, выберем некоторый лримитивный элемент а лоля GF (15) и примем длину кода равной 15. Для построения провероч- ной матрицы кода над GF (2) выберем у, = и, у, =- а'. .,3,.4,„5,„6 „7 8, 9, 10 11 12 13 14 ,.12 11 18 21 24 27 30 33 36 39 42 Другой выбор элементов у, и у, приводит к другой проверочной матрице, иногда хорошей, а иногда ллохой. Мы надеемся, что сделанный выбор приведет к хорошей проверочной матрице, но пока что еще рано объяснять лричины этого. При желании можно эту проверочную матрицу заменить лрове- рочной матрицей над GF (2), используя приведенное в $ 4.5 пред- ставление поля GF (15). Для этого надо каждую степень эле- мента а заменить 4-битовым столбцом, лолагая верхний элемент столбца равным коэффициенту при zo в полиномиальном пред- ставлении этого элемента лоля, второй элемент столбца равным коэффициенту при z' и т. д. В результате получится матрица 1000100 l 10101 1 1 01001 ) 0) 01 ) 1100 001001 ) 01011110 000100) 10101111 Н ‒.- 10001 10001 10001 0001 10001 10001 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 01 11 101 11 10111 1 Хотя этого сразу не видно, строки данной лроверочной матрицы линейно независимы, и, следовательно, она олределяет двоичный (15,7)-код. Минимальное расстояние этого кода равно 5 (хотя это тоже не очевидно). Этот код можно также представить в виде множества многочленов над GF (2) степени не выше 14, таких. что в расширении GF (1б) каждый многочлен удовлетворяет равен- ствам с (а) = О и с (aP) = 0. Иначе говоря, кодовые слова являются многочленами с корнямц в а и аз. 
ГЛ. d. ЦиКЛИЧВСКиЕ КОДЫ 'I Можно показать, что всегда проще иметь дело с матриЫЙ 8 расширении, и поэтому мы в большинстве случаев будем работать в большом поле. Конечно, ограничиваясь проверочными матри- цами такого частного вида, мы исключаем из дальнейшего рассмо- трения многие коды. 5.2. ПОЛИНОМИАЛЬНОЕ ОПИСАНИЕ ЦИКЛИЧЕСКИХ КОДОВ Начнем изложение заново, а затем вернемся к материалу преды- дущего параграфа. Линейный код Ж называется циклическим, если из того, что слово с ‒ - (c„, с,, с„,} принадлежит Ж, сле- дует, что слово с':= (с„,, c„, ..., c„.,} также принадлежит Ю. Кодовое слово с' получается из кодового слова с циклическим сдвигом всех компонент на одну позицию вправо. Примером циклического кода является приведенный в табл. 1.1 код Хэм- минга. Каждый линейный код над GF (q) длины и представляет собой подпространство пространства GF" (q), а циклический код является частным случаем подпространства, так как обладает дополнительным свойством цикличности. Каждый вектор из GF" (q) можно представить многочлеиом от х степени не выше ~г ‒ 1. 1~омлоненты вектора отождествляются с коэффициентами многочлена. Множество многочленов обладает структурой векторного пространства, идентичной структуре про- странства 0F" (q). Это же множество многочленов обладает струк- турой определенного в ~ 4.2 кольца GF (q) [л.] (х" ‒ 1}. Как в кольце, в этом множестве опредслено умножение р~ (х) р2(л) ==- 1~,„, [р1 (х) р>(х)[. Заметим, что в это равенство входят произведения двух видов. Произведение в левой части является произведением в кольце GF (q) [х]!(х" ‒ 1), определенным через произведения в кольце GF (q) [х] в правой части. Циклический сдвиг может быть записан через умножение в этом кольце: х р(х) = R [хр(х)]. Итак, если кодовые слова некоторого кода задаются в виде многочленов, то код является лодмножесгвом кольца GF (q) [х]/(х" ‒ 1). Такой код является циклическим, если вместе с каждым кодовым словом г (Y) он содержит код:вий миогочлеи х с (х). 
3Л. ПОЛИНОМИАЛЬНОЕ ОПИСАНИЕ Теорема 5.2.1. Подмножество У кольца GF (q) [x]l(x" ‒ 1) об- разует циклический код тогда и только тогда, когда он обладает следующими двумя свойствами '): 1} Ю образует подгруппу кольца GF (q) [x]l(x" ‒ 1) по сло. жению; 2) если с (х} ~= Ю и а (х) 1= GF (q) [х]l(х" 1), то R,„, [а (х) с (х)] Q Ж. Доказательство. Предположим, что данное подмножество об- ладает этими двумя свойствами. Тогда оно замкнуто относительно сложения и умножения на скаляр и, следовательно, является лодлространством. Оно замкнуто относительно умножения на любой элемент кольца, в частности на элемент х, и, следовательно, образует циклический код. Теперь лредлоложим, что рассматриваемое множество является циклическим кодом и лоэтому замкнуто относительно сложения и умножения на элемент л. Но тогда оно замкнуто относительно умножения на стелени элемента х и на линейные комбинации этих степеней, т. е. относительно умножения на лроизвольный многочлен. Следовательно, оно удовлетворяет обоим сформули- рованным условиям, и теорема доказана. О Выберем теперь в F ненулевой кодовый многочлен наимень- шей степени и обозначим его степень через и ‒ k (она должна быть меньше и). Умножим этот многочлен на элемент поля, чтобы сде- лать его приведенным. Поскольку код Ж линеек, результирую- щий многочлен тоже принадлежит Ж. В коде не содержится ника- кого другого приведенного многочлена этой степени, так как в лротивном случае разность этих двух лриведенных многочленов давала бы кодовый многочлен степени меньше и Й,а это противоре- чит выбору исходного многочлена. Единственнь|й лрпведенный ненулевой многочлен наименьшей степени в коде Ж называется порождавшим иногочленом кода У и обозначается через g (х). 'Теорема 5.2.2. Циклический код состоит из всех произведений порождаю~цего многочлена g (х} на многочлены степени не выше А 1. Доказательство. Согласно теореме 5.2.1, все такие много- члены принадлежат коду, так как g (х) принадлежит коду. Далее, ') Это подмножество называется идеалом кольца. В общем случае под- множество 1 кольца R называется идеалом в R, если: 1) 1 является под- группой аддитивной группы кольца R и 2) из r Q R и а ~ 1 следует, что ar ~1. 
31Q t'~. 6. и,иМличесКие ~ЬДЬ1 если некоторый многочлен с (х) принадлежит коду, то, согласно алгоритму деления, с (х) = Q (х) g (х) ~- s (х), где deg s (х) ( deg g (õ), и многочлен s (x) = с (x) Q (x) g (х) является кодовым, так как оба многочлена в правой части прина- длежат коду, а код линеен. Но степень многочлена s (х) меньше и ‒ И, наименьшей степени ненулевого многочлена в коде. Следова- тельно, s (х) = О и с (х) = Q(x) g(х). 0 Теорема 5.2.3. Циклический код длины и с порождающим многочленом g (х) существует тогда и только тогда, когда g (х) делит х" ‒ 1. Доказательство. Согласно алгоритму деления, х" ‒ 1 = Q (х) g (х) -[- s (х), где степень многочлена s (х) меньше степени многочлена g (х). Тогда 0 = R,„, [х" ‒ 1] = R,, [Q (x)g (x)] + R,„„, [s(x)], и, следовательно, 0 = R, [Q (x) g (x)] + s (x). Из теоремы 5.2.1 вытекает, что первый многочлен в правой части является кодовым многочленом. Тогда s (х) также является кодо- вым многочленом степени ниже, чем степень g (х). Единственный такой кодовый многочлен равен s (х) =- О. Таким образом, q (х) делит х" 1. Далее, каждый многочлен, делящий х"- ‒ 1, может быть выбран в качестве порождающего многочлена циклического кода. Это завершает доказательство. Q Согласно теореме 5.2.3, для порождающего многочлена g (х) любого циклического кода выполняется равенство х" 1 =g(x)h(x) при некотором многочлене Й (х). Многочлен h (х) называется проверочным многочленом. Каждое кодовое слово с (х) удовлетво- ряет равенству R, [h(x) с(х)] =О, так как h (х) с (х) = h (х) g (х) а (х) = (х" 1) а (х) для некоторого многочлена а (х). 
б.2. ПОЛКНОМКАЛЬНОЕ ОПКСАНКЕ ) ) g Пусть с (х) обозначает переданное кодовое слово. Это значит, что символами переданного слова были коэффициенты много- члена с (х). Пусть многочлен v (х) обозначает принятое слово, и пусть е (х) = v (х) с (х). Многочлен е (х) называется много- членом о<иибок. Ненулевые коэффициенты этого многочлена стоят в тех позициях, где в канале произошли ошибки. Представим информационную последовательность в виде мно- гочлена i (х) степени k 1 '). Множество информационных мно- гочлеиов можно отобразить в кодовые многочлены многими удоб- ными способами. Одним прость]м правилом кодирования является с (х} = i (х) g (х}. Такой кодер является несистематическим, так как по многочле- ну с (х) нельзя сразу установить < (х}. Систематическое правило кодирования имеет несколько более сложный вид. Идея состоит в записи информации в виде старших коэффициентов кодового многочлена и подборе младших коэффициентов так, чтобы полу- чить допустимое кодовое слово. Иначе говоря, кодовое слово записывается в виде с (х) = х"-"< (х) + t (х), где / (х) выбирается так, чтобы выполнялось условие Rs <,< [с (х} 1 = О. Это требование означает, что Rs <,> [х" ‒ ~t(x)] +Rs <,> [t(Ä)] = О и стег<ень многочлена t (х) меньше n ‒ k, степени многочлена g (х). Следовательно, t(x) = ‒ Rs <,> [х" ‒ "i (x)], и правило кодирования является взаимно-однозначным, так как k старших коэффициентов многочлена определены однозначно. И систематическое, и несистематическое правила кодирования дают одно и то же множество кодовых слов, но соответствия между i (х) и с (х) различны. Определим синдромный многочлен s (х), который будет исполь- зован для декодирования, как остаток от деления многочлена v (х) Hà g (х): е (х) = R«<,> [о (х)] = R«<,,1 [с (х) + е (х)] = = R«<,> [е(х)]. ') На самом деле надо было бы говорить, что степень с (х) не вьсше й ‒ 1, но в случаях, подобных данному, когда i (õ) является одним из многочленов множества, удобнее указывать максимальную степень в множестве, xoTH QTQ и менее точно. 
1 20 Гл. б. цкклкческке кОды только от е (х) и не зависит ни от Синдромный многочлен зависит с (х), ни от ~ (х). Итак, мы ввели следующие многочлены: Теорема 5.2.4. Пуопь ~Р - ‒ минимальное расстояние цикли- ческого кода F. Каждому многочлену ошибок веса меньше, чем d*/2, соответствует единственный синдромный многочлен. Доказательство. Предположим, что веса е, (х) и е, (х) меньше, чем d*/2, и что им соответствует один и тот же синдромный мно- гочлен. Тогда е1 (х) = Q, (х) g (х) + s (х), е, (х) = Q> (х) g (х) g (х) + s (х) е, (х) ‒ е, (х) = [Q, (х) ‒ Q, (х) 1 g (x). По предположению вес каждого из многочленов е, (х) и е, (х) меньше, чем dÐ/2, так что вес их разности меньше д*. В правой части последнего равенства стоит кодовое слово. Если это слово отлично от нулевого, то вес его не меньше d*, минимального веса в коде. Следовательно, в правой части стоит нуль, и многочлены е, (х) и е, (х) равны. Это доказывает теорему. 0 Таким образом, задача исправления ошибок сводится к одно- значному вычислению многочлена е (х) с наименьшим числом ненулевых коэффициентов, удовлетворяющего условию s (х) = Rs <„i [е (х) 1. При не очень большом числе входов эта задача может быть решена путем построения таблиц. Для каждого корректируемого много- члена е (х} вычисляется и табулируется многочлен s (х} так, как это показано в таблице, приведенной на рис. 5.1. Эта таблица называется таблицей значений синдромов. Вычисляя s (х) по принятому v (х), декодер находит s (х} в таблице значений синдро- мов, а затем соответствующий многочлен е (х}. Если таблица зна- чений синдромов не очень велика, то практически ее можно реали- зовать либо с помощью памяти, либо с помощью цепей комбина- торной логики. порождающий многочлен проверочный многочлен информационный многочлен кодовый многочлен многочлен ошибок принятый многочлен синдромный многочлен а (х), h (х), i (х), с (х), е (х}, v (х), s (х), deg g (х) = deg h (х) =- deg i (х) ‒‒ deg с (х) == deg е (х} =- deg v (х) = deg s (х) = и ‒ k, k, k ‒ 1, и ‒ 1, и ‒ 1, и=1, и ‒ k ‒ 1. 
S.S. МИНИМАЛЬНЫЕ МНОГОЧЛЕНЫ) К СОПРЯЖЕННЯ 121 e(x) R„„,[l ] R„„,[1+ х] R„„,[1+ "] 2 1+w 1+х Рис. 5.1. Таблица значений синдромов. Временно будем считать эту простую схему декодирования удовлетворительной. В следующих главах будут разработаны более эффективные, чем запоминание заранее вычисленной таблицы, алгоритмы вычисления е (х) по многочлену s (х). 5.3. МИНИМАЛЬНЫЕ МНОГОЧЛ ЕН Ы И СОПРЯ)КЕНИЯ Мы видели, что циклический код длины п над полем ОР (д) суще- ствует для каждого многочлена g (х) над GF (д), делящего много- член х" - ‒ 1. Теперь мы хотим более подробно изучить порождаю- щие многочлены. Прежде всего мы хотим найти порождающие многочлены циклических кодов длины и. Наиболее естественный подход состоит в разложении многочлена х" ‒ 1 на простые множители: 1 = fi (~) f. (х) ." f. (х}, хп где s ‒ число простых множителей. Произведение произвольного подмножества этих множителей дает порождающий многочлен g (х). Если все простые множители многочлена х" ‒ 1 различны, то всего имеется 2' 2 различных нетривиальных циклических кодов длины и (исключаются тривиальные случаи g (х) = 1 и g (х) =- х" ‒ 1). Какие из них, если они вообще имеются, дают коды с большим минимальным расстоянием вопрос, на который сразу ответить нельзя. Предположим, что g (х) представляет собой порождающий мно- гочлен. Он делит многочлен х" 1, и, следовательно, g (х) == =-Ц/; (х), где произведение берется по некоторому подмножеству множества s простых многочленов. Порождаемый многочленом g (х) циклический код состоит из многочленов, которые делятся на каждый из этих f; (х). Многочлен g (х) можно найти, найдя все его простые делители. 
1~Я 1Л. 5. ЦККЛКЧЕСККЕ КОДЫ В данном параграфе мы хотим проследить взаимосвязь простых многочленов с их корнями, лежащими в расширении поля. 8 част- ности, мы хотим исследовать, как по заданному множеству кор- ней можно найти простые многочлены и, следовательно, порождаю- щие многочлены. В гл. 7 мы увидим, как надо выбирать корни, чтобы гарантировать хороший код. Мы начнем с одного предпочитаемого значения и, называемого примитивной длиной кода. Определение 5.3.1. Для кода над GF (q) длина и вида п = = q~ 1 называется примитивной. Циклический код примитив- ной длины над GF (q) называется примитивным циклическим кодом. Поле GF (q"') является расширением поля GF (q). Согласно теореме об однозначном разложении, разложение х~ -' ‒ 1 = f,(z) ... f,(х) над полем GF (q) однозначно. Так как g (х) делит многочлен х~ ‒ ' ‒ 1, то он должен быть равен произведению некоторых из этих множителей. С другой стороны, каждый ненулевой элемент поля GF (q") является корнем многочлена х~ ‒ ' ‒ 1. Следова- тельно, в поле расширения GF (q") многочлен х~ ‒ ' ‒ 1 можно представить в виде х~"' ‒ 1 ‒ 1 = П (х ‒ P>), J где ~~ ‒ все ненулевые элементы поля GF (q"'). Отсюда следует, что каждый из многочленов f, (х) может быть разложен в произве- дение некоторых из этих линейных множителей и что каждый элемент Pq является корнем точно одного из f,(х}. Этот много- члеи f, (х} является минимальным многочленом элемента. и мы также ') обозначим его через f~(x). Он представляет собой многочлен наименьшей степени с коэффициентами из основного поля GF (q), для которого элемент Р; из расширения поля является корнем. Теперь мы можем связать данное определение циклического кода с использованной в 3 5.1 его трактовкой. Теорема 5.3.2. Пусть элементы р„..., р, из поля GF (q'", являются корнями порождаю;цего многочлена g (х} примитивного кода. Многочлен с(х) над GF (q) является кодовым тогда и толь- ко тогда, когда с (P,) = с (P.,) = ') Мы извиняемся за неопределенность в использовании ff (х) при l ==- I, ..., s для обозначения различных минимальных многочленов и / (х) при j = 1, ..., д~ ‒ 1 для обозначения минимальных многочленов элементов ~у. Конкретный смысл всегда будет ясен из контекста. 
5.3. МИНИМАЛЬНЫЕ МНОГОЧЛЕНЫ И СОПРЯЖЕНИЯ f 23 где с (P;) вычисляется в поле GF (о). Доказательство. Если с (х} =- a (х} g (х), то имеем с (Pt) =‒ = = а (~;) g (~;} = О. Обратно, предположим, что с (I4) =- О, и запишем с(х) = Q(x) f~(x) +s(x), где степень s (х) меньше степени /~(х), à f; (x) ‒ минимальный многочлен элемента Р;. Но тогда из равенства О = с (P,} = Q (P;) ~~(~;} + в(~;) = s (P>) следует, что s (х) = ‒ О. Следовательно, с (х) должен делиться на f> (х) для всех j = 1, ..., r, а поэтому и íà HOK [f, (х), f,, (х), ..., f (х) ]:-- «а (х). П Чтобы проиллюстрировать эти идеи, выберем и == 15. Можно найти все циклические коды длины 15, разложив х" 1 на про- стые многочлены'- х" ‒ 1 = ‒ (х -(-1) (х'+х +1) (х'+х+1) (х'+ +-х' -1-1) (х' ~-х'+х'+х+1). Справедливость такого разложения можно проверить перемно- жением, а простоту множителей методом проб и ошибок. Всего имеется 2' = 32 подмножества множества этих простых множи- телей и, следовательно, 32 порождающих многочлена цикличе- ских кодов длины 15. Два из них (g (х} = х~' ‒ 1 с Й = О и g (х) = 1 с k = n) являются тривиальными, а 30 приводят к не- тривиальным циклическим кодам. В качестве примера рассмотрим один из них, положив g(x) =(х4+хз+1)(х4+хз+х'+x+1) = = х8+х4+х2+х+ Так как степень g (х) равна 8, то n ‒ Й = 8 и k = 7, а так как вес многочлена g (х) равен 5, то минимальное расстояние не пре- восходит 5. В гл. 7 мы увидим, что минимальное расстояние равно 5. Следовательно, рассматриваемый код является (15, 7, 5)-кодом и позволяет исправлять две ошибки. Проверочные соотношения могут быть записаны в виде с (а') = О, с (а~) = О, где а' и а~ некоторые корни многочлеиов к' + хэ + 1 и к4 + + к' + к' + х + 1 соответственно из расширения GF (16). В част- ности, с (а} = О и с (а'} = О, и, следовательно, это рассмотрен- ный в ~ 5.1 пример. (Многочлен g (к) имеет, конечно, и другие корни, но этих двух корней достаточно, чтобы определить g (к), и нет необходимости проверять остальные.} 
1я4 Гл. 5. циклические кОды Предположим теперь, что мы хотим построить порождающий многочлен g (х}, имеющий своими корнями элементы Обозначим через f, (х), ..., f, (х) минимальные многочлены этих элементов. Тогда й (х) ==- НОК [f~ (х), f (х), ..., f. (х)1, и таким образом задача сводится к отысканию минимального многочлена f (х) заданного элемента [1. Пусть степень минимального многочлена f (х) элемента равна и'. Тогда в GF (q"') он должен иметь т' корней. Эти допол- нительные корни можно описать следую.цими двумя теоремами. Теорема 5.3.3. Ilgcmo характеристика поля GF (q) равна р. Тогда для любого многочлена s (х) над GF (q) и произвольного це- ЛОс, О nS 8ЫП, ОЛКЯСГПСЯ ~) И8ВВС1ПВО I и ( g> '@CO C i=0 i=0 Доказательство. Начнем с и -= 1 и будем рассуждать так же, как при доказательстве теоремы 4.6.10. Чтобы сократить число шагов, определим многочлен s' (х) равенством s (х) =. s' (х) х - в,; тогда [s (х)]~ = g (;) [s (х)х]~ sp Но ° ° Р pf «p(p ‒ >) i if (p ‒ i)t if (р ‒ i)f ' и р является простым числом, которое не входит в знаменатель, за исключением случаев ~ = О и ~ = р, так что, представляет собой целое число, кратное р, т. е. равное нулю по модулю р. Следовательно, [s (х)]~ = [s' (х)]р хр + si. Применим теперь те же рассуждения к многочлену s' (х} и про- должим вычисления. Это даст доказательство утверждения для m=1: I [в(х)]~ = ~~ s;x'~. i=0 Далее, I р 1 
5.3. MH HHMAJlbHbl E Л1НОГОЧЛЕНЫ И СОПРЯ)КЕНИЯ 1 26 Эти вычисления можно повторить произвольное число раз, так что теорема верна при замене р любой его степенью. Q Теорема 5.3.4. Предположгг.ч, гггго f (х) над GF (и) .чвляется минимальным ггногочленол элеменпга Р ггэ гг!' (д"'). Тогда f (X) является нгакке минимпльным ггногпчленолг элемента Доказательство. Так как о равно степени характеристики р поля, то теорема 5.3.3 дает deg f (x) (f (х)]' = ~, 'Д (х')'. Но коэффициенты f; принадлежат полю GF' (q), a все элементы этого поля удовлетворяют условию у~ == у. Следовательно, 4Е)т f (Л) [/(х)]ч = g f (хг}г =. /(х'г), и так как f (P) = О, то О ‒ - (f (р) г'г =: 1'(I)~), и, следовательно, р~ является корнем многочлена f (х). Поскольку f (х) простой многочлен, он является минимальным многочлепом элемента и теорема доказана. П Определение 5.3.5. Два элеиеггта из поля GF (о), являю- щиеся корнями одного и того же минимального многочлена над GF (о), называются сопряженными (относительно поля GF (д)). В общем случае у элемента может быть больше, чем один, со- пряженный элемент на самом деле и. Необходимо также от- метить, что отношение сопряженности зависит от основного поля. Два элемента из GF (16) могут быть сопряжены относительно поля GF (2) и не сопряжены относительно поля GF (4). Используя теорему 5.3.4, легко выписать все сопряженные с р элементы. Если многочлен f (х) является минимальным для элемента Р, то он минимален и для элемента р~, и для р~ и т. д. Следовательно, сопр яжены все элементы множества Ф, Y, ~', ..., ~"' 'I. qt где r ‒ наименьшее целое число, такое, что P =- P. Заметим, дШ что так как P~ = P, то r в. т. Выписанное выше множество называется множес~п~ом сопряженных элементов. Все сопряжен- ные элементы являются корнями многочлена f (х}, и следующая теорема показывает, что других корней нет. Теорема 5.3.6. Минимальный многочлен элемента р равен f (х) = (х ‒ р}(х ‒ р')... (х ‒ р' ). Доказательство. Согласно теореме 5.3.4, все эти элементы действительно должны быть корнями минимального многочлена 
1 QQ ГЛ. S. ЦИКЛИЧЕСКИЕ КОДЬ1 элемента р, так что степень минимального многочлена не может быть меньше. Поэтому нам надо только показать, что все коэф- фициенты f (х} принадлежат полю GF (д). Воспользуемся тем фактом, что все корни многочлена хв х образуют подполе поля 6Р (д'"}. Прежде всего вычислим [/ (х} ]в: [f (х)]в = (х ‒ р)в (х ‒ рв)в... (х ‒ P )в = = (хв ‒ рв)(хв ‒ р~')... (хв ‒ {]), где второе равенство вытекает из теоремы 5.3.3 и того факта, ~Г что рв = I). Таким образом, V(x)l' =1( ') =. Z ~ "" в то время как теорема 5.3.3 утверждает, что If(х)]'= [Z f õ']' =- Z Дх'". Следовательно, f'; --- f; для каждого ~, и f; принадлежит подпалю GF (д), что и требовалось доказать. Г] Например, выберем а равным примитивному элементу поля GF (256). Тогда м ножество { св свв ~4 ~8 ~16 <хвв <х64 св1яв ] 1 1 1 1 в 1 1 представляет собой множество сопряженных элементов. Оно за- канчивается элементом сР~, так как u = 1, и, следовательно, а'" = u ‒ элементу, уже содержащемуся в множестве. Мини- мальный многочлен элемента а равен многочлену f (x) = (х а) (х ав) (х а') ... (х авв) (х а'вв), все коэффициенты которого (после раскрытия скобок) будут элементами поля GF (2). Аналогично множеством сопряженных элементов, содержащих элемент а', будет < ~7 С~14 С~28 ®56 ~112 (~224 ®1фЗ С~131 { в 1 э 1 1 в э ~ в а минимальный многочлен элемента а' равен f (х) = (x ат) (x а1в) (х авв) (x а1вв) (x ‒ а'в') все коэффициенты которого (после раскрытия скобок) будут эле- ментами поля GF (2). Теперь вместо GF (2) выберем в качестве основного поля GF (4), которое также является подполем поля GF (256); тогда множеством сопряженных элементов, содержащим о'.7, будет {(g> <хвв дввв и минимальный многочлен элемента а' над полем GF (4) равен f (х) = (х а') (х авв) (х ‒ ав1') (х а'вв), 
5.$. МИНИМАЛЬНИЕ МНОГОЧЛЕНЬ1 H СОИРЯ)КЕНИЯ 1 Я~ все коэффициенты которого (после раскрытия скобок) будут элементами поля GF (4}. Яля того чтобы указать эти элементы из поля GF (4}, надо, однако, выделить элементы подполя GF (4) среди элементов поля GF (256). В поле GF (256) подполе GF (4) состоит из элементов 10, 1, а", а1'оj, так как элементы а"' и u" являются единственными элементами поля GF (256) порядка 3. Вернемся теперь к циклическим кодам, которые не являются примитивными. Мы видели, что для примитивных циклических кодов существует тесная связь между порождающим многочленом g (х} и полем GF (а}, описываемая корнями многочлена g (х). Теперь мы хотим рассмотреть коды длины и, отличной от д"' 1. Следующая теорема устанавливает связь этих кодов с получен- ными ранее результатами. Теорема 5.3.7. Пусть 6Р (а} конечное поле. Если и и а взаимно просты, то многочлен к" 1 делит многочлен х' ‒ ' 1 при некотором и и многочлен х" 1 имеет и различных корней в рас~иирении GF (а"') поля GF (а). Доказательство. Необходимо доказать только, что и делит д"' 1 при некотором и, так как в этом случае можно восполь- зоваться общим разложением (хг — ]) (х ‒ ])(хг ‒ '+xã ‒ 2 Pxг ‒ 3 ] I x + ]) чтобы показать, что при д l = nb для некоторого b имеет место равенство xq -i ‒ 1 = ‒ (хл)ь ‒ 1 = (хп-- ])(хп" ‒ "+хл(ь ‒" I- I хп ' ]) Таким образом, х" ‒ 1 делит х~ ‒ ' 1 и, следовательно, имеет и различных корней в GF (д), так как х~ ‒ ' 1 имеет д 1 различных корней в этом поле. Чтобы доказать, что и делит qm 1 для некоторого и, вос- пользуемся алгоритмом деления и выпишем п + 1 следующих равенств: д =- Qn+s„ q"- = Q,n ~- s.„ Ч' = Язп + ~з ° 
1Щ ГЛ. 6. ЦИКЛИЧЕСКИЕ КОДЫ Все остатки расположены между О и и 1. Так как их всего п + 1, то по меньшей мере два из них равны между собой, ска- жем s; и s; при ~, меньшем j. Тогда или Так как д и и взаимно просты, то и должно делить д~ ‒ ' 1. Полагая и = j ‒ i, завершаем доказательство. О Используя эту теорему, любой циклический код в случае взаимно простых и и д можно описать в соответствующем рас- ширении поля. Порождающий многочлен g (х) циклического кода длины и делит многочлен х" ‒ 1, который делит х~ -' ‒ 1, так что g (х) делит также х~ ‒ ' ‒ 1. Мы всегда будем пользо- ваться наименьшим ni, для которого это выполняется. Пусть u ‒ примитивный элемент поля GF (g ), пусть д'" 1 = nb, и пусть I) = u". Тогда все корни многочлена х" 1 (а поэтому и многочлена g (х)) исчерпываются степенями элемента Р. Простые делители многочлена х" ‒ 1 имеют своими корнями только такие элементы. Подводя итоги, скажем, что если мы используем $ = ‒ u> вместо а и ограничиваем множество корней порождающего мно- гочлена только степенями $, то мы получаем циклический код длины п == (q"' ‒ ‒ 1)l!~. 5.4. МАТРИЧНОЕ ОПИСАНИЕ ЦИКЛИЧЕСКИХ КОДОВ Эту главу мы начали кратким обсуждением связи проверочной матрицы с корнями многочленов, лежащими в расширении поля. В следующих параграфах, в которых рассматривались цикли- ческие коды, проверочным матрицам уделялось мало внимания. А сейчас самое время заняться связью циклических кодов с их порождающими и проверочными матрицами. Имеется много способов формирования этих матриц. Прежде всего проверочную матрицу можно формировать в раси~иренин поля так, как это было сделано в g 5.1. Если нулями g (х) яв- ляются элементы у; Gl' (д"') при j 1, ..., r, то Д с;у';=О, i=O 
5.4. МАТРИЧНОЕ ОПИСАНИЕ 1 29 что в матричном виде можно переписать как 0 1 V! Ъ 0 1 ~г '~г Н= и ‒ ! 1'Г 0 ! ° ° ° A g1 go g1 go 0 go 0 0 0 gna ga д1 gn Ь gn й 1 gn h a gn й 1 gn й а gn й з 0 0 0 Й'и-й Проверочная матрица соответственно равна 0 0 0 Н= 0 0 0 ... 0 ho h1 ha 1 hh ~0h~ h> ... hq 0 О» где h (х) проверочный многочлен циклического кода. Яля про- верки равенства бНт= О 5 р. Блейхут Заменим теперь эту (r x n)-матрицу над GF (д) íà (rm x n)-Ма- трицу над GF (q), заменяя каждый элемент р вектором-столбцом коэффициентов многочлена, представляющего р над GF (q). Это дает проверочную матрицу над GF (g), но некоторые строки этой матрицы могут быть линейно зависимыми и, следовательно, яв- ляются излишними. Удалим наименьшее число строк, необходи- мое для построения матрицы с линейно независимыми строками. Это и риведет к и ровер очной матрице кода. Хотя описанная процедура проясняет связь между корнями порождающего многочлена и проверочной матрицей кода, она слишком сложна для использования. По порождающему много- члену можно построить необходимые матрицы, даже не переходя в расширение поля. Одним из способов сделать это является по- строение порождающей матрицы непосредственно по порождаю- щему многочлену. Так как кодовые слова записываются в виде с (x) = ~ (x) g (x), то в матричной форме имеем 
1 30 ~л. 5. циклические коды рассмотрим величины и,. -= f~ g,.;h;, i=Î X g (x) = x" 1 равные нулю при в силу равенства h (x) Х 0 <r < и. Но тогда l~п-2 tin 3 ° ° (iHT = =0, ~I n-Л -l ° ° ° <~1 х" ‒ ' = Щ(x)g(x)-'.,-s;(x), (=-.. 1, ..., k, где n ‒ A ‒ ! s; (х) = ~~ s;;xi. у=О s; (х) является кодовым Тогда многочлен х" ‒ ' словом, так как х"-' ‒ s;(х) = Q;(х) g(х). Используя коэффициенты многочлена в левой части равенства в качестве элементов порождающей матрицы, получаем я<„ ~ !>, q 1 0 я,„ ~ )>, д ! 0 1 ... 0 ... 0 0, 1с ‒ ~о,n i 80,1 ° ° ° ~(tt ‒ k ‒ !), ! 0 0 ° ° ° 1 В этой систематической порождающей матрице индексы коорди- нат информационных символов пробегают числа от и k до и 1. Чтобы выписать такую порождающую матрицу, пеоб- и, следовательно, так определенная матрица Н действительно является проверочной матрицей. Теперь видно, что дуальный код 8'- для циклического кода с порождающим многочленом g (x) также является циклическим, так как Н представляет со- бой его порождающую матрицу и имеет вид порождающей ма- трицы циклического кода. Порождающий многочлен дуального кода равен взаимному к h (x) многочлену Fi (x) = x'h (x '). Иногда при рассмотрении циклических кодов дуальным называют код, порожденный многочленом h (х), но если быть точным, то в этом случае можно говорить только о коде, эквивалентном дуальному коду. Можно также просто получить порождающую матрицу в си- стематическом виде. Воспользуемся алгоритмом деления и вы- пишем для каждой информационной позиции 1 = 1, ..., k мно- гочлен 
55. КОДЫ ХЭММИИГА КАК ЦИКЛИЧЕСКИЕ КОДЫ f 31 ходимо только вычислить все остатки s; (x) от деления x' íà g (х). Используя описанные в $ 3.2 методы, теперь можно выписать и проверочную матрицу кода. Она равна 1 0 ... 0 0 1 ... 0 50,1 Н= С 0 ... 1 я~„~ [~,I, S(ll ‒ l; ‒ ]), ] 5.5. КОДЫ ХЭММИНГА КАК ЦИКЛИЧЕСКИЕ КОДЫ Порождающий многочлен (7,4}-кода Хэмминга, использованного в начале главы, равен g (x) = x' + х + 1. Корнем этого много- члена является примитивный элемент и поля GF (8}, и, следо- вательно, все кодовые слова удовлетворяют равенству с (u) =- О. Аналогично, чтобы получить код Хэмминга с примитивной дли- ной п = 2" ‒ 1, выберем g (x) так, чтобы примитивный элемент и поля GF (2~} был его корнем, а именно положим g (x) равным минимальному многочлену р (x) элемента и, используемому для построения поля GF (2 ). Тогда так как c(x) = а (x) g (x), то с (u) = О для каждого кодового слова. Это эквивалентно ра- венству сН' == О, где Н [uî С~1 д~ v (x) = а (x) g (x) + е (x), Для больших алфавитов также существуют коды Хэмминга. В $ 3.4 мы видели, что для каждого т существует код Хэмминга над полем GF (q) с п = (q ‒ 1)l(q ‒ 1) и k =- (q~ ‒ 1)l(q ‒ 1)‒ т. В данном параграфе мы покажем, что многие из этих кодов (хотя и не все) являются циклическими, выписав их порождаю- щие многочлены. Пусть u ‒ примитивный элемент поля GF (q), и пусть р = = uq ‒ '. Тогда ф~"' ‒ '}'~ ‒ '> = 1, и, следовательно, р является корнем многочлена х~~"' ‒ '~ ~q ‒ '~ ‒ 1. Таким образом, мини- мальный иногочлен элемента р является делителем многочлена х~~'" ‒ '~ (~-'> ‒ 1 и может быть выбран в качестве порождаю- щего многочлена циклического кода длины п ==- (V'" ‒ - 1}l(д ‒ 1). Проверочная матрица равна Н =- [P' I)' ... P" ‒ ' }. Для д = 2 и р = u легко доказать, что этот код исправляет одну ошибку, указав простую процедуру исправления одной ошибки. Принятое слово записывается многочленом степени и ‒ 1 в виде 
1;Зя Гл. s. ци кл и чески е кОды где многочлен е (x) содержит не более одного ненулевого коэф- фициента, так что е (х) = О или е (x) = x'. Целое число i марки- рует позицию, в которой произошла ошибка. Для маркировки ошибочных позиций мы будем также использовать поле GF (2 ). Элемент поля а' соответствует компоненте с номером ~. Так как g (u) = О, то v (а) = а', и все степени а от О до 2 2 различны. Таким образом, по величине а' сразу определяется позиция ошибки, за исключением случая v (u) = О, соответствующего отсутствию ошибки. Следовательно, рассматриваемый код яв- ляется исправляющим одиночную ошибку кодом над GF (2) с n =- = 2"' 1 и й = и т; на самом деле это код Хэмминга над GF (2). Мы доказали для случая (/ = 2 формулируемую ниже теорему. Общий случай этого утверждения более сложен, так как для произвольного элемента т из GF ((/) все величины вида у~' должны быть различны. Докажем формально теорему для произвольного (/. Теорема 5.5.1. Минимальное расстояние кода с проверочноа матрицей Н = (р' р' ... р» ‒ '], где р = с(л ‒ ' и и = ((/"' ‒ 1)/(д‒ 1), равно ио меньшей мере 3 тогда и только тогда, когда и и д 1 взаимно просты, что возможно тогда и тольао тогда, когда т и д 1 маимно просты. Доказательство. Предположим, что два столбца матрицы Н линейно зависимы: р' = ф(, где элемент ) принадлежит 6Р ((/). Тогда элемент р'-/ принадлежит полю GF ((/) и, следовательно, является корнем уравнения х~ ‒ ' ‒ 1 = О. Но ненулевые элементы поля GF ((/) можно представить через примитивный элемент и поля GF ((/~) в виде первых (/ ‒ 1 степеней элемента с((» ‒ ()«q ‒ (>, так как все такие степени различны и ((u(q~ ‒ ()/(q — ())»)ч Тогда для некоторого й, меньшего д 1, имеем р( ‒ j (u(q~ ‒ ()/(q — (()» u»» Далее, так как р =- а» ‒ ', то ((/ ‒ 1) (i j) =" nk. Так как ~ j меньше, чем и, то это уравнение разрешимо отно- сительно ' ‒ 1тогда и только тогда, когда и и д ‒ 1 не являются взаимно простыми; таким образом, Н содержит два линейно за- висимых столбца тогда и только тогда, когда и и д ‒ 1 не явля- ются взаимно простыми. Покажем теперь, что и и д ‒ 1 взаимно просты тогда и только тогда, когда т и д ‒ 1 также взаимно просты. Но и =(q ‒ 1}/(q ‒ 1} =- д -(+д»+ +1 
5.5. кОды хэмми нГА кАк ци клич ес кие кОды 1;3;3 д"' ‒ ~' =(q 1)s;+1 для некоторого з;, поскольку qm ‒ > 1 делится на д ‒ 1. Следо- вательно, суммируя по j, получаем Но нам нужны сопряженные относительно поля GF (4) элементы, а они образуют множество 4 1G 64 Следовательно, искомый g (x) =- (x ‒ р) порождающий многочлен равен (х ‒ Р') (х ‒ р16) (х р'4) =-= .==- (х ‒ а') (x а") (x ‒ а4") (х ‒ а19'-'), Раскрыв скобки, мы получим многочлен, все коэффициенты кото- рого принадлежат полю GF (4). Таким образом, дальше нам уже не понадобится структура поля GF (256). Теперь поступим сле- дующим образом. Используя примитивный многочлен р (x) = в+ 4+ з+ 2+1 м (~в 4+ з+ 2+1 Н нократно повторяя эту подстановку или используя таблицу с~ п=-и-, '(q ‒ 1)Z,s;, j=! так что и и д 1 взаимно просты тогда и только тогда, когда т и д ‒ 1 взаимно просты. П Согласно доказанной теореме, коды Хэмминга над GF (q) длины п = (q 1)l(q 1) являются циклическими, если и и д 1 взаимно просты. В g 3.4 мы рассматривали, однако, не- которые коды Хэмминга, для которых т и д 1 не взаимно просты. Яля этих кодов такое циклическое построение не работает. Простейшим их примером является (21,18)-код Хэмминга над GF (4). Этот код нельзя описать через порождающий многочлен. Однако большинство представляющих интерес кодов Хэмминга являются циклическими. В качестве примера циклического кода Хэмминга рассмотрим (85,81)-код над GF (4), для которого выпишем порождающий многочлен. Это построение реализуется в поле GF (256) и сво- дится к нахождению минимального многочлена над GF (4) эле- мента р =сР. Элементами порядка 3 в поле GF (256) являются только а" и сР', так что в поле GF (256) поле GF (4) таково: GF (4) = tP 1 а' а'") Множеством сопряженных элементов, содержащих р, относительно поля GF (2) является (~ ~2 ~4 ~9 $16 ~ЗЛ ~64 ~128~ 
't 34 Гл. s. ци кл и ч Ecки е кОды логарифмов для умножения в поле GF (256) (в обоих случаях вычисления займут примерно час}, находим g (x) = x' + х' + а'"x + 1. Наконец, поскольку мы уже оставили работу в поле GF (256), то заменим обозначения на более естественные для поля GF(4) и получим g(x) =х4+x3+3x+1. Это и есть искомый порождающий многочлен (85,81)-кода Хэмминга над полем GF (4). 5.6. ЦИКЛИЧЕСКИЕ КОДЫ, ИСПРАВЛЯЮЩИЕ ДВЕ ОШИБКИ В предыдущем параграфе было дано описание кодов Хэмминга как циклических кодов, порождающие многочлены которых имеют корень в соответствующем расширении основного поля. Описанные коды исправляют одну ошибку. Сейчас мы возвра- щаемся к исправляющим две ошибки кодам над полем GF (2). Пусть длина кода имеет вид n = 2'" 1 для некоторого т, и пусть а примитивный элемент поля GF (2"'). Мы рассмотрим те двоичные коды, для которых а и а' являются корнями порож- дающих многочленов, и покажем, что такие коды позволяют исправлять две ошибки. Пусть g (x) ‒ многочлен наименьшей степени, для которого а и а' из GF (2 ) являются корнями. Описав процедуру деко- дирования, позволяющую исправлять все одиночные и двойные ошибки, мы докажем, что минимальное расстояние этого кода равно по меньшей мере 5. Принятое слово записывается многочленом степени и ‒ 1 вида v(x) =- a(x)g(x) +e(x), где е (x) содержит не более двух ненулевых коэффициентов, по- скольку мы рассматриваем случай исправления не более двух ошибок. Таким образом, или е (x) = О, или е (x) ‒ ‒ x', или е (x) =- =- v' + х". Целые числа i и ~' маркируют позиции, в которых произошли ошибки. Для маркировки ошибочных позиций мы будем также использовать элементы поля GF (2"}. Элемент поля n' соответствует компоненте с номером ~. В этой роли элементы поля называются локаторами. Обозначим X> ‒ ‒ n' и Х, = п-". Так как длина кода и равна порядку элемента и, то локаторы Х, и Х, определяются однозначно. Если произошла только одна ошибка, то положим Х, --= О; если ошибок не произошло, то Х, = Х, =- О. 
8.6. КОДЫ, ИСПРАВЛЯЮЩИЕ ДBE ОШИБКИ 1 35 Пусть S~ ‒‒ v (а} и S, = v (а'). Эти элементы, известные также под названием компонент синдрома, вычисляются непосред- ственно по принятому слову v (x). Так как а н а' являются кор- нями g (x), то S, = е (а} и S, = е (а'). Предположим, что про- изошли две ошибки: S = а + а', 5з = а~' + аз" Но это в точности дает систему двух уравнений относительно двух не- известных Х, и Х, в поле GF (2'"): S,=Х, +-Х„ 8,= Х', -~~Х2. Если может произойти ие более двух ошибок, то величина S равна нулю тогда и только тогда, когда не произошло ниодной ошибки. Декодер должен продолжать работу в том случае, когда S отлично от нуля. Если выписанная система из двух нелиней- ных уравнений однозначно разрешима относительно Х, и то две ошибки могут быть исправлены, и минимальное расстояние рассматриваемого кода равно по меньшей мере 5. Прямого очевидного способа решения такой системы нет. Один из методов состоит во введении нового многочлена, опре- деляемого так, чтобы локаторы ошибок были его корнями: (x Х,) (x ‒ Х,} = x'- + (Х, + X,) x + Х,Х . Если мы сумеем найти коэффициенты этого многочлена, то, раз- ложив его на линейные множители, мы сможем найти Х, и Х,. Но над расширением поля GF (2) S1 + 53 Х1Х1 + X2XJ 51Х1Х Таким образом, (X + Х]) (X + Хр) = х + $,х + (S) + 5,)/Я„ и S, ,‒й О, если произошли одна или две ошибки. Многочлен в правой части нам известен, поскольку известны S u S Локаторы ошибок являются корнями этого многочлена, а корни любого многочлена над полем определяются однозначно. Следовательно, код исправляет две ошибки. Указав процедуру декодирования, мы установили, что вы- бранный многочлен g (x) порождает код, исправляющий две произвольные ошибки. Практически можно использовать любую удобную процедуру декодирования, и одной из них является процедура вычисления корней выписанного выше квадратного уравнения в GF (2}. Так как всего имеется 2'" возможностей выбора каждого из корней, то это часто делается методом проб и ошибок. Другие схемы декодирования будут рассмотрены в следующих главах. Рассмотренные в настоящем параграфе коды, исправляющие две ошибки, служат иллюстрацией того, как построить цикли- 
136 гл. 5. ЦИКЛИЧЕСКИЕ КОдЬ! ческие коды над некоторым полем, используя лежащие в боль- шем поле корни порождающих эти коды многочленов. В гл. 7 будет рассмотрен общий случай такого построения для произ- вольного поля символов GF (q) и произвольного числа исправля- емых ошибок. 5.7. ЦИКЛИЧЕСКИЕ КОДЫ, ИСПРАВЛЯЮЩИЕ пАКеты ОшиБОК В большинстве случаев коды строятся для исправления любой случайной конфигурации из t ошибок. Некоторые каналы, од- нако, более чувствительны к пакетам ошибок. Если необходимо исправлять t ошибок, группирующихся в пределах короткого временного интервала, а не произвольную конфигурацию из ошибок, то можно воспользоваться этим ослаблением требования для того, чтобы строить более эффективные коды, а именно коды с большей скоростью. В настоящем параграфе мы кратко кос- немся данного вопроса и приведем некоторые циклические коды, исправляющие пакеты ошибок. В силу цикличности эти коды обладают дополнительными свойствами, обычно не необходимыми: они будут исправлять не только данный пакет ошибок, но также и все его циклические сдвиги так называемые циклические пакеты ошибок. Определение 5.7.1. Циклическим ггакепгом длины t называется вектор, все ненулевые компоненты которого расположены среди t последовательных (по циклу) компонент, первая и последняя из которых отличны от нуля. Пакет ошибок можно описывать многочленом вида е (x) = := x'b (x) (mod x" ‒ 1), где b (x) многочлен степени не выше t ‒ 1 с отличным от нуля коэффициентом b,, Таким образом, Ь (x) описывает пакет ошибок, à x' указывает начальный локатор пакета. Синдромные многочлены s (x) для исправляющего пакеты ошибок циклического кода должны быть различными. А именно: если многочлены s (x) = Rs <„г [е (x) ] различны при различных многочленах е (x), задающих цикли- ческие пакеты длины t, то данный код обладает способностью исправлять все пакеты длины t. Например, многочлен g (x) = x' + x' + x'- + x + 1 
5.7. КОДЫ, ИСПРАВЛЯЮЩИЕ ПАКЕТЫ ОШИБОК 137 порождает двоичный код длины 15. Перечислим все циклические пакеты ошибок длины не более 3: e(x) =x', i =0,...,14, (mod x" ‒ 1), i = О, ...,14, (mod x'"' 1), i = 0, ..., 14, е (x) = x' (1 + x) e (x) = x' (1 + х') e(x) =х~(1+х+х') (modx'" ‒ 1), ~ =О, ...,14. Непосредственным вычислением легко проверить, что синдромы для каждой из этих 56 ошибок различны, и, следовательно, по- рождаемый многочленом g (х) циклический код позволяет исправ- лять все пакеты длины 3. Заметим, что сумма кодового слова и исправляемого пакета не может быть равна сумме другого кодового слова и исправляе- мого пакета ошибок. В частности, в данном примере никакой пакет длины 6 не должен являться кодовым словом. В общем слу- чае если линейный код исправляет все пакеты длины t и меньше, то он не может содержать в качестве кодовых слов пакеты длины 2 t или меньше. Следующая теорема является аналогом границы Синглтона для кодов, исправляющих случайные ошибки, хотя доказатель- ство ее отличается от доказательства границы Синглтона. Она справедлива не только для циклических кодов. Теорема 5.7.2 (граница Рейгера}. Ка...гдый линейныйблоковый код, исправляющий все пакеты длины t и менее, должен содер- жать по меньшей мере 2 1 проверочных символов. Доказательство. Предположим, что код исправляет все па- кеты ошибок длины t и менее. Тогда он не содержит в качестве кодового слова ни одного пакета длины 2t или менее. Если два вектора принадлежат одному и тому же смежному классу, то их разность равна кодовому слову. Выберем два произвольных вектора, все компоненты которых, кроме первых 2t, равны нулю. Если эти два вектора принадлежат одному смежному классу в стандартном расположении, то их разность равна кодовому слову. Но эта разность представляет собой пакет длины 2t и, согласно сказанному ранее, не может быть кодовым словом. Поэтому два таких вектора должны лежать в разных смежных классах, а число смежных классов должно быть по меньшей мере равным числу различных таких векторов. Всего имеется д" различных векторов, все ненулевые компоненты которых содер- жатся в первых 2t позициях; следовательно, число смежных классов равно по меньшей мере д'-', так что код содержит по мень- щей мере 2t проверочных символов. П 
138 ~>. 5. циклические коды Таблица 5.1 Некоторые двоичные циклические коды исправляющие пакеты ошибок Дацна исправляемоао псцсева Oopoxdaequu мно~очлен Параметры ~ ~ + .т" + .г + 1 i" + i +.i-'+ I .~" +.с'+л +.с'+1 .i'+.ñ +.i + 1 +.x +.x +.с +.г+ 1 .i-"+.x + л" +.с'+ I х +.i +.с +.i + I + ~ +л ~-.x'4 л +.x -1.x-+ I (7. 3) (15, 10) (1, 9) (31, 25) (ЬЗ. 5И (Ь3, 55) (5! 1, 499) <1023. IOIO) Отметим, что предыдущий пример циклического кода, исправ- ляющего пакеты ошибок, удовлетворяет границе Рейгера со знаком равенства. Наиболее изученными кодами, исправляющими пакеты оши- бок, являются циклические коды, и мы ограничимся рассмотре- нием только этого класса. Для малых 1 и умеренных длин кода с помощью поиска на ЭВМ было найдено много хороших цикли- ческих кодов над GF (2). Некоторые из этих кодов приведены в табл. 5.1. Из приведенных в табл. 5.1 кодов можно построить более длинные коды методом перемежения. Чтобы из (n, k)-кода по- лучить (jn, jk)-код, выберем из исходного кода 1 произвольных кодовых слов и укрупним кодовые слова, чередуя их символы. Если исходный код исправлял произвольный пакет ошибок длины t, то, очевидно, результирующий код будет исправлять все па- кеты ошибок длины jt. Например, примеияя метод перемежепия к четырем копиям (31,25)-кода, получаем (124,100)-код. Так как каждый из четырех исходных кодов исправлял пакет ошибок длины 2, то новый код будет исправлять любой пакет ошибок длины 8. Для циклических кодов метод перемежения приводит к цикли- ческим кодам. Предположим, что исходный код порождается многочленом g (x). Тогда порождающий многочлен получаемого перемежением кода равен g (х~). Чтобы установить это, заме- тим, что перемежение символов нескольких информационных многочленов с последующим умножением иа g (х~) дает то же самое кодовое слово, что и умножение каждого из исходных 
5.7. КОДЫ> ИСП~АВЛЯЮЩИК RAKETbl ОШИВОК 139 информационных многочленов íà g (x) с последующим переме- жением этих слов (n, Й)-кода. Точнее, пусть с,(x) =i,(x)g(x), с,(x) = >,(x)g(х), Параметры некоторых двоичных кодов Файра (л, k) t =rn (9, 4) (35, 27) ( lO5, 94) (279. 265) (693, 676) (1651, !631) (3825, 3802) (8687. 866!) (19437. 19408) 3 4 5 6 7 8 9 IO с> (x) = i; (x) g (х) представляют собой выбранные кодовые слова. Яля формиро- вания слова из кода-перемежения каждое II3 этих выбранных информационных кодовых слов растягивается вставкой между всеми символами слова j 1 нулей. Кодовое слово из кода-пе- ремежения получается затем задержкой и сложением этих слов: С (Х) = С1 (Х~) + Хс> (Х ) + + Х~ С> (Х~) = = >< (Xi) g(Õi) + XI> (Х() g(Õ~) + + Xi >y(ÕJ)Д(Х~) =‒ =- [Е, (X ) ‒,~ ХЕ, (Х~) + -~- Х~ 'К, (Х~)) g (Х~). Стоящий в квадратных скобках член можно разложить так, что получится информационное слово, составленное из исходных информационных слов методом перемежения. Это слово можно заменить любым информационным словом ( (X); следовательно, с (X) = > (x) g (x'). Замена g (x) íà g (х~) эквивалентна перемежению > копий кода, порождаемого многочленом g (x). Кроме найденных на ЭВМ кодов и получающихся из них пере- межением кодов известны также коды, построенные аналитическими методами. Одним из классов таких кодов являются коды Файра. Параметры некоторых кодов Файра приведены в табл. 5.2. Таблица 5.2 
$4Q ГЛ. S. ЦИКЛИЧЕСКИЕ КОДЫ Определение 5.7.3. Кодом @aupa называется исправляющий пакеты ошибок циклический код над GF (q) с порождающим многочленом g («) = (х"-' ‒ ' ‒ 1) р (х), где р (x) примитивный многочлен над GF (q), степень т ко- торого не меньше длины 1 исправляемого пакета и который не делит x'- ‒ ' 1. Длина и кода Файра равна наименьшему це- лому п, такому, что g (1) делит х' ‒ 1. Теорема 5.7.4. Ялина кода Файра равна n =- е (2t е наименьшее целое число. такое, что р (x) делит x' довательно, если р (x) примитивен, mo для элгого кода (n, k) = ((q 1) (2t 1), (q~ 1) (2t 1) т 2t + ]). Доказательство. При п = е (2t 1) возможно несколько раз- ложений многочлена х" ‒ 1: 1), где 1. Сле- х" ‒ ] = х (г( ‒ (> ] =- (х' ‒ ]) ~ х'", h=0 е ‒ 1 ] «ñ (г( ‒ () ] = (хг( ‒ ( ]),5~ «(г( ‒ () ж. Так как р (x) делит х' 1, то 1. Так как он 2g ‒ 1 ~~ с ‒ 1 (28 ‒ t) h не делит х ‒ 1, то оп должен делить многочлен ~hðõ Таким образом, он делит и х" х" ‒ 1 = (хг' ' ‒ 1) р (х) а (х) для некоторого а (х), и так как не существует меньшего и, для которого имеет место это разложение, то такое и равно длине кода. В частности, если p (x) примитивный многочлен степени т, то р (x) делит x' 1 при е = q~ ‒ 1 и не делит ни при каком меньшем значении е. О Теорема 5.7.5. Код Фай ра исправляет в~е пакеты ошибок длины 1 и менее. Доказательство. Этот код способен исправлять все пакеты длины /и менее, если никакие два таких пакета, х(Ь, (х) и xlb2 (х), не принадлежат одному и тому же смежному классу. В силу цикличности кода без потери общности можно полагать, что ~ равно нулю. Предположим, что два пакета длины t или меньше, b, (x) и x(b, (x), принадлежат одному и тому же смежному классу стандартного расположения рассматриваемого кода. Тогда их разность равна кодовому слову и для некоторого а (х) имеем 4 (л) ‒ х''Ьг (х) = а (х) (х"-' ‒ ' ‒ 1) р (х) (mod «" ‒ 1). 
5.7. КОДЫ, ИСПРАВЛЯЮЩИЕ ПАКЕТЫ ОШИБОК $ 41 Но многочлен х" ‒ ' 1 делит х~(~' ‒ '> 1 для всех неотрицатель- ных ч. Следовательно, можно записать (х'(" ‒ (> ‒ 1) Ь, (х) =- Q(x) (х" ‒ ' ‒ 1) (mod x" ‒ 1) Складывая эти равенства, получаем х'("' ‒ '> [Ь, (х) ‒ xt' ‒ '(-" ‒ '>b,(х)] = а'(х)(х"-' ‒ 1)(mcdх" --1), или, что эквивалентно, х'(" '> ‒ (t ‒ (> [х'-(Ь,(х) ‒ х(+(t ‒ (>-'(" ‒ Ч~,(х)] = =- а" (х) (х" ‒ ' ‒ 1) (mod х" ‒ 1) для некоторых а' (х) и а" (х). Но теперь в каждом из последних двух равенств можно выбрать неотрицательное целое ~, мень- шее е, так что b, (х) будет умножаться íà х(', 0 ( k ( t. Таким образом, за счет выбора ~ получаем х'(" ‒ (( [Ь, (х) ‒ х"Ь, (х)] = а' (х) (х" ‒ ' ‒ 1) (то4х" ‒ 1) или х'(-"'-'1 ‒ "-(( [х' 'b,(õ) ‒ хЧ1,(х)] = = а" (х) (х" ‒ ' ‒ 1) (mc d х" ‒ 1) где deg b, (х) ( t, deg b, (х) < t u k ( t, так что степень мно- гочлена в квадратных скобках не превышает 2 t 2. Но х" ‒ ' 1 должен делить стоящий в квадратных скобках многочлен. Сле- довательно, или b, (х) х~Ь, (х) = О, или х' ‒ ' b, (х) ‒ х"b, (х) = О. По определению пакета ошибок оба коэффициента Ь„и Ь„от- личны от нуля. Следовательно, й =- О или соответственно й == = t ‒ 1. В любом случае j = ~((2t ‒ 1) и b, (х) = b, (х) = Ь (х). Остается показать, что Ь (х) = О. Но исходное соотношение b, (х) ‒ х(Ь, (х) = а (х) (х"-'- ' -- 1) р (х) теперь приводится к виду (х" ® ‒ (~ --- 1) Ь (х) = а (х) (х" ‒ ' ‒ 1) р (х). При ~~ 0 многочлен р (х) не может делить х'(-"' ‒ (> 1, так как v меньше е и р (х) не делит х'(" ‒ (~ ‒ 1 ни для одного целого положительного ~, меньшего е. Поэтому в левой части равенства многочлен р (х) может делить только Ь (х). Но степень многочлена Ь (х) меньше степени многочлена р (x); следовательно, при v + 0 многочлен Ь (х) равен нулю. Так как, далее, j = > (2t 1), то v = 0 означает, что j = О, а это совместно с уже доказан- 
142 Гл. 5. циклические коды ным равенством b, (х) -"= b, (л) противоречит выбору двух разных пакетов. Таким образом, два различных пакета b, (х) и x>b, (х) длины t и менее всегда принадлежат разным смежным классам, и, сле- довательно, код способен исправлять пакеты длины 1 и менее. Д В качестве примера кода Файра выберем т =-- t =- 10 и по- ложим р (х) равным примитивному многочлену степени 10, Тогда е -- 2"' ‒ 1, и мы получаем (19437, 19408)-код, исправляющий все пакеты ошибок длины 10 и менее. Коды Файра являются высокоскоростными кодами с малой (при т = t) избыточностью п ‒ k. В этих случаях избыточность равна 3t 1, что превышает границу Рейгера только Hà t 1. Метод перемежения позволяет строить из кодов Файра более длинные коды, исправляющие более длинные пакеты ошибок. Эти коды являются лучшими известными высокоскоростными кодами, исправляющими пакеты ошибок. В следующей главе мы увидим, что для этих кодов известны очень простые способы построения декодеров. 5.8. ДВОИЧНЫЙ КОД ГОЛ ЕЯ Любой, кто займется исследованием таблицы биномиальных ко- эффициентов, может заметить, что [1 ) -[- (' ) + (, ) + (, ) 2"- = 2-"'. Это равенство представляет собой необходимое (но не достаточное) условие существования совершенного исправляющего тройные ошибки (23, 12)-кода над GF (2), так как: 1) число точек внутри сферы декодирования задается записанным в квадратных скоб- ках выражением, 2) всего имеется 2" таких сфер и 3) все про- странство содержит 2" точек. Следовательно, можно ожидать существования (23, 12, 7)-кода. Такой код, названный кодом Голея, действительно существует. Он удовлетворяет границе Хэмминга из задачи 1.5 со знаком равенства. Код Голея занимает уникальное и важное место в теории ко- дирования. В силу такой хорошей упаковки сфер не удивительно, что код Гслея тесно связан со многими математическими объек- тами, и поэтому его можно использовать для перехода от изу- чения теории кодирования к глубоким задачам теории групп и других областей математики. Однако встав на практическую точку зрения, вероятно, справедливо было бы заметить, что из-за малой длины код Голея, по-видимому, не найдет дальней- ших конкретных приложений. Определим код Голея как двоичный циклический код через его порождающий многочлен. 
5.8. ДВОИЧ Hbl И КОД ГОЛЕЯ 143 Пусть g (х) и g (х) ‒ следующие взаимные многочлены: g(х) = ‒ х" + х" —' ,х'+ х" + л'+ х'-+1, g (х) =- х" -<- х' + х' + х' -',- х" + х + 1. Простым вычислением проверяется, что (х ‒ 1) g (x) g (х) =- х" 1, так что в качестве порождающе) о многочлена циклического (23, 12}-кода можно использовать как g (х}, так н g (х}. Мы вос- пользуемся многочленом g (x). Проведенное в начале параграфа комбинаторное рассуждение показывает, что минимальное рас- стояние этого кода не может быть больше 7. Мы сейчас докажем, что оно равно по меньшей мере 7, однако это доказательство не будет одновременно столь элементарным и кратким, как пре- дыдущее. Можно было бы выписать матрицу Н и проверить, что никакие шесть ее столбцов не являются линейно зависимыми, но из-за больших размеров матрицы это неудобно. Поэтому мы проведем доказательство непосредственно, хотя оно и окажется длинным (длина этого доказательства показывает, насколько трудным может быть вычисление минимального веса в коде}. Доказательство будет состоять из трех шагов, которые сов- местно покажут, что минимальный вес не меньше 7 ° Этими тремя шагами являются доказательства следующих утверждений: 1) в коде нет слов веса 4 или меньше; 2) в коде нет слов веса 2, 6, 10, 14, 18 и 22; 3) в коде нет слов веса 1, 5, 9, 13, 17 и 21. Совместно эти три утверждения означают, что минимальный вес кода равен по меньшей мере 7. Так как мы уже видели, что он не может быть больше 7, то заключаем, что он в точности равен 7. Начнем с рассмотрения корней многочленов g (х) и g (х) в со- ответствующем расширении поля GF (2). Сделаем это не впрямую, а построив минимальные многочлелы некоторых элементов из GF (2048), которые затем окажутся равными g (x) и g (x). Если a - ‒ примитивный элемент поля, то в силу разложения 2047 =-- = 23:: 89 и элемент поля )3 ‒ сР, и обратный ему элемент [3 ' имеют порядок 23. Пусть f (x) и f (х) ‒ минимальные многочлены элементов р и 11 ' соответственно. Согласно теореме 5.3.6, минимальный многочлен элемента (~ равен f (х) = (х р) (х ‒ [У) (х р') ... (х ‒ р" '), где все показатели степеней приводятся по модулю 23 и 2 2' = 1 mod 23}. Сопряженными являются элементы множества Д ( ~ ~2 р1 5~ ~16 ~9 51(( )~13 ~3 ((( ~12 ) 
144 Гл. 5. циКличесКие КОды которых всего 11, так что степень многочлена f (х) равна 11. Ана- логично минимальный многочлен элемента р ' равен f(x) =(х I) ")(х р ')(х P ') ..... .(х P ), а множество сопряженных элементов равно д I p i я-2 (~-1 ~-в (~-1в я-в я is p is я-1 я-в (~-1-'1 Вместе множества В и В содержат 22 элемента поля, порядок каждого из которых равен 23; следовательно, (х 1) f (х) f (х) = х" 1, причем, согласно теореме о единственности разложения, это разложение единственно. Но мы видели, что такое же разложение имеет место для порождающих многочленов g (х) и g(x) кода Го- лея. Следовательно, эти порождающие многочлены представляют собой минимальные многочлены элементов а89 и а " из поля GF (2048). Лемма 5.8.!. Код Голея не содержит ненулевых кодовых слов веса 4 и менее. Доказательство. Так как элементы (~, (~', р' и (~' принадлежат множеству В, то они являются корнями каждого кодового мно- гочлена. Следовательно, каждое кодовое слово удовлетворяет равенству сН' = О, где и, таким образом, с является кодовым словом кода с проверочной матрицей Н. Но любые четыре столбца матрицы Н образуют ненулевую матрицу, кратную матрице Вандермонда, определи- тель которой, как известно, отличен от нуля, если все элементы ее первой строки различны (это будет доказано в ) 7.2). Следо- вательно, согласно следствию 3.2.3, Н является проверочной матрицей кода, минимальный вес в котором равен по меньшей мере 5. О Следующая лемма утверждает, что код Голея не содержит слов веса 2, 6, 10, 14, 18 и 22. Лемма 5.8.2. Если вес слова Голея четен, mo он кратен 4. Доказательство. Пусть с (х) = а (х) g (х) кодовое слово, вес которого четен: 22 с(х) = Q c;x', с=0 
5.8. ДВОИЧ и ЫЙ КОД ГОДНАЯ 14g где число коэффициентов с;, равных единице, четко. Тогда с (1) = = P, и поэтому х 1 делит с (х). Но х 1 не делит g (х); следо- вательно, с(х) = Ь(х)(х 1)g(x) для некоторого b (х). Определим взаимный многочлен: 22 22 с (х) = f с,,;х' = х".'-' g c;x ‒ '. i=0 i~ Поскольку с (P ') = О, для некоторого а (х) имеем с (х) = а (х) g(x). Таким образом, с (х) с (х) = Ь (х) а (х) (х 1) g (х) g (х) = b (x) а (х) (х" ]). Ниже мы используем это равенство, а сейчас вычислим с (х) с (x) отметив, что произведение многочленов может быть записано в виде свертки: 44 22 44 22 c(x) с(х) = f g, c;c>;xi;= f f c;c„,i;õi. j=o i=o У.=о ~=О i ‒ ‒ ‒ oo j=‒ - 0 с ‒ oo 41 оо -) ~ ~ с;с,,+,,х'. у'=23 i ‒ oo Второе слагаемое равно нулю, так как с,"- ‒ ‒ с; в поле GF (2) и по предположению число коэффициентов ci, равных единице, четко. В последнем слагаемом сделаем подстановку с' = с + 22 и в обоих слагаемых заменим j íà j' Тогда 2 l oo с(х)с(х)= f f cicggy; !xi + у'=-0 а‒ 44 оо гг+; 22cl xi . j'=23 i' ‒ ор Если считать, что коэффициенты с индексами, меньшими нуля и большими 22, равны нулю, то сумму по I', можно заменить сум- мой от ‒ 00 до оо (это позволит избежать дальнейших хлопот с пределами суммирования). Сумму можно разбить на части сле- дующим образом'. 2l Оо Г (х) с (х) = f f cс;i.'~~+, ~х ]- ~',~ ~с;х - [- 
Далее заменим i Hà i во втором слагаемом и положим I' = I. в первом слагаемом и j' = j + 22 во втором. Это дает 22 оо 22 ф ‒ 1Х23 j=l i— с;с, ~+~,.х~ ‒ + ' ‒ ! c(x) c(x) = f у=1 К=‒ 22 j=1 I С;С~1+1~ q. С;С;+~ Х К=О 22 22 оо + g f с,:;„x>-' (х" ‒ 1). j ‒ ‒ 1 i =- ‒ оо 1, и следовательно, Но c(s) с (s) кратно многочлену х" 22 ~ с;(с»,,— '; с;+~) = О, 1=0 j=1,...,22. Это равенство должно выполняться при сложении по модулю 2. Следовательно, при целочисленном сложении при каждом в левой части должно получаться четное число: 22 f с; (с„+i J -', - c;,р) = 2а;, j = 1,..., 22 а=0 для некоторых чисел а,. Левая часть не меняется при замене j на 23 ). Следовательно, а~ =- а.,з;. Таким образом, сумми- рование по j дает 22 22 22 11 ~ с; (с,„;; + с;„) =- 2 Z а, = 4 ~ а~ ‒ ‒ 4а j=0 i.— 0 j=1 / ‒ 1 для некоторого а. Наконец, левую часть можно переупорядо- чить. Положим ~' = 23 j в первом слагаемом и с = ‒ с' во втором; тогда 2э 22 ~; c; c;. , =- 4а, i' О /' =-1 i--=0 что вырождается в ~; ~~с;с;=4а. i=0 у+~ Так как двоичные компоненты с; отличны от нуля в w позициях, отсюда следует, что и (и ‒ 1) = 4а. В силу четности ю это означает, что ы кратно 4, что и доказывает лемму. 0 
5.8. ДВОи'4ный КОД ГОле Я 147 Теперь можно перейти к доказательству следующей теоремы. Теорема 5.8.3. Код Голея является совершенным кодом, ис- правляоща.ч три о.ииоки. Доказательство. Как уже было указано в начале этого пара- графа, необходимо только доказать, что минимальное расстоя- ние равно по меньшей мере 7. В силу леммы 5.8.1 оно равно по меньшей мере 5, а в силу леммы 5.8.2 оно не может быть равно 6. Таким образом, необходимо только доказать, что код не содер- жит слов веса 5. Рассмотрим кодовое слово g (x) g (х); в действительности g (x) g(x) = Q'I,' Ох», так как(х ‒ 1) g (x) g(x) = х" 1 = (х 1) ~»ох». Таким образом, коду принадлежит слово, все ком- поненты которого равны 1. Прибавление этого кодового слова к любому кодовому слову веса w дает кодовое слово веса 23 ‒ w. Тогда, согласно лемме 5.8.2, в коде не содержится слов с весами, равными 21, 17, 13, 9, 5 и 1; в частности, не содержится слов веса 5. Теорема доказана. О Отметим, что из доказательства теоремы следует также, что все веса слов в коде Голея исчерпываются числами О, 7, 8, 11, 12, 15, 16 и 23. Просчитанное на ЭВМ число слов каждого веса приведено в табл. 5.3. Кроме двоичного кода Голея существует также совершенный троичный (11, 6, 6)-код Голея. Этими двумя кодами исчерпы- ваются все нетривиальные примеры совершенных кодов, исправ- ляющих более одной ошибки. Таблица 5.8 Веса слов кода Голея Число слое Вес СЗ 12)-код Расшнреннцй (2(,,1е)-код 0 7 Х ll ) 'Ъ 15 !6 24 I ~S3 506 1~88 I ~XX 506 «~53 1 1 0 759 0 2576 0 75Ч 0 1 4096 
1Щ ГЛ. 5. ЦИКЛИЧЕСКИЕ КОДЫ 5.9. КВАДРАТИЧНО-ВЫЧЕТН ЫЕ КОДЫ Класс квадратично-вычетных кодов представляет собой частный подкласс циклических кодов, широко изучаемых потому, что в этом подклассе было найдено несколько хороших кодов и поэ- тому имеется надежда найти в нем другие хорошие коды. На рис. 5.2 приведены параметры некоторых квадратично-вычетных кодов с известным минимальным расстоянием. Наиболсе извест- ным кодом класса является код Голея. Большинство кодов из этого списка обладают большим минимальным расстоянием, чем любой другой известный код с теми же параметрами rz и й, что и привлекает внимание исследователей к квадратично-вычетным кодам. Однако не все эти коды хороши, и не известно, сущест- вуют ли хорошие квадратично-вычетные коды большой длины. Поэтому неясно, насколько квадратично-вычетные коды полезны в практических приложениях. Мы рассмотрим только двоичные квадратично-вычетные коды. Название этих кодов отражает их связь с теми элементами про- стого поля, которые имеют в этом поле квадратный корень. Как показывает теорема 4.6.15, в полях характеристики 2 каждый элемент имеет единственный квадратный корень. В простом поле 6~ (р), р + 2, квадратный корень имеет точно половина нену- левых элементов, а именно те (р 1)/2 элементов, которые равны четным степеням примитивного элемента. Эти элементы проня~о называть квадратичными вычетами (так как они равны квадра- там своих квадратных корней по модулю р). Подчеркнем, что, Рис 5.2. Параметры некоторых двоичных квадратично-вычетных кодов. Знаком сноски ') отмечены параметры лучших из известных кодов с данными и и k. 7 17 ~3 3) 4) 47 7) 73 7Ч ХЧ Ч7 ) ()3 ) '7 ) c) 4 9 ) 1 )6 '1 14 3Q 37 40 45 49 5» 64 76 ~)) c') 7~) 7') 9t) ))'> ll )3 )c) 171 )c )Ч'~ )9 )Ч 
5.9. КВАДРАТИ Ч HO-ВЫ Ч ЕТН Ы Е КОДЫ 1 49 хотя мы рассматриваем коды над GF (2), квадратичные вычеты, входящие в их определение, лежат в поле GF (р), р + 2. Не следует также путать поле локаторов GF (2 ) с полем GF (р), которое не является подполем поля локаторов. Определение 5.9.1. Квадратично-вычетным кодом называется циклический код над GF (2), длина которого равна простому числу р, делящему 2"' 1 при некотором и, а корнями порож- дающего многочлена являются все элементы а~ из GF (2 ), та- кие, что j является квадратичным вычетом поля GF (р). Как следует из этого определения, g (x) =- П (х ‒ а~), > CQR где произведение вычисляется по множеству QR всех квадратич- ных вычетов по модулю р, причем предполагается, что g (х) пред- ставляет собой многочлен над GF (2). Если такой многочлен не является многочленом над GF (2), то для этого значения р кода не существует. Из определения многочлена g (х) следует также, что х~ 1 = (х 1) g (х) g(x), где многочлен g (x) определяется тем, что все (р ‒ 1)/2 его кор- ней суть элементы вида а> из GF (2 ) для всех ненулевых ква- дратичных невычетов / из GF (p). Многочлен g (x) является вза- имным к g(x) и порождает эквивалентный код. Многочлен g' (х) = (х ‒ 1} П (х ‒ ат) у qQR порождает другой код. У этого многочлена корней на один больше, чем у многочлена g (х), и, следовательно, порождаемый им код является подкодом квадратично-вычетного кода. Зтот подкод тоже называется квадратично-вычетным, но он не так интересен, как исходный код, и в дальнейшем мы не будем его рассматривать. Квадратично-вычетный код над полем GF (2) существует только тогда, когда все коэффициенты многочлена g (х) лежат в этом поле. Вскоре мы увидим, что квадратично-вычетный код сущест- вует только тогда, когда р является простым числом вида р= = 8k 1. Но для описания одного такого кода надо знать его минимальное расстояние. Обычно задача вычисления минималь- ного расстояния квадратично-вычетного кода является достаточно сложной, и каждый из кодов требует индивидуального подхода. Один из примеров мы встретили в предыдущем параграфе при исследовании (23, 12)-кода Голея. Для всех перечисленных на рис. 5.2 квадратично-вычетных кодов минимальные расстояния 
f я) Гл. 6. циКличесКие КОды известны. Имеется много других квадратично-вычетных кодов, но их минимальные расстояния не известны. Мы укажем одну границу для минимального расстояния про- извольного квадратично-вычетного кода. Граница не очень хо- роша, но легко доказывается. Теорема 5.9.2 (граница квадратного корня). Минимальное paccmoaeue произвольного квадратачно-вычетного кода длины р удовлетворяет неравенству d'" w -~ р. Доказательство. Зафиксируем произвольный ненулевой эле- мент s поля GF (p), не являющийся квадратичным вычетом. Каж- дый элемент поля GF (р) можно записать в виде js для некоторого j (так как GF (р) поле). Если число j является квадратичным вычетом, то, очевидно, Js будет квадратичным невычетом, если же I квадратичный невычет, то Js является квадратичным вычетом. Пусть с (х) представляет собой кодовый многочлен минималь- ного веса d*. Тогда с (х) = а (х) g (х) для некоторого а (х). Опре- делим с (х) = с (х') (mod x> 1). При этом с (х) = а (х') х xg(x') (mod х" 1), и вес многочлена с (х) равен самое боль- шее d*. Но если j ‒ квадратичный вычет, то g (а~') + О, а если j квадратичный невычет, тод (Ы') =- О. Таким образом, g (х') = = g (х). Следовательно, с (х) с (х) (mod х' ‒ 1) делится как на а (х), так и íà g(х). Этот многочлен кратен многочлену х~ ‒ ' + + хр ‒ -' + ... + х + 1, а степень его равна самое большее р 1, и поэтому е(х) с(х) = х -' +- х -- '‒,.'. ‒,'- х ‒; ‒ 1 (mcd xp ‒ 1). В правой части стоит многочлен веса р, а так как вес многочлена с (х) равен d*, то возможный вес многочлена в левой части не превосходит (d*)'. Итак, d ) 1 р, что и требовалось доказать.[ 1 Теперь определим, когда коэффициенты определенного выше многочлена g (х) принимают только двоичные значения. Если 2 является квадратичным вычетом, то все степени двойки также являются квадратичными вычетами. Далее, если J ‒ другой квадратичный вычет, то все числа 2j, 4J, 8(, ... также являются квадратичными вычетами. Следовательно, вместе с и> все его сопряженные относительно поля GF (2) элементы являются кор- нями порождающего многочлена. В этом случае многочлены g(x) и g (х) представляют собой многочлены над GF (2). Таким обра- зом, квадратично-вычетные коды существуют для всех таких р, для которых 2 является квадратичным вычетом в поле GF (р). Мы увидим, что числа р, для которых 2 является квадратичным вычетом в поле GF (р), исчерпываются простыми числами вида р = 8k 1 для произвольного целого lг. Это утверждение яв- 
6.9. К ВАДРАТИ Ч НО-В Ы Ч ETH Ы E КОДЫ ляется достаточно трудной теоремой теории чисел, и чтобы облег- чить ее доказательство, мы введем несколько лемм. Лемма 5.9.3. Если р простое часло вада р = 8k = 1, то в поле GF (р) имеет место равенсп<ео 2<> ‒ ')/' = ‒ 1. Если р ‒ про- етое число вида р = 8k 3, то в поле GF (p) имеет место равен- ство 2(p ‒ 1)/' = ‒ 1. Доказательство. Прежде всего заметим, что в поле (<Р (р} для любого а справедливо равенство 2а = (р ‒ 2а), и, таким образом, А! А! А! П 2a = П [ ‒ (р ‒ 2а}] = ( ‒ ])" ‒ <" -') П (р ‒ "a). а=Ао а=Ао а=.- А о Пусть х обозначает наибольшее целое число, меньшее или равное х. Тогда имеем следующую цепочку равенств: (р ‒ ! )/2 (р ‒ 1)/2 2</' ‒ ')/' П а = П (2а) = а=! а=! ! (р ‒ !)/4J (р ‒ ! )/2 П (2а} П (2а} = а=1 а=! (р ‒ 1)/4J+1 ~(р ‒ 1)/4! (р ‒ 1)/-" П (2а) ( ‒ 1) [((' ‒ ')/'- ‒ L <)' ‒ ) )/4J) П (р ‒ 2а) а=! а=! (р ‒ 1) /4!+! Теперь в первом произведении 2а пробегает по всем четным це- лым числам от 2 до (р 1}/2, а во втором произведении р 2а пробегает по всем нечетным целым числам от 1 до (р ‒ 1)/2 1. Это легко проверить, отдельно рассматривая случаи четных и нечетных (р 1}/2. Объединяя оба произведения, имеем (р ‒ 1) /2 (p ‒ 1)/2 2(u <)и П а = ( 1)[(р ‒ ))/г ‒ [(р ‒ <)/~l) П а а 1 Далее, так как в поле GF (р) все члены произведения отличны от нуля, то можно провести сокращение, что дает 2(~~ ))/'-' = ‒ ( 1)[(n- <)/'-' ‒ [(о ‒ <) '(.)). Если р = 8k = 1, то показатель степени у ( ‒ 1) равен четному числу и 2(p ‒ 1)/2 1 Если р = 8k 3, то показатель степени у ( 1} равен нечетному числу и 2(р ‒ 1)/2 что и завершает доказательство леммы. 
162 Гл. 5. циклические коды Лемма 5.9.4. В поле GF (р) число f является квадратичным вычетом тогда и только тогда, когда г(р ‒ '>/' = 1. Доказательство. Предположим, что г(" ‒ ')(-' + 1. Тогда ) ' г не может существовать, так как если on существует, то (p' r)р-' должно равняться единице, что противоречит предположению. Предположим теперь, что r(n ‒ l)/' = 1, и обозначим через я примитивный элемент поля GF (р). Все четные степени а, оче- видно, являются квадратичными вычетами, и так как половина ненулевых элементов поля является квадратичными невычетами, то отсюда вытекает, что все нечетные степени элемента а обра- зуют квадратичные невычеты. Нам надо только показать, что г равно четной степени элемента а. Допустим противное; тогда r=а"+' и j (p ‒ I) j2 (X2(+l)(p ‒ I) j2 (2~ (p ‒ l )(2(p ‒ I) j2 с~(р ‒ 1)/2 ~ 1 так KBK порядок а равен р 1. Итак, из равенства г(р ‒ ')/' = 1 вытекает, что r равно четной степени элемента а и, следовательно, является квадратичным вычетом. О Теорема 5.9.5. В простом поле GF (p) элемент 2 является квадратичныл~ вычетом, если р = 8k 1 для некоторого ие- лого k, и квадратачнььч невычетом, если р = 8k 3. Доказательство непосредственно вытекает из леммы 5.9.3 и 5.9.4. П ЗАДАЧИ 5.]. Многочлеп g (х) = хв + х~ + хв + х4+ 1 порождает циклический код над GF (2) длины 15. а. Найти проверочную матрицу кода. б. Сколько ошибок может исправлять этот код? в. Сколько стираний может исправлять этот код? г. Найти порождающую матрицу кода в систематическом виде. 5.2. Найти минимальный многочлен для каждого элемента поля GF (16). 5.3. Найти порождающий многочлеп двоичного (31, 21)-кода, исправля~о- щего две ошибки. 5.4. Harm порождающий мпогочлен двоичного циклического (21, 12)-кода, исправляющего двс ошибки. 5.5 Многочлен g (х) = х" + Зх~ + х4+ xÐ+ 2х~+ 2х+ 1 порождает над GF (4) циклический код длины 15, исправляющий две ошибки. а. Найти порождающую в~атрицу кода в систематическом виде. б. Показать, что каждое кодовое слово кода из задачи 5.1 принадлежит рассматриваемому коду. 5.6. Пусть g (х) ‒ порождающий многочлен циклического кода над GF (q) длины л. Доказать, что если и и о взаимно просты. то слово, все компоненты ко- торого равны 1, принадлежит коду тогда и только тогда, когда l не является корнем порождающсго многочлена. 
3Амеч А н иЯ 1 63 5.7. 11редположпм, что многочлсп g (х) = ‒ g»i,x" ~ + ... —,' g„~opom- даст циклический код. Доказать, что g< цс равно нулю. Доказать, что взаимный многочлен g(x) =- g„x" ~+ g,õ" ~ ' + ... + gÄg порождаст эквивалент- ный циклический код. 5.8. Предположим, что двоичный циклический код обладает тем свойством, что если с (х) ‒ кодовый мцогочлен, то и с (х) ‒ кодовый миогочлен. Дока- зать, что g (x) = g (х). Как формулируется соответствующее утверждение для недвоичного кода? 5.9. Найти порождающий миогочлси (9, 7)-кода Хэмминга над GF (8). 5.10. Расширить табл. 5.2, включив в иее все коды Файра, основанные на примитивных многочленах р (х) для !2 ) т ) 1. 5.11. Предположим, что g~ (х) и gz (х) порождают над GF (q) два кода Ж~ и Ж~ с одииаковой длиной. Доказать, что если все корни мпогочлена gg (х) яв- ляются корнями многочлеца g> (х) (так что g, (х) делит g~ (х)), то Ж~ является цодкодом кода Ю,. 5.12. Многочлеи g (х) = х' + Зх' ‒,'- л4+ хэ+ 2х~+ 2х+ l над GF (4) порождает циклический (! 5, 9)-код над GF (4), исправляющий две ошибки. а. Является ли многочлен о (х) = х'"+ Зх~+ х+ 2 кодовым словом? б. Чему равен синдромный многочлеи для многочлена v (х)? в. Сколько синдромных многочленов нужно затабулировать, чтобы охватить все исправляемые конфигурации ошибок? 5.13. Разложить многочлен хв ‒ ! над GF (3). Сколько имеется цикличе- ских кодов над GF (3) длины 8? 5.14. Доказать, что все элементы, сопряженцые с примитивным элементом, также являются примитивными. 5.15. Построить над GF (256) порождающий многочлен для кода Файра длины и = 4845, исправляющего все пакеты не более чем из 10 ошибок. ЗАМЕЧАН ИЯ Центральная идея, объединяющая всю эту главу, была выдвинута в глубоких работах Прейнджа [!957, !958]. Прейндж ввел понятие циклического кода и указал на его связь с идеалами алгебр, которые независимо изучали он, Питер- сон [1960] и Касами [!960). Эта работа появилась в конце 50-х годов и зало- жила фундамент переворота, произошедшего в 60-х годах, когда стало понятно, что циклические коды можно описывать в расширениях полей, и это привело к идеям, которые будут изложены в гл. 7. Большинство материала данной главы использует метод расширения полей. Исследование кодов, исправляющих пакеты ошибок, было начато Эйбрам- соном [1959]. Большинство из практически используемых кодов было найдено с помощью поиска на ЭВМ, причем многие из них нашел Касами [1963]. Пер- вая таблица из ~ 5.7 основаиа на компиляции из книги Питерсона и Уэлдона [!97! ]. Коды Файра были опубликованы Файром в 1959 г. Двоичный (23,12,7)-код Голея и троичный (!1,6,5)-код Голея были опуб- ликованы в 1949 г. (Голей [1949]). Наше доказательство теоремы о минимальном расстоянии двоичного кода Голея восходит к Мак-Элису [!977]. Циклическую структуру кодов Хэмминга независимо установили Эйбрамсон [1960] и Элспас [1960]. Квадратично-вычетные коды были введены Прейнджем [!958] и ши- роко изучались впоследствии; резюме посвященных им работ дали Ассмус и Мэттсон [!974]. 
ГЛАВА 6 СХЕМНАЯ РЕАЛИЗАЦИЯ ЦИКЛИЧЕСКОГО КОДИРОВАНИЯ В этой главе мы временно прерываем поиски циклических кодов с большим минимальным расстоянием. К ним мы вернемся в сле- дующей главе, а сейчас займемся теми конструкциями кодеров и декодеров, которые, как правило, содержат регистры сдвига. Цифровые логические устройства легко организовать в виде цепей регистров сдвига, имитирующих циклические сдвиги и по- линоминальную арифметику, используемые в описании цикли- ческих кодов. Поэтому структура циклических кодов тесно свя- зана со структурой цепей регистров сдвига. В частности, эти цепи очень удачно подошли для реализации многих процедур кодирования и декодирования, в которых они часто принимают вид фильтров. В самом деле, многие алгоритмы проще описать, используя символику цепей регистров сдвига. Многие детали легче понять на схеме, чем из формулы. В данной главе мы рас- смотрим кодеры и декодеры, основанные на регистрах сдвига. 6.1. ЛОГИЧЕСКИЕ ЦЕПИ ДЛЯ АРИФМЕТИКИ КОН EЧНОГО ПОЛЯ Арифметику полей Галуа легко реализовать с помощью логи- ческих цепей, особенно если д является степенью двойки. Нам нужны элементы цепи для запоминания элементов поля, называ- емые разрядами регистра сдвига, и элементы цепи для выпол- нения арифметических операций конечного поля. Мы определим эти элементы для произвольного поля GF (q), хотя обычно они строятся из двоичных элементов. Регистр сдвига, как показано íà р»с 6.1, представляет со- бой последовательность элементов памяти, называемых разря- дами. Каждый разряд содержит один элемент поля GF (q). Со- держащийся в каждом разряде символ, покидая этот разряд, по- является на выходящей из пего линии. Каждый разряд снабжен также входной л»нией, по которой в него поступает элемент 
6.1. ЛОГИЧЕСКИЕ ЦЕПИ поля GF (q). Если нет других указаний, то этот входной символ принимается равным нулевому элементу поля. В дискретные мо- менты времени, называемые тактами, содержащиеся в устрой- ствах памяти элементы поля замещаются элементами поля с вход- ных линий. Современные электронные регистры сдвига допускают тактовую частоту, превосходящую 10 миллионов тактов в секунду. Помимо регистров сдвига мы будем использовать три других элемента, показанных на рис. 6.2, а именно умножитель на ска- ляр, сумматор и умножитель. Умножитель на скаляр является функцией одной входной переменной; он умножает входную пе- ременную на фиксированный элемент поля GF (q). Сумматор и умножитель являются функциями двух входных переменных, принимающих значения из GF (q). В двоичном случае сумматор также называется элементом «исключительного или», а умножи- тель элементом «и». Все перечисленные выше элементы цепей можно для произволь- ного GF (q) построить из двоичных элементов. Опишем, как это делается в том случае, когда д представляет собой степень двойки. Элементы поля GF (2 ) записываются совокупностями т битов и могут быть реализованы в цепи или параллельно (в один мо- мент времени один бит на каждом из т проводов), или последова- тельно (в один момент времени один бит на одном проводе). Оба способа реализации элементов поля GF (2"') на двоичных регистрах сдвига демонстрируются на рис. 6.3, где показан част- ный случай поля GF (16). Каждый элемент поля представляется четырьмя битами, а последовательность элементов поля записы- вается последовательностью 4-битовых чисел. Элементы поля могут быть выполнены последовательно или параллельно, т. е. с исполь- зованием одного или четырех проводов. В случае последователь- ного исполнения регистр сдвига для GF (16) реализуется в виде двоичного регистра, длина которого в четыре раза больше. Для сдвига элемента поля в следующую ячейку на самом деле потре- буется четыре такта. Рис. 6.1. л-разрядныЙ регистр сдвига. Рис. 6.2. Элементы устройств. а ‒ умножитель на скал яр; б ‒ сумматор, в ‒ умножитель. 
1 56 ГЛ. G. СХЕЛ1НАЯ РЕАЛ И3АЦИЯ Рис. 6.3. Построенные из двоичных компонентов регистры сдвига для поля из 16 элементов. а ‒ последовательное исполнение; б ‒ параллель- ное исполнение. Рис. 6.4. Сложение двух элементов поля. а ‒ последовательное исполнение; б ‒ параллельное исполнение. Рис. 6.5. Умножение на константу поля P = z~. а ‒ последовательное испол- нение; б ‒ параллельное исполнение. На рпс. 6.4 показаны цепи сложения элементов в поле GF (16) как для последовательного, так и для параллельного исполнения. В каждом случае перед выполнением сложения слагаемые вво- дятся в соответствующие регистры сдвига, а сумма формируется 
6.2. ЦИФРОВЫЕ ФИЛЬТРЫ $ 57 в третьем регистре сдвига. В схеме последовательного исполнения для выполнения сложения требуются четыре такта, а в схеме па- раллельного исполнения требуется только один такт, но сумматор содержит больше проводов и сумматоров по модулю 2. При же- лании слагаемые могут быть возвращены в исходные регистры сдвига для дальнейшего использования в других целях. На рис. 6.5 изображен умножитель произвольного элемента поля GF (16) на константу P = z' поля GF (16). Для описания этого устройства нам необходимо конкретизировать представление поля GF (16). Предположим, что оно построено с помощью примитив- ного многочлена p (z) = z'+ z+ 1 и что 7 = 7,z'+ 7,г'+ + у,г + у, произвольный элемент поля. Тогда р7 = 7' + 72z + 7' + 7ьа =(7з+ 7о)Г + (7з+ 7a)а + (7»+ 7>)2+ 71 Из этого равенства непосредственно вытекает способ параллель- ного исполнения умножителя на скаляр. Последовательное ис- полнение этого умножителя менее очевидно. В нем использованы обе строки предыдущего равенства: сначала вычисляется у,г'+ + у.,г' + у,г' + у,г', а затем делается приведение по модулю z4 + z + 1. Эта схема является цепью деления на многочлен z'+ z+ 1. Для выполнения умножения íà р в ней требуются четыре такта. 6.2. ЦИФРОВЫЕ ФИЛЬТРЫ Регистры сдвига можно использовать для умножения и деления многочленов над GF (q); этим и объясняется их частое применение в конструкциях кодеров и декодеров. Регистры сдвига полезны и для развития теории, так как играют роль своего рода псевдо- математических обозначений, помогающих лучше понять некото- рые действия над многочленами. Цепи регистров сдвига называ- ются также фильтрами. Можно интерпретировать ~z символов, содержащихся в реги- стре длины п, как коэффициенты многочлена степени п ‒ 1. В качестве обычного соглашения условимся, что регистр всегда сдвигается слева направо. Такое требование приведет иногда к тому, что коэффициенты многочлена будут появляться в регистре сдвига в нисходящем порядке справа налево, а это, к сожалению, проти- воречит общепринятому правилу записи многочленов. Для циклического сдвига многочлена используется замкну- тый в кольцо регистр сдвига. На рис. 6.6 изображен и-разрядный регистр, используемый для циклического сдвига многочлена сте- пени и 1. Он вычисляет xv (х) (mod х" ‒ 1). Это простейший пример регистра сдвига с линейной обратной связью. 
1Щ ГЛ. 6. СХЕМНАЯ РЕАЛИЗАЦИЯ РНс. 6.6. Устройство циклического сдвига многочлена. i 3 'p2'~1 '' 0 L р. = - E hi pj Рис. 6.7. Регистр сдвига с линейной обратной связью. Общий вид регистра сдвига с линейной обратной связью пока- зан на рис. 6.7. Эта цепь реализует вычисление рекурсии I. pj= Е ~ipj i /~~~" Если в начальный момент регистр загружен L символами (p„, ..., рс ~), то на выходе регистра появится бесконечная последо- вательность символов, начинающаяся с р, и удовлетворяющая вы- писанному выше рекуррентному уравнению. Если этот фильтр используется в изображенной на рис. 6.8 цепи, то он называется авторегрессионным фильтром. Так как в нем имеется обратная связь, то он относится к обширному классу так называемых рекуррентных фильтров. Вместо того чтобы на вход фильтра подавать по линии обрат- ной связи его выходной сигнал, в качестве входного сигнала мо- жно использовать генерируемую извне последовательность. Та- кой линейный регистр сдвига без обратной связи показан на рис. 6.9. Он называется также <(тльтром с конечным импульсным откликом (КОО+ильтром) или нсрскур рентным фильтром. Пусть коэффициенты многочлена g (х) - gLõL + ... -~ gix + + ~„равны весовым множителям в отводах регистра сдвпга без обратной связи, и пусть входная и выходная последовательности записываются соответственно многочленами а (х) =- аьх~ + ... + + а,х + а„и Ь (х) = Ьд,~х~" + ... + b,х + b,. Тогда произ- ведение этих многочленов b (х) =- g (х) а (х) описывает проис- ходящие в изображенном на рис. 6.9 регистре сдвига процессы при условии, что в начальный момент регистр содержал только нули и ввод элемента а, сопровождается вводом L нулей, Говорят, 
В.2. ЦИФРОВЫЕ ФИЛЬГРЬ1 159 что коэффициенты многочленов а (х) и g (х) свертываются реги- стром сдвига, так как L b,= Z ga,, i=0 Применительно к многочленам КИО-фильтр можно рассматри- вать как устройство для умножения произвольного многочлена а (л) на фиксированный многочлеп g (х), Мы будем называть его также цепью ул~ноження на g (х). На рис. 6.10, а приведен пример цепи умножения на g (х) для g (х) -- х" + х' -,'- х' -1 л". + х -)- 1. Эта цепь является КИО- фильтром. Подчеркнем, что внутренние разряды регистра сдвига считываются, но не изменяются. Можно указать другой вариант устройства, в котором внутренние разряды меняются, но, как правило, этот альтернативный вариант оказывается более доро- гим. На рис. 6.10, б показан такой альтернативный вариант для цепи умножения на g (л). Эта форма КИО-фильтра не является общепринятой. Регистр сдвига можно также ис пользовать дл я делен и я произ- вольного многочлена на фиксированный многочлен. Выполняю- щая эту операцию цепь почти повторяет обычную процедуру де- ~3 ' ' 2 ' ~1 ' ~ О а~...,а,,а, L р = ‒ ~:$,.p-t. +а. i--1 Рис. 6.8. Авторегрессионный фильтр. bo b1 ," ', b<+ ь! bz+ Й о " ад,,а~ L b> =.~ д;а;; Рис. 6.9. Регистр сдвига без обратной связи. 
1Щ ГЛ. 6. СХЕМНАЯ РЕАЛИЗАЦИЯ ления многочленов. Предположим, что делитель является приве- денным многочленом. (В противном случае скалярный множи- тель можио вынести и выполнить соответствующее деление от- дельно.) Деление «уголксм» записывается в виде a„ > v + (a„— 2 a„- >g„-~ ‒ ~ ).~ + л:" +9л-g-l.~ + ' ' ' +Оо an-) ~ + a„2i 2+ +а! ~+а .л ‒ 1 .л ‒ 2 ~л-1.~ + ««л- ~Ол-й -1.X + ' ' ' ~~2л -2 ~л ‒ 1Ол- й ‒ I ~-~ + (a. 2 -a. ig. k )к" ' + Зти вычисления можно записать в виде системы двух рекуррент- ных равенств. Пусть Q<'> (х) и R~'> (x) ‒ соответственно частное и остаток на r-м шаге рекурсии с начальными значениями Q"' (х) = О и R' (х) =- а (х). Тогда рекуррентные равенства за- писываются в виде q' (х)=q' "(х)+-Ф' >х ф'(х) = Ф' "(x) ‒ Я„':,"х' 'g(x), и после Й шагов итерации получаются частное Q<»> (х) и остаток R<»> (х). Изображенная на рис. 6.11 цепь является цепью деления произвольного многочлена на фиксированный многочлен g (х). Зто легко понять, обратившись к любому из двух приведенных описаний процедуры деления. Единственной не отраженной на цепи операцией является вычитание члена R„,õ" ‒ ' из самого себя, выполнять которую не надо, так как результат всегда равен нулю. После и сдвигов на выходе регистра будет вычислено част- ное, а в регистре окажется записанным остаток от деления. На рис. 6.12, а приводится пример цепи, реализующей де- ление произвольного многочлена над GF (2) на многочлен д (х) == = xÐ+ х7+ х4+ x2+ х+1 Рис. 6.10. Два устр<)йства умножения иа миогоцлсн хв -) х7 -)- х4 -)- х2 -(- х+ ]. 
е.2. цифровые Фильтры 1 61 ° . А)-2. ~п- t Рис. 6.11. Устройство делення на многочлен g(s). .а~2,а„, ах дою Рис. 6.12. Ява устройства деления на многочлен хв+ х7+ х4+ х2+ х+ 1. так что л ‒ 1 n(~ ‒ 1> '~ ~(~ ‒ » ~~л ‒ r = ©л ‒ г ~ Ял ‒ г ‒ g'Ц,~ q(<) ( ) (r — I) ( ) ~ ~(г ‒ 1) Ф-r Эти равенства можно реализовать с помощью модификации цепи умножения на g (х). На рис. 6.12, б показана соответствующая цепь деления на многочлен g (х) = х' + х' + х'+ х'+ х + 1 P. Блейхут Отметим, что в этой цепи между внутренними разрядами ре- гистра вставлены сумматоры и это часто усложняет работу цепи. Вместо описанной цепи деления можно использовать цепь, в ко- торой производится только считывание содержимого разрядов регистра сдвига без их изменения. Для построения такой цепи ор- ганизуем иначе деление многочленов. Идея сводится к одновре- менному выполнению всех вычитаний одного столбца в описанном выше делении «уголком». Чтобы показать, как это делается, за- метим, что можно записать Й" (х) = а (х) ‒ Q') (х) g (х), 
1QQ Гл. 6 ° схемнАя РеАлизАциЯ 6.3. КОДЕРЫ И ДЕКОДЕРЫ НА РЕГИСТРАХ СДВИГА Целесообразность использования регистров сдвига для пастрое. ния циклических кодеров и декодеров объясняется структурой циклических кодов. При несистематическом кодировании цикли- ческих кодов для формирования кодового слова с (х) надо сооТ- ветствующий информационный многочлен 1 (х) умножить на фик- сированный порождающий многочлен g (х). Эту операцию можно реализовать на КИО-фильтре над GF (q). Такой кодер для (15, 11)-кода Хэммпнга представлен на рис. 6.13. Для кодирования непрерывного потока информационных битов последовательно- стью слов (15, 11)-кода Хэмминга информационная последова- тельность просто разбивается на блоки по 11 битов, каждый блок дополняется «прокладкой» из четырех нулей, а результирующий поток битов пропускается через КИО-фильтр. На выходе полу- чается последовательность непересекающихся 15-битовых слов кода Хэмминга. Такой кодер, показанный на рис. 6.14, очень прост, но кодовые слова оказываются несистематическими. Для получения слов кода в систематическом виде надо восполь- зоваться другим кодером. Поместим информационные биты в стар- шие разряды кодового слова и подберем проверочные символы так, чтобы получить допустимое кодовое слово. Кодовое слово записывается в виде с (х) =: х"-~i (х) + t (х), где t (х) =- --Rz <„> [x" ‒ I'i (х) ], так что R~<,> [c (x) ] = О. Для реализации систематического кодера используется цепь де- ления на g (х). Для (15, 11)-кода Хэмминга t (х) ‒ R~ <,1 [x4i (х) ]; соответствующее устройство показано на рис. 6.15. Одиннадцать информационных битов, занимающих старшие разряды, вводятся слева в цепь деления на х4+ х + 1. Умножение на х4 учитыва- ется временем работы цепи. Первый бит понимается как коэффи- циент при х". Деление не начинается до тех пор, пока не выпол- нены четыре тактовых сдвига, так что первые четыре бита оказы- ваются записанными в разрядах регистра сдвига. Поэтому ниже цепи деления в устройство включен буфер из четырех разрядов, так, что первые четыре бита начинают поступать в канал одно- временно с началом деления. После 11 тактов работы все 11 ин- формационных битов поданы в канал, деление закончено и вы- 
6.3. КОДЕРЫ И ДЕКОДЕРЫ НА РЕГИСТРАХ CÄÂÈÃA 1ЯЯ =(X) = i(X) (Z4+Z+1 ) С(Х) Рис. 6.13. Несистематический кодер для (15, 11)-кода Хэмминга. 4- бловая Н-боовое проклабка цнсрормацоонное r слово 15- битовое коЬовое слово К И О-(рцльар g(X) = g 4 + а + t Рис. 6.14. Кодирование длинного потока битов. Оп1крыло на последних max бверк на послебних 4 вакаах С(Х) Вниз на первых Н вакаах (всего 19 гпакгпов) Рис. 6.15. Систематический кодер для (15, 1!)-кода Хэмминга. численный остаток готов для подачи в канал в качестве провероч- ных символов. В течение этих последних четырех тактов работы цепь обратной связи в устройстве деления разомкнута. В общей сложности полное кодирование занимает 19 тактов. Можно несколько ускорить кодирование, удалив нервые че- тыре такта. Такой кодер изображен на рис. 6.16. Чтобы понять эту схему, нужно заметить, что поступающие информационные символы не вводятся немедленно для выполнения деления на g (х), а поступают тогда, когда необходимо сформировать сигнал обратной связи. Таким образом, обратная связь в устройстве на рис. 6.16 такова же, как и в устройстве на рис. 6.15. Далее, так как последние биты многочлена х'( (х) всегда равны нулю, то ни- чего не случится, если мы прибавим их к остатку от деления. Та- ким образом, остаток, вычисляемый устройством на рис. 6.16, равен остатку, вычисляемому устройством на рис. 6.15, но вьяисление происходит только за 15 тактов, что, конечно, удобнее. 6е 
$ Q4 Гл. 6. схемнАЯ РеАлизАЦиЯ Om~PbimO На ООСЛЕОНЫ 4 валках лебних С(Х) ~1Х (всего 15 вакфов) Рис. 6.16. Другой систематический кодер для (15, 11)-кода Хэмминга. Теперь обратимся к декодеру. В канал поступают коэффици- енты многочлена с (х). К ним прибавляется многочлен ошибок е (х). На выходе канала принимается многочлен v (х) = с (х) + е (х). В ~ 5.2 была описана очень простая по идее процедура декодиро- вания, основанная на просмотре таблицы. Принятая последо- вательность делится на g (х), и остаток от деления полагается рав- ным синдромному многочлену. Синдромный многочлен использу- ется для выбора из таблицы оценки для многочлена ошибки. В дво- ичном случае синдром можно использовать непосредственно как адрес хранящейся в таблице оценки вектора ошибок е (х). На рис. 6.17 изображен декодер для несистематического (15, 11)-кода Хэмминга. Яля этого кода синдром задается 4 битами, и, следовательно, необходимо постоянное запоминающее устрой- ство (ПЗУ), в котором записаны 15-битовые слова, четыре из кото- рых заняты адресом. Такой подход представляется практичным для длин и ‒ й синдромов вплоть до 12 или 14 битов, но, как Рис. B.17. Сиидромный декодер для аескстематаческого (15, 11)-када Хэм- мыыга. 
6.4. ДЕ КОДЕ P МЕГГИТТА мы увидим в следующем параграфе, возможны и другие техниче- ские решения. После исправления принятого слова получаем многочлен с (х), по которому устройство деления на g (х) вычис- ляет информационные символы согласно правилу ( (х) = Яе („> [ с (х) ), и на этом работа декодера заканчивается. 6.4. ДЕКОДЕР МЕГГИТТЛ Наиболее сложной частью описанного в предыдущем параграфе декодера с регистром сдвига является табулирование заранее вычисленных синдромных многочленов и соответствующих им многочленов ошибок. Такой табличный декодер можно значительно упростить, воспользовавшись сильной алгебраической струк- турой кода для отыскания связей между синдромами. Опираясь на эти связи, можно запомнить только многочлены ошибок, соот- ветствующие некоторым типичным синдромным многочленам. Вычисление остальных необходимых величин осуществляется за- тем с помощью простых вычислительных алгоритмов. Простейший декодер такого типа, так называемый декодер Меггитта, проверяет синдромы только для тех конфигураций ошибок, которые расположены в старших позициях. декодирова- ние ошибок в остальных позициях основано на циклической струк- туре кода и осуществляется позже. Соответственно таблица синдро- мов содержит только те синдромы, которые соответствуют много- членам ошибок с ненулевым коэффициентом е„1. Если вычислен- ный синдром находится в этой таблице, то е„«1 исправляется. Затем принятое слово циклически сдвигается и повторяется про- цесс нахождения возможной ошибки в предшествующей по стар- шинству позиции (е„, + 0). Этот процесс повторяется последо- вательно для каждой компоненты; каждая компонента проверя- ется на наличие ошибки, и если ошибка найдена,то она исправ- ляется. В действительности нет необходимости вычислять синдромы для всех циклических сдвигов принятого слова. Новый синдром можно легко вычислить по уже вычисленному. Основная взаимо- связь описывается следующей теоремой. Теорема 6.4.1 (Меггитт). Предположим, что g (х) h (х) = =xn ‒ 1 и Rs(с> [v (x) l = s (х). 7огда gs („> [xu (x) (mod x" ‒ 1)] ~ Rs гх> [xs (х)>. 
ГЛ. 6. СХЕМНАЯ РЕАЛИЗАЦИЯ Доказательство сводится к комбинации трех простых утвер- ждений. (i) По определению о (х) =- g (х) Q, (х) + s (х), xv (x) = xg (x)Q, (х) + xs (х), (><) xv (х) (то4 х" ‒ 1) =- xv (х) ‒ (х" 1) v„,. (ш) Согласно алгоритму деления, хя (х) = g (х) Q., (х) + t (х) однозначно, причем deg t (х) ( deg g (х). Комбинируя эти утверждения, получаем xv (х) (то4 х" 1) ‒: [xQ, (х) + Q, (х) + v„,h (х) ] g (х) + t (х) =- = Q, (x) g (x) + t (x). Так как deg t (х) ( deg g (х), то, согласно алгоритму деления, t (x) определяется однозначно и t (х) = В < „> [xu (х) (то4 х" ‒ 1)] = Rs <,> [xs (х)], что и требовалось доказать. С3 Из этой теоремы, в частности, следует, что многочлены ошибок и соответствующие им синдромные многочлены удовлетворяют равенству Rs <„> [хе(х) (m<>d х" ‒ 1)] = Rs <,> [хз (х)]. Если е (х) ‒ исправляемая конфигурация ошибок, то многочлен е' (х) = хе (х) (то4 х" 1) получается циклическим сдвигом многочлена е (х). Следовательно, е' (х) также является исправляемой конфигурацией ошибки, и его синдром дается равенством s' (х) = Rs <,>[е' (х) ] =- Rs <,> [хз (х) ]. Это соотношение показывает, как вычислять синдром произволь- ного циклического сдвига конфигурации ошибки, синдром кото- рой известен. Такое вычисление можно реализовать на простой цепи с регистром сдвига, что, как правило, намного проще, чем просмотр таблицы синдромов. Предположим, что s (х) и е (х) представляют собой вычислен- ные синдром и ошибку соответственно и что надо проверить, является ли s (x) синдромом для многочлена ошибок е (х). Про- верим, выполняется ли равенство s (х) = s (х); если да, то мы знаем, что е (х) = е (х). Если нет, то вычислим Rs<,> [xs (х)] н сравним его с 3 (х). Если они совпадают, то e(x) = хе (х) (то4 х" ‒ 1) 
6.4. дEKogEp мкггит1 А 167 Обрал[ная связь цепи деления на g(z) Принятое Рис. 6.18.,декодер Меггитта. представляет собой циклический сдвиг многочлена е (х), так что мы знаем е (х). Продолжая таким образом, вычислим Rz <,> [хЯд <,> [xs (х) ]1; в случае совпадения этого многочлена с я(х), заключаем, что е (х) равен х'е (х) (то4 х" 1), и т. д. Составим таблицы из таких конфигураций ошибок, чтобы каж- дая исправляемая конфигурация была циклическим сдвигом од- ной (или нескольких) из них. Тогда в декодере необходимо запом- нить только эту таблицу и таблицу соответствующих синдромных многочленов. Истинный синдром s (х) сравнивается со всеми синд- ромами, которые содержатся в таблице. Затем вычисляется Rs(,)[xs (х)] и тоже сравнивается со всеми содержащимися в таб- лице синдромами. Повторая этот процесс а раз, находим лю- бую исправляемую кодом ошибку. Обычно при использовании в декодере цепей с регистром сдвига в качестве табличных конфигураций ошибок выбираются такие, у которых ненулевые коэффициенты расположены в конце реги- стра сдвига. Это позволяет уменьшить число проводов и исполь- зовать регистры, начальные разряды которых не имеют прямого доступа. Такая реализаци я показана на рис. 6.18. В качестве табличных выбираются все синдромы, соответству- ющие исправляемым ошибкам с ненулевыми старшими компонен- тами. В начале работы декодера содержимое всех разрядов ре- гистра равно нулю. Сначала в декодере срабатывает цепь деления на g (х). В результате такой операции в регистре цепи деления записан синдром s (х), а буферный регистр содержит принятое слово. Вычисленный синдром сравнивается со всеми табличными синдромами, и в случае совпадения хранящийся в старшем раз- ряде буфера символ исправляется. После этого синдромный ре- гистр и буферный регистр один раз циклически сдвигаются. Это 
168 ГЛ. 6. СХЕМНАЯ РЕАЛИЗАЦИЯ реализует умножение синдрома на х и деление результата на g (х). Содержимое разрядов синдромного регистра теперь равно многочлену Rs <,> [xs (х) ], представляющему собой синдром ошиб- ки хе (х) (то4 х" 1}. Если этот новый синдром совпадает с од- ним из табличных синдромов, то в предыдущей по старшинству позиции произошла ошибка, которая теперь появится в последнем разряде буфера. Этот бит исправляется, и производится новый циклический сдвиг на одну позицию; синдромный регистр опять готов к проверке ошибки в позиции, отстоящей от старшей на два такта. После повторения этого процесса и раз все биты будут исправлены. Показанная на рис. 6.18 обратная связь, предназначенная для исправления записанных в буфере символов, не является необходимой; вычисленные символы можно передавать непосред- ственно пользователю. Мы показали эту связь на схеме для того, чтобы проиллюстрировать идею о том, что только после последнего сдвига в буфере будет записано правильное кодовое слово, а также для того, чтобы иметь отправную точку для некоторых реализа- ций декодера, которые будут описаны ниже. Приложения теоремы Меггитта лучше всего пояснить на кон- кретных примерах. Рассмотрим (15, 11}-код Хэмминга, задавае- мый порождающим многочленом g (х) = х4 + х + 1. Так как этот код исправляет только одну ошибку, то имеется только одна конфигурация ошибки с единицей в старшем разряде, а именно е (х) =- х", и соответствующий ей синдром равен s (х) = х' + 1. декодер Меггитта для этого кода изображен на рис. 6.19. Вычис- ленный по принятому слову синдром будет содержаться в синдром- ном регистре после 15 сдвигов. Из них первые 4 сдвига нужны толь- ко для того, чтобы ввести в регистр данные, без которых нельзя начать деление. Если синдром равен (1001), то е (х) = х" и соот- ветствующий бит исправляется. Если после одного сдвига синд- ром равен (1001), то е (х) = х" и соответствующий бит исправля- ется. Таким же способом проверяется необходимость исправле- ния каждого из битов. После 15 таких сдвигов процесс исправ- Рис. 6.! 9..~кодер Л1еггитта для (15, 11)-кода Хэмминга. 
6.4. декс~деР )~еГГиттА 1 69 Лринягпое слово аi~ua Рнс. 6.20. Другой декодер Меггнтта. ления закончен. Следовательно, полный процесс работы декодера занимает 30 тактов. Обычно декодер Меггитта' используют в несколько иной форме, показанной на рис. 6.20. Этот вариант декодера отлича- ется от предыдущих наличием линии, помеченной словами «моди- фикация синдрома». Хотя, как следует из предыдущего описания, эта линия не является необходимой для работы декодера, она необходима для тех реализаций декодера, которые будут описаны ниже. Сейчас операцию модификации синдрома следует рассматри- вать как своего рода попытку сделать декодер более изящным без существенного его усложнения. Чтобы понять использование модификации синдрома, предпо- ложим, что при наличии ошибки мы хотим ее исправить и полно- стью ликвидировать ее влияние так, как будто ее не было вообще. Согласно теореме Меггитта, необходимо позаботиться только о слу- чае, когда ошибка произошла в старшем символе. После этого остальные компоненты будут учтены автоматически. Пусть е' (х} = е, 1х" ‒ '. Тогда вклад в синдром от этой един- ственной компоненты вектора ошибок равен s'(x) = Rs~„> [eÄ ~x" ‒ ']. После исправления e„> этот вклад надо вычесть из истинного синдрома, заменив содержимое s (x) синдромного регистра на s (х) ‒ s' (х). Но многочлен s' (х} может иметь много ненулевых коэффициентов, так что такое вычитание затрагивает многие ячейки синдромного регистра и создает дополнительные неудоб- 
170 Гл. 6. схемHAЯ РБАлM3AциЯ ства. Чтобы избежать этих неудобств, изменим определение синдрома, задав его равенством s (х) = Rs ~„~ [х" ‒ ~v (х) ]. Зто определение отличается от первоначального, но не хуже его, и с ним можно работать точно так же, как и с первоначальным. Его преимущество состоит в том, что s («) R [«л-Йе «л ‒ 1] = R [R д [е «2л ‒ "‒ 1]] так как степень многочлена g (х) равна п k. Но теперь отличен от нуля только один коэффициент многочлена s' (х), а именно старший. Соответственно после исправления e„> для замены s (х) на s (х) ‒ s' (х) достаточно только вычесть e„, из старшего коэф- фициента синдрома. При этом полностью ликвидируется вклад, вносимый в синдром исправляемым символом. Предварительное умножение е (х) на х" ‒" выполняется сдви- гом v (х) в новую позицию синдромного регистра. На рис. 6.21 изображен модифицированный декодер Меггитта для (15, 11)-кода Хэмминга, декодер которого уже рассматри- вался выше (рис. 6.19). Принятый многочлен v (х) умножается на х' и делится íà g (х), так что синдром равен s (х} = R,„, [х'е (х)] = R,<,„„, ,[R„ï, [х'е (х)]]. Преимущество такой модификации состоит в том, что соответству- ющий ошибке е (х) = х" синдром равен я (х) = Rx~yxyl [х18] = Rx +ay> [«'] = «', а это дает возможность исправления с помощью сигнала обратной связи. хсзр(х) cr(x) Рис. 6.21. Другой декодер Меггитта для (15, 11)-кода Хэмминга. 
8.4. ДекОДИР меГГиттА 1 71 Следующим примером является декодер для (15, 7)-кода ВЧХ, исправляющего две ошибки (этот код будет определен в гл. 7). Сейчас мы только укажем без доказательства, что этот код цикличен, порождается многочленом g (х) = х' + х' + х'+ + х4 + 1 и позволяет исправлять две ошибки. Среди них содер- жатся 15 конфигураций ошибок, содержащих ненулевой старший разряд: одна одиночная ошибка и 14 двойных. Принятое слово умножается на х' и делится íà g (х). Следо- вательно, если е (х) = х", то S (x) = Я~ 1,1 [х' «14] = х'. Аналогично если е (х) = х'4 + х", то Р [,8 («Ь4 ~«~З)) «7+ «6 Продолжая таким образом, можно вычислить все подлежащие за- поминанию синдромы. Для нахождения ошибок декодер сравни- вает вычисленный по принятому слову синдром со всеми этими 15 синдромами, Такой декодер Меггитта показан на рис. 6.22. Отметим, что для нахождения ошибки в старшем разряде содер- жимое 8-битового синдромного регистра сравнивается с каждым из 15 табличных 8-битовых синдромов. Такое сравнение произ- водится после каждого из 15 сдвигов, ибо каждая позиция в свою очередь проверяется на наличие ошибки в соответствующем бите. Всего декодирование занимает 30 тактов: 15 для вычисления синдрома и 15 для локализации ошибки. Можно упростить этот декодер и далее и получить схему, изоб- раженную на рис. 6.23. Заметим, что при циклическом сдвиге при- нятого слова многие из 15 исправляемых конфигураций ошибок появляются дважды. Например, вектор (000000100000001) после восьми циклических сдвигов переходит в вектор (000000010000001), где черта под единицей использвана в качестве маркера сдвигае- мой единицы. Каждой из этих ошибок соответствует свой таб- личный синдром. Если удалить один из этих синдромов, то при соответствующем циклическом сдвиге ошибка все-таки будет найдена. Следовательно, для каждой такой пары достаточно запоминать только один синдром. В данном случае имеется только восемь синдромов, которые нужно запомнить. На рис. 6.22 они выписаны в первом столбце таблицы синдромов. Однако в тот момент, когда первая ошибка достигнет конца буфера, она может быть не исправлена, хотя в течение 15 сдвигов будет исправлена по меньшей мере одна ошибка. Для исправления обеих позиций не- обходимо произвести два полных цикла сдвигов, так что декоди- рование займет 45 тактов. Теперь необходимость модернизации синдрома очевидна, так как в противном случае ошибка не будет 
) yg М. К СйамНАМ ИАЛиЗАЦИМ p~yf>j Ь(х) Я ацця ма С(Х) Рис. 6.22. Декодер Яеггитта для ()5, 7)-кода БЧХ. С(Х) Рис. 6.23. Другой декодер Меггитта для (15, 7)-кода ВЧХ. распознана и при втором ее поступлении в конец буферного ре- гистра. Показанный на рис. 6.23 декодер для (15, 7)-кода БЧХ почти идентичен декодеру с вылавливанием ошибок, который будет описан в следующем параграфе. 
6М. ЬЬ1ЛАВЛИВАЯИЙ ОЙЗИБОК j 73 В.S. ВЫЛАВЛИВАНИЕ ОШИБОК Описанный в конце предыдущего параграфа вариант декодера содержит таблицу синдромов, которая, как сразу видно, содержит только слова веса 1 и 2. На самом деле эти сйндромы очень по- хожи на исправляемые конфигурации ошибок, левая часть кото- рых содержит только нулевые символы и опущена. Такой декодер известен под названием декодера с вьиаелиеанием ошибок. Декодер с вылавливанием ошибок является модификацией декодера Мег- гитта, применимой к некоторым циклическим кодам. Предположим, что все произошедшие ошибки расположены близко друг от друга. Тогда соответствующим образом сдвинутый синдром будет точной копией ошибки. Определим длину конфи- гурации ошибок как наименьшее число последовательных разря- дов регистра, которые надо просмотреть для того, чтобы при не- котором циклическом сдвиге конфигурации ошибок все ошибочные позиции оказались внутри этих разрядов. Предположим, что наи- большая длина исправляемой конфигурации не превосходит длины синдрома. Тогда при некотором циклическом сдвиге кон- фигурации ошибок синдром будет равен ошибке. Для таких кодов синдром можно циклически сдвигать до тех пор, пока не получится исправляемая конфигурация. Для завершения исправления оши- бок надо теперь вычесть содержимое синдрома из соответствую- щего циклического сдвига принятого вектора. На рис. 6.24 приведен вылавливающий ошибки декодер для (15, 7)-кода БЧХ. Для полного исправления двойных ошибок тре- буется 45 тактов работы декодера: 15 для генерирования синдрома, 15 для исправления первой ошибочной позиции и 15 для исправле- ния второй ошибочной позиции. На рис. 6.25 представлен конвей- ерный вариант декодера, в котором использованы три генератора синдромов. Он позволяет декодировать непрерывно поступающие 15-битовые блоки с тактовой линейной скоростью. На рис. 6.26 расписаны 45 тактов работы декодера с вылавливанием ошибок для типичной конфигурации ошибок (ошибки вылавливаются на так- тах номер 28 и 33). В качестве второго примера декодера с вылавливанием ошибок рассмотрим декодер для (7, 3)-кода Рида Соломона над GF (8) с порождающим многочленом g (х) = х' + (z + 1) х' + х' + zx + (z + 1), где элементы поля записаны в виде многочленов от z. В другом виде порождающий многочлен записывается как g (х) = х' + а'х' + х' + ах + а', где элементы поля заданы в виде степеней примитивного элемента а = z. В гл. 7, где рассматриваются коды Рида ‒ Соломона, 
1ф4 М. 8. схемнАЯ РИАлизАЦиЯ g80(g) И(Х) Замь! кае вся на такаах оа 16 00 30 Рис. 6.24. Декодер с вылавливанием ошибок для (15, 7)-кода ВЧХ. х~и(х) Рис. 6.25. Конвейерный вариант декодера с вылавливаиием ошибок для (15, 7)- кода БЧХ. 
8.6. ВЫЛАВЛИВАНИЕ ОШИБОК $ '75 l(X)=X + 1 д(с)= х8+ хч+ хь+ х4+ с'(х) = „14+ „1з + х1-'+ х'о + хн+ х7 + х~+ е(х) =.х1' + х U(x) =,F14+ rl-'+ х1-'+ х1[+ 'О+ xв+. +. + r+! ! 10010011011111 СреОниа регцсар Humvuu регистр Сцнвромн~ ö тцкп1 регате ар T0KN OOIOOOOI 000!0000 00001000 Рис. 6.26. Пример вылавливания ошибок для (15, 7)-кода БЧХ. будет показано, что этот код исправляет две ошибки. Сейчас мы примем это утверждение без доказательства. Исправляемые конфигурации ошибок содержат не более двух ненулевых символов и задаются многочленом степени не выше 6. Их всегда можно циклически сдвинуть в многочлен степени не вь|ше 3. Так как степень синдромного многочлена не превосхо- дит 3, то можно применить декодирование с вылавливанием оши- бок. Такой декодер показан на рис. 6.27. В двоичной реализации восьмеричные разряды регистра сдвига представляют собой парал- лельные регистры с тремя двоичными разрядами. Все линии пе- 0 0000 ! 1000 0100 3 0010 4 1001 5 !IOO 6 0110 7 0011 8 0001 9 0000 10 0000 Il 1000 12 0100 !3 ' 0010 14 100! 15 1 100 0000 10!! 0101 0010 1010 0110 0011 0001 1000 1100 O l 10 1000 0100 0010 1010 O l I O 16 17 IS 19 20 21 22 23 24 25 26 27 28 29 30 О! I 000 I 1 101IIOIÎ OIOI!IOI 10100101 I O I 1001 1 I I 00 I I I 1 1 111000 0 1 1 ! 1 1 00 00111110 0001 I I I 1 10000!00 01000010 31 00000 I 0() 32 00000010 33 34 00000000 35 36 37 волько нцло 39 40 41 42 43 44 45 
176 Гл. 6. схемнАЯ РеАлизАЦиЯ редачи данных в каждый момент времени передают три бита. Элементы умножения на z+ 1 (т. е. на а') и на 2 (т. е. на а) в цепи обратной связи являются просто определяемыми устрой- ствами двоичной логики с тремя входами и тремя выходами. Для исправления всех ошибок такому декодеру необходим всего 21 такт. Первые семь тактов уходят на вычисление синдрома; следу- ющие семь тактов требук~гся на исправление хотя бы одной ошибки, а иногда и обеих ошибок. Последние семь тактов уходят на ис- правление второй ошибки (если она еще не исправлена). На рис. 6.28 отдельные операции алгоритма декодирования от- слеживаются в деталях. Эго очень ценный пример, так как он демонстрирует технику вылавливания ошибок и одновременно представляет собой конкретный пример взаимосвязи абстрактных понятий теории полей Галуа и практического построения логиче- ских цепей, использующих регистры сдвига. Содержимое синдромного и информационного регистров для каждого сдвига выписаны в таблице. После семи сдвигов синдром- ный регистр содержит синдром. Начиная с восьмого сдвига деко- дер исправляет ошибки, если они образуют вылавливаемую кон- Вход (7 восьмеричных символов) 3 Всего 2I аака Рис. 6.27. Вылавливание ошибок для (7, 3)-кода Ридд ‒ Соломонр, 
6 5. ВылАВл иВА H и е Оши БОк 1 77 д(х) = х + й х + х + Cx w + й ) = й4х6+ й4х4+ й3х3+ йбх+ йб е(х) = й4х4 + й3 о(х) = й4хб+ й'х'+ йбх + й4 й1 r й~=г 2 2 z+1 2 г +z+ „2 й Ин~роомаццонный ремсвр СанЬрОмныц реюucmp б 60 30 (x'(x60 й'О (6 60 3 йбй60 6 б 6 4 О й4 40 4 3 40 0 3 4 (x60 й3 йбйбО 15 1Ь !7 18 19 20 21 Рис. 6.28. Пример вылавливаиия ошнбок. фигурацию. К ним принадлежат ошибки, содержащие не более двух ненулевых символов, один из которых расположен в крайней правой позиции. Если произошло не более двух ошибок, то это случится хотя бы однажды в течение следующих семи тактов ра- боты (в примере это случилось на 13-м такте). Следовательно, ошибка выловлена. Подчеркнем, что символы синдрома упоря- дочены в порядке возрастания слева направо. В момент вылавли- вания ошибки в синдромном регистре записан 4-символьный сег- мент (е4, е„е, е,) сдвинутого многочлена ошибки. Поскольку 0 ! 2 3 4 5 6 7 8 9 10 11 12 !3 14 оооо й. й41 „3 3 4 б йййй 3й4 3 6 й'й й'й» 1х40 О (x6 й'О й' ' СОндром ггб~ 3 5 1 41 30 4 б ,г„,ей Выловленная й 0 О й ~pygQg, Ой00 быловленная 0 О й40 0 0 О й' Ошибк,д. 0000 0000 0000 0000 0000 0000000 ,4000000 ойооооо PP~'0000 30 0 й40 0 р 0 300<400 (x6P (x3P P й40 й4йбО (x30 0 й4 4 4 60 30 0 0 4 4 60 й30 0 р й4й4йбО 30 р й4й4й60 m30 0 (x4(x4(xü й'О й'О О (x4à4 6 60 30 0 4 
~7Я Гл. 8. схемнАЯ РеАлизАЦиЯ Вылавливание пакета ошибок длины не более 4 сводится к про- верке равенства нулю четырех самых левых символов синдрома. Схему, однако, можно немного улучшить. Заметим, что разряды с четными номерами и разряды с нечетными номерами не взаимо- действуют. Поэтому цепь вычисления синдрома можно рассматри- вать как две независимые цепи вычисления синдромов для каж- 6вод i( бивов, содержащих пакегп ошибок Все~о 28 ваквов б~з оши~кн Рис. 6.29. Декодер с вылавливанием ошноок для кода-перемежения, исправ- ляющего пакеты ошнбок, ошибка поймана, она исправляется в информационном регистре, а в синдромном регистре е, устанавливается равным нулю (или вычитается сам из себя). После 14 тактов синдромный регистр содержит синдром оставшейся конфигурации ошибки. Процесс повторяется в течение последних семи тактов, после чего исправ- ление ошибок закончено полностью. Если в начале синдром оказался отличным от нуля, а в течение вторых семи тактов работы декодера не была поймана ни одна ошибка, то в принятом слове произошло более двух ошибок (но обратное утверждение неверно). Это позволяет легко включить в декодер дополнительную логическую цепь для обнаружения неисправляемых конфигураций ошибок. В качестве последнего примера этого параграфа рассмотрим декодер с вылавливанием ошибок для кодов, исправляющих па- кеты ошибок. В отличие от ситуации для кодов, исправляющих независимые ошибки, исправляющие пакеты ошибок коды всегда допускают декодирование с вылавливанием ошибок. Мы опишем декодер для (14, 6)-кода, исправляющего пакеты ошибок длины 4. Зтот код получается перемежением двух копий (7, 3)-кода из табл. 5.1. Порождающий многочлен кода-перемежения равен g(х) =- х'+х6+х' -+-1. 
8.8. УКОРОЧЕННЫЕ ЦИКЛИЧЕСКИЕ КОДЫ 1 fg ДОГО из ДВух ПереМеЖаемыХ кодоВ, но с ПосЛедующиМ пе~)емеже- иием позиций синдромов. Такая модификация декодера с вылазли* ванием ошибок показана на рис. 6.29. Зтот декодер позволяет ис. правлять все пакеты ошибок длины 4, а также некоторые допол- нительные конфигурации ошибок. Исправляется любая конфи- гурация, состоящая из пакета длины 2 в позициях с нечетными номерами и пакета длины 2 в позициях с четными номерами. 6.6. УКОРОЧЕННЫЕ ЦИКЛИЧЕСКИЕ КОДЫ Любой систематический циклический код можно укоротить, а именно от (n, k)-кода можно перейти к (n ‒ b, k ‒ Ь)-коду выбрасыванием Ь информационных позиций в каждом кодовом слове. Будем полагать, что b меньше k и что выбрасываются b старших разрядов. Последнее объясняется тем, что выбрасывае- мые сймволы при укороченйи поЛагаются равными нулю и поэ-. тому не передаются, но при декодировании декодер их восстанав= ливает, так что декодирование осуществляется на полной длине кода. Если минимальное расстояние исходного кода равно d~~, то минимальное расстояние укороченного кода не меньше д*. Аналогично если исходный код позволяет исправлять пакеты оши- бок длины 3, то укороченнъ|й код позволяет исправлять пакеты длины t (или больше). С помощью укорочения и перемежения из кодов табл. 5.1 можно построить большой набор хороших ко- дов, исправляющих пакеты ошибок. Укороченный циклический код уже не является циклическим, так как многочлен Я„„, (хс (х) J в общем случае уже не является кодовым словом для произвольного кодового слова с (х). Однако укороченный циклический код все-таки обладает алгебраической структурой подмножества соответствующего кольца. В то время как циклический код является идеалом кольца многочленов по модулю х" ‒ 1, укороченный циклический код является идеа- лом кольца многочленов по модулю некоторого многочлена f (х) степени и' = и ‒ b. Точный результат дается следующей теоремой. Теорема 6.6.1. Если Ж ‒ укороченный циклический код, mo существует многочлен f (х), такой, что если с (х) ‒ кодовое слово, а а (х) ироиэвольный многочлен, то Р~~» (а (х) с (x)] также является кодовым словом. Доказательство. Пусть g (х) ‒ порождающий многочлен уко- рачиваемого циклического кода длины и, и пусть и' длина уко- роченного циклического кода. Тогда, согласно алгоритму деления, х"' = g (х) Q (х) + s (х). Так как и' = и ‒ Ь ) и k = deg g (х), то степень остатка s (х) меньше и'. Пусть f (х) = х"' s (х); тогда степень много- 
1QQ ГЛ. Е. СХЕМНАЯ РЕАЛИЗАЦИЯ члена f (х} равна n' н g (х) делит f (х). Если е (х) «рвтен ф(х} и а (х) ‒ произвольный многочлен, то, согласно алгоритму де- ления, имеем и (x) с (х) = f (х) Q (х) + r (х). Так как g (х} делит и с (x), и f (х), то r (х) кратен g (х); таким образом, в кольце GF(q) [xll(f (х)) многочлен а (х) с (х) = r (х) кратен многочлену л'(х), что и требовалось доказать. CI Укороченный циклический код длины и' = и ‒ b можно де- кодировать с помощью декодера Меггитта, сконструированного для исходного (n, Й)-кода. Отсчет времени в таком декодере осно- ван на группах по и тактов, хотя входное кодовое слово содержит и' символов. Это временное рассогласование иногда удается устра- нить конструкцией устройства, так что оно становится несущест- венным; в других случаях целесообразнее сбалансировать время. Мы рассмотрим такую модификацию принятого слова, которая поз- воляет перестроить работу декодера Меггитта на цикл из и' тактов и соответственно ускорить декодирование укороченных цикли- ческих кодов. Переопределим синдром так, чтобы можно было обойти такто- вое время работы регистра, соответствующее выбрасываемым символам. Вместо вычисления остатка от деления многочлена x" ~ v (х) на g (х} определим синдром при Ь выбрасываемых сим- волах равенством s (х) = Rs ~„~ [х" ‒ '+'v (х)]. Чтобы обосновать такой выбор, предположим, что старший символ укороченного циклического кода ошибочен, т. е, что e(x) = е„, <x~ë ‒ bj ‒ <. Тогда я (х) = К~ ~,„> [е„1х'" ‒ a ‒ '] = = Rs <„> [R,ë ~ [ел ‒ 1х'" ~ ~]] = ел ‒ Ф" Следовательно, единственным ненулевым коэффициентом много. члена s (х) является старший коэффициент. Пусть а (х} = Rs ~„, [х" ‒ '+b] Тогда, согласно правилам вычислений 110 модулю, многочлен s (х) можно записать в виде s (x) = Rs <„, [a (x) v (x) ). Все, что нужно сделать, сводится к предварительному (перед де- лением на g (х)) умножению v (х) на фиксированный многочлен а (х). Такое умножение можно реализовать с помощью устрой- 
ства деления на g (х) путем выбора точки ввода в (х) в цепь деле ния. Покажем на примерах, как это делается. Сначала приведем два примера декодеров для циклическиМ кодов. Первым рассмотрим укороченный циклический код, ис. праВляющий пакеты ошибок. Предположим, что в некотором при- ложении потребовалось укоротить (511, 499)-код из табл. 5.1 до (272, 260)-кода. Этот код исправляет все пакеты ошибок длины не более 4. В данном случае g (х) = х" ~- х' -(- х' ~- х' -(- 1, хп ~+ь = х251 и необходимо вычислить а (х) = Я~ ~„> 1х2'1l. Одним из способов этого вычисления является представление х"' в виде X251 = (~12) 16 (X12)4 (Х11) с тем, чтобы воспользоваться равенством х" = х' + х' + х" + 1. Повторяя возведение в квадрат величины х" и проводя редукцию по модулю g (х), быстро вычисляем (х")' и (х" )", а, следова- тельно, и к"', так что а(х) =х" -(-х'+х'+x2+х'+1, 2 бимов верхнего ереарц- нижнии верхни11 ' полня- ми Тактовый вывод повода исправлен- ных Т72- оип)овых блоков Рис. 6.30. декодер с вылавливанием ошибок для (272, 260)-кода, исправля- ющего пакеты ошибок. 
182 М. в. с1емНьЯ ЬВАлизАцМ g(s) =х~+ х~+3х+ t а~х~ =хз+Зх'+2 ВхоЬ 64-рспрядный регцсвр сдвига над & (4) Bcez,о 128 тактов Рис. 6.31. Декодер Меггятта для (64, 60)-кода Хэмминга над бР (4). и, наконец, s (х) = ‒ R»~ÿу»в~»ь~»з+[ [(х -[- х + х . ~- х' + х" .] 1) 0 (х)]. а(х) =- R»4+»3+3»+f [х"] = х'+ Зх'+ 2, и модифицированный синдром задается равенством s(x) = R;+»>+3»+f [(х' ]- Çx' '; 2) u(x)]. Показанное на рис. 6.31 устройство является декодером Меггитта для этого укороченного кода, время декодирования для которого равно 128 тактам. Для вычисления модифицированного синдрома Вычисление такого синдрома можно реализовать на одной цепи деления на g (х), если при каждой итерации входящий коэффи- циент многочлена о (х) подавать в соответствующую точку теку- щего остатка. Декодер Меггитта для рассматриваемого укорочен- ного кода изображен на рис. 6.30. Этот декодер является кон- вейерным, так что он может обрабатывать непрерывный поток входящих битов. В качестве второго примера рассмотрим (64, 60)-код над GF (4), являющийся укорочением (85, 81)-кода Хэмминга. Как уже обсуждалось в $ 5.5, (85, 81)-код Хэмминга является цикли- ческим с порождающим многочленом g (х) =- х' + х' + 3x + 1. В данном случае х" ‒ ~+~ = х~'. Выполняя деление «уголком», получаем 
6.7. декодег мегГиттА для кодА Голея 183 декодер умножает принятое слово на х' + Зх' + 2 и затем делит на х4 + хз + Зх + 1. Полное время декодирования, равное 128 тактам, состоит из 64 тактов, необходимых для вычисления моди- фицированного синдрома, и 64 тактов, необходимых для исправ- ления ошибок. При желании можно сделать декодер конвейерным или последовательно соединить два декодера так, чтобы декодер работал одновременно с вводом данных. 6.7. ДЕКОДЕР МЕГГИТТА ДЛЯ КОДА ГОЛЕЯ В тех случаях, когда данный код не позволяет непосредственно использовать декодер с вылавливанием ошибок, иногда удается так добавить несколько дополнительных цепей, чтобы аннулиро- вать влияние некоторых мешающих применению декодера кон- фигураций ошибок. В общем случае для получения удовлетвори- тельного решения требуется некоторая изобретательность. Мы опишем такой декодер для (23, 12)-кода Голея. Ялина вектора ошибок равна 23, а вес не превосходит 3. Ялина синдромного регистра равна 11. Если данная конфигура- ция ошибок не вылавливается, то она не может быть циклически сдвинута так, чтобы все три ошибки появились в 11 младших раз- рядах. Можно убедиться (возможно, после нескольких прикидок}, что в этом случае по одну сторону от одной из трех ошибочных по- зиций стоит по меньшей мере пять, а по другую сторону по меньшей мере шесть нулей. Следовательно, каждая исправляемая конфигурация ошибок может быть с помощью циклических сдви гов приведена к одному из трех следующих видов (позиции ну- меруются числами от О до 22): 1} все ошибки (не более трех) расположены в 11 старших разрядах; 2) одна ошибка занимает пятую позицию, а остальные распо- ложены в 11 старших разрядах; 3} одна ошибка занимает шестую позицию, а остальные рас- положены в 11 старших разрядах. Таким образом, в декодере надо заранее вычислить величины яь (х) = Rs«> [x" ‒ "х') и за (х) = Rs<» [x" ‒ ~ха}. Тогда ошибка вылавливается, если вес s (х) не превышает 3 или если вес s (х) ‒ s, (х} либо s (х) ‒ s, (х) не превышает 2. В декодере мо- жно либо исправлять все три ошибки, если эти условия выпол- нены, либо исправлять только две ошибки в младших 11 битах, дожидаясь удаления из регистра третьего ошибочного бита. Разделив х и х" на порождающий многочлен g (х) = ‒ х" + х'о + х~ + х~ + x4 +- x2 (- 1, 
1 84 ГЛ. 6. СХЕМНАЯ РЕАЛИЗАЦИЯ имеем s, ,(х) = ха + ха 1- ха +- ха + ха + х, s, ,(х) = х|а -1- ха -1- хт -1- ха +- ха ~- ха. Следовательно, если ошибка содержится в пятой или шестой по- зициях, то синдром соответственно равен (01100110110) или (00110011011). Наличие двух дополнительных ошибок в 11 стар. ших разрядах приводит к тому, что в соответствующих позициях два из этих битов заменякгтся на противоположные. Декодер отслеживает синдром, отличающийся от нулевого синдрома не более чем в трех позициях, а также синдром, отлича- ющийся от выписанных двух синдромов не более чем в двух по- зициях. ЗАДАЧ И 6.1.а. Построить поле GF (8) с помощью примитивного многочлена р(х) = = хз+ х+ 1 (а обозначает примитивный элемент а = х). б. Для заданного произвольного многочлена g (х) над GF (2) построить простое логическое устройство, вычисляющее g (аз). в. Сконструировать устройство, реализующее умножение двух произ- вольных элементов поля GF (8). г. Сконструировать устройство, реализующее умножение произволь- ного элемента поля GF (8) на скаляр а4. д. Указать те элементы поля GF (8), квадраты которых также принад- лежат этому полю; затабулировать такие элементы. е. Сконструировать устройство, вычисляющее квадратный корень из тех элементов поля GF (8), для которых он существует, 6.2. Пусть поле GF (16) задано многочленом х4+ х+ 1. Определим два произвольных элемента этого поля: ‒ pQ+ + pQ+ + ~1х + ~0а "~ ‒ fg++ ~ях'+ '~~х+ "~Ох где коэффициенты принадлежат полю GF (2). Построить параллельное логиче- ское устройство, выполняющее умножение двух произвольных элементов из GF (16) ° 2т ‒ 1 ~~2 6.3. Исходя иа равенств P 1= (P ~у и 2 ‒ 1 = ~'~е ~2~, и ис- пользуя устройство возведения в квадрат и умножитель, сконструировать ите- ративное логическое устройство вычисления элемента P-1 по заданному P эа т тактов работы. 6.4. Циклический (15, 9, 5)-код над GF (4) порождается многочленом g (х) = хе -+- Зхв + х4+ хз+ 2х~+ 2х+ 1. а. Построить кодирующее устройство для этого кода, основанное на регистре сдвига. б. Построить декодер Меггитта для этого кода. 6.5. Порождаемый многочленом g (х) = х4+ хз+ х~+ 1 двоичный цик- лический код позволяет исправлять пакеты ошибок длины 2. а. Чему равны длина и ско~)ость этого кода? 
ЗАдАчй ) ® б. Найти минимальное расстояние этого кода. в. Сконструировать систематический кодер для этого кода. г. Сконструировать декодер с вылавливанием ошибок, позволяющий исправлять все пакеты длины 2. 6.6. Исправляющий три ошибки (23, 12)-код является циклическим с порож- дающим многочленом g (х) = х'~+ х'o+ х~+ х~ + х4+ х~+ ) или g (x) = xll + хэ+ х~+ x~ + xl' + x+ I. а. Найти проверочный многочлен Ь (х) этого кода. б. Сконструировать кодер, использующий регистр сдвига. в. Можно ли методом вылавливания ошибок исправлять все тройные ошибки? Почему? 6.7. Используя регистры сдвига с 4-битовыми регистрами, сконструировать кодер и декодер для рассмотренного в $ 3.4 (17, 15)-кода Хэмминга над полем из 16 элементов. Показать все логические цепи. 6.8. В процессе считывания и записи в запоминающем устройстве ЭВМ, состоящем из 256 8-битовых слов, возможны искажеиия одного 8-битового слова. Для борьбы с этим явлением решено воспользоваться укороченным кодом Хэм- минга над GF P~), исправляющим одно искаженное слово. Описать (256, 252)-код и сконструировать кодер и декодер с вылавливанием ошибки. (Заметим, что задачей схемы является отыскание и исправление в па- мяти одного искаженного слова.) 6.9. Сконструировать кодер и декодер с вылавливанием ошибок для двоич- ного (19537, 19408)-кода Файра с порождающим многочленом g (х) = (x~9 ‒ 1) X X р (х), где р (х) ‒ примитивный многочлен степени '10. 6.10. Задаваемый одним корнем в точке и» поля 6Р (256) двоичный цикли- ческий код длины 17 представляет собой (17, 9, 5)-код, принадлежащий к классу квадратично-вычетных кодов. Найти порождающий многочлен кода и скон- струировать модифицированный декодер с вылавливанием ошибок, позволяющий исправлять все двойные ошибки. Сконструировать также декодер, основанный на просмотре таблицы синдромов. Сравнить сложность и скорость этих двух декодеров. 6.11. (7, 5)-код Рида ‒ Соломона над 6Р (8) порождается многочленом g (х) = х~ + а4х+ аз. Построить циклический код, исправляющий пакеты ошибок длины 2 над GF (8), выполняя следующую последовательность шагов. а. Выписать порождающий многочлен исправляющего восьмеричные пакеты длины 2 кода, получающегося перемежением двух одинаковых исходных кодов Рида ‒ Соломона. б. Чему равны длина и скорость так построенного кода? в. Составить для этого кода схему кодера с использованием регистра сдвига г. Сконструировать декодер с вылавливанием ошибок, позволяющий исправлять все пакеты длины 2. 6.12. Построить (1072, 1024)-код для исправления пакетов ошибок длины 16 путем укорочения и перемежения подходящего кода из табл. 5.1. Построить (1080, 1024)-код для исправления пакетов длины 20 путем укорочения и пере- межения кода Файра. 6.13. Исправляющий две ошибки двоичный (31, 21)-код порождается много- членом g (х) х10 + х9 + х8 + дб + х& + х8 + 1 а. Показать, что декодер с вылавливанием ошибок не позволяет исправлять всех ошибок в пределах конструктивного расстояния. 
f 86 l Л ° 6. СЪЕМНАЯ РЕАЛИЗАЦИЯ б. Показать, что простая модификация декодера с вылавливанием ошибок позволяет организовать декодирование в пределах конструктивного расстояния. в. Построить другую конструкцию декодера с вылавливанием оши- бок, позволяющего исправлять все двойные ошибки, используя вместо цикли- ческого сдвига подстановку и (x) ~ è (х2) (mod х" ‒ 1). ЗАМЕЧАН ИЯ Многие идеи данной главы уже ясно просматриваются как идеи теории д»скрет- ных фильтров, но с заменой поля вещественных или комплексных чисел на поле Галуа. Это смутно ощущалось еще в самом начале и становилось все болес оче- видным по мере развития предмета. Содержащие регистры сдвига устройства были сразу использованы большинством исследователей и вошли в литературу без всяких фанфар. Использование регистров сдвига в кодерах и де~одерах можно найти в работах Питерсона [1960] и Ченя [1964]. В виде учебного ма- териала эти идеи появились уже в книге Питерсона [1961]. Меггитт опубли- ковал описание устройств своих декодеров в 1960 и 1961 гг. Не совсем ясно, кому принадлежит идея декодера с вылавливанием ошибок, но обычно ее при- писывают Прейнджу. Способы моднфикации декодера с вылавливанием ошибок, позволяющие корректировать исправляемые, но не вылавливаемые ошибки, рассматривал Касами [1964]. На методах Касами основан описанный в ~ 6.7 декодер для кода Голея. Использование отличных от циклических перестановок исследовала Мак-Вильямс [1964]. Другие ранние результаты приводятся в статьях Л1»т- челла [1962] и Рудолфа и Митчелла [1964]. 
ГЛАВА 7 КОДЫ БОУЗА-ЧОУДХУРИ- ХОКВИНГЕМА Коды Боуза Чоудхури-- Хоквингема (БЧХ) представляют со- бой обширный класс кодов, способных исправлять несколько ошибок и занимающих заметное место в теории и практике коди- рования. Интерес к кодам БЧ Х определяется по меньшей мере следующими четырьмя обстоятельствами: 1) среди кодов БЧХ при небольших длинах существуют хорошие (но, как правило, не лучшие из известных) коды; 2) известны относительно простые и конструктивные методы их кодирования и декодирования (хотя если единственным критерием является простота, то предпочте- ние следует отдать другим кодам); 3) коды Рида ‒ Соломона, являющиеся широко известным подклассом недвоичных кодов, обладают определенными оптимальными свойствами и прозрачной весовой структурой; 4) полное понимание кодов БЧХ, по всей видимости, является наилучшей отправной точкой для изучения многих други х классов кодов. В этой главе мы будем говорить о кодах БЧХ во временном представлении. Это будет отражать исторически первый подход к изучению кодов БЧХ. В гл. 8 мы изложим те же самые идеи при помощи частотной интерпретации полей Галуа. Мы сначала определим исправляющие t ошибок коды БЧХ над GF (g) длины g~ ‒ 1, задавая порождающий многочлен g (х). Коды такой длины называют примитивными кодами БЧХ. Мы докажем, что эти коды исправляют t ошибок, построив в яв- ном виде алгоритм декодирования. Затем мы обобщим наши рас- суждения на случай кодов БЧХ, длина которых является дели- телем д'" ‒ 1. 7 l. ОПРЕДЕЛЕНИЕ КОДОВ БЧХ Порождающий многочлен циклического кода можно представить ~ виде g (х) = НОК (f, (х), f, (х), ..., f, (х)1, где j, (х), ..., f„(x) ‒ минимальные многочлены корней g (х). 
$ ЯЯ ГЛ. 7. КОДbl БОУЗА ‒ ЧОУДХУРХ ‒ ХОКВХНГБМА Используя этот подход, мы будем строить коды по порождающему многочлену, который будет задаваться своими корнями. Пусть с (х) кодовый многочлен, а е (х) многочлен оши- бок. Принятый многочлен с коэффициентами из GF (q) запи- шется в виде о (х) = с (х) + е (х). Мы можем вычислить значение этого многочлена на элементах из GF (д"'); в частности, нас будут интересовать значения много- члена в точках, являющихся корнями g (х), скажем в точках у„..., у,. Тогда поскольку с (у;) = О для любых у~, являющихся корнями g (х), то v (у~) = с (у~) + е (у;) = е(у~). Таким образом, v(7I) = g e VI, / = 1,..., r, i=0 для всех у~, являющихся корнями g (х). В результате мы получаем I уравнений, содержащих только величины, определяемые ошиб- ками и не зависящие от кодового слова. Если эти"уравнения можно разрешить относительно е~, то мы сможем определить многочлен ошибок. Будем выбирать у~ таким 'образом, чтобы система I урав- нений могла быть решена относительно е~ каждый раз, когда не более t неизвестных отличны от нуля. Для произвольного циклического кода с порождающим много- членом g (х), имеющим корни у„..., у„, определим компоненты синдрома В~ ‒ ‒ v (>q) у = 1, ..., r Эти элементы поля отличны от синдромного многочлена s (х), но содержат эквивалентную информацию. Мы хотим подобрать у„..., У„так, чтобы по S„..., Я„можно было найти t ошибок. Вскоре мы докажем, что если а ‒ примитивный элемент поля GF (q"'), то таким множеством является «а, а', аз, ..., а"«. Приняв это пока на веру, выберем многочлен g (х) с указанной последовательностью корней. Задав длину и = д 1 прими- тивного кода для некоторого и и число t ошибок, которое необ- ходимо исправить, поступим следующим образом: 1) выберем примитивный многочлен степени и и построим поле GF (W); 2) найдем минимальные многочлены f~(x) для а~, j = 1 ° .... 2t; 3) положим g (х) = НОК [fi (х), ..., f~ (х)1. 
7.1 ° ОПРБДБЛБНХБ КОДО~ БЧХ 1 89 В следующем параграфе, подробно описав алгоритм декоди- рования, мы докажем, что такой циклический код может исправ- лять t ошибок. Иногда построенные таким образом коды БЧХ могут исправлять более t ошибок. Поэтому величина d ‒ --2t+1 называется конструктивнмм рассагоянием кода. Истинное мини- мальное расстояние кода dÐ' может быть больше конструктивного. В табл. 7.1 задано представление поля GF (16) как расши- рение поля GF (2), построенное по примитивному многочлену р (z) = z4 + z + 1, в нее включены также минимальные мно- гочлены GF (2) для всех элементов из поля GF (16), где а = z— примитивный элемент GF (16). Заметим, что минимальные мно- гочлены для любой четной степени а всегда уже содержатся в од- ной из предыдущих строк таблицы. Это следствие теоремы 5.3,4, которая утверждает, что элементы р и р' для любых р имеют одинаковые минимальные многочлены над полем GF (2). Данный факт немного поможет нам при вычислении д (х). Порождающий многочлен для исправляющего две ошибки кода БЧХ длины 15 получается следующим образом: а (Х) = КОК [/1 (Х), fs (Х) fs (Х) f4 (Х) ) = HOK [х4+х+1. х4+х+1. х4+ -+-х' -~- х' -+- х -~- 1, х' -+- х + 1] = Таблица 7.1 Представдеыия поля QF (24) 8 двоичном B 5ecIImuuIIo~ Монцмальные виде виде многочлены B виде саепенv 8 sule многочлена Zi 3 М о ! 2 з 4 % Ь Я Я 9 l0 ~11 а11 ~13 ®1б z s l .2 .Ф +г t l „2+1 ° + ф г~+г+1 г'+ г'+ г '+ =--'+ z+ l =-'+ г'+ l э+1 0000 0001 0010 0100 1000 001! 0110 1100 1011 0101 IOI0 0111 1110 l11l !!О! 1001 0 1 1 4 8 3 1ъ ll 5 10 7 14 35 l3 9 x+ I х +x+1 х +х+1 х +х +х +х+1 Хб+ Х+ Х2+Х 01 +< ~Х 1.1 х'+х-'+ l х +х+1 Х +Х +Х +Х+1 Х2+ Х+ 1 х'+ х'+ 1 хб+х1+х1+х+ l х +х +l х +х +1 
1gP Гл. 7. кОды БОУзА ‒ чОУдхУРх ‒ хОкВхнГБмА = (х' + х + 1) (х' + х' -[- х' + х + 1) = = ‒ х8 + х7 + хе + х4 + Поскольку степень g (х) равна 8, п ‒ й =-- 8. Отсюда Й =- 7, и мы получили порождающий многочлен (15, 7)-кода БЧХ, исправляющего 2 ошибки. Отметим, что коды БЧХ строятся по заданным п и t. Значение Й не известно, пока не найден g (х). Тем же способом мы можем построить порождающий много- член для другого примитивного кода БЧХ длины 15. Пусть t = ‒ 3: а (х) = НОК [/, (х), f. (х), fa (х), /, (х), f (х), /„ (х) 1 = =- (х' -[- х + 1) (х' + х' + х" + х + 1) (х' + + х + 1) == х о +х' + х' + х' + х' + х + l. Получился порождающий многочлен для (15, 5)-кода БЧХ, ис- правляющего три ошибки. Пусть 1 =-- 4: д (х) = НОК [), (х), ~, (х), /з (х), f. (х), /„, (х), f:; (х), ft (х)~ /8 (х)) = (х + х + 1) (х + х + -[- х'-' + х + 1) (х' + х + 1) (х' + х' + 1) = = ‒ х" -+- ~" -+-х" -+- х" -+- х'о + х' + х' + + х7 -+- х~ + х~ + х4 + хз + х2 + х + Получился порождающий многочлен для (15,1)-кода БЧХ. Это простой код с повторением, исправляющий семь ошибок. Пусть t = 5, 6, 7. Каждый из этих случаев приводит к та- кому же порождающему многочлену, как и при t = 4. При t ) 7 код БЧ Х не определен, поскольку ненулевых элементов ноля GF (16) всего 15. В табл. 7.2 приведено представление поля GF (16) как расши- рение поля GF (4), построенное по примитивному многочлену р (z) --= z' + z + 2. Эта таблица содержит также минимальные многочлены над GF (4) для всех элементов из поля GF (16), где а = z ‒ - примитивный элемент. Порождающи й многочлен для исправляющего оди ноч ные ош и 6- ки кода БЧХ над GF (4) длины 15 находится следующим образом: g (х) = НОК [f, (х), f, (x) ] = = (х'+х +2) (х'+х + 3) = х' +х +1. Получился порождающий многочлен для (15, 11)-кода БЧХ над GF (4), исправляющего одиночные ошибки. Этим кодом последо- вательность 11 четверичных символов (что эквивалентно 22 би- 
Ф.1. ОПРБДЕЛБНХЕ КОДОВ БЧХ 1 91 Таблица 7.2 Йредставлеиия поля OF (42) 61 (4) Ь виде многочлена В виде CmeneIIu B чевверичнои В оесяаичном Минимальные еиде еибе многочлены 1 1 Зг+ ' =+1 1 7 2 + 3 = -(-3 2z+ 3 Зг Зг+! 2z+ 1 Зг+ 3 там) кодируется в последовательность 15 четверичиых символов. Такой код не является кодом Хэмминга. Таким же образом мы можем найти порождающие многочлены для других кодов БЧХ над GF (4) длины 15. Пусть 1 ==- 2: а (х) ‒ НОК [1, (.). f*(х), f. (õ), f4(õH = == (х'+х+2) (х'+х+3) (х'+Зх +1) = хв + Зхь + х4 + хз + 2х2 + 2х + 1 Получился порождающий многочлен для (15, 9)-кода БЧХ над GF (4), исправляющего две ошибки. 0 0 1 2 3 4 2' Ь 'X' „н ч I ll 11 М12 ~113 О 14 (Ю О1 I() 12 32 II 02 20 23 13 22 03 30 31 21 33 () I 1 6 14 1 8 II 7 I{) 3 17 13 9 15 i+ I .х +х+2 х2+.ñ+ 3 .с2+ Зх+ I .~2+ x+ 22 Х+ с- + ~х -1- 1 х2+2,( 02 ~2 +.<+ 3 <2 021+1 lL+ 3 с'+3~ 03 .с2 + З.с + 1 с ' (- 2.( 0 2 x'+ 3~+ 3 
1 02 ~ л. 7 КодЫ ВоУзА ‒ чоУдхм~и ‒ 1оКви нгемА Пусть t = 3: g (х) = x' + Зх' + Зх' + 2х' + х' + 2х' + х + 2. »о дает (15, 6)-код БЧХ над GF (4), исправляющий три ошибки. Пусть t = 4: g (х) = х11 + х1О + 2хв + Зх7 + Зхв + х' ~- Зха -)- хз -+- х -+ 3. дает (15, 4)-код БЧХ над GF (4), исправляющий четыре ошибки. Пусть t = 5: g (х) = х" + 2х" + Зх" ~- 2х' ~- 2х' ~- х' -1- Зх' ~- + Зу4 + Зуз Это дает (15, 3)-код БЧХ над ОР (4), исправляющий пять ошибок. Пусть t = 6: д (х) = х14 +- х" ~- х" ~- х" ~- х'о ~- хв ~- хв + +х7+хв+хО +х4+хз+ 2+ + 1 Получается (15, 1)-код БЧХ над GF (4), исправляющий шесть ошибок. Это простой код с повторением, который в действитель- ности исправляет семь ошибок. Теперь мы дадим формальное определение кода БЧХ. Оно будет более общим, чем данное выше определение примитивного кода БЧХ, так как в качестве корней g (х) будут браться 2t по- следовательных степеней произвольного элемента Р поля (не обя- зательно примитивного элемента). Длина кода будет равна по- рядку элемента р, т. е. такому наименьшему и, для которого р" = =1 Определение 7.I.1. Пусть заданы q и т, и пусть р любой элемент GF (д"') порядка и. Тогда для любого положительного целого числа t и любого целого числа j, соответствующий код БЧХ является циклическим кодом длины и с порождающим много- членом к (х) = КОК [/~, (x). f I.~-в (х),..., ft.+è 1 (х}], где ft (х} минимальный многочлен элемента ~'. Часто выбирают /, = 1, что, как правило, (но не всегда), приводит к многочлену g (х} с наименьшей степенью. Обычно требуется большая длина кода, и тогда выбирается элемент 1з поля с наибольшим порядком, т. е. примитивный элемент. 
7.2. ДекОДеР питеРсОнА--ГОРенстейнА ‒ ЦиРлеРА 193 7.2. ДЕКОДЕР ПИТЕРСОНА ‒ ГОРЕНСТЕИНА ЦИРЛЕРА Коды БЧ Х являются циклическими, и, следовательно, к ним применимы любые методы декодирования циклических кодов. Имеются, однако, существенно лучшие алгоритмы, разработанные специально для декодирования кодов БЧ Х. Рассматриваемый в данном параграфе алгоритм впервые был предложен Питерсоном для двоичных кодов (мы опишем его общий случай, разработанный Горенстейном и 1~ирлером). Доказав, что этот алгоритм позволяет исправлять t ошибок, мы тем самым докажем, что описанное в пре- дыдущем параграфе построение кодов БЧХ приводит к коду, ис- правляющему t ошибок. Для упрощения уравнений всюду по- лагается j = ‒ 1, хотя все выкладки без изменения идей могут быть проделаны для произвольного j„. Предположим, что в основе конструкции кода БЧХ лежит элемент и поля, возможно не примитивный. Многочлен ошибок равен е(х} = е„,х"-'+ е„,х' ‒ '+ + е,х+ e„ где не более / коэффициентов отличны от нуля. Предположим, что на самом деле произошло v ошибок, О < ч < t, и что этим ошиб- кам соответствуют неизвестные позиции s,, ~„..., <,. Много- член ошибок можно записать в виде е(х) =е~ х'1+ е;,х'~+ +e; х'», где е;, величина l-й ошибки (в двоичном случае e;, = 1}. Мы не знаем ни ~,, ..., ~„ни е~,, ..., е~,, в действительности мы даже не знаем числа т. Лля исправления ошибок нужно вычислить все эти числа. Чтобы получить компоненту синдрома S, Hàäî найти значения полученного многочлена в точке u: S, = u (а) = с (а) + е (а) = е (а) = Принятые здесь обозначения слишком громоздки. Для их упрощения определим для всех l = 1, ..., v величины ошибок Yl ‒ ‒ е;, и локаторы ошибок Х~ ‒ -- и i где ~~ истинное поло- жение 1-й ошибки, а К~ ‒ элемент поля, ассоциированный с этим положением. Заметим, что так как порядок элемента а равен и, то все локаторы рассматриваемой конфигурации ошибок различны. В этих обозначениях S запишется в виде S, == Г,Х, -+ Г,Х, +- ... -~ Г,Х,. P. БлеЯхут 
j 94 гл. z. коды БоузА ‒ чоудхуРи ‒ хоквингемА Аналогично можно вычислить значения принятого многочлепа при всех степенях и, входя~цих в определение g (х). Яля / =- 1, 2t определим синдромы равенствами S; ‒ ‒ о(и~) = с(и~) +е(и~) = е(и~'). Тогда получим следую'цую систему из 21 уравнений относи- тельно ~ неизвестных локаторов Х,, ..., Х„и т неизвестных величин ошибок Y,, ..., S ‒ - V,Õ~ + VX ~- ... + V,.Y„ 2 2, ~ 2 Sg == 1 IXI [-1~рХ2+ ''' [ V„Xi, 21 9g 2t ~„=- Y,Х, +)',Х, + "+Y„X, В силу определения синдрома эта система уравненийдолжна иметь хотя бы одно решение. Мы увидим, что это решение един- ственно. Наша задача состоит в вычислении неизвестных по за- данным компонентам синдрома, т. е. в решении системы нелиней- ных уравнений. Описываемый метод решения таких систем под- ходит для произвольного поля. Эту систему нелинейных уравнений трудно решать непосред- ственно. Воспользуемся искусственным приемом, определив не- которые промежуточные переменные, которые могут быть вычи- слены по компонентам синдрома и по которым можно вычислить затем локаторы ошибок. Рассмотрим многочлен от х: Л(х) =-Л,х~+Л„1х' ‒ '+ . +Л,х+1, известный под названием многочлена локаторов ошибок и опре- деляемый как многочлен, корнями которого являются обрат- ные к локаторам ошибок величины К~' для l =- 1, ..., v. Итак, Л (х) = (1 ‒ хХ,) (1 ‒ хХ,) ... (1 ‒ хХ,,). Если коэффициенты этого многочлена известны, то для вычисления локаторов ошибок нужно найти его корни. Поэтому попытаемся сначала вычислить по заданным компонентам синдрома коэффи- циенты Л„..., Л,. Если нам это удастся, то задача будет близка к решению. Умножим обе части равенства, определяющего этот многочлеп, на V~Х~+' и положим х = К~ . Тогда левая часть обратится в нуль, и мы получим О = Y,Х'+'(1 -~- Л,Х-,'- -~ Л,Х-,', Л,,Х-, "-" -, Л,Х,"). 
7.2. ДБКОДЕР ПИТЕРСОНА ‒ ГОРБНСТБЙНА ‒ ЦИРЛЕРА $ 95 или у,(х',+'+-лу/+' '-+ -,'-л,х',) =- o. 3то равенство выполняется при каждом l и при каждом j. Про- суммируем эти равенства по l от 1 до к Яля каждого j это дает g у, (х',+'+ л,х',+'-'+ " + л,х,') =- о, ~=1 или S„~g Sv~u ~ч+3 S, S„~( S„+2 ... Я,д ~з S, ~5 S~ S S, 53 54 л,., л,, ... S, ... S„.+, 2v ~„i ~ з ' - Su'-s Ssvv Если матрица невырождена, то эту систему можно решить путем обращения матрицы. Докажем, что если произошло v ошибок, то матрица невырождена. Первым шагом этого доказательства слу- жит доказательство невырожденности матрицы Вандермонда. Теорема 7.2.1. Матрица Вандермонда, определяемая как про- извольная матраца вада 1 ...1 к, ...к„ 2 2 К2 ... К. к, К А= к" ' 1 к" ' 2 к" ' Р g y,х,+'q- л, Q Y,х','+'-' <- ". -~- л, ~' Y,х', = 0. l=1 1=1 l=l Каждая сумма в левой части последнего равенства является ком- понентой синдрома, так что уравнение приводится к виду Я,,.„+ Л,$,+,., + Л.Я,+,., + " + Л,.S, = О. Так как v < 3, то для j в интервале 1 < ~ < v все индексы задают известные компоненты синдрома. Таким образом, получаем си- стему уравнений л,з,.,-~-лд,„, +- -+л,в; = я „., т. е. систему линейных уравнений, связывающих компоненты синд- рома с коэффициентами многочлена Л (х}. Эту систему можно записать в матричном виде 
$9@ ГЛ. 7. КОДЫ ЬОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИНГБМА имеет отличный om нуля определитель тогда и только тогда, когда К; ф= Х; для всех ~, ~' = ‒ 1, ..., р,; ~ =ф ~. Доказательство. Обратное утверждение очевидно, поскольку если любые два К> равны, то в матрице оказываются два одина- ковых столбца и, следовательно, определитель равен нулю. ,цля доказательства прямого утверждения воспользуемся ин- дукцией. Утверждение верно при р, = 1. Мы сейчас покажем, что если оно верно для матриц Вандермонда размера (p 1) ."' X (ц 1), то оно верно и для матриц Вандермонда размера р, Х р,. Заменим Х, в матрице на переменную х. Тогда определи- тель будет функцией от х и запишется в виде 1 х х' ... х~' ‒ ~ х x' .. к.". D(x) = det К„К'„... К"„ Определитель можно разложить в сумму элементов первой строки, умноженных на соответствующие этим элементам алгебраиче- ские дополнения. Это даст многочлен от х степени и 1, который может быть записан в виде Р(х) =Ш ixu! +... +dix+do и, таким образом, имеет не более ц ‒ 1 корней. Коэффициент d„> сам по себе равен определителю матрицы Вандермонда и по предположению индукции не равен нулю. Если для любого i', 2 ~« ~< р,, мы положим х = К;, то два столбца в матрице будут равны и D (К~) = О. Таким образом, каждое Х; (~ + 1) есть ко- рень D (х), и, поскольку все они различны и их число равно р, ‒ 1, легко получить разложение многочлена П D (х) = d„, Q (х ‒ Х~). i'=2 Отсюда следует, что определитель исходной матрицы Вандер- монда равен П(х,) =d„, g(х, ‒ К,). Последнее выражение отлично от нуля, поскольку d > отлично от нуля, а К, отличен от остальных К;. Поэтому опреде- литель матрицы Вандермонда размера р, х р, не равен нулю, и по индукции получаем справедливость теоремы для любого р. О 
7.2. ДЕКОДЕР ПИТЕРСОНА ‒ ГОРЕНСТЕЙ НА ‒ ЦИРЛЕРА 1 97 Теорема 7.2.2. Матрица компонент синдрома ~р Sg+< - - - S>p-1 невырождена, если р, равно числу v произошедших в действитель- ности ошибок. Матрица является вырожденной, если р, больше v. Доказательство. Пусть К,„= О для и ) ъ, и пусть А‒ матрица Вандермонда 1 ... 1 Х, ...Х„ 1 Х, А= ! Xl' ‒ ! с элементами А~; = Х,', а В диагональная матрица 0 ... 0 YiXl 0 К.„Х, ... 0 В= 0 ... К„Х„ 0 с элементами B;> ‒ ‒ Y;X;6;~, где 6;~ ‒‒ 1, если ~ = j, и 6;; = 0 в противном случае. Тогда произведение матриц AHA' будет иметь элементы (АВА');; = Q К', ' Q У,Х,Ь,„Х',. ' = 1=1 /sf = g x' ),x,x',-' = g ),x',+'-', которые совпадают с элементами матрицы М. Таким образом, М = ABA' и, следовательно, определитель матрицы М удов- летворяет соотношению det (М) = det (А) det (В) det (А). Теперь у нас все готово для доказательства центральной тео- ремы алгоритма декодирования. Эта теорема дает условие, по которому можно определить число v произошедших в действи- тельности ошибок. 
198 ГЛ. 7 ° КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИНГЕМА %~1 = ) tXt + г2Х2 + ° ° ° " ~~Хч Поскольку локаторы ошибок известны, мы имеем систему 2t линейных уравнений с ~ неизвестными значениями ошибок. Первые v уравнений могут быть решены относительно значений ошибок, если определитель матрицы коэффициентов этих урав- нений не равен нулю. Но Х~ X,...Õ, det = (Х,X,... Х,.) det v ‒ 1 ! Х Х1 Х2... Х',» По теореме 7.2.1 определитель последней матрицы не равен нулю, если произошло vошибок, ,поскольку Х,, ,Х,, ,..., Х, различны и не равны нулю. Алгоритм декодирования представлен на рис. 7.1. Здесь мы предположили, что j, произвольно, хотя все рассуждения проводились для частного случая j„= 1. Рассуждения остаются теми же для произвольного 1',. Если р, больше v, то det (>) = О. Тогда det (M) = О и M выро- ждена. Если р, равно v, то det (В) + О. Кроме того, определитель матрицы Вандермонда А не равен нулю, если все столбцы матрицы различны, что выполняется, если р равно v. Следовательно, det (M) + О, и теорема доказана. П Эта теорема является основной при построении алгоритма декодирования. Прежде всего найдем правильное значение v, поступая следующим образом. В качестве пробного значения возьмем v = t и вычислим определитель матрицы M. Если он не равен нулю, то мы получили правильное значение для v; если же определитель равен нулю, то уменьшим значение v на 1 и повто- процедуру. Поступать таким образом необходимо до тех пор, пока не будет получен определитель, отличный от нуля, и тогда мы узнаем число vошибок, ,которые произошли на самом деле. Затем обратим матрицу М и вычислим коэффициенты Л (х). Найдя корни Л (х), найдем локаторы ошибок. Если код двоич- ный, то ошибки известны. В противном случае вернемся к уравне- ниям, определяющим компоненты синдрома: Я,=К,Х,+Г,Хв -1- . +К,Х„, 2 2 2 Яр = Е)Х~+ Г~Х2 ... + у,Х„ 
7.2. дEкОдеP питеРсОнА ‒ ГОРенстейнА ‒ МиРЛеРА 199 Вьоо и/х) Стпяп Рис. 1.1. Декодер Питерсона ‒ Горенстсйна ‒ Цирлсра. Поскольку число элементов поля конечно, обычно простейшим путем нахождения корней многочлена Л (х) является метод проб и ошибок, известный как процедура Ченя. Эта процедура состоит просто в последовательном вычислении Л (а~) для каждого j и про- верки полученных значений на нуль. Наиболее простым способом вычисления значения Л (х) в точке () является схема Горнера: л р) = (... (((л,.~ + и,.,) 5 -I- л,.,) 5 + , л,.,) ~ -~ ... -,- и,). 
QPP ГЛ. 7. КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИНГЕМА Яля вычисления Л (р) по схеме Горнера требуется только ~ умно- жений и ч сложений. В качестве примера процедуры декодирования рассмотрим декодирование (15,5)-кода БЧХ, исправляющего три ошибки и имеющего порождающий многочлен g (х) =- х~о + х' + хв + х4 + х2 + х + 1. Яля примера будем считать принятый многочлен равным v (х) = = х'+ х'. Ясно, что если бы произошло не более трех ошибок, то кодовое слово должно было бы быть нулевым и и (х) = е (х), но декодер не может сделать такого заключения. Выполним все шаги алгоритма декодирования. Сначала вычислим компоненты синдрома, используя арифметику в поле GF (16): $=а +а = а 1 14+ 4 Э 2 $3 = а21 +- ав = О, $ = а" + а' = а' 4 а3~ + а10 аО б S = а4' + а" = О. B Пусть v = 3, тогда а" а' О О аз О а' 1 $1 $2 $3 S2 S3 $4 $3 $4 $5 Определитель М; следовательно, полагаем v = 2. Тогда S, S, а" а' Определитель не равен нулю; следовательно, произошло две ошибки. Далее, О а' М '= а' О а" О а' Л а' а' а' а'2 1 следовательно, Л (х) = а'х2 + а'2х + 1. 
".3. КОДЫ РИПА ‒ СОЛОМОНА ЯЩ Используя процедуру Ченя, получаем разложение А (х) = (а'х + 1) (а'х+ 1) = а'(х а') (х а"). Многочлен локаторов ошибок Л (х) имеет корни а' и а", а лока- торы ошибок равны элементам, обратным корням. Таким обра- зом, ошибки произошли во второй и седьмой позициях. Поскольку код является двоичным, значения ошибок равны 1 и е (х) = = х' -+- х'. 7.3. КОДЫ РИДА СОЛОМОНА Важным и широко используемым подмножеством кодов БЧ Х являются коды Рида ‒ Соломона. Это такие коды БЧХ, у кото- рых мультипликативный порядок алфавита символов кодового слова делится на длину кода. Таким образом, m = 1 и поле сим- волов GF (q) совпадает с полем локаторов ошибок GF (q ). Обычно мы будем выбирать а примитивным; тогда n=q" 1=q 1. Минимальный многочлен над GF (q) элемента р, взятого из того же поля, равен f~ (х) = х 11. Поскольку поле символов и поле локаторов ошибок совпадают, все минимальные многочлены линейны. В коде Рида ‒ Соломона, исправляющем t ошибок, обычно полагается j, = 1, и тогда порождающий многочлен записывается в виде g (х) = (х ‒ а) (х ‒ а;) ... (х ‒ а'-'). Степень этого многочлена всегда равна 21, откуда следует, что параметры кода Рида Соломона связаны соотношением и ‒ k=2t. В коде Рида ‒ Соломона можно выбрать также любое другое зна- чение ~„причем с помощью разумного выбора j, иногда удается упростить кодер. Таким образом, g(х) =- (х ‒ а~ )(х ‒ а~ ~')... (х--- а~' ~-"' '). В качестве примера найдем g (х) для (15,11)-кода Рида‒ Соломона с t = 2 над GF (16). Может быть выбрано любое j„; мы выберем jo =- 1. Тогда g (х) = (х а) (х ‒ а2) (х а') (х ‒ а4) =- = х4 + (2 + х + 1) х -1- (2 .1- я ) х" -' Г х + (2 + 2 + 1) = 4 + %13~3 1 а~Х2 ~ RÇ). 1 ‒ а10 (Здесь использовано приведенное в табл. 7.1 представление эле- ментов поля GF (16) в виде многочленов от z.) Поскольку стс- 
Я PQ ГЛ. 7. КОДЫ ЬОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИНГЕМА' пень g (х) равна 4, и k = 4 и Й = 11. Информационный мно- гочлен представляет собой последовательность одиннадцати сим- волов из GF (16), что эквивалентно 44 битам. В качестве второго примера найдем g (х) для (7, 3)-кода Рида Соломона с t = 2 над GF (8). Может быть выбрано любое j,; мы выберем j, = 4. Тогда g (x) = (х а') (х а') (х ue) (х uo) = = » + (z + 1)»з + (z + 1) х + (а + 1)»+ z (здесь использовано представление элементов поля GF(8) в виде многочленов от z). Информационный многочлен представляет собой последовательность трех восьмеричных символов (что эквивалентно девяти битам). Предположим, что i (х) = (z + z) х + х + (z + 1). Кодовое слово несистематического кода запишется в виде с(х) = i(x)g(x) = (u4»2 + x + uЗ) (xА + u6»3 + u6»2 + 3» ~ ) С~4~~ + ®+5 + ®~~4 + QQ + ОХй + <5+ «~» ~4 что представляет собой последовательность семи восьмеричных символов. Коды Рида ‒ Соломона являются оптимальными в смысле границы Синглтона. Теорема 7.3.1. Код Рида ‒ Соломона имеет минимальное рас- стояние и ‒ k + 1 и является кодом с максимальнь~м расстоя- нием. Доказательство. Пусть d = 2t + 1 конструктивное рас- стояние кода. Минимальное расстояние d удовлетворяет нера- венству d* ~ d = 2t + 1 = n k + 1, поскольку для кодов Рида ‒ Соломона 21 = и ‒ k. Но для лю- бого линейного кода имеет место граница Синглтона dÐ <и k+1. Следовательно, dÐ' = и k+ 1 и сР = d. О Яоказанная теорема утверждает, что при фиксированных п и k не существует кода, у которого минимальное расстояние больше, чем у кода Рида †Соломо. Этот факт часто является веским основанием для использования кода Рида ‒ Соломона. Не стоит, однако, понимать это утверждение буквально. Часто предпочтение отдается кодам с такими параметрами (и', k'), 
7.4. СИ НТЕ3 АВТОРЕГРЕССИОН Н ЫХ ФИЛЬТРОВ 203 при которых не существует кода Рида Соломона. В то же время коды Рида ‒ Соломона всегда оказываются короче всех других циклических кодов над тем же алфавитом. 7.4. СИНТЕЗ АВТОРЕГРЕССИОННЫХ ФИЛЬТРОВ При использовании описанного в ~ 7.2 алгоритма декодирова- ния кодов БЧХ основной объем вычислений приходится на реше- ние системы уравнений ‒ S $~+2 $~+3 S,, $ V+» Я $1 $2 S2 $3 $3 $4 Л,. Л,, A„, $. $.,» $.,2 $2' 2у » Л S> ‒ ‒ ‒ fЛ~$~~, / = v+ 1,...,2v. 1=1 Яля фиксированного Л это уравнение определяет авторегрес- сионный фильтр. Он может быть реализован как регистр сдвига с линейной обратной связью, множители в отводах которого задаются вектором Л. При небольших значениях v эту систему можно решить с помощью обращения матрицы. Для обращения матрицы размера v x v необходимо произвести порядка ч' действий. Однако на практике часто требуется использовать коды, исправляющие большое число ошибок, и в таких случаях желателен более эффективный метод решения данной системы. Такой метод был разработан Берлекэмпом. В основе этого метода лежит тот факт, что выпи- санное выше матричное уравнение не произвольно: матрица обладает специальной структурой. Это позволяет существенно упростить связанные с нахождением вектора Л вычисления, хотя сама процедура вычислений становится более сложной для понимания, чем простое обращение матрицы. Остановимся на предложенном Месси варианте алгоритма, который понял, что наилучший способ реализации алгоритма состоит в переформулировке задачи в виде задачи построения схемы с использованием регистров сдвига с линейной обратной связью. Предположим, что нам известен вектор Л. Тогда первая строка выписанной выше системы ',определяет значение $„» через значения $„..., $„вторая строка определяет $,, через $2, ..., $„» и т. д. Этот последовательный процесс описывается уравнением 
'2О4 ГЛ. 7. КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИ НГЕМА Переформулированная таким образом задача сводится к по- строению изображенного на рис. 7.2 регистра сдвига с линейной обратной связью, генерирующего известную последовательность компонент синдрома. Задача состоит в том, чтобы среди боль- шого числа таких регистров найти регистр сдвига с наименьшей длиной. Это позволит определить вектор ошибок минимального веса в принятом слове, или, что то же самое, определить много- член Л наименьшей степени. Многочлен минимальной степени имеет степень v и определяется единственным образом, поскольку матрица размера v x v исходной системы уравнений обратима. Процедура построения авторегрессионного фильтра является также методом решения матричного уравнения относительно вектора Л. Ниже будет приведена процедура построения такого регистра сдвига. Описанный метод окажется применимым для вычисления в любых полях и не будет предполагать каких-либо особых свойств последовательности $>, $„..., $„. Эта последо- вательность не обязательно должна состоять из компонент син- дрома, но если ее элементы все же являются компонентами син- дрома для исправляемой конфигурации ошибок, то процедура всегда приведет к регистру сдвига с ненулевым весовым множи- телем в самом правом отводе. Для произвольного регистра сдвига с линейной обратной связью, описываемой многочленом A (x), длина регистра может быть больше, чем степень Л (х), поскольку несколько самых правых ячеек регистра может быть не охвачено обратной связью, Яля построения требуемого регистра сдвига необходимо найти две величины; длину регистра сдвига L и многочлен обратной связи Л (х): Л (х) = Л,.х" '- Л,.,х' ‒ ' ‒,'-... + Л,х+ 1, где deg А (х) ( L. Обозначим зту пару через (L, Л (х)). Необ- ходимо найти регистр сдвига с обратной связью наименьшей длины, который генерирует последовательность $>, ..., $2~, при соответствующем начальном состоянии. Процедура построения регистра является индуктивной. Для каждого r, начиная с r = 1, построим регистр сдвига, генериру- 5 начальном сосвояноо содержиа )оследоеалпельносщь S„,S> ~,..., S, Рис. 7.2. Многоч.1ен локаторов ошибок в цепи регистра сдвига. 
7.4. СИНТЕЗ АВТОРЕГРЕССИОННЫХ ФИЛЬТРОВ QPQ ющий первые r компонент синдрома. Регистр сдвига (L„, Л<'> (х)) является регистром сдвига минимальной длины, генерирующим $„..., $„. Он не обязательно должен быть единственным: может существовать несколько таких регистров сдвига, но все они имеют одинаковую длину. К началу r-й итерации уже будет задан спи- сок регистров сдвига (L„A)" (х)), (L„Ë (х)), у.,„л< ‒ > (х)). Основная идея алгоритма Берлекэмпа Месси состоит в нахожде- нии способа построения нового регистра минимальной длины (L„A<'> (х)), генерирующего последовательность S„..., S„„S,. Это будет сделано с использованием предыдущего регистра сдвига, в котором при необходимости будут надлежащим образом изме- нены длина и весовые множители. При r-й итерации вычислим следующий выход (r 1)-го регистра сдвига: ft ‒ 1 Z л,"-')s,; /=1 Поскольку и 1 больше, чем степень Л<' ‒ '>, многие слагаемые в сумме будут равны нулю, и, таким образом, ее можно записать как сумму от 1 до deg Л<' ‒ '> (х). Однако обозначения будут менее громоздкими, если сумма будет записываться так, как указано выше. Вычитая $„из требуемого выхода $„получаем величину Ь„ называемую r-й невязкой: д,=$,‒ s,=s, t ZA(' ')s, /, j=1 или, что эквивалентно, и--1 д,= Z л,"-')s,, ! =-О Если Д„равняется нулю, то положим (L,, Л<'> (х)) = (L, ), Л<' ‒ '> (х)), и r-я итерация будет закончена. B противном случае следующим образом изменим весовые множители в цепи обрат- ной связи регистра сдвига: Л<'> (х) = Л<' ‒ '> (х) + Ах'Л <'" ‒ '> (т), где А ‒ элемент поля, ! целое число, а Л<'" ‒ '> (х) один из многочленов регистра сдвига, встречавшихся в одной из 
206 Гл. 7. КОДЫ БОУЗА ‒ ЧОУДХУРИ-ХОКВИНГЕМА предыдущих итераций. Теперь, используя новый многочлеи, снова вычислим невязку (обозначим ее Л;) и ‒ 1 и ‒ 1 л--1 Л,= ~ Л,"$,;= f A," "S,;-)-А~ Л,'"' "S,; ~. j=0 )=0 j=0 Теперь все готово для определения величин m, l и А. Выбе- рем т меньше r и такое, что Л ф: О. Выберем также l = r ‒ и и А =- ‒ Л,,'Л,. Тогда и, следовательно, новый регистр сдвига будет генерировать последовательность S„..., S, >, S,. Однако нам нужен не любой такой регистр сдвига, а регистр сдвига с минимальной длиной. У нас остался произвол в выборе т, для которого Л =ф'= О. Выбрав в качестве т номер ближайшей итерации, в которой выполнялось условие L„Q L „получим в каждой итерации регистр мини- мальной длины, однако такое усовершенствование требует для своего выполнения дополнительного времени. Практическая реализация того, что было изложено до настоя- щего момента, представлена на рис. 7.3. Ява регистра сдвига при итерациях и и r изображены на рис. 7.3, а. В качестве т-й итерации выбирается та, при которой регистр сдвига (Е „Л ' (х)) не способен генерировать компоненту синдрома S, и минималь- ная длина регистра сдвига, генерирующего требуемую компо- ненту синдрома при т-й итерации, больше L >. Будем также считать, что регистр сдвига (L, >, Л<' ‒ '> (х)) не способен гене- рировать S,; в противном случае он остается без изменения. На рис. 7.3, б регистр сдвига (L„„A<"' ‒ '~ (х)) превращен во вспомогательный регистр путем увеличения его длины, изме- нения его связей и такой его перестройки, которая позволяет скомпенсировать неспособность регистра (L, „A<' ‒ '~ (х)) гене- рировать S,. Отметим, что вспомогательный регистр имеет допол- нительный отвод с весовым множителем единица, соответству- ющим коэффициенту Ao"' '. Ha протяжении первых r 1 ите- раций в остальных отводах цепи обратной связи формируется отрицательное значение этой соответствующей дополнительному отводу величины, и поэтому на выходе вспомогательного реги- стра формируется последовательность нулей, не оказывающая влияния на генерируемые компоненты синдрома. При r-й итера- ции эти величины взаимно не уничтожаются, и выход вспомога- тельного регистра оказывается ненулевым. Коэффициент А вы- бирается таким образом, чтобы его добавление к r-му выходному сигналу обратной связи главного регистра приводило бы к полу- чению нужной компоненты синдрома $„. 
7.4. СИ НТЕЗ АВТОРЕГРЕССИО ННЫХ ФИЛЬТРОВ Щ7 S,+~,S (...S) ‒ SI(j Wp) Рис. 7.3. Конструкци я Берлекэмпа ‒ Месси. На рис. 7.3, в показано, как два регистра сдвига, изображен- ные на рис. 7.3, б, сливаются в один регистр, что в силу принципа суперпозицип не меняет общего поведения схемы. Это дает ре- гистр (L,, Л'~ (х)). Иногда I, =- Е„„иногда L„) L,.,. В по- следнем случае при проведении дальнейших итераций и заме- ц~ется на r. 
208 Гл. 7. КОДЫ БОУЗА ‒ чОУДхУРи ‒ хОКВинГемА Точное описание процедуры дается следующей теоремой, которая утверждает, что эта процедура приводит к наименьшему регистру сдвига с требуемым свойством. Довольно длинное дока- зательство теоремы займет всю оставшуюся часть этого параграфа. Теорема 7.4. ! (алгоритм Берлеквмпа ‒ Месси). Пусть заданы S„..., S,] из некоторого поля, и пусть при начальных условиях Л<ь~ (х) = (, В'О~ (х) = ! и L = 0 выполняются следующие ре- куррентные равенства, используемые для вычисления Л<"' (х): и ‒ 1 Л, = ~', Л," "S,.;, у=о Л<'> (x) ! ‒ Л,.х В~' (х) Л, '6, (! ‒ 6,) х Л<' ‒ '> (х) В' " (х) r = 1, ..., 21, где О, = 1, если одновременно Л, =ф: О и 2L, ( ( r (, и 6, = 0 в противном случае. Тогда Л<"~ (х) является многочленом наименьшей степени, коэффициенты которого удо- ("-~) влетворяют равенствам Ло ' ‒‒ 1 и n ‒ 1 S, + Q Л~"'S,; =О, r = Lqq+ 1,...,2t. j=1 В этой теореме Л, может равняться нулю, но только в том случае, когда О, = О. Положим тогда по определению Л,'О, = О. В каждой итерации для умножения матриц требуется не бо- лее 21 умножений, а для вычисления Л, ‒ не более 1 умножений. Всего производится 21 итераций, так что делается не более 6Р умножений. Следовательно, использование этого алгоритма обычно эффективнее обращения матрицы, в котором требуется порядка Р операций. Доказательство теоремы 7.4.! сводится к двум приведенным ниже леммам. Сначала в лемме 7.4.2 находится неравенство, связывающее L, и L,. Затем в лемме 7.4.3 используется ука- занный в теореме 7.4.1 алгоритм для построения по регистру сдвига минимальной длины, генерирующему последовательность S„..., $,„регистра сдвига, генерирующего последователь- ность S,, ..., $,. Из леммы 7.4.3 будет следовать, что вытекающее из теоремы 7.4.1 построение приводит к регистру сдвига мини- мальной длины, поскольку его параметры будут удовлетворять границе из леммы 7.4 ° 2. Лемма 7.4.2. Пусть (L, Л<' ‒ ц (х)) регистр сдвига с ли- ней ной о5ратной связь;о минимальной длины, генерирующий последовательность S,, ..., S, „а (L„A~'> (х)) регистр сдвига 
7.4. СИНТЕЗ АВТОРЕГPECCHOHHblX ФИЛЬТРОВ Щ9 с ланей ной связью минимальной длины, генерирующий $„..., $, „$„и Л<'> (х) + Л<' ‒ '> (х). Тогда L,) тах [L, ., r -- L,,]. Доказательство. Неравенство, которое требуется доказать, разбивается на два неравенства: L„w L, 1 и L„w r ‒ L„1. l. S,+ g с;$,,, I. gc,Sy<, j=L4- S. = s, = w~' ь„$ 4=1 Теперь установим противоречие. С одной / ° s, = g b„s,„= g ь. ~ 1=1 1=1 с =l ь ° ° ° э ~ ° 1 стороны, с„S„q„„ где справедливость разложения $, ~ следует из того, что r k пробегает содержащиеся среди чисел L + 1, ..., r 1 целые значения от r 1 до r ‒ L', поскольку по предположению r ~ L + L' + 1. С другой стороны, L L L' $,Ф ZсS, =Zс, Eblis,;h, с=-1 r=! Й=! где справедливость разложения $, i следует из того, что r пробегает содержащиеся среди чисел L' -'- 1, ..., r 1 целые значения от r ‒ 1 до r ‒ L, а это опять следует из предположе- ния r ~ L + L' + 1. Изменение порядка суммирования в пра- Первое неравенство очевидно, поскольку если регистр сдвига с линейной обратной связью генерирует некоторую последова- тельность, то он генерирует и любую меньшую последователь- ность, являющуюся началом исходной. Если L„> ~ r, то второе неравенство также становится очевидным. Поэтому предполо- жим, что L, > ~ r и что второе неравенство не выполняется, и попытаемся прийти к противоречию. Из предположения следует, что L, а r 1 L,, Для сокращения заяиси введем следу- ющие обозначения: с (х) = Л<' ‒ '~ (х), Ь (х) = Л<'~ (х), L = <, g и ~'-' = L,. В новых обозначениях исходные предположения при- мут вид r w L + L' + 1 и ~~ ~ r. Кроме того, из условий леммы следует, что 
Q) P ГЛ. 7. КОДЫ БОУЗА ‒ а1ОУДХУРИ ‒ ХОКВИНГFMA вой части последнего равенства приводит к выражению для S„ полученному в правой части предыдущего равенства. Таким образом, получаем доказывающее лемму противоречие S, =ф= S„. ~ Если удастся построить регистр сдвига с длиной, удовлетво- ряющей соотношению из леммы 7.4.2 с заменой знака нестрогого неравенства знаком равенства, то тем самым будет построен регистр минимальной длины. Следующая лемма показывает, что такое построение дается теоремой 7.4.1. Лемма 7.4.3. Предположим, что (L;, Л' (х)), 1 = 1, ..., r, является последовательностью региспгров сдвига мин имальной длины с линейной обратной связью, таких, что Л<'~ (х) генери- рует S„..., $~. Если Л<'~ (х) ~ A« ‒ ') (х), то L„= max [L„1, r ‒ L„,] и любой регистр сдвига, генерирующий S„..., $„и имеющий длину, совпадающую с величиной правой части ~госледнего равен- ства, является регистро.ч сдвига мин имальной длины. Такой регистр сдвига определяется теоремой 7.4.1. Доказательство. Согласно лемме 7.4.2, L, не может быть меньше величины в правой части последнего равенства. Если удастся построить какой-либо регистр сдвига, который генери- рует требуемую последовательность и длина которого совпадает с указанной величиной, то он будет регистром сдвига минималь- ной длины. Доказательство будет проводиться по индукции. Мы построим регистр сдвига, удовлетворяющий теореме, в пред- положении, что такие регистры последовательно построены для всех /г w r 1. Для каждого Й, Й = 1, ..., r 1, будем обозна- чать через (L», Л» (х)) регистр сдвига минимальной длины, гене- рирующий S„..., S>. Примем за предположение индукции, что L< = m~x tLr i k ‒ Lt~~], k =- 1,...,n ‒ 1, каждый раз, когда Л~»~ (х) + Л<' '~ (х). Это верно для Й =- 0, поскольку L„= ‒ О н L, -= 1. 311ачение k в последней итерации, приведшей к изменению длины, 6ypetn обозначать через т. По- следнее означает, что при завершснин (r = 1)-A итерации т яв- ляется целым числом, таким, что ~т-1 ~~ ~ ~~-1 ° Теперь имеет место следующес равенство: I ‒ 1 г 1 О, S, +- g Л,'-"S,, = g Л,'-"S, , =, ~=1 с=о ! 
7.5. БЫСТРОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ Я] 1 Если Л, = ‒ О, то регистр (L, „Л" ‒ '> (х)) также генерирует пер- вые r символов, и, таким образом, 1,. =-" l,, и Л<'> (х) == Л<' ‒ '> (х). Если Ь„=ф=О, то необходимо построить новый регистр сдвига. Напомним, что изменение длины регистра произошло при й = m. Следовательно, 1 (о, у = Е„,„...,т-= 1, 1 Л.МО, j=m, и по пред11оложеншо индукци11 L,.», = L„=- max tL„„m -- L„,] = m ‒ L„„ поскольку L„, ~~ L„,»,. Теперь выберем новый многочлен Л'>(х) = Л'-"(х) -- Л,л.-'х' "'Л'-"(х) и положим L, = deg Л<'> (х). В этом случае поскольку deg Л<'-'> (х) ~ L,, и deg (л'- Л'"' '> (х) ) < r т + L,„„òî L„w max [L„„r ‒ т -- L,] тзх (L„„r - - L„1). Из последнего неравенства н леммы 7.4.2 при условии, что Л<'> (х) генерирует S,, ..., S,., следует, что L„= max [L„„r L, 1]. Осталось доказать, что регистр сдвига (L„h<'> (х)) генерирует требуемую последовательность. Докажем это непосредственным вычислением разности между S> и сигналом на выходе обратной связи регистра сдвига: г L„.1 S,— ‒ ~Л"S,, = S,-<- g Лh,"-"Я,, i= Lm1 ‒ 1 ~1 (и ‒ 1) ‒ ЫЬт ~; .-+~п + ~. А Sj r-1;т [ О, j = L„L,+ 1,...,r ‒ 1, Ь, ‒ Ь,Ь 'Ь„, = О, i =r. Итак, регистр (L„A<'> (х)) генерирует S< ..., SÄ; в частности, (L„, Л<"' (х)) генерирует SÄ ..., S,<. Лемма доказана. 0 7.5. БЫСТРОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ Уяснение работы декодера Питерсона ‒ Горенстейна ‒ Цирлера лучший путь к пониманию процесса декодирования кодов БЧХ. Но при построении декодера приходится жертвовать концепту- альной ясностью во имя вычислительной эффективности. Опи- 
212 Гл. 7. Коды БОУ3А ‒ чОУДхури ‒ хоквинГемА санный в ~ 7.2 декодер Питерсона ‒ Горенстейна ‒ Цирлера пред- полагает обращение двух матриц размера t x t. Хотя обращение матрицы в конечном поле не приводит к ошибкам округления, вычислительная работа, особенно для больших значений 1, может оказаться чрезмерно большой. В то же время обращения обеих матриц можно избежать. Обращение первой матрицы, необходи- мое для вычисления многочлена локаторов сшибок, можно обойти, используя алгоритм Берлекэмпа ‒ Мессп. Обращение второй ма- трицы, необходимое для вычисления значений ошибок, можно обойти, воспользовавшись процедурой, носящей название алго- ритма Форин. Этот параграф начнется с описания алгоритма Форни, а затем будет продолжено рассмотрение алгоритма Бер- лекэмпа ‒ Месси. Для описания алгоритма Фарии нам понадобится многочлен локаторов ошибок Л (х) = Л,.х" + Л,,х' ‒ '+... -~- Л,х ~ 1, имеющий корни Х~1, 1 = 1 V Л(х) = Д(! ‒ хХ,). ! ‒ 1 Определим синдромный многочлен 2t 2t у $(х) = f $;»1= g Д Y;X,'x' j=l ' j=] i=I и многочлен значений ошибок Q (х): Q (х) = $(х) Л (х) (mod х"). Многочлен значений ошибок будет иногда использоваться в даль- нейших рассуждениях. Его связь с локаторами и значениями ошибок устанавливается следующей теоремой. Теорема 7.5.1. Многочлен значений ошибок можно записать в следующем виде: 0 (х} = ~', Y;X, П(1 ‒ X,х). i =-l ]+с Доказательство. Из определения сомножителей, входящих в ра- венство для Q (»), получаем 2t v V Q (х) = f f Y;Xl»' ' П(1 ‒ Х;х) (mod х') =- j=li=l 2t = Q Y;X; (1 ‒ Х;х) Q (Х;х)' ' Д (1 ‒ Х,х) (modx"-'). ю=] Э 
1 S. БЫСТРОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ Я] 3 Выражение в квадратных скобках является разложением для (1 Х,: х ) . Таким образом, V Q (х) = g Y;X; (1 ‒ X2 õ") П (1 ‒ ‒ Х~х) (mcd х '). i=1 1Ф! Последнее выражение, взятое по модулю х", совпадает с выра- жением, которое требуется доказать. Тем самым теорема доказана. Е3 Теперь все готово для того, чтобы выписать выражение для значений ошибок, которое намного проще аналогичного выраже- ния, использующего обращение матрицы. Теорема 7.5.2 (алгорнтм Форин). Значения ои~ибок аолуча- юпгся из равенства x-,' и (x ‒,') Y Д(! ‒ x,.х ‒,') л (х-, ) jwg Доказательство. Используя равенство из утверждения тео- ремы 7.5.1 при х = Х~ ', получим и (Х-,') = Y,Х, II (1 -- Х,Х-,'), j 9-! и (x —,') откуда вытекает первая часть теоремы. С другой стороны, производная многочлена Л (х) равна V Л'(х) = ‒ f Х, П(1 ‒ хХ~), и, таким образом, Л (Х-,') = ‒ Х,Д(1 ‒ Х,X ), j =~1 откуда сразу следует утверждение теоремы. O Алгоритм Форни обладает существенным преимуществом перед обращением матрицы, но использует деление. В гл. 9 будет пред- ложено другое решение, не использующее деление. Теперь вернемся к вычислению многочлена локаторов оши- бок, использующему алгоритм Берлекэмпа Месси теоремы 7.4.1. Предложенный Месси вариант решения этой задачи показан на рис. 7.4, а. По заданным SJ, j = 1, ..., 2t, находится вектор А минимальной длины, удовлетворяющий 1 уравнениям t S; + ~', Я~~Л~, ‒‒ О, j = t + 1,..., 2t. A'= ‒ 1 Это означает, что требустся по заданным 2t компонентам век- тора S из свертки вычислить вектор Л, если априори известно, 
214 ГЛ. 7. КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИЯГЕМА Начальное cocmoa~ue ремсвра S (х) аы аены А> S(x) й (х) Оэоирццыенаы оаеодах равны h,, Рис. 7.4. Гс'и"рация спектра ошибок. а ‒ вариант Месси; б ‒ вариант Бер- ЛЕКЭМ11а, что Л; =- О при j + t. Удовлетворяющий этому равенству век- тор Л определяет коэффициенты многочлена локаторов ошибок V Л (х) = П(1-- хХ,), 1=1 где Х~, 1 = 1, ..., v, являются локаторами ошибок. Многочлен значений ошибок не вычисляется с помощью этого алгоритма, но получается позже из Л (х) и S (х) согласно определению Й (х) = S (х) Л (х) (mod х") Вариант Берлекэмпа решения этой задачи показан на рис. 7.4,б, из которого видно, что многочлену значений ошибок отводится центральная роль. Такой вариант предполагает поиск векторов Л и Q, компоненты которых равны нулю при t ~ Й ~ и и удов- летворяют 2t уравнениям t Sg ‒ ' ~; St gË~, = О,, / = 1,..., 2t, /г=1 где S) ‒‒ О при j < О. Заметим, что j пробегает 2t значений. Решение задачи дается двумя миогочленами: многочленом лока- торов ошибок и многочленом значений ошибок. Ява описанных выше варианта эквивалентны. В дальнейшем будет рассмотрен вариант, предложенный Месси. При необходи- 
мости алгоритм Берлекэмпа Месси можно преобразовать в форму Берлекэмпа, производя итерации непосредственно для многс- членов Л<'~ (х) и Й"> (х). На рис. 7,5 приведена блок-схема алгоритма Берлекэмпа Месси. Как было показано, этот алгоритм позволяет вычислять многочлен локаторов ошибок исходя из заданных 2/ компонент 8ычцслен~.г сыбкц в слебующец компоненте с~;брома, L L 6p=S,+~ Л.7,)(= Q AS, ) iJ'""0 !а; огпводы обрапной сеязц осваоасч без изменения Ьг=P 9 Нгж; оп воешь, сбрагной , связи нео5~оби~о изменивь бычцсливь ноеый многочлен связей, Юля когпоиго Ьг= О Т(х) =Л(х) ‒ Ь„х8(х) Нею 2~ аг 1 Л(л) T(z) 9 Набо ли цвеличцвавь блину регистра? ~(х) - Ь f Ë(õ) Сохракенце прежнего регистра, после нормализации Модификация регистра сбецга Изменение длинь1 8(x) хд(х) A(z) - T(x) L -r‒ - L Hem Да r=2t 9 бе9Л() =~ К следуощемц эгпспц, дскобировгЬоя Стоп- в принятом слове более 1 ошибок Рис. 7.5. Алгоритм Берлекэмпа ‒ Месси, Генеририев ли сущесвв~~~щцц реысар сдвига следуощцю ксмлоненау сцнорома.? 7,5. БЫСТРОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ Я] б 
216 ГЛ, 7. КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИНГЕМА Таблица 7.3 Алгоритм Берлекэмпа ‒ Mecca для (15, 9)-кода Рида ‒ Соломоиа, исправляющего тройные ошибки ц(х) = („+ хКс+ х'Кх+ х')( с+ х4)(х+ х-')(„+ х') „> + zooó + а~4х4+ а4х~+ х~х-'+ х".;+ х' i(.ñ) = О t(Х)=ХХ +Х Х +Й Х =С(Х) S =хх +х х +х~ ххС4 + х5хСС~ + хС~х4 Я, = хх-'+ х-'х"-+ х''х" =х'4 S = хх-'" + х'-х'" + х' ' х" = х' -' Л(х) В(Х) 7'(x ) r Л, I 1+- z'-'ë ! + х-'х 1+ х'х+ х'i~ 1+х14. + !4 С! 1 1+х х+х х ! 3 х'х ! +хх .с+ х'х- х +2õ х ~+х О 12 1 з 4 1 5 а'' 6 О 1+ хс2х 1+а х I + х'х q х'х- 1+ х'4х I + Х'4Х+ Х' с Хг + Х'4ХЗ 1+ Х~4 -+~It~ +Хс4 1 1 1 1 +z' .ñ' 3 Л(.i) = 1+ х' i+ х''х2+ х'~х' =(1 -+ х vNI 0 х .д(1+ х-v) синдрома S>, ..., S.,<. Если j, в коде отлично от 1, то определим $; = V;+;, 1, j = 1, ..., 2/, Эти компоненты синдрома участвуют в вычислениях точно так же, как и прежние компоненты. Сам алгоритм при этом не претерпевает никаких изменений, и дело сводится лишь к соответствующему изменению индексов внутрен- них переменных в алгоритме, Этот алгоритм и его обоснование будут понятнее, если во всех деталях проследить работу алгоритма по схеме на рис. 7,5 для конкретных примеров. В табл. 7.3 приведены необходимые вычисления для (l5,9)-кода Рида ‒ Соломона, исправляющего тройные ошибки. В достоверности приведенных вычислений можно убедиться, проделав шесть итераций по изображенной на рис. 7.5 схеме. Табл. 7.4 содержит аналогичные вычисления для исправ- ляющего,.тройные ошибки (15,5)-кода БЧХ. Внутренняя логика работы алгоритма Берлекэмпа Месси может показаться несколько загадочной. Возможно, ответы на 
7.5. БыстРОе ДекОДиРОВАние КОДОР Бчх 21 7 Таблица 7.4 Алгоритм Берлекэмпа ‒ Mecca для (15, 5)-кода БЧХ, исправляющего тройные ошибки ~(х) .!о+ .в+ .с+ .4+ .г+ + 1 t(x) = 0 .7+ .с .2 1 с 14+ !О+ 4 а21 + а!с + $ агв + аго + ав 14 =а" =а 11. = a35+а25+ 10 5 а42 + а30 + а12 1 r Ь, T(x) В(х) A(x) 0 14 20 3 а'' 40 5 а» 60 1 0 1+а' х 1 +а14 1 1+ 14 + 12 .2 2 1+а!4 + !2 2 2 1 ~ а14х 1 а11 ~2 ~ а14х3 3 1+ а14 + а» г+,14 3 3 14 а!4 14 + 12 2 1'4 + 12 .2 а14 + 11 2+ 14 3 14 + 11 2 14 3 ах а4+ а3 а4х+ а3х a4+ 3 + 2 а4Х+ а3Хг -+ аХ3 Л(х) = 1+ а'4х+ а' 'хг+ а14х3 =(1+ а7х)(1+ а5х)(1+ агх) возникшие вопросы помогут найти следующие соображения. На некоторых итерациях, скажем на r-й итерации, наравне с вы- бранным по алгоритму Берлекэмпа ‒ Месси регистром с линей- ной обратной связью могут существовать другие регистры мини- мальной длины с линейной обратной связью, генерирующие требуемые символы. Все эти регистры будут генерировать одну и ту же требуемую последовательность r компонент синдрома; в то же время последующие компоненты, не входящие в r-ю ите- рацию, у них будут различны. Каждый раз, когда это возможно, на следующей итерации выбирается регистр сдвига с линейной обратной связью с прежней длиной, генерирующий следующую требуемую компоненту синдрома; если такого регистра не оказы- вается, то длину регистра приходится увеличивать. Однако при решении вопроса о необходимости увеличения длины регистра никак не учитывается значение следующей компоненты син- дрома (проверяется лишь выполнение соотношения Л„, =,й 0). 
Qf 8 Гл. 7. кОды БОУЗА ‒ чоУдхУРи ‒ хОкВинГемА Управление ключамо. и л аквовые импольсы бдя каждого регосара cdeuz,а Рис. 7.6. Схсма анпаратурной рсализациц алгоритма Берлекэмпа ‒ ~Чесси. За- л~ечания. Требуется 2t итераций из 2 (t+ 1) тактов каждая. Все дан- ные передаются т параллельными битами. Таким образом, на (r + 1)-шаге имеется по меньшей мере столько же возможных вариантов регистра сдвига, сколько значений мо- жет принимать S„+>. Описанный алгоритм может быть реализован в виде программы для универсальных или специализированных ЭВМ, предназна- ченных для вычислений в полях Галуа. Если требуется очень большая скорость декодирования, то можно воспользоваться специальным жестким исполнением декодера, возможно включа- ющим регистры сдвига. Схема аппаратурной реализации построенного на регистрах сдвига устройства приведена на рис. 7.6. Три регистра, изобра- женные па рисунке, используются для хранения значений коэф- фициентов многочленов S (х), Л (х) и В (х); длина каждого ре- гистра должна быть не меньше той, которая необходима для хранения соответствующего многочлена наибольшей степени, а иногда выбирается пемного большей. Если регистры содержат многочлены со степенямп мепьше максимальных, то пеиспользо- 
7,5. БЫСТРОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ 219 ванные разряды заполняются нулями. Регистры S (х} н В (х) имеют на один разряд больше, чем необходимо для хранения многочленов максимальной степени; отметим наличие дополни- тельного разряда в регистре S (х). Такой выбор длин регистров вместе с выбором числа тактов работы каждого из регистров в течение одной итерации приводит к тому, что в результате каждой итерации коэффициенты много- членов сдвигаются от своего первоначального положения на одну позицию. Это обеспечивает умножение В (х) на х и такую пере- индексацию компонент S;, чтобы получились компоненты $„~, входящие в выражение для Л„. Чтобы понять это, снова обра- тимся к рис. 7.6, на котором регистр S (х) показан в своем исход- ном состоянии. В результате каждой итерации содержимое этого регистра сдвигается на одну позицию вправо, что позволяет в следующей итерации правильно произвести умножение соот- ветствующих коэффициентов многочленов S (х} и Л (х}. Регистр Л в течение одной итерации сдвигается на полную длину дважды: когда вычисляется Ь„и когда в этот регистр вводится новое значение Л. На рис. 7.7 представлена последовательность вычислений, производимых декодером, использующим алгоритм Берлекэмпа‒ Месси и алгоритм Форни. В случае когда произошло не более 1 Ввод и(х) Рис. 7.7. Быстрое декодирование кодов БЧл. 
ЯЯО ГЛ ° 7. КОД bl БОУЗА ‒ ЧОУДХУРИ ‒ ХОК В И НГEMA Ошибок, такой декодер выдаст правильное выражение для много- члена локаторов ошибок. В случае когда произойдет более 1 оши- бок, декодирование будет неудачным и получится либо многочлен, не удовлетворяющий условиям, которым должен удовлетворять многочлен локаторов ошибок, либо допустимый, но неправиль- ный многочлен. В первом случае декодер может обнаружить ошибку и пометить сообщение как не поддающееся декодирова- нию. Решение об обнаружении неисправляемой конфигурации ошибок принимается тогда, когда выполняется хотя бы одно из двух условий: 1} число различных лежащих в GF (q") корней Л (х) отлично От L; 2) значения ошибок не лежат в поле символов кода. Пр и декодирован и и сначала осуществляется проверка много- члена локаторов ошибок. Если он удовлетворяет требуемым усло- виям, то декодер приступает к вычислению многочлена значений ошибок. Может случиться, что значения ошибок не будут лежать в поле символов кодовых слов, если последнее меньше поля лока- торов ошибок. Такой символ не может быть внесен каналом, и, следовательно, его наличие указывает на то, что вектор ошибок содержит более 1 искаженных позиций. В $ 9.6 будут рассмотрены способы декодирования кодов БЧХ с исправлением некоторых конфигураций более чем t ошибок; здесь же мы обсудим противоположный случай, когда число исправляемых ошибок ограничивается конструктивным расстоя- нием. На практике такое декодирование используется для значи- тельного уменьшения вероятности ошибки декодирования, пла- той за которое является увеличение вероятности отказа от деко- дирования. Для уменьшения вероятности неправильного декодирования число исправляемых декодером ошибок можно ограничить чис- лом t, таким, что 2t + 1 будет строго меньше d* (при четном d~ это выполняется всегда}. В этом случае декодер всегда будет обнаруживать неисправляемую конфигурацию ошибок при усло- вии, что число v действительно случившихся ошибок удовлетво- ряет неравенству t -]- v (d~, поскольку для перехода кодового слова в неправильную сферу декодирования должно произойти не менее д* ‒ 1 ошибок. В таком декодере хорошо применять алгоритм Берлекэмпа‒ Месси. Для вычисления Л (х) необходимо сделать 2t итераций по алгоритму Берлекэмпа ‒ Месси. Остальные т ‒ 1 итераций, т = = д* ‒ 1 t, требуются для проверки равенства нулю невя- зок Ь,. Если хотя бы при одной из этих дополнительных итера- 
7.6. ДЕКОДИРОВАНИЕ ДВОИЧНЫХ КОДОВ БЧХ ЯЯ1 ций Л, не равняется нулю, то принятое слово объявляется сло- вом, в котором произошло более 1 ошибок. Правомерность описанной процедуры доказывается следую- щей теоремой. Теорема 7.5.3. Пусть произошло не более т ошибок и заданы 5~ при у = 1, ..., 1 + т и т ) 1. Пусть, далее, (Е,~, Л" (х)) регистр сдвига с линейной обратной связью, генерирующий после- довательность S>, j = 1, ..., 21, и n ‒ 1 Д, = Z A(")Я,;, j=0 причем Л, равняются нулю при r = 2t + 1, ..., t + т и L,< w t. Тогда произошло не более 1 ошибок и A<"> (х) будет являться правильным многочленом локаторов ошибок. Доказательство. В условии теоремы заданы компоненты син- дрома S> для j = 1, ..., t + z. Если бы имелись еще т ‒ t компо- нент синдрома S, j = t + т + 1, ..., 2т, то можно было бы исправлять т ошибок, т. е. любую конфигурацию предполагае- мых ошибок. Вообразим на минуту, что эти дополнительные компоненты сообщены нам добрым волшебником или переданы по неведомому добавочному каналу. Тогда, используя алгоритм Берлекэмпа ‒ Месси, можно найти многочлен локаторов ошибок, степень которого равна числу ошибок. Но при 21-й итерации Lzq ~ t, и по предположению Ь, равняется нулю при r = 21 + + 1, ..., t + т. Поэтому значение L не будет меняться до итера- ции с номером t + т + 1, и, следовательно, по правилу изме- нения L L~т ~~ (~ + т + }} L„) (t + т + }) ~ т + }~ а это противоречит предположению о том, что произошло не бо- лее т ошибок. П 7.6. ДЕКОДИРОВАНИЕ ДВОИЧНЫХ КОДОВ БЧХ Все, что было сказано в этой главе до настоящего момента, спра- ведливо в любом конечном поле. В случае поля GF (2) проведен- ные рассуждения можно дополнительно упростить. Очевидное упрощение состоит в том, что при декодировании необходимо вычислять лишь позиции ошибок, а значения ошибок всегда равны единице (хотя декодер может вычислять значения ошибок в качестве дополнительной проверки}. Дальнейшее упрощение декодирования менее очевидно; намек на его возможность содержится в примере, приведенном в табл. 7.4. 
ЯЯЯ ГЛ. 7. КОДЫ БОУЗА ‒ ~!ОУДХУРИ ‒ ХОКВИНГEMA Нетрудно заметить, что значение Л„всегда обращается в нуль при четнь|х итерациях. Если это происходит всегда IlpH декоди- ровании двоичных кодов, то итерации с четным!! номерами можно пропускать. В этом параграфе будет доказано, что дело обстоит действи- тельно так. Доказательство основывается на следующем факте: в поле GF (2) синдромы с четными номерами определяются син- дромами с нечетными номерами по формуле П Л S~;= fv(u') = g v(u) =S;, j=l j=l что следует из теоремы 5.3.3. Получ!!м для нескольких начальных значений r алгебраические выражения для коэффициентов Л<'> (x). Следуя алгоритму, приведенному на рис. 7.5, и используя спра- ведливые для всех двоичных кодов равенства S4 ‒ ‒ S' = S', получаем ~1 = ~~. Л2 = 82+5< =О, ~3 ~3 } ~< 2е Л4 = S<+SA+~< ~ЙЗ -',‒ S2 = Л<'>(х) = S,x+ 1,', Л<'>(х) = S,õ+1, Л '(x) = (S< Яз+S.)x +S<x+ 1. Отсюда следует, что для любых двоичных кодов БЧХ Л, и Ь4 всегда равняются нулю. Бесконечное продолжение этого пря- мого пути для вычисления других значений синдромов с четными номерами невозможно. Вместо этого сформулируем общий резуль- тат, показывающий, что Л, = ‒ О для всех четиых r. Теорема 7.6.1. Пусть в расширен««поля GF (2} задана про- «звольная последова~~~альноса!ь S„S „..., S2,, >, удовлетворяющая условво S2j ==- 8'; для 2j w 2т -- 1; пусть также задан регистр сдвига с линейной обратной связью Л (х} и выполняются равенства i>,- ! S;=gA;S;;, j=v,...,2v ‒ 1. i ‒ ! n ‒ ! 82, ‒ z Л<я„, S2v = Sv. 
7.7. АЛГОРИТМ ESKJl ИДА ЯЯЗ Доказательство. Покажем, что при сделанных предположе- ниях выраже!Шя для Я и Я„совпала!от. С одной стороны, n ‒ 1 2 и ‒ 1 n ‒ ! f h;S,;) = Q Л',~;, = f A';S„, „. ° с=-1 i=1 i=I С другой стороиы, n ‒ ! ~г ‒ 1 Я„. = Q ЛйБ2ь ~1 = g f Л„Л(Я,ч](. k=! k=1 i=I Используя эти формулы, можно пропустить итерации с четными номерами, и в результате декодирование двоичных кодов уско- ряется. Заметим, что поскольку при доказательстве теоремы были использованы лишь соотношения сопряженности между компо- нентами синдрома и ничего не говорилось о двоичных конфигура- циях ошибок, то описанное упрощение возможно даже для кон- фигураций более чем t ошибок. Поэтому те же виды проверки при- меняются при числе ошибок, боль!аем t. 7.7. ДЕКОДИРОВАНИЕ С ЛОМОЩЬЮ АЛГОРИТМА ЕВКЛИДА Декодирование с помощью алгоритма Евклида представляет собой одии из способов декодирования, отличный от рассмотрен- ных ранее. Принцип работы такого декодера несколько проще понять, однако считается, что он менее эффективен в практиче- ском использовании; вп рочем, справедливость такого мнения, возможно, в значительной мере зависит от конкретного при- менения. Из симметрии последнего выражения следует, что каждое сла- гаемое с ~ ф= Й входит в сумму дважды. Поскольку вычисления производятся в расширении поля GF (2), сумма этих слагаемых будет равняться нулю. Поэтому вклад в последнюю сумму дадут только диагональные члены, для которых ~ =-= Й: n ‒ 1 S~v = Е A;"Sgv ‒ 2! 4=1 Это выражение совпадает с полученным в начале доказательства выражением для S2, что доказывает теорему. 0 Таким образом, по индукции получаем, что Л, равно нулю для четных r; поэтому можно рассматривать только нечетные итерации, формально объединяя две последовательные итерации: Л<'> (x) = Л<'-'> (х) ‒ Л„х'В<' 2> (х), В" (х) = Ь,Л, Л~'-" (x) + (1 ‒ 6,) x'Â'-" (х). 
224 Гл. 7. кОДbl ьОУзА ‒ чОУДхУРи- хОкВи]нгемА В гл. 4 алгоритм Евликда был описан как рекуррентпая процедура нахождения паибольшего общего делителя двух много- членов. Небольшое расширение этого алгоритма позволяет до- полнительно вычислять многочлеиы а (х) и Ь (х), такие, что НОД [s (х), 3 (х) ] = а (х) s (х) + Ь (х) t (х). Для двух произвольных многочлснов s (x) и t (х) повторим алго- ритм Евклида в более удобной для иас матричной форме, исполь- зуя для алгоритма деления запись s (х) == [s (х) 't (х)! t (х) -q- r (х). Теорема 7.7.1 (алгоритм Евклида для многочленов). Пусп(ь заданы два многочлена s (х) и t (х), такие, что deg s (х) ) deg ( (х), 10 пусть s(~) (х) = s (х) Р~) (х) = t (х), и пусть А(~) (х) =‒ Тогда решением рекуррентных уравнений 0 1 (,) ( ) A('> (х), А('+'> (х) = s('+'> (х) 0 1 t('+'> (х) 1 ‒ Q('> (х) будет многочлен s('> (х) t('> (х) s (х) = А('+'> (х) t (х) з(л) (х) = у НОД [s (х), t (х)], причем найдется такой скаля р у, что АНОД [s(x), t(x)] = А(л) (х) s(x) + А(л>(х) t(x), где R таково, что И) (х) =-- О. Доказательство. Поскольку deg t('+'> (х) ( deg t('> (х), то в конце концов t('() (х) = 0 при некотором R, и процесс обяза- тельно закончится. Таким образом, s (х) t (х) s(>() (х) 0 0 1 1 ‒ Q(r) (х) t=R ‒ 1 откуда следует, что любой делитель многочленов s (х) и t (х) делит также и з(") (х). Легко проверить, что 0 1 ‒ 1 Q('>(õ) 1 1 1 0 1 Q('> (х) 
Ф.7. АлГОРитм EB Кл идА ~яб й поэтому R ‒ I Q<') (х) 1 1 0 s<'<) (х) 0 1 r=0 так что многочлен s«) (х) должен делить s (х) и t (х), а следова- тельно, и НОД [s (х), t (х) ]. Отсюда получаем, что НОД [s (х), t (х)] делит s«) (х) и сам делится на s<'<) (х); таким образом, ь<® (х) = у НОД Ь (х), t (х) ]. Далее s<R)(x) s (x) 0 t(x) = А<я) (х) и, следовательно, s«' (x) = А < >> ) (х) s (x) + А>~2Р~ (х) t (х). Это доказывает последнее утверждение теоремы. О В теореме 7.7.1 найден смысл матричных элементов A<»R) (х и А><®) (х). Можно интерпретировать и два остальных элемента,) для чего нам потребуется обратить матрицу А<'> (х). Напомним, что 0 1 A<)(x) = II,<,> „ Из этого равенства видно, что определитель матрицы A<') (х) равен ( ‒ 1)'. Обратная матрица запишется в следующем виде: А<',> (х) А<~) (х) ‒ ' А<'.,> (х) А<',> (х) А«) (х) А<'.,> (х) ( А<',> (х) А<',> (х) Следствие 7.7.2. Многочлены А<',> (х) и А<',> (х), полученные с помо;адью алгоритма Евклида, удовлетворяют равенствам s(x) = ( 1)л АР) (х) АНОД [s(x), t(x)], t(x) = ‒ ( 1)>< Аф) (х) АНОД [s(x), t(x)]. Доказательство. Используя выписанное выше выражение для обратной к A<R) (х) матрицы, получаем s(x) А<,"> (х) A<<) (х) t (х) ‒ А<«) (х) А<я) (х) = ( ‒ 1)н s<R) (х) 0 откуда и вытекает утверждение следствия. CI Опишем два соверщенно различных способа использования алгоритма Евклида при декодировании; один из них будет при- веден ниже, а другой ‒ в $ 9.1. 8 р. Блсйхут 
ЯЯЯ ГЛ. 7. КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИНГЕМА Напомним, что синдромный многочлен, многочлен локаторов ошибок и многочлен значений ошибок связаны соотношением Q (х) = S (х) Л (х) (mod х~'! и условиями deg Л (х) < t u deg Q (х) ~ t ‒ 1. Постараемся теперь использовать доказательство алгоритма Евклида для ре- шения этого уравнения относительно И (х) и Q (х). Из этого доказательства легко установить, что s<'>(õ) A<K> (x) Аф (х) s(x) t<'> (х) А<',> (х) А <'.,> (х) t (х) И ПОЭТОМУ t <'> (х) = t (x) А <',> (х) (mod s (x)). Если положить t (х) = S (х) и s (х) = х2', то последнее равенство можно рассматривать как уравнение, которое нам необходимо решить. Это уравнение выполняется для каждого r. Чтобы ре- шить поставленную задачу, необходимо найти такое значение r (еслн оно существует), при котором deg А<'.,> (х) < t u deg t<'> (х) < w t ‒ 1. Удовлетворить последним условиям можно, выбрав r' равным такому значению r, при котором degt<' ‒ '>(х) ) t и degt<'>(х) < t ‒ 1. Поскольку deg t<0> (х) = 2t и степень t<'> (х) строго убывает с воз- растанием r, эти неравенства определяют единственное значе- ние r' По определению r' получаем deg t<'> (х) < t 1. Степень A<„' (х) возрастает с возрастанием r. Остается лишь показать, что degА<',.'>(х) < t. Это неравенство доказывается с помощью обращения матрицы А (х). Сначала напомним, что О A<'>(x) = П I.=t' ‒ I О 1 1 ‒ Q<'> (х) откуда следует что deg А<',> (х) ) deg А><~> (х). Напомним также, что deg s<'> (х) ) deg t<'> (х). Из этих неравенств и матричного равенства А<,'>(х) А<',>(х) я<'>(х) А<1>(х) А<',>(х) t<'>(х) 
7.7. АлГОРитм E $KJl HAA ЯЯ7 вытекает, что deg s (х) = deg А< '> (x) +- deg s<'> (х), и, поскольку s<'> (х) = t<' и (х), получаем дед А<.",> (х) = degs(x) ‒ degt<' > (х) ( 2t ‒ t = t, где неравенство следует из определения r Теперь мы почти полностью доказали следующую теорему. Теорема 7.7.3. Пусть заданы so (х) = х2', Р> (х) = S (х), где S (х) ‒ синдромный многочлен кода БЧХ, исправляющего t оши- 1 0 бок, и пусть A<0) (х) = 0 1 . Будем решать следующие ре- куррентные уравнения до тех пор, пока не будет выполнено нера- венство deg t~'~ ' t 1: Q<'> (õ) = 5 Х) g(t) ~>y з 0 1 А<'+'> (х) = 1 Q<'> (х) А<'> (х), s<'+'> (х) О 1 t<'+'> (х) 1 Q<'> (х) s<'> (х) 1<'> (х) Тогда многочлены 0(х) = Л ‒ 't<'>(x), Л(х) = Л-'А<",>(х), где Л = А,<'„'> (0), являются единственным решением уравнения Q(x) = S(x)A(x) (modx~'), удовлетворяющим условиям deg Л (х) а t, Л, = 1 и deg Q (х) ( 1. Доказательство. Деление на Л сбеспечивает равенство Л, = 1. С другой стороны, из предыдущих рассуждений следует, что по- следнее уравнение и все условия удовлетворяются. Единствен- ность полученного решения вытекает из того факта, что для синдрома кода БЧХ, исправляющего t ошибок, существует только одно такое решение. 0 После того как Л (х) и 0 (х) найдены, декодирование можно завершить любым из методов, предложенных для алгоритма Берлекэмпа ‒ Месси. Блок-схема соответствующего декодера и ред- ставлена на рис. 7.8, где декодер завершается алгоритмом Форне (хотя его можно завершить и иначе). 8~ 
ЯЯЯ ГЛ. 7. КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИНГEMA цЫХО Рис. 7.8. Декодирование кодов БЧХ при помощи алгоритма Евклида. 7.8. КАСКАДНЫЕ (ГНЕЗДОВЫЕ ')) КОДЫ Одним из путей построения блоковых кодов с большими длинами является каскадирование кодов. Этот прием состоит в сочетании кода с символами из малого алфавита с кодом с символами из ') Гнездовые (nested) коды называются также каскадными (concatenated) кодами, поскольку кодеры и декодеры для них группируются в каскады. Мы предпочитаем резервировать термин «каскадный» за каскадными кодовыми сло- вами, которые выписываются одно за другим, образуя единую цепочку. [По- скольку в русскоязычной литературе по теории корректирующих кодов термин «гнездовые коды» вообще не применяется, а термин «каскадные коды» является общепр инятым, мы будем везде пользоваться последн им. ‒ Перев. ] 
7.8. кАскАднык (гнкздовык) кодb> яя9 q~-очный суперканал Рис. 7.9. Каскадное кодирование. алфавита с ббльшим объемом. Представим себе последовательность д-ичных символов длины АК. Эту последовательность можно раз- бить на К блоков по Й символов и рассматривать каждый такой блок как элемент q~-ичного алфавита. Последовательность из К таких элементов кодируется (N, К)-кодом, заданным над полем GF (q"). Затем каждый из N получившихся q-"è÷íûõ символов представляется в виде последовательности из Й д-ичных символов и кодируется q-ичным (n, Й)-кодом. Таким образом, каскадный код имеет два различных уровня кодирования. Итак, суть каскадных кодов состоит в следующем. Пусть при передаче по д-ичному каналу в качестве внутреннего исполь- зуется (n, Й)-код. Этот код, заданный над GF (q), содержит ф слов. На вход внутреннего кодера подается последовательность й сим- волов, которые могут рассматриваться как один элемент поля GF (q~). Этот q"-ичный символ поступает на внутренний кодер, а затем выходит из внутреннего декодера (возможно, с искаже- ниями). Таким образом, систему из внутреннего кодера, канала и внутреннего декодера можно рассматривать как некий супер- канал с большим входным/выходным алфавитом из поля GF (ф). Для передачи сообщений по такому суперканалу могут быть построены суперкоды. На рис. 7.9 для передачи по суперканалу сообщения кодируются (М, К)-кодом над полем GF (q~). Примеры. Пусть внутренним кодом является исправляющий 2 ошибки (7, 3)-код Рида ‒ Соломона над GF (8), а внешним исправляющий 3 ошибки (511, 505)-код Рида ‒ Соломона над GF (83) Полученный из этих кодов каскадный код над GF (8) имеет параметры (3577, 1515) и исправляет любую конфигурацию 11 ошибок, а также очень большое число конфигураций с ббль- шим числом ошибок. На рис. 7.10 наглядно представлено строе- ние кодового слова. Заметим, что в действительности кодовое слово является вектором, состоящим из 3577 восьмеричных сим- волов. На рисунке это слово изображено в виде двумерного мно- жества только для того, чтобы продемонстрировать способ построе- ния слова каскадного кода. 
ЯЗО Гл. 7. кОДы БОУЗА ‒ чОУДхУРи ‒ хОкВи ИГемА 511 символов Слово ьнешнего кода 5l2-очныо символ Восьмеричная буква лово внувреннего кода Рис. 7.10. Каскадный код, построенный из (511, 505)- и (7, 3)-кодов Рида‒ Соломона. Другой пример кодового слова каскадного кода представлен на рис. 7.11. Этот код используется при передаче по восьмеричному каналу. Он получается из (7, 4)-кода Рида ‒ Соломона над GF (8) и укороченного (22, 18)-кода Рида ‒ Соломона над GF (4096). Кодовое слово содержит 72 восьмеричных информационных символа и имеет длину, равную 154. Отметим, что все множество кодовых слов после внутреннего кодирования составляет одно кодовое слово каскадного кода. Принятое сообщение, представленное на рис. 7.11, в резуль- тате прохождения по каналу искажено ошибками и стираниями. Приемник объявляет символ стертым, если он не удовлетворяет каким-либо внутренним проверкам на соответствие этого символа правильному. Нестертые символы могут оказаться либо правиль- ными, либо ошибочными. На рис. 7.11 позиции стираний отме- чены прочерками, а ошибочные символы подчеркнуты. Ясно, что декодер знает позиции с прочерками, но не знает, какие сим- волы подчеркнуты. Декодирование с исправлением стираний будет рассмотрено в $ 9.2. Этот пример демонстрирует большие возможности каскадного кода, поскольку с его помощью удается успешно декодировать даже столь искаженное сообщение. Заметим, что длинные последо- вательности стираний могут быть вызваны случайными сбоями Исходные данные ‒ 72 восьмеричных символа 0123456765432!00!2 3456765432l0012345 676543210012345676 543210012345б7б543 
Кодовое слово внешнего (22,18, 5)-кода Рида ‒ Соломона над GF (4096) (каждый столбец представляет один символ, провероч- ные символы расположены в первых четырех столбцах) Кодовсе слово внутреннего кода ‒ 22 кодовых слова (7, 4, 4)- кода Рида ‒ Соломона над GF (8) (каждый столбец представляет одно кодовое слово, проверочные символы расположены в первых трех строках) 7767 4!4541042543626414 4456 047265242154346047 2252 461711253073322461 Принятое сообщение с ошибками и стираниями 4 7 ‒ 7 43 ‒‒ 04 ‒‒ 10012245 40 †26I65432 †††4 †0 †56 †6 2152523 ‒ 1001 2645676541 Сообщение после кодирования внутренним декодером 04 ‒ 50 ‒ 234 567674321001 24 ‒ 5 3 ‒ 5 Ь765433! 0012345 40 †�26 †6!00!2345676 21 †�25 †321001264567 Сообщение после кодирования внешним декодером 012345676543210012 345676543210012345 676543210012345676 '5432100!2345676543 Рис. 7.11. Восьмеричный каскадный код. 0465 2465 4002 !72 012345676543210012 345676543210012345 676543210012345676 543210012345676543 4 †4541 †4214 †62 ОД72 ††24245434 4417112535733 †24 160 
Яы 3 Л. 7. КОДЫ ЬОУЗА ‒ ЧОУДХ~~ И ‒ ХОКВИНГЕМА в приемнике или случайной интерференцией при построчной передаче символов. Однако поскольку внутренний кодер форми- рует столбцы, такой способ передачи требует использования так называемой перемежаю.Чей пампти (corner-turning memory) между внутренним кодером и каналом. В такой памяти слова внутрен- него кода записываются в столбцы до тех пор, пока не будет построено все кодовое слово каскадного кода, которое затем построч но считывается и з памяти в канал. Используя каскадный принцип построения кодов, можно даже сочетать блоковые и сверточные коды. В гл. 12 будет описан простой сверточный код с декодированием по Витерби, хорошо исправляющий отдельные ошибки в длинных последовательно- стях двоичных символов. В то же время большое число близко расположенных ошибок при декодировании по Витерби приведет к пакету ошибок. Для исправления этих пакетов может исполь- зоваться внешний код Рида ‒ Соломона. Известно, что этот метод каскадирования кода Рида ‒ Соломона и слабого, но простого сверточного кода является мощным орудием конструирования декодеров для каналов с гауссовским шумом. 7.9. КОДЫ ЮСТЕСЕНА Любой код над полем GF (q"') можно превратить в код над полем GF (q), «развернув» каждый д -ичный символ исходного кода в последовательность т о-ичных символов. В результате из ли- нейного (N, К)-кода над GF (q ) получится линейный (mN, тК)-код над GF (q). В кодовом слове минимального веса d~ ненулевых символов запишутся в виде последовательности из md символов, из которых только часть будут ненулевыми. Скорость получен- ного кода будет такая же, как и у исходного кода, а минимальное расстояние будет составлять много меньшую долю длины. Это ~развертывание» представляет собой простой способ по- строения кода, исправляющего многократные пакеты ошибок. Если исходный код имел минимальное расстояние, равное 5, то в результате получится код, исправляющий одиночные пакеты q-ичных ошибок длины т + 1 и многие конфигурации из двух пакетов меньшей длины. Например, (и, Й)-код Рида ‒ Соломона над GF (2 ) развертывается в двоичный (тп, тй)-код, исправля- ющий многократные пакеты ошибок. Однако, как правило, такой код плохо исправляет случайные ошибки. Юстесен обнаружил, что если разумным образом дополнить эту конструкцию, то можно получить хорошие коды. В резуль- тате получился класс кодов, называемых кодами Юстесена, содержащий, как будет показано ниже, некоторые очень хорошие коды. К сожалению, коды Юстесена хороши только при больших длинах и поэтому не представляют особого практического инте- 
7.9. КОДЫ ЮСТЕС Е НА Я'3'3 реса. Эти коды могут служить примером построен и я хороши х кодов с большой длиной. Алгоритмы декодирования кодов Юстесена еще не достаточно разработаны. Кодовое слово (2mN, тК)-кода Юстесена представляет собой [2m x (q~ 1) ]-таблицу элементов поля GF (q). Построение кода Юстесена начинается с выбора фиксированного (N, К)-кода Рида ‒ Соломона, содержащего столько слов, сколько должно содержаться в конструируемом коде Юстесена. Прежде всего построим начинающуюся с кодового слова с = (с„с„..., сн,) кода Рида ‒ Соломона (2 X У)-таблицу над GF (о"): Со С1 С2 ' i Су1 аосо а'с, а~с, ... а" ‒ 'с~,, Каждый элемент этой таблицы лежит в поле GF (~"'). Заменим теперь каждый символ в таблице соответствующим т-мерным вектором-столбцом над GF (q). Получившаяся таблица элементов из GF (q) размера 2т X N будет образовывать одно кодовое слово кода Юстесена. Эту таблицу можно любым удобным образом преобразовать в вектор. После повторения такой процедуры для каждого слова кода Рида ‒ Соломона получится код Юстесена. Прежде всего заметим, что указанная процедура приводит к линейному коду. Это важно, поскольку в этом случае для опре- деления минимального расстояния кода достаточно найти значе- ние минимального веса в коде. Остановимся теперь на той особен- ности конструкции Юстесена, благодаря которой она относится к классу хороших кодов. Поскольку слова кода Рида ‒ Соломона имеют вес не менее N ‒ К + 1, каждая представляющая кодовое слово таблица содержит не менее N ‒ К + 1 ненулевых столб- цов. Яалее, если в двух столбцах таблицы совпадают т верхних элементов, то в этих столбцах т нижних элементов обязательно будут различными. Таким образом, в таблице нет двух одина- ковых ненулевых столбцов. Чтобы оценить минимальный вес кодового слова, допустим, что все N ‒ К + 1 ненулевых столб- цов различны и имеют минимальный возможный вес. Искомая оценка получится суммированием весов N К + 1 2т-мерных векторов минимального веса. Теорема 7.9.1. Ялп минимального расстоянип (2mN, 2тК)- кода Юстесена, построенного из (N, К)-кода Рида ‒ Соломона, при каждом I, удовлетворяющем неравенству 1 g (q ‒ 1) (,",.") М ‒ K+1, / ур имеет лесто щенка d"') Q i(q ‒ 1)', }. С 
ЯЯ4 ГЛ. 7. КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИНГЕМА Доказательство. Кодовое слово минимального веса содержит N К + 1 различных ненулевых столбцов. Таким образом, вес этого слова не меньше веса слова, которое получится при записи в этих N ‒ К + 1 столбцах N К + 1 различных последовательностей дли ны 2т, имеющих минимальный вес. 2m Существует,. способов выбора ~ ненулевых элементов в по- следовательности длины 2т, а число таких ненулевых элементов равняется д ‒ 1. Следовательно, при любом I, удовлетворяющем неравенству 1 ~; (q ‒ 1) ' (,. ) «N ‒ К + 1, i=1 существует столбец веса 1. Минимальное расстояние кода будет не меньше суммы весов I d*) f < (q ‒ 1)< (,. ). рп 2' <' ‒ »" Q ( ) = 2~ <' »" u=o й 2'" („) « Отсюда получаем Яля того чтобы наилучшим образом использовать результат теоремы 7.9.1, требуется помощь ЭВМ. Но для больших значе- ний N вычисление биномиальных коэффициентов даже на ЭВМ оказывается весьма непростой задачей. Сейчас будет предложен другой подход к исследованию поведения кода при больших длинах. (Последующий текст не связан непосредственно с теорией кодирования и необходим лишь для описания асимптотического поведения кода при больших длинах.) Лемма 7.9.2. Длп всех р, удовлетворяющих условию О ( р ( ( 1/2, при~ел~ np - ‒ Чахлое число, имеет л~есто неравенство рп g (") «2 и<» ~=о где Н (р) = ‒ -р log. (р) (1 ‒ р) loge (1 р). Доказательство. Пусть !<, произвольное положительное чи- сло. Справедлива следующая цепочка неравенств: 
7.9. КОды юстесенА ящ Выберем теперь А = log, [(1 р)/р]; тогда и ~ [2 ‒ (1 ‒ P! !Рея [(1 ‒ Р)/Р! + 2Р (o((~ [(1 ‒ р)/р1]и‒ ~=0 = [2 (1 ‒ Р1 1ое~ (1 ‒ P) ‒ Р !се~ Р (2!ое,р + 21окд (1 ‒ Р!)1и ‒ 2иН(р) (p ! 1 р)л что доказывает лемму. CI Лемма 7.9.3. Для любого множества М различных ненулевых двоичных слов длины 2т сумма W весов слов удовлетворяет нера- венству g/ ) 2т/( (/[4 ‒ 22'ë"H(3i!) где /(, любое ч!(сло в интервале (О, 1/2). Доказательство. В силу леммы 7.9.2 в рассматриваемом мно- жестве для любого k из интервала (О, 1/2) число последователь- ностей длины 2т, имеющих вес не более 2m',, удовлетворяет неравенству 2 и>. ( ) <" 22 ин(1! /=1 Таким образом, для каждого Х существует не менее М ‒ 2'"и ~~~ слов веса более 2тХ. Следовательно, сумма весов М слов множе- ства удовлетворяет неравенству W ) 2т/( (/M ‒ 22 и™ (1.!) Лемма доказана. 0 Теорема 7.9.4. Пусть для каждого фиксированного R (О ( ( R ( 1/2) К == [2NR). Тогда при каждом целом т (n, Й)-код Юсп!есена (и = 2mN, Й =- 2тК) имеет скорость не менее R и минимальное расстояние, удовлетворяющее неравенству d*/и (1 2R) (H-' (1/2) о (1)), где о (1) ‒ функция от и, стремя(цаяся к нулю при r - oo. Доказательство. Поскольку К = [2NR), то К) 2NR и, сле- довательно, скорость кода K/(2N) превышает R. Кодовое слово с содержит не менее 1V К + 1 различных ненулевых столбцов, т. е. не менее N К + 1 различных ненулевых двоичных по- следовательносте!! длины 2т. Далее, N --- К -~ 1 ) М (1 ‒ 2R). 
Щв ГЛ. 7. КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИН1ЕМА Выберем N (1 2R) этих последовательностей длины 2т. Тогда условия леммы 7.9.3 удовлетворяются, и из этой леммы следует оценка Р) W) 2тХ [М(1 ‒ 2R) ‒ 2-""ч'">] или 2тн (Х) ) k(1 ‒ 2R) 1 1 ‒ 2Я Полагая 1 lng2 2т приходим к утверждению теоремы. CI Из теоремы 7.9.4 следует важность кодов Юстесена. Эта тео- рема гласит, что для достаточно больших и выполняется нера- венство d*/ï ) 0,11 (1 2R). При фиксированном R ( 1/2 отношение d*/n отделено от нуля при и ‒ ОО. Коды Юстесена являются единственным цзвестным классом кодов с заданной в явном виде конструкцией, для кото- рых установлено это свойство '). Коды Юстесена имеют скорость, меньшую 1/2. Коды с боль- шей скоростью можно получить, выкалывая компоненты исход- ного кода. Получаемые таким образом коды также представляют только теоретический интерес как пример кодов, имеющих хоро- шие характеристи ки при очень больши х дл и н ах. ЗАДАЧ И 7.1. Найти порождающий многочлен g (х) для исправляющего двойные ошибки двоичного кода длины n=31. Использовать примитивный элемент а и примитивный многочлен р (х) = х5+ х'+ 1. 7.2. Найти кодовое слово, соответствующее ннформационному многочлену а5х+ аз для кода Рида ‒ Соломона длины 15, исправляющего одиночные ошибки и построенного по примитивному элементу а поля GF (24). 7.3.а. Найти порождающий многочлен а (х) для исправляющего двойные ошибки кода Рида ‒ Соломона, основываясь на примитивном элементе а поля GF (24) и полагая j() ‒ ‒ 1. ~) Коды Юстесена отнюдь не являются единственным подклассом обширного класса каскадных кодов, обладающих тем свойством, что прн увеличении и оба параметра кода ‒ и скорость, и отношение расстояние~длина ‒ отделены от нуля. Подчеркиваемая автором «явность» конструкции Юстесена в равной мере может быть отнесена и к конструкции Зяблова линейных каскадных кодов, если допустить несущественный перебор внутренних кодов, лежащих íà t.ра- нице Варшамова ‒ Гилберта (см. Зяблов В. В. Оценка сложности построения двоичных л инейных каскадных кодов. ‒ Проблемы передачи информации, 1971, Вып. 1, с. 5 ‒ 13). ‒ Прим. ред. 
ЗАДАЧ И ЯЗУ 6. Используя метод декодирования Питерсона ‒ Горенстейна ‒ Цирлера (ПГЦ), найти многочлены локаторов ошибок, локаторы и значения ошибок, ecли S1 ,~)~ S2 0 $9 и~ и S4 в. Решить задачу п. б, используя алгоритм Берлекэмпа ‒ Месси. 7.4. В $ 7.1 был получен порождающий многочлен (15, 6, 7)-кода БЧХ над полем GF (4). Найти порождающий многочлен (15, 7, 7)-кода БЧХ над тем же полем. 7.5. Исправляющий двойиые ошибки (15, 7)-код БЧХ имеет порождающий многочлен g (х) = х + х~+ х9+ x4+ 1. Комбинируя идеи декодера Мег- гитта и алгоритма ПГЦ, построить декодер, работающий по принципу декодера Меггитта, но использующий последовательность компонент синдрома $,, S2, S3, S4 в расширении поля, а не сам синдромный многочлен з (х). 7.6. Найти порождающий многочлен (63, 55, 5)-кода над GF (8). 7.7. Предположим, что задан код Рида ‒ Соломона с мннимальньпц расстоя- нием 2t+ 1 и что v ‒ целое число, меньшее t. При декодировании требуется исправлять все ошибки кратности до v включительно и обнаруживать ошибки с кратностями в пределах от v+ 1 до 2t ‒ v. Как это сделать, используя алго- ритм Берлекэмпа ‒ Месси? Решить ту же задачу в случае кода БЧХ. 7.8. Показать, что каждый код БЧХ является подкодом над подполем не- которого кода Рида ‒ Соломона с тем же конструктивцым расстоянием. В каком случае скорость подкода над подполем будет такой же, как и у исходного кода Рида ‒ Соломона? Найти в несистематическом (7, 5)-коде Рида ‒ Соломона 16 информационных последовательностей, которые порождают кодовые слова (7, 4)- кода Хэмминга. 7.9. Найти порождающий многочлен для исправляющего двойные ошибки (23, 12)-кода БЧХ над GF (2). (Заметим, что найденный код представляет собой код Голея; он является примером кода БЧХ, у которого минимальное расстояние больше конструктивного.) 7.10. По троичному каналу в каждый момент времени передается один из трех символов: сннусоидальный импульс с нулевой фазой, синусоидальный импульс с фазой 120' и синусоидальный импульс с фазой 240'. Обозначим мно- жество передаваемых символов через (О, 1, 2) и будем считать, что ошибки в ка- нале происходят случайно и с равными вероятностями. Построить исправляющий тройные ошибки код длины 80 для передачи по такому каналу, учитывая, что примитивный многочлен степени 4 над GF (3) записывается в виде р (х) = x4+ х-[- Какова скорость полученного кода? Как использовать этот код для передачи блоков двоичных данных? 7.11. Память на магнитной ленте хранит байты из BccbMH битов как один 256-ичный символ. Построить в этом алфавите исправлякщнй одиночные ошибки (!5, !3)-код над GF (256, а также схему декодера. 7.12. Многочлен у' + уа+! является примитивным многочлспом надбо�(2). Примитивный элемент и = у с минимальным многочленом у'О+ уз+ 1 исполь- зуется для построения исправляющего двойные ошибки кода БЧХ длины 220 = 1 048 576. а. По принятому слову вычислены компоненты синдрома $ — у4 $ у12+ у9+ ув Найти остальные компоненты синдрома. б. Найти многочлен локаторов ошибок. в. Найти позиции ошибок или ошибки. 7.13.а. Найти порождающий многочлен g (х) двоичного кода БЧХ длины и = 15 с d = 7. При построении использовать примитивный элемент u, j() = 1 и неприводимый многочлен р (х) =- х4+ х+ 1. 
ЯЩ ГЛ. 7. КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХОКВИНГЕМА по принятс Й псследователь- б. Пусть при использовании кода из п.а ности v вычислены компоненты синдрома S~ = v (а) = а + а~, Sз = v (u3) = u3 (i) Найти S2 S4 и Sq. (ii) Найти число ошибок v, если (ш) Найти многочлен локаторов (iv) Найти вектор ошибок. S,= v(u)= 1. известно, что v (<3. ошибок. ЗАМЕЧАНИЯ Коды БЧХ независимо открыли Хоквингем [1959) и Боуз и Рой-Чоудхури [1960). Вскоре Горенстейн и Цирлер [1961) установили, что открытые ранее Ридом и Соломоном [1960) коды являются частным случаем недвоичных кодов БЧХ. Поведение минимального расстояния и скорости кодов БЧХ большой длины исследовалось многими авторами на протяжении большого промежутка времени. Коды БЧХ длины qm ‒ 1 становятся неудовлетворительными, когда эта длина оказывается много больше д. )~ля умеренных длин кодов так происходит потому, что в случае двоичных кодов на каждую исправляемую ошибку приходится по- рядка т проверочных символов, а в случае кода с q ф= 2 ‒ порядка 2т прове- рочных символов. Асимптотическое поведение таких кодов несколько лучше, хотя все еще остается неудовлетворительным. Точное изложение этих вопросов потребовало бы значительных усилий. Касами и Токура [1969) открыли бесконечный подкласс примитивных ко- дов БЧХ, для которых граница БЧХ строго меньше истинного минимального расстояния; первым примером такого кода был (127,43)-код БЧХ с d= 29 и д* = 31. Чинь [1970) придумал примеры циклических кодов, которые лучше кодов БЧХ; одним из таких примеров является циклический (63, 28, 15)-код. Впервые процедура исправления ошибок для двоичных кодов БЧХ была предложена Питерсоном [1960), а для кодов БЧХ с произвольным алфавитом‒ Горенстейном и Цирлером [1961]. Чень [1964) и Форни [1965) упростили эту процедуру. Итеративный алгоритм нахождения многочлена локаторов ошибок был предложен Берлекэмпом [1968). Месса [1969) представил этот алгоритм в виде процедуры построения авторегрессионных фильтров. Бартон [1971 ) показал, как осуществить алгоритм Берлекэмпа ‒ Месси, не используя деления, хотя для вычисления значений ошибок деление все равно необходимо. Сугияма, Касахара, Хирасава и Намекава [1975) впервые предложили использовать при декодировании алгоритм Евклида. Велч и Шольц [1979] по- строили использующий разложение в непрерывную дробь декодер, совершенно эквивалентный декодеру, использующему алгоритм Евклида.,другой споссб использования алгоритма Евклида при декодировании был предложен Ман- дельбаумом [1977) и будет рассмотрен в ~ 9.1. 
ГЛАВА 8 КОДЫ, ОСНОВАННЫЕ НА СПЕКТРАЛЬНЫХ МЕТОДАХ Обработка дискретных сигналов основывается на применении преобразования Фурье. Исследование сигналов с непрерывным временем, принимающих вещественные и комплексные значения, существенно связано с преобразованием Фурье; в случае сигналов с дискретным временем аналогичную роль играет дискретное пре- образование Фурье. Яля многих значений п существуют также преобразования Фурье на векторном пространстве последова- тельностей длины п над полем Галуа GF (q). Преобразования Фурье в поле Галуа могут играть важную роль в исследовании и обработке GF (q)-значных сигналов, т. е. кодовых слов. Осно- вываясь на преобразовании Фурье, можно построить теорию кодирования существенно отличным от использовавшегося ранее способом. Циклические коды можно определить как коды, в кото- рых некоторые спектральные компоненты слов равны нулю. декодирование кодов БЧХ и кодов Рида ‒ Соломона также может быть описано на спектральном языке. В данной и в последующих главах коды и алгоритмы изучаются с частотной точки зрения. Пересматривая многие положения с ча- стотной точки зрения, мы можем углубить наше понимание пред- мета и найти альтернативные методы кодирования и декодиро- вания. Частотный подход мы используем также для введения некоторых дополнительных классов кодов. 8.1. ПРЕОБРАЗОВАН ИЯ ФУРЬЕ В ПОЛЕ ГАЛУА В поле комплексных чисел дискретное преобразование Фурье вектора р = (р;, i = О, ..., N 1) с комплексными компонен- тами определяется как вектор Р = 1Р~, k = О, ..., N 1}, задаваемый равенствами N ‒ 1 Р„= Qе ‒ -'"~~"'р;, А=О, ..., N ‒ 1, с=О 
я4О Гл. в. коды; спектрАльные методы где / = у~ 1 . Ядро преобразования Фурье ехр ( ‒ 2п/М-') равно корню степени N из единицы в поле комплексных чисел. В конечном поле GF (q~) элемент а порядка и равен корню сте- пени и из единицы. Проводя аналогию между ехр ( 2пjiN-') и а, получаем следующее определение. Определение 8.1.1. Пусть v = «uz, 1 ‒ ‒ О, ..., и 1«век- тор над GF (q), где и делит q'" ‒ 1 при некотором т, и пусть а элемент порядка и в поле GF (q"'). Преобразование Фурье в поле Галуа вектора ч определяется как вектор Ч =- { V>, j = 0, ..., и ‒ 1}, задаваемый равенствами П ‒ ! V> ‒‒ ~а'ю,, j=0, ..., и ‒ 1. 1=0 Дискретный индекс i естественно назвать временем, à v— временной функцией или сигналом. Аналогично индекс j можно назвать частотой, à V частотной функцией или спектром. В качестве длины преобразования Фурье можно выбрать произ- вольный делитель числа д 1, но наиболее важную роль играют примитивные длины и = q 1. В последнем случае и является примитивным элементом поля GF (q"'). В отличие от поля ком- плексных чисел в поле Галуа преобразование Фурье существует не для любой длины и, так как не для любого и в поле существует элемент этого порядка. Для многих целей, однако, таких элемен- тов оказывается достаточно. Если т наименьшее целое, такое, что и делит q~ 1, то над полем GF (q) существует преобразование Фурье длины и и компоненты этого преобразования лежат в поле GF (q ). К сожалению, для некоторых значений и преобразования, хотя они и существуют, лежат в столь большом расширении поля, что неприемлемы для данного практического применения. В случае дискретного преобразования Фурье преобразова- ние Р вещественнозначной временной функции р является ком- плексным. Аналогично если в случае преобразования в поле Галуа временная функция ч принимает значения в поле ОЕ (д), то ее спектр V лежит в расширении поля GF (д). В применениях, связанных с контролем ошибок, все связанные с декодированием действия осуществляются на самом деле в большом поле ОР (q ), однако начинать мы должны с вектора на входе канала, т. е. в малом поле ОР (д). Теорема 8.1.2. Над полем GF (q) характеристики р вектор и его спектр связаны соотно~иениями и†l n ‒ I V> ‒‒ f а'~о;, u; =- (1/n) Q а ‒ Чб;, =-о /- ‒ о 
8.1. ПРЕОБРАЗОВАНИЯ ФУРЬЕ В ПОЛЕ ГАЛУА Я4~ Доказательство. В любом поле х" ‒ 1 = (х ‒ 1) (х ‒ ' — х"-'+ .. + х+ 1). По определению элемента а элемент а' при всех r является корнем многочлена в левой части. Следовательно, для всех r =ф= 0 по модулю и элемент а' является корнем последнего многочлена. Но это эквивалентно равенству л ‒ 1 f а'! = О, r ф: 0 (mod n); /==0 если же r = 0 по модулю и, то и ‒ 1 f а'>' = п (то4 р), !=0 что всегда отлично от нуля, если и не кратно характеристике р. Комбинируя эти равенства, получаем и ‒ 1 !г ‒ 1 л ‒ 1 !! ‒ 1 ~ а ‒ '! f а">u„= f о„~ а<"-'» = (n mod р) о;. j 0 h=-0 h=0 j=0 Наконец, д"'--- 1 ==- p" 1 кратно и и поэтому и не кратно р. Следовательно, п ~ 0 (mod р). Это доказывает теорему. D Преобразование Фурье обладает многими сильными свой- ствами, которые переносятся на случай конечных полей. Примером является свойство свертки, доказываемое в приведенной ниже теореме. (Можно доказать и обратную теорему, поменяв местами временную и частотную области). Теорема 8.1.3 (теорема о свертке). Предположим, что е,= ‒ fg;, i =O,...,n 1. Тогда Л ! Е> = (1,'и) ~, 'Р<<;,>>G>„j = 0, ..., п ‒ 1, 1=0 где двойные скобки означают, ч>по индексы вычисляются в арифл:е- тике ио модулю и. Доказательство. Найдем преобразование Фурье вектора с компонентами е, = f,g,: Л ‒ 1 л ‒ 1 Е! ‒ g а'>f; (1/п) ~,' а ‒ '"б„ i=0 Й=О == (1/и) g G>, g а' <> ">!< = (1!и) g G>F«t .;». =0,i=0 1=0 
е24е2 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Заметим также, что выбор / = О в формуле свертки и ‒ ! П ‒ ! E; = f а'>fig, = (1!и) f Р<<>-»»бл i=0 h.=-0 приводит к формуле типа равенства Парсеваля: Теорема 8.1.4 (свойство сдвига). Если {u;} ~ { V,} является парой преобразования Фурье, то парааа преобразований Фурье являются также {а'иг} { V<<>+»> } Ä {v<«»> } {а>~'г}. Доказательство получается непосредственной подстановкой. ~] Иногда вектор v задается многочленом и (х). С помощью пре- образования Фурье в поле Галуа многочлен и (х) = u„,õ"-' + + и,х + vn может быть преобразован в мпогочлен V (х) = Vniõ"' ' + + Vix + VO который называется спектральным многочлено.и или ассоцииро- ваннылг с и (х) лгногочленолг. Как устанавливает следующая тео- рема, свойства спектра тесно связаны с корнями многочленов. Теорема 8.1.5. ( i) Элеменпг а> является корнем л:ногочгена v (х) тогда и только тогда, когда j-л частотная компонента V~ равна нулю. (г>) Элелген>п а " являemcs корнелг л>ногочлена V (х) тогда и Доказательство утверждения (i) очевидно, так как v(u>) = f v;tx'>' = V>. 6=0 Утверждение (») доказывается тем же путем. П Таким образом, если один говорит о корнях многочлена в ко- нечном поле, а другой о равных нулю спектральных компо- нентах, то в действительности они говорят об одном и том же, хотя терминология и точки зрения различны: в первом случае на первый план выдвигается разложение многочленов, во вто- ром ‒ ‒ преобразование Фурье. 
8.2. ОГРАничения сопРяженности Я43 8.2. ОГРАНИЧЕНИЯ СОПРЯ)КЕННОСТИ И ИДЕМПОТЕНТЫ Преобразование Фурье длины и над GF (q) принимает значения в расширении поля GF (q ). Если мы начнем с произвольного и-мерного вектора над GF (q") и вычислим обратное преобразова- ние Фурье, то в общем случае не получим временного вектора над GF (q); возможны компоненты из большего поля. Нам надо найти ограничения на спектр, которые бы гарантировали попада- ние компонент временного вектора в GF (q). Ограничения такого рода знакомы по полю комплексных чисел. Напомним, что в поле комплексных чисел спектр P (f) имеет вещественное обратное преобразование Фурье тогда и только тогда, когда Р* ( ‒ f) = P (f). Следующая теорема описывает множество ограничений, которые называются ограничениями (или условиял и) сопряженности и устанавливают аналогичное условие для конечного поля. Теорема 8.2.1. Пусть V есть и-мерный вектор с компонен- тами из GF (q ), где и делши q"' 1. Тогда обратное преобразо- вание Фурье v является вектором с колтонентами из GF (q) тогда и только тогда, когда выполняются следующие равенства: 4' Vj=V<~„)), j =o, ..., и ‒ 1. Доказательство. По определению и ‒ 1 V> ‒.‒ g а' v;, j=0, ..., и ‒ 1. i=o В поле характеристики р для любого целого r справедливо равен- ство (а + b)> =- a>' + bp'. Далее, если v, ‒ элемент поля GF (q), то vq = v, при всех ~. Следовательно, л ‒ 1, q и ‒ 1 и ‒ 1 1/', = ( ~ а Ъ; = g u" Iиvq,' = f а~ 'u; = V~Ä~~. ~i=0 i=0 i=o Обратно, предположим, что Vj =-= V((qj)) для всех j. Тогда n ‒ 1 n ‒ 1 ~' а'~~оЧ = f а'~'v~, / = О, ..., и ‒ 1. c=o i=o Пусть A. = ду. Так как д взаимно просто с и=д'" ‒ 1, то, когда j принимает все значения от 0 до и 1, число А также принимает все значения от 0 до и ‒ 1. Следовательно, л ‒ 1 л ‒ 1 f а'"оЧ =- ~,' а' и;, Й = О, ..., п ‒ 1, i=- О i=0 
~44 гл. в. коды; спи ктеАльные методы и в силу однозначности преобразования Фурье v? = vg для всех i. Таким образом, v< являются корнями многочлена х~ х при всех г, и этими корнями исчерпывается все поле GF (q). Q Чтобы применить данную теорему, следующим образом ра- зобьем числа по mod п на подмножества, известные под названием классов сопряженных элементов: А~ ‒ ‒ {), iq ..., iq" ~ где m> наименьшее целое положительное число, удовлетворя- ющее равенству jq"'г = j (то4 и). В силу конечности поля такое m> всегда существует. Например, если д =- 2 и п = 7, то классы сопряженных элементов имеют вид А, = {0}, А, = {1, 2, 4}, А, = {3, 6, 5}. Класс сопряженных элементов А> выделяет в спектре множе- ство частот. Назовем это множество частот хордой. Теорема 8.2.1 утверждает, что если временной сигнал принимает значения в поле GF (д), то значение спектра в одной из частот хорды определяет значения спектра при всех частотах этой хорды. В следующем параграфе мы воспользуемся этим, чтобы дать спектральное описание кодов. На рис. 8.1 приведены классы сопряженных элементов для некоторых малых полей в несколько измененных обозначениях. Яля того чтобы подчеркнуть получающиеся симметрии, классы сопряженных элементов выписаны с использованием отрицатель- ных целых чисел. При желании на рис. 8.1 отрицательное целое число j можно заменить положительным целым п + у. Классы сопряженных элементов по модулю 21 включены в таблицу для напоминания того, что в качестве модуля можно выбирать любое целое число. Заметим, что если члены классов сопряженных эле- ментов по модулю 21 умножить на 3, то эти классы становятся классами сопряженных элементов по модулю 63. Определение 8.2.2. р-ичнылг следом элемента Р поля GF (q"') называется сумма 3=0 Согласно теореме 4.6.10, q-я степень q-ичного следа элемента {) равна q-ичному следу элемента Р, и, следовательно, q-ичный след является элементом поля GF (q). Если класс сопряженных эле- ментов, которому принадлежит Р содержит пг элементов, то 1г (P) равен сумме всех элементов этого класса сопряженных элементов. В противном случае число элементов в классе сопряженных делит т, и кратность, с которой каждый элемент входит в след, 
8.2. О1 РАЙ И Ч Е Н ИЯ СОП РЯ ЖЕ Н ИОС1'И Я46 Ло модулю 7 По модулю 6З 261 ( ) ( ‒ '5, 19. 27,' ‒ 20, ‒ 12, ‒ 4, ‒ 18, ‒ 10, ‒ 6. 29~ зо 31~ 23, )7, 15, 16, ‒ 24, ‒ 3 ‒ 2 -3! ) ‒ 30~ ‒ 29( ‒ 28> l1o модулю 15 16, 15, )7, 14, 8, 24, ‒ 23, ‒ 7 ( ) о' I 1 ( 5. ‒ 2. ‒ 4, 7', 4. ‒ 7', 6, ‒ 3, ‒ 6,' ‒ 5,' 26~~ 25, 13, 21, По модулю (21 Ilo модулю 31 ~ ‒ 21, 13' 14~ 15', 45, -)о, ‒ 6. ‒ 9, ‒ 41, ll, ‒ 12, ‒ 4. ',‒ )9, ',-)3, ‒ 25, 23, ‒ 50, 46, ‒ 49, 7, ‒ 8. ~ ‒ )), 39, ‒ 15', ‒ 14,' ‒ )3', 55, ‒ )7, -56,. ) 5, ‒ 9, ‒ 7, ‒ 5, 2. 4, 6. 1, )о, -)), 8. ‒ 7, 9, 47, -24, -48, ‒ 8, ‒ )б, 8, 24, 40, Ло модулю 2Л 56, 9' ‒ 4. ‒ 8, 5, 10,' ( ( ) о' 1 ( ( ‒ 6, ‒ 55, ‒ 39, 9, 11, 13, 19. 2) 4. 8. ‒ 5, ‒ 10', ‒ 9,' ‒ 23, 25, 6, ‒ 7' 4). Рис. 8.1. Б;лассы сопряженных элементов. равна получающемуся частному. Из определения следа и теоремы 4.6.10 следует, что tr y + у) = гг (~3) + (г (у) и что все сопряженные элементы имеют один и тот же след. ', ‒ 5. , -3. о', ( 3 5. ‒ 9, ‒ 5. ‒ 3, ‒ l. о1 1, 3, 5, 7. 9, ll, ‒ ! 0', 1, 3, 5, 7' 2, 6, 10, )4, !8, 22, -2l } ‒ 42, ‒ 38. ‒ 2б, ‒ 22, ‒ 18, ‒ 14, -)о, ‒ 6, ‒ 2, 6, )о, 14, 18, 22, 26, 38, 42, 4, 12 20, 28, -27) ‒ 19, 43, 51, ‒ 52, ‒ 44, ‒ 36, ‒ 28, ‒ 20, ‒ 12, ‒ 4, 4, 12, 20, 28, 36, 44, 52. ‒ 51, ‒ 4З. 16, 48, ‒ 47, ‒ )5, )7, 49, ‒ 46, 50, ‒ 45, ‒ 37, 27, ‒ 35, 29, ‒ 34. зо, -33, 31, ‒ 32, 32, ‒ 31, 33, -3О, 34. ‒ 29, 35, ‒ 27, 37. 53,' 54) 57,' 58) 59~ 60,' ь)~ 62) бз~ -631 ‒ 62,' ‒ 61} -60) ‒ 59~ -58~ ‒ 57,' ‒ 54~ ‒ 631 
$4Q Гл. в. коды; спектРАльные л1етодь! Теорема 8.2.3. Над GF (Ч"') q-ичный след принимает в каче- стве своего значения каждое из чисел поля GF (q) одинаково часто, а именно д" ‒ ' раз. Доказательство. Пусть у ‒ элемент поля GF (q), à р эле- мент из GF (q~), след которого равен у. Тогда р является корнем многочлена Степень этого многочлена равна д'" ‒ ', и, следовательно, он имеет не более д'" ‒ ' корней. Но всего существует только q таких много- членов, и каждый из элементов поля GF (q ) является корнем одного из них. Это доказывает теорему. О Одно из полезных свойств следа устанавливает следующая теорема. Теорема 8.2.4. Квадратное уравнение х'+х+а = О, где а алеиент поля GF (2 ), имеет корни в поле GF (2 ) тогда и только тогда, когда двоичный след злемента а равен нулю. Доказательство. Пусть р корень этого квадратного урав- нения. Вычисленный в точке р двоичный след соответствующего квадратичного трехчлена равен tr (р' ~- р + а) = tr (О) = О. По отношению к сложению след дистрибутивен, а следы элементов р и P' являются одним и тем же элементом поля GF (2). Следова- тельно, tr (а) = О. Обратно, каждое р является корнем многочлена х' + х + а для некоторого а, а именно для а, равного (P + P'). Всего имеется 2 ‒ ' таких а, для которых след равен нулю, и этого в точности хватает, чтобы составить 2 ‒ ' уравнений с двумя корнями каждое. Доказательство закончено. О Предположим теперь, что мы выбрали хорду А„и определили спектр О, /~Аи 1, ~~ А~. Согласно теореме 8.2.1, обратное преобразование Фурье для этого спектра является вектором над GF (q), который можно представить многочленом и (х). Так как в частотной области свертка и" (х) преобразуется в произведение Wj, то W,' =- p';, 
В.з. спактрАльное опислние ~4у и, следовательно, многочлен и (х) обладает следующим специаль- НЫМ СВОЙСТВОМ: ыР (х) = и (х) (mod х" ‒ 1). Произвольный многочлен и (х), удовлетворяющий условию цй (х) = re (х) (mod х" 1), называется идемпотентом. Каждый идемпотент может быть получен следующим образом. Выберем несколько хорд и положим W; =- О, если j принадлежит одной из них, и W; = 1 в противном случае. Обратное преобразо- вание Фурье дает во временной области многочлен, который является идемпотентом, и каждый идемпотент можно построить таким способом. Завершим этот параграф применением полученных результа- тов к циклическим кодам. Теорема 8.2.5. Каждый циклический код содержит в качестве кодового слова единственный многочлен аи (х), такой, что много- член с (х) является кодовыл~ словсл~ тсгда и только тогда, когда с (х) и (х) -== с (х) (mod х" ‒ 1). Многочлен в (х) является идемпотентои. Доказательство. Пусть g (х) ‒ порождающий многочлен, и пусть [О, если g(u~) = О, W~ ‒‒ ~ 1, если g(а~) ,‒6 О. Тогда и (х) является идемпонентом. Его корни совпадают с кор- нями g (х), и, следовательно, он является кодовым словом. Кроме того, Иг~б; -= G; для всех /, и поэтому и (х) g (х) = g (х). далее, многочлен с (х) является кодовым словом тогда и только тогда, когда для некоторого а (х) выполняется равенство с (х) = ‒ а (х) g (х), откуда следует, что с(х) ш(х) =- а(х) w(x) g(x) = а(х) g(x) ‒ ‒ с(х) (mod х" ‒ 1); это и доказывает теорему. 8.3. СПЕКТРАЛЬНОЕ ОП ИСАН И Е ЦИКЛИЧЕСКИХ КОДОВ Каждое слово с (х) циклического кода задается многочленом сте- пени и ‒ 1. В несистематическом виде оно может быть записано как с (х) = д (х) d (х), где d (х) ‒ информационный многочлен 
248 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ 1. Во временнбй области это дает (циклическую) степени k свертку: n ‒ 1 с <t = ~ g«c ‒ Ч)"~ Ф ‒ ‒ О Любой удовлетворяющий этому равенству спектр задает в частот- ной области кодовое слово при условии, что во временной области все компоненты являются GF (q)-значными. В силу произволь- ности информационного спектра единственная существенная роль компонент 6> состоит в том, чтобы определить частоты, в которых стоят нулевые компоненты C. спектра кодового слова. Таким образом, можно дать следующее альтернативное определение циклического кода. Циклическим кодом У называется множество таких слов над GF (q), у которых все спектральные компоненты, принадлежащие заданному множеству так называемых провероч- ных частот g,, ..., у„~, равны нулю. Хотя каждое слово циклического кода является вектором над GF (q), спектр кодового слова является вектором над GF (q ). Следовательно, циклический код может быть определен как мно- жество GF (q)-значных обратных преобразований Фурье мно- жества всех спектральных векторов, компоненты которых в за- данном множестве частот равны нулю. Нельзя выбирать произ- вольный спектральный вектор, у которого стоят нули в заданном множестве частот; обратные преобразования некоторых из таких векторов могут иметь компоненты, не принадлежащие полю GF (q). Для того чтобы кодовое слово принадлежало полю GF (q), выбирать нужно только спектр, который удовлетворяет условиям сопряженности, приведенным в теореме 8.2.1. Коды БЧ Х являются такими циклическими кодами, в которых проверочные частоты выбираются последовательно. Исправля- ющий 1 ошибок код БЧХ длиной и = д"' 1 определяется как множество всех кодовых слов над GF (g), спектр которых равен нулю в заданном блоке из 2t последовательных частот. Яоказательство границы БЧХ в частотной области предста- вляется простым и интуитивно очевидным. Следует, пожалуй, привести это второе доказательство, чтобы выявить различие в подходах и методах. Теорема 8.3.1 (граница БЧХ). Пусть и делит q~ ‒ 1 при некопгоро.гг пг. Едггнственны.гг веаггором из GF" (q) веса не более саскт~а, яв,глется н~левой векто~. Следовательно, в частотной области операция кодирования может быть записана в виде произведения с, = a,-o,. 
8.3. СПЕКТРАЛЬНОЕ ОПИСАНИЕ 249 Доказательство. Обозначим через i„..., (,, индексы ч ненуле- вых компонент вектора с, v ( d ‒ 1. Определим в частотной области вектор, обратное преобразование Фурье которого содер- жит нулевые компоненты для всех частот ~, для которых с~ =ф= О. Такой вектор может быть выбран многими способами. Один из возможных выборов основывается на многочлене локаторов И (х): И(x) = Ц (1 ‒ ха '~) = И,,х'+И,,,х~ ‒ ' -{- ~-A1,.т+И,. Вектор Л представляет собой частотный спектр, разумное опре- деление которого сводится к тому, что ero обратное преобразова- ние Х = {3<) равно нулю для каждого момента времени 1, для которого с; ~= О. Выписанное выше произведение во временной области равно нулю (Xic< ‒ ‒ О для 1 = О, ..., п ‒ 1); следова- тельно, в частотной области циклическая свертка равна нулю: Л~С = О. Так как Ap = 1 и Ag =- О при й ) d ‒ 1, то свертка может быть записана в виде Но на блоке длины d 1 вектор С равен нулю. Следовательно, по рекурсии вектор С всюду равен нулю, так что и с должен быть нулевым вектсрэм. П Если п = q ‒ 1 (или п делит q ‒ 1), то код БЧХ является кодом Рида ‒ Соломона; кодовое слово и ero спектр лежат в одном и том же поле. Используя для вычисления спектральных компо- нент информационные символы, можно осуществлять кодирование непосредственно в частотной области. Каждый спектр, у которого 21 последовательных компонент равны нулю, является кодовым словом. Кодирование осуществляется следующим образом. Какие- либо 2t последовательных частот (например, первые 2t) выби- раются для обеспечения необходимого ограничения: символы в этих частотах полагаются равными нулю. Остальные и ‒ 2t координат спектра заполняются информационными символами из GF (q). Тогда обратное преобразование Фурье дает (несистема- тическое) кодовое слово, как показано на рис. 8.2. Поскольку имеется п ‒ 2t частот, в которых записываются информационные символы, то получается (n, п 2t)-код Рида ‒ Соломона. Для более общего случая кодов БЧХ кодирование является более сложным. Теперь мы имеем два поля: поле символов GF (О) и поле локаторов GF (cI), используемое для спектра. Опять 21 последовательных компонент спектра выбираются для того, чтобы 
ЩО Гл. 8. КОДь); спеКтРАльные ~метОДы 2t равнЫХ ниаЮ проверочнь!х компонент Символы поля 6~~д) k инрормацаоннь~х компонент и компонент Преобразование,~ Символь( поля 6У~д) кoi}oeoe слово Рис. 8.2. Кодирование кодом Рида ‒ Соломона с помощью преобразования Фурье. в них записывались нули. Остальные компоненты представляют собой Й информационных символов, которые должны выбираться из GF (q) такими q" способами, чтобы обратное преобразование Фурье принимало значение в GF (q). В качестве иллюстрации на рис. 8.3 приводится соответствующая процедура для двоич- ного кода длины 63. Каждая компонента спектра здесь задается как 6-битовое двоичное число, а вектор спектра представлен как список 63 6-битовых чисел. Кодовое слово также представлено списком 63 6-битовых двоичных чисел, но с тем ограничением, что в каждом 6-битовом числе только бит наименьшего порядка может быть отличен от нуля. Таким образом, в действительности кодовое слово является 63-битовым двоичным словом. Мы хотим задать спектральный вектор так, чтобы сигнальный вектор был двоичным кодовым словом подобного вида. Теорема 8.2.1 дает нам ограни- чения, необходимые для построения подходящего спектрального вектора. Хотя построение кода длины 63 можно выполнить сразу, мы предварительно рассмотрим более простой пример, а именно построим в частотной области (7,4)-код Хэмминга, используя теорему 8.2.1. Такое построение показано на рис. 8.4. В качестве проверочных частот выбраны компоненты С, и С„так что одиноч- ная ошибка может быть исправлена. Информация заключена в частотных компонентах Со и С,. Остальные частоты. заполняются согласно ограничениям, даваемым теоремой: С, = С, = С4 ‒ ‒ 0 и С4 = C~ = С,. Согласно теореме 8.2.1, C-" = С,, и, следова- тельно, C может иметь только значения 0 или 1. Эквивалентное «битовое содержание» компоненты Ср равно одному биту, а экви- валентное битовое содержание координаты С, равно трем битам. Таким образом, для однозначного задания спектра надо исполь- 
8.3. СПЕКТРАЛЬНОЕ ОП ИСА НИЕ Я~1 CuzíàëbHûU вектор (двоичный) t нулей n-> с;= ~а JÑJ i-0 n-I .С = ~: а'~с; i-О С60 С6! С„ с6 С@ 'бг б битное 6 бапов Пяаь саарших Олов равны нцлю Рис. 8.3. Кодирование кодом БЧХ с помощью преобразования фурье. зовать четыре информационных бита кода Хэмминга. Qòè инфор- мационные биты связаны с частотной, а не с временной областью. В общем случае числа по модулю и разбиваются на классы сопряженных элементов: А, = (/, i~, уд, ..., /д"' ). Если спектральная компонента С; задана, то каждая другая спектральная компонента, индекс которой принадлежит классу сопряженных с j э3л~еeмMеeнHтTоoв~, является степенью C и, следова- тельно, не может выбираться произвольно. ~алее, если мощность этого класса сопряженных элементов равна r, то С', =С,, т. е. С'. '= l. Спеквральнь! й векаор (цдовлеаворяющий условиям сопряженносаи) ~'0 С, Сг СЗ С4 с со Cl сг ~ь с~ с5 
ЩЯ ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Рис. 8.4. (7,4)-код Хэмминга. Следовательно, мы не можем произвольно выбирать элемент из GF (q'") в качестве возможного значения для C;: допустимы или только те элементы поля, порядок которых делит д' 1, или нулевой элемент. Порядок каждого элемента поля ОР (д) делит qm 1; следовательно, д' ‒ 1 делит д'" 1, и ясно, что мощность каждого класса сопряженных элементов делит m. Для описания кодера разобьем множество qm 1 чисел на классы сопряженных элементов и выберем по одному числу из каждого класса в качестве представителя. Эти представители единственным образом определяют значимые символы. Для фор- мирования кода БЧХ в качестве проверочных частот выбираются 2t спектральных компонент, которые полагаются равными нулю. Остальные значимые символы являются информационными и могут принимать произвольные значения с учетом огра- ничений на порядок. Все остальные символы, индексы которых принадлежат тому же классу сопряженных элемен- тов, не являются свободными; они образуют связанные ча- стоты. На рис. 8.5 изображена ситуация для поля GF (64). В первый столбец вносятся компоненты свободных частот. Если выбрать С, С„С,, С4, С, и С, в качестве проверочных частот, то получится 
8.3. СПЕКТРАЛЬНОЕ ОП ИСА Н И Е QQ3 СвОЫные часаоаы бцаовое садержание Связанные чаСвОвЫ ~~-о) ,'с, ,'C 3C5 'l C7 ,'C9 t ,С„ f ,с,, f ~C~s f 1 С21 ~ Сг~ ( f ( С27 ( ,с» l б 6 6 6 3 6 6 б 2 6 3 6 C2 C. С„Г,„С,,' Гь Г ~ 2 С24 См С11> Г~о C'2g С4Р С >7 С14~~ С~4 Сг„с,ь С4„C „' с,„с„) С44 Сгс ГсО С17~ Сгg C' 2 С4, С,„С~В Г~о Сьо Сч7 Сс~ С~9', С42 Г Г4ь Ггч С58 Csy (43) Cs4 Г4sI Гьг Сь! C'cg С~~ С47I Рис. 8.5. Структура спектра над нолем QF (64). исправляющий три ошибки код БЧХ. Тогда С,, С7, Се, С1~, С~3, С1„С„, C„, С„и С,1 являются информационными символами. Се и С„должны равняться или нулю, или элементу порядка 7 (так как C' ,= C, и C'„= C,,); эти элементы принадлежат под- палю GF (8). С„должно равняться или нулю, или элементу порядка 3 (так как С„= С„); эти элементы принадлежат под- палю GF (4). С, должно быть или нулем, или элементом порядка 1; эти элементы образуют подполе GF (2). Все остальные элементы являются произвольными элементами поля GF (64). Для опре- деления этих символов требуется всего 45 битов информации. Таким образом, получается (63,45)-код БЧХ, исправляющий три ошибки. После выбора компоненты свободной частоты компоненты связанных частот определяются как ее соответствующие степени. Затем полный спектр преобразуется в кодовое слово. Формиру- емые таким образом 2" кодовых слов являются в точности теми же 24' кодовыми словами, которые получаются кодированием во временной области. Вплоть до момента, пока не понадобится выделение информации, декодеру не приходится заботиться о том, каким способом осуществлялось кодирование. Однако на послед- нем шаге, когда из исправленного кодового слова извлекается информация, декодеру необходимо знать, как эта информация была закодирована. Если кодирование осуществлялось в частот- ной области, то информационные символы должны вычисляться в частотной области. 
204 ~> 8 коды: GHEKTPAJlbHblE методы 8.4. РАСШИРЕННЫЕ КОДЫ РИДА СОЛОМОНА К коду Рида ‒ Соломона в общем случае можно добавить две дополнительные компоненты; мы будем всегда помещать одну из них в начале, а другую в конце кодового слова. Коды, получа- емые путем добавления одной или обеих дополнительных компо- нент, называются расширенныма кодами Рида ‒ Соломона. Каж- дый из добавленных символов может использоваться и как ин- формационный, и как проверочный, т. е. либо для увеличения скорости передачи, либо для увеличения минимального рассто- яния кода. Мы используем этот менее конкретный термин расширенные коды Рида Соломона, хотя эти же коды можно построить увеличением числа слов в кодах Рида ‒ Соломона с ми- нимальным расстоянием d или удлинением кодов Рида ‒ Соло- мона с минимальным расстоянием d 2. В любом случае полу- чится один и тот же расширенный код Рида ‒ Соломона. Надо определить два новых локатора и соответственно ввести некоторые новые обозначения. Если исходные компоненты нуме- руются элементами поля, то для одной новой компоненты можно использовать нулевой элемент поля, так что остается определить еще один дополнительный символ для другой. Обычно исполь- зуется символ oo '). Если исходные компоненты нумеруются показателями степени примитивного элемента, то для обозначения нового локатора нельзя использовать нуль и необходимо ввести два новых символа. В качестве этих двух символов мы будем пользоваться знаками ‒ и +. Таким образом, слово расширен- ного кода записывается в виде < C ~ ~, ~ ), и и = д'" + 1. Вектор, получающийся исключением символов с» и с„будем называть внутренним. Мы будем изучать расширенные коды с помощью свойств преобразований Фурье внутренних векторов, дополняя их свойствами расширенного векторного пространства. Когда мы будем говорить о спектре кодового слова, то будем иметь в виду спектр внутреннего вектора. Сначала дадим определение расширенного циклического кода, а затем ‒ в качестве частного случая ‒ определение расширен- ного кода Рида ‒ Соломона. Определение 8.~.!. Расширенным циклическим (n, Й)-кодом над GF (q) называется линейный код длины п = q"' + 1, каждое '),Яля расширения поля вещественных чисел общепринятым и удобныч соглашением является использование символов +oo и ‒ oo с доопределением на них арифметических операций. Такое расширение не образует поля. То же самое можно сделать с полем Галуа, добавив символ оо и определив опе- рации равенствами a+ оо = оо, а оо = oo. Такое множество не является полем. 
Й.4. РАСШ И РЕ H Н bl Е КОД bl РИДА ‒ СОЛОМОНА Я5б а~ ' аИ-1)2 ач-г а(ч-2) 2 а 0 <q-1+1 <(q-k-1)2 +(q-И-1) (q-2) <(q-lã-1) (q-1) 0 ад ‒ /г а(д- й) 2 а(д-~) (д-2) а(д-й ) (д-1) слово которого удовлетворяет следующим условиям: спектр (С„ С„..., С„,) кодового слова (c, c„c„..., с„„с,) содержит нули в заданном множестве и й 2 позиций с индексами у„..., у„д, а две оставшиеся спектральные компоненты удо- влетворяют равенствам С; = с, С;, = с+. Расширенный циклический код в общем случае не является циклическим. Определение 8.4.2. Расширенным кодом Рида Соломона на- зывается линейный код длины п = q + 1 над GF (q), спектр кодо- вых слов (c, с„с„..., с„„с,) которого при любых целых fp и t удовлетворяет следующим условиям: 1) С,= 0, /=!о+1 " jo+2t ‒ 2; 2)С;,=c; 3) Ct,~р~ i =- с+. Число 2t + 1 называется конструктивным расстоянием рас- ширенного кода Рида ‒ Соломона. Определение содержит огра- ничения, состоящие в том, что 2t 2 соответствующих спектраль- ных компонент должны равняться нулю, а компоненты, окаймля- ющие эти 2t 2 компонент, должны равняться с и с, соответственно. Эти две специальные частоты называются гранич- ными частопгами. По сравнению с кодом Рида ‒ Соломона, который получается удалением с и с, и приравниванием нулю спектральных компо- нент С>, и С;,~ 2 1, расширенный код Рида ‒ Соломона всегда содержит два дополнительных информационных символа при неизменном минимальном расстоянии. Впоследствии мы выясним, что это означает в частотной области, а сначала приведем основан- ное на свойствах матрицы Вандермонда доказательство этого факта. Теорема 8.4.3. Расширенныи код Рида ‒ Соломона над GF (q) является (о + 1, И)-кодом с минимальным расстоянием 2t + 1 = =и ‒ 1+1 =О ‒ 1+2. Доказательство. Сначала предположим дчя простоты, что у„= О. Проверочная матрица кода равна 1 1 1 . ° . 1 1 0 
QQQ ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Если любые d ‒ ‒ 1 столбцов этой проверочной матрицы линейпо независимы, то минимальное расстояние кода равно по меньшей мере d. После исключения первого и последнего столбцов любое множество из д Й + 1 столбцов образует матрицу Вандермонда, которая невырождена, и, следовательно, любые d 1 внутрен- них столбцов линейно независимы. В случае же когда выбранное множество из о й + 1 столбцов содержит первый и последний столбцы, соответствующий определитель можно вычислить, раз- лагая ero по элементам сначала первого, а потом последнего столбцов. Это приведет к выбрасыванию сначала первой, а потом последней строки, и оставшаяся часть снова приводит к матрице Вандермонда, определитель которой отличен от нуля. Следова- тельно, любые д ‒ Й + 1 столбцов линейно независимы, и по- этому минимальное расстояние кода равно по меньшей мере о ‒ 1+2. Далее, если у', + О, то изменения в проверочной матрице при неизменных первом и последнем столбцах состоят в том, что все ее элементы умножаются на а~ . Это, однако, никак не влияет на проведенные выше рассуждения. Н На рис. 8.6 изображен кодер в частотной области для рас- ширенного кода Рида ‒ Соломона. Мы сможем лучше понять эти коды, если будем представлять их кодер как модификацию кодера в частотной области для обычного кода Рида ‒ Соломона с мини- мальным расстоянием d*. Последний кодер определяется блоком Загрузка Х онцзормационнык сомволов (ранцчнь~ц PQHU×ÍÛÖ СИМВОЛ СОМВОЛ Рис. 8.6. Кодер для расширенного кода Рида ‒ Соломона в частотной области. 
8.4. ~Асшивкннье кодм еидА ‒ соломонА щ7 из d 1 последовательных частот, в которых стоят нулевые компоненты спектра. Остальные компоненты спектра принимают произвольные значения информационных символов из GF (q). Для расширения этого кода за счет увеличения числа информа- ционных символов используются две граничные частоты спектра в блоке проверочных частот спектра, которым придаются произ- вольные значения двух информационных символов, причем во временной области кодовое слово тоже дополняется этими двумя символами. В результате получается расширенный код Рида Соломона с тем же минимальным расстоянием д*, но с двумя дополнительными информационными симво- лами. Если же мы хотим расширить исходный код так, чтобы увели- чить его минимальное расстояние, то два дополнительных символа, присоединяемых к блоку проверочных частот, объявляются но- выми проверочными частотами. Значения компонент этих частот не меняются, но во временной области те же два символа допи- сываются к кодовому слову. Это приводит к коду с таким же числом информационных символов, как и у исходного кода, но с минимальным расстоянием d* + 2. Конечно, мы получим тот же самый расширенный код, если будем исходить из кода Рида Соломона с минимальным расстоянием д* + 2 и увеличивать в нем число информационных символов. Кодер расширенного (п, Й)-кода Рида ‒ Соломона во временной области показан на рис. 8.7. В этом случае расширение рассматри- вается как удлинение (n 2, Й)-кода Рида ‒ Соломона с мини- мальным расстоянием d* 2 до кода с расстоянием d*. Яля кодирования Й информационных символов внутреннего вектора кодового слова используется порождающий многочлен с корнями Ьеод Аг инсрормационных символов Рис. 8.7. Систематический кодер для расширенного кода Рида ‒ Соломона. P. Блейхуе 
2б8 гл. е. коды; спектрдльные методы Граничные символы определяются при этом соот- ветственно равенствами и '-1 с = са~ i==0 n'-1 и с = с;а"" i=0 и присоединяются к внутреннему вектору для формирования кодового слова. 8.5. РАСШИРЕННЫЕ КОДЫ БЧХ При построении расширенного кода БЧХ с конструктив- ным расстоянием d мы поступим так же, как и при по- строении расширенного кода Рида ‒ Соломона. Выберем в ка- Теперь рассмотрим коды с канальным алфавитом GF (q), для построения которых используется поле локаторов QF (qm). Ис- пользуя конструкцию подкода над подполем, можно из расши- ренного кода Рида ‒ Соломона над ОР (О'") построить расширение кода Рида ‒ Соломона над меньшим подполем GF (q). В силу ограничений на подполе GF (q) иногда дополнительные компо- ненты расширения нельзя использовать в качестве информацион- ных. А именно они, могут содержать только одни и те же значения символов для всех кодовых слов и, следовательно, вообще могут быть выкинуты. В данном параграфе рассматривается несколько иной подход к построению кода над QF (q) из расширения кода над QF (q ). Этот подход состоит в том, чтобы выбирать из расширения кода Рида ‒ Соломона только те слова, у которых g ‒ 1 компонент внутреннего вектора принимают значения из подполя GF (q). Для двух символов расширения допускаются произвольные зна- чения из поля GF (q"'), но в кодовом слове они записываются в виде начального и конечного «хвостов», содержащих т QF(q)-ич- ных символов каждый. Как мы увидим, такое кодирование не требует особого труда, но допускает декодирование с помощью преобразований и при- водит ко многим хорошим кодам. Мы назовем эти коды расширен- ными кодами БЧХ.,Яля получения из расширенного кода БЧХ исходного кода достаточно выбрать те кодовые слова, хвосты которых равны нулю. Вектор С размерности q'" -- 1 над GF (q'") задает допустимый спектр для внутреннего вектора GF (q)-значного кодового слова, если он удовлетворяет условиям сопряженности 
8 5. РАСШИРЕННЫЕ КОДЫ БЧХ 209 честве проверочных d ‒ 1 смежных частот, начиная с ~',, и поло- жим где с и с, ‒ произвольные элементы поля GF (q~), не наруша- ющие ограничения сопряженности. Остальные спектральные координаты выбираются произвольно, но удовлетворяют этим ограничениям. Тогда внутренний вектор кодового слова получается обратным преобразованием Фурье этого спектра. Внутреннему вектору в кодовом слове предшествует хвост, со- стоящий не более чем из т GF (д)-ичных символов и представля- ющий с, а за внутренним вектором следует аналогичный хвост, представляющий с . Ограничения сопряженности Hà С, или C.,„d > ммооггуут т ппррииввеесстти и к к ттооммуу, что порядок элементов с или с будет меньше, чем д'" 1, так что с или с будут записываться числом GF (q)-ичных символов, меньшим т. В этом случае длина хвоста будет делителем т. При рассмотрении кодов БЧХ мы обычно полагали j, = 1, что, как правило, приводило к лучшим кодам. В данном параграфе мы увидим, что, как правило, выбор у, = О или 1 приводит к хорошим расширенным кодам БЧХ, хотя другой выбор j, иногда будет давать некоторое улучшение. Сначала будем считать /, = О и d нечетным (d = 2t + 1). На рис. 8.8 приведены все расширенные коды, получающиеся из примитивного кода БЧХ длины n < 255. Проверочными часто- тами расширенного кода БЧХ являются С,, ..., С,~,, хотя в приводимых для сравнения примитивных кодах БЧХ провероч- ными частотами являются С1, ..., С,<. В качестве примера по- строим некоторые коды длины и' = 63, используя приведенные на рис. 8.1 классы сопряженных элементов. Так как Co ‒ ‒ Co, То этот элемент должен равняться нулю или единице, так что с является двоичным символом. Cä, (а следовательно, и с,) является произвольным символом поля GF (64), за исключением случаев 2t ‒ 1 =- 9 и 2t ‒ 1 = 21, когда j = ‒ 9, 18, 36, 27, 54, 45 и / =- 42, а с, содержит три и два бита информации соот- ветственно. Далее, 2t ‒ 1 должно являться наименьшим целым числом в своем классе сопряженных элементов, так как в противном случае соответствующая компонента спектра равна нулю и, следовательно, С.,~, также должна равняться нулю. Пусть 1 = 4. Тогда 21 ‒ 1 = 7 и фф..., С, являются проверочными частотами, причем С, = с произвольный эле- мент из GF (2), à C, = с, произвольный элемент из GF (64). Далее, С, соответствует одному проверочному биту, а каждая из 9» 
Я60 ГЛ. 8. КОД Ы; С П E КТРАЛ ЬН Ы E МЕТОДЫ ~~~~«IO~ О~О -.--гЧгЧг-! ~ ~ г! I - Й~ЛСОЕ ~О И И ~ е! г, г, Е ! о о о о г-- о о о I I l I Е I l I ро I ‒ ИО~ СО~ И И ч~ «! е~ г! Е ! г«'3 ««'3 г~3 г«'! г«'3 ««'3 ~О ~О 1О '40 ~О 1О ~О 00 ~с ~3 г«'3 1О О Ch г» и г~~ Ch !'» и (ь !» рр c~å 7~ ‒ r ! ~ ~ ~ и с~с l x, cl о о ~О ~О - ~О ° ~м юе гЧ Р'! ИГ»ф~р«ЪИГ(5«!» Ch «~~И ИW~~ЕЧ ‒ ОЕ CI OOI ! СИ е.! «.Ч ~! е ! ~! г! ~.! - ‒ ‒ ‒ « ' ~О '' ~О A ГЧ гЧ ф» гръ «~3 Фр1 ««ъ 33333333333322 г, и г» ~О И ~ ъД) е ° ~О гЧ «=Ч ~ л л л ° а4 Ю'Ю ° М fVj фФ! ЪщюФ .о ИИИ ИИИ r! rlr! р») ° ° 1 оо vl r ! О ~С е> W г ‒ r I rI c, ~ v! v> Vl Qn М о l о М r! r! о сл ,ю И «г» OOoO Г! A ° -в г- О v„ V, Г, г«р Г!И X ~7~ OO Г- lr ИИ «~l «~У Г~i о V, ° Я~ ° ° И И г~е ° ю Ю лл ° ° ° Vi Þ Þ г~ф г~) о~-g г г г ГЧ гЧ гЧ фД г»' г» ГЧ гЧ х г гл» ~ И ~ р ~ю'. 2 г р r4 рЕ v„Х Qc г- г- г- гЧ гЧ ОО 00 ~«г l l~ Xl й;~« в х О. Ц) Л э О о а CL )Р з: ~ РС -з- Я ью Ю Я gC3 р О CL !!.' !Л фк a & ~ !О Л З О o ' CL р Р Зх Е -р Ю X CL. C ~К Щ О~О Ю «;у «С) Ф О Х CL «:Ф Зк Л ~ ЕЮ Л Я «ю р О О~,К С «Q Ю ХУ, Ю 7 ~(О ~с Э О . ° Э с~ CL l~ хх ЮФ цЯ =~ «е~ ЗО ° ) У Ю CL 1 Я Ю У ,ОК =Э «р- ° Я LCI ~в З' О З У CL (71 е~ ~ ««'3 г~у ~'! r'! r'I И И И И И И r'4 г' ! г'! «~1 И Г'» Яi Г' Ch ГЧ ~ O Ch Ch'OO Г'» Г'» г~! ~ ! г'! ~ ~а ° а «ю ИИИ И И ИИИ ИИа ИИИИИ еЧ е.! r ! r i r.! r ! е ! r ! 
86. РАСЩ ИРЕН Н Ы Е КОДЫ БЧХ 261 ч астот С„С>, С;., и С7 соответствует шести проверочным битам. Следовательно, п == 63 + 1 + 6, и мы получаем (70,45)- код с минимальным расстоянием, равным по меньшей мере 9. П~сть t == 8. Тогда 2t ‒ ‒ 1 --= 15 и проверочными частотами являются С„, С„..., С,„, причем С„== с ‒ произвольный эле- мент поля GF (2), à C„- c+ ‒ произвольный элемент поля GF (64). Яалее, С, соответствует одному проверочному биту, каждая из проверочных частот ффС~, С,, С„, С,з и С,; соот- ветствует шести проверочным битам, а С> соответствует трем проверочным битам. Следовательно, получаем (70,24)- код, минимальное расстояние которого равно по меньшей мере 17. Второй пример иллюстрирует случай, когда конструктивное расстояние расширенного кода БЧХ меньше минимального рас- стояния исходного кода БЧХ. На рис. 8.8 имеется несколько таких случаев, и это происходит всегда, когда код БЧХ с кон- структивным расстоянием d совпадает с кодом БЧХ с конструк- тивным расстоянием d + 2. Положим теперь у, = 1. При таком выборе у, и с,=ф'=0 минимальное расстояние кода четно, так как правая проверочная частота должна иметь нечетный индекс. Чтобы сделать минималь- ное расстояние нечетным, добавим проверку на четкость для битов одного из хвостов. дополнительный проверочный символ позволит декодеру обнаружить ошибку в таком хвосте. Этого достаточно, чтобы увеличить на единицу минимальное расстояние кода. Мы не будем здесь доказывать этот факт, а отложим его доказатель- ство до ~ 9.3, где будет описана процедура декодирования d/2 ошибок. Существование такого декодера является доказательством возможности увеличения на единицу минимального расстоя- ния. Все расширенные коды с у, = ‒ 1, получающиеся из примитив- ных кодов БЧХ длины и < 25э", приведены на рис. 8.9. Были рассмотрены также другие значения для у„но в диапазоне и < 500 при d < 29 не было найдено других интересных случаев. Единственным исключением является GF (64). Прн j„= ‒ 9 можно построить (70, 20, 21)-код, который является расшире- нием кода БЧХ и лучше всех известных кодов с такими же пиk. На рис. 8.10 изображен кодер для расширенного (п, Й, d)-кода БЧХ. В этом кодере используется порождающий многочлен (n', k, d ‒ 2)-кода БЧХ, корни которого расположены в точках a~o+', ..., u> +~-'. В хвост кодового слова дописываются зна- чения спектра в граничных частотах. В случае необходимости к одному из хвостов можно дописать его проверку на чет- ность. 
262 ГЛ. 8. КОДЫ: СПЕКТРАЛЬНЫЕ МЕТОДЫ ~ О ~О Г 3 И » «P Н; Г'3 Г'3 W W сГ сГ ч1 И‒ И С С О> ~Г ОО и ~ m О и и сГ г 3 е~ Г.! Г ! ~О О ~О О ~3 'О ~С МР «г «г». г'~ ГЧ C г~ г ‒ и р ИЧ1~~. «~~ГЧ Г~ Г~3 <~1 С~) ~ ~3 ~С~О~С~С О~С О Х СЕГЧOX СЕ00 ОЕГЧО Г ! ~ ~ И И С Г l aO О~ О‒ Г'4 Г Г4 Г' »ГЧГ! Д С ао О Гч Е С оо О О ае О Г.! ЙQ&&Гч~ О(7~О~ООг' г' ~О ГЧ ГЧ Г'! ГЧ ГЧ ГЧ ГЧ ГЧ ГЧ ГЧ P'3 ГЧ ГЧ ГЧ f'l ОО Г! ГЧ ГЧ Г3 Г Г IГ It!leÃ Г ГГ ГЧ ГЧ ГЧ Г'4 ГЧ ГЧ ГЧ ГЧ ГЧ ГЧ ГЧ ГЧ ГЧ C Г'4 CP И О И Г'4 Г'4 ГЧ ГЧ ГЧ ~г ~ ~ Г'! Г1 Ev cv И И И ИИИ ГЧ ГЧ f'I 1,С Г3 ГЧ ° ° Г~~ Ф о Г ( о М ~С п О I ~;3Г3 Ч1 rl СЛ ~С П - Г3<3ЕЗФИИ~С ! t ХФ~ ~С Ch ГЧ И r! Ooo ‒ е г ° ~ ц1 Ф7~ (щ г~ ГЧ Г4 Г'! Г'! ГЧ Г'! ГЧ Г ! О ~ ~О О' г' ~О vl cp Pl Г'4 Г'! P 1 cP W W ct 8 О~ C'I И OO ao I- г' г~ г ! г ГЧ Г'1 t I Wl Г ! о~ «ю 3: k ° ~С Я г Ои Г Г Г Г'3 Г'! WI g гп г г' ГЧ ГЧ И И«ИИ Г3 Г3 ИГФ е~И г- cd - ~ ~ y e Г'! ГЧ ГЧ 'ГЧ ГЧ ° р 43 фк щ Г ~ le З® ~ х С3 CL l~ Б и ~ Х г Я 3,С3 ~ю :Е «р =5 С" ' ° .'3 Б ф тС г ~ LC3 ~ ЛЗ =3 ю 'л х CL g) «Г О =9 о х CL I~ ~õ Р Е ц~ Л Q гю С3 CL 33~ с Г,Игал<,игорь е,иГ~л Г'3 ~3 Г'! ГЧ Г ! l~ J3 т ~~ к CL ~ ю B лэ LJ CI аС CL 1 «ф J) р )( Е~ Р ~ ICE о SC с 1Д Л ),~~ X О3 3~ ю Я ю сэ 3!» с5 CL Ю х Ю Е =~ 3,О ~ю X д 3С (: ф1 ° фг3 ГЧ ГЧ ИИ ИИ ГЧ Г.3 tСЛ c ~ ~! ООО aolг О те «ю ИИИИИИИ И ИИ ИИ ИИ ГЧ Г'! ГЧ ГЧ ГЧ ГЧ ГЧ И ! И И И И И rV ГЧ 
8В. АЛЬТЕРНАНТНЫЕ КОДЫ QQ3 ~/И n'+m +m+ олц n'+m +m+e 1 Ввод Я информационны О!МвОлов йобавленце проверкц на чевносвь Юля символа c ) C =(C'0, C-g,C2,,..., C-m) 1 J Кодовое слово из и бигпоо Рис. 8.10. Систематический кодер для расширенного кода ЬЧХ, 8.6. АЛЬТЕРНАНТНЫЕ КОДЫ Код БЧХ длины и = д"' ‒ 1 над GF (q) представляет собой огра- ничение на подполе GF (q) кода Рида ‒ Соломона над полем GF (q"'). Иными словами, код БЧХ состоит из всех GF (q)-значных слов кода Рида Соломона. Поэтому минимальное расстояние кода БЧХ по меньшей мере равно минимальному расстоянию исход- ного кода Рида Соломона. К сожалению, коды БЧ Х большой длины с большим минимальным расстоянием не содержат нужного нам числа кодовых слов. Точнее говоря, в любой последователь- ности кодов БЧ Х растущей длины с ограниченной скоростью (все коды последовательности удовлетворяют условию A n o R' для некоторого фиксированного R') нормированное минимальное расстояние d~ln стремится к нулю с ростом и. Исходный код 
QQ4 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Рида ‒ Соломона содержит достаточно кодовых слов, но его огра- ничение на подполе либо содержит мало кодовых слов, либо характеризуется плохой дистанционной структурой. В данном параграфе рассматриваются иные пути увеличения минимального расстояния при другом способе ограничения кода Рида ‒ Соломона на подполе. Альтернантные коды представляют собой класс линейных кодов, которые строятся из кодов БЧХ таким образом, чтобы при фиксированной скорости получить (хотя бы в принципе) большее минимальное расстояние. Пусть n = о"> 1. Выберем и зафикси- руем над GF(q ) n-мерный вектор h с ненулевыми компонентами и назовем его шаблоном (во временной области). Выберем также код Рида ‒ Соломона над GF (q~) с конструктивным расстоянием 2t + 1. Альтернативный код состоит из всех CF (q) -значных векторов с, таких, что вектор с компонентами с~ = h<c<, i = О, ..., и 1, является словом кода Рида Соломона. Чтобы определить этот же код иначе, допустим, что все h; отличны от нуля, и положим g; = h . Яля каждого кодового слова с' кода Рида Соломона образуем вектор с компонентами c; = g;c,', 1 = О, ..., и 1. Если вектор с является GF(q)-знач- ным, то он принадлежит альтернантному коду. Альтернантный код определяется как множество всех GF(q)-значных слов, кото- рые могут быть получены таким способом. Обычно выбирается шаблон h, все компоненты которого от- личны от нуля; но если какие-то компоненты шаблона равны нулю, то и кодовое слово содержит нуль в этих компонентах. Нулевые компоненты кодового слова не содержат никакой ин- формации и просто не передаются. Если алгоритм декодирования основан на полном слове, то в случае необходимости декодер может восстановить эти пропущенные нулевые компоненты. При надлежащем выборе шаблона альтернантные коды обла- дают очень большим истинным минимальным расстоянием; при больших длинах они по существу так же хороши, как и любые известные хорошие коды. К сожалению, для больших и не изве- стны правила выбора хороших шаблонов, хотя, как будет показано в следующем параграфе, хороших шаблонов достаточно много. Определение альтернантных кодов легко переносится в частот- ную область. Предположим, что все компоненты вектора h отличны от нуля. Обозначим через Н преобразование вектора h и назовем его шаблонол~ в частотной области. Поскольку Й;с~ при = О, ..., n 1 являются компонентами слова кода Рида Соло- мона, то циклическая свертка Н *С дает спектр слова кода Рида ‒ Соломона. Таким образом, л ‒ ~ g Н(ц->>1С» = О> j = 1о> ° ° . /î -; 2t ‒ 1. k=1 
8.6. АльтеР нА нт и ы е кОды $60 Так как все компоненты hотличны от нуля, ,то вектор H обратим, т. е. существует вектор G (преобразование вектора (gq ‒ ‒ h~', 1 = О, ..., и ‒ 1}), такой, что Н*G представляет собой дельта- функцию. (Если / = О, то (Н *G)> ‒ ‒ 1; в противном случае (Н*О), =O.) Через многочлены эта свертка записывается так: H (х) 6 (х) =- 1 (mod х" 1). Если H (х) многочлен над малым полем GF (q), то и G (х)‒ многочлен над этим же полем. Яля примитивных и это доказы- вается следующим образом. Многочлен H (х) не имеет корней в поле GF (q ), так как H (и-') = nh; чь О. Следовательно, H (х) взаимно прост с х" 1 = х~"'-' 1, и, согласно алгоритму Евклида, над GF (q) существуют такие G (х) и F (х), что H(õ) G(õ) +(х" 1) F(õ) = 1. Следовательно, H (х) 6 (х) = 1 (mod х" 1). Альтернантные коды в частотной области можно определить следующим образом. Определение 8.6.1. Пусть Н фиксированный и-мерный век- тор в частотной области, и пусть /, и t фиксированные целые числа. Альтернантный код 6 (в частотной области) определяется как множество, содержащее каждый вектор с, преобразование С которого удовлетворяет следующим двум условиям: n ‒ 1 1) f H((-ö>C» = О j=/о, " /о+2~ ‒ 1 Ф=О 2) Cg = C~«»> Первое и з эти х услови й накл адывает ограничение на свертку, которая в обычном определении во временной области задается в виде произведения многочленов; второе условие гарантирует GF (q)-значность кодового слова во временной области. Вектор с компонентами: n ‒ 1 Т; = f H<qt »~>С», g = О,..., n ‒ 1, A=Q называется профильтрованным спектром. Из тесной взаимосвязи альтернантных кодов с кодами Рида Соломона, очевидно, следует, что их минимальное расстояние не меньше конструктивного расстояния 2t + 1. Следующая тео- рема показывает, что их размерность также удовлетворяет усло- вию Й w и 23m. 
QQQ Гл. 8. кОды; спеКтРАльные метОды Теорема 8.6.2. Пусть С представляет собой линейный (и, К, 0)-код над GF (д'"), а б' является его ограничением на подполе GF (q) с параметрами (и, /г, d). Тогда 0 ( d ( и и (n ‒ К) ( (n ‒ /г) (т(n ‒ К). Доказательство. Нетривиальным является только последнее неравенство. Произвольное проверочное уравнение над GF (qm) которому удовлетворяет код, приводит не более чем к т линейно независимым проверочным уравнениям над GF (q). Отсюда и вы- текает последнее неравенство. П Следствие 8.6.3. Размерность й альтернантного кода с кон- струкигивныл~ расстояниел~ 2t + 1 удовлетворяет неравенству й) и 2tm. Доказательство. Использовать теорему 8.6.2 и равенство n ‒ <=2t. П В следующем параграфе мы покажем, что минимальное рассто- яние некоторых альтернантных кодов намного больше конструк- тивного расстояния, но приведенное там доказательство не яв- л яется конструктивным. Поучительно вывести границу БЧХ в частотной области для дистанционной структуры альтернантных кодов, наследуемой из кодов Рида ‒ Соломона. Теорема 8.6.4. Если вектор с содержит не более d ‒ 1 не- нулевых компонент и если профильтрованный спектр равен нулю в некоторых d ‒ 1 последовательных компонентах (Тд ‒‒ О, /г = = Й„, ..., /г, +d ‒ 2), то с; = О для всех /, где T=H*C, а Н ‒ обратимый фильтр. Доказательство. Многочлен локаторов Л (х) был определен таким образом, что компоненты Х; его преобразования равны нулю, если с; =ф= О. Тогда Х;с; = О и отсюда следует, что Л * С = = О. Следовательно, Ле (Н*С) = Н е (Л е С) = О. Но Л отличен от нуля только на блоке, длина которого не превышает d ‒ 1, а Н * С равно нулю на блоке длины d ‒ 1. Поэтому Н * С = О, и, таким образом, С = О. Следовательно, с ‒ нуле- вой вектор. 8.7. ХАРА КТЕРИСТИ КИ АЛЬТЕРНАНТНЫХ КОДОВ HpèBëåêàòå.÷üH0ñòü альтернантных кодов объясняется тем, что в этом классе имеются хорошие коды большой длины. Под этим подразумевается, что существует последовательность кодов воз- растающей длины, для которых скорость Мп и нормированное минимальное расстояние d*ln отделены от нуля при бесконечном 
в.7. хА РА ктБРисти ки АльтернАнт н ы х кодов 267' Возрастании и. Докажем это. Метод доказательства сводится к демонстрации того, что число слов малого веса над GF (q) не-. велико и что каждое из них не может принадлежать слишком большому числу альтернантных кодов. А так как альтернантных кодов достаточно много, то какой-то из них не может содержать слов малого веса. Следовательно, этот код должен обладать боль- шим минимальным расстоянием. В доказательстве теоремы не указываются значения пара- метров Й и а* для кода, а только даются их нижние границы. Для удобства доказательства данной теоремы под (и, Й, d)-кодом пони- мается код длины и, размерность которого не л~еньше Й и мини- мальное расстояние которого не л~еньше д*. Теорема 8.7.1. Пусть и = q 1 для некоторых GF (q) и т, и пусть d u r ‒ некоторые целые числа, удовлетворяющие не- равенству Тогда существует альтернантный (и, и ‒ mr, г1)-ко3. Доказательство. Идея приводимого ниже доказательства со- стоит в подсчете числа альтернантных кодов некоторого опре- деленного вида и последующем нахождении доли тех кодов, которые содержат заданный вектор v веса у < d. Оказывается, что векторов такого веса меньше, чем кодов рассматриваемого вида, так что некоторые из этих кодов не содержат векторов v веса j <d. (i) Пусть б ‒ код Рида ‒ Соломона пад GF (q'") c конструк- тивным расстоянием г + 1 и К = и г информационными симво- лами, и пусть б (h) ‒ альтернантный код над GF (q), порожда- емый из б шаблоном h, где h ‒ вектор над GF (q"'), все компо- ненты которого отличны от нуля. Тогда 6 (h) = ! с ~ ОР" (q): Ьс ~ б), где hc ‒ вектор с компонентами (h;c;, i =- О, ..., и ‒ 1}. По- скольку h, + ОO, то всего существует (qm ‒ 1)" таких кодов. Каждый из них представляет собой ограничение линейного кода (c g GF" (о"'):hc Q 6! на подполе GF (q), и, следовательно, согласно теореме 8.6.2, для каждого такого кода й ~ n ‒ mr. (ii) Выберем над GF (q) вектор v веса у (d. Всего имеется < tt (q ‒ 1)I' векторов веса i u Z, <;) (~ !)' векторов веса меньше d. 
Яф М. В. КОДЫ; спВКФРАльныВ меИДЫ (iii) Так как любые n ‒ r компонент кода Рида ‒ Соломона полностью определяют кодовый вектор, то вектор v веса у может принадлежать не более чем (д ‒ 1)"-' определенным в п. ()) альтернантным кодам. Действительно, при фиксированном v в векторе h можно независимо выбрать только и r компонент так, чтобы вектор hv принадлежал 6. (iv) Теперь скомбинируем п. (i), (ii) и (iii). Согласно (i), число альтернантных кодов равно (д ‒ 1)". Максимальное число ко- дов, которые могут содержать вектор веса меньше d, равно d ‒ 1 (д"' ‒ 1)"-' Д 1.) (q l)/. Предположим, что ~/ d ‒ 1 (/т ‒ 1)л ~ (/т ‒ 1)лг Z ( ) (/ — 1)/ 1 1 Тогда некоторый код с числом информационных символов и mr имеет минимальное расстояние не меньше d. Это эквивалентно утверждению теоремы. Cl Отметим, что, как уже было указано в доказательстве теоремы, альтернантные коды образуют очень большой класс. Для произ- вольного Й и примитивной длины кода число альтернантных (n, /г)-кодов над GF (q) равно (q" ‒ 1)" = и". Доказанная тео- рема только гласит, что некоторые из этих кодов хороши, но не указывает, как их найти. Пусть д равно 2. Тогда теорема 8.7.1 утверждает существование двоичных альтернантных кодов, удовлетворяющих условию d ‒ 1 ( ) (2"-~. j=l Граница для левой части этого неравенства, но в противополож- ную сторону уже была получена в лемме 7.9.2. Ниже (в гл. 14) tt мы рассмотрим оценки биномиальных коэффициентов ~ по фор- муле Стирлинга. Применяя оценку из теоремы 14.4.1, ~меем ptt ( ) ~' ( ) ) 2ii[Н(Р) o())] где член о (1) стремится к нулю с ростом и. Если пренебречь этим членом, то доказанная теорема утверждает, что для доста- точно больших и существуют двоичные коды со скоростью R и нормированным минимальным расстоянием dlï, удовлетворя- ющим условию ‒ (d/n) log (d/n) ‒ (1 ‒ d/n) log (1 ‒ d/n) ( 1 ‒ Я. Очень важно, что это неравенство связывает только величины R и din и что оно имеет ненулевые решения. Следовательно, нами 
В.в. Loge гоппы gag получено сильное утверждение о существовании асимптотически хороших альтернантных кодов. Полученная форма границы эквивалентна границе, известной под названием границы Гилберта, которая была выведена на много лет раньше, чем были построены альтернантные коды. Граница Гилберта утверждает существование хороших (в данном пони- мании) кодов, и, таким образом, альтернантные коды образуют класс кодов, реализующих это утверждение. Ситуация такова, что в настоящее время нет каких-либо определенных свидетельств существования двоичных кодов, асимптотически лучших, чем предписывает граница Гилберта. Следовательно, очень правдо- подобно, что асимптотически оптимальные коды принадлежат классу альтернантных кодов. Однако класс альтернантных кодов весьма обширен, и, чтобы реализовать приведенную в теореме 8.7.1 границу, необходимо разработать конструктивные методы выделения хороших кодов. Хотя, согласно указанной в теореме 8.7.1 границе, альтернантные коды лучше введенных в $ 7.9 кодов Юстесена, тем не менее коды Юстесена задаются точной конструкцией, а как точно указать хороший альтернантный код большой длины, пока еще неизвестно. 8.8. КОДЫ ГОППЫ tt ‒ 1 с; [а'>'/G (а-')] = 0, i'=0 j=0,...,2t ‒ 1. Доказательство вытекает непосредственно из теоремы о свертке. П Теорема 8.8.8. Минимальное расстояние dÐ' и размерность й кода Гоппы с многочленом Гоппы степени 21 удовлетворяют не- равенствам d* ~ 2t + 1, й ~ п 2tm. Коды Гоппы представляют собой частный подкласс альтернантных кодов, открытый раньше, чем класс альтернантных кодов, но все еще заслуживающий отдельного внимания. Определение 8.8.1. Кодом Гоппы с конструктивным рассто- янием d называется альтернантный код с конструктивным рассто- янием d, у которого обращение частотного шаблона G имеет ши- рину d. Иначе говоря, обращение частотного'шаблона задается многочленом G (х) степени d ‒ 1, который называется много- членом Гоппы. Кодом Гоппы в узком смысле называется код Гоп- пы с 2t проверочными частотами с локаторами а"-~'", цл-2t+2 ~О т ° ° ° j Теорема 8.8.2. Вектор с является кодовым для кода Гоппер с многочленом Гоппы G (х) тогда и только тогда, когда 
QfQ ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Доказательство вытекает непосредственно из следствия 8.6.3. Д Как следует из определения 8.8.1, длинами кодов Гоппы могут быть только те числа, которые являются делителями д 1. Однако все укорочения и удлинения кодов Гоппы также принято называть кодами Гоппы.,Яля построения кодов Гоппы с длинами, равными g и g + 1, можно использовать описанную в $ 8.4 процедуру удлинения кода, согласно которой с каждой стороны кодового слова дописывается по одному д-ичному символу. В прин- ципе можно строить и более длинные коды Гоппы, приписывая с каждой стороны кодового слова о -ичные представления симво- лов так, как это делалось в $ 8.5 при расширении кодов БЧХ. Будучи подклассом класса альтернантных кодов, класс кодов Гоппы сохраняет то свойство, что он содержит много кодов, мини- мальное расстояние которых много больше d '). Однако так же, как и в общем случае альтернантных кодов, мало что известно о построении хороших кодов Гоппы. Аналогично в случае общих кодов Гоппы не известны ни хорошие алгоритмы кодирования, ни хорошие алгоритмы декодирования, реализующие минималь- ное расстояние кода. Известные коды Гоппы интересны прежде всего тем, что позволяют дополнить код БЧХ в узком смысле (j, = 1) еще одним информационным символом, а другие коды расширить даже на большее число символов. Иначе говоря, изве- стные хорошие коды Гоппы хороши не в смысле описываемых теоремой 8.7.1 возможностей, а в некотором ином смысле. В частотной области коды Гоппы допускают описание с по- мощью изображенного на рис. 8.11 устройства с регистром сдвига. Вместо стандартного введения информации во временную область информация вводится в частотную область или в спектр или в профильтрованный спектр, как показано на рис. 8.11, причем в обоих случаях необходимо обеспечить выполнение ограничений сопряженности. Какие-либо общие методы практической реализа- ции таких ограничений не известны, но для кодов умеренной мощности можно составить и решить систему алгебраических уравнений, описывающих эти ограничения. Ниже приводится пример такого решения. Содержащий информацию профильтро- ванный спектр пропускается через фильтр с конечным импульсным откликом, веса в отводах которого задаются многочленом Гоппы. Фильтр работает циклически: обращение ко входу является пери- ') Это утверждение, конечно, не следует из того, что коды Гоппы являются подклассом класса альтернантных кодов, а нуждается в отдельном доказатель- стве; такое доказательство можно найти, например, в статье: Гоппа В. Д. На неприводимых кодах достигается пропускная способность ДСК. ‒ Проблемы передачи информации, 1974, вып. 1, с. 11! ‒ 112 и в монографии: Мак- Вильямс Ф. Дж., Слоэн Н.,дж. А. Теория кодов, исправляющих ошибки.‒ М.: Связь, 1979, с. 111 ‒ 112. ‒ Прим. перев. 
8.8. кОДы Гоп пы Q7$ ЗагруЗКа обмой иЗ Ь~ (} Гоппы Ооое Регистр кодового сс1оеа Рис. 8.11. Частотный кодер для кода Го1ц1ы. одическим. После этого кодовое слово получается обратным пре- образованием Фурье спектра. ,другое описание кодов Гоппы дается следующей теоремой. Теорема 8.8.4. Код Гоппы в узком сл.'ысле над GF (g) длины и = g'" 1, задавиел~ый многочленол~ Гоппы G (х), состоит из всех векторов с = (с,, ..., с„,) над GF (g), удовлеп~воряющих условию Q с; П (х ‒ а-") =0(modG(x)). i =0 С'+i Доказательство. Перепишем условие теоремы в виде l2 ‒ ° 1 с; П (х -- а-") = А (х) G(х). С=О i'~С Так как степень многочлена G (х) равна 2t, а степень многочлена в левой части этого равенства не превосходит и 1, то степень многочлена А (х) не превосходит и ‒ 2t 1. Таким образом, А; = О при j = и 21, ..., и ‒ 1. Рассмотрим это неравенство в точке х = а-': с; П (а-' а-") = А (а ') 6 (а-'), или с; (а ')"-' П (1 -- а ~" '>)] = А(а ')G(u '), 
я7я Гл. 8. кОды; спектРАльные r метОды или с;а' П (1 ‒ а") = А (а-') G (u-'). >+0 Определим теперь Т (х) = П (1 ‒ а") ' хА (х) (mod х" ‒ 1) ЙфО так, что Т (а-') = П (1 ‒ а")-' [а-'А (а-')] А+О с, = Т (а-1) G (а-1). Наконец, заметим, что так как А~ ‒ ‒ 0 при j = n 2t, ..., и 1, то T> ‒ ‒ 0 по модулю и при t = n 2t + I, ..., и, и, таким образом, условие теоремы эквивалентно условию, определяющему код Гоппы в узком смысле: С (х) = Т (х) G (х) (mod х" 1), что и завершает доказательство теоремы. П Описываемая теоремой 8.8.4 форма задания кода Гоппы до- пускает удлинение кода на один символ до кода длины q . Надо просто добавить одну компоненту, приписывая ей локатор, равный нулевому элементу поля. Таким образом мы получаем следующее альтернативное определение. Определение 8.8.5. Код Гоппы над GF (q) длины а = q, задаваемый многочленом Гоппы G (х), является множеством всех векторов с = (с„..., с„,) над GF (q), удовлетворяющих условию и ‒ 1 с, П (х ‒ рр) = О (modG(x)), i~ с'+с где Р<. пробегает все элементы поля GF (q~). Вернемся теперь к частному случаю двоичных кодов Гоппы, ограничиваясь только случаем, когда многочлен Гоппы не имеет кратных корней ни в одном расширении. Такие коды Гоппы на- зываются сепарабельными. Как мы увидим, минимальное рассто- яние сепарабельных двоичных кодов Гоппы равнс 2r + 1, где r ‒ степень'многочлена Гоппы. Это намного лучше, чем граница для произвольных кодов Гоппы, согласно которой d* ~ r + 1. Ключом к доказательству этого утверждения является следующая теорема, накладывающая ограничения на многочлен, взаимный 
8 8 ~оАbl ~~debt 273 к локаторному многочлену. Многочлен, взаимный к локаторному, определяется равенством Й,(х) = Z (х р;), где р; ‒ локатор ~-й единицы в кодовом слове с, à v число еди- ниц в кодовом слове. Теорема 8.8.6. Если определяюший двоичный код Гоппы в уэком смысле многочлен Гоппы",,6 (х) не имеет корней в поле GF (2 ), mo вектор с является кодовым словом тогда и только тогда, когда формальная производная Л; (x) аногочлена, взаимного к локатор- ному, делится на G (х). Доказательство. Формальная производная многочлена, вза- имного к локаторному, равна V Л;(х) = ~ П (.т рр). i=1 с'фК Поскольку код является двоичным, то с; равны нулю или единице, так что это выражение для Л,' (х) следует из формулы, приведен- ной в теореме 8.8.4. Cl Заметим, что в любом расширении поля GF (2) формальная производная произвольного многочлена является полным квадра- том, так как нечетные степени в ней пропадают. Предположим, что имеется сепарабельный код Гоппы с многочленом G (х). Тогда не только G (х) делит Й; (х), но и G' (х) должен делить Л; (х), так как Л; (х) является полным квадратом. В самом деле, мы получим тот же самый код, если в качестве многочлена Гоппы выберем G (х) = G' (х) вместо G (х). Но степень этого многочлена равна 2r, и, таким образом, d* 2r + 1. Хотя минимальное расстоя ние сепарабельного кода Гоппы не меньше 2r + 1, определение 8.8.1 вводит только r, а не 2r синдромов, и обычные методы декодирования непосредственно не применимы. Д,ля данного случая можно было бы предложить специальный вариант алгоритма декодирования, использующего только г синдромов. Вместо этого мы модифицируем описание кода так, чтобы были непосредственно пригодны описанные в гл .7 и 9 алгоритмы декодирования. Это можно сделать, не меняя са- мого кода, а только описывая его другим образом: вместо G (х) в качестве многочлена Гоппы надо выбрать G' (х). Получится тот же самый код, но границы для характеристик преобразуются к следующему виду: ф* r+1=2r-+- j 
Я74 ГЛ. 8. КОДЫ. СПЕКТРАЛЬНЫЕ МЕТОДbl k ~ и ‒ mr!2 = ‒ n mr, где r ‒ степень многочлена (Р (х). Теперь для того же кода и тех же характеристик мы имеем 2r проверочных частот, и можно непосредственно использовать все известные алгоритмы декоди- рования. Наименьшим кодом Гоппы является двоичный (8, 2, 5)-код Гоппы. Выберем G (х) = х' + х + 1. Корни этого многочлена различны и лежат в GF (4) или в некотором расширении GF (4) и, следовательно, не могут лежать в GF (8). Таким образом, G (х) может быть выбран для построения кода Гоппы длины 8 по мень- шей мере с двумя информационными символами и с минимальным расстоянием, равным по меньшей мере 5. Ниже мы увидим, что число информационных символов равно в точности двум. Для описания этого кода сначала воспользуемся определением 8.8.1, а затем дадим его описание в частотной области, основанное на теореме 8.8.2. Так как H (х) G(х)+х(х' 1) = ‒ 1 и G(х) =х'+х+1, то Н(х) = х'+х'+х'+х'+1. Далее, G(x) = х'+х'+1 и H (х) = х" + х' + х' + х' + 1. Многочлены Н (х) и Й (х) можно вычислить по многочленам G (х) и G (х) при помощи алго- ритма Евклида. Проверочными частотами являются а-', а-', а-' и а', и выпол- няются равенства Т, = с„Т», = О, Т, = О и Т», = О. Вместе с уравнением это дает с+ = Со + С1 + С2 + Сз + С4, О ‒ С,. + С, + С, + С, + С,, О = С„ + С,. + С, + С, + С, О = С4 -+- С~ -+- С, -+- Со + С,. Кроме того, имеются ограничения сопряженности С,-' == С<(eg)) Любой спектр, удовлетворяющий этим проверочным уравнениям и ограничениям сопряженности, является спектром кодового слова. Воспользуемся ограничениями сопряженности для того, чтобы исключить С», С4, С; и С~'. с, =- С, + (С, + С', + С',) + Сз, 0 = С, +-(С, +-С',) +-(С, +-С,'), 0 ‒ Co + (C~ + С|) + (С3 + С~)р 0 = С, -+ (С, + С4) + (С,' + С,'). 
8.8. КОДЫ ~'ОП ПЫ Яф5 Информационные бль~ 4 Ходовое слово из 8 бивов Рис. 8.12. Кодер для (8, 2, 5)-кода Гоппы. Если положить С, = О, в качестве С, и Сз выбрать произвольные элементы поля GF (2), а символ удлинения с, взять равным сумме С, и С,, то все уравнения будут удовлетворяться. Таким образом, имеются в точности два информационных символа. Кодер для такого кода в частотной области показан на рис. 8.12. Согласно теореме 8.8.2, тот же самый код можно получить кодированием во временной области. Проверочная матрица Н кода задается элементами а'>/O (а-'), так что 1 1 а2 а4 а2 а4 H = О 1 аз ав а' а' а6 аз где первый столбец дописан для построения расширенного (8.2)-кода. Заменяя каждый элемент поля его 3-битовым пред- ставлением, получаем 11000000 00010111 00111001 01111111 00101101 О О О 1 1 1 1 0» Так как строки этой матрицы линейно независимы то она задает (8,2) -код. Более сложный пример двоичного кода Гоппы получается при выборе многочлена Гоппы равным многочлену G (х) = х' + х + 1, который имеет три различных корня в OF (8) или в некотором ero расширении и, следовательно, не имеет корней в OF (32). 
ЯЩ 1'л. 8. КОДЫ; спеКтРАльные метОдм Согласно теореме 8.8.2, выбор в качестве многочлена Гоппы G (х) или G' (х) приводит к (31,16, 7)-коду Гоппы или расширенному (32, 17, 7)-коду Гоппы. (31, 16, 7)-код Гоппы ничем не лучш (31, 16, 7)-кода БЧХ, за исключением того, что его можно рас- ширить до (32, 17, 7)-кода, тогда как код БЧХ расширить нельзя. Квадрат многочлена 6 (х) равен G (х) = х' + х' + 1, и оора- и.ения многочлепов Гоппы соответственно равны H (х) .‒ хзо +хи 1 ~" +,.' — ~ 1..з + хвв xiâ [ ~17 +x~à + х" + х" + х'" + х' + хв + х' + х' + х Н (х) =- х" + х" + х-' + х'"' + х'" + х" +- х" + х1т + л.' +- q- х'-' -{- х' -{- х' -{- хо -{- хГ -+- х' -+- х' -+- х. В рассматриваемом примере введем информаиию непосредственно в спектр. Тогда профильтрованный спектр дается равенствами и ‒ ! Т~, = f Йпу,;цС;, /г = 0,..., и ‒ 1, ~=о а проверочными частотами являются частоты с индексами Й -= - ‒ 5, 4, ..., О. Выписывая эти равенства совместно с граничными син- дромами с, и r», получаем с+=-- С, +С,, +С„+С9+С„~-C~»+C,:, +С„+С„, + +- С„-~ С,, + С.,з + С.,; -[- С.,„+ С.,-, -]- С„+ С.,<1 О ‒ Cl .+ С4 -{- С7 -(- CR g- Clo q - Сl f Ф Cl 4- С]3 + С1,) + +С18 +С~1+C„„+ С4 г С',-> +С.~б +С7 +С~9, О ‒ С, + С,„+ С„‒ С, + С9 + С]о т- С]1 + С~2 + С14 + + С17 + С20 + С21 + С,~ + Съ4 + С,~ + C~(, + C28, ‒ С„, -{- С, + С. + Cr, + C1 -{- С9 +- С„, +- C~] ~- С,, + С16 + С19 + С2о + С22 + С P + Со4 + CeJ~ + C07) О = С~9 + С1 + С4 + С~ + С + Cs + С9 + С1О + С1о + С1~ + + Ci8 + Ci9 + C~ + С ~ + С2з + Са4 + C26 с ‒ С,~+С, +С, +С4+С„+С, +Са+С9+С„+С„+ + С17 + С18 + Соо + С21 + С22 + С~з + С~~г. Любые с+, с и С; над GF (32), удовлетворяющие условиям сонря- и женности Cy = ‒ С(<~;>), у - О, ..., 30, II выписанным уравнениям, 
h.8 1(ОфЬ3 10ЙЙЬ3 Яфф ЬпрЕделяют нояовоЕ слово. Используя условия сопряженности, приведем систему проверочных уравнений к следующему виду: с+ ‒ ‒ (С1 + С1 + С' ) + Сз + (Ся + Ся) + (Су + Су + Су + Ст ) + + (С~1 + Сц + Сц + Сц) + (С"„+ Сд + C',s), 0 = (С) -~ С) + Ci) -у- (Co +- Cl) + (Cs + Cs ) + (Có + Có) + + (С~|+ Cö + Сц + Csö + Cö) + (Cis + Cis + Су), 0 = Co + (Сз + Сз + Сз + Сз+ Сз') + (Ся + Ся + Cs) + + (Ст+ Cò+ C7+ C7) + (Cii + Сц + Cii) + Cis, 0 = (С~ + С1 + Су ) + (Сз + Сз) + (Cs + Ся + Gs + Cs) + + (Су + C7) + (C„+ C» + C'„i) + (Cis + Cis + Cis), 0 = (С~ + Сi + Сi) + (Сз + Сз) + (Cs+ Cs + Cs + Cs ) + + (Ст + Ст ) + (Ci i ~- C i i + Ci i) + (C is + Cis + C is) s c = Co+ (Ci + Ci) + (Сз+ Сз+ Cs ) + (Ся+ Cs+ Cs ) + + (Ст+ Су+ Ст+ Су) + (Сц + Сц + Cii) + Суя. Рассмотрим решение этой системы во всех подробностях. Сначала возведем в квадрат третье уравнение и разрешим его относительно Cis = Со + (Сз + Сз+ Сз + Cs+ Сз ) + (Cs+ Cs + Cs ) + + (Су+ Су + Ст + Ст ) + (Ci + Сц + Сц). Воспользуемся этим равенством, чтобы исключить С„из осталь- ных пяти уравнений: с+ ‒ ‒ Co + (С~ + С~ + Су ) + (Сз + Сз + Сз + Cä ) + (C; + С, + + Cs') + (Cò + C7 + C7 + C7') + (C„+ C'ц„-+ Сц), 0 = Со + (С~ + С~~ + С1) + (Сз + Сз + Сз ) + (Ся + Ся + С Я) + + (Су ~- Су + Су + Су ) + (Ciу + Суу +- Сц + Сй), 0 = Co + (С~ + С~ + С~') + (Сз + Сз + Сз ) + + (Ся + Сод + Cя + Cs + Cs ) + (Ст + Су + Ст + Cò ) + (Сц + С',~), 0 = С, + (С, + С', + С',) + (Сз + Сз + Сз ) + (Ся + С, + С,") + + (Ст + Ст + Ст + Ст ) + (С)) + С[1 + Суу + С)!)у с = (С4у + С~~) + (С,'+ С,'.) + (Ся + Сз ) + (Сй + C»). 
278 Гл. 8. коды; спектРАльные методы Четвертое уравнение совпадает со вторым и может быть отбро- шено. Сложим второе уравнение, третье уравнение и возведен- ное в квадрат третье уравнение. Это дает Ci = Co -~- (Сз + Сз ‒, Сз) + (C; + Сз + C> ) -г +- (С -'; С,') (С' + С") Подставляя это значение для С,, получаем следующие четыре уравнения: c, = C3 + (C5 + C; ‒; Сз + Сз ) + (Су + C7 + Cr 'г Су ) + -L (С + C4ii + Ciiei), 0 =- (Сз + Сзз) + (C5 + С; ) " (Cò -- Су ) ‒ ' +-(С -t-С' - C'„-',-C,",), 0 = (Сз + Сз + Сз + Сз) -'- (Сз + C; + C; + Сз ) + ‒ (Ст+ Ст ) ~ (С11+ Сц '; Сй -у- Си) c =- (C3 ‒, C3 ‒,‒ Сз -,‒ C~"') + (С.- ‒ C'„.- + C,'- -~ C,'-,) -! , (C-,; - C'-, - ‒ С'-,,‒ С-',) ‒, .- (С'„-,,‒ С,",). Возведем последнее уравнение в четвертую степень и сравним результат со вторым уравнением. Это показывает, что с = О и что четвертое уравнение можно отбросить. Прибавим восьмую степень третьего уравнения к третьему уравнению. Это дает в точности второе уравнение, так что его можно отбросить. Итак, остались два уравнения: с, =- Сз~ ';- (С.-; ‒ С'„+ С': -I - С,'-,') ‒:; (С-, ‒;; Ст + С; 1- Ст") + -';(С -',-C'„‒,'-C,), 0 =- (Сз ‒ 1- C~) + (C -,‒ C„'- ) ',‒ (Ст 4. Ст ) ~- Возводя первое уравнение в шестнадцатую степень, получаем Сз =. c~ + (C; + C'; ‒,'- C5 ‒, C,'- ) + (C7 -,'- С-, + C78+ Су ) + Подстановка этого выражения в последнее уравнение дает ,2,,4 О=с++ с+. 
КОДЫ rl P E OAPAT bl 279 Возведение этого равенства в шестнадцатую степень приводит к уравнению О=с,(1+с), из которого следует, что с, равно нулю или единице. Итак, мы пришли к следующему правилу: C и с, являются произвольными элементами поля GF (2); C,„, С, и С„являются произвольными элементами поля GF (32); С,, С, и C,„, определяются следующими уравнениями: 8 2, 8 ~ 16 2 C~=c' +Cp-' ‒ С-+(Су -С-, —,' Ст qCt)+(Cii ‒ ‒ Cii-; — С11) Cp=с+ ‒,-(С„.- -С;+С„-;- Сз), (C7 >Ct+С7 ‒ С7) [- 1-(С' --С' ,'-С"), C(. -- с+ ‒,- Cp ! (C'; C~p ,'- C'-, ) ',- (C7g+С~~,' Cg ' Cg) [- -~ (C',~ ‒, C'„). Все остальные С; находятся из условий сопряженности. Обратное преобразование Фурье дает 31-компонентное кодовое слово во временной области, к которому в виде хвоста дописывается сим- вол с,. Построенный код является расширенным (32, 17, 7)-кодом Гоппы. Так как ограничения сопряженности привели к равенству c = О, то второго символа при расширении добавить не удается. 8.9. КОДЫ ПРЕПАРАТЫ Хороших классов нелинейных кодов известно мало, и среди них находится класс кодов Препараты. Начнем изучение этих кодов с построения в частотной области одного примера, а именно (15, 8)-кода Препараты. Но прежде чем изучать коды Препараты, вернемся к рас- смотренной в g 5.6 процедуре декодирования двоичных кодов БЧХ, исправляющих две ошибки; в этом случае взаимный много- член локаторов ошибок выписывается явно; за исключением слу- чая S = О, он равен Л (х) =- х' ‒,: ‒ S~x „- S~ ' (S~,; Sq) = 0. Частный случай S = О соответствует случаю отсутствия ошибок и легко проверяется. Если положить 0~0 = О, то многочлен ло- каторов ошибок будет включать и случай отсутствия ошибок, и в этом случае уравнение вырождается в уравнение х' =-- О и имеет корни К, = О и К, = О. В случае одной ошибки уравнение при- нимает вид х'@S,x=0 и имеет корни Х,=О и К,=S,. 
ЯЯ() ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Сделаем замену переменных, полагая х = S,ã. Тогда новый многочлен, который мы также обозначим через Л, будет иметь вид Л (z) = г + z + (1 + Я~ ~S3). Этот многочлен имеет корни в поле GF (2 ) тогда и только тогда, когда tr (1+ S<~S~) равен нулю. В четных расширениях GF (4) всегда tr (1) = О, и это условие преобразуется так: tr(S~ Sç,) = О. Далее, в полях характеристики 2, согласно теореме 8.2.3, ровно половина элементов имеет равный нулю след. При каждом значении S, элемент S, может принимать только 2 ' значений, которые образуют в GF (2 ) подпространство размерности т ‒ 1. Один бит в S, «не используетсяк На первый взгляд может пока- заться, что на частоте Сз кодового слова можно ввести дополни- тельный бит информации. Это невозможно, так как неиспользуе- мый бит элемента S3 зависит от S,. Но коды Препараты позволяют лучше распорядиться этим обстоятельством: если спектр лежит в расширении поля GF (4}, то можно переупорядочить другие информационные биты так, чтобы ввести дополнительный информа- ционный бит. (2 I, 2 2т, 5}-код Препараты над GF (2) существует для каждого четного т, большего 2. По сравнению с соответ- ствующим кодом БЧХ, исправляющим две'ошибки, код Препараты всегда содержит один дополнительный информационный бит. Мы рассмотрим только (15, 8, 5)-код Препараты. Определение 8.9.1. Двоичный (15,8)-код Препараты опреде- ляется') как множество двоичных слов длины 15, спектр которых удовлетворяет следующим ограничениям: С1 = О, С, = А, С, = = В, где либо A g I1 дз дв да а~~) и В = P либо 2) В Q 11, а', а'О) и А = О, и, кроме того, выполняются условия сопряженности. Отметим, что, согласно условиям сопряженности, C5 = С;, так что С, может быть только элементом поля GF (4). Так как С~ представляет собой произвольный элемент поля GF (2), à С; произвольный элемент поля GF (16}, то С, и С, вместе содержат 1) При таком определении нулевое слово не является кодовым. В других определениях используется такой сдвиг кода, при котором нулевое слово вклю- 1аетсяв код. 
8.9. КОдЬ! П РЕ IIAPATbl QQ$ пять битов информации. Остальные три бита описываются во- семью выборами А и В, так что код является (15, 8}-кодом. Покажем теперь, как исправляются двойные ошибки, и тем самым докажем, что минимальное расстояние этого кода равно по меньшей мере 5. Пусть V>, у = О, ..., и 1, представляют собой спектральные компоненты принятого слова. Определим синдромы Sg— = Е,= V~ S>=Е,= V„ ~э = Еэ + А = )~э S<=E<= V4, Я,=Е,+В= V~. Выбор А и В приемнику не известен, но ограничен условиями определения 8.9.1. Далее, s,= х,-+-х„ Яз= Х1+Хэ+А, .з,=X +Х,+B. Сначала разрешим эти уравнения относительно А и В; затем вы- читание А из S3 сведет задачу к декодированию исправляющего две ошибки кода БЧХ. Простые вычисления дают 81~ + (Яз + А} = Х1Хг81, (Яз + А)' + S~ (Яэ + В) = Х1Хг~1 Исключая Х,Х„получаем квадратное уравнение А'+S~А + (S~Sç+ Яз+ S~ + S1Sэ+ S~В) = О Оно может быть разрешено относительно А и В следующим обра- зом. Сначала положим В = 0 и решим получающееся при этом квадратное уравнение относительно А. Затем положим А = 0 и решим получающееся линейное уравнение относительно В. Это даст нам три решения для пары (А, В}. Из доказательства приведенной ниже теоремы следует, что только одно из них удо- влетворяет ограничениям определения 8.9.1. Теорема 8.9.2. Минимальное расспаяние (15, 8)-кода Пре- параты равно 5. Доказательство. Докажем, что минимальное расстояние кода равно по меньшей мере пяти, построив процедуру декодирования, исправляющую две ошибки. Для этого достаточно дать правило нахождения по принятому слову величин А и В, так как после 
ЯЯЯ ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ этого задача сводится к декодированию исправляющего две ошибки кода БЧХ. Предположим, что произошло не более двух ошибок. Если S, = О, то ошибок не произошло. Мы предполагаем, что S> было вычислено и оказалось отличным от нуля. Сначала положим В = О и найдем корни квадратного относи- тельно А уравнения А + S~A+г (йз+ Яз+ S~ + SiS;- = О. Удовлетворяющие нашим ограничениям возможные решения для А исчерпываются ненулевыми кубами. Затем положим А = О и найдем решение линейного относительно В уравнения (~Фз + ~з+ S~ + S>Sq) + Si> = О Шаг 1. Сначала покажем, что рассматриваемое квадратное уравнение не может иметь двух решений, которые оба являются ненулевыми кубами. Если А, и А, корни данного квадратного уравнения, то А, + А, = S~, так что сумма двух корней также является ненулевым кубом. Необходимо только доказать, что в поле GF (16) сумма двух ненулевых кубов не может быть равна ненулевому кубу. Выпишем множество ненулевых кубов U, = (1, а' а', а', а12). Тогда прямое вычисление всех возможных сумм дает множество Уз -+- Уз = '10 а ав а4 +5 ат ав +10 +11 а1з а14~ которое не содержит ненулевых кубов. Таким образом, в поле GF (16) сумма двух ненулевых кубов не может быть ненулевым кубом, и поэтому А, и А, не могут одновременно удовлетворять ограничениям определения 8.9.1. Шаг 2. Предположим теперь, что (А, О) и (О, В) два реше- ния исходного уравнения. Покажем, что оба они не могут удовлет- ворять накладываемым ограничениям. Разность двух уравнений дает А'+S~A +S~B = О. Пусть А = ‒ S~À ° Тогда (А) +А +Я~ "В = О. Но как Я, так и В являются ненулевыми элементами поля GF (4). Следовательно, элемент А' должен удовлетворять одному из сле- дующих уравнений: (А')' + А' + 1 =- О, (А)'+А'+а" =О, (А ')' + А ' + а" = О. 
ЗАДАЧ И ЩЯ Перебирая все корни этих уравнений, получаем, что А' <= (а5 а1О а, а2 а4 а8). Ко в этом множестве не содержится ни одного куба. Таким обра- зом, (А, О) и (О, В) не могут одновременно удовлетворять нашим ограничениям. Это завершает доказательство теоремы. ЗАДАЧИ 8.1. Исходя из определения пары преобразования Фурье (с;) ~(C~,}, доказать следующие стандартные свойства дискретного преобразования фурье. а. Линейность: (ас<+ Ьс;) ~ <аС. + bC,.). б. Свойство циклического сдвига: 3с«,. »>3 <а'С ). в. Модульность: <а<с,} («:<.+<>>). 8.2. Доказать, что преобразование фурье сигнального вектора с; ==- а~' содержит единственную ненулевую спектральную компоненту. Что происходит, если г = О? Доказать, что спектр вектора с единственной ненулевой компонен- той всюду отличен от нуля. 8.3. Доказать, что Е = F~Gz тогда и только тогда, когда и ‒ 1 е; = (<,'n) f ~<<; >>>g<,. 9=0 8.4. Сколько идемпотентов содержится в кольце многочленов по модулю миогочлена х'6 ‒ 1? Перечислить их. 8.5. Основная теорема алгебры гласит, что многочлен степени d имеет не более d корней. Используя эту теорему, доказать границу БЧХ для кода Рида ‒ Соломона, спектр (С } кодовых слов которого удовлетворяет условию Су = О для всех j ) и ‒ й. 8.6.а. Найти порождающий многочлен для двоичного расширенного (42, 25, 7)-кода Б Ч Х. Построить кодер. б. Найти порождающий многочлен расширенного (17, 9, 7)-кода БЧХ над GF (4). Построить кодер. 8.7. Пусть G (х) = х2+ х+ 1 ‒ многочлен Гоппы для (32, 22, 5)-кода Гоппы. Разработать правило кодирования и процедуру декодирования. 8.8. Пусть G (х) = х'+ х+ и' ‒ многочлен Гоппы для(16,8,5)-кода Гоппы, где а ‒ примитивный элемент поля GF (16). Найти проверочную матрицу кода. 8.9. Модифицируя несистематический кодер для (15, 7)-кода БЧХ, по- строить кодер для (15, 8)-кода Препараты. 8.10. Код Препараты можно декодировать с помощью алгоритма Берле- кэмпа ‒ Мессидля двоичных кодов, используя три итерации (r = 1, 3, 5) и вы- бирая А и В так, чтобы Л6 =- О. Выписать уравнения для А и В, которые должны быть разрешены при таком алгоритме декодирования. 8.11. Двоичный (63, 52)-код Препараты может быть определен при помощи своего спектра следующим образом: С1 = О, Сэ = А, C9 = В, где либо 1) 4 (: (1 QP Q,114 4~~(21 ц2Я (~э6 (~42 <~49 +69) H В = P либо 2) В Q (1 (у9 (у16 ~27 ц36 ц46 (~64) и 4 = P 
284 Гл. s. КОды; спеКтРАльные метОды а остальные спектральные компоненты удовлетворяют только условиям со- пр яженности. а. Доказать, что этим кодом можно закодировать 52 информационных бита. б. Исследуя уравнение А" + S(A2+ S(A + [S)Sg+ 54+ 5~АЗ+ $(S3] + S)B = О и изучая его корни, доказать, что минимальное расстояние рассматриваемого кода не меньше 5. ЗАМЕЧАНИЯ Спектральное описание кодов, контролирующих ошибки, можно найти в очень ранних работах, хотя связь с преобразованием фурье не была сразу осознана. Спектральный декодер использовался в основополагающей работе Рида и Со- лэмона [1960] для нахождения минимального расстояния предлагаемых кодов, но, так как описанный в этой работе декодер ие имел практического значения, спектральные методы не изучались еще долгие годы. Мэттсон и Соломон [1961) ввели спектральный многочлен, сыгравший большую роль в теоретических иссле- дованиях, но смысл спектрального многочлена как преобразования фурье вновь не был осознан, и тесная связь теории корректирующих кодов с обработкой сигналов опять осталась скрытой. Близкие идеи разрабатывал Мандельбаум [1979], но на языке интерполяции. Преобразование Фурье над конечными полями рассматривал Поллард [1971], а использовать его в теории кодов, контролирующих ошибки, предложил Гор [1973), работа которого получила дальнейшее развитие в работах Ченя и Чоя [1975] и Лемпеля и Винограда [1977]. Приведенное в данной главе доказатель- ство границы БЧХ частично использует перенесениое в частотную область дока- зательство Ч ен я [1972 ). Идея расширения кода широко известна. Расширениые коды Рида ‒ Соло- мона рассматривал Вулф [1969]. Конструкции расширения кодов БЧХ были предложены Андриановым и Сасковцом [1966], Слоэном, Редди и Чинем [1972]; Касахарой, Сугиямой, Хирасавой и Намекавой [1975]. Описание кон- струкций в виде преобразований дал Блейхут [1980). Альтернантные коды были введены Хельгертом [1974], который дал им такое название потому, что проверочная матрица этих кодов может быть за- писана в виде так называемой (в математической литературе) альтернантной матрицы. К альтернантным кодам относятся открытые ранее коды Гоппы [1970). Дельсарт [1975] предложил определять альтернантные коды как ограничения на подполе модифицированных кодов Рида ‒ Соломона, так что его определение значительно отличается от исходного. Коды Препараты имеют интересную историю. Препарата [1968] открыл этот класс кодов в процессе исследования свойств наименьшего кода в классе. а именно (15, 8, 5)-кода, известного под иазванием кода Нордстрома ‒ Робинсона [1967]. Два последних автора построили этот нелинейный (15, 8, 5)-код с помощью ЭВМ как расширение ранее построенного Нейдлером нелинейного (12, 5, 5)-кода [l962) или нелинейного (13, 6, 5)-кода Грина [1966]. В свою очередь коды Препараты стимулировали открытие еще более сложных нелинейных кодов, а именно низкоскоростных кодов Кердока [1972) и исправляющих три ошибки кодов Геталса [1976). 
ГЛАВА 9 АЛГОРИТМЫ, ОСНОВАННЫЕ НА СПЕКТРАЛЬНЫХ МЕТОДАХ Оценивать код, контролирующий ошибки, надо не только по его скорости и минимальному расстоянию, но и по возможности по- строения для него экономного декодера. Обычно имеется много способов декодирования заданного кода. Конструктору прихо- дится выбирать между несколькими различными алгоритмами декодирования или вариантами одного алгоритма, и он должен быть знаком со всеми возможностями, чтобы выбрать наилучщую для данного конкретного приложения. Выбор зависит не только от параметров кода, таких, как длина и минимальное расстояние, но и от того, какая часть алгоритма реализована аппаратурно, а какая программно, от требуемой скорости декодирования и даже от стоимости имеющихся блоков схемы. В данной главе изучаются методы декодирования, позволяю- щие работать в частотной области. Сюда включены методы деко- дирования с исправлением ошибок и стираний и методы декоди- рования за пределами конструктивного расстояния кода '). 9.1. СПЕКТРАЛЬНЫЕ МЕТОДЫ ДЕКОДИРОВАНИЯ Вернемся к задаче декодирования кодов БЧХ и будем интерпре- тировать с частотной точки зрения уже рассмотренные вопросы. Используя преобразование Фурье, разработаем новые процедуры декодирования. Принятое слово v с компонентами v< = с~ + е~, 1 = О, ..., и 1, представляет собой сумму кодового слова с и вектора ошибок е. декодер должен так обработать слово v, чтобы удалить из него вектор ошибок е; после этого из с выделяется информа- ~) Имеется в виду исправление векторов ошибок, вес которых превышает половину конструктивного расстояния кода. ‒ Прим. перев. 
QQQ Гп. 9. АЛГОРИТМЫ; СПЕ КТРАЛЬНЫЕ МЕТОДЫ ция. Координаты синдрома для зашумленного слова v кода БЧХ задаются следующими равенствами: и ‒ ! Я Q~ ~/ /~/о ‒ 1п + ( /+/~ ‒ ) i=0 Очевидно, что компоненты синдрома вычисляются как 2t компо- нент преобразования Фурье принятого вектора. Компоненты преобразования Фурье зашумленного кодового слова v =‒ =с+е равны V;=C;+E;, j=0, ..., и 1, а компоненты синдрома представляют собой 2t компонент этого спектра от /,-й до (; + 2t ‒ 1)-й. Но, согласно построению кодов БЧХ, спектральные компоненты, расположенные в проверочных ча- стотах (при / = /,, ..., /, + 2t 1), равны нулю: C/ = О для j = j,, ..., j, + 21 1. Следовательно, 5;=~/+;,,‒ ‒ Е;;,, j 1, ...,2'. Блок компонент синдрома как бы образует окно, через которое можно наблюдать 2t из п компонент спектра конфигурации оши- бок. Но если вес конфигурации ошибок не превышает t, то, со- гласно границе ВЧХ, этих 2t компонент синдрома достаточно, чтобы однозначно восстановить вектор ош ибок. Предположим, что произошло v < t ошибок с локаторами c' а ~ при й = 1, ..., v. Многочлен локаторов ошибок равен Л (х) = П (1 ‒ ха'/ ). 1=1 Обратное преобразование Фурье вектора Л вычисляется как зна- чения Л (а ‒ ') многочлена Л (х) в точках а-'. Ясно, что Л (а ‒ ') равно нулю тогда и только тогда, когда ~ представляет собой по- зицию ошибки. Таким образом, Л (х) определяется как такой многочлен, для которого во временной области Х; = 0 при всех е; =ф= О. Следовательно, Х;е; = 0 для всех i, и, таким образом, по теореме о свертке свертка в частотной области равна нулю: л ‒ ! ~/Л,Ед,=О, k=O, ..., и- 1. 1=0 Так как степень многочлена Л (х) не превосходит t, то Л, =" О для j ) t. Следовательно, t ,~~/Л/Ед; =О, k=0, ..., n ‒ l. /=о Поскольку Л, = 1, эти уравнения можно переписать в виде t Ед= ‒ ~",Л/Ед /, k=О, ...,n ‒ 1. j=1 
9.1. спектвАльные методы декодивавлния щ7 3та система содержит и уравнений, связывающих и t неизвест- ных (t коэффициентов многочлена 1 (х) и п 2t компонент век- тора Е) и 2t известных компонент вектора Е, заданных компо- нентами синдрома. Таким образом, t уравнений Z AiSAl, k=t+1, ...,2/, содержит только известные компоненты синдрома и t неизвест- ных компонент вектора E. Как мы видели в гл. 7, такую систему всегда можно разрешить относительно Л, например с помощью алгоритма Берлекэмпа Месси. Остальные компоненты спектра S можно получить рекуррент- ным продолжением, а именно используя выписанное выше урав- нение для свертки, вычислить S><~< по уже известным компонен- там $ и Л, затем найти 52~+2 и т. д. Это вычисление может быть выполнено с помощью регистра сдвига с линейной обратной связью, весовые множители в отводах которого совпадают с компонентами вектора Л, а начальное состояние задается компонентами син- дрома S>, ..., S<. Это позволяет вычислить S; для всех j; Е; равны Sj j,+~, а С; = VJ Е;. Обратное преобразование Фурье завершает декодирование. На рис. 9.1 приведена блок-схема реализации описанной про- цедуры декодирования (за исключением преобразований Фурье). Такой декодер может быть использован независимо от того, в ка- кой области реализован кодер: в частотной или во временной. Если кодер реализован во временной области, то для вычисления кодового слова во временной области надо воспользоваться обрат- ным преобразованием Фурье применительно к исправленному спектру, а затем уже выделить из этого кодового слова передан- ную информацию. Если же кодирование производилось в частот- ной области, то информационные символы определяются непо- средственно по исправленному спектру. В этом случае обратного преобразования в декодере делать не надо. Вычисления можно организовать многими способами. На рис. 9.2 приведены четыре различные схемы декодеров, Первая схема относится к рассмотренному в гл. 7 варианту декодера. Во второй схеме кодирование осуществляется в частотной области, так что как только вычислен исправленный спектр, декодирова- ние закончено. Третья и четвертая схемы иллюстрируют тот факт, что, хотя в частотной области с помощью рекуррентного продол- жения вычислена конфигурация ошибок, окончательное исправле- ние ошибок можно производить как во временной, так и в частот- ной областях. Четвертая схема похожа на первую, хотя их реализации сильно отличаются. Вычисление синдрома аналогично прямому 
288 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ  Начальные значения: 5, = Инд) =0 A(x) Ве =! L=p=  i  P —  I—r.‘-ri—l | у  Вычисление следующего выхода. последнего фильтра, n-1 А,= 2; 5; i=0  Hem <r>t/2t\ fla  Вычисление лока.тора.  Вычисление ново20 многочлена связей, для которого А, = 0 5—5 T(x) —- A(X)-D,xB(x) по еРООг  <К MR A - та) | “e"‘  До. Да. С;= М; - 5, Е =7-8 В(х) -х В(х) О вой В(х) - А, ^() J=0,....n- М) - T(X) || | Стоп- исправление закончено  Рис. 9.1. Частотный декодер.  преобразованию Фурье. Процедура Ченя аналогична обратному преобразованию Фурье. Первая является п-точечным преобразо- ванием вектора с у ненулевыми компонентами и GF (¢™)-3HauHbIM выходным вектором, а вторая представляет собой п-точечное преоб- разование вектора с 7 ненулевыми компонентами и СЁ (д)-Знач- ным выходом. Алгоритм Форни заменяется рекуррентным про- должением. Четвертая схема представляется более простой из-за простоты реализации отдельных блоков декодера. Конструктивный выбор одной из этих схем частично опреде- ляется возможными методами вычисления преобразования Фурье, и поэтому в последнем параграфе главы рассматриваются различ- 
9.1. СПЕКТРАЛЬНЫЕ МЕТОДЫ ДЕКОДИРОВАНИЯ 989  ные алгоритмы вычисления преобразования Фурье. Помимо вы- бора алгоритма вычисления преобразования Фурье и способа реа- лизации декодера конструктор может так модернизировать де- кодер, чтобы вычислять только часть спектральных компонент. Например, в четвертом варианте схемы декодера на рис. 9.2 тре-  буется вычислить только 21 компонент спектра. Возможно j=1,...,2¢ r==79 - [ Anzopumm - ==->| Kodep [ Канал Вычисление Bepaenamna, - Anzopumm | ) Сундромо, Месси Форнц L2 — | Т Смешанная редлизация: Процедура. Пороговый временной кодер Ченя злеменгт гибридный декодер | буферный (+ I ° | регистр + К пользователю ПЕНИС и [= = == —= = Загрузка, Добавление (Обратное | | информационных > связанных |= преоброзование |-> Канал Предбразование Сим волов CUMB0A08 usse 'L | урь — T Частотная | Буферный воры Рекудрентное реализация регистр В, i ‚продолжение >( + + j=1,....2 K пользователю r==—=" _ кадео b канал =>] ПРеобразование 4 Ц “ту | Фурье —— | Смешанная реблузация: R Алгоритм временной кодер Бусерчые o4 Бераекзмпа- пекуррестное частотный декодер pezucmp Meccy Ш .| Обратное »{ + }>{ преобразование * урье = бей K пользователю —---= - Преодрг,- Алгоритм ентное) | Обратное —{ Кодер |- Канал о зовоние ) Geprexaunc пуденнеЕ преобразование по) | | 9 Месси р урьё Смешанная рголузация | Буферный ВЕ N временной кодер "| ргзистр AN — частотный Оекодер " Клюльзовалелю  Рис. 9.2. Некоторые схемы кодсра/декодера для кодов БЧХ. 10 Р. Блейхут 
QgQ ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕ1ОДЫ также следующее упрощение: запишем принятый многочлен в виде v (х) = Q (х) g (х) + s (x), где g (х) порождающий многочлен кода БЧХ, à s (х) ‒ син- дромный многочлен. Синдромный многочлен можно вычислить с помощью цепи деления на g (х). Тогда Я, ‒ о(а') - Я(а') д(а') )-к(а') = з(а'), ,'о, 1 . )и так как для этих значений индекса j выполняется равенство g (а') ‒. О. Теперь компоненты синдрома могут быть вычислены как преобразование Фурье многочлена з (х), который имеет не п, а только п ‒ Й ненулевых коэффициентов. Этот метод оказывается полезным только тогда, когда легче осуществить деление на a' (х), чем вычислять преобразование Фурье в и входных точках. При малых значениях и это иногда имеет место. Существует и другой алгоритм декодирования, основанный на алгоритме Евклида и совершенно отличный от описанного в $ 7.7. Этот метод, ориентированный на частотную область, будет описан в данном параграфе. В поле GF (q ) имеет место разложение и ‒ 1 х" ‒ 1 = П (х ‒ а'). i =-О Определим истинно-локаторный многочлен Л~ (х) = (х" ‒ 1)/Л(х). Он действительно является многочленом, так как Л (х) пред- ставляет собой произведение различных линейных множителей, каждый из которых делит х" 1. Корни многочлена Л' (х) определяют правильные компоненты принятого вектора. Теорема 9.1.1. Многочлен ошибок Е (х) и многочлен локато- ров h (х) удовлетворяют равенству НОД[х" 1, Е (х)] = (х" 1)/Л (х) = AD (х). Доказательство. Многочлены Е (х) и Л (x)»e имеют общих корней, так как по определению Л (а') = О тогда и только тогда, когда Е (а') + О. Каждый элемент а' должен быть корнем либо Е (х), либо Л (х). Следовательно, Л (x) Е (х) = Р (х) ("" 1) 
9.1. спектРАльные иетОды декОднРОВАния я9] для некоторого многочлена P (х), взаимно простого с Л (х). Тогда НОД [х" 1, Е (х)] = (х" 1)/Л (х) = Л' (х), что и требовалось доказать. О Применим описанный в теореме 7.7,1 алгоритм Евклида с s (х) = х" 1 и 3 (х) = Е (х), временно игнорируя тот факт, что в общем случае известны только 2t старших коэффициентов многочлена Е (х). Поскольку Л (х) НОД [х" 1, Е (х)] = х" 1, то, согласно следствию 7.7.2, Л (х) = ( ‒ 1) Аф' (х) определяет многочлен А~~~' (х), вычисляемый в процессе выпол- нения алгоритма Евклида. Если многочлен Е (х) известен, то с помощью алгоритма Евклида мы таким образом можем вычислить Л (х). Но нам известны только те коэффициенты многочлена Е (х), для которых соответствующие коэффициенты многочлена С (х) равны нулю, и, таким образом, на первый взгляд эта формула для Л (х) ка- жется бесполезной, На самом деле ее можно использовать и в том случае, когда известны лишь 2t коэффициентов многочлена Е (х), если только они правильны. Рассмотрим код Б Ч Х, кор нями порождающего многочлена ко- торого являются элементы а" ", ..., а" '. (Если использовать в качестве примитивного элемента поля а-', то это обычные корни с показателями от 1 до 2t.) Построим алгоритм декодирования для такого кода БЧХ. Нам надо показать, что если произошло не более t ошибок, то итерации алгоритма Евклида зависят только от 2t старших коэффициентов многочлена Е (х). Остальные коэф- фициенты могут выбираться произвольно. Теорема 9.1.2. Пусть заданы Е, длл j =- и ‒ ‒ 2/, ..., и 1. Тогда ил~еется нс более одного способа задания Е,, j ==- О, ... ..., и -- 21 1, такого, что уравнение Л (х) НОД [х" 1, Е (х)] = х" 1 рпзрешимо относительно Л (х) степени t или меньше. Доказательство. Доказательство теоремы показывает, что она является одной из форм границы БЧХ. Предположим, что сте- пень многочлена Л (х) не больше 3 и что он удовлетворяет усло- 10» 
Я9Я ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ виям теоремы. Выпишем последний шаг алгоритма Евклида в форме, приведенной в доказательстве следствия 7.7.2: я А2~ ' (х) А1р '(х) НОД [z" ‒ 1, Я (х)] Е (x) А2'1я' (х) Аф (z) = ( ‒ 1)' О Отсюда видно, что ( 1) Аф' (х) = Л (х). Вместе с тем в прямой форме последнее равенство имеет вид НОД[Х ‒ 1, Е(х)] А1 '(x) A4'(x) x" ‒ 1 Аф(х) Аф'(х) Е(х) что приводит к требованию О = ( 1) А'~~' (х) (х" 1) + Л (х) Е (х). Следовательно, многочлен Л (х) Е (х) кратен многочлену х" 1. Таким образом, многочлен Е (х) имеет корни в тех точках поля GF (q), в которых не имеет корней многочлен Л (х). Поскольку степень многочлена Л (х) не превосходит t, то он имеет не более t нулей. Тогда компоненты е; обратного преобразования Фурье обращаются в нуль по меньшей мере и 3 раз. Согласно границе БЧХ, должен найтись такой вектор е, преобразование Фурье которого совпадает с известными коэффициентами многочлена Е (х) в позициях / = п 2t, ..., п 1. Это завершает доказа- тельство теоремы. П Одним из непосредственных способов применения доказанной теоремы является попытка перебрать всеми возможными спосо- бами неизвестные коэффициенты многочлена Е (х) и воспользо- ваться алгоритмом Евклида для вычисления Л (х). Только один многочлен Л (х) будет иметь степень не больше t. Он-то и будет правильным многочленом локаторов ошибок, а соответствующий многочлен Е (х) правильным спектром вектора ошибок. Однако так как Л (х) однозначно определяется по известным компонентам Е (х), то более целесообразной представляется воз- можность избежать перебора неизвестных коэффициентов много- члена Е (х). Такой алгоритм представлен на рис. 9.3. Рассмотрим алгоритм деления s (х) = Q (х) t (х) + г (х), где deg t (х) = а и deg s (х) = Ь. В этом алгоритме степень част- ного Q (х) равна Ь а и сам многочлен-частное Q (х) зависит от t (х) только через коэффициенты t„ t, „..., 1,,. Для вычисле- 
9.1. СПЕКт~эАЛ~эНЫЕ, METOge PEKOgHVOBAHHR 293 Выход Рис. 9.3. Декодер для кодов БЧХ, основанный иа алгоритме Евклида. ния Q (х) воспользуемся следующей итеративной процедурой приг=О, ..., b ‒ а: r ‒ 1 Qb-а-г Ь-r CJ Хб-а-~ ~+1-г и. l=0 Данный алгоритм является слабой модификацией обычного алго- ритма деления многочленов. Используем эту процедуру вычисления частного на каждом шаге алгоритма Евклида. В r-й итерации теоремы 7.7.1 вычислим только коэффициенты s,"+" и 3~~'+" для значений / от п 21 + 
294 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ + f <=< deg Q<'' (х) до п ‒ 1. Эти старшиефрагменты многочленов з'+ ' (х) и t~'~ ' (х) являются именно теми многочленами, кото- рые необходимы для выполнения итерационных шагов алгоритма Евклида при построении рассматриваемого ряда многочленов- частных. Так как НОД[х" ‒ 1, Е(х)] 0 1 x" ‒ 1 Q<"" '(х) Е (х) 1 s'+ ' (х) Q ' (x) t<'+<>(x) '+' 0 П (=R-i то можно записать r+< Q<l) ( 1 0 НОД [х" ‒ 1, Е(х)] 0 1=R 1 1 ‒ Q'" (х) Е(х) t<'+<> (х) Поскольку степень НОД [х" 1, Е (х)] равна по меньшей мере п 1, отсюда следует, что степень многочлена t<'~ ' t„) равна по меньшей мере п ‒ t + f <=,~< deg Q"'(х). Таким обра- зом г<'+" известны для всех j от / = п ‒ 2t + f;=< deg Q' ' (х) до п ‒ 1 -1- ~~<=,+< deg Q (х) при ненулевом верхнем индексе. iр R (1) Этого диапазона достаточно для вычисления Q'+ ' (х) и продол- жения итерации. 9.2. ИСПРАВЛЕНИЕ СТИРАНИЙ И ОШИБОК Контролирующие ошибки коды могут быть использованы в кана- лах, в которых кроме ошибок происходят и стирания. Принятое по такому каналу слово состоит из входных символов канала (часть из них может быть ошибочными) и пробелов (или экви- валентных символов), обозначающих стирания. Декодер должен исправить ошибки и восстановить стертые символы. Код с мини- мальным расстоянием d* позволяет декодировать любую конфи- гурацию, содержащую v ош ибок р сти ран ий, и р и условии, что cL~ w 2v + 1 + p. Наибольшее v, удовлетворяющее этому неравенству, обозначим через 1,. Чтобы декодировать принятое слово с р стираниями, необхо- димО найти кодовое слово, которое в нестертых позициях отли- чается от принятого слова не более чем в 1„символах. Поскольку 
92. ИСПРАВЛЕНИЕ СТИРАНИЙ И ОШИБО~ Qgf5 по определению параметра t~ такое слово единственно, разыски- вается любое подходящее слово. Нам нужно только найти какое- либо решение, так как мы знаем, что оно лишь одно. Один из возможных способов декодирования состоит в угады- вании стертых позиций с последующим применением любой про- цедуры исправления ошибок. Если процедура приводит к исправ- лению не более 1, ошибок в нестертых позициях (и, возможно, некоторых угаданных символах в стертых позициях), то кодовое слово восстанавливается. Если необходимо исправлять слишком много ошибок, то делается новая попытка угадать стертые сим- волы. При этом любая подходящая для данного кода процедура исправления ошибок может быть модифицирована в процедуру исправления ошибок и стираний. Практически она подходит в тех случаях, когда число комбинаций угадываемых стертых сим- волов мало. В противном случае такая процедура проб и ошибок становится практически неприемлемой. В таких случаях восста- новление стертых символов должно осуществляться некоторым регулярным способом, входящим в алгоритм декодирования. Как мы видели, частный класс кодов БЧХ допускает многие сильные алгоритмы декодирования. Все они могут быть обобщены на случай декодирования ошибок и стираний. Для простоты будем полагать j, = 1. Пусть v;, с = О, ..., и 1, обозначают символы принятого вектора. Предположим, что стирания произошли в позициях Во всех этих позициях принятое слово содержит про- белы, которые мы сначала заполним нулями. Определим и-мер- ный вектор стираний, положив символы в стертых позициях рав- ными f;, 1 = 1, ..., р, а в остальных позициях равными нулю. Тогда v~ = с, + е; —,' f;, а' = О, ..., и ‒ 1. Пусть ~~ произвольный вектор, символы которого равны нулю в каждой позиции стирания и только в них. Тогда фр;=ф;(с,+е, +f;) =-ф;с; i-Ч';е;. Определим модифицированное принятое слово равенством о; = = g<u<, модифицированный вектор ошибок равенством е; = = ~р~е; и модифицированное кодовое слово равенством с; = q,ñ;. (Модифицированный вектор ошибок содержит ошибки в тех же позициях, что и исходный вектор ошибок е.) Тогда последнее ра- венство приводится к виду / ~с ‒ ~i + ei Теперь задача состоит в декодировании вектора v' и сводится к задаче вычисления вектора е', которую мы умеем решать при достаточном числе компонент синдрома. 
Я96 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Следующий шаг построения алгоритма состоит в выборе век- тора V, основанном на некоторых проводимых в частотной области рассуждениях. Пусть U< ‒ ‒ а'~ для 1 = 1, ..., р обозначают ло- каторы стираний. Определим многочлен локаторов стираний ра- венством и ‒ 1 P 'F(x) = f Vqx = П(I ‒ xU,). Эгот многочлен специально определен так, чтобы компоненты ф обратного преобразования вектора Ч" были равны нулю, как только /~ ч~- О. Следовательно, ф/; = О. В частотной области это дает Ч'=(V е С)+Е'. Ко вектор Ч.' отличен от нуля только на блоке длины р+1, а по построению кода БЧХ вектор С имеет нулевые компоненты в блоке длины 2t. Следовательно, свертка Ч" е С равна нулю в блоке длины 2t р. Полагая S; = V;, определим на этом блоке модифицированный синдром. Тогда 3 = (Чг е Ч) = Е, что задает достаточное число компонент синдрома для исправле- ния модифицированного вектора ошибок. Итак, точно так же, как в случае наличия только ошибок (при условии, что их не более (2t р)/2), по этим 2t р извест- ным компонентам вектора E' можно найти многочлен локаторов ошибок Л (х). Коль скоро многочлен локаторов ошибок известен, можно скомбинировать его с многочленом локаторов стираний и дальнейшее декодирование проводить так же, как и в случае на- личия только ошибок. Чтобы проделать это, определим сначала многочлен локаторов ошибок и стираний: Л (х) = Ч" (х) Л (х). Обратное преобразование Фурье вектора Л содержит нуль в по- зиции каждой ошибки и каждого стирания. Таким образом, А~ ‒ ‒ О, если е; ~ О или /; ~ О. Следовательно, А~ (е~ + /;) = О, Л е (E+F) =О, и многочлен 1 отличен от нуля в блоке длины, не превышающей v + р + 1. Следовательно, используя известные компо- ненты вектора Л и 2t известных компонент вектора E + F, можно воспользоваться этим содержащим свертку уравнением для того, 
~.2. ИСПМВЛГНИК СтИМний и ошИвОК чтобы рекуррентно продолжить вектор E+F до всех и компонент. Затем вычисляются C;= V; ‒ ‒ (E;+F). Обратное преобразование Фурье завершает декодирование. Вычисление многочлена локаторов ошибок по модифицирован- ному значению синдрома можно выполнить с помощью алгоритма Берлекэмпа Месси. Можно, однако, сделать это гораздо лучше, если скомбинировать несколько шагов. Идея алгоритма Бер- лекэмпа ‒ Месси состоит в рекуррентной процедуре вычисления многочлена Л (х) за 2t итераций, начиная с оценок Л"' (х) = 1 и В''(х)=1. В случае наличия стираний в уравнении для невязки Ь„ком- поненты синдрома заменяются компонентами модифицирован- ного синдрома: Многочлен локаторов ошибок вычисляется с помощью и итераций при начальных условиях Л '(х) = В' '(х) = 1. Но что произойдет, если заменить начальные условия на Л'о' (х) = В~~'(x) = Ч"(х)? Заметим, что в этом случае Л'~ (х) V (х) = Л' " (х) V (х) ‒ Л„хВ' " (х) Ч'(х), В" (х) Ч"(х) =- (1 ‒ 6,) хВ' " (x) V (x) + + 6,Л, 'Л' " (х) V (x). Если мы временно определим Л" (x) = Л~'~ (х) Ч" (х) и будем вычислять невязку Л„по формуле 
Я98 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Итак, если в качестве начальной точки в алгоритме Берлекэмпа‒ Месси вместо 1 выбрать многочлен 'Г (х), то модифицированный синдром вычисляется неявно и нет необходимости вводить его в явном виде. Отбросим теперь обозначение Л (х), заменив его на Л (х) и назвав многочленом локаторов ощибок и стираний. При начальных условиях, даваемых многочленом Т (х), алго- ритм Берлекэмпа Месси рекуррентно порождает многочлен ло- каторов ошибок и стираний в соответствии с уравнениями Л"' (х) = Л' " (х) ‒ Л,хВ' " (х), В" (х) =- (1 ‒ 6,) хВ'-" (х) + 6,Л 'A' (х). д,= ~л," "s,, у=о Дополненный правилами восстановления стираний алгоритм Бер- лекэмпа Месси приведен на рис. 9.4. Сопоставим его с алго- ритмом на рис. 9.1. Единственное изменение по сравнению с алго- ритмом для исправления только ошибок состоит в вычислении многочлена локаторов стираний; сравнительно с остальными вы- числениями алгоритма оно является тривиальным. Это вычисле- ние производится с помощью показанной на рис. 9.4 специальной вспомогательной цепи, содержащей первые р итераций. Индекс r используется в качестве счетчика для первых р итераций, а после вычисления многочлена стираний в качестве счетчика последую- щих итераций алгоритма Берлекэмпа Месса до тех пор, пока r не превзойдет 2t. При каждом стирании длина L регистра сдвига возрастает на единицу, а затем изменяется в соответствии с обыч- ными правилами процедуры алгоритма Берлекэмпа Месси. По- скольку, однако, этот алгоритм не учитывал стираний, то в конце приходится добавить исправления стираний и заменить r u L на r р и ]' р соответственно. Прежде чем закончить данный параграф, заметим, что вместо пробела, обозначающего стирание, можно оставить лучше всего угаданный символ, пометив факт наличия в данной компоненте стирания некоторым специальным образом. Такие стирания на- зовем помеченнь~л~и. Эти позиции не влияют на алгоритм декоди- рования, так как стоящие в них символы заменяются нулями. Иногда вне основного декодера удается использовать дополнитель- ные блоки, извлекающие пользу из этой слабой информации. Например, можно отказаться от полученного на выходе декодера слова, если слишком многие из помеченных стираний не совпа- дают с результатом декодирования. 
r -г+1 Л (т1 ‒ Л(т) - I l. ò A (r) B(x) ‒ л(х) L -L+1 r)p 9 и-1 Ьг= ЕЛ)Яг ) j=0 Hem r> 2~ 9 Да Ьг= О 9 Hem Нее 2L~r+p ‒ 1 Л(х) - Т(Х) 9 Да Cmobs L-r-~+р В(х) -Ь,'Л(х) Л(х) T(x) B(>) ~~(х) Рис. 9.4. Исправляющий ошибки и стирания декодер для кодов БЧХ, 9.3. ДЕКОДИРОВАНИЕ РАСШИРЕННЫХ КОДОВ РИДА ‒ СОЛОМОНА Незначительная модификация любого декодера для кода Рида‒ Соломона позволяет получить декодер для расширенного кода Рида ‒ Соломона. Один из возможных способов состоит просто Вычисление нового мноаочлена связей, для коаороьо Ь„=О т(х) -л(х) ‒ Ь„хВ(х) 9.3. РАСШИРЕННЫЕ КОДЫ РИДА ‒ СОЛОМОНА Я99 Начальные значения: з )+~о-! j О,..., и -1 Л(х) =В(х) =1 L=r=o 
ЭОО ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ в переборе всех д' возможных значений ошибок в двух символах расширения и последующих попытках декодирования для каждой пары. Если такая попытка приводит к кодовому слову при 1 или менее исправлениях, то результат правилен, так как только одно кодовое слово находится на расстоянии 1 от принятого слова. Лучше, однако, отдельно рассматривать два случая возмож- ных конфигураций ошибок: в первом случае искажен хотя бы один из символов расширения, а во втором ошибок в символах расширения нет. Сообщение прп этом декодируется дважды (для каждого из случаев по отдельности). Пусть ') S;= V;p;, при j = 1, ..., 21 2, и п)сть Sp =- -V, "‒ H ~2/ ‒ 1 Vfî+я! ] ~+ если о и v+ не искажены. В первом случае во внутреннем векторе происходит не более 1 1 ошибок и поэтому 2t ‒ 2 компонент синдрома 8„..., S~], достаточно для того, чтобы правильно восстановить внутренний спектр конфигурации ошибок. Эти 2t ‒ 2 компонент синдрома можно рекуррентно продолжить до и ‒ 2 компонент спектра конфигурации ошибок, так как S> ‒‒ =- E;+;,. Во втором случае все ошибки лежат во внутреннем векторе, но их не более 1, и поэтому для восстановления спектра конфигурации ошибок компонент достаточно 2t компонент S,, ..., S,<>, Вообще говоря, одной попытки декодирования недостаточно и приходится делать обе попытки но так как ми- нимальное расстояние кода равно 2t+ 1, может быть найдена только одна конфигурация не более чем из t ошибок. Чтобы не удваивать сложность декодера дублированием деко- деров, опишем вариант разделения вычислений, который дает лишь незначительное увеличение сложности. В этом параграфе мы опишем модификацию алгоритма Берлекэмпа Месси для де- кодирования расширенных кодов Рида ‒ Соломона, а в следую- щем сделаем то же самое для рас~циренных кодов БЧХ. Ограни- чимся вычислением многочлена локаторов ошибок, так как осталь- ные шаги алгоритма нам уже известны. Наиболее важными расширениями кодов Рида ‒ Соломона являются расширения на один символ, так как среди них содер- жатся коды длины 2, а во многих приложениях в качестве длины кода используется именно степень двойки. Мы начнем с этого случая, так как он представляет практический интерес из-за простоты декодера и так как его легко объяснить. В рассматриваемом коде спектральные компоненты C;„... ...,C ~2( g равны нулю и единственную проверку на четность дает символ с =- C>+~~ 1. Равенство нулю 2 t 1 компонент га- рантирует, что минимальное расстояние в коде равно 2t,и поэтому код позволяет исправлять 1 ‒ 1 и обнаруживать t îøèáîê. Блок ') В случае расширения кода на два символа удобно изменить нашу обыч- ную индексацию и обозначить компоненты синдрома через So, ..., S>~z. 
9.3. РАСШИРЕННЫЕ КОДЫ РИДА ‒ СОЛОМОНА QQ) пз 2t компонент синдрома начинается с компоненты 31, равной ~~„ и заканчивается компонентой S„, равной V;,+2< 1 ‒ о». Пред- положим, что произошло не более 1 ошибок, и проведем итера- ции алгоритма Берлекэмпа Месси от S> до S><>. Если ~ 1 ‒ 1 и невязка Л,~1 равна нулю, то, согласно теореме 7.5.3, во внутреннем векторе произошло не более t 1 ошибок и вы- численное значение многочлена локаторов ошибок правильно. В противном случае во внутреннем векторе произошло t îøèáîê, и, следовательно, символ u+ правилен. Дополнительная компо- нента синдрома S,< позволяет продолжить алгоритм Берлекэмпа Месси еще на один шаг, так что полпое число итераций равно 21, и поэтому найден многочлен локаторов 1 ошибок. Декодер для расширенного на одну позицию кода Рида ‒ Соломона показан на рис. 9.5. Декодер для расширенного на два символа кода Рида ‒ Соло- мона более сложен и описать его труднее. Предположим, что произошло не более t ошибок. В нашем распоряжении имеются 2 1 ‒ 2 компонент внутреннего синдрома, начиная с компоненты S, равной V,, ~. Согласно теореме 7.5.3, воспользуемся ими для исправления 2t 2 ошибок во внутреннем векторе и обнаруже- ния t ошибок. Иначе говоря, начиная с S и выполняя 2 1 4 итераций алгоритма Берлекэмпа Месси, найдем многочлен ло- каторов ошибок. Если L,~,,-. t ‒ 2, то сделаем еще две итера- ции и остановимся, если хотя бы одна из невязок Л2~ 3 или Ь,~, отлична от нуля. Если обе невязки равны нулю, то во внутрен- нем векторе произошло не более 2t 2 ошибок. В этом случае многочлен локаторов ошибок вычислен правильно и может быть использован для дальнейшего исправления ошибок во внутрен- нем векторе. Так как полезная информация может быть полностью выделена из внутреннего вектора, то декодирование закончено. В противном случае внутренний вектор содержит 1 ‒ 1 или ошибок, и поэтому искажено не более одного граничного сим- вола. Следовательно, хотя бы одна из компонент S() и S~]] син- дрома правильна, а если все ошибки произошли во внутреннем векторе, то они правильны обе. Присоединяя сначала одну, а затем вторую из них к остальным компонентам синдрома, полу- чим два блока по 2t ‒ 1 символов, хотя бы один из которых со- держит 2t ‒ 1 правильных компонент синдрома. Теперь дважды пр имен им ал гор итм Берлекэмпа ‒ Месси, сн а- чала к одному из этих блоков (от Sp до Sg, ), а затем к другому (от Si до S2t 1) Каждый раз будем исправлять t ‒ 1 и обнару- живать t ошибок. Если все 1 ошибок расположены во внутреннем векторе, то обе попытки позволят обнаружить t ошибок во вну- треннем векторе, и, следовательно, оба символа расширения являются правильными. Если при одной пли при обеих попытках не обнаруживается 3 ошибок, то во внутреннем векторе произошло 
3ОЯ ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Рис. 9.5. Декодер для расширенного на один символ кода Рида ‒ Соломона. только 1 ‒ 1 ошибок, и, следовательно, многочлен локаторов оши- бок вычислен правильно и может быть использован для исправ- ления внутреннего вектора. Так как информация может быть пол- ностью извлечена из внутреннего вектора, декодирование закон- чено. 
9.4. ДЕКОДИРОВАНИЕ РАСШИРЕННЫХ КОДОВ БЧХ 303 Наконец, если во внутреннем векторе обнаружено 1 ошибок, то оба граничных символа правильны. Следовательно, и обе гра- ничные компоненты синдрома также правильны, и в нашем рас- поряжении имеется 2 t правильных компонент синдрома, позво- ляющих исправить t ошибок во внутреннем векторе. Описанная процедура декодирования все же дважды обра- щается к алгоритму Берлекэмпа Месси. Такое описание выбрано из соображений простоты объяснения; процедуру можно сделать более компактной. 9.4. ДЕКОДИРОВАНИЕ РАСШИРЕННЫХ КОДОВ БЧХ Теперь мы можем описать декодирование расширенных на два символа кодов БЧХ, определенных в $ 8.5. Если конструктивное расстояние d кода является нечетным числом, то представлен- ный в расширении поля код со своими хвостами образует подкод кода Рида ‒ Соломона, и можно использовать уже описанный декодер для расширенного на две позиции кода Рида ‒ Соломона. Если конструктивное расстояние кода четно, то к одному из хвостов добавим проверку на четность. Пока еще без доказатель- ства мы утверждаем, что эта процедура приводит к коду, мини- мальное расстояние которого не меньше d + 1. Докажем этот факт, выписав соответствующий алгоритм декодирования.,деко- дер аналогичен декодеру для расширенного на два символа кода Рида Соломона. Теорема 9.4.1. Paciuuрение на два символа двоичного кода БЧХ с четным конструктивным расстоянием d при использовании дит к коду, минимальное расстояние катарога равно по меньшей мере d + 1. Доказательство. Пусть t =- d/2. Построим декодер, исправ- ляющий t ошибок. В нашем распоряжении имеются 2t ‒ 3 ком- понент внутреннего синдрома и две граничные компоненты син- дрома Sp -- Vj v - и Sf 2 »--- ~;„+~~ .2 -- vp., которые правильны, если граничные символы v it v+ не содержат ошибки. По предпо- ложепию конструктивное расстояние d является четпым числом, а в сплу ограничешш сопряженности числа jp u jp - ~- 2 1 2 должны быть нечетными. Эти требования выполняются только в том случае, когда jp а 0 и jp + 21 2 > О. Следовательно, ограничения сопряженности гарантируют также, что С;„~ ‒ ‒ 0 и C;,+~< ~ = О, так как частоты (j', 1)/2 и (/', + 2t 1)/2 являются четными. Следовательно, мы имеем еще две компо- ненты синдрома, а именно .'~ 1-‒ ‒ V;, 1 и .'4~ ~ = V,„pgi ~. Так как V+ дополнительно содержит проверку на четность, то можно определить, четно или нечетно число произошедших 
3()4 ГЛ. <. АЛГОРИТМЫ; Г.ПЕКТРАЛЬНЫЕ МЕТОДЫ в этом хвосте ошибок. Предположим, что эта проверка на четиость указывает на ошибку. Тогда во внутреннем векторе содержится не более 1 ‒ 1 ошибок. У нас имеется 2t 3 внутренних компо- нент синдрома. Это позволяет исправить 1 ‒ 2 и обнаружить 1 ‒ 1 ошибок во внутреннем векторе. Если во внутреннем век- торе обнаружено t ‒ 1 ошибок, то символ v ошибок не содержит, величина S, является правильной и может быть использована для еще одной итерации при вычислении многочлена локаторов t 1 ошибок. Это завершает декодирование в случае, когда проверка на четность в символе v+ указывает ошибку. В противном случае, когда проверка на четность в символе v, не указывает ошибки, в этом хвосте имеется четное число ошибок. Тогда для исправления t ‒ 3 ошибок во внутреннем векторе вы- полним, начиная с S,, 2t ‒ 6 итераций алгоритма Берлекэмпа‒ Месси (используя тем самым 2t ‒ 3 компонент внутреннего сгггг- дрома) и зарезервируем остальные три итерации для обнаруже- ния 1 или меньше ошибок во внутреннем векторе. Если 1 3 ошибки не исправились, то внутренний вектор содержит 1 ‒ 2, или t ‒ 1, или t ошибок, и, следовательно, граничные символы содержат не более двух ошибок. Следовательно, либо v, прави- лен, либо v+ содержит две ошибки, à v правилен. Хотя бы одна из граничных компонент синдрома правильна. Присоединим S», или So к одному концу внутреннего синдрома и Я,,, или 52~ к другому концу. Это даст нам два синдрома с 2t ‒ 1 компонентами, хотя бы один из которых правилен. Для каждого из синдромов воспользуемся алгоритмом Берлекэмпа‒ Месси для исправления t ‒ 1 и обиаружения t ошибок во внутрен- нем векторе. Если во внутреннем векторе содержится t ошибок, то оба синдрома должны указать на это, и в таком случае гранич- ные символы не искажены. Если одна или обе попытки декоди- рования не обнаруживают во внутреннем векторе 1 ошибок, то в нем содержится не более t ‒ 1 ошибок и тогда вычисленный многочлен локаторов ошибок является правильным и позволяет завершить декодирование. Наконец, если во внутреннем векторе обнаружено t ошибок, то в граничных символах оцшбок нет и в нашем распоряжении имеются 2t + 1 компонент синдрома, позволяющих исправить t ошибок. 9.5. ДЕКОДИРОВАНИЕ ВО ВРЕМЕННОЙ ОБЛАСТИ В $ 9.1 было показано, что задача декодирования кодов БЧХ может быть сформулирована как задача спектрального оцени- вания. Декодер состоит нз преобразователя Фурье (вычислителя синдрома), авторегресспонного спектрального анализатора (алго- 
9.5. ДЕКОДИРОВАНИЕ ВО ВРЕМЕННОЙ ОБЛАСТИ 3Q5 ритма Берлекэмпа ‒ Мессп} и обратного преобразователя Фурье. Задание декодера такими блоками облегчает его исследование, однако практическая реализация декодера может существенно отличаться от этой схемы. В настоящем параграфе мы покажем, как преобразовать вы- числительный алгоритм, чтобы избежать преобразования потока данных. Это позволит исключить из декодера оба преобразова- ния Фурье. Главная идея такого преобразования основывается на том, что рекурсия в алгоритме Ьерлекэмпа Месси линейна по обоим входным многочленам (хотя нелинейна по невязке). Во временной области рекуррентные уравнения имеют свои ана- логи, которые можно найти аналитически с помощью преобразова- ния Фурье. Это дает систему уравнений декодирования, связы- вающих непосредственно поступающие данные, и исправление ошибок производится без преобразований Фурье. Чтобы исключить из вычислений преобразование Фурье, применим это преобразование ко всем величинам, входящим в фор- мулировку теоремы 7.4.1. Преобразование вектора Л, обозначаю- щее вектор локаторов ошибок во временной области, обозначим через 3~ = {);«1 = О, ..., n ‒ 1}. Преобразование вектора В обозначим соответственно через Ь = «Ь;« i = 0, ..., n 1}. Алгоритм Берлекэмпа ‒ Месси превращается во временной области в рекуррентный процесс, который описывается следующей тео- ремой. Теорема 9.5.1. Пусть v принятое заи~умленное слово кода БЧХ, и пусть величины Х,' ", ~ = О, ..., и ‒ 1, вычисляются с помощью рекуррентных уравнений п=l л, = ~, а'(х," 'v;), с=0 L„= 6,(г ‒ L„,) + >,L,„ ~ (г) ~ с ~(г ‒ !) C Г C ~ (г) ~ ‒ 1~ О c' g(r=l ) C ,.а где r = 1, ..., 2t, начальные условия имеют вид Х<" ‒ ‒ 1, Ь~" ‒‒ 1 для всех i, а Ь, = (1 ‒ 6,} = 1, если одновременно Л„~ 0 и 2L„( r 1, и О„= 0 в противном случае. Тогда Х,'"' = 0 тогда и только тогда, когда е; ф= О. Доказательство. Применим преобразование Фурье ко всем входящим в формулировку теоремы векторным величинам. Тогда все рекуррентные уравнения запишутся в виде, указанном в фор- 
3О6 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ кооовое СЛОВО Прцнявое СЛОВО Рис. 9.6. Временной декодер для двоичного кода БЧХ. мулировке теоремы 7.4.1, за исключением уравнения для не- вязки n ‒ 1 л, =- ~ л,"-" v, „ у=о в котором вместо вектора $ стоит вектор Ч. Но Л," " = О для j ) 21 и V; = S; для j = 1, ..., 21. Следовательно, п ‒ ! л,=- ~ л,"-"s... (=о и алгоритм во временной области формулируется аналогично теореме 7.4.1. П Так как в двоичном случае ~-я координата принятого слова содержит ошибку тогда и только тогда, когда Х~ ‒ ‒ О, то с вычис- лением вектора Х исправление ошибок почти заканчивается. Декодер для двоичного кода с декодированием во временной области показан на рис. 9.6. ,Для недвоичных кодов во временной области нельзя ограпи- читься вычислением локаторов ошибок; надо вычислить еще ве- личины ошибок. В частотной области величппы ошибок можно вычислить с помощью следующих рекуррентных уравнений: ( Ь~ = ‒ ~ Л~Еду, lг == 2l ‒ 1, ..., ц ‒ 1. j ! Как только многочлен локаторов ошибок вычислен, можно со- гласно этой рекурсии по известным 2 t компонентам вектора Е вычислить все остальные его компоненты, проведя и 2t ите- раций. Следующая теорема описывает соответствующий этому процесс Во временной области. В этом случае нельзя просто воспользо- 
9.5. ДЕКОДИРОВАНИЕ ВО ВРЕМЕННОЯ ОБЛАСТИ 3Qf i=О ,(r) (r — I) л ‒ ‒ ~qqC является v,'"' === е;, i = О, ..., и 1. Доказательство. Разобьем шаг рекурсии в частотной области на два шага, начиная с принятого спектра Ч и покомпонентно преобразуя его в Е: ~r ~r 1~(~ ‒ 1) у j y(r ‒ 1) r~ j®r, (г) у(Г j r. Таккак V,'") = Åjäëÿ j=1, ..., 2/иЛ;=Одля j) t, товы- писанные выше уравнения эквивалентны следующим: n ‒ 1 Е„=- ‒ g A>E,;. j=l Эта эквивалентность и доказывает теорему. CI На рис. 9.7 изображен временной декодер для полей характе- ристики 2. Левая часть блок-схемы соответствует теореме 9.5.1, а правая теореме 9.5.2. В процессе проведения итераций в ле- вой части формируется преобразование Фурье многочлена лока- торов ошибок. При каждой итерации в правой части принятое слово преобразуется таким образом, что одна компонента спектра принятого слова переходит в компоненту спектра вектора оши- бок. Таким образом, после выполнения последней итерации при- нятое слово преобразуется в вектор ошибок. Привлекательность декодера во временной области объяс- няется двумя причинами. 1. Вычисления проводятся в один этап, а процедура Ченя и рроцедура вычисления синдрома отсутствуют. Это приводит п более экономной конструкции, особенно при аппаратурной кеализации отдельных блоков декодера. 2. Такой декодер при умеренных значениях и должен вы- полнять намного меньше вычислений, чем декодер, использую- ваться преобразованием Фурье, а нужна некоторая пере- стройка. Теорема 9.5.2. Пусть v = с + е ‒ принятое зашумленное слово кода БЧХ. При заданномвовременной области векторе ло- n ‒ 1 л, = f а">,!' "!!;, 
308 Гл. 9. АЛГОРИТМЫ; СЛЕКТРАЛЬНЫЕ} МЕТОДЫ  Начальные значения: 5; =0; № = 6; =1, i=0,...,n-1 L=r=0  \  r<r+1  |  Вычисление следующего выхода, последнего фильтра,  n-t . Ar-: р а’, ых  Hem А Да в  Вычисление локатора. 5; +5 - Ar air i=0,....,n-1 Вычисление преобразования нового многочлена, связей, @ля которого А, =0 Нет | {= М; -Л,07 (= (0,..., И -1 Да, С; = 0; =5 Нет A=t i=0,....n-1] | До. Стоп - исправление [ <p_-L закончено . | «^-! а. - b~ & A b; *a"bi Airh i=0 n-1 = 0), . n—l yeecy  Рис. 9.7. Временной декодер.  щий прямое преобразование Фурье и общепринятый алгоритм Берлекэмпа— Месси. Независимо от числа исправляемых ошибок работа декодера занимает л тактов. Так как за каждый такт обрабатывается век- тор размерности л, то сложность декодера является величиной 
9 6. ДЕКОДИРОВАНИЕ ЗА ГРАНИЦЕЙ БЧХ ЗО9 О (и"-). При больших п можно построить декодер с меньшим чис- лом вычислений. Однако для малых и, включающих интервал практически используемых длин кода, временной декодер более привлекателен и обладает простой структурой. В эпоху больших интегральных схем структурная простота по меньшей мере столь же важна, сколь и число арифметических операций. 9.6. ДЕКОДИРОВАНИЕ ЗА ГРАНИЦЕЙ БЧХ Часто случается, что конфигурации ошибок, вес которых мало отличается от радиуса упаковки кода, не попадают ни в одну сферу декодирования. Такие лежащие между сферами декоди- рования ошибки не совсем обоснованно называют неисправляемыми конфигурациями ошибок. Они обычно обнаруживаются, но не исправляются. Иногда удается исправить некоторые из этих ошибок, расширив множество исправляемых конфигураций оши- бок. Укажем некоторые методы, позволяющие выполнить такое декодирование. Распознать неисправляемые кодом БЧХ конфигурации оши- бок можно либо по тому, что число корней многочлена локаторов ошибок, лежащих в поле локаторов, не равно его степени, либо по тому, что компоненты вектора ошибок выходят за пределы поля символов GF (q). Чтобы обнаружить такие ситуации, нет необхо- димости полностью выполнять все вычисления алгоритма деко- дирования'. они могут быть распознаны по свойствам рекуррентно вычисляемого спектра ошибок: t Е> ‒ ‒ ‒ ~, Л~Е~~. k=1 Согласно теореме 8.2.1, принадлежность всех компонентов кон- фигурации ошибок полю GF (q) можно распознать, проверив вы- полнение условия Ei =Е<<; ~~ для всех индексов 1 в спектре этой конфигурации. Если такая проверка указывает на неисправ- ляемую конфигурацию, то вычисления прерываются. Требование, состоящее в том, что степень многочлена Л (х) равна числу кор- ней многочлена А (х) в поле GF (и"), можно проверить с помощью условия периодичности последовательности коэффициентов (E;): Еп„+;~~ ‒ ‒ Е;, для всех j. Таким образом получается вто- рое правило проверки для обнаружения неисправляемой конфи- гурации ошибок и прекращения декодирования. Это правило основывается на следующей теореме. Теорема 9.6.1. Предположим, что Л(х) является ненулевым многочленом наименьшей степени, удовлетворяющим условию deR,Q (e) Е, = Q Л~Е~~ k=1 
310 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ для j = 2t+ 1, ..., и + 2t, где и = д ‒ 1. Числа различных корней многочлена Л (х) в поле GF (q~) равно степени этого много- члена тогда и талька тогда, когда Е<«~;)> ‒ ‒ Е; для всех =1, ...,21. Доказательство. Предположим, что число различных корней многочлена Л (х) в поле GF (g~) равно его степени. Тогда Л (х) делит х" 1 и существует многочлен Л' (х), такой, что Л' (х) Л (х) = х" 1. Следовательно, так как t g Л~Е;~ =- О, k=0 то выполняется равенство Л (х) Е (х) = 0, и, таким образом, Л' (х) Л (х) Е (х) = (х" 1) Е (х) = О. Отсюда вытекает, что Е; = Е<« ~~» для всех ). Обратно, предположим, что Е = Е<« ~;)) для всех j. Тогда (x" 1) E (х) = О. Но по условию Л (х) представляет собой такой ненулевой многочлен наименьшей степени, что Л (х) Е (х) = = 0 (mod х" ‒ 1). Согласно алгоритму деления (» ‒ 1) = Л(х) Q(х)+ r(х), так что (х" 1) Е (х) = Л (х) Е (х) Q (х) + r (х) Е (х). Следовательно, r (х) Е (х) = 0 (mod х" 1). Но степень r (х) меньше степени Л (х), так что многочлен r (х) должен быть ра- вен нулю. Следовательно, многочлен Л (х) делит х" 1 и все его корни являются корнями многочлена х" 1, 0 Если нарушается хотя бы одно из двух условий, т. е. если Е4~ ~ Е<<„.)) для некоторого у или E<«~;)) ~= Е; для некоторого ), то обнаруживается конфигурация более чем из t ошибок. Иногда желательно декодировать за пределами конструктив- ного расстояния. Небольшое продвижение за конструктивное рас- стояние дает продолжение алгоритма Берлекэмпа Месси после 2 t итераций. Основная идея состоит во введении дополнительных неизвестных синдромов (или дополнительных невязок) и анали- тическом продолжении алгоритма декодирования, при котором многочлен ошибок вычисляется как функция от этих неизвест- ных. Затем, придавая этим неизвестным различные возможные значения, методом проб и ошибок в поле символов кода разыски- вается вектор ошибок минимального веса. К сожалению, слож- ность этого метода очень быстро растет с отходом от конструк- тивного расстояния, так что его можно использовать не всегда. 
9.6. ДекодиРОВАние 3А ГРАницей Бчх 311 Тем не менее описанный выше метод применим во многих слу- чаях; укажем некоторые из них. 1. двоичные коды БЧХ, у которых проверочные частоты обра- зуют блок длины 2t, но истинное минимальное расстояние пре- восходит 2t+ 1. (Одним из примеров такого кода является код Голея. другой пример дается (127, 43, 31)-кодом БЧХ, конструк- тивное расстояние которого равно только 29.) 2. 11иклический код, проверочные частоты которого не обра- зуют непрерывного блока. 3. декодирование некоторых ошибок веса t + 1 в коде Рида Соломона или коде БЧХ, исправляющем t ошибок. 4. Лекодер для альтернантных кодов. Такое продолжение алгоритма можно строить как во времен- ной, так и в частотной области, а также некоторым смешанным способом. Можно строить одновременно и многочлен локаторов ошибок Л (х) (или Х (х)), и многочлен ошибок е (х). Сложность этого процесса зависит от подхода. Если символы кода лежат в подполе поля локаторов ошибок, то схема, в которой сначала вычисляется многочлен локаторов ошибок, приводит к неопре- деленностям, разрешить которые можно только вычислением со- ответствующих многочленов ошибок и проверкой принадлежности их компонент полю символов кода. В этом случае разумно ввести в вычисления дополнительные проверки, позволяющие сразу ликвидировать неопределенные ситуации при построении Л (х). Начнем с рассмотрения кода Рида Соломона над GF (д) с конструктивным расстоянием 2 t + 1. Произвольный много- член Л (х) степени t+ v с t+ > различными корнями в GF (q) представляет собой допустимый многочлен локаторов ошибок, если ~г ‒ 1 ~ Лф„~ = О, r = 1+ l+ v, ..., 2/. l=O Такой многочлен наименьшей степени с Л„=- 1 (если он является единственным} соответствует кодовому слову, находящемуся на наименьшем расстоянии от принятого слова. Если степень этого многочлена не выше t, то он будет вычислеп алгоритмом Бер- лекэмпа- ‒ Месси. Но даже если произошло больше, чем t ошибок, а многочлен наименьшей степени с указанными свойствами яв- ляется единственным, то принятое слово может быть однозначно декодировано, коль скоро этот многочлен найден. Для кода Рида Соломона нет необходимости вычислять величины ошибок, так как ошибки всегда лежат в поле GF (q). Если многочлен наимень- шей степени не является единственным, то имеется несколько возможных конфигураций ошибок одного и того же веса, и все они согласуются с принятым словом. 
31 Я ГЛ ° 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Предположим, что произошло t + 1 ошибок; тогда, чтобы вычислить Л (х), достаточно найти две неизвестные компоненты синдрома $2~+1 и S2tp2 или две невязки Агс+1 и Ü2t ~ 2. Итак, про- должим аналитически алгоритм Берлекэмпа ‒ Месси на две ите- рации с двумя неизвестными значениями невязки. Имеем с Л'"+ '(х) д(2(+2) ( 1 ‒ Л2() 2х 1 Лр((.)х Л (х) (28) ~2t+" ~2t+2 ~2t+2 ~ ~2t+1 ~21+! ~2t+! ~ Я где неизвестные удовлетворяют условиям Л2,+), Лд,), Q GF (q); 6gf+[ 6Q(+2 Q }0, 1}. Все остальные величины в правой части известны по 2 t синдромам. Преобразование частотной области во временную дает t g(2t+2) С ~(гС~-2) С ‒ С ‒ i (2t) 1 ~гС+-2© 1 ‒ - Ь2С+1 а ХС ‒ 1 ‒ С ‒ 1 ‒ g. (2t) ~2t+2~2t+2 ~2t+2© ~' С+! ~2t+I ~2t+I < г где мы воспользовались тем фактом, что если Е; = E;,, то обрат- ное преобразование удовлетворяет равенству е; = а 'e;. Теперь, если возможно, мы должны выбрать неизвестные так, чтобы век- тор ошибок содержал не более t+ 1 ненулевых компонент. Рассмотрим два возможных случая '): ( 1) 1„(2(+~) 1„(-") A ‒ с1)(-" ) A. ‒ ~(1)(-"~) i С 1© i 2© С p) z"-'+" = х"" ‒ л, -'~(2о ‒ л. --'(х(") где в первом случае А, и А, константы, не равные одновременно нулю, а во втором случае А, отлично от нуля. При Х'; + ' = О (2t+2) каждое из этих уравнений надо разрешить относительно А, и А, для ровно t+ 1 значения ипдекса с. Это даст локаторы t+ 1 ошибок, и дальнейшее декодирование может быть завершено как декодирование стираний. Хотя такой поиск представляется весьма трудоемким, он очень прост по структуре и хорошо упорядочен, так что не составляет труда сконструировать для его выполнения блок, содержащий регистр сдвига. Поиск решения можно организовать различным ') Имеются в виду две возможности, задаваемые уравнением для первой компоненты предыдущего векторного равенства при 6~С+1 ‒ О и ~st+i -- ! соогветственно. ‒ Прим. перев. 
9В. ДЕКОДИРОВАНИЕ 3А ГРАНИЦЕЙ БЧХ 313 образом. Одним из возможных подходов является построение гистограммы. Например, для уравнения (2) при каждом значе- нии А, построим гистограмму величины (Х,'"' А~и 'Ь,"") ' >< ‒ 2С (2С) X n "Х,' ". Любая составляющая гистограммы, принимающая значение t + 1, соответствует возможной конфигурации из t + 1 ошибок. Декодер можно модифицировать далее так, чтобы он исправ- лял t+ > ошибок. Хотя уравнения при этом удлиняются, такой подход представляется практически вполне возможным для t + 3 и t+ 4 в зависимости от длины кода. Теперь рассмотрим двоичные коды. Они отличаются от кодов Рида ‒ Соломона тем, что для них декодер может быть упрощен в силу теоремы 7.6.1, но одновременно усложняется за счет того, что многие из находимых конфигураций ошибок веса t+ v не являются двоичными и поэтому должны быть отброшены. Предположим, что у нас имеется двоичный код БЧХ с кон- структивным расстоянием 2t + 1, и мы хотим исправлять все однозначно декодируемые конфигурации веса t+ 1. Единствен- ными величинами, которые может измерять декодер, являются 2t компонент синдрома $„..., $„. Во всех остальных частотах стоят либо произвольные значения, либо значения, определяемые условиями сопряженности. Итеративный алгоритм в двоичном случае дает Л'-'+" (х) == Л'"'(х) ‒ Л„ч ~хВ'" (х). Во временной области он переписывается в виде р (2/+2) g(2t) g ‒ lg (2t) С i 28+1(~( С и предполагается, что конфигурация ошибок веса t или менее не была найдена алгоритмом. Построим гистограмму величины а1',"(Ь'; ' по всем ненуле- вым элементам поля GF (q). Каждая равная t+ 1 компонента этой гистограммы соответствует кандидату на роль конфигурации ошибок. Зная локаторы ошибок, вычислим эту конфигурацию. Если она двоична и единственна, то декодирование завершено успешно. Рассмотрим далее двоичный код, у которого проверочные частоты не являются последовательными. Например, провероч- ными частотами двоичного циклического (63, 28, 16)-кода яв- ляются ффффффи С„. Как можно проверить на ЭВМ, минимальное расстояние кода равно 15. По сравнению с (63, 24, 16)-кодом БЧХ этот код обладает тем преимуществом, что обеспечивает большую скорость, но зато для кода БЧХ изве- стен алгоритм декодирования. Однако ценой незначительного- усложнения частотный декодер для кода БЧХ удается преобра- 
Я14 f 0- 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ зовать в декодер для (63, 28, 15)-кода. Используя описанную выше процедуру, можно найти все конфигурации ошибок веса не более 7, которые согласуются с 12 последовательными прове. рочными частотами, а затем вычислить $,1 для каждой из них Только одна из них будет соответствовать измеренному значе- нию S~>. 9.7. ДЕКОДИРОВАНИЕ АЛЬТЕРНАНТНЫХ КОДОВ Альтернантные коды являются ограничением на подполе простей- шей модификации кодов Рида ‒ Соломона. Минимальное рас- стояние cl* альтернантного кода не меньше конструктивного рас- стояния d исходного кода Рида ‒ Соломона. Любая процедура декодирования кода Рида ‒ Соломона может быть использована для декодирования альтернантных кодов. Необходимо лишь мо- дифицировать синдром либо с помощью обратного преобразова- ния шаблона, либо путем умножения на него во временной области, либо путем вычисления свертки в частотной области; никаких других изменений не требуется. Таким образом, для декодирования альтернантных кодов в пре- делах конструктивного расстояния можно применять любой вре- менной или частотный декодер для кодов БЧХ. Привлекатель- ность альтернантных кодов, однако, состоит в том, что их мини- мальное расстояние много больше их конструктивного расстоя- ния. В то же время использование альтернантных кодов с БЧХ-де- кодером дает мало преимуществ по сравнению с использованием кодов БЧХ с БЧХ-декодером. Конечно, есть резон в том, чтобы использовать альтернантные коды с БЧХ-декодером при исправ- лении ошибок в пределах конструктивного расстояния и обнару- жении ошибок вплоть до минимального расстояния. Можно также применить описанные в 9 9.6 методы декодирования за конструктивным расстоянием, хотя и в ограниченных пределах. Полные возможности альтернантных кодов не будут реализо- ваны до тех пор, пока не будут найдены конструктивная. про- цедура построения дающих хорошие коды шаблонов и алгоритм декодирования, реализующий их минимальное расстояние. Профильтрованный спектр принятого слова дается равенством л ‒ ! т,= ~ о„...у„. 4=0 Для кода Гоппы спектр в свою очередь вычисляется из Т по формуле и ‒ ! 2t Ч~3 ~1 v, = ~ о„,.,„„т, = ~ a,ò„,., „, /' ‒.- 0 k.= 0 
9.7. Д Е КОД И РО ВА Н И Е A Jl bT E P HA HT H bl X КОДОВ 31 5 где степень многочлена Гоппы G (х) равна 2t и G (х) Н (х) = = 1 (то4 х' ‒ 1). Поскольку л †! f H<(; »)C(,=0, j=n ‒ 2t+1, ..., и, @=0 то компоненты синдрома даются равенствами л ‒ ! $; (n 2() ‒‒ Z H((f ~))г(~, j = и ‒ 2г.+ 1, ..., и, Ф=О или По этим компонентам синдрома вычислим многочлен локаторов ошибок и продолжим его рекуррентно для получения всех ком- понент SJ, j = 1, ..., n. Спектр вектора ошибок находится из равенств и†! Е) = f 6),$«( ‒ lh ‒ p+p())> j =О, ..., n ‒ 1. 4.= 0 На рис. 9.8 построен частотный декодер для альтернантных кодов. Синдром модифицируется в частотной области с помощью свертки со спектром шаблона. В принципе если эта операция реализуется до преобразования Фурье с помощью покомпонент- ного умножения во временнбй области, то число необходимых умножений будет меньше. Принятое слово, однако, состоит из символов малого алфавита, скажем GF (2). Поэтому могут ока- заться предпочтительнее преобразование фурье в малом поле и модификация синдрома с помощью свертки в частотной области. 3а исключением шага, связанного с шаблоном, декодирование альтернантных кодов происходит точно так же, как декодирова- ние кодов Рида ‒ Соломона. Так же, как и коды Рида ‒ Соломона, альтернантные коды можно декодировать за пределами конструк- тивного расстояния. В пределах минимального расстояния кодо- вое слово единственно. Декодер для кода Рида ‒ Соломона, при- меняемый для декодирования альтернантных кодов, может ука- зать и другие слова, но они будут содержать компоненты, не при- надлежащие полю символов кода, и такие слова должны быть отброшены. При декодировании кодов Гоппы в узком смысле такого от- брасывания ложных кодовых слов можно заранее избежать, если добавлять только компоненты синдрома, согласующиеся с огра- ничениями сопряженности Е2( ‒‒ Е(. Две дополнительные ком- 2 
316 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ  Начальные значения: n-1 5 = L Мнено Vi, j=1.2 А(Х) = B(x)=1 L=r=0 r-r+i  Вычисление следующего выхода. последнего Quabmpa 1  5, б- А, Вычусление H08020 многочлена связей, Нет | для которого А, =0 Г) =A@ - А, хВ(х) 1o H n-1 Do Л) = Ty G =Y - Z GkSjk-tn-2t) j=0,....n-1 Да. L=r-L Cmon- B(x) - А, AX) исправление Л@)- Т(х) Blx) «хВ(х) закончено  { |  Рис. 9.8. Декодер для альтернантного кода.  поненты синдрома эн и Sry2, необходимые для исправления ! + 1 ошибок, неизвестны. Но  27 В | Е, = 5, GrS ((j—k—nt-20)); следовательно  ot ot Е, = бобы + В бе$(енн—в) Е, = Собор | р Ск ((27--2— k) 
9-8. ПРЕОБРАЗОВАНИЯ В КОНЕЧНЫХ ПОЛЯХ 317 2 итак как Е =Е1, то 2t 2t ‒ 1 2 2 2 2 ~и-~г = Go Q ~Лг~ ~ ‒ a + GoSaty> + f GyShy I ‒ a /г=! й=! Таким образом, в качестве неизвестного надо ввести только $2~+1. В общем случае неизвестными являются компоненты с нечетными индексами, а компоненты синдрома с четными индексами вычи- сляются. Необходима только половина новых компонент син- дрома, а конфигурация ошибок всегда двоична. Если результи- рующий многочлен локаторов ошибок допустим, то декодиро- вание закончено. К сожалению, для декодирования s ошибок за пределами конструктивного расстояния необходимо просмо- треть д' возможностей для неизвестных компонент синдрома. 9.8. ВЫЧИСЛЕНИЕ ПРЕОБРАЗОВАНИЙ В КОНЕЧНЫХ ПОЛЯХ Рассмотрим преобразование Фурье л ‒ 1 V;= f а'fv;, i=0 где а элемент порядка и в поле GF (д ). Для малых значений и его можно вычислять в том виде, в каком оно записано, но так как вычисление содержит и' умножений, то оно становится прак- тически неприемлемым при больших длинах. Необходимы эф- фективные методы вычисления преобразования Фурье, и мы располагаем некоторыми такими методами. Одним из наиболее мощных методов, пригодных для многих значений длин, является переход от одномерного преобразования к многомерному пре- образованию Фурье. Все такие методы известны под общим на- званием быстрого преобразования Фурье. Изучение этих методов мы отложим до гл. 11; в этом же параграфе мы рассмотрим дру- гие методы вычисления преобразования Фурье, а именно chirp-ал- горитм Блюстейна, алгоритм Рейдера для простых значений длин преобразования и алгоритм Герцеля. Представленные на рис. 9.9 алгоритмы Блюстейна и Рейдера являются различными способами перехода от преобразования Фурье к свертке; первый из них переводит и-точечное преобразо- вание Фурье в п-точечную свертку, а второй 1который приме- няется в случае, когда и простое число) переводит п-точечное преобразование Фурье в (и 1)-точечную свертку. Во всех случаях, когда элемент а имеет квадратный корень, может использоваться chirp-алгоритм Блюстейна. Согласно тео- реме 4.6.15, каждый элемент поля Галуа имеет квадратный ко- рень. Для полей характеристики 2 yàu = а~ "+'~~', так как 
31 8 ГЛ. 9. АЛГОРИТМЬ1; СПЕКТРАЛЬНЫЕ МЕТОДЫ Chirp-алгоритм Блюстейна: л ‒ 1) л ‒ ! V, ‒ ~, а' Ъ; = I1~' Z I1‒ - <'-»' y о;] с=0 i=0 сутр chirp 1, 2, 3,..., п ‒ 1 = и', и', и',..., и" ‒ '(mod n) и ‒ l а!jv. i и ‒ [л ‒ г (~')] i=0 i' = zt'® л ‒ 1 n ‒ 1 Op ‒ ~- Я'iOl =‒ i= l V0 ‒ ‒ z v;, Vf i=0 V + f (а"' "+'"' ‒ 1)г,, j=0,...,и ‒ 1 п ‒ 1 VI =- У~+ f (а~' ‒ 1) ug, 1=-0,...,и ‒ 1 Vj О Рис. 9.9. Переход от преобразования Фурье к свертке. Алгоритм Рейдера: ,Ялина и должна быть простым числом В качестве примитивного элемента поля GF (п) исполь- зуется л. 
9.8. ПРЕОБРАЗОВАНИЯ В КОНЕЧНЫХ ПОЛЯХ 319 а + 1 всегда четко. Если характеристика поля отлична от 2, то квадратный корень из а лежит либо в GF (q"'), либо в 6Р(ф). Chirp-алгоритм Блюстейна определяется выражением Л ‒ 1 где 11 квадратный корень из а. В этом варианте преобразования Фурье производятся следу- Ю1ЦПЕ ВЫЧИСЛЕНИЯ.' Л ‒ -1 Л ‒ 1 Л ‒ 1 Pji' ~; P-'> ‒ '~' (I1"v;) =- Q P'-"а; = ~', са'iv = V. 1 ‒ 0 i ‒ 0 ;=o i=0 Л ‒ 1 и ‒ 1 V> = v„+ ~', а'>v; = V„+ g (а'~ ‒ 1) v;, Е =-1 i'=1 j=1, ..., и ‒ 1. Пусть г (i) обозначает единственное для каждого i от 1 до п 1 целое число, такое, что в поле GF (n) выполняется равенство и'~'~ = ~. Функция r (i) является перестановкой на множестве Заметим, что chirp-преобразование состоит из поточечного ум- ножения v; íà $'* (n умножений) с последующей циклической сверткой (КИО-фильтр с п отводами), за которой снова следует поточечное умножение на >~' (n умножений). Поэтому полное число операций по-прежнему имеет порядок и2, так что chirp-ал- горитм асимптотически не эффективнее прямого преобразования Фурье. Однако в некоторых приложениях on допускает более простую аппаратурную реализацию. Кроме того, как будет показано в ~ 11.1, прямое вычисление свертки можно заменить алгоритмом быстрой свертки. Алгоритм Рейдера можно использовать для вычисления пре- образования Фурье в произвольном поле GF (q), если только длина и является простым числом. Так как и простое число, можно использовать структуру поля GF (n). Это простое поле не следует путать нн с полем GF (q), ни с любым ограничением или расширением этого поля. Выберем примитивный элемент и простого поля GF (и). Тогда каждое не превосходящее и целое число можно записать как сте- пень элемента л. Перепишем преобразование Фурье в поле GF (g), выделив нулевую частотную и нулевую временную ком- поненты: 
;3Я() ГЛ. 9. АЛГОРИТМЫ; С П ЕКТ РАЛЬ Н Ь1 Е МЕТОД Ы 1). Тогда V, может быть записано в следующем )1, 2,...,n виде: л ‒ 1 V„,<;>I= V, + ~", (ао'"+'~' ‒ 1) о,<;1. i=1 Так как r (i) задает перестановку, можно положить i = r (j) и k = и ‒ 1 r (i) и выбрать k в качестве индекса суммирования; это дает л ‒ ! V„( = V, -1-,'~, (а" " -- 1) v, „..~ или Л ‒ 1 Vi ‒ Vî ,= g (а" ‒ 1) v,ü 4 р> ~, 'и'iv,, j =0, ..., 4. i=0 Это преобразование нужно вычислить в наименьшее rn, для которого 5 делит 2'" 2 является примитивным в поле GF (5), и венства поле GF (16), так как 1, равно 4. Элемент в этом поле имеем ра- 2о 1 2'=3, 2~=4, 2о 1 2' =-2, 2~ = 4, У=3, 2-3 2, задад,цие перестановку индексов. Таким образом, 3 Vi ‒ ~о = g (co ‒ 1) uj, А' =0 где V, = V„> и о~ = о„л ф 1 переставленные компоненть[ входных и выходных последовательностей данных соответственно. Теперь мы получили уравнения для вычисления циклической свертки последовательностей {vp) и )а" ‒ 1). Таким образом, переставляя индексы входных и выходных данных, мы записали преобразование Фурье в виде свертки. Как видно из формул, необходимое для вычисления число операций опять имеет поря- док и'. Однако, так же, как и для алгоритма Блюстейна, свертка может быть вычислена при помощи алгоритма быстрой свертки, который будет описан в ~ 11.1. Используя алгоритм Рейдера и равенство о = а', построим двоичное пятиточечное преобразование Фурье; задача состоит в вычислении величин 
9.8. ПРЕОБРАЗОВАНИЯ В КОНЕЧНЫХ ПОЛЯХ 32) Вход (g~ > p< > p> > ~~~ > ~4 ) 8ыхОд ( VO yt V>>, V3 V4) Рис. 9.10. Вычисление пятиточечного преобразования Фурье с помощью алго- ритма Рейдера. Здесь суммирование является четырехточечной циклической сверт- кой. Полагая коэффициенты g> равными и'~ 1, фильтр Рей- дера MoiKHQ описать многочленом g (х) над GE (16); тогда при О,3 g (х) = (и' ‒ 1) х' + (и' ‒ 1) х' + (и' ‒ 1) х + (и ‒ 1) = ~7~3 +- ~11~2 -~-О,13Х -)- а~4 Вход и выход фильтра также можно описать многочленами, ко- эффициенты которых задаются соответственно переставленными компонентами векторов v и V: а(х) = u,õ'+u,õ'+u,ê +u» Ь(х) = ()a 1o) х'+ (1'4 ‒ )o) х'+ (1'з !o) х+ ()x ‒ !r>), b (х) = g (х) а (r) (тос! х' -- 1). ['. Блей «ут 
3ЯЯ ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Многочлен g (х) фиксирован. Многочлен а (х) получается из многочлена и (х) отбрасыванием первого коэффициента и пере- становкой остальных. Коэффициенты многочлена V (х) получаются из коэффициентов многочлена Ь (х) в естественном порядке. Алго- ритм приведен на рис. 9.10. Для выполнения циклической свертки можно выбрать любой удобный метод. В заключение данного параграфа приведен алгоритм вычисле- ния преобразования Фурье в поле Галуа, основанный на том, что элемент конечного поля содержит в этом поле много сопряженных элементов. Выполнение этого алгоритма требует около n log n умножений в GE (q"'), но также около и'"' сложений; поэтому он называется полубыстрым алгориило.и. Он представляет собой аналог в конечном поле алгоритма вычисления комплексного пре- образования Фурье, известного в теории обработки дискретных сигналов под названием алгоритма Герцеля. Этот алгоритм тре- бует не более log n умножений и n log n сложений символов поля для вычисления одной спектральной компоненты. При вычислении всех компонент спектра это приводит не более чем к и log n умно- жениям и n log n сложениям элементов поля. Величина Vi -‒ ‒ f:à'iu;, j-я компонента преобразования Фурье, представляет собой значение многочлена u (x) в точке ài. Пусть fi (х) обозначает минимальный многочлен элемента а~. Степень m> этого многочлена не превосходит т. Можно записать и (х) = f; (х) Q (х) + r (х), и, следовательно, о(а~) = f;(<~) Я(а~') -,'- г(а~) = г(а~). Таким образом, для вычисления V; надо разделить v (х) íà fi (х) и вычислить значение полученного остатка r (х) в точке а~. По- скольку f; (х) ‒ многочлен степени in> над полем GE (g), деление на f; (х) требует (и ‒ т~) mi умножений элементов поля GF (g'") на элементы поля GE (q) и (и т;) т„сложений в поле GE (q'"). Степень многочлена-остатка r (х) не превосходит т; ‒ 1, так что вычисление величины r (сс~) требует mi ‒ 1 умножений и столько же сложений в GF (g"'). Следовательно, одну компоненту Vi. можно вычислить по и (х) с помощью mi ‒ 1 умножений в поле GE (д'"), (и ‒ m;) mi умножений элементов поля GF (g~) на эле- менты поля GE (q) и (и ‒ лг~ + 1) m; ‒ 1 сложений в поле GE (q'"). Поскольку преобразованный вектор содержит п компонент, такие вычисления нужно проделать n = д'" 1 раз, что дает не более т (qm ‒ 1) умножений в поле GF (g"'). Если два элемента сопряжены, то он~~ имеют общий минимальный многочлен и, сле- довательно, общий остаток r (х). Поэтому нет необходимости каждый раз вычислять промежуточный многочлен r (х), а можно вычислить его один раз для всего класса сопряженных элементов. 
ЗАДАЧ и 323 В частности, если д =- 2, то необходимое число умножений в поле 6Р (2 ) не превосходит и 1оя., (и + 1). В отличие от алгоритма быстрого преобразования Фурье это остается верным даже тогда, когда 2~ ‒ 1 является простым числом. С другой стороны, число сложений не превосходит величины (и ‒ 1) и + т (и ‒ 1) =- =- и' + пт ‒ 2n, так что необходимое число сложений является величиной О (и') .. Если входной вектор принадлежит малому полю GE (g), то его преобразование (хотя оно является вектором в поле GE (g)) может быть вычислено без умножений в поле GE (gm). Это проис- ходит потому, что в таком случае и (х) является многочленом над GE (g) и вычисление величины V; сводится к умножению элемен- тов из GE (g) на элементы из GE (g"'). Например, если g = 2, то это означает сложение элементов из GE (2 ), выбираемых в соот- ветствии с ненулевыми компонентами многочлена r (х). Таким обра- зом, для двоичного кода синдром вычисляется без всяких умно- жений в поле GE (2 ) не более чем с и log и сложениями в GF (2) и не более чем с log и сложениями в GF (2 ). ЗАДАЧИ 9.1.а. Построить декодер для (15, 8)-кода Препараты, дополняя алгоритм Берлекэмпа ‒ Месси для двоичного случая еще одной итерацией. б. Используя результат, полученный в п. а, построить декодер для кода Препараты во временной области. 9.2. Описать, как исправлять стирания в принятом слове с 2t стираниями, дважды используя декодер для исправления только ошибок в двоичном коде. Как использовать такой декодер дчя одновремениого исправления ошибок и сти- раний? 9.3. Заново решить задачу 7.3.б из гл. 7, используя описанный в ~ 9.1 алгоритм Евклида. 9.4. Построить олок-схему декодера ошибок и стираний во временной обл асти. 9.5. Построить блок-схему декодера во временной области для расширен- ного на одну позицию кода Рида ‒ Соломопа. 9.6. Если допустить возможность выполнения обратного преобразования фурье для Q (х) и Л'(х), то во временнбй области можно построить декодер с 2/ тактамн работы, использующий алгоритм Фории. Выписать итеративные уравнения для вычисления многочлепов S2 (х) и Л' (х), аналогичные итератив- ному алгоритму Берлекэмпа ‒ Месси. Использовать обратное преобразование Фурье этих уравнений для построения декодера с 2t тактами работы во вре- менной области. 9.7. Построить алгоритм Форни для произвольного jp, комбинируя решение задачи 8.1 и утверждение теоремы 7.5.2. 9.8. Выписать полностью уравнения иятиточечного преобразования Фурье в поле GF (16), вычисляемого по алгоритму Рейдера. Построить диаграмму перестановки компонент векторов и блок-схему KHQ-фильтра с указанием ве- совых множителей. 9.9. Использовать алгоритм Герцеля для вычисления в поле GF (8) преоб- разования Фурье вектора, задаваемого многочлеиом „(x) = <~зхф + u~x~ + x4+ axç+®ç~Ð x + 1. 
324 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ ЗАМЕЧ АН ИЯ Предложенный Ридом и Соломоном [1960) метод декодирования аналогичен описанному в данной главе методу декодирования в частотной области, но перво- начально он разрабатывался для временной области. Для частотной области декодер впервые предложил Мандельбаум [1971], хотя он использовал терми- нологию китайской теоремы об остатках. Программная реализация такого де- кодера была сделана Пашбургом [1974] ° Первое обсуждение декодирования со спектральной точки зрения можно найти у Гора [1973]. Он заметил, что информация может быть закодирована в частотной области и что спектр вектора ошибок можно вычислять с помощью рекуррентного продолжения. Реализация декодеров с преобразованиями обла- стей рассматривалась также Михельсоном [1976 J. Общее обсуждение спектраль- ных методов декодирования можно найти у Блейхута [1979]. Отображение этих декодеров обратно во временную область было проведено в работах Блейхута [1979, 1980]. Основанный на алгоритме Евклида метод декодирования предложен Мандельбаумом [1977]. Замечания о канале со стираниями принадлежат Элайсу [1954]. Ранние работы по обобщению алгоритмов декодирования кодов БЧХ на случай не только ошибок, но и стираний выполнены Блюмом и Вейсом [1960], а также Форни [1965]. Описанный в настоящей главе подход принадлежит Блейхуту [1979) ° Декодирование расширенных кодов было впервые описано в работах Вулфа [1969] и Касахары с соавторами [1975]. Описанный в настоящей главе вариант принадлежит Блейхуту [1980]. Декодирование альтернантных кодов и кодов Гоппы разработано Паттерсоном [1975] и Хельгертом [1977] ° Дельсарт [1975] указал, что эти коды можно декодировать с помощью декодера для кодов Рида‒ Соломона. Декодирование за пределами границы БЧХ предложили Берлекэмп [1968J, Хартман [1972] и Блейхут [1979]. Алгоритм полного алгебраического декоди- рования кодов БЧХ с исправлением двух ошибок описан Берлекэмпом [1968), а алгоритм полного алгебраического декодирования некоторых кодов БЧ Х с исправлением трех ошибок ‒ Вандерхорстом и Бергером [1976]. Алгоритмы Блюстейна [1970], Рейдера [1968] и Герцеля [1958] были пред- ложены этими авторами в связи с задачами дискретной обработки комплексно- значных сигналов. Дополнительные сведения об этих алгоритмах можно найти в монографиях Оппенгейма и Шафера [1975] или Рабинера и Голда [1975]. Сервейт [1978 J предложил свой вариант полубыстрого алгоритма. 
ГЛАВА 10 МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ Подобно тому как было введено одномерное преобразование Фурье над конечным полем, можно определить многомерное преобразо- вание Фурье над конечным полем. Оно представляет собой преоб- разование, определяемое на многомерных таблицах данных, и полезно во многих отношениях. Многомерные спектральные ме- тоды дают возможность построить новые коды, которые допускают более эффективные схемы декодирования или обладают новыми свойствами. Многомерные спектральные методы являются также полезным инструментом исследования структуры циклических кодов, в частности кодов БЧХ. Многомерные коды тесно связаны с современными методами теории обработки дискретных сигналов, основанными на китайских теоремах об остатках. Наилучшими известными многомерными кодами являются коды-произведения, и наше изложение мы начнем с описания этих кодов. Корректирующая способность построенных с помощью много- мерных методов кодов в общем случае ниже корректирующей спо- собности уже рассмотренных кодов. Мы останавливаемся на изуче- нии этих кодов потому, что они дают более глубокое проникнове- ние в существо методов, потому, что кодовые слова иногда удобнее обрабатывать в виде многомерных таблиц и потому, что таким образом можно построить хорошие коды, одновременно исправ- ляющие и случайные ошибки, и пакеты ошибок. 10.! . КОДЫ-ПРОИЗВЕДЕНИЯ Если длина линейного кода и = ‒ n n., òo компоненты кодового слова можно расположить в виде (и, ~< n,)-таблицы. В некоторых случаях такая таблица, элементы которой мы обозначим через с; <. или с;;, является более удобной, так как позволяет при описании и обработке рассматривать строки и столбцы по отдельности. В этом случае код называется многомерным кодом. Размерность кода как векторного пространства, конечно, остается равной числу Й ин- 
УЩ ГЛ. 10 MHOfOMEPHЫE СlIEI(TPAJlbHЫЕ МЕТОДЫ формационных символов; лишь таблица индексов является много- мерной. Мы будем рассматривать только двумерный случай, хотя все идеи применимы и при размерности, большей двух. Начнем с простейшего случая многомерных кодов с кодов- произведений. Определение 10.1.!. Кодом-произведенаем F = 5', У, 5', двух кодов Ж, и Ж, называется код, словами которого являются все двумерные таблицы со строками, являющимися словами кода Ж„ и столбцами, являющимися словами кода Ж,. Систематическое представление кода F получается из система- тических представлений кодов F и Ж„соответственно первые k, и k, символов которых являются информационными символами. Слово такого кода F приведено на рис. 10.1, где виден и способ кодирования: сначала кодом Ж, кодируется к 1ждая из первых Й, строк таблицы, а затем кодом 5' кодируются все столбцы таблицы. Легко проверить, что то же слово можно получить, кодируя сна- чала первые k, столбцов, а потом все строки. Яля последователь- ной передачи по каналу кодовое слово разбивается на части, на- пример считывается по строкам или по столбцам. Слово кода-произведения может быть записано в виде много- члена от двух переменных. А именно если компоненты кодового слова обозначить с;), l' = О, ..., п1 ‒ 1, l' = О, ..., п~ ‒ 1, то имеем следующее представление: n> ‒ 1 л,-1 с(х, у) = f g с~;.х'у". i=0 с'=0 Групп ируя слагаемые, это выражение любым из двух способов: можно переписать nt I ns с(х, у) = g g с,;.у') х', i=0 i' = ‒ 0 или и» ‒ 1 'л,‒ l c(r, у) =- f Q с;;.х' у'. с'=О, i=0 Согласно определению кода-произведепия, в первом выражении заключенная в скобки сумма (для каждого l) является словом кода У„а во втором выражении заключенная в скобки сумма (для каж- дого 1') явчяется словом кода У,. Коды-сомножители Ж, и Ж, могут быть циклическими, однако это не означает, что код-произведение Ж также является цикличе- ским. В ~ 10.2 будут выписаны достаточные для цикличности У условия. 
10.1. КОр, Ы-ПРОИЗВЕДЕНИЯ 327 Д! К! k, п~-k< Рис. 10.1. Структура кодового слова систематического (n~ëm, k1Й2)-кода. Теорема 10.1.2. Если минимальные расстояния кодов Ж, и Ж, равнь d1 u d «2 соответственно, то минимальное расстояние кода Ж равно d1d>. Доказательство. Код является линейным, и кодовое слово минимального веса в каждом ненулевом столбце содержит не менее d> ненулевых символов, а число ненулевых столбцов в таком слове равно по меньшей мере d'1, так что минимальный вес равен по меньшей мере did:. Кроме того, существует хотя бы одно такое слово. О Из этой теоремы следует, что если составляющие коды могут исправлять 1, и 1, ошибок соответственно, то код-произведение может исправлять 2t,t, + t, + t, ошибок. Если на рис. 10.1 положить и, й, равным нулю и считывать кодовое слово по столбцам, то получим перемежение й, слов строч- ного (n„k,)-кода. Таким образом, код-произведение является обобщением кода-перемежения. Он подобен коду-перемежению, но некоторые его строки содержат только проверки. Отсюда ста- новится ясным, что код-произведение можно использовать как код, исправляющий пакеты ошибок. Он позволяет исправлять пакеты ошибок длины n,b, если строчный код исправляет пакеты длины о,. При считывании слов того же самого кода-произведения по строкам он исправляет пакеты ошибок длины n,б„если столб- цовый код исправляет пакеты длины b. При надлежащем выборе правила линейного считывания слов кода-произведения этот код можно использовать для исправления пакетов ошибок длины max (п,Ь„п,Ь,). Мы видели, что этот же код может исправлять (d)dp ‒ 1)/2 случайных ошибок. Следующая теорема утверж- дает, что такой код можно использовать для одновременного ис- правления и случайных ошибок, и их пакетов. Теорема 10.!.3. Ни один смежными класс кода, ~гостроенного как произведение линейного (n~, lг1, d'~)-кода и линейного (п~,k~, 
328 ~ Л ° 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ а2)-кода, нв содержипг одновременно слова веса не бо.гыгге t npu ~ =- (й гг1' ‒ 1)!2 и с.гова, ггредстав.г,ггои1его собой ггакеггг ошпбок длины не больше тах (n t~, n~t) ггри t> < (d> 1)l2 и tq< (dq 1)/2. Доказательство. Для определенности предположим, что <>t1 > и, 1., и что код считывается по столбцам. Если пакет ошибок длины не более гг,, t, и отличная от него конфигурация ошибок веса не более 1лежат в одном смежном классе, то их разность предста- вляет собой кодовое слово. Вес каждой ненулевой строки такого кода равен не меньше d~. Так как длина пакета не превосходит п,1„то каждая ненулевая строка может содержать не более t, оши- бок из этого пакета и, следовательно, должна содержать по мень- шей мере d~ ~‒ t~ других случайных ошибок. Таким образом, t случайных ошибок разбросаны самое большое по ф(сг1 t~Ö строкам. Следовательно, кодовое слово содержит не более этого количества ненулевых строк, в каждой из которых имеется не более t ошибок, принадлежащих пакету. Полное число ошибок не превосходит Ptl(d'г ‒ 1г)Д ti + t, но, поскольку d1 ‒ ti больше t,, это число меньше 21. Это противоречиг тому, что минимальный вес кода равен по меньшей мере 2t+ 1 и поэтому такое кодовое слово не может существовать, и, следовательно, рассматриваемые пакет ошибок и конфигурация случайных ошибок не могут при- надлежать одному и тому же смежному классу. О Код-произведение можно использовать в соответствии с дока- занной теоремой. )декодер для такого кода можно строить в виде составного декодера, содержащего декодер для исправления паке- тов ошибок и декодер для исправления случайных ошибок, каж- дый из которых исправляет требуемое число ошибок и обнаружи- вает неисправляемые конфигурации ошибок. При этом либо оба декодера укажут одну и ту же конфигурацию ошибок, либо ус- пешно декодирует только один из них; в последнем случае второй декодер укажет неисправляемую конфигурацию ошибок. Иногда декодер для исправления случайных ошибок может указать все пакеты ошибок. В ~ 10.3 будет описан декодер для произведения двух кодов БЧХ, исправляющий все случайные ошибки в преде- лах конструктивногo расстояния. 10.2. КИТАЙСКИЕ ТЕОРЕМЫ ОБ ОСТАТКАХ Когда можно однозначно определить целое число, если заданы только его вычеты по модулям нескольких целых чисел? Ответ на этот вопрос был известен еще в древнем Китае. Мы сейчас рассмо- трим эту теорему, а также ее современные аналоги, относящиеся к множеству полиномиальных модулей. Китайская теорема об остатках будет доказана в два этапа. Сначала мы докажем един- ственность решения, а затем его существование. 
10.2. КИТАЙСКИЕ ТЕОРЕМЫ ОБ ОСТАТКАХ 3Я9 Теорема 10.2.1. Лля заданного множества целых положи- тельных попарно взаимно простых чисел т„т»„..., т„а множе- ства неотрицательных целых чисел с,, с.„..., cI, при с; «т; система сравнений c,=с(modт,), i=1, ..., k, имеет не более одного решения с в интервале 0 «с( П~=1т;. Доказательство. Предположим, что с и с' являются двумя лежащими в рассматриваемом интервале решениями. Тогда с= Qm;+c; и с' = Qqm;+c;, и, следовательно, с с' кратно т; для каждого t, а так как fll; по- парно взаимно просты, то с с кратно П,mr. Но число с с лежит между (П» rm; 1) и П~~~т~ 1. Единственным гго- ложительным числом, удовлетворяющим этим условиям, является с с' = О. Следовательно, с = с'. О Для того чтобы практически найти решение выписанной в тео- реме 10.2.1 системы сравнений, воспользуемся следствием 4.1.4 из алгоритма Евклида, согласно которому в кольце целых чисел HOlI (г, s) = аг + bs для некоторых целых а и Ь. ,Яля заданного множества попарно взаимно простых положи- ~~й тельных целых чисел т1, т~, ..., ту положим М = ~~~ ~т; и М, = М/т;. Тогда НОД (М;, т;) = 1, и, следовательно, суще- ствуют такие целые N;;, что N;M; +nrm; = 1. Теперь можно доказать следующую теорему. Теорема 10.2.2. Пусть М = П,'=1т~ произведение попарно взаимно простых положительных целых чисел, nycmb M; = М/т., и пусть N; удовлетворяют равенству N;М; + и;т = 1. Тогда единственным решением системы сравнений c; = c (mod m;), i = I, ..., k. будет с = ~', c; N;M; (то1 М). Доказательство. Поскольку мы уже знаем, что решение рас- сматриваемой системы сравнений единственно, надо только дока- зать, что выписанное выше с действительно является решением. Но с = ~ с,.И,M„(modm,) .= c; N; M; '(mod m;), f=l 
33() ГЛ. 1О. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ ибо т; делит .М„при r + ~. Наконец, так как 1V;M; + и;.т; = ‒ 1, то N;M; ‒‒ ‒ 1 (mod т,) и с = с, (mod т,), что и завершает доказа- тельство. О Теперь мы перейдем к кольцу многочленов над некоторым полем. В случае любого такого кольца справедлива китайская теорема об остатках для многочленов, которая доказывается точно так же, как и в случае кольца целых чисел. Теорема 10.2.3. Яля заданного множества попарно взаимно простых многочленов т, (х), т, (х), ..., ть (х) и множества мно- гочленов с, (х), с, (х), ..., c„(x), таких, что deg 'с, (х) ( deg т, (х), система сравнений с;(х) =с(х) (modт;(х)), 1=1, ..., k, имеет не более одного решения с (х), удовлетворяющего условию deg с (х) ( ~., deg т, (х). Е=1 Доказательство. По существу доказательство совпадает с до- казательством теоремы 10.2.1. Предположим, что имеются два решения, а именно с (х) = Я, (х) т; (х) + c; (х) с' (х) = @ (х) т~ (х) + с~ (х), так что разность с (х) с' (х) кратна многочлену т, (х} для каж- дого 1. Тогда многочлен с (х) с' (х} кратен и многочлену П~,т; (х), причем deg[c(x) ‒ с'(x)](deg П т; (х} . Следовательно, с (x) ‒ с' (х) = О, и доказательство закончено. Д Так же как и в кольце целых чисел, в кольце мпогочленов над произвольным полем выполняется равенство НОД [r (х), s (х) [ = а (х) r (х) + b (х} s (х) для некоторых а (х) и b (х). Для заданного множества попарно взаимно простых m; (х) положим М (х) = П~=|т, (х) и М; (x) =- = М (х)lт, (х) и допустим, что N; (х) и и; (х) удовлетворяют ра- венствам N; (х) М; (х) + и; (х) т; (х) = 1; согласно следствию 4.3.7, такие многочлены N; (х) н и, (х) всегда существуют. Теорема 10.2.4. Пусть М (х) = П,",т~ (х) произведение по- парно взаимно простых многочленов, и пусть М; (х) = М (х)lт; (x) 
10.2. КИТАЙСКИЕ ТЕОРЕМЫ ОБ ОСТАТКАХ ЭЯ1 (( N,. (х) удовлетворя(от равенствам N; (х) М; (х) + и( (х) m; (х) = с;(х) =с(х) (modm;(x)), i= I, ..., /г, является с(х) = ~ с((х) М((х) М;(х) (mod A4 (x)). i.=1 Доказательство. Так как мы уже знаем, что рассматриваемая система сравнений имеет не более одного решения, то нам надо только доказать, что выписанное выше с (х) действительно яв- ляется решением. Но с(х) = с;(х) N; (х) М;(х) (modт((х)), ибо т; (х) делит М„(х), если г + (. Наконец, так как N; (х) М, (х) + и; (х) т( (х) = 1, то N; (х) М; (х) = 1 (mod и; (х)) и с (х) = c; (х) (mod т; (х)), что и завершает доказательство. Н Китайская теорема об остатках позволяет установить условия, при которых произведение циклических кодов является цикли- ческим ко~ом. Теорема 10.2.5. Если длины и, и и, циклических кодов Ж, и Ж., взаимно просты, то при соответствующем расположении компо- нент в кодовом слове код-произведение Ж также явля-.òñÿ цикличе- ским. Доказательство. Если 0 e ( ( и, ‒ 1 и 0 Г <и, 1, то, согласно китайской теореме об остатках, имеется единственное целое число I ((, Г), лежащее в интервале 0 а 1 ((, i') w n,n, 1 и удовлетворяющее сравнениям 1 (i, Г) = i (mod и,), ! ((', Г) = Г (mod и,). Перепишем кодовое слово с (х, у) в следующем порядке: п,п,‒ 1 C (2) = ~ C(I mod n,1 (I mod n )2 1 s=o Чтобы увидеть, что такое множество слов с (z) образует цикличе- ский код, достаточно заметить, что в указанной записи zc (z) (mod z" " 1) соответствует многочлену хус (х, у) (mod х" 1) (mod у" 1). Так как этот многочлен является кодовым словом, то и zc (2) (mod z" " 1) является кодовым словом. П 
ЗЗЯ ГЛ. 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ Взаимосвязь между с (z) и с (к, у) можно лучше пояснить с по- мощью следующей двумерной таблицы: С0, ~ „C02 co(qi ‒ 1) С1(л! ‒ )) С10 с„ cii" = Г(П ‒ )) О С(,д, 1) I С(/! 1) 2 С(ц ‒ 1) (и ! ‒ 1) Коэффициенты многочлена с (z) получаются при считывании эле- ментов этой таблицы вдоль диагонали, начиная с с, и возвращаясь после каждого достижения края таблицы, так, как если бы таб- лица была продолжена периодически в обоих направлениях. Так как и, и и, взаимно просты, такая расширенная диагональ не прой- дет дважды через одии и тот же элемент до тех пор, пока все п,п, элементов не будут пройдены. 10.3. ДЕКОДИРОВАНИЕ КОДА-ПРОИЗВЕДЕНИЯ Если v ~ (d'~d',. 1),'2, то код-произведение способен исправ- лять v ошибок. Такая теоретическая корректирующая способность кода, однако, мало что дает без практических алгоритмов декоди- рования. В данном параграфе описывается такой алгоритм деко- дирования, основанный на исправляющем только ошибки под- алгорнтме для одного кода-сомножителя и на исправляющем ошибки и стирания подалгоритме для другого кода-сомножителя. Такие декодеры были описаны только для кодов БЧХ, и, следова- тельно, мы будем говорить только о произведениях кодов БЧХ. Рассмотрим случай, когда d)d2 нечетно, и без ограничения общности предположим, что d2 ~ wd). Задача декодера, исправля- ющего в произведении кодов БЧХ только случайные ошибки, со- стоит в вычислении некоторого кодового слова, находящегося от принятого слова не далее радиуса упаковки t = (d;d» 1)/2, так как такое слово единственно. Декодер состоит из внутреннего декодера для кода БЧХ и внешней цепи обработки, содержащей произвольный подходящий декодер для кс~а БЧХ, исправляющий ошибки и стирания. Сначала опишем упрощенный вариант деко- дера, потом улучшим его, а затем докажем, что он выполняет нуж- ные исправления. Сначала декодер должен «исправлять» каждый столбец. Яля алгоритма декодирования безразлично, передается ли кодовое слово по строкам илп по столбцам, но при обсуждении этого алго- ритма удобнее предполагать, что кодовое слово передается по столбцам, и воспринимать столбец как отдельно декодируемый 
10.9. ДЕКОДИРОВАНИЕ КОДА-ПРОИЗВЕДЕНИЯ 333 подблок. Позже, при декодировании строк, неправильные под- блоки будут выявлены и исправлены. Пусть в j-м столбце принятого слова произошло ~'; ошибок; тогда и,‒ 1 Ур у=о Первый шаг состоит в использовании БЧХ-декодера для исправ- ления каждого столбца. Для каждого j-го исправленного столбца указывается число и~ сделанных исправлений. Это число предста- вляет собой вес оценки д, (/) вектора-столбца ошибки и равно v,, если декодирование произведено правильно. Если обнаружена неисправляемая ошибка, то столбец стирается. Нестертые столбцы с наибольшими значениями чисел ®~ рассматриваются строчным декодером как наименее надежные. Затем исправляющий ошибки и стирания БЧХ-декодер при- меняется для исправления каждой строкн. Теперь, однако, имеется сторонняя ннформация, которую можно использовать для пра- вомерного стирания дополнительных столбцов. Сначала, игно- рируя эту стороннюю информацию, декодируем, как удастся, все строки, начиная с первой. Строчный декодер может потерпеть неудачу и может внести ненулевую конфигурацию ошибок. Лю- бой из этих случаев означает, что некоторые столбцы были деко- дированы неправильно. Требуется какое-то правило, указываю- щее, что нужно делать: принять декодированную строку или стереть наименее надежный столбец и попытаться декодировать строку сначала. Основную теорему мы докажем сначала в предположении, что столбцовый декодер не производит никаких стираний. Впоследст- вии эта теорема будет использована и при наличии стираний с по- мощью простого уменьшения числа d>' на число стертых столбцов. Рассматриваемые методы доказательства будут использованы в гл. 15, когда мы будем изучать декодирование с мягким реше- нием. Что можно сказать о строчном декодере, если дано, что код- произведение может исправлять t ‒ ‒ (фН", 1)/2 ошибок и что столбцовый декодер уже исправил <>; ошибок в j-м столбце? Пред- положим, что ~-я строка декодирована и для нее вычислена оценка (e> (i)} вектора-строки ошибки. Обозначим через U; множество индексов /, для которых e> (i) отлично от нуля. Если / принадле- жит множеству Ui, то j-й столбец продекодирован неправильно; в ~-м столбце имеется по меньшей мере d~ ошибок, среди которых в~ могли быть внесены столбцовым декодером, причем ®,. меньше d>. Следовательно, если строчному декодеру удастся правильно найти конфигурапию ошибок, то в исходном принятом слове в /-м 
334 ГЛ. 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ столбце содержалось по меньшей мере d> - ‒ в, ошибок для каж- дого j из множества U; и, как уже известно, ®; ошибок для каж- дого j, не принадлежащего миожеству U;. Таким образом, разум- ное условие принятия результата декодирования г-й строки дается следующим неравенством: Е (d; и/),+ Е и! (t. you,. ~~ и,. В приведенной ниже теореме доказывается, что это неравенство является необходимым н достаточным условием правильности декодирования г-и строки. Сначала перепишем это неравенство в форме скалярного произведения, удобной для использования в доказательстве теоремы. Яля этого представим его в вице 2 ~, '(1 ‒ и;/Нг) + 2 Q (и)/d;) (а1. > Си,. >. ~и,. Тогда 1+ ~', 1 ‒ 2 ~', (1 ‒ m;/d;) ‒ 2 ~', (о//Н2} )n~ ‒ d1. 1~и; /фи; j ~u; ~Ф г Пусть 1; равно 1, если j принадлежит U;, и 1 в противном слу- чае. Тогда n,— ! ~', E,; (1 ‒ 2и;/(1 г) ) п1 ‒ d;. Если, наконец, а; -= 1 2®;'d>, то неравенство приводится к виду и,‒ ! g ~/а;) п1 ‒ d1. j=O Теперь все готово для доказательства теоремы. Теорема 30.3.! . Пусть +> ‒ число позиций, в которы.к j u от принятого слова. Яля, каждого i сущеспаует в прочности одно слово сагрочного кода, удовлетвор,'гющее неравенству Е ((2 и/}+ Е m;(t > qu,. ; gu,. в исправленно й столбцовьаа декодером таблице. Доказательство. На первом шаге мы докажем, что правиль- ное слово строчного кода в г-й строке удовлетворяет выписанному неравенству. На втором шаге мы докажем «динственность такого слова. 
10.3. ДЕКОДИ РОВА Н И Е КОДА- ПРОИЗВЕДЕНИЯ 33б П.'аг 1. П~сть (f' -- число неправильно декодированных столб- цов, и пусть U~ множество индексов этих столбцов. Тогда и, ‒ qð. с~тTоoл~б~ц~оoв ~ д~еeкKоoд~иHр~оoвBа~нHbы ! п~р~а~вBиHл~ьbнHоo. Но ~,' v, -}- > ~и ~~и и число ~; произошедших в j-M столбце принятого слова ошибок удовлетворяет равенству ~; = ‒ ‒ <О;, если j-й столбец декодирован правильно, и неравенству >'; w d> ‒ ®; ) (0;, если 1-й столбец декодирован неправильно. Множество U: декодированных столб- цов, содержащих в ~-й строке ошибку, удовлетворяет включению U; t- U; следовательно, ~~ (Й ‒ m;)+ Е m;~~t, т 6 г ~Ф г а это и доказывает, что для каждой строки кодовое слово удовле- творяет данному неравенству. Шаг 2. Рассмотрим ~-ю строку. Предположим, что с, и с, яв- ляются словами строчного кода, и обозначим i-ю строку после «исправления» столбцов через р,. Пусть Е> ррааввнно о 11, если с„совпа- дает с р, в 1-й компоненте, и E,. ‒ 1 в противном случае. Пусть ~,. обозначает аналогичную величину для кодового слова с, . Определи;л множества Т = Ц { с,; = с,;}, {т = {j!с„йс,; и с„= р;}, W = {/{с„,-йс,,; и с„,-йр,;}. Каждый индекс j принадлежит одному из этих трех множеств; тогда nI ‒ ! Q Ьа;= ‒ ~', Fа; [ ~', а; ‒ f а;=Ат ~А~--А~, j=-0 '' jáт '' jul ' /61Г где величины A>, A<» 4„. о»ре.!елены очевидным образом. Число элементов в T не превосходит n! ‒ И!. Если с, удовлетворяет ус- ловиям теоремы, то Ц! ‒ ! ~; '.;а; = А т ‒; А г ‒ А т ) тт1 ‒ Н;, ;=0 и, следовательно. Ay A~ ~ p Теперь рассмотрим кодовое слово с,'. Мы имеем Z vaja! = Е 5!ai + g ~;а; --'- ~, 'Kja; = Ат ‒ А~ -' д,„., ~'-=0 
33/ гл. i0. мноГОмеРные спеКтРАЛьные методы где величина В,~ определена очевидным образом и на множестве V Bb~~0~H~eT~~ ~~BeH~TB0 ~,; + р;. Но 8 « .=. А „', и, как мы ви- дели, А1~ Av ~ О. Следовательно, и,‒ 1 ~', F;a; < Ат ‒ А~ + А и(Ат < ni --- Ф, j-o так что с, не удовлетворяет неравенству. О Опишем теперь практический способ вычисления такого кодо- вого слова. Мы уже знаем, как строить декодеры для исправления ошибок и стираний с жестким решением. К любому из таких де- кодеров присоединим внешнюю цепь обработки. По имеющейся таблице декодированных столбцов для l-й строки построим проб- ную цепочку векторов, полученных при жестком декодировании ошибок и стираний. Индексы упорядочим следующим образом: и~,) и» ) ... ) и; или а;, e a» < ... ~ а;„. Для каждого 1 из интервала от О до d~ ‒ 1 будем стирать 1компонент с наи- большими значениями ®,. Такое построение приведет к вектору p~'~ со стираниями. Я;екодируем этот вектор декодером для испра- вления ошибок и стираний и проверим результат декодирования с„на соответствие условию, даваемому теоремой 10.3.1. Если он удовлетворяет этому условию, то с, будет кодовым словом для данной строки; в противном случае увеличим 1 и повторим про- цедуру. Следующая теорема доказывает, что описанная процедура всегда приводит к кодовому слову. Теорема 10.3.2. Если кодовое слово с„удовлетворяет неравен- cmey n,— ! ~, ~;а;)п1 ‒ d;, m0 хотя би для одного 1 выполняется условие и 1 Е Elb(È)ïi --di, 10 где и, следовательно, с„представляе~п собой единственное кодовое слово, вычисляечое исправляющим о~иибки и стирания декодером. Доказательство. Доказательство достаточно провести для всех 1 от О до п1, так как прн 1w dj~ утверждение теоремы, оче- видно. не может выполняться. 
Ьхоц с =~=у=О Вызвать бЧХ- декодер Ьля декодирования саолби,а ! Успешное декодирование а,у- число исправленнь!х ошибок j <~]+ Hem 1) и! Да Найли 0 f -1-р значений индекса~, для которых аф оу принимают наибольшие значения, ц упорядочивь их в порядке цбомния ау Я~ )Я) )...)6).. р+1 Р+2 ' ' 4-1 Если р нечегпно, mo Л -p+1 Установишь меаки стирания в позициях с индексами j,,..., j> Вь!звавь исправляющий ошибки и саирания бЧХ- Оекодер для декодирования i-u cmpoKU Неудача при декодировании Не Х(,а;>л,-1 9 ()Я+ ~> Да Да Hem с- с+! Cmn Pqc. 10.2.,декодер для кода-произведения кодов БЧХ. Неудача при декодировании. Установить мешку стирания на у-м сволЬие О-р+1 ас = 1- Kri)i/~~" q j1,если нее ошибки, "~ Q-f,если ecmb ошибка 
338 ГЛ. 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ Идея доказательства состоит в том, что ц, принадлежит выпук- лой оболочке множества векторов {u<'>). Пусть Xo=а;„ Х(=а;,,‒ а;,, 1 (l(nl - ‒ 1, Х„, =1 ‒ а;„, откуда следует, что О ( Х> ( 1 и g ">>' О>>.> == 1. Кроме того, (' ‒ ! Ит Q Х>=а;,. и а;= QX>b>''. (=О l=O Предположим теперь, что для всех l п,‒ 1 g ~;Ь,'" с.н,‒ d',. j=O Тогда и,‒ 1 п, n,— ! и, ~, ~;а; =- g X> Q ~;Ь~ ' < ~', Х,(n> ‒ d>) ( n,> ‒ d>, (=о (=о (=o (=-o 10.4. МНОГОМЕРНЫЕ СПЕКТРЫ Двумерные таблицы, размеры которых согласуются с длиной преобразования, можно исследовать с помощью двумерного пре- образования Фурье. Пусть {v;;.} двумерная (и х п)-таблица над GE (q), которую назовем двумерным сигналом, пусть для не- которого т длина и делит qm ‒ 1, и пусть а ‒ элемент порядка п из поля GF (q~). Таблицу с элементами n ‒ ! л ‒ ! V;; = ~, ~, а'>а">'v;;. i=-О i'=0 что противоречит предположению теоремы. Следовательно, тео- рема доказана. O Изображенный на рис. 10.2 декодер основан на двух предыду- щих теоремах. Если при декодировании ~-й строки некоторые столбцы уже стерты, то используется та же самая процедура деко- дирования, но без учета стертых столбцов и при уменьшении d! на число стертых столбцов. Далее, если при декодировании (',-й строки некоторые столбцы были стерты или отмечены как содер- жащие ошибку, то при декодировании всех последующих строк они остаются стертыми. В случае когда необходимо стереть только один столбец, декодер всегда стирает два, так что число стертых столбцов всегда четно. Это не уменьшает корректирующих спо- собностей процедуры, но сводит число пеобходимых ~итераций не более чем к н~ + (ф ‒ - 1)!2. 
!0.4. мНОГОМЕРН ЫЕ СПЕКТРЫ 339 назовем дсумерныл спектром. а индексы ) и j -- частотными пере- менными. Используя одномерное обратное преобразование, оче- видно, получаем v;;. ‒‒ (1/п) (1/п) g ~', а ‒ '(а ‒ '('V;; i=-оi'=-:о На рис. 10.3 приведены два двумерных спектра над GF (8). В каж- дом квадрате сетки записан восьмеричный символ. Чтобы задачь контролирующий ошибки код, выберем множе- ство из N ‒ К компонент в качестве (двумерных) проверочных частот и положим их равными нулю, как на рис. 10.3. Остальные К компонент будут информационными символами, принимающими значения в поле GE (qm), а в качестве кодового слова, соответству- ющего данным информационным символам, выберем результат обратного двумерного преобразования Фурье. Построенный так код, очевидно, является линейным, но, вообще говоря, не цикли- ческим. Если искомый код лежит в подполе поля GE (q ) (в рассматри- ваемом примере единственным подполем поля GE (8) является поле GE (2)), то необходимо взять ограничение кода, выбирая только те кодовые слова, все компоненты которых принадлежат этому под- полю, и тем самым получая двумерный подкод над подполем. Можно также построить двумерные альтернантные коды, если перед ограничением на подполе умножить кодовое слово на дву- мерный шаблон. Двумерные спектры не обязательно должны быть квадрат- ными, но если это так и если и + 1 =- q'", то наибольшим рассма- триваемым полем является GE (n + 1). В случае когда спектр задается (и, х n.,)-таблицей (и, ф n,), приходится работать в наи- меньшем поле GF (q"') при некотором m, таком, что и и, и и. делят qm ‒ 1. Пусть (v;; двумерный сигнал размера и, Х п.„и рис. 1О.3. Двумерный спектр над GF (8). а ‒ спектр без ограничений; б‒ спектр с ограничениями. 
340 ГЛ. 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ  { 2 3 4 56 0 { 2 34 580 { 0 { э 10 o[0]l0 O 0 O 2 3 0 3 4 0 4 5 |0 ого 0 0°0 5 5|10 00 0 00 6 0 0 0 a 8 { 2 3 4 { 23 4 5 6 {{0 0 0 00O 1|0 0 0 00O 2(0 0 0 0 0 00 210 0 0 00 0O 310 0 3|0 0 0 410 0 до 0/{0 0 0 0 O 510 0 5 |0 0 0 610 O 610 O 0 оО O 010 O 0 7] 2  Рис. 10.4. Спектры некоторых кодов над GF (8). а — произведение цикличе- ских кодов; 6 — произведение кодов Рида— Соломона; 8 — дуаль- ный код-произведение; г — произведение (7, 4)-кодов БЧХ.  пусть В и y — элементы поля GF (¢™) порядков 1, И 11, СООТВет- ственно; тогда  п, —1 п, —1  У) у = > р Ву Гог».  (=0 {= 0  Используя одпомерное обратное преобразование, очевидно, снова получаем  ny—1 ny,—1  Од = (1/п1) (1/72) х 3», Вр, уг. =0 j'=  Для примера выберем в качестве проверочных частот двумер- ного кода все элементы некоторых вертикальных и горизонталь- ных полос, как показано на рис. 10.4, а. Кодовыми словами яв- ляются все временные функции, в спектре которых в этих частотах стоят нули, т. е. для всех проверочных частот (7, /') п, —1 ny,—1  У) Ву); г. = 0.  (=0 (=0 
I0.4. М НОГОМЕРНЫЕ СПЕКТРЫ 341 Это позволяет по-иному интерпретировать определение двумер- ного кода, задавая его как множество многочленов от двух пере- менных n„— 1 n„— 1 с(х, у) = ~', f с„'х'у", i ==0 удовлетворяющих равенствам с(р', у') =0 для всех проверочных частот j и j'. Так как проверочные частоты были выбраны только по вертикальным и горизонтальным поло- сам, то с(р', у) =0 и с(х, у') =0 для каждой проверочной частоты / и ". Это показывает, что I(c;; )j является кодом-произведением. Если полосы проверочных частот идут подряд, то получится произведение двух кодов Рида ‒ Соломона. На рис. 10.4, б при- ведено спектральное задание (49, 25, 9)-кода над GE (8). Каждый из 25 информационных символов принимает одно из восьми воз- можных значений. Для формирования кодового слова надо пере- вести результирующую таблицу во временн~ю область при по- мощи преобразования Фурье. Аналогичную процедуру можно использовать и для построе- ния кода над GE (2), выбирая только двоичные кодовые слова. Для этого надо в частотной области определить спектр так, чтобы он задавал только двоичное кодовое слово. Двумерные ограниче- ния сопряженности задаются равенствами 2 Cgg = С(2у mod и) (2j' mod и) Пример такого построения показан на рис. 10.5. Каждое подмно- жество в этой таблице является подмножеством сопряженных частот. Любой из членов подмножества можно выбрать произ- вольно, а остальные символы в частотах подмножества определятся этим однозначно. Символ Соо может принимать только значения 0 или 1, так как он является квадратом самого себя. Остальные ин- формационные символы являются восьмеричными. Весь спектр целиком определяется 49 битами, но, конечно, некоторые из них являются проверочными и не несут никакой информации. Ограничение кода на рис. 10.4, б с помощью этой таблицы на двоичное подполе показано на рис. 10.4, г. В таблице на этом ри- сунке имеется только 16 незаполненных частот, которые с учетом ограничений сопряженности можно загрузить 16 битами инфор- мации. Это является следствием того, что все проверочные сим- волы, частоты которых расположены в первом столбце и первой 
34Я ГЛ. ! О. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ Боаоьое содержание 5umoeoe сои ержание 1 lC33 С66 Cger) 1 1Г>~ Г~,1 Гсб'1 ,'Г',, с„, Г6, '( ( 2 C(ii4311 1О ( 1О ( 4О1 1~ О.~ (- О6 ~ ОС1 ',С,„(.„„Г,-„, 1~- 1 1ГОО1 1'Г11 Гт1 Г441 ',Г, C „C„„„' 1Гъ1 C4ý ( ',( 1~ ( 6 (.~ч', '1(„( („', 1 1('1. (' . ( 1 1( ч1 С ~ Г64,' ',C,„C„C4„' 1Г61 Сч~ С~41 Рис. 10.5. Множества сопряженных элементов для двумерного случая. строке, попадают в различные подмножества сопряженных эле- ментов. Построенный (49, 16, 9)-код мало привлекателен. Как следует из самого построения, в силу ограничений сопряженности коды-произведения часто обладают плохими характеристиками. Для построения хороших кодов-произведений надо выбирать взаимно простые длины. Но тогда основное поле становится боль- шим, и обычно дело завершается выбором циклического кода, корни порождающего многочлена которого лежат в этом большом поле. Второй случай, иллюстрируемый 10.4, в, называется дуальным кодом-произведением. Это код, дуальный к коду-произведению. Дуальный код-произведение мало пригоден для исправления неза- висимых ошибок, так как его минимальное расстояние невелико. Как будет показано в g 10.7, он хорош для исправления кратных низкоплотностных пакетов ошибок. Код задается выбором прямо- угольника самых старших проверочных частот высотой а и шири- ной b. Легко видеть, что минимальное расстояние этого кода удов- летворяет неравенству Й)1+ min(a, Ь). В качестве примера укажем (49, 45, 3)-код над GF (8). Ограниче- нием этого кода на двоичное подполе является (49, 39, d ) 3)-код. 10.5. БЫСТРЫЕ КОДЫ БЧХ Как мы видели в гл. 9, кодер и декодер для кодов бЧХ обычно содержат два преобразования Фурье. В следующей главе будет показано, что в случае составного и использование алгоритмов быстрого преобразования Фурье (ВПФ) позволяет существенно уменьшить объем вычислений. Но бПФ-алгоритм Кули ‒ Тычки 
! 0.5. БЫСТРЫЕ КОЛЫ БЧХ 343 требует введения некоторых регулирующих вычисление членов, а бПФ-алгоритм Гуда ‒ Томаса ‒ некоторой перестановки адре- сов. Во избежание этого мы сейчас несколько изменим определе- ние кода БЧХ (что приведет к эквивалентному коду) и назовем полученный вариант кода бЧХ быстрым кодом БЧХ, так как он уменьшает работу декодера. Он приспособлен к алгоритму Гуда Томаса (который будет рассматриваться в $ 11.2), причем во вре- менной области сохраняется порядок символов, полученный после перестановки. Пусть и = n>n, = д"' ‒ 1, где и, и и, взаимно просты, и пусть код состоит из всех двумерных GF (q)-значных временных функций 1с;;,i=О, ...,и, 1, 1'=О, ...,и,‒ 1), таких, чтоихдву- мерные преобразования удовлетворяют проверочным соотноше- ниям С~) = С22 = С33 ‒ . ° ° = С2~, дф ‒ О» где индексы вычисляются по модулям и> и и, соответственно. Это определение задает линейный исправляющий t ошибок код, три- виальным образом отличающийся от кода бЧХ. Скорость и ми- нимальное расстояние остаются без изменений. Неизменяемость скорости вытекает из следующей теоремы. Теорема 10.5.1. В двумерном случае класс сопряженных эле- ментов для j (mod и,) и j (mod и,) содержит такое же число эле- ментов, как и класс j (mod n,n,). Доказательство. Пусть г наименьшее целое положительное число, такое, что q'j = j (mod и,) и q'j = j (mod и,). Пусть s представляет собой наименьшее целое положительное число, такое, что q'j = j (mod n,n,). Тогда д'~ = аппп., + j и q'j =- bn,ï, + j для некоторых а и b. Очевидно, что такие наименьшие r u s равны. П Доказательство того, что минимальное расстоянпе пе меньше 2t + 1, дается следующей процедурой декодирования 1 ошибок. Для принятого слова с двумерным преобразованием V;; опреде- лим компоненты синдрома равенствами V(j mod»»т, j mod ns))» ( 1» ° ° ° » 2t. Если одиночная ошибка величины е;; располагается в строке 1 1 с номером i> и столбце с номером i~, то s,. = e. (1'7')/= у,x'„ 
344 ГЛ. ! О ° МНОГОМЕРНЬ! Е СПЕКТРАЛЬНЫЕ МЕТОДЬ! где Х, равно некоторой степени примитивного элемента а, кото- рая однозначно определяется для каждой строки и каждого столб- ца. При т ошибках компоненты синдрома имеют вид Я! ‒ g У,Х'„ le=1 и задают единственное решение, если произошло не более t оши- бок. Воспользуемся алгоритмом берлекэмпа ‒ Месси и его ре- куррентным продолжением для вычисления всех S;, j = 1, ..., n, и положим Е(/ гпос1 п1, / той л2) ~)ь ) 1~ ь и' Так как и, и а, взаимно просты, положение каждой компоненты синдрома в двумерной таблице определяется однозначно. Наконец, полагая С;; = ~;; Е~~. и выполняя двумерное обратное преобразование Фурье, завер- шаем декодирование. В графической интерпретации вся эта процедура выполняется вдоль продолженной диагонали (и, X n,)-таблицы, показанной на рис. 10.б. На этой продолженной диагонали определяются 2t проверочных частот. Алгоритм Берлекэмпа ‒ Месси работает вдоль продолженной диагонали, и так как и, и и, взаимно просты то рекуррентное продолжение восстанавливает все элементы таб- лицы, двумерное преобразование Фурье которой дает таблицу о;грибок. 1 254, 56780 ) ‒ ‒ ‒ зо 0 0 0 0 ° ° ° 0 0 L2 6 Рис. 10.6. Спектр быстрого кода БЧХ. а ‒ спектр (63, 33, 31)-кода Рида‒ Соломона; б ‒ двумерный спектр быстрого (63, 33, 3l)-кода Рида‒ Соломона. 
! OåB ДЕКОДИ РОВАН И Е М НОГОМЕР Н Ы Х КОДОВ 34б I0.6. ДЕКОДИРОВАНИЕ МНОГОМЕРНЫХ КОДОВ Двумерное кодовое слово задается двумерным спектром, у ко- торого некоторые спектральные компоненты равны нулю. Один такой пример был рассмотрен в предыдущем параграфе. Пред- положим, что код определен так, что для некоторых пар индексов (jq, jq), помеченных индексом Й, выполняются условия л~ ‒ ! п2 ‒ ! Z с~ф "v' '" = О. у==0 i'==0 Тогда соответствующая компонента двумерного синдрома для конфигурации ошибок ]e;; } веса t определяется равенством и,‒ 1 и,‒ ! S,,. = f Z е,.;ф'"v' "' i=0 ю'=0 и может быть вычислена по принятому слову Iu;; ). Опишем теперь конфигурацию ошибок, используя строчные локаторы, столбцовые локаторы и величины ошибок. Локаторы в строке ~, и столбце ~~ определяются соответственно равенствами iI X, = P ' и Y, = у". Величину ошибки обозначим Z,. Компо- ненты синдрома при этом принимают вид t S =- f 7~XI"YI". /Ий l 1 Двумерные коды естественно определять так, чтобы система выписанных выше уравнений была разрешима относительно Х!, У, и Л! п р и 1 = 1, ... t. Нап р имер, проверочные частоты можно выбрать так, чтобы получилась следующая система уравнений: Sg, =- Z Õ,Ó,-~Z,Õ,Y,-',‒... ‒ У,Х,У,, = Е„, S]2 =Z]XlY]-,'--Z2X2У,-,‒... ~г,,Х,Y,,= F,g, 2g 21 2t Sl, 2g ‒ ‒ ZlX ! Y«! Z.X2V2 ‒,'‒ ... + Z,X„Y,. =- Е], 2g, которая уже встречалась в описании алгоритма декодирования кода Рида ‒ Соломона. Имеется только одно отличие: Yt не обя- зательно различны, так как в одном и том же столбце может про- изойти несколько ошибок. Можно, однако, сгруппировать ошибки с одинаковымп У~, и это приведет к аналогичной системе с мень- шим v, которое также удовлетворяет условию v < t. Тогда опять можно воспользоваться алгоритмом берлекэмиа ‒ Месси и рекур- рентным продолжением для вычисления Е„, Е,»„..., Е,„, хотя 
34' ГЛ. !О. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ такая процедура не дает однозначного решения для пар (X~, Yi) при 1 = 1, 2, ..., ч, так как некоторые ошибки попадают в один и тот же столбец. В общем случае для и, = п2 = и справедли- ва следующая теорема, которую можно обобщить, заменив и на НОК (nÄ n,). Теореыа 10.6.1. Предположим, что произои1ло ч ~ t ошибок и что для любых иелых Jp> у', и а, а' известны компоненты синдрома SI0+- и, 1,+ q npu Й ==- 1, ..., 2t. тогда компоненты синдрома ~1,+,~. I~+a > при й == 1, ..., и определяются однозначно. Доказательство. Нам даны 2t уравнений для Й =- 1, ..., 2t: V I +~> j;+~'~ S>+,, +..„= ~ г,х, о ' о = f Z,(X'YI )(X У~)~. Обозначим через ~' число различных величин Х1Х1 при всех 1, через Y1-, 1' = 1, ..., v', различные значения в этом наборе, а че- рез Х сумму всех множителей при фиксированном У~ в данном уравнении (она имеет одно и то же значение для всех Й). Тогда V/ ‒ ‒ й Я;~,P, )+,A,‒ ‒ ~ Х1У1., й = 1,...,2t 0 ' 0 1'= 1 где теперь все У1 различны и v' ~ t. Алгоритм берлекэмпа Месси с последующим рекуррентным продолжением позволяет вычислить остальные компоненты синдрома Ъ' ‒ й Я/ +М / +, А = ~~ Х1 У1, й = 1,..., и. П 0 ' О 1 / Согласно доказанной теореме, любые 2t компонент синдрома, расположенных в таблице на произвольной прямой (горизон- тальной, вертикальной или идущей под любым углом) можно продолжать до всех компонент синдрома на этой прямой. Далее, в силу ограничений сопряженности каждая из этих новых компо- нент синдрома определяет все сопряженные с ней компоненты. Конечно, не обязательно, чтобы вычисленные так компоненты синдрома давали остальные его компоненты. Размеры таблицы не всегда задаются взаимно простыми числами, так что продол- жение прямой не обязательно включает все компоненты. Посмотрим теперь, как граница БЧХ обобщается на случай двух (или более) размерностей. Предположим, что где-то в первой строке имеются 21 подряд идущих компонент синдрома. Тогда их продолжение дает все компоненты синдрома в первой строке. 
!0.7. ДЛИННЫЕ КОДЫ НАД МАЛЫМИ ПОЛЯМИ 347 Аналогично расположенные где-то во второй строке подряд иду- щие 2t компонент синдрома могут быть использованы для вычис- ления всех компонент синдрома во второй строке.,Яалее, любые расположенные подряд 2t компонент синдрома в первых 2t строках могут быть продолжены до всех компонент синдрома в каждой из этих 2t строк и, следовательно, 2t непрерывно расположенных компонент синдрома по столбцам. Последние в свою очередь могут быть продолжены до всех компонент синдрома в своем столбце, а этого уже достаточно для однозначного вычисления конфигурации ошибок. Простейший пример дается (2t Y 2t)-таблицей извест- ных компонент синдрома. Общая ситуация описывается следую- щим образом. Теорема 10.6.2 (двумерная граница БЧХ). Если а взаимно просто с и и число ошибок ч не превосходит t, то множество компо- нент синдрома ~~~а (т~+Ь ), а' (т~1+й') + Ф1 где а, а' и т ‒ некоторые иелые числа, й' = 1, ..., 2t, й = 1, , 2t, однозначно определяет конфигурацию ошибок. Доказательство. Для каждого Й воспользуемся предыдущей теоремой для вычисления компонент синдрома ~а(п +й) а (п1 +~)+k Й' = 1,...,п, Й= 1,...,21. Переопределим индекс й' так, чтобы отбросить в индексах числа m> и записать известные компоненты синдрома в виде S,~., ~+~, й' =1,...,n, Й = 1,...,2t. Вновь воспользуемся предыдущей теоремой для вычисления для каждого Й' компонент синдрома S,~, I, +I„й' = 1,...,n, й =1,...,n. Поскольку й пробегает все значения от 1 до n, ero можно пере- определить так, чтобы избавиться от а'й', таким образом, вычис- ляются все компоненты синдрома 5,>,, >, при Й' == 1, ..., и и Й = 1, ..., и. Поскольку а и и взаимно просты, то индекс ak' про- бегает все и значений. Следовательно, синдром вычислен полностью и конфигурация ошибок определена. I 10.7. ДЛИННЫЕ КОДЫ НАД МАЛЫМИ ПОЛЯМИ Для кодов с очень большой длиной и высокой скоростью слож- ность декодера может являться более важным фактором, чем скорость кода. С практической точки зрения разница между скоростями 0,98 и 0,99 может быть не столь уж существенной, 
Я4Р ГЛ. 10. МНОГОМЕРНЫЕ СПЕКТРЛЛЬНЫЕ МЕТОДЫ если декодеры для этих двух кодов сильно отличаются в цене. В настоящем параграфе рассматриваются коды очень большого объема, декодеры для которых имеют ограниченную сложность. Все рассматриваемые коды являются многомерными; характери- стики этих кодов в общем случае лучше, чем у кодов-произведе- ний, а декодирование реализуется с помощью вычислений в поле Галуа, мощность которого намного меньше длины кода. Такие коды могут быть противопоставлены кодам БЧ Х. Для кода БЧХ длины п = q'" ‒ 1 декодер производит вы- числения в поле GF (q"). При больших п мощность такого поля Галуа очень велика. Коды, которые будут сейчас описаны, можно декодировать с помощью вычислений в малом поле Галуа. Одним из этих примеров будет двоичный код, слова которого задаются двумерной таблицей с и = 2 1 строк и таким же числом столб- цов. Следовательно, длина кода равна и', но мы надеемся все вычисления провести в поле GF (2 ). Хотя скорость такого кода ниже скорости кода БЧХ с теми же и и d, в некоторых приложе- ниях он может оказаться предпочтительнее из-за малой длины, на которой производит вычисления декодер. Первым примером является произведение двух кодов БЧХ, а именно (nÄ kÄ d,)-кода и (nÄ kÄ d,)-кода, и, следовательно, является кодом с параметрами (n,п„й,й„йф,). Например, про- изведение расширенного (256, 232, 25)-кода Рида ‒ Соломона на самого себя дает (65 536, 53 824, 625)-код над GF (256), который позволяет исправлять 312 8-битовых байтов, пакеты длины 3072 8-битовых байтов, а также многие конфигурации ошибок более чем из 312 байтов. Вместо этого можно воспользоваться (65 536, 64 289, 625)-кодом БЧХ, который позволяет также исправлять 312 случайных байтов и обеспечивает при этом существенно большую скорость, но его декодирование требует вычислений в 16-битовой арифметике поля GF (2"). Код-произведение компен- сирует это другим преимуществом, позволяя помимо 312 случай- ных байтов исправлять многие другие конфигурации ошибок, чего не может код БЧХ. Декодировать код-произведение можно описанным в ~ 10.3 способом. Второй пример дается кодом, дуальным K коду-произведению двух кодов Рида ‒ Соломона или их подкодов над подиолями. Дуальный код исправляет случайные ошибки, а также кон- фигурации многократных низкоплотностных пакетов, определяе- мых как конфигурации, состоящие из сегментов ошибок, вес которых больше типичного. Исправляющие многократные низко- плотностные пакеты ошибок коды полезны для тех каналов, в которых происходит ритмичное изменение вероятности ошибки, например для каналов с замиранием. В частности, дуальный к квадрату (255, 239, 25)-кода Рида ‒ Соломона код представляет собой (65 025, 64 769, 17)-код 
! 0.7. ДЛИННЫЕ КОДЫ НАД МАЛЫМИ ПОЛЯМИ;349 над GF (266) и исправляет все случайные конфигурации ошибок из восьми 8-битовых байтов, а также все конфигурации ошибок из 64 8-битовых байтов, образующие низкоплотностные пакеты из восьми искаженных столбцов, каждый из которых содержит восемь искаженных байтов. Двумерные проверочные частоты этого кода задаются парами (j,j') для 1 = 1, ..., 16 и 1' = 1, ..., 16. Основанная на теореме 10.6.1 процедура декодирования сводится к следующему. По дан- ному принятому слову IU;; } вычисляются компоненты син- дрома Sg по формулам 255 255 Sjj = g Q а'~а"~"U(j J, /' = 1,..., 16. i=-0 с'=0 Алгоритм Берлекэмпа Месси с последующим рекуррентным про- должением используется для вычисления всех компонент син- дрома в j-й строке. После такой обработки в декодере каждой из 16 строк оказы- ваются вычисленными компоненты S.' синдрома для = 1, ..., 255 и j' = 1, ..., 16. Обратное преобразование Фурье каждой из этих 16 строк содержит ненулевые символы только в тех восьми (или менее) столбцах, которые содержат ошибки. Пометим эти восемь столбцов. Преобразование Фурье этих 16 строк в каждом из помеченных восьми столбцов дает 16 элементов Т' ' поля с = 1, ..., 255, 1' = 1, ..., 16. Стоящие в ~-м столбце эле- менты этого поля можно выразить через величины ошибок и строчные локаторы для этого столбца: т,"'=zI'>(хп') q-ф>(х~~') + z"I (х~~' ) тЦ' = z,«(õ',") ''-.,,-z,"'(х,"')"-,‒... +гД,>(х,".,',,)", где v (i) ‒ число ошибок в ~-м столбце. Если v (i) w 8 для каж- дого ~, то эта система уравнений может быть решена с помощью алгоритма Берлекэмпа ‒ Месси, что и завершает декодирование. Можно также построить код, дуальный к коду-произведению для кодов БЧХ. Но такие коды содержатся в более мощных кодах с тем же минимальным расстоянием и той же способностью ис- правлять низкоплотностные пакеты ошибок. В общем случае предпочтительнее эти последние коды; опишем их. Для иллюстрации этой идеи рассмотрим частный случай дво- ичного кода с t = 8, и = 255 и длиной и' = 65 025. Как показано на рис. 10.7, а, выберем проверочные частоты так, чтобы в блоке 
ЗбО ГЛ. ! О. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ ! 1 3 4 5 б 7 8 9 !О ll 11 13 14 15 16 17 1Я 19 Рис. 10.7. Двумерные проверочные частоты. а ‒ расположение проверочных символов по строкам; б ‒ другой выбор проверочных символов. 
!0.7. ДЛИННЫЕ КОДЫ НАД МАЛЫМИ ПОЛЯМИ Я5] с j = 1, ..., 2t и j' = 1, ..., 2t можно было бы вычислить все компоненты синдрома. Тогда, согласно теореме 10.4.2, можно будет вычислить и остальные компоненты синдрома. Для построения кода, исправляющего восемь ошибок, надо соответствующим образом выбрать 128 проверочных частот. Сначала выберем в качестве проверочных частот пары (1, 1), (1, 2), ..., (1, 2/), так что С» С,, = ... = C,,„= О. Все вы- бранные так проверочные частоты лежат в разных классах со- пряженных элементов, и каждый класс содержит восемь элемен- тов, так что каждая из этих частот эквивалентна восьми прове- рочным битам. Если произошло не более t = 8 ошибок, то вычи- сленные в этих частотах компоненты синдрома могут быть про- должены до компонент S~;, 1' = 1, ..., п. Далее, используя ограничения сопряженности для этой верхней строки, заполняем строки с номерами 2, 4, 8 и 16. Выберем теперь в качестве про- верочных частот пары (3, 1), (3, 2), ..., (3, 2/). Это дает еще 16 х 8 проверочных битов. Вычисление компонент синдрома в третьей строке дает также значения компонент синдрома в стро- ках 6 и 12. Продолжая таким образом, выберем все приведенные на рис. 10.7 проверочные частоты. Это дает возможность вычислить все компоненты синдрома для частот, заполняющих угловой квадрат 2t х 2t, а тем самым и все компоненты синдрома (напом- ним, что произошло не более t ошибок). Каждый проверочный символ эквивалентен восьми проверочным битам, так что всего получаем 1024 проверочных битов. Таким образом построен (65 025, 64 001, 17)-код, характеристики которого лучше, чем у (65 535, 65 407, 17)-кода БЧХ. Достоинство этого кода состоит в том, что, несмотря на его большую длину, для него существует сравнительно простой алгоритм декодирования, позволяющий исправлять большое число пакетов ошибок (такой алгоритм будет сейчас описан). Декодер для этого кода аналогичен описанному ранее. По принятому двумерному слову вычисляется двумерное преобразо- вание Фурье в 128 проверочных частотах. Это дает спектральные компоненты Е;;- вектора ошибок в проверочных частотах. Пока- жем, как по этим известным компонентам вычислить остальные компоненты спектра ошибок. Результат применения алгоритма Берлекэмпа Месси к первой строке рекуррентно продолжим на все 255 компонент этой строки и, используя ограничения сопряженности, заполним строки с номерами 2, 4, 8 и 16. То же самое проделаем с третьей строкой, заполняя строки с номерами 3, 6 и 12. Повторим вычисления для пятой строки и т. д. до тех пор, пока не будут заполнены 2t строк. После заполнения 2t строк начинается декодирование столб- цов. Один из способов состоит в использовании алгоритма Бер- 
362 ГЛ. ~0. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ лекэмпа ‒ Месси для заполнения всех входов таблицы E» . Об- ратное двумерное преобразование Фурье завершает декодиро- вание. Более простой процедурой является следующая. Вычи- слим одномерное обратное преобразование Фурье для 21 извест- ных строк символов Е~;, . Это дает множество из 2t компонент синдрома для каждого столбца; ненулевые компоненты могут иметь не более 2t столбцов и только к пим необходимо применить алгоритм Берлекэмпа ‒ Месси. На рис. 10. 7, б показан другой возможный способ выбора проверочных частот, который приводит к двумерному коду с боль- шей скоростью, но с более сложным декодером. В этом случае алгоритм Берлекэмпа ‒ Месси должен применяться для декоди- рования попеременно строк и столбцов. При необходимости для вычисления новых компонент E используются ограничения сопряженности. 3А ДАЧИ 10.1. Множество всех (7 Х 7)-матриц над GF (2) образует векторн е про- странство. Выписать базис этого пространства. Сколько векторов содержит это пространство? Является ли подпространством множество всех таких матриц с нулевой главной диагональю? Если да, то сколько векторов содержит это под- пространство? 10.2. Пусть р (х) = х~+ х+ 1 и д (х) = х4+ х+ 1 ‒ многочлены над GF (2). Найти «китайские многочлены» а (х) и b (х), удовлетворяющие равен- ству а (х) р (х) + Ь (х) д (x) = 1. 10.3. Пусть У ‒ простой (и, и ‒ 1)-код с проверкой на четность, и пусть Ж~ есть (nï, (и ‒ 1) )-код, представляющий собой трехмерное произведение трех одномерных копий F. а. Сколько ошибок может исправить код Жэ? б. Привести пример двух конфигураций ошибок одинакового веса, об- наруживаемых кодом, но имеющих один й тот >ке синдром и, следовательно, неисправляемых. 10.4.а. С помощью перемежения расширенного кода Рида ‒ Соломо- на над GF (64) построить (3840, 3360)-код, исправляющий пакеты из 240 6-битовых байтов. Чему равно минимальное расстояние кода-перемеже- ния? б. Перевести этот код в (4096, 3360)-код-произведение, который также исправляет пакеты нз 240 байтов, ио, кроме того, исправляет и случайные кон- фигурации ошибок из 22 байтов. в. Описать декодеры для кодов из предыдущих пунктов задачи. 10.5. Сколько ошибок может исправлять произведение (7, 4)-кода Хэм- минга на самого себя? Используя в качестве готового блока декодер для (7, 4)- кода Хэмминга, построить простой декодер, исправляющий ошибки в предтечах радиуса упаковки кода-произведения. 10.6. Пусть а и b удовлетворяют равенству ап1 —,' Ьп, = 1 для взаимно простых п1 и а,. При заданном циклическом (и,, /г,)-коде с порождающим много- членом g,(х) и заданном циклическом (а~. k>)-коде с иорождающим многочле- ном g2 (х) доказать, что порождающий многочлен циклического кода-произве- дения длины и = п,п,. равен д (х> = НОД [q, (x"*), д.,(л"'), х" ‒ I]. 
ЗАМЕЧАН ИЯ 363 ЗАМЕЧАНИЯ [1роизведспие кодов ввел Элайс [!954], доказавшиЙ, что минимальное расстоя- ние кода-произведения равно произведению минимальных расстояний исходных кодов. Бартон и Уэлдон [1965] доказали, что при взаимно простых длинах произведение двух циклических кодов является циклическим кодом. В этой же работе изучалось исправление пакетов ошибок и независимых ошибок кодами- произведениями. Методы декодирования кода-произведения описали Редди и Робипсон [1972], а также Уэлдон [197! J. В $ !0.4 ‒ -10.6 развиваются идеи автора (Блейхут [1979]). Использовать дуальный код-произведение для исправ- ления кратцых ннзкоплотностпых пакетов предложи;~п Чепь и Н~ [197~]. 
ГЛАВА 11 БЫСТРЫЕ АЛГОРИТМЫ Хорошие коды с большой длиной и большим объемом алфавита, такие, как коды Рида ‒ Соломона, находят все более широкое применение. В будущем потребуются еще более длинные коды, контролирующие ошибки, и поэтому задача уменьшения слож- ности алгоритмов декодирования становится важной. Мы уже рассмотрели некоторые эффективные алгоритмы декодирования кодов Рида ‒ Соломона и связанных с ними кодов и знаем, как строить декодеры, содержащие порядка и' вычислений. В данной главе проводится исследование сложности декоде- ров. Мы начнем с уже рассмотренных декодеров и опишем для них способы более эффективного выполнения вычислений. В качестве меры сложности вычислений выбирается число умножений (а иногда и число сложений) в проводимых вычислениях. Будут строиться методы, уменьщающие сложность вычислений именно в этом отношении. За это приходится платить усложнением струк- туры.' для уменьшения числа сложений и умножений приходится увеличивать структурную сложность, привлекая алгоритмы с более сложными индексацией и разветвлением. Безусловно, во многих приложениях регулярность алгоритма оказывается важнее, чем число умножений и сложений. Такой аспект сложности трудно определить численно, и поэтому мы его не рассматриваем. 11.1. ЛИНЕЙНАЯ СВЕРТКА И ЦИКЛИЧЕСКАЯ СВЕРТКА Линейная свертка с, = g g,zd~ 1=0, может быть также записана в виде произведения многочленов с (х) = g (х) Н (х). Стандартный способ вычисления произведения двух многочленов требует примерно (deg d (х)) х (deg g (х)) умножений и сло- 
11.1. ЛИНЕЙНАЯ И ЦИКЛИЧЕСКАЯ СВЕРТКИ QQQ жений, но, возможно, существуют другие способы его вычисле- ния, для которых это число можно уменьщить. Так как свертка является элементом многих вычислительных операций, то имеет смысл построить эффективные способы ее вычисления. Более того, циклическую свертку с (х) = g (х) d (х) (mod х" 1) можно сначала вычислить как линейную, а затем привести по модулю х" 1. Следовательно, эффективные способы вычисле- ния линейной свертки дают также эффективные способы вычи- сления циклической свертки, и, обратно, эффективные способы вычисления циклической свертки можно легко превратить в эф- фективные способы вычисления линейной свертки. Циклическая свертка может быть записана в виде л ‒ 1 c;=g д«; ~»д„ i=О,...,n ‒ 1, k=Î где двойные скобки обозначают вычисление индексов по модулю п. Согласно теореме о свертке, в частотной области имеем с, =о,o„, и, таким образом, циклическую свертку можно вычислить, после- довательно применяя преобразование Фурье, покомпонентное умножение и обратное преобразование Фурье. Если и представ- ляется произведением больщого числа сомножителей, то быстрое преобразование Фурье (БПФ), которое будет описано в следу- ющем параграфе, позволяет снизить число вычислений. Преоб- разование Фурье в поле GF (q) существует только для целых п, делящих число О 1, и некоторые из этих п не допускают алго- ритмов БПФ. Но в теории обработки дискретных сигналов хо- рощо известны методы удлинения векторов d, g и с до такой длины п', что компоненты с индексами с = О, ..., п ‒ 1, сохра- няют нужные значения, а вектор с связан с векторами д и g со- отнощением циклической свертки, вычисляемой, однако, на длине п', удобной для применения алгоритмов БПФ. Возьмем, например, удовлетворяющую условию п' w 2п длину и', на которой легко вычислить преобразование Фурье, и положим а;, i = О,..., п ‒ 1, О, с = п,..., n' -- 1, b;, i =O,...п ‒ 1, О, с=и,...n' ‒ п ‒ 1, ° / I о+ с=и ‒ и,...,~г ‒ 1, A ‒ 1 с,' = ~ а~Ь<<, „», @=о 12~ 
366 ГЛ. 11. БЫСТРЫ Е АЛГОРИТМЫ где двойные скобки в индексе обозначают вычисление по модулю п'. Тогда с~ ‒ ‒ с;, с = О, ..., п ‒ 1. Остальные значения с,' не пред- ставляют интереса и могут быть отброшены. Разработаны методы сведения длинной линейной свертки к множеству коротких циклических сверток. Опишем метод, оказавшийся чрезвычайно полезным в обработке дискретных сигналов и известный под названием метода перекрытия с нако- плением. Он применим также к длинным сверткам в полях Галуа. Предположим, что имеется устройство, вычисляющее цикли- ческую свертку длины п, и что мы хотим воспользоваться этим устройством для умножения многочлена а (х), степень А кото- рого меньше п, на многочлен Ь (х), степень В которого больше п, чтобы получить произведение с (х) = а (х) Ь (х). По имеющемуся многочлену Ь (х) сформируем множество многочленов ',b<'> (х), Ь<~> (х), ..., b<'> (х)~, степень каждого из которых не превосхо- дит п 1, по следующему правилу: bi, i =Î,...,п ‒ 1, b(1) О, в остальных случаях, Д(2) ~'+ (и ‒ А) с=О, ...,п ‒ 1, О, в остальных случаях, уз) ) bi+2 (n ‒ л) i =0,...,n 1, О, в остальных случаях, bi+ (s ‒ 1) (а ‒ А)э О, i =0,...,n ‒ 1, в ocTGJIbHblx случаях, где s выбрано достаточно большим для того, чтобы были пред- ставлены все коэффициенты многочлена Ь (х). Отметим, что коэф- фициенты построенных многочленов перекрываются. Пусть с"'(x) = а(х) b"'(x) (mod x"--1), 1 = 1,..., s. Коэффициенты многочлеиа с (х), за исключением первых А коэф- фициентов, содержатся среди коэффициентов многочленов c~"~ (т), а именно с; =-с';", i À,...,n -1, (2) Ci+ (n ‒ A) Ci э l = А,..., п--1, (3) Ci+2 (n ‒ А) ‒ Ci э i = A,..., ï ‒ 1 и т. д. A младших коэффициентов многочлена с (х) теряются. Во многих приложениях при вычислении линейной свертки нужны не все коэффициенты выходного многочлена, и тогда описанная 
'1.2. БЫСТРЫЕ АЛГОРИТМЫ СВЕРТКИ 367 процедура может быть удовлетворительной. Если же нужны все коэффициенты выходного многочлена с (х), то в проделанных выкладках следует просто заменить многочлен Ь (х) многочле- ном х'Ь (х). Это позволит вычислить все необходимые коэф- фициенты, Но все индексы будут сдвинуты на число А. Каждая циклическая свертка, за исключением последней, дает и ‒ А коэффициентов линейной свертки и А бесполезных коэффициентов, которые отбрасываются. Так как степень много- члена b" (х) может быть меньше, чем и ‒ 1, то последняя свертка может давать больше, чем и А, значимых коэффициентов. 11.2. БЫСТРЫЕ АЛГОРИТМЫ СВЕРТКИ Известно много алгоритмов вычисления циклической свертки, и многие из них более эффективны, чем использование быстрого преобразования Фурье и теоремы о свертке. В данном параграфе будет описан быстрый алгоритм Винограда вычисления свертки. Этот метод пригоден для любого поля, но мы интересуемся только конечными полями GF (q). Он сводится к разбиению свертки на легко вычисляемые короткие свертки, которые формируются в со- ответствии с китайской теоремой об остатках для многочленов. Алгоритм Винограда находит вычет с (х) = g (х) d (х) (mod Ь (х)) для некоторого фиксированного многочлена Ь (х) над GF (q). Для построения алгоритма вычисления линейной свертки с (х) = g (х) д (х) выберем любое целое число N, большее степени с (x), и любой многочлен Ь (х) степени N. Тогда имеем тривиальное утверждение с (х) = с (х) (то4 Ь (х)), так что алгоритм Винограда применим и для вычисления линей- ных сверток. Чтобы разбить вычисление свертки по модулю многочлена на отдельные части, разложим Ь (х) на взаимно простые множи- тели над некоторым подполем поля GF (q): Ь (х) = b, (х) b, (х) ... b. (х). Обычно в качестве поля разложения выбирается простое подполе GF (р), и будем рассматривать этот случай; теория, однако, столь же пригодна и для любого подполя. Процедура миними- зирует число умножений в GF (q) и не делает попыток такой ми- нимизации в GF (р). В большинстве практических приложений простое поле является полем GF (2), умножение в котором три- виально. 
ЯЩ ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ Алгоритм Винограда для свертки основан на вычетах с» (х) = Я» („) [с (х) ], lг = 1, ..., s. Вычисление циклической свертки разбивается на два шага. Сначала вычисляются вычеты для й = 1, ..., s: сд (х) = g (х) d (х) (mod Ьд (х)) = g» (х) d» (х) (mod Ь» (х)). Вычисление вычетов g» (х) и d» (х) не требует умножений '). Согласно китайской теореме для многочленов, выражение для многочлена с (х) через эти вычеты дается формулой с (х) = а, (х) с, (х) + ... + а, (х) с, (х) (mod Ь (х)), причем все многочлены а, (х), ..., а, (х) являются многочленами над GF (р). Так как коэффициенты многочленов а» (х) принад- лежат простому полю GF (р), этот последний шаг также не тре- бует умножений. Только для вычисления коротких сверток, задаваемых произведениями многочленов g» (х) d» (х), требуется производить умножения в поле GF (q); так как оба многочлена g» (х) и d» (х) имеют deg Ь» (х) коэффициентов, то обычный метод умножения многочленов приводит к оценке необходимого числа умножений в виде суммы g [d<.g b» (Ä)]». A' =! Это может существенно уменьшить число умножений. Иногда удается дополнительно уменьшить число умножений, разбивая одну или несколько коротких сверток на еще более короткие и повторяя описанную процедуру. Одна из модификаций алгоритма Винограда вычисления свертки состоит в выборе многочлена Ь (х) степени несколько меньше нужной. Тогда описанная процедура приводит к непра- вильному значению свертки, но ее можно подправить несколькими дополнительными вычислениями. Это делается следующим обра- зом. Согласно алгоритму деления, с(х) = Q(x) Ь(х)+ Я»<„> [с(х)]. Если deg Ь (х) ) deg с (х), то многочлен-частное Q (х) тождест- венно равен нулю, и ситуация аналогична рассмотренной выше. Если deg Ь (х) ( deg с (х), то алгоритм Винограда приводит K вычислению только остатка Я» <„> [с (х) ]. Член Q (х) Ь (х) ') Это утверждение (и аналогичные ему утверждения ниже) основывается на том, что, как уже было указано, при оценке числа операций алгоритма Вино- града не учитываются операции в базовом поле GF (р); если GF (р) = GF (2), то умножени й по существу нет. ‒ Прим. àåðåâ. 
!! .2. Б ЫСТРЫ Е АЛГОРИТМЫ СВЕРТ~(И 3QQ можно вычислить с помощью дополнительных операций. В про- стейшем случае deg Ь (х) = deg с (х) и степень Q (х) должна равняться нулю. Если Ь (х) представляет собой приведенный многочлен степени N, то, очевидно, коэффициент при х" в много- члене с (х) равен Q (х) = с~. Следовательно, с (х) = сщ b (х) + Rb q~q [c (х) ], где с~. легко вычисляется как произведение ста[ших кс-gfHuv; ентов многочленов g (х) и d (х). Для вычисления циклической свертки длины п можно сначала вычислить линейную свертку, а затем выполнить приведение по модулю х" 1. Однако, как правило, лучше сразу выбрать Ь (х) равным х" 1, и приведение по модулю х" 1 'произво- дить в процессе применения китайской теоремы об остатках. В случае линейной свертки степень многочлена Ь (х) должна быть больше суммы степеней многочленов g (х) и d (х), в то время как степень многочлена х" 1 может быть намного меньше. В этом случае либо многочлены, по модулям которых производятся вычисления, имеют меньшие степени, либо число таких многочле- нов меньше. С другой стороны, простые делители многочлена х" 1 заранее фиксированы, а делители многочлена Ь (х), хотя степень его и выше, могут быть выбраны так, как нам удобно; взаимно простые делители многочлена Ь (х) даже не обязаны быть простыми. На рис. 11.1 приведены некоторые алгоритмы циклической свертки в полях характеристики 2, построенные с помощью рас- смотренных методов. В компактной матричной форме эти алго- ритмы записываются равенством с = В [(Cg) ° (Ad)), где Cg u Ad ‒ векторы одинаковой размерности, à [(Cg). (Ad) ] их покомпонентное произведение. Матричное представление этих алгоритмов однозначно, но последовательность выполнения сло- жений не регламентирована. При разумном упорядочении сло- жений и использовании частичных сумм можно также миними- зировать число сложений. Если многочлен g (х) фиксирован, то вектор Cg может быть вычислен заранее. Тогда алгоритм вычи- сления свертки можно записать в виде с = BGAd, где G предста- вляет собой днагональную матрицу, на диагонали которой вы- писаны компоненты вектора Cg. В качестве примера такой формы алгоритма циклической свертки на рис. 11.2 выписан алгоритм четырехточечной циклической свертки. Данный параграф мы завершаем простым примером построе- ния кодера для (7, 3)-кода Рида ‒ Соломона. Эта простенькая задача не позволяет в полной мере продемонстрировать мощь рассматриваемого метода, но зато дает возможность легко про- 
ЯЩ Гл. !!. БЬ!стРые АлГОРитмы Двухточечная циклическая свертка, Зумножения <о е', 101 01 I О Трехточечная а'О с'8 ‒ ‒ ! 1О l I l O сверака, 4 цмноженоя циклическая ЧО О 1 1 д ° 110 д 1О! 111 d„ О!1 д, 110 101 Цещцрехщочечная циклическая соерщка, 9 умножений 111 1О ОО I Î10 101 1ОО I O I I OOOO I !О!О!0010 !!0100100 110() 11000 do d8 d, d8 98 У2 0 1 0 () 0010 0001 Пящищочечная циклическая соерщка,10 умножений 11111 СО УО У8 Уi У4 С4 Рис. 11.1. Алгоритмы коротких сверток следить работу алгоритма. Более того, мы не будем пытаться построить наиболее эффективный алгоритм, а опишем такой путь построения алгоритма, который даст возможность проиллюстри- ровать многие идеи. Яля (7, 3)-кода Рида ‒ Соломона с порождающим много- членомд' (х) = х'+ аРх' + х' + ux + а' степень многочлена d(x) не превосходит двух. Для непосредственного вычисления д' (х) d(x) 1101101001 1110110001 1111000101 I I I I I I I I I O I О I I 10001 1 1() 001 01001 00101 000!I 110()0 001 10 101()() О 1 0 1 () 1111() 1 000 10!О 1010 IÎÎI IOO 1111 1111 1111 1111 1!111 10001 01001 00101 00011 11000 00110 10100 01010 11110 do d, d2 d, ~4 
11.2. Б ЫСТРЫ Е АЛГОРИТМЫ СВЕРТКИ Щ f 19 цмноженио ревят иче do d) d2 ~з d4 ds d~ d7 ~в со с, с2 ga 94 с4 9s св Ув Семи!почечная цикличес 3 цмнозкений со do d, 4 dg ~4 А d~ Уо с) с2 с5 Уь для полей характеристики 2. необходимо 15 умножений. Однако поскольку данный частный многочлен g (х) имеет только два отличных от единицы значения коэффициентов, то тривиально просто так организовать вычи- сление, что понадобится только шесть умножений. Быстрый алгоритм, который будет приведен ниже, превосходит алгоритмы как с 15, так и с шестью ум'.(ожениями. Заметим также, что Можно воспользоваться приведенным на рис. 11.1 алгоритмом цвочечная цикл IIOIIOIIO lO » 0!!О! O I I O I I O I I 0!!О!!000 OIIOOOOI 0000!!О!1 1IOOOIIII OOIIIIIIO 1» I I OOO I !!00!!!0! 01 ! 101 ! 10 101 ! I 00 I ! ! О01 11O 001110111 IIOIIIOOI 0!000!О! OOIOIIOIO 011010001 1111111 0100111 l oi) I 110 1IÎ!ÎÎI 1110100 0011101 0111010 0111001 0101110 0010111 1100101 1001011 !110010 ская сверюа, 111111111 !О!!О!!О! »0110! !О 0!!О!!0!! 1ОO1ООООО 000100»IОО 100000100 IIIIOIOiO OIOIIIIOI !О!0!О!!! !!О!ООО!О 010110100 !000!0!!0 !0!!О!ООО 000101101 !о!ооо!о! 0000!loll OII0o0011 0!1О!!ООО кая свервксо., 1 I l l l l l l O l l l OO I !01!1ОО !!оо!о! 100103 1 0101110 ОО!О1!! 0111010 1101001 1010011 1001110 0100111 ОО!11О! 111111 !О!!0! !!о!!о OIIOII !ОО!Оо ООО!0О !0О0ОО !!!!о! о!о! » !0!0!0 !!О!00 0101!0 !0ОО!0 101101 000101 1О!ООО 00ОО!1 (» !О0О О!1О1! 1111111 l i)1 1100 О!О!!1О 0010111 1110010 1100101 1001011 0111010 1001110 ()011101 I 110100 I 101001 1010011 111 !0! I I O O l l 000 !00 !00 0~0 !0! I I I О1О !00 I!O 000 I O I I O I O I ! о1! 000 
ЯЯЯ ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ ! О ! 10000 I 1010 I OO I O l l O I OO I OO ilO0II000 СО G0 ~О d, "z ~э Gj С2 G3 G4 65 67 6в д1 92 Уз Рис. 11.2. Алгоритм Винограда для вычисления чстырехточечной свертки. семиточечной свертки, который, однако, содержит 13 умноже- ний. Согласно изложенной выше теории, можно выбрать любой многочлен Ь (х), степень которого не меньше 7. Выберем Ь (х) = = х' + 1; тогда (х' + 1) = (х + Ц (х» + х + 1) (хь + х~ + 1) = = b, (х) b, (х) b, (х). Можно было бы выбрать также многочлен b(х) = х'(х+ Ц'(х'+ х+ 1), у которого степени взаимно простых делителей несколько ниже, но наш выбор приводит к лучшим результатам. !Прежде всего найдем все необходимые для алгоритма фикси- рованные многочлены: д" > (х) = R», <х> (д (х)1 = а, д"> (х) = R», <„1 [g (х) 1 = 1, g<'> (х) = R», (s) (g (х) ] = а'х' + а'х + l. 6о. 61 Gg 6э G4 6~ 66 6ч 6в I I I ! I !'00 OO I I 0101 IOlO ! 000 О! 00 ОО!О ООО! !ООО 10.! О IO IO 100 1' 1)00 ! 111 1.1 '1 1.1 I 111 
11.2. S blCTP bl E АЛ ГО РИТМЫ СВЕРТКИ Зев Согласно китайской теореме об остатках для многочленов, а))> (х) = х' + х" + хв + х' + х"- + х + 1, а)з> (х) = х' + х' + х + 1, ар) (x) = xâ + xs + xs + l. Теперь нам надо вычислить три короткие свертки: с))> (х) = g))> (х) Ю)> (х) = ud))> (х), с<') (х) = g<» (х) д('> (х) = d<s> (х), с<з> (х) = g<'> (х) д<'> (х) = (азхз+ n'x-I 1) д<'> (х). По заданному многочлену d (х) вычисляем вычеты d(1> (х) ds + dl + do Д(2) (х) = dsõs + d1x + d„ d(3> (х) = daxs+ dlx + do. Таким образом, для вычисления с)'> (х) требуется одно умноже- ние, для вычисления c)'> (х) умножений делать не надо, а для вычисления с<з> (х) требуется три умножения. Собирая вместе все эти вычисления, получаем следующее выражение для свертки: с (х) = (А, + А, + А, + А, + Аз) х'+ (А, + А, + А, + А7) х' + + (А, + А, + Ав + Ав + As) хв + (А, + А, + А, + + Ав+ Ав+ Ав) хз+ + (А, + А, + А, -I- Ав + А, + Ав + A-,) х' + + (А1+ Аз ' Ав + Ав + Ат + Ав) х + (А, + А, + +А,+As), где А, = а (d, + d~ + аЦ, А,=д„ А,=d„ А4 ~о А,=аДо, А 6 ‒ ‒ я'д, + я'д„ A7 = ud~+ uиo Ав = u до + "1 ° Выполняемое в таком виде вычисление свертки с (х) требует четырех умножений и 35 сложений в поле GF (8). Несомненно, 
36ф ГЛ ° 11 ° >blCTPbl Е АЛГОРИТМ bl однако, что промежуточные частичные суммы можно вычислять так, чтобы уменьшить число сложений. Если продолжать процесс, то можно попытаться уменьшить число умножений при вычислении с('> (х): c<» (x) g<3) (x) Д(з) (x) (ubx + (XÇx + 1) (d xã + d~x + db) Выберем b' (х) = х (х + 1) (х' + х + 1); тогда c('> (х) = (а'дг) Ь' (x) '; Pb <» [c('> (х)1. ,Яля вычисления аЧ., необходимо только одно умножение. Вычеты даются равенствами д(з> <'> (х) = 1, д'з) (" (х) = 1, g(» (з) (x) = (X д<з> <(> ( ) д Д(з> (г) (х) = do + dl + d2, d<3> <з'> (x) = (d> + d.b,) x + (dî + dâ,) Тогда с(з) (<) (x) d(b) (() (x) с(з) (г) (X) = d(з> (г> (X) с(з> (з> (x) = ад<з) (з> (x) Для вычисления c<'> <'> (х) необходимо два умножения. Мы уже использовали одно умножение для вычисления а d», так что всего для вычисления с(з> (х) с помощью выписанной выше про- цедуры требуются три умножения. Так как непосредственное вычисление с('> (х) также включает три умножения, то предпочте- ние надо отдать ему. 11.3. БЫСТРЫ Е ПРЕОБРАЗОВАН ИЯ ФУРЬЕ Дискретное преобразование Фурье (ДПФ) в той форме, как QHQ задается: и --1 VJ f а<v;, требует порядка и' умножений и и' сложений.,Яля составного и имеется несколько способов превратить такое преобразование 
f 1.3. БЫСТРЫЕ П РЕОБРАЗОВА Н ИЯ ФУРЬЕ ЯЯф ДПФ и ‒. ! V~ = f а'>v~ i=0 Число умножений и' БПФ-алгоритм 1<ули ‒ -Тычки [19651 и = n'è", i;=i'-~ n'i", ~'= О,...,и' ‒ 1, j"=О,...,и" ‒ 1 j = n"i' -( j", )' =-. О,..., n' ‒ 1, j" =-. О,..., и" ‒ 1. и" ‒ 1 а'~'" Z V'"J о;, с"=0 и' ‒ ! ~г г= Z 0"' "=0 Число умножений т п (n' + n") + n БПФ-алгоритм Гуда ‒ Томаса ([1960], [1963]) и = и'и", и' и и" взаимно просты Перестановка входных символов i =- i'N"n" -';i "N'n'(modn), i' = i (mod n'), причем i" =- i (mod n") Перестановка выходных символов )' =- Л'"j (mod n') ~ ) j == n"i'+ n'j" (mod n) j" =,Ъ'~ ~во0п" 11 ' ‒ 1 ‒ 1 ~;;"= Ей' Е '"';;- с' =0 Число умножений ~ n (n' + n") Рис. 11.3. Некоторые алгоритмы БПФ. Фурье в двумерное преобразование или в нечто ему подобное. С вычислительной точки зрения это приводит к существенно более эффективной форме, хотя понять ее структуру труднее. Алгоритмы подобного рода известны под общим названием бы- строго преобразования Фурье (БПФ). Некоторые рассматриваемые в этом параграфе алгоритмы, а именно алгоритм Кули ‒ Тычки и алгоритм Гуда ‒ Томаса, приведены на рис. 11.3. 
ЯЯЯ ГЛ. 11 ° БЫСТРЫЕ АЛГОРИТМЫ Начнем с БПФ-алгоритма Кули Тычки. Предположим, что и = и'и". В выражении для преобразования Фурье сделаем сле- дующую перестановку входных и выходных символов: j=nj'+j", j'=0, ..., и' 1, j"=0, ...,и" 1. Тогда Раскроем скобки в показателе степени и положим а"' = у и u"" = ‒ $. Так как порядок элемента и равен и'и", то член а"'""'"~' = = 1 можно опустить. Определим теперь двумерные переменные, которые также обозначим через v и V, задавая их равенствами л I vi', с" ‒ vi'+n'ю" э с =0iee и ‒ 1, ~" = О,..., и" ‒ 1, й / =00,..., n ‒ 1, j" = О,..., и" ‒ 1. Это задает отображение входного и выходного векторов данных в двумерные таблицы, причем и' ‒ 1 и" ‒ 1 v f 1У'~' а'~" g у'"~"и; i' 0 i"=0 Хотя эта формула сложнее исходной, число сложений и умноже- ний при вычислении по ней гораздо меньше, а именно требуется не более и (n' + n" + 1) умножений по сравнению с n', необ- ходимых в исходном варианте. Заметим, что при каждом значе- нии i." внутренняя сумма представляет собой и"-точечное преоб- разование Фурье и при каждом значении ~" внешняя сумма пред- ставляет собой и'-точечное преобразование Фурье. Если соот- ветствующая длина является составным числом, то каждое из этих преобразований в свою очередь можно упростить с помощью быстрого преобразования Фурье. Преобразование длины и с де- лителями п; таким образом представляется в форме, требующей около n ~; n, умножений. БПФ-алгоритм Кули ‒ Тычки можно наглядно представить в виде отображения двумерной таблицы в двумерную таблицу, пример которого для и = 15 и и = 21 приведен на рис. 11.4. Преобразование Фурье сначала применяется к каждой строке, а затем к каждому столбцу. Перед применением преобразования Фурье к столбцам производится поэлементное умножение. Отме- тим, что компоненты спектра упорядочены иначе, чем компоненты 
11.3. БЬ1СТРЫЕ ПРЕОБРАЗОВАНИЯ ФУРЬЕ ЯЯ7 сигнала. Такое упорядочение называется перестановкой адресов. Поля Галуа, в которых преобразование Фурье вычисляется наи- более просто, имеют вид GF (2"' + 1), где число 2"' + 1 является простым. Известно, что если т не является степенью двойки, то 2"' + 1 не является простым числом. Обратное утверждение Ис!!!инный входнои дайл 15 аочек 21 вочка Переиндексация Кули -Тычки 21-вочечный вход 15-вочечный вход 21-вочечный выход 15-вочечный выход Переиндексация Гуда-Томаса 15-п~очечный вход 21- вочечнь~й вход 15-аочечный выход 21-аочечный выход Ри~. 11.4. Примеры переиидексаиии. 
368 ГЛ. 11. БЫСТРЫЕ АЛГОРИТЯЫ неверно, так как известно, что число 2" + 1 является составным. Но для т = 2, 4, 8 и 16 числа 2" + 1 =- 5, 17, 257 и á5537 являются простыми и известны под названием простых чисел Ферма. В поле Галуа GF (q), где q простое число Ферма, все делители числа о 1, включая и само это число, являются сте- пенью двойки. Преобразование Фурье и ‒ 1 v,= f u'IU, c'=0 существует для всех и, делящих 2"', и всех элементов а, порядок которых равен п. Таким образом, в поле GF(2" + 1) существуют преобразования Фурье длин, равных 2", 2", 2'4; ..., 2', 2. Постро- енный в таком поле систематический код Рида Соломона может быть превращен в двоичный код, исправляющий пакеты ошибок. Эгот код можно использовать для систематического кодирования r-битовых байтов; одно из 2' значений запрещается использовать в качестве информационных символов. Проверочные символы принимают 2' + 1 значений, так что для их двоичного представле- ния требуется r + 1 битов. Так как в поле GF (2" + 1) порядок элемента 2 равен 32, то преобразование Фурье длины не более 32 является чрезвы- чайно простым. Чтобы показать это, заметим, что в поле GF (2" + 1) справедливо равенство 2" + 1 = О, так что 2" = ‒ 1 и 2" = 1. Преобразование Фурье имеет вид л1 V;= ~',2"о;, c'=0 так что умножение происходит только на степени двойки и опе- рация умножения по существу представляет собой циклический сдвиг в двоичной арифметической системе. Такое преобразование Фурье очень легко вычисляется с помощью двоичного БПФ-алго- ритма Кули Тычки, но длина преобразования, равная 32, слишком мала, чтобы иметь много приложеиий. Более длинные преобразования Фурье должны включать нетривиальные умно- жения. Однако использование 32-ичного БПФ-алгоритма Кули‒ Тычки позволяет умеиьшить число таких умножений. Напри- мер, рассмотрим 1024-точечное преобразование в поле GF (2" + 1): 102'ъ Vq ‒‒ f а'>и;, с =-0 где а ‒ элемент порядка 1024. БПф-алгоритм Кули Тычки приводит эту формулу к виду 31 '11 ~Р о i '"i 1~Г ° / ' и~'~ ' tc'/'+/" =,д 2 CC ~Ä 2 ~c +pc c" ° с'=0 "=0 
1!.3. БыстРые ЙРБОБРА3ОВАния ФуРье 369 задающему отображение входного индекса с в пару индексов (i', i"), лежащих на продолженной диагонали двумерной таблицы. Согласно китайской теореме об остатках, существуют целые числа N' и М", такие, что N'ï' -~- N"n" =- 1 Это позволяет следующим образом однозначно вычислить исход- ный индекс / по паре (i', /"): i = i' N и" + i "N'n' (mod n). Выходные индексы упорядочиваются несколько иным способом. Оц редел:1м /' = N"j (mod n'), j" = N'j (mod n"). Внутрення я сумма при каждом с' является 32-точечпым пре- образованием Фурье, а внешняя сумма является 32-точечным преобразованием Фурье при каждом с'. Только со степенью элемента а связаны нетривиальные умножения, но их число равно 1024. В общем случае для вычисления преобразования Фурье в поле GF (2'"' —,' 1) требуется около п (l log„n1 1) умножений в этом поле, (1/2) п log, п сложений и (1/2) п log, n СДВИГОВ. Другим алгоритмом БПФ является алгоритм Гуда ‒ Томаса для взаимно простых делителей. По сравнению с алгоритмом Кули ‒ Тычки он немного сложнее в принципе, но и немного проще в вычислительном отношении. В алгоритме Гуда Томаса форма переиндексации линейного массива в двумерную (n' x n")-таб- лицу, позволяющая вычислять одномерное преобразование Фурье с помощью двумерного преобразования Фурье, отличается от формы переиндексации в алгоритме Кули ‒ Тычки. Алгоритм Гуда ‒ Томаса по идее существенно отличается от алгоритма Кули Тычки. В нем и' и и" предполагаются взаимно простыми, и в основе отображения лежит китайская теорема об остатках. Способ упорядочения данных иллюстрируется рис. 11.4. Упоря- дочение начинается с левого верхнего угла таблицы, и компо- ненты записываются вдоль продолжения диагонали. Так как число строк и число столбцов взаимно просты, то продолженная диагональ пройдет через все элементы таблицы. После выпол- нения двумерного преобразования Фурье компоненты спектра выписываются в двумерной таблице в другом порядке. БПФ-алгоритм Гуда ‒ Томаса основан на китайской теореме об остатках для целых чисел. Входные индексы определяются своими вычетами по правилу ж' = i (mod n'), i" = i (mod n"), 
37О l  1 f БЫСТР ЬЗЕ АЛ ГОРИТМ Ы В эквивалентном виде это можно записать так: /" = ((Ж' mod n") / mod и"), j' = ((У" mod n') / mod n'). Тогда выходной индекс j можно вычислить следующим образом: j = n"J' + n'j" (mod n). Чтобы проверить это, запишем j=n (Nj+Qn)+n (Nj+q2n) (modnn) = j (n"N" + n'N') (mod n) При такой переиндексации формула V; = f~oа'Ъ; прини- мает вид @ ‒ 1 p„>'+и'/" = С"=0 Выполним умножение в показателе степени. Так как порядок элемента а равен и'и", то члены, содержащие и'и, можно отбро- сить. Используя выписанные соответствия для индексов, будем рассматривать входной и выходной векторы как двумерные таблицы. Тогда л' ‒ 1 y> ° - ‒‒ l '"=0 n' ‒ 1 n" ‒ ! С"=О С'=0 где P = u""<"">' ‒ элемент порядка и', а у = ал'<"'> ‒ эле- мент порядка п'. Полученная формула представляет собой дву- мерное (n' x n")-точечное преобразование Фурье, для вычисле- ния которого требуется примерно п (n' + n") умножений н при- мерно столько же сложений. Если длина преобразования по столб- цам или по строкам является составным числом, то можно про- вести дальнейшее упрощение, снова применяя быстрое преобра- зование Фурье. Поступая таким образом, можно преобразование длины и, распадающейся на взаимно простые множители и;, привести к форме, для вычисления которой требуется порядка n g>n> умножений и сложений. Для выполнения преобразования Фурье можно выбрать как алгоритм Кули ‒ Тычки, так и алгоритм Гy:;jà ‒ Томаса. Иногда возможно даже использование обоих алгоритмов одновременно. папример, используя БПФ-алгоритм Гуда ‒ Томаса, можно раз- 
11.4. АЛГОРИТИЫ АГАРВАЛА- КУЛИ 371 бить 63-точечное преобразование на 7-точечное и 9-точечное, а затем, используя БПФ-алгоритм Кули ‒ Тычки, свести 9'точеч- ное преобразование к двум 3-точечным. Организованное так вычи- сление будет аналогично (3 х 3 х 7)-точечному трехмерному преобразованию Фурье. 11.4. АЛ ГОРИТМЫ АГАРВАЛА ‒ КУЛ И ВЫ Ч ИСЛЕН ИЯ СВЕРТОК Ту же схему индексации, которая была использована в алгоритме Гуда Томаса для превращения одномерного преобразования Фурье в многомерное преобразование Фурье, можно использо- вать для превращения одномерной свертки в многомерную. Этот метод разбиения свертки известен под названием алгоритма Агарвала ‒ Кули вычисления свертки. Он не дает такого же уменьшения числа умножений, как алгоритм Винограда вычи- сления свертки, но зато и не имеет такой, как у алгоритма Вино- града, тенденции роста числа сложений для больших п. Далее этот метод более структурирован и, следовательно, для больших и более обозрим, так как допускает разбиения на подалгебры. Используя алгоритм Агарвала ‒ Кули разбиения длинной свертки на короткие и алгоритм Винограда вычисления коротких свер- ток, можно получить хорошие алгоритмы для вычисления свертки. В отличие от алгоритма Винограда для свертки, использую- щего китайскую теорему об остатках для многочленов, алгоритм Агарвала ‒ Кули основан на китайской теореме об остатках для целых чисел и может быть использован только в тех случаях, когда длина п имеет взаимно простые делители. Для заданных векторов с компонентами д; и d; при ~ = О, ..., и 1 требуется вычислить циклическую свертку /1 ‒ I CC = f g<<r u>>daг i = 0, ..., П ‒ 1, Й =-0 где двойные скобки у индексов обозначают вычисления по мо- дулю и. Превратим эту одномерную свертку в двумерную. В предыду- щем параграфе мы уже видели, как с помощью китайской теоремы об остатках отобразить одномерные входные данные в двумерную таблицу и как двумерную таблицу выходных данных отобразить обратно в одномерный вектор. Заменим индексы i и й парами индексов (i', i") и (Й', Й") так, что ю"=О, ...,n" 1, k=n"К+и'Ы', й'=О, ..., и' ‒ 1, й"=О, ..., и" ‒ 1. 
372 ГЛ. 11. БЫСТРЫЕ АЛГОРИ'ГМЫ При рассмотрении алгоритма Гуда--Томаса мы уже видели, как определить новые индексы, чтобы они выполняли свое предна- значение: Й' = N"É (mod и'), Й" = N'É (mod n"), i' = N"i (mod n'), i" = N'i (mod n"), где N' и N" представляют собой целые числа, удовлетворяющие условию Тn' + N"è" = 1. Тогда свертка записывается равенством »' ‒ 1» ‒ 1 ~n"i''+ë't" = f ~ <4л"»'+л'»"Ян" (l' ‒ »') + и' (I- ‒ Ic"). а =0 а-=0 Двойное суммирование по паре (Й', Й") эквивалентно суммирова- нию по й, так как перебираются те же самые члены суммы. Опре- делим теперь двумерные переменные д, d и с: 1~ ГЪ I g< ~" =g»<+n>-, к =О, -, и --1, й"=О,...,а" ‒ 1, й'=О, .... и'.‒ 1, й" = О, ..., и" ‒ 1, Й' = О, ..., и' ‒ 1, й"=О, ...,и" ‒ 1, С/г', A'" = <n"/ар+n'k" так что свертка задается выражением »' ‒ ! n" ‒ 1 г;.;- = Q Z d»».-»); Й '=.0 й"=-0 1;=0 где первые и вторые индексы берутся соответственно по модулю и' и и". Мы получили настоящую двумерную циклическую свертку. Для того чтобы описанный алгоритм был полезен, надо рас- полагать эффективным способом вычисления двумерной цикличе- ской свертки. Применим вдоль каждого из двух измерений алго- ритм Винограда вычисления свертки. Этот метод легче просле- дить, представив двумерную таблицу в виде одномерной таблицы многочленов. Определим множество и" многочленов равенствами 
11.4. АЛГОРИТМЫ АГА РВАЛА ‒ КУЛ И Я73 Аналогично определим л' ‒ 1 ул(х) = w ga a-л ', й й'=0 4"=О, ..., и" ‒ 1, n' ‒ 1 с~" (х) = ~~ с~ ~-л ', й с '=-0 Й" =- О, ..., n" ‒ 1. При этом двумерная свертка превращается в одномерную свертку многочленов: n" ‒ 1 с;-(х) = g g«~ л-и (л) dq" (õ) (mod л"' -- 1), !" = О,..., и" -- I. й"=0 Для каждого ~" в этой сумме производится сложение n" произве- дений многочленов. Всего имеется (n")' произведений многочле- нов. Каждое из произведений многочленов является сверткой и может быть вычислено с помощью подходящего алгоритма. Одним из таких алгоритмов является алгоритм Винограда вычисления свертки. Для полного вычисления свертки алгоритмом Агарвала Кули надо применить также алгоритм Винограда вычисления свертки по второму измерению. Но сначала остановимся и оце- ним сложность этих промежуточных вычислений. Пусть М (1) и А (l) обозначают соответственно число сложений и число умно- жений, необходимых для вычисления свертки с помощью име- ющихся в некоторой доступной библиотеке алгоритмов вычисле- ния циклической свертки. Тогда для вычисления двумерной свертки необходимо (n")' М (n') умножений и (n")' А (n') + + (и" ‒ 1) и "и' сложений. Эти вычисления можно выполнить даже еще лучше, воспользовавшись алгоритмом Винограда вычи- сления свертки и вдоль второй оси. Так как алгоритм Винограда вычисления свертки представляет собой тождество, содержащее сложения и умножения, то можно заменить в нем арифметические элементы многочленами. Следо- вательно, с;- (х) можно вычислить за М (n") умножений много- членов и А (n") сложений многочленов, а для выполнения каж- дого умножения двух многочленов потребуется М (n') арифме- тических умножений и А (и') арифметических сложений, так что всего получится М (n") М (n') арифметических умножений и М (n") А (n') + А (n") М (n') арифметических сложений. Число сложений не является симметричной функцией относительно параметров и' и и", чем можно воспользоваться для минимизации числа сложений. Аналогично если длина и циклической свертки является произведением трех или более взаимно простых множителей, 
374 ГЛ. 11. SblCTPblE AJIPOPHTMbl Чи~~о умноженцй Длина преобразования Рис. 11.5. Характеристики некоторых алгоритмов Агарвала ‒ Кули вычисления циклических сверток. (Используются алгоритмы коротких сверток, приведенные на рис. ! l. 1.) то алгоритм Агарвала ‒ Кули позволяет преобразовать эту свертку в трехмерную или многомерную циклическую свертку и вычи- слять по каждому отдельному измерению циклическую свертку с помощью алгоритма Винограда. Структуру многомерной циклической свертки можно описать через одномерные циклические свертки также с помощью кроне- керовского произведения (кронекеровское произведение будет описано в ~ 11.5). На рис. 11.5 приведена таблица мультиплика- тивной сложности некоторых алгоритмов Агарвала ‒ Кули вычи- сления циклической свертки в полях характеристики 2. 1l.5. АЛГОРИТМ ВИНОГРАДА БЫСТРОГО ПРЕОБРАЗОВАН ИЯ ФУРЬЕ Отличный от рассмотренного ранее метод вычисления быстрого преобразования Фурье дается БПФ-алгоритмом Винограда. Этот алгоритм основывается на четырех отдельных идеях: алгоритме Рейдера, описанном в $ 11.2 алгоритме Винограда вычисления коротких сверток, схеме индексации алгоритма Гуда ‒ Томаса для простых множителей, гнездовом алгоритме Винограда (см. 2 3 4 5 6 7 9 10 14 15 21 35 45 63 105 315 630 1 260 3 4 9 10 12 13 19 30 39 40 76 130 190 247 520 2 470 7 410 22 230 
! 1.6. АЛГОРИТМ ВИ НОГРАДА 37б ниже). БПФ-алгоритм Винограда лучше БПФ-алгоритмов Кули Тычки и Гуда ‒ Томаса по числу умножений, но сложнее по структуре. 3а уменьшение числа умножений приходится платить усложнением индексации и использованием операций отобра- жения. БПФ-алгоритм Винограда подразделяется на малый БПФ- алгоритм Винограда и большой БПФ-алгоритм Винограда. К ма- лому алгоритму относятся преобразования, длина которых равна малому простому числу или степени малого простого числа. Боль- шой БПФ-алгоритм Винограда объединяет малые БПФ-алгоритмы Винограда, чтобы получить преобразование на большой длине '). Первым шагом является построение малого БПФ-алгоритма Винограда. Если и малое простое число, то воспользуемся алгоритмом Рейдера, сводя вычисление преобразования фурье к вычислению циклической свертки, которую в свою очередь вычислим с помощью алгоритма Винограда вычисления коротких сверток. В общем случае уравнения выписываются непосред- ственно, так что выбирать слишком большие и непрактично. В алгоритме Рейдера сведения дискретного преобразования Фурье к свертке используется только переиндексация; на этом шаге не требуется никаких сложений и умножений. Структура алго- ритма вычисления свертки включает сначала сложения, потом умножения и затем опять сложения. Если и представляет собой степень малого простого числа, то можно использовать ту же самую процедуру, заменив алгоритм Рейдера некоторым более общим алгоритмом, который мы рассматривать не будем. Построим алгоритм Винограда вычисления пятиточечного БПФ в поле GF (16), находящий величины 4 V; = f и11'о„ / = О,..., 4, и = ао. i=0 Воспользуемся рассмотренным ранее (см. ( 9.8) алгоритмом Рей- дера, сводящим пятиточечное преобразование Фурье к свертке Ь (х) = g (x) а (х) (mod хо 1), где g(x) 7 3+. 11.3+ 13х+ а14 43 (X) = VgX + V4X + V3X + V1> (x) (~з Vg) x' + (V4 Vg) x' + (V! Vg) x + (V1 Vî). ') Такое сведение преобразования Фурье tta большой длине к совокупности преобразований Фурье иа л1еньших длинах получило название гнсздового алго- ритма Вииограда. ‒ Прим. перев. 
Я7Я ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ Здесь многочлен g (х) фиксирован, многочлен а (х) получается из многочлена v (х) перестановкой коэффициентов с отбрасыва- нием, а многочлен V (х) получается из многочлена Ь (х) без от- брасывания коэффициента. Малый пятиточечный алгоритм Винограда вычисления БПФ получится, если для вычисления произведения g (х) а (х) восполь- зоваться алгоритмом Винограда вычисления короткой свертки. Обращаясь к таблице на рис. 11.2, находим алгоритм Винограда вычисления четырехточечной циклической свертки, содержащий девять умножений. Воспользуемся этим алгоритмом для построе- ния алгоритма преобразования Фурье. Соединим операции пере- индексации алгоритма Рейдера с матричными операциями алго- ритма свертки, выполняя соответствующие перестановки строк и столбцов. Далее, так как коэффициенты многочлена g (х) яв- ляются фиксированными константами поля GF (16), то произ- ведение g на соответствующую матрицу можно вычислить заранее. Внеся все эти цзменения в алгоритм четырехточечной свертки и присоединяя к нему компоненты V, и vo, получаем малый пяти- точечный алгоритм Винограда БПФ. На рис. 11.6 приведена запись этого алгоритма в матричном виде: V = ВРАЧ. 1000000000 1101100001 1010100 I P l ~0011 000 11 10100100 Vo V, ~2 V3 V4 '1 1111 11 О1ООО 01001 01001 01 iOO 01010 01111 01111 01111 01111 aIO ~14 а" Ф Рис. 11.6. Малы6 иятиточечный алгоритм Винограда вычисления ~пф. Отметим, что матрица А предварительных сложений и матрица В последующих сложений не являются квадратными. Пятиточеч- ный входной вектор перед выполнением покомпонентного умно- жения вытягивается в десятиточечный, задаваемый матрицей Р. Первая строка матричного равенства связана с вычислением ком- поненты V, и не содержит умножений. Остальные девять строк определяются алгоритмом четырехточечной циклической свертки. Одна из констант, на которую происходит умножение, равна еди- 
11.5. АЛГОРИТ~~ ВИ НОГРАДА 377 нице, так что «а самом деле приходится выполнять только восемь ум ноже пи Й ') . Рассмотренный способ реализации малого БПФ-алгоритма Винограда можно использовать в случае, когда и является про- стым числом. Можно также построить малый БПФ-алгоритм Ви- нограда, когда ~г является степенью малого простого числа. Вообще говоря, пользоваться малыми БПФ-алгоритмами Вино- На самом же деле использование алгоритма Рейдера сведения ЯПФ простой длины к циклической свертке позволяет построить алгоритм 5-точечного БПФ, содержащий всего пять умножений. А именно для произвольных многочленов а (х) = ао+ а1х+ азх + азхз и Ь (х) =- bo+ Ь,х+ box + bsx~ алгоритм 4- точечной циклической свертки с (х) = с, + с,х+ с~х~+ с хз = а (х) b (х) (mod (х4 ‒ l)) перепишем в виде 3 со ‒ ‒ (ap + аг) (Ьо + Ьо) + Ьг f аг + i 0 3 + (ap + а.,) (Ьг + Ьг) + аг Q~ Ь;, i 0 3 3 с, )- с. = (Ь, +- b.) g ц +- (a, -)- ) f b;. i=0 i=0 cp + сг + сг = (Ьо + Ьг) (ао + аг) + b~ f а; + с=О 3 +( + )(Ь*+Ь.)+" g b;, i=0 3 ' 3 го+ гг+сг+ го = f а; f b~ , с=О i =-0 В рассматриваемом случае Ь (х) а + азх + а~х"" + а'х", и, следовательно, 3 в силу тождества ддя ядра, ~ b; = 1, так что ио сувгесгву эти уииожеиия от- i 0 сутствуют, и приходится выполнять только пять умножений. ‒ Прам. перев. ') Заметим, что для построения 5-точечного,'.[ПФ с девятью умножениями достаточно воспользоваться только тем, что ядро а ЯПФ длины 5 удовлетво- ряет тождеству ! + а+ а2+ а" + а4 = О. Эго позволяет организовать вы- числение величииы Vj ‒ ~; Оа ~~ в полях характеристики 2 (последнее, %14 ij. впрочем, несущественно) следующим образом: Vo = uo+ ~)1+ us+ ~з+ и4 V = (~о + "1) + ("1 + "4) а + ("з + "4) а~ + ("з + ~)4) а V~ = ( о+ u4) + ( + v4) + (us+ .) а'+ ( з+ u4) а, ~з = (~о + М + (ui + "4) а + (~а+ u4) а + (~з + ~'4) а ~4 uo+ ~о+ ~1+ ~а+ ~з. 
378 ГЛ. !1. БЫСТРЫЕ АЛГОРИТМЫ града можно только при малых длинах. Г1ри больших длинах преобразований предпочтительнее алгоритмы с менее четкой структурой, хотя бы и за счет некоторого увеличения числа умно- жений. Этим требованиям удовлетворяет большой БПФ-алго- ритм Винограда. В общем случае БПФ-алгоритм Винограда строится для дли- ны п, равной произведению простых чисел или степеней простых чисел. Рассмотрим случай двух множителей, когда п = и'n". Воспользуемся алгоритмом Гуда ‒ Томаса для преобразования п-точечного преобразования Фурье в двумерное (n' X n")-точеч- ное преобразование Фурье. Отдельные компоненты этого дву- мерного преобразования Фурье могут быть вычислены с помощью соответственно и'-точечного и и"-точечного алгоритмов Винограда. Сначала выполняется и'-точечное преобразование Фурье каждой строки, а затем и"-точечное преобразование Фурье каждого столбца. Перед БПФ-алгоритмом Винограда выполняется, однако, еще один шаг. Так как не существенно, применяется ли преобразова- ние Фурье сначала к строкам или сначала к столбцам двумерного блока, то представляется возможным как-то их совместить. Именно это и делает БПФ-алгоритм Винограда. Он совмещает вычисления преобразований строк и столбцов, уменьшая при этом число умножений. Этот метод использует кронекеровское произведение матриц. Сделаем перерыв в изложении, чтобы вве- сти определение кронекеровского произведения матриц и дока- зать одну важную теорему. После этого мь1 сможем завершить построение БПФ-алгоритма Винограда. Определение 11.5.l. Пусть А = (ад) и В = (b;,) ‒ матрицы соответственно размеров 1 х К и J x L. Тогда кронекеровским произведением матриц А и В, обозначаемым А х В, называется матрица, содержащая I J строк и 7L столбцов, у которой на пересечении строки с номером (~ ‒ 1) 1 + j и столбца с номе- ром (/г ‒ 1) L + 1 стоит элемент с;, ~I ‒ ‒ a«b~>. Чтобы проще понять структуру кронекеровского произведе- ния матриц, следует представить матрицу А х В в виде (1 х К)- таблицы, состоящей из (1 x L)-блоков, (~, k)-й из которых ра- вен а«В. Непосредственно из определения вытекает, что кроне- керовское произведение матриц некоммутативно, но ассоциативно: А х В + В х А, (А х В) х С = А (В х С). Элементы матриц А х В и В х А одни и те х<е, но упорядо- чены по-разному. Очевидно также, что кронекеровское произ- ведение дистрибутивно относительно обычного сложения матриц. 
11.5. АЛ ГО РИТМ ВИ НОГРАДА 379 Следующая теорема утверждает, что кронекеровское произ- ведение двух произведений матриц равно матричному произве- дению кронекеровских произведений соответствующих матриц. Теорема 11.5.2. если все матричные произведения определены, mo кронекеровское произведение удовлетворяет равенству (А х В) (С х Р) =- (АС) х (BD). Доказательство. Пусть матрицы А, В, С и Р имеют соответ- ственно размеры 1 Х К, J X Е„К Х М и L X N. Так как ма- трица А х В содержит КЕ столбцов, а матрица С Х Р содер- жит KL строк, то матричное произведение (А х В) (С х Р) определено. Оно содержит 1У строк, которые мы занумеруем парами (i, j), и MN столбцов, которые мы занумеруем парами (и, n). Элемент, стоящий на пересечении строки (~, j) и столбца (и, п), равен ,'Уц~а;дЬ,,c>d,„. Так как матрица АС содержит I строк и М столбцов, а матрица ВР содержит ./ строк и L столб- цов, то матрица (АС) X (BD) также является (П X KL)-матри- цей. Стоящий на пересечении (i, j)-строки и (т, n)-столбца эле- мент этой матрицы равен Z й[у~сдщ Z Ь|(ду,1 = f й;дЬ|!СйтАп г k ! k. l что и завершает доказательство. 0 Кронекеровское произведение матриц применяется в теории преобразования Фурье. Пусть W' и %" матрицы преобразова- ния Фурье соответственно длин и' и и'. Тогда Ч' = W'v' н Ч" = W""v" являются соответственно матричными записями преобразований Фурье o' ‒ 1 и Vi = Д у и;. i=0 Двумерное (n' X n")-преобразование Фурье двумерного сигнала <u;;-) получается применением преобразования W' к каждой строке с последующим применением преобразования W" к каж- дому столбцу. Считывая двумерный (n' x n")-сигнал по строкам, можно преобразовать его в одномерный. (Возможно, что двумер- ный сигнал был предварительно сформирован из одномерного с помощью китайской теоремы об остатках. Считывание такого сигнала по строкам дает новое одномерное представление этого сигнала, которое получается из исходного одномерного сигнала перестановкой его компонент.) Если предполагать, что одномерные и'и"-точечные векторы (ц;.) и [V<;-} упорядочены описанным выше способом, то 
ЯЯ() ГЛ. 11 ° БЫСТРЫ E АЛГОРИТМЫ двумерное преобразование записывается через крон екеровское произведение в виде Ч =(W' x W")v. Для алгоритма Винограда преобразований длин и и и имеет место матричное разложение W' = В'0'А' и W" = В" 0"А", где А', А", В' и В" ‒ матрицы целых чисел рассматриваемого поля, а D' и D" диагональные матрицы над GF (q). Умножения на O' и 0" описывают все умножения, которые приходится вы- полнять в алгоритме Винограда. Положим W = O' х %" и дважды применим теорему 11.7.2: W = (B'D'А') х (В" D"А") = = (В' х В") (D' х D") (А' х А') = BDA, где кронекеровские произведения В = В' х В" и А = А' х А" содержат только элементы из поля GF (p), а кронекеровское про- изведение 0 = 0' Х 0" опять является диагональной матрицей над GF (q). Следовательно, мы опять получили n'n"-точечное преобразование Фурье в форме алгоритма Винограда БПФ. Это дает способ построения большого алгоритма Винограда БПФ из малых. Из приведенного описания матрицы W видно, что такое пре- образование предполагает предварительную запись (с помощью алгоритма Гуда ‒ Томаса для взаимно простых множителей) и'и"-точечного одномерного преобразования в виде двумерного преобразования с последующим считыванием преобразуемого двумерного вектора по строкам в виде одномерного и'и"-точеч- ного вектора Ч. Следовательно, описанный способ вычисления n n'-точечного преобразования Ч =- (BDA) v предполагает пред- варительную перестановку компонент вектора v и вычисление компонент вектора Ч также в переставленном порядке. Но по- скольку вид матриц А и В известен, то тривиальная переста- новка столбцов матрицы А и строк матрицы В позволяет выписы- вать компоненты векторов v и Ч в их естественном порядке. Пусть М (n') и М (n") означают соответственное число умно- жений, необходимых для выполнения и'- и и"-точечного БПФ по алгоритму Винограда. Тогда число М (n) умножений, необ- ходимых для вычисления и'и"-точечного преобразования по алгоритму Винограда, равно примерно М (n') М (n"). Более точно, dim D = (dim D') (dim D ), 
11.6. УСКОРЕН Н Ы И АЛГОРИТМ БЕРЛ ЕКЭМПА ‒ МЕССИ 881 и величины М (n'), М (n") и М (n) не превосходят размеров ма- триц 0', 0" и 0 соответственно, так как один или более эле- ментов диагональных матриц могут оказаться равными еди- нице. Если учитывать все умножения диагональных матриц, включая и умножения на единицу, то получаем простую фор- мулу М (n) =‒ - М (n') М (n ). 11.6. УСКОРЕННЫЙ АЛГОРИТМ БЕРЛЕКЭМПА‒ МЕССИ В описанном в ~ 7.4 алгоритме Берлекэмпа ‒ Месси требуемое число умножений на r-й итерации примерно равно удвоенной степени многочлена Л~'> (х). Так как степень многочлена Л<'> (х) имеет порядок r и в типичном случае равна rl2, а алгоритм содер- жит 2t итераций, то для его выполнения необходимо 2t умноже- ний и примерно столько же сложений. Это квадратичная функ- ция t. Кратко говорят, что алгоритм Берлекэмпа ‒ Месси содер- жит число умножений порядка г"-, или, формально, О (Р) умно- жений. Для очень длинных кодов и большого t число умножений в алгоритме может стать обременительным. В настоящем пара- графе рассматривается метод уменьшения вычислительной слож- ности алгоритма для длинных кодов при большом числе 1 исправ- ляемых ошибок. Ускоренный алгоритм обосновывается следующим образом. На начальных итерациях алгоритм Берлекэмпа ‒ Месси в частот- ной области содержит умеренное число умножений порядка сте- пени многочлена Л (х). Но степень многочлена Л (х) возргстает до существенной доли длинь~ и, и, таким образом, среднее число умножений на итерацию имеет порядок и. Преимущества уско- ренного алгоритма связаны попросту с тем, что на ранних шагах несколько итераций в частотной области выполняются одновре- менно. После такого пакетного выполнения нескольких итера- ций полученный промежуточный результат используется для мо- дификации синдрома путем ввода в него вычисленных в этом пакете многочленов Л (х) и В (х). Следующий пакет итераций начинает выполнение алгоритма Берлекэмпа ‒ Месси, сначала используя в качестве синдрома вычисленный модифицированный синдром и полагая в начальный момент Л (х) равным 1. Ускорен- ный декодер эффективен для декодирования длинных, но все еще практически применяемых кодов. В следующем пара- графе будут рассмотрены другие, даже более эффективные де- кодеры. 
38Я ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ Построение начнем с более компактной организации алгоритма Берлекэмпа ‒ Месси. Заменим многочлены Л<'> (х) и В<'> (х) (2 X 2)-матрицей из многочленов Л<" ,(х) Л<',> (х) Л<1> (х) Л<',> (х) Для обозначения элементов матрицы Л<'> (х) нам понадобится несколько индексов; символ Л<;>, будет означать j-й коэффициент многочлена, стоящего на пересечении строки а и столбца b в r-й итерации. Напомним, что вычисления алгори1ма Берлекэмпа Месси основываются на двух равенствах: П ‒ ! л,= ~ л," '>s,, /=0 Л<' ‒ '> (х) В<' ‒ '> (х) Л<'> (х) 1 Л,х В<'> (х) Л,'6, (1 ‒ 6,) х Второе равенство можно записать в виде Л<'> (х) ' 1 Л<х В<'> (х),, А< 6< (1 ‒ 6<) х 1 1 Определим матрицу Л<'> (х) равенством 1 ‒ Ь<х ."()=п Через эту матрицу можно выразить многочлены Л<'> (х) и В<'> (х): Л<'> (х) 1 Л<',> (х)+Л<',> (х) = Л~) ~x~ В<'> (х) ' ' 1 Л<;> (х) +Л<',> (х) Полученное равенство может быть использовано как для вычисле- ния Л<'> (х), так и для вычисления многочленов Л<'> (х) и В<'> (х). Непосредственное вычисление матрицы Л<" (х) содержит вдвое больше умножений, так как вместо двух элементов в вычисле- ниях участвуют четыре. Поэтому замена итераций многочленов Л<'> (х) и В<'> (х) итерациями матрицы Л<'> (х) удваивает необ- ходимое число умножений. Это ухудшение будет затем устранено реорганизацией выч ислений. В перестроенном виде алгоритм Берлекэмпа Месси основы- вается на двух уравнениях, а именно на уравнениях n ‒ 1 n ‒ I +t = g Л<>, /'~г-/ + f Л12. у ~ã ‒ / j 4) /=4) 
11.6. УСКОРЕННЫЙ АЛГОРИТМ БЕРЛЕКЭМПА ‒ МЕССИ ЩЯ 1 ‒ Ь,х Л<'> (х) =, Л<' ‒ << (х). Теперь мы хотим уменьшить число вычислений, группируя ите- рации в пакеты. Определим матрицу 1 ‒ Ь,х М<'~ (х) = так что Л<'> (л) = M<' (х) M<' ‒ <> (х) ... М<'l (х). Эго произведение должно вычисляться последовательно по одному члену, начиная справа, так как М<" (х) нельзя вычислить до тех пор, пока не вычислена Л<' '~ (х). Определим следующие частичные произведения рассматри- ваемых матриц: Л<' '> (х) = М<'~ (х) M<' ‒ <~ (х) ... М<'+<~ (х); тогда Л<'> (х) = Л<"> (х) и Л<'> (х) = Л<' '> (х) Л<'> (х). Определим также вектор модифицированных синдромных много- членов $<'i (х): S (х) S'~ (х) = Л<'~ (х) = Л<' '< (х) $<'i (х). S (х) Невязка становится равной r-му члену свертки и может быть записана через многочлены: Л (х) = A« " (х) S (х) -) A<~ " (х) S (х) = = [Л,< ' ' '(х)Л«', '(х) +Л<<2 ''' '(х) Л < '(х)] S (х) + -)- [Л[, ' ' ' (х) Л" ' (х) ~- Л,; ' ' ' (x) Л~~~ ' (x)] S (x). Группируя члены, получаем Л (х) = Л<<< ' ' ' (х) [Л<« ' (х) S (х) + A<<~ ' (х) S (х)] --,'‒ ,‒ AQ~ ' ' ' (х) [ИР< '(х) Я(х) , 'Л~~~ ' (<) S (x)]. 
384 ГЛ 11° . BblCTPblЕ АЛГОРИТМЫ Стоящие в квадратных скобках многочлсны являются компонен- тами вектора S<'i (х) модифиц«рованиых спндромных мно(о- членов. Следовательно, выражение для невязкц можно перепи- сать в виде Г-- Г' Д = Ъ' Л"-' ')З". -- Ъ' Л(' "')З"'). r ‒ ~! II, у I, r- у ) i'. I'~. j 2, Г--j~ у=-о р..-О где S<",~; и ЯГ'; обозначают соответственно j-e коэффициенты многочленов в первой и второй компонентах вектора S<'< (х). Для ускорения алгоритма Берлекэмпа ‒ Мессн сформируем па- кеты по т итераций в каждом. Если т делит 2/, то обращение к каждому из 2//г пакетов одинаково. В противном случае послед- ний пакет содержит меньше т итераций, но мы иолагаем его та- ким же. Индекс r теперь пробегает значения r = 1, 2, , т, т + 1, , 2т, 2.г + 1, ..., Зт, Зт+ 1,,... На г-й итерации Й-го пакета модифицированный алгоритм Бер- лекэмпа Месс» вычисляет A<' " (х) согласно равенству 1 ‒ Ь,х л('') (х) =, л('-' ') (x), Л,'6, (1 -- 6) х где r' = Йт, а Л, вычисляется по формуле Г Г/ Г ‒ Г д = v Л(' ! ')8(') - V Л( -1 ')8(') . р ~~~ II, j I,r ‒ у ! ~ I~, ,j 2,Г--у /=-о у=о В конце Й-го пакета, когда r равно (k + 1) т, матрица локаторов ошибок и вектор модифицированных синдромных многочленов даются соответственно равенствами Л<'> (х) = A<' '< (x) Л<'1(х) и S<'> (x) = A<''> (х) S<'> (х), где r' = Йт и г = (k + 1) т. Теперь ускоренный алгоритм готов начать (Й + 1)-й пакет. На рис. 11.7 приведена блок-схема ускоренного алгоритма Берлекэмпа ‒ Месси с некоторыми очевидными сокращениями. В левой части рисунка приведен стандартный алгоритм, расписан- ный для т итераций, а в правой показаны блоки, осуществля- ющие связку пакетов по т итераций каждый. Если правая часть алгоритма выполняется так, как ока выписана, то мы не получаем никакой экономии вычислений. Однако умножения многочленов в блоках правой части эквивалентны сверткам, которые могут быть эффективно вычислены с помощью описан- ных в $ 11.1 и 11.3 методов или с помощью быстрого преобразо- вания Фурье и теоремы о свертке. Некоторые возможности ил- люстрируются следующим примером. 
11.6. УСКОРЕННЫЙ АЛГОРИТМ БЕРЛЕКЭМ ПА ‒ МЕССИ 385 L =k=r=0, Л'(х) ~- ~ Hem k+- k+ 1 р +-r+ 1 Ь', -Ь4Дг Hem Ь,=О 9 Hem Да 2L Cr- I 9 6=! L 6(r-L)+(1-6}L Л'(х) Л'(х) 6 (1 6)õ ~ „, ~6~, + (1 ‒ 6) 4,„ Л(х) Л'(х) Л(х) Hem Да r= 2t 9 л(х) ~A«(g) + Лц(х) 0вм 13 P. Блер! хут Начальные S(.} = r ~(~} ~ ~начеиня: QS(x)J Л(х) =~ r =(k+ 1}'г Да 9 I I Д,=ХЛн у,.;+ZA]g, Sr) / Алгароам берлекэмпа- MeccU ~ ~ ~ ~ ~ ~ ~~ ~ ЮВЮ~ ~~ ~ Рис. 11.7. Ускоренный алгоритм Берлекэмпа ‒ Месси. Я(х) ~- A'(х) S(x) Л(х) - Л (х)Л(х) 
ЩЯ ГЛ. 1I БЫСТРЫЕ АЛГОРИТМЫ Расширенный (4096, 2048)-код Рида ‒ Соломона над GF (2"') имеет скорость, равную li2, и позволяет исправлять все конфи- гурации ошибок из 1024 12-битовых байтов. В типичных случаях алгоритм Берлекэмпа ‒ Месси содержит 2t'- (или 2 097 152) умно- жений 12-битовых чисел поля GF (2"), а для наихудших конфи- гураций ошибок это число может возрасти в 1,5 раза. Ускоренный алгоритм позволяет провести вычисления лучше. Подсчитаем число операций для несколько видоизмененного варианта ускоренного алгоритма Берлекэмпа ‒ Месси. Вместо того чтобы формировать пакеты одинакового объема, делая раз- ветвления алгоритма через каждые т итераций, будем строить разветвления в те моменты, когда степень многочлена Л (х) достигнет предписанного предела. А именно будем формировать новую ветвь алгоритма тогда, когда степень одного из много- членов, входящих в матрицу Л (х), станет равной 128, и закончим процесс формирования ветвей после 2048 итераций. В случае когда происходит точно 1024 ошибки, алгоритм будет содержать восемь разветвлений, каждое из которых будет выполнять 128 ите- раций. Именно этот случай мы сейчас проанализируем. В течение каждой итерации требующееся для выполнения вычислений, показанных слева на рис. 11.7, число умножений примерно вчетверо больше степени многочлена Л' (х), вычисляе- мого при этой итерации. Это вдвое больше числа умножений, необходимых в исходном варианте алгоритма Берлекэмпа ‒ Месси. Следовательно, в каждом ответвлении алгоритма имеется при- мерно т' итераций, выполняющих вычисления, указанные на ле- вой части рис. 11.7. Всего имеется восемь ветвей, и х равно 128; таким образом, выполнение всех ветвей алгоритма содержит 524 228 умножений. К этому надо прибавить число умножений, необходимых для вычисления указанных в правой части рис. 11.7 сверток, объединяющих вычисленные пакеты. Для вычисления этих линейных сверток воспользуемся алгоритмом 315-точечной циклической свертки, содержащим 2470 умножений. Этот алго- ритм представляет собой алгоритм Агарвала ‒ Кули вычисления свертки, построенной из трех алгоритмов вычисления коротких сверток, длины которых соответственно равны пяти, семи и де- вяти. После каждого ответвления надо вычислять член вида Л (x)S(x), где степень многочлена S (х) равна 2048 Йт, а степень много- члена Л (х) равна 128. Воспользуемся методом перекрытия с на- ком плени ем и алгоритмом 315-точечной ци кли ческой свертки. Это даст нам 315 ‒ deg Л (х) = 187 правильных выходных точек линейной свертки Л (х) S (х). Яля вычисления 2048‒ 256 точек алгоритм циклической свертки придется применить 10 раз. Так как Л' (х) S (х) содержит четыре линейные свертки, всего потребуется 40 обращений к алгоритму циклической свертки. 
ll 7. РЕКУРРЕНТНЫЙ АЛГОРИТМ БЕРЛЕКЭМПА ‒ МЕССИ 387 Продолжая таким образом, всего получим 168 обращений к алгоритму циклической свертки, что в итоге дает 480 480 умно- жений. После выполнения каждого пакета из 128 итераций необходимо также вычислить матричное произведение Л' (х) Л (х). Разбивая в матричном произведении длинные свертки на короткие и про- водя вычисления, аналогичные проделанным, приходим к 216-крат- ному обращению к алгоритму 315-точечной циклической свертки. Полное число умножений, необходимых для рассматриваемого декодирования (4096, 2048)-кода Рида ‒ Соломона, получается сложением этих трех величин. Всего получаем 1 462 768 умноже- ний против 2 097 152 необходимых при непосредственном исполь- зовании алгоритма Берлекэмпа Месси. 11,7. РЕКУРРЕНТНЫИ АЛГОРИТМ БЕРЛЕ КЭМПА ‒ МЕССИ Можно построить декодер, еще более эффективный, чем рассмо- тренный в предыдущем параграфе. Такой улучшенный декодер представляет не только практический,но и теоретический интерес, так как позволяет доказать, что асимптотическая сложность де- кодирования кодов Рида ‒ Соломона не превосходит величины О (n log' п) (и очень близка к величине О (n log n)). Этот алгоритм не только обладает хорошими асимптотическими свойствами, но и практически пригоден для кодов с умеренной длиной. Яля простоты в основном будем рассматривать случай, когда 2t равно степени двух. Пусть длина 2t = 2Р. Рекуррентный алго- ритм сводит задачу длины 2Р к двум задачам длины 2~ ‒ ', которые сочленяются с помощью алгоритма 2~ '-точечной свертки. Каж- дая из этих двух подзадач в свою очередь расщепляется на две подзадачи. Это продолжается до тех пор, по'а не получается задача, состоящая из одной итерации. Если каждая подзадача аналогична исходной задаче, то алгоритм допускает рекуррентную реализацию. В случае, когда 2t не является степенью двух, имеется не- сколько способов модификации процедуры. Один из них состоит в представлении числа 2t в виде произведения простых множите- лей. Если р~ представляет собой 1-й множитель, то на 1-м уровне задача подразделяется на р~ подзадач вместо двух. В остальном алгоритм не меняется. Второй способ состоит в замене числа итераций наименьшей степенью двух, превосходящей число 2t, и разбиении задачи на каждом уровне пополам. В каждый момент обращения к проце- дуре проверяется, превысил ли счетчик общего числа операций величину 2t. Если превысил, то итерация не выполняется и алго- 13' 
388 ГЛ. БЫСТРЫЕ АЛ ГОР ИТМ bl ритм декодирования переходит к своему следующему шагу. В остальном алгоритм не изменяется. Формулировка шага рекуррентной процедуры становится оче- видной, если заметить, что описанные в предыдущем параграфе вычисления величин Л„и Л<' ~'> по величине $<~'> (х) в точно- сти совпадают с процедурой теоремы 7.4.1 с заменой 2t на т, Л<'> (х) на Л<' "'> (х) и вектора синдромных многочленов S (х) на $<~'> (х). Следовательно, для вычисления Л<' ~'> (х) можно воспользоваться тем же алгоритмом, что и для вычисле- ния Л<"> (х). Этот рекуррентный алгоритм, названный процедурой БерМес, приведен на рис. 11.8. Процедура использует самое себя. Она содержит стековую память '), в которой при переходе с одного уровня на другой временно запоминаются данные одного уровня. Поведение алгоритма на следующем уровне ничем не отличается от его поведения на предыдущем уровне, но в стеке записываются другие данные. В конце концов задача сводится только к одной итерации, и ее уже нельзя разделить пополам. Тогда процедура БерМес состоит просто в выполнении этой итерации и алгоритм возвращается в надлежащую точку. Каждый раз при обращении процедуры БерМес к самой себе необходимо запоминание локальных переменных в стеке. Если в начале алгоритма решение задачи требует 2~ итераций, то глу- бина рекурсии равна р: имеется р уровней рекуррентного алго- ритма. Объем стека должен быть достаточно велик для того, чтобы содержать все временные множества переменных. Алгоритм проходит 1-й уровень 2~ раз: нулевой уровень один раз, первый уровень два раза и т. д.', последний уровень проходится 2>' раз. Выполняемое íà l-м уровне вычисление $(х)- - Л' (х) S (х) содержит четыре умножения многочленов. Степень многочленов Л' (х) равна примерно 2<1 ' ' 1, и они умно- жаются на многочлены степени 2~ ‒ '+' 1. Необходимо пра- вильно вычислить только 2<' ‒ ' коэффициентов произведения многочленов, а именно коэффициенты, стоящие при степенях переменной от х'~ до х"-Р ', так как только эти коэффи- циенты входят в вектор S (х), используемый при втором обраще- нии к процедуре БерМес. На 1-м уровне вычисляется также ма- тричное произведение Л'(х) Л (х), которое содержит произведе- ния многочленов степени 2' ‒ ' ‒ ' каждый. Число умножений в процедуре БерМес почти полностью опре- деляется свертками, так как итерации алгоритма Берлекэмпа ') Стековая память (push-down stack) ‒ устройство памяти, считывание данных из которой начинается с вершины и производится в порядке, обрат- ном порядку записи («пришел последним ‒ обслуживается первым»). ‒ Прим. перев. 
Cmobs Вход в ~роцебурц берМес 8ыхоб из вроцебуры берМес Рнс. 11.8. Процедура ВерМес. 
ЯЯ() ГЛ ° ]1 ° БЫСТРЫЕ АЛГОРИТМЫ Число вь!ччсленц0 сверакц Л(х) Л(х) Чкло ВЬ~чКЛЕн11Ц сверено A'(x) S(x) Число ~ ~®> 4eg S(s) Длина црОЕЕнЬ СдращЕНОИ 4Е9 "®> 1!! СВЕрВКи Число умноженцц 8 2х8 4х8 8х8 16х8 32 х8 64 х8 !28 х8 256х8 512 х8 8 2х8 4х8 8x8 16 х8 32 х8 64 х8 128 х8 '56х8 355 680 '37 1'О 158 080 1-19 760 99 840 66 560 778 4 38 912 36 864 1' '88 511 255 127 63 31 15 7 3 1 о О 1260 630 315 140 70 35 21 9 4 ! 2 4 8 1Ь 32 64 128 256 512 1024 2041 10 3 511 255 127 63 31 l5 7 3 1 I 1 3 4 5 6 7 8 9 l0 11 232 928 Рис. 11.9. Подсчет числа умножений в процедуре БерМес. Месси фактически выполняются только на конечном шаге, на ко- тором все подалгоритмы алгоритма содержат по одной итерации и только по одному умножению (на Л '), которым при подсчете общего числа умножений можно пренебречь. Вычислительная сложность процедуры БерМес определяется непосредственно вы- числительной сложностью алгоритмов свертки. Успех ее исполь- зования предполагает наличие хорошего набора алгоритмов свертки. На рис. 11.Я приведены результаты подсчета числа умножений в рекуррентном алгоритме декодирования применительно к тому же (409á, 2048)-коду Рида ‒ Соломона, который был рассмотрен в предыдущем параграфе. Для вычисления циклических сверток в обеих половинах использовались метод перекрытия с накоп- лением и одна из коротких сверток, приведенных на рис. 11.5. Выписанные на рис. 11.9 детали расчетов являются убедитель- ным свидетельством сложности структуры рассматриваемого ал горитма. Эга структура, однако, позволяет разумно исполь- зовать вычислительные ресурсы при программной и аппаратур- иой реализации отдельных фрагментов. По мере необходимости она вызывает ал горитмы свертки из библиотеки таких алгоритмов. В общем случае алгоритм Берлекэмпа ‒ Месси, содержащий 21 итераций, имеет измеряемую числом умножений вычислитель- ную сложность порядка (log, 2t) С (t), где С (t) число умноже- ний. необходимое для вычисления свертки двух многочленов степени f. Это объясняется тем, что к 1-му уровню алгоритм обра- щается 2' раз, причем длина выполняемой на 1-м уровне свертки равна 2 '1. С)1ожность вычисления 2' сверток длины 2 't каждая 
11.6. УСКОРЕННОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ 391 принимает наибольшее значение при 1, равном нулю для всех log> 21 значений. Граница асимптотической сложности алгоритма зависит от асимптотической сложности вычисления свертки в полях Галуа. Напомним, что в алгоритме Винограда вычисления свертки тре- буется по возможности наличие простых делителей над полем GF (р). Для минимизации числа умножений показатели степени этих делителей надо выбирать малыми. Но если и велико, то мо- жет не оказаться достаточного числа многочленов малой степени и будет необходимо воспользоваться многочленами степени по- рядка log и. Это приведет к замене свертки длины и некоторым количеством сверток, наибольшая длина которых имеет порядок log и. Эгот же процесс приведет к замене свертки длины log u некоторым количеством сверток меньшей длины, самая длинная из которых имеет порядок длины, равный log (2 log и). Формали- зуя это рассуждение, можно сказать, что асимптотическая слож- ность вычисления свертки в поле Галуа равна величине О (n2"и' "), где log* и число, показывающее, сколько раз надо последова- тельно проинтегрировать логарифм по основанию 2, начиная с п, для того, чтобы получить число, не превосходящее единицы. Таким образом log, (log, (... (log, п))) ~ l, и число шагов в этом итеративном процессе равно log* и. Вели- чина 2"~'" стремится к бесконечности медленнее, чем итериро- ванный любое число раз логарифм. Лучшая известная граница числа С (п) имеет вид О (n2' а'"), и, следовательно, сложность рекуррентного ал горитма Берле- кэмпа Месси оценивается величиной О (n2"а' " log и). Таким образом, сложность рекуррентного алгоритма Берлекэмпа ‒ Месси больше, чем О (n log и), но очень близка к этой границе. 11.8. УСКОРЕННОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ Сейчас мы рассмотрим применение разработанных в предыдущих параграфах методов для построения ускоренного декодера. До- статочно рассмотреть только примитивные ') коды Рида †Соло- мона. Коды БЧХ и непримитивные коды Рида Соломона деко- дируются таким же образом. Исправляющий t ошибок примитив- ньш код Рида Соломона длины и = д 1 представляет собой ') Напомним, что автор называет примитивными кодами Рида ‒ Соломона коды над GF' (q~) длины п =- q~ ‒ I. а иепримитивными ‒ коды, длина ко- торых делит это n. ‒ Прим. иерее. 
39Я ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ множество всех кодовых слов длины п над GF (q), для которых 2t последовательных компонент спектра равны нулю. Работа декодера основывается на преобразовании Фурье при- нятого слова v. В типичных случаях сложность преобразования Фурье имеет порядок и log u. Равенство нулю 2t последовательных компонент спектра С определяет 2t компонент синдрома S; = Е; = V;, j = 1, ..., 2t. Многочлен локаторов ошибок Л (х) ‒ П(1 ‒ ха «), k i где ч < t ‒ число действительно произошедших ошибок, удовлет- воряет равенствам t g Л;Е«, ‒‒ О. j~ Эта свертка задает систему из и уравнений относительно u ‒ t неизвестных, из которых t составляют коэффициенты многочлена Л (х), а п 2t являются компонентами вектора Е. Из этих и уравнений t уравнений связывают только известные компоненты вектора E с неизвестными коэффициентами многочлена Л (х). Используя алгоритмы свертки сложности n log, и и описанный в предыдущем параграфе рекуррентный алгоритм Берлекэмпа Месси, можно разрешить эти уравнения относительно неизвестных компонент Л со сложностью, не превосходящей О (n log,"- n). Остальные компоненты вектора E можно рекуррентно вычислить по полученному A. и известным компонентам вектора E в соответ- ствии с равенством t Е;= f Л«Е;«. k=1 Вычислив таким образом Е; для всех j, находим компоненты С; спектра кодового слова согласно равенствам С; = P Е;. Обрат- ное преобразование Фурье завершает декодирование. Для вычисления E;;, j = 2t + 1, ..., п, требуется п (n 2t) умножений, так что сложность этих вычислений имеет порядок и'. В оставшейся части этого параграфа мы покажем, как свести вычислительную сложность этого шага к величине, не превосходя- щей О (n log, и). В варианте Месси алгоритма Берлекэмпа Месси спектр вектора ошибок рассматривается не только на интервале длины и, но и периодически продолжается вне этого интервала. Соотноше- ние между многочленами Е (х) и Л (х) имеет вид Е (х) Л (х) = О (mod х~ 1). 
1!.8. УскОРеннОе декОдиРОВАние кОдОВ ьчх 393 Преобразование Фурье этой циклической свертки приводит к ра- венствам еХ~ ‒‒ О,i =O,...,n ‒ 1. Во временной области эти равенства приводят к неопределен- ностям, так как решения записываются в виде е; = О/Х; и Х; = О, когда е; + О. В таком виде эти равенства решать нельзя. Берлекэмп подходит к алгоритму декодирования несколько иначе. С точки зрения Берлекэмпа, выход регистра сдвига яв- ляется периодическим только после начального перехода. В на- чальный момент времени регистр пуст и в него вводится известный многочлен Q (х). Уравнения записываются в виде и возмущения È~, равные нулю при j ) 1, переводят регистр сдвига из начального состояния в описанное выше периодическое состояние. Спектральный многочлен Е (х) для вектора ошибок удовлетво- ряет уравнению Е (х) Л (х) = Й (х). Многочлен Й (х) можно вычислить с помощью рекуррентного алгоритма без увеличения асимптотической сложности, после чего Е (х) можно вычислить с помощью деления многочленов. Но сложность последнего шага также растет как и'. Так как выписанное выражение не является ни конечным, ни периоди- ческим, то непосредственное применение метода преобразований невозможно. Можно, однако, воспользоваться для решения задачи алгоритмом Форин. По имеющемуся Л (х) вычислим Й (х) = Е (х) Л (х) (то4 х") и формальную производную Л' (х) многочлена Л (х). Затем, применив к многочленам Л (х), Й (х) и Л' (х) обратное преобра- зование Фурье, вычислим векторы с компонентами Х;, ®; и Х;. Тогда, если Х; равны нулю, решение дается (см. задачу 11.5) равенствами е~ ‒‒ ‒ о,/Х,'. Так как алгоритм Форни можно реализовать с помощью трех алгоритмов преобразования Фурье и алгоритма свертки, то полу- чаем сложность О (n1од. n). 
Я94 Гл. 11. БыстРы е Ал гОР итмы 11.9. СВЕРТКА В СУРРОГАТНЫХ ПОЛЯ Х Вычисления в некотором поле можно производить, используя другое поле. Бывают случаи, когда необходимые при обработке сигналов задачи существенно отличаются от имеющегося набора стандартных вычислительных модулей и появляется необходи- мость подгонки данного вида вычислений к структуре другого вида. Например, может возникнуть необходимость проведения вычислений в поле Галуа с помощью поля комплексных чисел в качестве суррогатного поля. В простом поле GF (р) циклическую свертку и ‒ 1 c; = f a>b<<; ~>>, ю = 0, ..., п ‒ 1, 2=0 можно заменить сверткой в кольце целых чисел; необходимо только позаботиться о выполнении вычислений по модулю р. Вид уравнения свертки при этом сохраняется, но арифметические операции выполняются в обычной целочисленной арифметике. Затем для получения свертки в поле GF (р) найденные при вычис- лении целочисленной свертки компоненты с; надо привести по модулю р; это сводит задачу к вычислению только целочисленных сверток. Кольцо целых чисел можно далее вложить в подходящее поле, например комплексное. После этого целочисленная свертка может быть вычислена с помощью любого алгоритма свертки в поле комплексных чисел, например с помощью дискретного преобразования Фурье и теоремы о свертке. Практическое вы- числение преобразования Фурье в поле комплексных чисел реали- зуется на словах конечной длины, что вносит в вычисления ошибку округления. Однако нетрудно подобрать такую длину преобра- зования, чтобы ошибка округления в компонентах с; всегда была меньше 0,5. Тогда округление каждой вычисленной компоненты в ближайшее целое число даст правильное значение целочислен- ной свертки. Переход в каждом целом числе к вычету по модулю р даст затем правильное значение свертки в 6Р (р). Может оказаться невозможным оправдать выбор поля ком- плексных чисел в качестве суррогатного поля простым подсчетом числа умножений. Однако для поля комплексных чисел имеется доступный набор устройств вычисления свертки, и выбор поля комплексных чисел в качестве суррогатного поля можно оправ- дать возможностью выполнения данной вычислительной задачи на имеющемся устройстве. Предположим, далее, что надо вычислять свертку сигналов над полем GF (g), где g уже не является простым числом. Тогда каждое отдельное произведение элементов поля можно рассматри- вать как свертку многочленов по модулю некоторого неприводи- мого многочлена р (х). Вычисление остатка по модулю этого не- 
11.9. СВЕРТКА В СУРРОГАТНЫХ ПОЛЯХ Я9~р приводимого многочлена производится тогда, когда все свертки вычислены. Исходная свертка при этом превращается в двумер- ную свертку. Пусть а и b векторы над GF (g). Компоненты этих векто- ров задаются многочленами m ‒ 1 т ‒ 1 а,= ~апг' и Ь,= Q Ь;,z' 1=0 1=0 над простым полем GF (р), где g = р, à а;, н Ьп представляют собой неотрицательные целые числа, меньшие р. Линейная свертка векторов а и b записывается в виде ll ‒ 1 л ‒ ! m ‒ l m ‒ ! c; = f адЬ| ц =- f f f ад~Ь<, ц ~.z'+' (mod р) (mod p (х)), k= — O k=0 1=0 1'=0 где р характеристика поля, а р (х) член степени т. Введем величины л ‒ 1 т ‒ 1 <li =,~,~ <kk ~(l k) ~,' k=0 k =0 некоторый простой много- i'=О, ..., и ‒ 1, с'=О, ...,2т ‒ 1, и будем рассматривать их как двумерные свертки целых чисел; каждое число в этой двумерной таблице лежит в интервале [О, р 1]. Эта свертка может быть вычислена в любом подходя- ще суррогатном поле, например в поле вещественных чисел или в поле комплексных чисел; тогда 2т ‒ 1 с~ (z) = f cq; г' (mod р) (mod р (х)). i ''==0 Вычисление этого остатка производится в последнюю очередь; сначала находится вычет каждого целого числа по модулю р, а затем вычет многочлена c; (z) по модулю р (х). Сложность вычисления вычетов пренебрежимо мала по сравнению со слож- ностью вычисления двумерной свертки. Вместо поля комплексных чисел можно воспользоваться в ка- честве суррогатного поля любил конечным полем, даже с харак- теристикой, отличной от характеристики исходного поля. Для вычисления свертки двоичных последовательностей, длина и которых не превосходит половины простого числа Ферма 2 + 1 прн т = 2, 4, 8 нли 16, можно использовать поле GF (2"' + 1). Последовательность над GF (2) можно рассматривать как после- довательность целых чисел, принимающих значения, равные только нулю н единице. Длина линейной свертки двух целочис- ленных последовательностей длины и может быть больше и, но всегда меньше 2~ + 1. Следовательно, линейная свертка в GF (2) может быть вычислена как циклическая свертка в поле GF (2"' + 
396 <Jl. 11. БЫСТРЫЕ АЛГОРИТМЫ + 1) с последующим приведением по модулю 2. Циклическая свертка в GF (2" + 1) может быть вычислена с помощью любого алгоритма быстрой свертки; один из методов состоит в применении быстрого преобразования Фурье и теоремы о свертке. Например, для непосредственного вычисления свертки в поле GF (2) двух последовательностей длины 2" требуется примерно 2" битовых операций. Вместо этого можно воспользоваться сверткой в поле GF (2" + 1). В этом поле для вычисления пре- образования Фурье надо примерно 2" умножений и 2" сложений; для каждого умножения необходимо примерно (17)' битовых операций, а для каждого сложения пример- но 17 битовых операций. Таким образом, свертка может быть вычислена примерно за 3 X (17' >< 2") ~ 3 X 2" битовых операций. Теперь предположим, что нам надо свернуть две последователь- ности в GF (2"). Как и ранее, можно представить элементы поля многочленами над GF (2). Если отложить операцию вычисления остатка по модулю р (х) до завершения всех других вычислений, то исходная свертка превратится в двумерную свертку. Эта задача может быть вложена в суррогатное поле GF (2'"' + 1), если только длина свертки целых чисел не превышает 2 ' + 1, т. е. если т и с 2'"' + 1. Например, пусть надо вычислить линейную свертку двух последовательностей длины 8192 над GF (2'). Так как 8 (8192) меньше, чем 2" + 1, то в качестве суррогатного поля можно воспользоваться полем GF (2" + 1). двумерную (8 х 8192)-точеч- ную линейную свертку можно вычислить через двумерную (16 X X 16 384)-точечную циклическую свертку без потери членов. Эта (16 X 16 384)-точечная циклическая свертка может быть вычислена с помощью методов быстрого преобразования Фурье. 16-точечное преобразование вообще не содержит умножений, а содержит только циклические сдвиги. 16 384-точечное преобра- зование, как уже обсуждалось выше, может быть разбито с по- мощью алгоритма Кули Тычки БПФ на более короткие свертки. для того чтобы воспользоваться теоремой о свертке, необходимо выпол нить три преобразования, каждое из которых содержит 2048 умножений. В частотной области также необходимо выпол- нить 16 х 16 384 умножений. Таким образом, для вычисления 8192-точечной свертки над GF (2') необходимо выполнить 268 288 умножений в поле GF (2" + 1). ЗАДАЧ И 11.1. Построить алгоритм быстрой свертки для кодирования (7, 3)-кода Рида ‒ Соломона, корнями порождаю.цего многочлеиа которого служат ао, а', а'и аз 
зАмачАниЯ;щу 11.2. Построить алгоритм быстрой свертки для кодирования (15, 11)-кода Рида ‒ Соломона с порожда!ощим многочленом g (х) = ха+ а'зх + авх2+ + а~ х + ~>0 11.3.а. Построить алгоритм Винограда трехточечного БПФ в поле GF (16). б. Используя гнездовой метод Винограда, построить 15-точечный БПФ-алгоритм Винограда над GF (16) на основе трехточечного и пятиточечного БПФ-алгоритмов Винограда. 11.4. Выписать уравнения переиндексации для 35-точечного БПФ-алго- ритма Кули ‒ Тычки. ( l.5. Алгоритм Форин, согласно которому е~ ‒ ‒ ‒ о>;/)ц), аналогичен равенству Е (х) Л (х) = Q (x). Однако последнее выражение не является перио- дическим, и, следовательно, метод преобразования Фурье нельзя непосредственно использовать для вывода из него алгоритма Форни. Для вывода алгоритма Форни на основе преобразования Фурье надо рассуждать следующим образом. Выбрать такое n', чтобы в некотором расширении поля содержался элемент порядка и'и. Показать, что выражение Е (х) Л (х) = ‒ (х" ‒ !) 0 (х) можно рассматривать как периодическое с периодом и'и. Использовать преобразование Фурье длины и'и для завершения доказательства. 11.6. г ля полей характеристики 2 описать процедуру построения 8-точечной циклической свертки, содержащей не более 28 умножений. Описание должно быть полным, lIO не содержать непосредственных вычислений. 11.7. Пусть требуется написать программу вычисления 31-точечной цикли- ческой свертки в поле GF (32) или в некотором его расширении. а. Оценить сложность программы, использующей 31-точечное,ЯПФ и теорему о свертке. б. Написать программу, использующую 75-точечное быстрое преобра- зование Фурье в поле GF (22О). Построить БПФ из трехточечного и пятиточечного алгоритмов Винограда быстрого преобразования Фурье. Оценить сложность подп рограммы, вычисляющей свертку. 11.8. Яля систематического кодирования 8-битовых байтов используется (256, 256 ‒ 2t)-êîä Рида ‒ Соломона над GF (28+ 1). Когда проверочный символ принимает значение 2", он не может быть представлен восемью битами и заме- няется на нуль, так что в момент кодирования кодовое слово уже содержит ошибку, которая может быть данным кодом исправлена. Чему равна скорость кода в двоичном представлении? Описать ухудшение кодовых характеристик при использовании в проверочных символах только восьми битов. ЗАМЕЧАН ИЯ Материал данной главы основан на методах, разработанных в теории построе- ния эффективных алгоритмов. В большинстве случаев эти методы развивались вне связи с теорией кодов, контролирующих ошибки. При этом рассматри- вались только вычисления в полях вещественных и комплексных чисел, но не представляет труда перенести этн же идеи в поле Галуа, что и было сделано в данной главе. Алгоритмы быстрого преобразования Фурье широко используются в обра- ботке дискретных сигналов, начиная с известной работы Кули и Тычки [1965]. Однако другой подход к БПФ был предложен в более ранних статьях Гуда [1960] н Томаса [1963]. Взаимосвязь между БПФ и сложностью декодиро- вания обсуждалась Юстесеном [1976 ] и Сервейтом [1977 ] '). ') Аналогичную задачу рассматривал В. Б. Афанасьев; см. Афанасьев В. Б. Быстрое кодирование и обнаружение ошибок кодом Рида ‒ Соломона. ‒ В кн.: Третий международный симпозиум по теории информации. Тезисы докладов. Часть II. ‒ М. Таллин: URSI АН СССР и AH ЭССР, 1973, с. 13 ‒ 17.‒ Прил~. перео. 
398 ГЛ. 11. SblCTPblE АЛГОРИТМЫ Основанные на прямых и грубых методах быстрые алгоритмы свертки впер- вые были построены Агарвалом и Кули [1977]. Виноград [1978] предложил описанный в дацной главе общий метод построения, а также доказал, что в по- лях вещественных и ксмплексных чисел не существ1 ет лучших алгоритмов свертки. Он почти не обращался к полям Галуа, так как в этих полях умно- жения легко маскируются цод сложения. Использование китайской теоремы об остатках для целых чисел для разбиения длинных сверток на короткие пред- ложили Агарвал и Кули 11977]. Ллгори1м Винограда БПФ был опубликсвац в 1978 r. Наше описание не следует оригиналу ц связывает его с другими мето- дами обработки сигналов. Алгоритм БПФ Вин:>града и другие эффективныс алгоритмы обсуждал 1акже 11уссбаукер )1981J. Применецис БПФ-алгоритма Винограда .~ля декодцровация кодов Р1оа-. Соломона рассматривали .Чиллер. Труонг н Рид [1980]. Ускоренный и рекуррентный алгоритмы Берлекэмпа ‒ Месси публикуются впервые; они были ацонсированы в работе Блейхута [1981]. Использовацие в алгоритмах свертки суррогатных полей цредложилц Препарата и Серве~п [1977 J. 
ГЛАВА 12 СВЕРТОЧНЫЕ КОДЫ В современных системах связи довольно часто приходится пред- усматривать передачу данных с очень большими скоростями‒ иногда много миллионов битов в секунду. Для защиты таких систем от ошибок нередко используются блоковые коды. Поток данных делится на блоки по Й информационных символов, и каж- дый блок кодируется и символами кодового слова. Кодовые слова для последовательных й-символьных блоков никоим образом не связываются кодером. При другой схеме кодирования поток данных разбивается на гораздо меньшие блоки длины й„которые мы будем называть кадрами информационных символов. Эти кадры информационных символов обычно включают лишь несколько символов. Кадры информационных символов кодируются кадрами кодового слова длины и, каждый. Однако вместо того, чтобы независимо кодиро- вать отдельные кадры информационных символов в отдельные кадры кодового слова, кодирование каждого кадра информа- ционнь|х символов в отдельный кадр кодового слова производится с учетом предыдущих т кадров информационных символов. Поэтому процедура кодирования связывает между собой после- довательные кадры кодовых слов. Коды, получаемые таким образом, называются древовидными кодали. Наиболее важными древовидными кодами являются коды, известные под названием сверточны.к кодов. Сверточными кодами являются древовидные коды, которые обладают дополни- тельными свойствами линейности и постоянства во времени. Вначале мы рассмотрим общий класс древовидных кодов, в основ- пом концентрируя свое внимание на изучении сверточных кодов как частного случая древовидных кодов. 12.1. ДРЕВОВИДНЫЕ И РЕШЕТЧАТЫЕ КОДЫ Изучение древовидных кодов начнем с рассмотрения кодера, представленного на рис. 12.1 в виде регистра сдвига. Многие основные определения могут быть введены с использованием этой 
400 ГЛ. 12. СВЕРТОЧ Н ЫЕ КОДЫ схемы. Информационная последовательность вводится в кодер, начиная с нулевого момента времени и до бесконечности. Поток входящих информационных символов разбивается на сегменты, которые содержат по й, символов и называются кадрами информа- ционных символов. Кадр информационных символов может, в ча- стности, состоять из единственного символа, что нередко имеет место на практике. В кодере может храниться т кадров. В течение каждого временного кадра в регистр сдвига вводится новый кадр информационных символов, а кадр информационных символов, дольше ocTBJIbHbIx хранившийся в нем, выводится из него и сбра- сывается. В конце каждого временного кадра в кодере хранятся последние т из поступивших в него кадров (всего mk, информа- ционных символов). В начале каждого временного кадра кодер по введенному кадру информационных символов и т хранящимся в нем кадрам вычисляет один кадр кодового слова, имеющий длину и, символов. Этот кадр кодового слова выводится из кодера, как только следующий кадр информационных символов выводится в него. Следовательно, каждым Й, информационным символам соответствует передача по каналу и, кодовых символов. Бесконечное множество всех бесконечно длинных кодовых слов, получаемых при поступлении в этот кодер всех возможных входных последовательностей, называется древовидныл~ (п„ й,}-кодом. Скорость R этого древовидного кода определяется отношением Ao!n0. Важной характеристикой сверточного кода является величина > = mk Она называется длиной кодового ограничения. Это не- строгое определение длины кодового ограничения достаточно для слова Рис. 12.1. Кодер в виде Регистра сдвига. 
12.1. ДРЕВОВИДНЫЕ И РЕШЕТЧАТЫЕ КОЛЫ 4Q) многих целей (хотя в некоторых случаях необходимо более строгое определение). Формальное определение будет дано в следующем параграфе. На рис. 12.1 изображен кодер, у которого Й, = 3, @0=5 H ~=21 В древовидном коде используются и несколько других мер длины. Положим Й = (т + 1) k,. Это Й непосредственно связано с длиной кодового ограничения. Назовем ее информационноа" длиной слова сверточного кода. Соответствующая ей мера кодовых последовательностей называется кодовой длиной блока и. Она дается формулой п = (m + 1) n, = kn,(k,. Кодовая длина блока кодера на рис. 12.1 равна 40. Кодовая длина блока ‒ это длина кодового слова, на которой сохраняется влияние одного кадра информационных символов. Из соображе- ний удобства реализации на практике значения и, и k для древо- видных кодов выбираются равными небольшим целым числам; в типичном случае k равно единице. Это означает, что выбор скорости кода ограничен. Невозможно построить практический древовидный код со скоростью, очень близкой к единице, как это обычно делается для блоковых кодов (таких, как коды Рида Соломона}. Дадим формальное определение древовидного кода. Определение 12.1.1. древовидный (n„k,}-код ‒ это отобра- жение на себя множества полубесконечных последовательностей элементов из GF (q), такое, что если для любого М первые Afk, компоненч двух полубесконечных последовательностей совпадают, то первые Мп, компонент отображений этих последовательностей тоже совпадают. Древовидный код лучше всего можно представить себе, обра- тившись к кодеру, изображенному на рис. 12.1. Древовидный код характеризуется длиной кодового ограничения (быть может, бесконечной} и скоростью. Частные случаи древовидных кодов получаются различными комбинациями следующих четырех свойств. Эти свойства полезно проследить на показанном на рис. 12.1 кодере. Конечность длины кодового ограничения.,Ялина кодового огра- ничения может быть конечной или бесконечной. Практически древовидные кодь| всегда имеют конечную длину кодового огра- ничения. Однако в теоретических исследованиях иногда полезны коды с бесконечной длиной кодового ограничения.,Древовидный (п„й„}-код с конечной длиной кодового ограничения v, длиной слова Й = ~+ kp и кодовой длиной блока п называется также решетчатььн (n, k)-кодом. 
4QQ ГЛ. ~г. CBEPTONHbLE КОДЫ Постоянство во времени. Если две различные входные после- довательности совпадают во всем, но с временным сдвигом ца целое число кадров, то соответствующие им кодовые последова- тельности также совпадают во всем, но с временным сдвигом на то же самое целое число кадров. Линейность. Кодовая последователь ность любой л и нейной комбинации двух информационных последовательностей совпадает с такой же линейной комбинацией кодовых последовательностей этих двух информационных последовательностей. Иначе говоря, если d, и d, являются двумя информационными последователь- ностями с кодовыми последовательностями G (d,) и G (d.,), то ad, + bd соответствует кодовая последовательность G (ad, + bd,) =- aG (d,) + bG (d ). Систематичность. Систематическим древов идным кодом называется код, в котором каждый кадр информационных симво- лов составляет первые k символов первого из тех кадров кодовой последовательности, на которые влияет данный кадр информа- ционных cHMBQJloB. Определение 12.1.2. Линейный постоянный во времени древо- видный (п„>г,)-код, имеющий конечную длину слова /г = (т + 1) >г„ называется свврточным (п, Ц-кодом. Сверточный (п, lг)-код, удо- влетворяющий условию систематичности, называется систе.ца- тичвским свврточным (n, k)-кодом. Заметим, что мы можем называть один и тот же код древо- видным (и», Й,}-кодом или сверточным (п, Й}-кодом. На практике k значительно больше Й„и поэтому недоразумений не возникает. Определение 12.1.3. Постоянный во времени древовидный (n„й,}-код, имеющий конечную информационную длину слова A', называется скользящим блоковым (n, И}-кодом. Следователь i>i>, линейный скользящий блоковый код является сверточным кодом. На рис. 12.2 графически иллюстрируются связи между раз- личными классами древовидных кодов. Существуют и другие возможности, но наиболее интересными являются эти с.'Ii чаи. Примеры кодеров для двух различных сверточных кодов показдш~ на рис. 12.3; в обоих случаях „= 2, A'„- = 1. Первый из вл служит кодером дл я систематического двоичного сверточ ного (12,6)-кода с длиной кодового ограничения, равной 5. Он обладает всеми указанными выше свойствами. Второй является кодером для несистематического двоичного сверточного (6,3)-кода с длиной кодового ограничения 2. В обоих случаях входные символы пре- образуются двумя фильтрами, один из которых образуется верх- ними отводами, а другой нижними. Символы с выходов этих двух фильтров попеременно во времени считываются и подаются 
12.1. ДРЕВОВИДНЫЕ И РЕШЕТЧАТЫЕ КОДЫ фО3 древовидные коды С конечной длиной кодового ограничения Линейные Линейные древовидные кобы PeWemVam1 ie кобы Сиса емааические Сисаематические С конечнои длинои кодового ограничения и посвоянные во времени Посвоянные во времени Систем авические решевчавые коды Сисвемавические линейные древовидные коды Посвоянные во времени Скользящие блоковые коды С конечной длиной кодового ограничения и посвоянные во времени Линейные Сисвемавические Сисвемавические скользящие блоковые коды Сверточные коды Система.- в ические Лине иные Сисгпемавические свервочные коды Рис. 12.2. Классификация .древовидных кодов, в буфер по одному символу в единицу времени с каждого выхода; их считывание из буфера производится вдвое чаще, чем поступают входные символы. Сверточные и другие решетчатые коды удобно описывать спе- циальным графом, называемым решеткой; отсюда название решетчатые коды. Решеткой называется граф, узлы которого находятся в прямоугольной координатной сетке, полубесконечной справа; число узлов в каждом столбце конечно. Конфигурация ребер, соединяющих узлы каждого столбца с узлами столбца справа, одинакова для всех столбцов. Узлы, которые не могут быть достигнуты при движении вправо из верхнего левого узла, обычно не указываются. 
4О4 Гл. 12. сВеРтОчные кОДы Типичная решетка для двоичного кодового алфавита пред- ставлена на рис. 12.4. Эту решетку можно использовать для описания второго кодера, изображенного на рис. 12.3. Ее марки- pQBKa на рис. 12.5 соответствует этому кодеру. Узлы в каждом столбце решетки представляют д' состояний, в которых может находиться регистр сдвига. Каждый последующий столбец пред- ставляет собой набор состояний в следующий момент времени, Поступление на вход нового кадра приводит к изменению состояния регистра сдвига, соответствующему ребру, которое ведет к следующему узлу. В нашем примере каждое ребро по- мечено двумя двоичными символами, передаваемыми в канал при переходе в следующее состояние регистра сдвига. В том простом примере, который мы рассматриваем, ведущая из произвольного узла верхняя прямая соответствует нулевому входному двоичному символу, а нижняя ‒ единичному. В общем же случае каждое ребро помечается Й, входными символами, которые ему соответ- ствуют. Маркированная решетка описывает сверточный код в том смысле, что все пути слева направо по решетке обозначают кодо- вые слова. Маркировка ребер одинакова для каждого сегмента и линейна в том смысле, что линейная комбинация маркировок любого множества ребер является маркировкой некоторого ребра. Решетка может быть маркирована и при более слабых ограни- чениях. Если маркировка не обладает свойством линейности, то, как мы уже указывали, код называется скользящим блоковым Кодовь! е бать| скорость скорость Рис. 12.3. Примеры сверточных кодеров. а ‒ кодср,1ля двоичного сверточного (12, 6)-кода; б ‒ кодер для двоичного сверточного (6. 3)-кода. 
12.1 ДРЕВОВИДНЫЕ И РЕШЕТЧАТЫЕ КОДЫ 4О5 Рис. 12.4. Решетка сверточного кода Время О 1 2. 3 00 00 00 00 Состояние 00 7 8 00 00 6 00 5 00 10 01 10 10 10 10 <Р 10 Последний посвцпиеаоо 0um Рис. 12.5. Решетчатая диаграмма сверточного (6, 3)-кода. кодом. Если маркировка меняется от кадра к кадру, то такой код известен под общим названием решетчатого кода. Наконец, если число состояний в следующих друг за другом временных кадрах продолжает неограниченно расти, то такой код называется общим древовидным кодом. Рис. 12.6. Дерево для,двоичного древовидного кода со скоростью j/2. 
406 Гд. 12. сВеРтОчиые КОДЫ Решетчатый код может быть также представлен особым гра- фом, показанным на рис. 12.6 и называемым деревом. В этом графе число узлов и ветвей неограниченно увеличивается при росте дерева вправо; этим и объясняется название древовидных кодов. Каждый узел дерева ‒ это состояние, соответствующее всем по- ступившим в него информационным символам, начиная с нулевого момента времени. Лля кодов с бесконечной длиной кодового ограничения цли даже умеренно большой длиной кодового огра- ничения дерево - ‒ это именно тот граф, который их описывает. Кодовые слова соответствуют путям по дереву. Для кодов с малой длцной кодового ограничения, однако, удобнее использовать решетку. Как мы уже видели, код полностью описывается послед- ними v поступившими в кодер символами, и их достаточно для определения состояния. 12.2. ОПИСАНИЕ СВЕРТОЧНЫХ КОДОВ С ПОМОЩЬЮ МНОГОЧЛЕНОВ Сверточный ((т + 1) и,, (т+ 1) k,)-код над GF (q) с длиной кодо- вого ограничения v = mk, можно генерировать с помощью набо- ров фильтров с конечным импульсным откликом (КИО-фильтров); каждый набор состоит из k, КИО-фильтров над GF (q). B кодер поступает поток символов со скоростью Й, символов в единицу времени, а из него выходит в канал поток символов со скоростью и, символов в единицу времени. На рис. 12.7 показан кодер для двоичного сверточного кода с и, = 5 и kp = 1. Такой кодер со- стоит из серии фильтров и выходного регулирующего буфера, который необходим для согласования выходной скорости со ско- ростью фильтров. На рис. 12.8 приведен аналогичный кодер для двоичного сверточного кода с и, =- 6, k, = 3. Для согласования входной скорости со скоростью фильтров добавлен входной буфер. Каждый КИО-фильтр может быть представлен многочленом степени не выше т. Если входной поток записать как многочлен (быть может, бесконечной длины), то работа фильтра может быть описана как умножение многочленов. В этом случае кодер свер- точного кода может быть представлен множеством многочленов; поэтому и сам код может быть представлен посредством того же множества многочленов. Иначе говоря, код является множеством кодовых слов, которое порождается данным множеством много- членов. Эти многочлены называются порождающими многочленам« кода. Наибольшая степень порождающих многочленов равна m. В отличие от блоковых кодов, которые описываются един- ственным порождающим многочленом, сверточный код требует для своего описания нескольких порождающих многочленов‒ в общем случае k,ï, многочленов. Пусть g;; (х), i = 1, ..., ko j:= 1, ..., np ‒ множество порождающих многочленов. Они могут 
12.2, ОБНИЩАНИЕ С ПОМОЩЬЮ МНОГОЧЛЕНОВ фО7 Набор КИО-cpua~mpoe Рис. 12.7. Сверточный кодер. КИО КИО КИО КИО КИО КИО кий КИО киО кио кио киО кис КИО кто Набор КИО-g)ufttmpoa Рис. 12.8. Сверточный кодер (no = ‒ 5, йц =- 3). 3 6uma за eduHuu, времени Входной регулцрующий бурер 5 бивов за единицу времени Ьыходной регулирующии бцсрер 
'4О8 ГЛ. 12. СВЕРТОЧ НЫ Е КОДЫ быть объединены в матрицу размера k, Х и,, называемую поро- ждающей матрицей из многочленов '): С (х) = [g;; (х) ]. При й„большем единицы, некоторые порождающие многочлены могут равняться нулю. Например, порождающие матрицы из многочленов кодеров на рис. 12.3 записываются в виде [1 з+ „з+ 1] С(х) = [х'+х+1 х'+1]. Дадим формальное определение длины кодового ограничения сверточного кода, основываясь на порождающей матрице из многочленов G (х). Определение 12.2.1. Длиной кодового ограничения сверточ- ного кода, задаваемого порождающей матрицей из многочленов [g;~ (х) ], называется величина ') ~ï тах [deg g;> (х) ]. Информационной длиной кодового слова называется Й = Й, тах [deg g,> (х) + 1], с,у а кодовой длиной блока называется п = и, тах [deg g;; (х) + 1]. i, j Например, у сверточных кодов, кодеры которых показаны на рис. 12 9, ч = 3, k = 6, и = 9 и ч = 4, k = 6, и = 9 соответ- ственно. Будем рассматривать входной кадр как k, параллельно посту- пающих символов, а последовательность входных кадров как k, параллельных последовательностей символов. Они могут быть ') В дальнсйшсм, следуя автору, мы иногда будем для краткости называть эту матрицу порождающей матрицей, ‒ Прил~ ред, 2} На практике используется несколько различных определений термина длина кодового ограничения. Неопровержимый довод в пользу нашего выбора состоит в следующем: код с меньшей решеткой имеет меньшую длину кодо- вого ограничения, решетка всегда имеет д узлов, и любой минимальный ко- дер ‒ будь он кодером с обратной или прямой связью ‒ всегда имеет v элемен- тов памяти. Следовательно, ~ измеряет сложность сверточного кода. Иногда полезны также даниь[е нами определения Й и и; в литсратуре они также па- зь:ваются длиной кодового ограничения. 
]2.2 ОПИСАНИЕ С ПОМОЩЫО МНОГОЧЛЕНОВ 409 UU UU Длина кодового Длина кодового ограничения=З ограничения=4 Рис. 12.9. Кодеры для двух сверточных кодов со скоростью 2/3. представлены Й, информационными многочленами d; (х), = 1, ..., ko, или вектором-строкой таких многочленов: d (х) = Ы~ (х), dq (х), ..., d~, (х) ]. Аналогично выходное кодовое слово может быть представлено по многочленами кодового слова с; (х), j = 1, ..., п„или вектором этих многочленов с (х) = [с~ (х) ] = [с1 (х), ср (х), ..., с„, (х) ]. Коэффициенты многочленов кодового слова перемежаются в по- рядке их прохождения по каналу. Теперь операцию кодирования можно компактно описать с по- мощью векторно-матричного произведения с (х) = d (х) G (х), или, что то же самое, с,(х) = Q d,(õ)äö(õ). i=l Проверочная матрица Н (х) из многочленов является [(n, Й,) X n,]-матрицей, элементами которой являются многочлены и которая удовлетворяет условию G (х) Н ' (х) = О. Вектор синдромных многочленов дается уравнением s (x) = ч (х) Н'(х). Он является (п, ‒ Й,)-мерным вектором-строкой из многочленов. Систематический кодер для сверточного кода имеет порожда- ющую матрицу из многочленов вида С (х) = [i V (х)], где I единичная матрица размера Й, X Й„а Р (х) матрица многочленов размера Й, X (и, ‒ Й,). Для систематических свер- 
410 ГЛ. 12. СВЕРТОЧ НЫЕ КОДЫ точных кодов проверочную матрицу из многочленов можно сразу записать в виде Н (х) = [ ‒ Р' (х): I], где! единичная матрица размера (и, Й,) X (no ‒ Й„). Можно непосредственно проверить, что С(х) Н'(х) = 0. Как и в случае блоковых кодов, более корректно было бы говорить о систематических кодерах сверточных кодов, а не систематических сверточных кодах.' Систематические кодеры сверточных кодов, по-видимому,' предпочтительнее, так как при их использовании информация не преобразуется и при отсутствии ошибок может считываться непосредственно. Однако в отличие от блоковых кодов не каждый сверточный код эквивалентен (в бо- лее узком смысле) систематическому сверточному коду, и некото- рые несистематические сверточные коды имеют лучшие дистан- ционные свойства, чем систематические. Так как в кодовых словах, не принадлежащих систематиче- скому коду, информация непосредственно не содержится, они должны строиться так, чтобы при отсутствии ошибок ее можно было бы легко восстановить. Упомянутое выше сужение понятия эквивалентности состоит в том, что все кодеры должны констру- ироваться на базе КИО-фильтров без обратной связи. Если же использовать обратную связь в цепях, выполняющих деление многочленов, то можно построить систематический кодер для любого сверточного кода. На рис. 12.10 дается систематический кодер с обратной связью, соответствующий решетке, изображен- ной на рис. 12.5. Перейдем к обсуждению важного частного случая A = 1. Упростим обозначения, положив О (х) = [g (х) & (х) ... g„, (х)1 с;(х) =-d(х)g;(х), j= [, ...,n,. Регулирующий буV<p но.л Рис. 12.10. Систем;!тнческий! ко;1ер с обратной связью для сверто[но1о (6 З) ко;[а. 
12.2. ОПИСАНИЕ С ПОМОЩЬЮ МНОГОЧЛЕНОВ 41 $ Для систематического кода g> (х) = 1. () дредеденке 12.2.2. Сверточный код, порождающие много- члены g~ (х), ..., g„, (х) которого удовлетворяют условию НОД (gi (х), ", к„, (х) } = х' при некотором а, называется некатастрофическим сеерточным кооом. В противном случае он называется катастрофическим сверточным кодом. Без ограничения общности мы можем считать х' =- 1, так как невыполнение этого равенства просто эквивалентно введению во все фильтры задержки, что, очевидно, бессмысленно. Некатастрофический сверточный код при отсутствии ошибок можно декодировать, используя алгоритм Евклида для много- членов, согласно которому существуют многочлены а, (х), ..., а,„, (х), такие, что а1 (х) g> (х) + ... + а„,а„, (х) = 1. Поэтому если многочлен поступающих данных d (х) кодируется по формуле с;(х)=d(x)g;(x), j=1,...,n,, то d (х) можно восстановить, используя соотношение d (х) = а1 (х) с1 (х) + ... + а„, (х) с„, (х), что легко проверить подстановкой. На рис. 12.11 приведен пример. Многочлен поступающих данных вводится слева, а выводится в неизменном виде справа. Комбинированная посимвольная скорость в точках а и b равна удвоенной входной скорости, однако можно так скомбинировать символы, проходящие эти две точки, чтобы они образовывали передаваемое по каналу кодовое слово сверточного кода со ско- ростью 1/2. Вводимая избыточность используется для нахождения и исправления ошибок; чем больше ошибок, которые могут быть исправлены, тем лучше код. Задача нахождения хорошего сверточного кода является зада- чей поиска хорошего множества взаимно простых порождающих многочленов. Найти произвольное множество взаимно простых многочленов нетрудно, а вот найти множество, которое хорошо исправляет ошибки, действительно трудно. В общем случае Й, больше единицы. Некатастрофический код определяется через (>',) различных (Й, Х n,)-подматриц матрицы G {х). Пусть для нумерации подматриц этого множества используется индекс 1, и пусть Л, (х) ‒ определитель 1-й (Й,;<' Х n,)-подматрицы. 
41 2 ГЛ. 12, СВЕРТОЧ HblE КОДЬ! х~+х~+1) ~хб+х~+х) +(х~+х~+1) ~х5+хг+х+1р Рис. 12.11. Подробная схема регистра сдвига. Определение 12.2.3. Сверточный код с матрицей порождающих многочленов G (х), определители Л~ (х), 1 = 1, .... (q',), под- матриц которой удовлетворяют условию НОД [Л, (х), 1 = 1, ..., (;;)] = х при некотором а, называется некатастрофическим сверточным кодом. В противном случае он называется катастрофическим сверточнам кодом. Как и в предыдущем случае, некатастрофический код может быть обращен. Иначе говоря, существует (n, X Й,)-матрица много- членов G* (х), такая, что G" (х)С(х) = х'I, где ! единичная матрица размера k, М k,, а х' определяет некоторую фиксированную задержку. Найти G* (х) в общем слу- чае затруднительно, и мы не будем этим заниматься. В случае систематических кодов сформулированные в определении 12.2.3 условия всегда выполняются. Систематические коды всегда яв- ляются некатастрофическими. 12.3. ИСПРАВЛЕНИЕ ОШИБОК И ПОНЯТИЯ РАССТОЯ Н ИЯ Когда кодовое слово сверточного кода передается по каналу, время от времени в его символах возникают ошибки. Декодер, при- нимая кодовое слово, должен исправить эти ошибки. Однако длина кодового слова сверточного кода столь велика, что в фикси- рованный момент времени декодер может хранить в памяти только 
!2.3. ИСПРАВЛЕНИЕ ОШИЬОК; ПОНЯТИЯ РАССТОЯНИЯ 413 его часть. Хотя длина кодового слова бесконечна, все решения принимаются декодером на сегментах кодовых слов. конечной длины. Безотносительно к шагу, на котором обрывается слово, принятое декодером для обработки, в силу структуры кода суще- ствует некоторая зависимость этого отрезка с теми частями слова, которые декодер еще не наблюдал. Таким образом, возможно, существует полезная информация, которую декодер не исполь- зует. Изучение процедур декодирования сверточных кодов в боль- шинстве случаев ограничивается вопросом исправления ошибок в первом кадре. Если этот кадр может быть исправлен и декоди- рован, то первый информационный кадр известен. Влияние ин- формационных символов этого кадра на последующие кадры кодовых слов может быть учтено и исключено из них. Следова- тельно, задача декодирования второго кадра кодового слова аналогична задаче декодирования первого кадра кодового слова. Продолжая эти рассуждения, приходим к выводу, что при успешном исправлении первых j кадров проблема декодирования (j + 1}-го кадра аналогична проблеме декодирования первого кадра. Известно много подобных процедур декодирования. Про- цедура, использующая информационные символы исправленного кадра для явного исключения их влияния на последующие кадры, называется процедурой с обратной связью. Другие декодеры опери- руют таким образом, чтобы соответствующим образом декодиро- ванные предшествующие кадры не оказывали никакого влияния на текущий кадр. В любом декодере может случиться так, что в связи со слишком большим количеством ошибок первый кадр кодового слова не будет исправлен должным образом. В некоторых декодерах это при- водит к введению ошибок в последующие кадры, вызывая их неправильное кодирование. Если ошибка в декодировании одного кадра приводит к появлению в кодовом слове бесконечного числа дополнительных ошибок, то говорят, что в декодере происходит распространение ошибок. Если распространение ошибок может быть устранено выбором алгоритма декодирования, это явление называют обычным распространениел~ ошибок; если же распро- странение ошибок вызывается выбором катастрофического по- рождающего многочлена сверточного кода, то говорят о каагастро- фическом распространении ошибок. Выбор надлежащей конструк- ции системы позволяет избежать обеих этих возможностей. Число символов, которые декодер может хранить в памяти, называется шириной окна декодирования. Если ставить своей целью обнаружить как можно больше конфигураций ошибок, то в общем случае увеличение ширины окна декодирования всегда приводит к улучшению характеристик, однако в конце концов происходит насыщение. Ширина окна декодирования должна 
41 ~ ГЛ. 12. СВЕРТОЧНЫЕ КОДЫ 2t+1 (d*, код исправит первый кадр кодового слова, если на длине первого блока появилось не более 1 ошибок. Такой код называется свер- точным кодом, исправляюшам 1 ошибок. Более точное, хотя и более громоздкое название: свсрточный код, исправляющий / ошибок на длине блока. Определение 12.3.2. Свободным расстояние ч сверточ ног о кода б называется d =- max di. l Очевидно, что ~1т+1 ~( dm+9 ~( ( 4.. Определение 12.3.3. Свободной длиной и сверточного кода называется длина имеющего наименьший вес ненулевого началь- быть не меньше длины блока и и зачастую в несколько раз пре- вышает последнюю. Сверточный код характеризуется многими минимальными рас- стояниями, определяемыми длинами начальных сегментов кодовых слов, между которыми берется минимальное расстояние. Мера расстояния определяется таким образом, что если при декодиро- вании двух кодовых слов получается один н тот же первый ннфор- мационный кадр, то эти слова считаются эквивалентными. Определение 12.3.1. Минимальное расстояние Хэмминга для любых начальных сегментов длины l кадров всех пар кодовых слов, отличающихся начальным кадром, называется 1-м мини- мальным расстоянием сверточного кода и обозначается через d~. Если 1 равно т + 1, то оно называется просто минимальным расстоянием и обозначается через d . Последовательность d>, d>, ф, ... называется дистанционным профилем сверточного кода. Так как сверточный код линеен, одно из двух кодовых слов может целиком состоять из нулей. В этом случае 1-е минимальное расстояние равно минимальному из всех весов сегментов длины 1 кадров кодовых слов с ненулевым первым кадром. Оно может быть вычислено по маркированной решетке, Из рис, 12.5 следует, что для сверточного (6, 3)-кода Н~ ‒‒ ‒ 2, d~ = 3 н d; = ‒ 5 при всех i ~3. Предположим, что сверточный код имеет 1-е ми нимальное расстояние d>. Если в первых l кадрах произошло не более t оши- бок, причем t удовлетворяет неравенству 2/+1 (d>, то ошибки, которые появились в первом кадре кодового слова, могут быть исправлены. В частности, выберем l = т + 1; мини- мальное расстояние кода d равно d +~. Тогда при t, удовлет- воряющем неравенству 
12.4. МАТРИЧНОЕ ОПИСАНИЕ СВЕРТОЧНЫХ КОДОВ 41 б ного сегмента кодовой последовательности сверточного кода. Таким образом, d~ ---- d, если 1 = n, и dg ( d, если l ( n В примере, приведенном на рис. 12.5, свободное расстояние равно 5, а свободная длина 6. В этом случае свободная длина равна длине блока сверточного кода, В общем случае она может быть больше длины блока. 12.4. МАТРИЧНОЕ ОП ИСАН И Е СВЕРТОЧН Ы Х КОДОВ Сверточпый код состоит из бесконечного числа кодовых слов бес- конечной длины. Он линеен и может быть описан бесконечной порождающей матрицей. Для описания каждого кода может быть использовано огромное количество порождающих матриц, но удобно оперировать только некоторыми из них. Я,аже в лучшем случае порождающая матрица сверточного кода более громоздка, чем порождающая матрица блокового кода. Порождающие многочлены, имеющие индексы i и j, могут быть записаны в виде уц (х} == /gal,«'. 1 Для построения порождающей матрицы коэффициенты g;;, упоря- дочиваются в виде матрицы. П~.сть при каждом l G> является (/г„Х n,}-матрицей: G( =-- [д -]. Тогда порождающая матрица сверточного кода, усеченного до блокового кода длины л, записывается в виде Gp с1 с2 . Gut 0 С, С,...б„, 0 0 Gp...G 6<"> = «О 0 0 60 где символом О обозначена (k, X n,}-матрица, целиком состоящая из нулей. Порождающей матрицей сверточного кода является матрица CGC . С„, o o 00...— 0 С, Gg...Gm~ G„, 0 00 ... 
ф] Q ГЛ. 12. СВЕРТОЧНЫЕ КОДЫ бесконечно продолжающаяся вниз и вправо. За исключением диагональной полосы, состоящей из т «енулевых подматриц, все ее подматрицы являются нулевыми. В случае систематического сверточного кода эти две матрицы могут также быть записаны в виде I P ОР 00 I~PO 00 ',00 1 1 00 ',00 'OP, 1 ,ЕР', 1 Ро 1 1 ,00 I ° I ° 1 1 ° ° ° Ф 1 1 1 ° ° ° I P 0 00 '1 00 ',0 1 Р,,'0 Рг Ро 0 Р, 0 ,'~Ро ,'0 P ',ОР г ,'00 '00 ',ОP '0 Р., ,'0 0 '0 P 1 ,0 Р., ',0 Р,„ 1 ° ° ° 1 I ° ° ° 1 1 1 1 ° ° ° I 1 1 е ° ° 1 Аналогично два первых информационных кадра кодируются в два первых кадра кодового слова по правилу О 1 G(2llo)‒ О О 1Ро Про верочной матрицей является любая матрица Н, удовлетворя- ющая условиям G<~" 1(11(~io))+ = О, '1 = О, 1, 2, где каждая строка получается сдвигом предыдущей строки вправо, а необозначенные матричные элементы справа и слева от нее равны нулю. Через ! обозначена единичная', (k, X k,)-матрица, через О ‒ матрица того же размера, состоящая из одних нулей, а через Р„..., Р,„матрицы размера lг, X (n, k,). Первая строка описывает кодирование первого информационного кадра в первые т кадров кодового слова. Структура этого матричного выражения соответствует работе регистра сдвига кодера. Первый информационный кадр кодируется в первый кадр кодового слова элементом, находящимся в левом верхнем углу матрицы G, а именно элементом С< > =(1 Р,). 
]2.4. МИТРИЧ НОЕ ОПИСАНИЕ СВЕРТОЧ Н ЫХ," КОДОВ ф1 7 ]-де б«" > и Н~'" ) ‒ стоящие в левых верхних углах матриц 6 g Н подматрицы, соответствующие l кадрам. Бесконечномерная проверочная матрица Н может быть построена по б. В качестве проверочной выберем матрицу ~о Р Р О Р;, ‒ t Н= Р ~11 ‒ 1 Рт pïñ 0 p„'„. Рпг ‒ 1 pm где, как и ранее, все необозначенные элементы являются нуле- выми. Пример. Систематический двоичный сверточный (4,2)-код с ф, = = 1 и т == 1 описывается матрицами Р, = 1 и P, = 1 размера 1 Х 1. Следовательно, 1101 1 101 (~ = 1101 1 1 101 1 101 1 1 1100161001 1 1 1 1001010011 1 1 1001010 011 111001010011 6= 14 р. Еле[.хут Пример. Систематический двоичный сверточный (12,4)-код с йо ‒ ‒ 1 и т =- 3 зад~ется матрицами p, = [1 1], Р, = [0 1], Р, = [1 0] и Р, = [1 1]. Следовательно, 
ф] Я ГЛ. 12. СВЕРТОЧНЫЕ КОДЫ 110 101 000110 1 0010 1 100000110 000100101 1001000001 10 100000100101 100 1000001 10 100000 100 1 0 1 Н= 12.5. Н Е КОТОР Ы Е П РОСТЫ Е СВ ЕРТОЧ Н Ы Е КОДЫ Известно всего несколько конструктивных классов сверточных кодов. В настоящее время не известен ни один такой класс с алгеб- раической структурой, сравнимой со структурой кодов БЧ Х, исправляющих / ошибок; таким образом, не существует конструк- тивных методов поиска сверточных кодов с большой длиной кодового ограничения. Большинство известных и используемых в настоящее время лучших сверточных кодов было найдено по- иском на ЭВМ. В этом параграфе будет описан общий класс сверточных кодов, исправляющих одну ошибку. Параграф завершается таблицей некоторых хороших сверточных кодов, известпых в текущей литературе. Класс двоичных сверточных кодов, исправляющих одну ошибку и называемых кодами Вайнера ‒ Эша, аналогичен классу кодов Хэмминга. Для каждого положительного целого т суще- ствует ((т+ 1) 2, (т+1) (2 ‒ 1))-код Вайнера- ‒ Эша. Такой код определяется проверочной матрицей Н' (2 --1, 2'" ‒ 1 ‒ т)- кода Хэмминга. Это проверочная [т X (2~ 1)]-матрица, в ко- торой все 2'" 1 столбцов различны и ненулевые. Выберем такую матрицу, используем ее строки для определения множества [1 Х х (2 1)]-матриц P~, ..., P~ и обозначим через Рр вектор- 
12.5. НЕКОТОРЫЕ ПРОСТЫЕ СВЕРТОЧНЫЕ КОДЫ $f 9 строку, все 2"' - ‒ 1 элементов которой равны единице. Тогда проверочная матрица кода Вайнера ‒ Эша запишется в виде 1 0 0 0 О 0 0 P-1000 0 р; 0 р; 1 0 Р; pr о рт 1 рт Н= pni 0 0 Р 0 1 0 0 0 0 0 p" 1 0 0 0 P' 0 P' 1 pr о рт l pr Н <<'"+1~-'"'~ = Р' 0 P' 1 0 P g 0 ...P, 1 где 1 матрица размера 1 х 1, состоящая из одной единицы, ы 0 ‒ матрица размера 1 х 1, состоящая из одного нуля. Теорема 12.5.1. Минимальное расстояние d* кода Вайнера Зша равно 3; таким образом, он является сверточным кодом, исправляющим одну ошибку. Доказательство. Для вычисления минимального расстояния выбираются два кодовых слова, отличающихся в первом кадре. Так как код линеен, в качестве одного слова можно взять нулевое кодовое слово, а в качестве другого кодовое слово с единицей в первом кадре. Поскольку для кодовых слов сН' = О, сумма тех столбцов Н, в которых с отлично от нуля, равна нулю. Верх- няя строка Н не равна нулю только в первом кадре, поэтому первый кадр содержит по меньшей мере две единицы. Наконец, так как любые два столбца Н в первом кадре линейно независимы, кодовое слово должно содержать еще одну единицу, поэтому минимальное расстояние равно по меньшей мере 3. Для того чтобы показать, что оно равно точно 3, достаточно показать, что существуют три столбца, сумма которых равна нулю. Возьмем столбец, где Рр, ..., Р равны единице. Сумма 14~ 
420 Гл. 12. сверточные коды 1111 1100 1111 010 1100 1111 0000 10 10 1100 11 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 ... Н= При таком усечении кода, чтобы его проверочная матрица соответ- ствовала длине блока 12, получается сле;тощая проверочная матрица: 1 111 0000 0000 1100 1111 0000 1 010 1100 1111 fg(12 Серы ооаоо ~олово".о слова Рис. 12.12. Кодер для (12, 9)-кода Вайнера ‒ Эша. этого столбца в первом кадре с тем же столбцом во втором кадре равна (1, 0, 0, ..., 0)", и этот столбец содержится в первом кадре. Следовательно, существуют три столбца, сумма которых равна нулю. П Например, (12,9)-код Вайнера ‒ Эша соответствует т = 2. Ero проверочная матрица равна 
12.5. НЕКОТОРЫЕ ПРОСТЫЕ СВЕРТОЧНЫЕ КОДЫ 421 Порождающая матрица равна 100 1 000 1 000 1 010 1 000 1 000 0 001 1 000 0 000 1 100 1 000 1 000 1 010 1 000 1 000 0 001 1 000 0 000 1 100 1 000 1 000 1 0 1 0 1 0 0 0 1 0 0 0 0 ... 001 1 000 0 000 1 100 1 000 1 000 1 010 1 000 1 000 0 001 1 000 0 000 1 (' (12) Непосредственным рассмотрением б< "~ убеждаемся, что в пределах блока длины 12 каждое ненулевое слово имеет вес не менее трех. Следовательно, в блоке длины 12 код может исправлять одну ошибку. Кодер для (12,9)-кода Вайнера Эша представлен на рис. 12.12. Каждому порождающему многочлену на схеме соответствует отдельный КИО-фильтр. Большинство известных наиболее употребительных сверточ- ных кодов было получено поиском на ЭВМ. На рис. 12.13 приве- дена таблица таких кодов. а порождающая матрица кода, усеченного до длины блока 12, представляется в виде 
422 12. СВЕРТОЧ Hbl E КОДЫ Порождающая маарица оэ многочленое (выражена через коэсрсрмциенвы многочлена) (и, k,d„) (x'+.с+ I) ( 3+х2+,+ I) (.x'+ 1) (.с'+.с+ I) 111 Illl 10111 IOIIII 10011!1 100111!1 IIOIOIIII l0100110ll IOOOIIOllll IIOOIOIIIIOI IOOOIIOIIIIII 1IOOI0100!1101 IOI lOll I!ООI IIOIOI IIOIIOI l!IOOIOI IOOOIIIOI IIIOIIIOOI !О I I l011(Х) I I O I 110 I I (XX)1 IIOIIOIOI(X)OI IOII!101!I9X)t IOI 110! l0101 !II00l 1101101. 10101001 11!101!01 1111001001 11010111001 I11011111001 !10!101010001 1010010111000! I I I !OII ll011 IIOIOI 1010011 10011011 110011011 1010!1!101 100!1101101 1100101.11101 10llll0110001 !0001!01110111 III Illl IIIII 10llll 1011111 11101111 100100111 1101!00!1! 10111110011 1010!!010011 100011011!111 11011010011111 1!! 1011 11011 111011 IOIIIOI IOIII101 101110101 1010111101 110!О!1!OO! 1!OOI011!101 11IIIIOOIOIOI IO I I I I 10011001 I I I 1011 10111 100111 lll0011 11010011 11011011! !!0110011! 10011101101 !О!О1!О!001! 1101111011011 l!101010110111 Рис. 12.13. Некатастрофические двоичные сверточные коды с максимальным свободным расстоянием. (6,3,5) (8, 4. 6) (10. 5, 7) (12, 6, 8) (14, 7, 10) (!6, 8, 10) (18, 9. ! 2) (20. 10. 12) (22. ! I, 14) (24. 12, l5) (26, !3, !6) (28, l4, !6) (9,3,8) (!2,4, Io) (I5. 5, 12) {18,6, 13) (21,7, !5) (24, 8, 16) ,(27, 9; 18) (30, 10, 20) (33, 11, 22) (36, 12, 24). (39, 13, 24) (42, 14, 26) (12, 3, 10) (!6,4, 13) (20, 5, 16) (24, 6, 18) (28, 7, 20) (32, 8, 22) (36, 9, 24) (40, 10, 27) (44, 11. 29) (48, 12, 32) (52, 13, 33) (56, 14, Зб) 101 1101 10101. !!010! IOIIIOI 10111001 !!001IOOI 1111001001 11101011001 11101111!001 101001100100! 11010010010001 111 11I! lllll 101111 IIOOIII I I I IO I I I 101001111 I 101010111 101111100!1 101101001111 11!0101110111 11111010110111 
l2.6. Ал1 Оритмы си нД Ром нов О ДеКОДиРОВАния 423 12.6. АЛГОРИТМЫ СИНДРОМНОГО ДЕКОДИРОВАНИЯ Предположим, что принята бесконечная последовательность v, состоящая из слова сверточного кода и шума: v = с+е. Точно так же, как и в случае блоковых кодов, можно вычислить синдром: = уЯт = Ент однако в этом случае синдром имеет бесконечную длину. Декодер не просматривает весь синдром однократно. Он работает с конца, вычисляя компоненты s по мере их поступления, исправляя ошибки, и сбрасывая те компоненты s, которые вычислены давно. декодер содержит таблицу сегментов синдромов и сегментов кон- фигураций шума, которые приводят к данным сегментам син- дрома. Когда декодер находит в таблице полученный сегмент синдрома, он исправляет начальный сегмент кодового слова. Приведем примеры различных синдромных декодеров. Начнем с декодера для 112,9)-кода Вайнера ‒ Эша. Он показан на рис. 12.14. Входящий поток битов поступает на п„параллельных линий; синдром вычисляется путем нахождения проверочного бита по принятым информационным битам и его сравнения с при- нятым проверочным битом. Необходимо вычислить лищь столько синдромных битов, сколько их требуется для исправления оди- ночной ошибки в первом кадре. Возможные конфигурации оди- ночных ошибок в первых трех кадрах и соответствующие первые три бита синдрома приведены в виде таблицы на рис. 12.15. За- метим, что правый бит равен единице тогда и только тогда, когда в первом кадре имеется ошибка. В этом случае два других бита синдрома точно определяют местонахождение ошибки в первом кадре. Элементы, изображенные на рис. 12.14 штриховыми линиями, могут быть включены в декодер для восстановления кодовых слов, содержащих проверочные биты. Если такой необходимости нет, то эти элементы могут быть исключены. Необходимо рассмотреть еще одну задачу. После исправления первого кадра нужно изменить синдром таким образом, чтобы он не вызывал ошибочного исправления в следующем кадре. Это МОЖНО СдЕЛатЬ НЕСКОЛЬКИМИ СПОСОбаМИ, И ХОтя ВСЕ ОНИ ПрИГодНь1 для данного кода, в случае более мощного кода они ведут себя совершенно по-разному. Возможны два варианта: 1) после каждого исправления ошибки устанавливается нуле- вое состояние регистра синдрома; 
424 1'Jl 12. ~вкрточ НыЕ КЩ[Ы Рис. 12.14. декодер для (12, 9)-кода Вайнера ‒ Эша. Кон1рцгцрация ошибок Синдром Чеввер1пый кадр Tpemuu кадр Первый кадр 8mopoQ кадр Рис. 12.15. Таблица декодирования для (12, 9)-кода Вайнера ‒ Эша. 2) из регистра синдрома вычитается корректирующий синдром. Первый вариант характерен для кодов, исправляющих одну ошибку. Изучим второй вариант на более сложном примере. 0000 ОООО оооо 0000 0000 0000 0000 0000 0001 ОО1О 0100 1000 0000 0000 0000 ОООО 0001 0010 0100 1000 0000 0000 0000 0000 0001 0010 О1ОО 1ООО 0000 0000 0000 000() 0000 0()00 0000 0000 111 O I I 10. 001 110 110 010 010 1 0 () 100 1ОО 100 
12.в. АлгоРитмы синдРомного декодиРОВАния 4щ На рис. 12.3 был представлен кодер для (6,3)-кода, исправля- ющего двойные ошибки. Соответствующий декодер изображен на рис. 12.16. Он использует таблицу синдромов, приведенную на рис. 12.17. Кодер исправляет две ошибки в щести первых битах. С помощью обратной связи вклад каждой исправленной ошибки удаляется из регистра синдрома; так как код несистематический, информационные символы восстанавливаются по исправленному Ре.уварующао бу~ер Рис. 12.16. Декодер для сверточного (6, 3)-кода. Ксжрк~~ац~л с(.инск. Сандром Чеавераы11 Трегпай Bnopзй кадр кодр кадр Первый кадр Рис. 12.17. Таблица декодирования для сверточного (6, 3) -кода. 0 0 оо О0 «0 0О t> I I « () 0 00 «1 I 0 «« «О 0Î 0 I I « 0 () 0 0 0 1 I 0 «« () 0 О 1 I () I I О 1 О 1 () I «1 1 0 1О I « 1 (i 00111 00101 00010 «10OI О1101 11011 I () O I I () I 0 I I О 1111 11001 1ООО1 
4Щ ГЛ 12. СВЕРТОЧНЫЕ КОДЫ Кон(раурация ошибок Синаром °" 111ОО! 111ООО ОО1О11 11!О11 О1!1О! 111101 1!ООО! !!ООО! !О1ОО! !!ООО! ()110() I 011001 Рис. 12.18. Таблица декодирования для сверточного (12, 6)-кода. СЕрии ин(рормационнь® бито~ Разделение но. пара,ллельные по(поки Рис. 12.19. декодер для сверточного (12, 6)-кода. ООООООООООО! ООООООООО()11 00000000()IOI 000000001001 0 0 0 0 0 0 0 I () () () .1 ОООООО!ОООО! 000001000001 000010000001 000 I 000() 000 I 001000000001 О I О О О О О 0 () (> () 1 100000000001 0 0 0 0 0 () 0 () () () I () 0 0 0 0 0 () () () () I I () ООООО0001010 О О 0 0 0 0 0 1 (> i) I () 000000!О о!О О О О О О ! О!) ) (, 1 () ОООО ! 00 1'>(> ! о 00 010 00()" ) 1() 00100000(i ) 1() О l О 0 О 0 О 0 (' () I () 100000000010 () () () () 0 I I I ()011 () () () () I 1 10()10 ! 00() 1 О 1 ()() 1()()! 0010() I 01()001 010001 1() () () 01 100001 
itе Алгомтмь! синд~омного двкодир0В4н~я 497 РвЯеленце на параллельны® новака Серии и~формациОнных 0LJAl01 Рис. 12.20. Другой декодер для сверточного (12, 6)-кода. кодовому слову. Для восстановления информации используется следующее соотношение: 1 = НОД [х' + х + 1, х' + 1] = = х (х' + х + 1) + (х + 1) (х' + 1). Декодер на рис. 12.16 не является полным, так как существуют синдромы, не вошедшие в таблицу декодирования. В принципе можно исправлять некоторые другие конфигурации ошибок, включив в таблицу дополнительные синдромы и увеличив длину синдромной памяти. Практически, однако, лучшим способом улучшения характеристик системы является, по-видимому, выбор кода с большей длиной блока. Прежде чем пытаться преобразовать синдромный декодер в полный, следует познакомиться с декодером Витерби, который будет описан в $ 12.8. В заключение параграфа рассмотрим пример систематического сверточного (12,6)-кода. Этот код может исправлять две ошибки в блоке длины 12. В $ 13.4 мы вернемся к изучению этого кода, рассматривая его как мажоритарно декодируемый код. Однако в настоящем параграфе используется синдромное его декодирова- ние, таблица декодирования приведена на рис. 12.18. Синдромы, 
4Щ 1'л. 12. свюточíblк коды расположенные выше пробела, соответствуют конфигурациям ошибок, содержащим ошибку в правом информационном бите, а синдромы, расположенные ниже пробела, соответствуют конфи- гурациям ошибок, содержащим ошибку в правом проверочном бите, но не содержащем ошибок в правом информационном бите. Декодер, представленный на рис. 12.19, проверяет лишь син- дромы, расположенные выше пробела, и поэтому позволяет испра- влять информационные биты лишь при условии, что конфигурация ошибок лежит в пределах конструктивных возможностей деко- дера. Однако такой декодер не находит неисправляемых, но обна- руживаемых конфигураций ошибок. Чтобы найти такие кон- фигурации, в конструкции декодера надо предусмотреть проверку синдромов, расположенных ниже пробела. Такой декодер, обес- печивающий обнаружение ошибок, представлен на рис. 12.20. 12.7. СВЕРТОЧНЫЕ КОДЫ ДЛЯ ИСПРАВЛЕНИЯ ПАКЕТОВ ОШИБОК Пакетом ошибок длины 1 называется любая последовательность t символов, первый и последний символы которой не равны нулю. В бесконечно длинном слове, принятом декодером сверточного кода, может появиться много ошибок, и мы можем считать, что эти ошибки собраны в пакеты различной длины. Если отдельные пакеты ошибок приходят не часто, то декодер в каждый момент времени содержит лишь один пакет ошибок. Сверточный код, для которого декодер может исправлять любой изолированный пакет ошибок длины t (при условии, что другие пакеты ошибок находятся достаточно далеко), называется сверточным кодом, способным исправлять пакеты ошибок длины t. Очевидно, что любой сверточный (n, k)-код, исправляющий t ошибок, будет исправлять любой пакет ошибок длины /. Свер- точный код для исправления более длинных пакетов может быть получен перемежением. Чтобы получить сверточный (jn, jk)-код из (n, Й)-кода, возьмем j одинаковых (n, k)-кодеров и построим кодовые слова, чередуя их выходные символы. Если исходный код может исправлять любой пакет ошибок длины 1, то, очевидно, код-перемежение может исправлять пакет ошибок длины Например, систематический сверточный (14,7)-код с длиной кодо- вого ограничения 6 и порождающими многочленами g, (х) = 1, g, (х) = х' + х' + х' + 1 может исправлять два любых ошибочных символа в любом интер- вале длины 14. Взяв четыре одинаковых (14,7)-кода и перемежая символы, можно получить (56,28)-код, который будет исправлять все пакеты ошибок длины 8. 
12.7. КОДЫ ДЛЯ ИСПРАВЛЕНИЯ ПАКЕТОВ ОШИБОК 429 Методом перемежен ия можно получить сверточный код из сверточного кода. Если g (х) порождающий многочлен исход- ного кода, то g (х~) ‒ порождающий многочлен кода-перемеже- ния. В прцведенном выше примере порождающие многочлены после перемежения принимают «цд (x) = 1 д (х) =- х24 + хйо -( хз + 1. Мы уже видели, что коды-перемежения для циклических блоковых кодов ведут себя аналогично. Перемежая приведенные на рис. 12.13 короткие сверточные коды, исправляющие случайные ошибки, можно построить боль- шое число сверточных кодов, исправляющих пакеты ошибок. Эги коды-перемеженця C3)'дут исправлять не только пакеты оши- бок, но и многие конфигурации случайных ошибок. Однако если требуется исправлять только пакеты ошибок, то можно получить лучшие характеристики, используя коды, предложенные специ- ально для исправления пакетов ошибок. Классом таких кодов, способных исправлять любые пакеты ошибок длины не более Хп„ где А конструктивный параметр, являются коды Ивадаре. Определение 12.7.1. Пусть А, и и, любые положительные целые числа. Кодом Ивадаре называется исправляющий пакеты ошибок двоичный систематический сверточный код со следующей порождающей ((n, ‒ - 1) х n„)-матрицей из многочленов: g>(x) д2(-~) ~(х) =- У(п~ ‒ 1 i(x) где для матричных элементов g;,, (х} использовалось сокращенное обозначение g,. (х) и л. (у1 y(.'.+1) (»е ‒ <)+< ‒ З 3 y(<-+~) (»о ‒ i') ‒ 1 ~ 1 д Яй1 / 1 О Наибольшую степень, равную (А + 1} (2n, ‒ 1) ‒ 2, имеет порождающий миогочлен g, (х). Поэтому коды Ивадаре являются сверточными ((m + 1) n„(in -,'- 1) (n, ‒ 1}}-кодами с числом кад- ров т, равным m =- (Х + 1) (2nо 1) 2. Как мы увидим, этот код исправляет любые пакеты ошибок длины не более Хп,. Проверочная матрица цз многочленов такого кода равна Н(х) =(g,(х} g (õ)... g~„,,>(х) 1]. 
4ЭО йл. м. сваеточнык коды Так как n, ‒ Й, =- 1, имеется лишь один синдромный многочлей s(x) = g g; (x) e; (x)+ e„,(õ) = i=1 (x) ( g [»(л+() (л~ ‒ (( ‒ I+ x(i.+() (зп,> -') , 'g'- 3] е (x) i==0 Декодер использует этот многочлен для обнаружения пакетов ошибок. Предположим, что пакет начинается в первом кадре и содержит Хп, битов. Если он начинается не в первом бите пер- вого кадра, то он может захватывать (Х + 1)-й кадр. Чтобы дока- зать, что этот код может исправлять такой пакет ошибок, необходимо показать, что декодер может восстановить по синдрому пакет ошибок, а также что пакет ошибок, начинаю- щийся в более позднем кадре, не вызовет сбоя в работе деко- дера. Декодирование кодов Ивадаре лучше всего пояснить на при- мере, поскольку структура всех этих кодов одинакова. В качестве примера рассмотрим (72,48)-код Ивадаре с и, = 3, Х = 4 и, сле- довательно, с m+ 1 = 24. Кодер представлен на рис. 12.21. Обозначим через с, (х) многочлен проверочных битов, а через с, (х) и с, (х) многочлены информационных битов. Соответствую- щими многочленами ошибок будут е, (х}, e., (х) и е, (х). Синдром- ный многочлен равен s (х) = е, (х) + (х' + х") е, (х} + (х' + х"} е, (»), где для пакета ошибок, начинающегося в первом кадре, ез (х) езО + е31» + e32» + е33» е, (х) = е.„+ е„х + е„х-" + е„х' + е„»', е, (х) = е„+ е„х + e„x' + е„х' + е,„х'. Заметим, что если пакет начинается в первом кадре, то е„равняется нулю. Если, далее, е,~ отличен от нуля, то е,() и е,„pBBHbI нулю; если е„отличен от нуля, то е„равен нулю. Это следует из того, что длина пакета не превосходит 12. На рис. 12.22 представлены коэффициенты s (х) для трех случаев, в которых пакет ошибок начинается в е„, е.„или е„соответственно. Порождающие много- члены были выбраны так, чтобы на каждый бнт синдрома влиял лишь один ошибочный бит. Кроме того, заметим, что, хотя в на- чале многочлены перемежены и располагаются при формировании синдрома в порядке е, (х), е, (х), е, (х), над их образами затем производится обратное перемежение и они появляются в обратном порядке, т. е. в порядке е, (х), е, (х), е, (х). 
12.7. КОДЫ ДЛЯ ИСПРАВЛЕНИЯ ПАКЕТОВ ОШИБОК 431 20-ро,эряднь!6 регucmp сдвига Рис. 12.21. )Содер 1лл (72, 48)-кода Ива,ларс. Сцндромньш многочлен S( 5э $~ 51 S() Равен: если пакеа начинаеася в е~ с'.222 О 1111 02232 3335 О 3210 5210 32! О 3210 3210 если пакеа начинаеася в рщ ° " p 1 1 р 2222 ррррр 1111р 02222 3333 432.1 321 0 4321 3210 321 O если по.кем начинаеася е г„ ° О 1 1' 22.2.2 p pppOp 1111 О 2222О С321 432.1 С 321 С 32.1 3210 -~ ‒ '- Оаклин Omanue Omenue ® р~~~~ у ~ e,® e2(X) Е,(Х) Рис. 12.22. Структура сцндроли для (72, 48)-ко,и Ивадзрс. 1~аждьи1 бит многочлена е, (х} воздействует на синдром дважды: за его первым появлением следует отклик с задержкой на 15 би- тов. Аналогично каждый бит многочлена е, (х) воздействует на синдром дважды: за его первым появлением следует отклик z за- 
432 <л. >>. сВеРтОч ные кОды держкой на 14 битов. Так как е„и е„не могут одновременно быть ненулевыми, эти пары ошибок никогда не перекрываются. Каж- дый бит многочлена е, (х) воздействует на синдром один раз; за его первым появлением следуют только пули ‒ один с задерж- кой на 14 битов, а другой с задержкой на 15 битов. Эти нули опре- деляют е, (х). Если в действительности пакет ошибок начинается в 1-м кадре, то синдром сдвигается вправо на 1 битов и перед ним вставляется 1 нулей. Процедура декодирования построена таким образом, что эта конфигурация не будет восприниматься как пакет ошибок, начинающийся в первом кадре. Перейдем к описанию декодера, изображенного на рис. 12.23. После того как в него поступили первые 20 кадров, в регистре синдрома хранятся первые 20 битов синдрома, причем s, распо- лагается справа. Аналогично первый принятыи бит многочлена v> (х) находится в крайнем правом разряде v (x}-регистра. В тече- ние еще четырех последующих тактов первыи принятый бит и, (х} не достигнет крайнего правого разряда v, (к}-регистра. Описание работы декодера начнем с этого момента времени. Первые четыре бита синдрома зависят лишь от ошибок в принятых проверочных битах и нас не интересуют. Следовательно, та часть рис. 12 23, "0j) ии йькОд но! Х Рис. 12.23. Декодер для (72, 48)-кода Ивадаре. 
12.8. АЛГОРИТМ ДЕКОДИРОВА НИЯ ВИТЕРБИ 433 которая нанесена штриховыми линиями, может быть опущена. Заштрихованные разряды регистра сдвига также могут быть опу- щены, а s,9 'ìîæåò вводиться непосредственно из предшествующего сумматора по модулю 2. Сначала декодер исправляет второй бит каждого кадра пакета ошибок, а затем возвращается к началу пакета и исправляет пер- вый бит каждого кадра. Поэтому декодер имеет четырехразрядный регистр сдвига, в котором он хранит с, (х) после завершения испра- вления. Третий бит каждого кадра является проверочным; он не исправляется. Для исправления ошибки в v, (х) декодер проверяет компо- ненты s4 и s)g синдрома. Если обе компоненты равны единице, то правый бит v2 (х} является ошибочным и в потоке данных, а также в регистре синдрома делаются соответствующие исправле- ния. Пакет ошибок е, (х), начинающийся в более позднем кадре, не может вызвать сбоя, так как отклик е, (х) равен нулю. Парал- лельно с этим для нахождения ошибки в v, (х) декодер четырьмя кадрами позднее проверяет компоненты s u s ñèíäðîìà. Если они обе равны единице, а s, равна нулю, то правый бит и, (х)-регистра ошибочен. Такая проверка v, (х) не приводит к нахождению оши- бок в течение первых четырех тактов, но затем начинает испра- влять ошибки в v, (х). Пакет е, (х), начинающийся в более позднем кадре, не может вызвать сбоя, так как отклик е, (х} равен нулю. В силу выбора способа проверки еще не исправленный бит е,(x) также не может вызвать сбоя, и поэтому s равна нулю. После появления пакета ошибок длины 12 принятое слово не должно содержать больше ошибок, чтобы синдрому ничто не мешало во время исправления этого пакета. Для этого необхо- димо, чтобы до 29-го кадра не происходило ошибок. Следовательно, между пакетами ошибок должно быть свободно от ошибок не менее 24 кадров (72 хороших бита). При выполнении этого пра- вила декодер будет успешно исправлять следующие друг за дру- гом пакеты ошибок длины не больше 12 каждый. 12.8. АЛГОРИТМ ДЕКОДИРОВАНИЯ ВИТЕРБИ Алгоритм декодирования Витерби является полным алгоритмом декодирования сверточных кодов. Так как он является полным, вероятность отказа от декодирования равна нулю; однако при фиксированном коде вероятность ошибки декодирования будет больше, чем у неполного декодера. Этот алгоритм практически употребляется для двоичных кодов с малой длиной кодового ограничения ‒ в настоящее время пределом являются длины кодового ограничения от 7 до ]0. Недвоичные коды декодировать декодером Виберби труднее, и это возможно лишь при очень малых длинах кодового ограничения, 
434 ГЛ. 12. СВеРТОч HblE КОДЫ Ниже будет описана процедура, которая называется декоди- рованием по минимуму расстояния и приводит к неплохому (в прин- ципе} декодеру для сверточных кодов. Этот декодер является деко- дером по максимуму правдоподобия в случае двоичного шума без памяти. Выберем окно декодирования ширины b, превышающей длину блока и, вычислим все кодовые слова длины b, сравним принятое слово с каждым из них и выберем кодовое слово, бли- жайшее к принятому слову. Первый информационный кадр вы- бранного кодового слова берем в качестве первого информацион- ного кадра декодированного кодового слова. Декодированный пер- вый информационный кадр затем кодируется вновь и вычитается пз принятого слова. После этого в декодер вводится и, новых сим- волов, а первые и, символов сбрасываются, и процесс повторяется для нахождения следующего информационного кадра. Конечно, для сверточных кодов даже весьма умеренной слож- цости эта процедура совершенно непрактична, однако знакомство с процедурой декодирования по минимуму расстояния полезно с теоретической точки зрения. В дальнейшем мы опишем практи- ческую реализацию декодера по минимуму расстоянця для корот- ких сверточных кодов. Непосредственно реализовать декодер по минимуму расстоя- ния трудно. Однако существует эффективный метод реализации такого декодера (в какой-то мере аналогичный использованию БПФ-алгоритма Кули ‒ Тычки для оценки дискретного преобра- зования Фурье и использованию алгоритма Берлекэмпа ‒ Месси для синтеза авторегрессионного фильтра). Он называется алго- ритмом Витерби и основывается на методах теории динамического программирования. Как и в других случаях, практически полез- ными оказываются трудные для понимания, но эффективные в вычислительном смысле алгоритмы. Поэтому теоретически лучше изучать декодер по минимуму расстояния, а в реальном декодере, если это возможно, использовать алгоритм Витербп. Декодер Витерби итеративно обрабатывает кадр за кадром, двигаясь по решетке,~аналогичной используемой кодером, и пы- таясь повторить путь кодера. В любой момент времени декодер не знает, в каком узле находится кодер и поэтому не пытается декодировать этот узел. Вместо этого декодер по принятой после- довательности определяет наиболее правдоподобный путь к каж- дому узлу и определяет расстояние между каждым таким путем и и оп пятой последовательностью.' Это расстояние называется лерой расходимости пути. Если все пути в множестве наиболее правдоподобных путей начинаются одинаково, то декодер, как правило, знает начало пути, пройденного кодером. В следующем кадре декодер определяет наиболее правдопо- добный путь к каждому из новых узлов этого кадра. Но путь в каждый новый узел должен пройти через один из старых узлов. 
12.8. AJIl'ÎÐÈÒÌ ДЕКОДИРОВАНИЯ ВИТБРБИ 436 Возможные пути к новому узлу можно получить, продолжая к этому узлу те старые пути, которые можно к нему продолжить. Наиболее правдоподобный путь находится прибавлением прираще- ния меры расходимости на продолжениях старых путей к мере расходимости путей, ведущих в старый узел. В каждый новый узел ведет q" таких путей, и путь с наименьшей мерой расходи- мости является наиболее правдоподобным путем к новому узлу. Этот процесс повторяется для каждого из новых узлов. В конце итерации декодер знает наиболее правдоподобный путь к каждому из узлов в новом кадре. Рассмотрим множество выживших путей, ведущих в множество узлов в r-й временнбй кадр. Эти пути проходят через один или более узлов в первом временном кадре. Если все пути проходят через один и тот же узел в первом временнбм кадре, то вне зависимости от того, в каком узле кодер находится в r-й временнбй кадр, мы знаем наиболее правдоподобный среди посещенных им в первый временнбй кадр узлов. Иначе говоря, мы знаем первый информа- ционный кадр, хотя еще не приняли решение об r-м кадре. Для построения декодера Витерби требуется выбрать ширину окна декодирования Ь, которая обычно в несколько раз превосхо- дит длину блока, и оценить работу декодера путем моделирования на ЭВМ. В и-й временной кадр декодер проверяет, все ли выжив- шие пути имеют одинаковое первое ребро. Если первое ребро одинаково, то оно определяет первый декодированный информа- ционный кадр, который подается на выход декодера. Затем декодер отбрасывает первое ребро и использует новый кадр принятого слова для следующей итерации. Если вновь все выжившие пути проходят через тот же узел самого старого среди оставшихся кадров, этот информационный кадр декодируется. Такой процесс декодирования кадров продолжается беско- нечно. Если bвыбрано достаточно большим, ,то во временном кадре почти всегда может быть принято однозначное решение. Если для данного канала код построен надлежащим образом, то это решение с большой вероятностью будет правильным. Этому, однако, может помешать несколько обстоятельств. Не все выжив- шие пути могут проходить через один и тот же узел. В этом слу- чае процесс декодирования нарушается. Декодер может разрешить неопределенность, используя любое произвольное правило. LLpy- гая возможность состоит в том, что декодер не принимает решения, а отмечает этот участок как сегмент кодового слова, который не- возможно исправить. В этом случае декодер становится неполным декодером. Лучше всего это понять на примере, который будет приведен ниже. Иногда декодер принимает однозначное, но ошибочное реше- ние. Оно обязательно сопровождается дополнительными ошибоч- 
436 гл. 12. сверточные коды Рис. 12.24. Наглядное представление работы декодера Витерби. ными решениями декодера, но в случае некатастрофического кода декодер через короткое время обнаружит это. Полезно представлять себе декодер Витерби как окно, через которое можно наблюдать часть решетки. Это иллюстрируется рис. 12.24. На рисунке можно видеть только часть решетки конеч- ной длины, на которой отмечены выжившие пути. С течением времени решетка скользит влево ‒ на практике довольно быстро. При появлении справа новых узлов некоторые пути продол- жаются до них, а другие исчезают; самый старый столбец выходит из-под наблюдения налево. Со временем левый столбец узлов исчезает, и (прп нормальной работе) лишь для одного из узлов этого столбца будет существовать проходящий через него путь. На рис. 12.25 приведен пример работы алгоритма Витерби в случае сверточного (6,3)-кода с порождающими многочленами g, (х) = х' + х + 1 и g, (х) = х' + 1. Кодер для этого кода пока- зан на рис. 12.3. Для простоты выберем в качестве информацион- ной последовательности нулевую и (тоже для простоты) декодер с окном декодирования b, равным 15. Предположим, что v = 10100000100000000000...; это соответствует передаче нулевого кодового слова с тремя ошибками. Л;иаграмма состояний декодера представлена на рис. 12.25. На третьей итерации декодер находит кратчайший путь к каждому узлу третьего кадра. Затем на f-й итерации декодер находит кратчайший путь к каждому узлу r-ro кадра, продолжая пути, ведущие к узлам (f 1)-го кадра и сохраняя кратчайший путь к каждому узлу. Иногда может возникать неопределенность. В нашем примере имеются две неопределенности в пятой итерации. декодер может либо разрешить неопределенность случайным образом, либо 
00 ОО 00 00 lO IO IO 10 с = ) О l Q ()0 ()() l O ()() 0() ()() ОЦ ()() . . Итерация 9 Иаерация 3 Иаерация 10 Иверация 11 Иверацоя 4 Итерация 12. Иверацця 5 Mmepau 6 Hme eau, 15 Иаерацця 1а Иеiерацая 7 Ищерацоя В Рис. 32.25. Пример работы алгоритма Витерби. Иаерацоя 15 
438 Рл. и. свеиочнма коды сохранять оба пути, относительно которых существую неоаре. деленность. В нашем примере неопределенности сохраняются до тех пор, пока не выявляется более правдоподобный путь или сомнительный участок не исчезает из поля зрения декодера. По мере продвижения декодера к последующим кадрам из его памяти выводятся более ранние кадры. Если в самом старом кадре существует лищь один узел, через который проходит путь, то декодирование является полным. Если таких путей несколько, то принимается решение об обнаружении неисправляемой конфигу- рации ошибок. Она либо отмечается в качестве таковой, либо производится случайный выбор. В нашем примере информационная последовательность может быть декодирована либо как i =0000000.. °, либо как i =1 01 0000.... Если сделать ширину окна декодирования более 15, то ошибка по-прежнему останется неисправляемой. Для исправления этой конфигурации ошибок требуется код с ббльшим свободным рас- стоянием. Декодер, символически изображенный на рис. 12.25, при прак- тической реализации выглядит совершенно иначе. Например, выжившие пути через решетку представляются таблицей 15-бито- вых чисел. На каждой итерации некоторые 15-битовые числа сдвигаются влево, причем левый бит сбрасывается, а справа до- бавляется новый бит. Другие 15-битовые числа не наращиваются, а сбрасываются из таблицы. По мере продвижения декодера накопленная мера расходи- мости увеличивается. Для того чтобы избежать проблемы пере- полнения, необходимо время от времени уменьшать эту меру. Простая процедура состоит в периодическом вычитании из всех мер расходимости наименьшей такой меры. Очевидно, что это не повлияет на выбор максимального расхождения. В случае когда длина кодового ограничения мала, декодеры Витерби могут работать очень быстро. Например, практически возможно построить декодер со 128 узлами на каждом уровне, который производит 10 миллионов итераций в секунду. !2.9. АЛГОРИТМЫ ПОИСКА ПО РЕШЕТКЕ Можно улучшить характеристики сверточного кода, увеличив длину кодового ограничения. Декодер Витерби, однако, быстро становится непрактичным. 'при длине кодового ограничения 10 де- кодер двоичного кода уже должен помнить 1024 выживших путей. 
12.9. АЛГОРИТМЫ ПОИСКА ПО РЕШЕТКЕ 439 Яля того чтобы ослабить влияние больших длин кодового огра- ничения, была разработана стратегия, игнорирующая маловероят- ные пути по решетке как только они становятся маловероятными, При такой стратегии не принимается решений о том, чтобы окон- чательно оставить данный путь. Время от времени декодер решает вернуться назад и продолжить оставленный ранее путь. Все такие стратегии поиска наиболее вероятного пути на решетке известны под общим названием последовательно~о деко- дирования. Последовательное декодирование носит довольно общий характер и может использоваться как в каналах, в которых при- нимаются жесткие решения (мы рассмотрим их в этом параграфе), так и в каналах, допускающих стирание или даже мягкие решения (мы изучим их в гл. 15). Представим себе решетку сверточного кода с большой длиной кодового ограничения, скажем равной 40. Для того чтобы найти решение, эту решетку нужно исследовать на нескольких сотнях уровней. Еще больше будет число узлов на каждом уровне. Всего таких узлов будет 2", или приблизительно 10'~. декодер должен найти по этой решетке путь, наиболее близкий к принятому слову в смысле расстояния Хэмминга по крайней мере он должен сделать это с очень высокой вероятностью, хотя время от времени ему дозволено отказываться от декодирования. Такой отказ яв- ляется дополнительным видом ошибки, не существовавшим в де- кодере Витерби; декодер может отказаться от декодирования даже в том случае, когда декодирование по минимуму расстояния было бы верным. В отличие от оптимальной процедуры алгоритма Витерби декодер, описание которого мы начинаем, просматривает только первый кадр, принимает решение и переходит в узел решетки на первом уровне. Затем он продолжает эту процедуру. На каж- дом уровне он находится в одном узле; он смотрит на следующий кадр, выбирая ребро, ближайшее к принятому кадру, и переходит в узел на следующем уровне. Если ошибок нет, то эта процедура работает превосходно, однако при наличии ошибок декодер может случайно выбрать неправильную ветвь. Если декодер продолжает следовать по ложному пути, он внезапно обнаружит, что происходит слишком много ошибок. Но это ошибка декодера, а не канала. Последова- тельный декодер верпется назад на несколько кадров и начнет исследовать альтернативные пути до тех пор, пока не найдется правдоподобный путь; затем он будет следовать вдоль этого аль- тернативного пути. Ниже будут кратко описаны правила, кото- рыми он руководствуется при этом поиске. Характеристики деко- дера зависят от ширины b окнадекодирования, измеряемой числом кадров кодового слова. Если декодер нашел путь, проходящий через Ь кадров решетки, он принимает окончательное решение 
44О Гл ° 12 ° сВеРТОч алые кОды относительно самого старого кадра, выводит соответствующие биты из окна и вдвигает в окно новый кадр. Мы можем считать, что последовательный декодер движется вдоль слова сверточного кода с переменной скоростью. Обычно он двигается равномерно, подавая на выход исправленные выход- ные биты. Иногда возникает небольшое затруднение, и движение на некоторое время замедляется. Реже возникают серьезные труд- ности, и продвижение декодера прекращается до тех пор, пока он не преодолеет этот сложный участок. Разработаны подробные алгоритмы реализации такой процедуры. Наиболее популярным является алгоритм Фано, к описанию которого мы переходим. В этом алгоритме требуется знать вероятность р появления ошибочного символа в канале или хотя бы верхнюю границу для р. Пока декодер следует по правильному пути, вероятное число ошибок в первых l кадрах приблизительно равно рп,1. Декодер допускает несколько большее число ошибок, но если оно намного больше, то декодер сделает вывод, что он находится на ложном пути. Выберем (быть может, моделированием) некоторый пара- метр р', больший р, но меньший 1/2, и определим перекошенное расстояние формулой ') t(l) = р'п, l d (l), где d (l) расстояние Хэмминга между принятым словом и текущим путем по решетке. Для правильного пути d (l) прибли- зительно равно рп,l, à t(l) положительно и возрастает. До тех пор пока t(l) возрастает, декодер продолжает следовать по пути на решетке. Если вдруг t(l) станет уменьшаться, то декодер за- ключает, что в некотором узле он выбрал ошибочное ребро, и воз- вращается по решетке, проверяя другие пути, Он может найти лучший путь и проследовать по нему или может возвратиться к тому же самому узлу, но уже более уверенно и продолжить путь через него. Яля того чтобы решить, когда t(l) начинает умень- шаться, декодер пользуется текущим порогом Т, который всегда кратен приращению Ь порога. Пока декодер движется вперед, порог, оставаясь меньшим t(l) и кратным приращению Л, при- нимает максимально возможное при этих ограничениях значение. Благодаря тому что Т квантуется, допускается небольшое убы- вание t(l) без пересечения порога. В алгоритме Фано требуется, чтобы д~ ° ребер, выходящих из каждого узла, были перенумерованы согласно некоторому правилу упорядочения. Это правило ставит в соответствие каж- дому ребру индекс j, j = О, ..., д~ ‒ 1. Нет необходимости за- помнить эти индексы в каждом ребре, достаточно знать правило, ') В этом выражении знак выбран так, чтобы правильной работе декодера соответствовало положительное значение расстояния. 
129~ АлГОРитмы пОискА пО Решетк~ 441 по которому при возвращении декодера в узел по ребру с извест- ным индексом j он мог переупорядочить ребра, найти ребро ) и, зная его, найти ребро j + 1. Наиболее общим правилом является правило минимума расстояния. Ребра упорядочиваются в соответ- ствии с их расстояниями Хэмминга до соответствующего кадра принятого слова, а неопределенность разрешается по любому удобному подправилу. Алгоритм Фано будет нормально функцио- нировать и в том случае, когда ребрам приписан любой фикси- рованный порядок; например, ребра могут быть упорядочены лексикографически в соответствии с их информационными сим- волами. Это последнее правило упорядочения приводит к более длительному поиску назад вперед, но освобождает от необхо- димости вычисления и перевычисления порядка при достижении каждого узла. Какое правило упорядочения более просто в реали- зации, зависит от конструкции декодера. Для простоты понима- ния структуры алгоритма правило упорядочения лучше оставить несколько неопределенным; предположим лишь, что в каждом узле ребро, ближайшее к принятому ребру по расстоянию Хэм- минга, считается первым. Декодер будет искать ребра из каждого узла в соответствии с этим правилом. Реализация декодера в виде регистра сдвига, основанная на алгоритме Фано, приведена на рис. 12.26. Основой декодера является копия кодера с несколькими вспомогательными запоми- нающими регистрами. Декодер пытается подать символы в копию кодера таким образом, чтобы на его выходе появилось кодовое слово, достаточно близкое к принятому слову. После каждой ите- рации он может обратиться к последнему кадру, поданному в ко- пию кодера. Он может изменить информацию в этом кадре, вер- нуться к более раннему кадру или ввести новый кадр. Декодер решает, что делать, основываясь на сравнении величины переко- шенного расстояния 1(1) и текущего значения порога Т. Алгоритм Фано, который контролирует декодер, упрощенно представлен на рис. 12.27. Практические детали, связанные с ко- нечностью размеров буфера, временно игнорируются. Если шум в канале мал и ошибки редки, то декодер будет цирку- лировать по правой петле рис. 12.27, каждый раз сдвигая все регистры рис. 12.26 на один кадр вправо. До тех пор пока l(l) остается выше порога, декодер продолжает сдвигаться вправо и повышать порог так, чтобы тот оставался близким к t(l). Если l(l) опускается ниже порога, то декодер проверяет альтерна- тивные ребра этого кадра, пытаясь найти то ребро, которое нахо- дится выше порога. Если он не может сделать этого, то возвра- щается назад. Как мы увидим в дальнейшем, если декодер начал возвра- щаться, то алгоритм заставит его двигаться назад до тех пор, пока он не найдет альтернативный путь, который находится над теку- 
44~ Гл. 1~. ~ВЯИ'Очные КОдь! 1 I 1 Г Копия кодера K.oìàíáà на возрасаание данного информационного кадра Первая проба ua(pop MQ. ционного кадра ~о-ичный региса Выходные символы декодера (к пользовааелю) манды сдвиг зрасванце Рис. 12.26. Реализация алгоритма Фано в виде регистра сдвига. щим значением порога, или узел, в котором был установлен теку- щий порог. Затем декодер снова двигается вперед уже с понижен- ным порогом; но теперь, как мы убедимся позднее, порог не повы- шается до тех пор, пока декодер не придет в новый узел, ранее не исследованный. Каждый раз, когда декодер, двигаясь вперед, посещает ранее исследованный узел, он имеет меньший порог. Декодер никогда не посетит один и тот же узел дважды с одинаковыми значениями порога. Следовательно, он может посещать любой узел только конечное число раз. Это поведение гарантирует нас от зацикли- вания декодера. декодер продолжает обработку данных, проводя правильное или неправильное декодирование. Теперь необходимо доказать два сделанных ранее утвержде- ния: 1) если декодер не может найти альтернативный путь, то он двигается назад к узлу, в котором было установлено текущее значение порога, и понижает его; 2) декодер не будет повышать порог до тех пор, пока не достигнет ранее не исследованного узла. Что касается первого утверждения, очевидно, что если декодер не может найти новое ребро, от которого он должен двигаться 
12.9. АЛГОРИТМЫ ЛОИСКА ПО РЕШЕТКЕ- 443 вперед, то оН должен в конце концов возвратиться к указанному узлу. Но если в предшествующем некоторому узлу кадре переко- шенное расстояние r(r 1) меньше текущего значения порога Т, то порог был увеличен в 1-м кадре. В блок-схему на рис. 12.27 включен этот тест на нахождение узла, в котором был установлен текущий порог; теперь в этом узле порог уменьшается. Яля того чтобы доказать второе утверждение, заметим, что после того, как порог понижен на Л, декодер ищет следующие ребра в 'foM же порядке, что и до этого, до тех пор, пока не найдет то место, в котором перекошенное расстояние, ранее бывшее меньше порога, становится больше него. gIo этого момента порог Т не Индикатор предыдущего движения г~ачало: ~1 - -оО 4-0 7-О М-1 -О 1,если вперед М = О,если вбок -1,'если назад бил ли предыдущий итерапзивный сдвиг сдвигом назад '? QQ,- npoBepurnb, был ли последний кадр выше порого. Нет- в этом кадре был установлен Qa.-продолжать текущий опрооование порог г > Т новых г 9 Нет-опрооовоть другой путь Понаить порог и двигаться вперед жно, t() < 7+6 9 Да ‒ повысить порог до макси- мальной травною Ь величины, меньшей t~ Т-Т - И1 Сдвинугпь вправо на один кадр С-С+! М-1 Начать новый ииформа- ционнь1й кадр с первого значения (j=Q) Замечания. Кадры маркируются указателем кадра С ил1ераиии не маркирукипся Ребра, вь1кодящие изтекущего узла, маркируоася J Psc. 12.27. Развернутый алгоритм Фано. Hem ‒ посмотреть, npesbrrrraerrr nu кадр порог Да-посмовреть, находится ли smom узел в неисследованной части дерева (тогда движение правильное> 
444 гл. 12. сВеРтОчиые кОды может изменяться. Эго происходит из-за того, что после пониже- ния порога на Л перекошенное расстояние в тех узлах, где оно превышало первоначальный порог, никогда не будет меньше Т + + Л. Когда декодер продвигается в новую часть дерева, он в конце концов достигает состояния, в котором t (l ‒ 1) ( Т + Л и t(l) ) Т. В этой точке порог повышается. Это и является тестом для определения того, новый ли узел был посещен, и нет необхо- димости помнить все посещенные ранее узлы. Такой тест включен в схему на рис. 12.27. Алгоритм Фано зависит от двух параметров р' и Л, которые могут быть выбраны при помощи моделирования на ЭВМ. На практике необходимо время от времени уменьшать t(l) и Т так. чтобы эти числа не становились слишком большими. Вычитание из обеих функций некоторого числа, кратного Л, не влияет на последующие вычисления. При практическом применении следует так же выбирать ши- рину b окна декодирования в несколько раз больше длины блока. На рис. 12.28 приведена более полная блок-схема алгоритма Фано, отражающая важную роль b. Каждый раз, когда самый старый информационный кадр достигает конца буфера, что отме- чается указателем кадра, он выходит из декодера, а указатель кадра уменьшается таким образом, чтобы всегда указывать на самый старый имеющийся кадр. В противном случае декодер может попытаться возвратиться к кадру, уже вышедшему из декодера. Иногда последовательный декодер делает так много вычисле- ний, что величина входного буфера становится недостаточной. Зто явление называется переполнением буфера и является суще- ственным ограничением для применения алгоритма Фано. Вероят- ность переполнения буфера с ростом размера буфера уменьшается очень медленно, и поэтому вне зависимости от того, насколько большим выбран буфер, эта проблема полностью не снимается. Существуют два способа управления переполнением буфера. Наиболее надежным является периодическая подача в кодер известной последовательности информационных символов (обычно последовательности нулей) с длиной, равной длине кодового ограничения сверточного кода. Если буфер переполнится, то декодер считает декодирование неудавшимся, ждет известного ему момента начала следующей последовательности и снова начинает декодирование. Все данные, поступившие между моментом пере- полнения буфера и следующим включением, теряются. Такой подход несколько уменьшает скорость кода и ставит при конструи- ровании декодеров задачу синхронизации по времени. В случае когда длина кодового ограничения не слишком ве- лика, альтернативный путь состоит в движении указателя вперед. Если декодеру удастся найти правильный узел, то он может 
!гл. ллгоеитмы поискА по юшетке 445 Начало: -оо to-O Т-О м-! С -0 Да Hem м=! 9 Нее ~,, ~ 7. ' '9 нет Да Да Если возможно, AlQ увеличивь последний инуормационный кадр Пол оживь м-0 В провивном случае двигавься назад Положи вь 1 -С ! м-- ! Нее t( 1 (Т+~ 9 Да Да 1-1+ 1 М ! Начавь новый ннформацн- онный кадр с первого значения 1<0 Неа будер переполнен, ждавь нового начала Негп 1=о+ ! 9 Да L-(+1 Если возможно, уменьщйаь и 7, u t, на величину, крааную d Рис. 12.28. Ллгоритм Фано. перенастроиться. Если вероятность того, что на длине блока не произойдет ошибок, не слишком мала, то декодер, предполагая, что ошибок нет, преобразует кодовое слово в информационное слово. Если код систематический, то это делается непосредственно; в противном случае необходимо применить китайскую теорему об остатках для многочленов. Если длина свободного от ошибок сегмента принятого слова равна длине кодового ограничения, то 
446 гл. 32. свееточные коды декодер находит правильный узел и продолжает декодирование. Если в противоречии с нашим предположением появилась ошибка, то узел неправилен, и буфер скоро снова переполнится. Этот прсцесс продвижения декодера вперед продолжается до тех пор, пока не будет получено правильное декодирование. ЗАДАЧИ 12.6. Определить, какие из перечисленных ниже сверточных кодов со ско- ростью 1/2 являются катастрофическими: а. д~(х) = х~, g~(х) = хз+ х+ 1. б. gz (х) = х4+ х~+ 1, g, (x) = х4+ х~+ х+ 1. g2 (х) = х4+ хз+ 1. в. g~ (х) = х4+ х~+ х+ 1, r. gz(x) = х~+ х~+ х4+ 1 у (х) = х~+ х~+ х+ 1. 12.7. Сверточный код со скоростью 1/3 и длиной кодового ограничения 2 имеет порождающие многочлены g~ (х) = л + х + 1, gg (х) = х'" + х + I, g (х) = х~+ 1 и d, равное 8. а. Чему равно минимальное расстояние этого кода? б. Чему должна быть равна ширина окна декодирования для исправ- ления всех тройных ошибок? в. Построить исправляющий все двойные ошибки декодер для этого кода с шириной окна декодирования, равной 9. 12.8. Сверточный код над GF (4) со скоростью 1/2 имеет порождающие многочлены gz (х) = 2х~+ 2х~+ 1 и g2 (х) = хз + х+ 1. а. Показать, что этот код нв является катастрофическим. б. Показать, что его минимальнов расстояние равно 5. в. Сколько конфигураций из двух ошибок располагаются на длине ограничения декодирования, равной 8Р 12.1.а. Построить кодер для систематического некатастрсфичсско~о дгсич- ного сверточного (16, 4)-кода с минимальным расстоянием d* = 9 и длиной кодового ограничения v = 3. б. Чему равно свободное расстояние этого кода? 12.2. Каждый код Хэмминга над GF (о) может быть использован для по- строения сверточного кода над GF (о), исправляющего одну сшибку. а. Построить проверочную матрицу систематического восьмеричного (9, 7)-кода Хэмминга. б. Основываясь на этом коде Хэмминга, найти проверочную матрицу (30, 27)-кода Вайнера ‒ Эша над GF (8). в. Построить кодер и синдромный декодер. r. Чему равна скорость этого кода? Чемч равна скорость шестна- дцатеричного кода Вайнера ‒ Эша, основанного ца (17, 15)-коде Хэммпнга над GF (16)? 12.3. Построить кодер (12, 9)-кода Вайнера ‒ Эша, использующий один двоичный регистр сдвига длины 3. 12.4. Построить кодер и синдромный декодер для (32, 28)-кода Вайнера‒ Эша. 12.5. Снова рассмотреть пример, приведенный на рис. 12.25, используя в качестве принятого слова ч = 10001000001000000000.... 
447 г. Построить синдромный декодер для исправления всех двойных ошибок. 12.9. Найти систематический кодер с регистром сдвига и с обратной связью для двоичного сверточного кода с порождающей матрицей 1 б (х) = ° 0 1 х ЗАМЕЧАНИЯ Понятие сверточного кода было введено Элайсом [1954] и развито Возенкрафтом [1957]. Вайнер и Эш [1963] предложили для семейства сверточных кодов, исправ- ляющих одну ошибку, общую конструкцию, родственную конструкции кодов Хэмминга. Класс сверточных кодов, исправляющих многократные ошибки, нашел Мессн [1963]. Коды Месси просты в декодировании, но в то же время имеют не слишком хорошие характеристики. Общего правила построення семей- ства быстродействующих высококачественных сверточных кодов, исправляющих многократные ошибки, не известно. Костелло [1969) предложил некоторые пути нахождения хороших сверточных кодов с умеренной длиной блока. Основ- ные используемые в настоящее время коды были найдены поиском на ЭВМ Буссгангом [1965], Оденвальдером [1970], Волом и Джелинеком [1971], Лар- сеном [1973], Пааске [1974] и Йоханнессоном [1975]. Эти коды приведены на рис. 12.13. Общее исследование алгебраической структуры сверточных кодов было проведено Месси и Сайном [1968], а также Форни [1970], который впервые использовал решетки. Наше описание таких кодов с помощью многочленов основывается на этих статьях. Костелло [1969] показал, что е".ли в кодере введена обратная связь, то каждый сверточный код можно свести к системати- ческому. Дополнительное обсуждение абстрактных структур может быть най- дено у Лннднера и Штайгера [1977]. Создание декодеров для сверточных кодов начали со сложных декодеров с хорошими характеристиками, а затем постепенно перешли к простым декодерам с посредственными характеристиками, которые так популярны теперь. Алго- ритм поиска на решетке принадлежит Фано [1963]. Наша формулировка алго- ритма Фано следует Галлагеру [1968] и сильно отличается от первоначальной. Витерби [1967] предложил свой алгоритм скорее в учебных целях, чем в ка- честве серьезного алгоритма. Вскоре после этого Хеллер [1968] указал, что алгоритм Витерби при не слишком больших длинах кодового ограничения вполне практичен. Общее обсуждение сверточных кодов можно найти в книге Витерби и Омуры [1970], а также в обзорных статьях Форин [1974] и Месси [1975]. 
ГЛАВА 13 КОДЫ И АЛГОРИТМЫ ДЛЯ ДЕКОДИРОВАНИЯ МАЖОРИТАРНЫМ МЕТОДОМ Мажоритарное декодирование ‒ ‒ это метод декодирования, кото- рый сравнительно прост в реализации. Если желательно иметь чрезвычайно быстрые декодеры, то нужно обратиться к мажоритар- ным декодерам. К сожалению, они могут декодировать чрезвы- чайно малый класс кодов, и эти коды, как правило, слабее других. Следовательно, для практики мажоритарное декодирование имеет второстепенное значение. Несмотря на это, некоторые практиче- ские требования могут быть удовлетворены только в его рамках. Кроме того, эти коды интересны с теоретической точки зрения и открывают новые возможности теории кодов, контролирующих ошибки. Большинство известных кодов, которые могут быть декодиро- ваны мажоритарным методом, ‒ это циклические коды или рас- ширенные циклические коды. Для этих кодов мажоритарные декодеры всегда могут быть реализованы как декодеры Меггитта и отличаются особенно простой древовидной логикой для проверки синдрома. Поэтому с прагматической точки зрения мажоритарно декодируемые коды можно определить как те циклические коды, для которых декодер Меггитта может рассматриваться как стан- дартный. Однако путь нахождения этих кодов весьма сложен и запутан. 13.l. ДЕКОДИРОВАНИЕ МА)КОРИТАРНЫМ МЕТОДОМ В кодах Рида ‒ Маллера, изучавшихся в $ 3.6, декодирование каж- дого информационного символа производилось путем нахождения большинства голосов в множестве проверочных равенств. Суще- ствуют и другие коды, которые могут быть декодированы мажо- ритарно. В ретроспективе история таких кодов обычн просле- живается до кодов Рида Маллера. Напомним, что любой линейный (и, Й)-код над GF (q) имеет проверочную матрицу Н, а кодовые слова удовлетворяют равен- 
1з.l. +EKo+HPoBAHHE MA)KoPHTAPHblM метоДом 449 ству сН' = О. Если ограничиться рассмотрением j-й строки матрицы Н, то получается проверочное равенство л ‒ 1 Q Н~,с; =О. i=-О Взяв любую линейную комбинацию строк Н, можно образовать новое проверочное равенство. Всего таким путем можно образо- вать д" ‒ ~ проверочных равенств. Искусство мажоритарного деко- дирования и состоит в выборе хорошего подмножества этих про- верок (при условии, что оно существует). В этом и следующем параграфе мы займемся построением мажоритарных декодеров. В дальнейших параграфах мы изучим построение кодов, допускающих мажоритарное декодирование. Определение 13.1.1. Множество проверочных равенств назы- вается согласующимся� '1 в Й-й координате, если компонента с> входит в каждое проверочное равенство этого множества и каждая компонента с~ (j ,‒й Й) входит не более чем в одно проверочное ра- венство этого множества. Как будет показано в приведенной ниже теореме, мажоритар- ный декодер оценивает е> по большинству голосов в проверочных равенствах. Априори не известно, произошла или нет ошибка в Й-м принятом бите, и равная нулю величина ошибки ‒ это один из кандидатов при таком голосовании. Если число J прове- рочных равенств четно, то при одинаковом числе голосов пред- почтение отдается решению об отсутствии ошибок. Если J нечетно и число ошибок меньше (J 1)/2, то правильное решение всегда принимается большинством голосов. Теорема 13.1.2. Если множество J проверочных равенств со- гласуется в й-й координате и если в принятом слове произошло не более J/2 ошибок, то компонента с> оценивается правильно, Доказательство состоит в описании процедуры исправления. Так как компонента с> входит в каждое проверочное равенство этой совокупности, Н~; не равно нулю. Положим л ‒ 1 Л ‒ 1 s; ‒.‒ H~) ~ Н,р, = Н,; 'f H;,e;. с=о i-.о Деление Hà Н» гарантирует, что коэффициент при еь в сумме равен единице. Поскольку существует Jравенств, ,то sj ‒ ‒ е~ по меньшей мере для половины значений j; не более J/2 других е~ отличны от нуля, и каждое из этих е~ входит в множество прове- рочных равенств не более одного раза, Следовательно, не менее J/2 ') Здесь часто используется термин ортогональный. Мы избегаем этого термина, так как он широко используется в теории векторных пространств, Р. Блейхут 
46О Гл. 13. де кОд H po BA н и е мА)кОРихАР н ы м метбдом всех s> равны е>, если е> равно нулю, и более.l/2 всех s; равны е>, если е> отлично от нуля. Поэтому е~ находится мажоритарнь~м рещением по sJ. Cl Следствие 13.1.3. Если для каждой координаты существует J проверочных равенств, которые согласуются в этой координате, mo код может исправлять ~,//2) ошибок. Доказательство следует непосредственно. П Если J четно, то .l/2 является целым числом и код можег исправлять J/2 ошибок. Отсюда следует, что минимальное рас- стояние кода не меньше J + 1. Прямое доказательство этого факта, включая случай нечетных /, дается в приведенной ниже теореме. Естественно назвать J + 1 расстоянием, реализуемым при мажоритарном декодировании; оно иногда обозначается через d,„~, Истинное минимальное расстояние может быть больше. Теорема 13.1.4. Если для каждой координаты линейного кода существует J проверочных равенств, которые согласуются в этой координате, то минимальное расстояние кода не меньше J + 1. Доказательство. Выберем любое ненулевое кодовое слово и любую координату й, в которой находится ненулевой символ. В координате й согласуются J проверочных равенств. Каждое из них включает ненулевую компоненту с~ и поэтому должно включать хотя бы одну другую ненулевую компоненту, поскольку в правых ча"тях всех проверочных равенств стоят нули. Следова- тельно, существует не менее J других ненулевых компонент. Q Следствие 13.1.5. Если для н~коnopoi координаты циклического кода cy~ecmeyem J проверочных равенств, которые согласуются в этой координате, то минимальное расстояние кода не меньше J+1. Доказательство. каждый циклический сдвиг кодового слова в циклическом коде образует другое кодовое слово того же кода; поэтому множество J проверочных равенств для одной коорди- наты можно использовать для того, чтобы выписать множество проверочных равенств для любой другой координаты. П Теорема 13.1.6. Пусть d минимальное расстояние кода, дуального коду У над GF (q). Тогда мажоритарный декодер для Ю может исправить не более (n 1) (й 1) '/2 ошибок. Доказательство. Линейные комбинации строк матрицы Н обра- зуют кодовые слова в дуальном коде У~. Рассмотрим множество J проверочных равенств, согласующихся в первой координате, Каждое равенство содержит не менее а 1 ненулевых компонент среди оставшихся и 1 координат и каждая из оставшихся и l координат не равна нулю по крайней мере в одном из J равенств. 
19.1, декоди РОВА ние мА)кОРитАРнмм методом 46 f Следовательно, J (d 1) с п 1, и мажоритарный декодер может исправлять J/2 ошибок, CI Итак, при мажоритарном декодировании нельзя декодировать на радиусе упаковки кода, если не выполняется неравенство d*((n 1)l(d 1)+1. Это условие необходимо, но не достаточно. Для большинства представляющих практический интерес кодов это условие не выполняется. Мажоритарный декодер довольно прост, но, вообще говоря, применим лищь к кодам с плохими характеристиками. Поэтому мы введем нечто более сложное, а именно L-шаговый мажоритар- ный декодер. Двухшаговый мажоритарный декодер использует мажоритар- ное рещение для локализации ошибки в множестве компонент, а не в конкретной компоненте. Затем для нахождения ошибки уже в этом множестве вновь используется мажоритарное решение. L-шаговый мажоритарный декодер использует мажоритарную логику на L уровнях. На каждом уровне декодер исходит из того, что ошибка уже локализована в некотором множестве компо- нент, и, используя мажоритарное решение, локализует ошибку в подмножестве этих компонент. Определение 13.1.7. Множество проверочных соотношени Й называется согласующимся в множестве координат с„с„..., с'„, если существует множество коэффициентов А„А„..., А„такое, что сумма А1с;, + А2с~, + + А,с; входит в каждое провероч- ное равенство данного множества и каждая компонента с; при с =~= 11, с„..., с, входит не более чем в одно проверочное равен- ство множества. Естественно, L-шаговый мажоритарный декодер может испра- влять больше ошибок, чем одношаговый мажоритарный декодер, но, вообще говоря, все еще не позволяет достичь радиуса упаковки кода, как показывает следующая теорема. Теорема 13.! .8. Пцсть d минимальное расстояние кода, дуального коду У над GF (а). Тогда L-шагссый мажогатагный де- кодер для У может исправлять не более и/Й 1/2 ошибок. Доказательство. Чтобы исправлять t ошибок, прежде всего необходимо составить J = 21 проверочных равенств, согласую- щихся в некотором множестве В, содержащем b координат. Каж- дое такое равенство соответствует линейной комбинации строк матрицы Н, и эти линейные комбинации представляют собой кодовые слова дуального кода У~. Пусть число ненулевых компо- нент в l-и проверочном равенстве, не считая компонент, коорди- 15» 
462 ГЛ, 19. ДЕКОДИРОВАНИЕ МА ЖО РИТА Р Н ЬЗ М МЕТОДОМ наты которых принадлежат В, равно a~, t = 1, ..., J. Эти paseH ства соответствуют кодовым словам дуального кода, и поэтому b+at ~д. Суммируя эти J соотношений, получаем J Jb+ ~„а, ) id. 1=1 Так как каждая компонента, координата которой не принадлежит множеству В, может быть ненулевой не более чем в одном провероч- ном равенстве, то J ~а~ <n ‒ Ь. 1=1 Исключая b, получаем J ,1 Jn+ ~,а,) J d+ ~а, l=1 1=1 Теперь необходимо вывести второе условие. Разность двух кодовых слов дуального кода также представляет собой кодовое слово, у которого в b позициях стоят нули. Отсюда следует, что при t =/= l' Ag .~ Ñg ~~ Ю. Существует J (J ‒ 1) таких равенств, и каждое а~ входит в 2 (J ‒ 1) из них. Складывая все такие равенства, имеем J 2(i ‒ 1) ~,'а~) J(J ‒ 1)d. ! ==1 Наконец, искл юч им,~ ~ 1а~, используя это равенство и получен- %~ .1 ное ранее. Эго дает 2J(n d) ~ J(.l 1) d. Так как мажоритарный декодер может исправлять J/2 ошибок, отсюда следует утверждение теоремы. О Из этой теоремы, в частности, следует, что (23,12)-код Голея не может быть декодирован мажоритарным методом. 13.2. СХЕМЫ МА)КОРИТАРНОГО ДЕКОДИРОВАНИЯ Интерес к мажоритарно декодируемым кодам объясняется тем, что декодеры для них просты и быстры. Поэтому важной частью изложения должно быть описание декодеров. Изучим работу де- кодеров на примерах. 
19.2. GxEMH ~Ажо~йтА~ного AE<oAHPoBAHHfl 463 В качестве первого примера рассмотрим (7,3)-код, дуальный (7,4)-коду Хэмминга. Этот код, известный под названием симплекс- цдго, имеет минимальное расстояние 4 и может исправлять одну ошибку. Так как 1 ( (7 ‒ 1) (3 ‒ 1) '/2 = 3/2, теорема 13.1.6 не исключает возможности мажоритарного декодирования. Один из способов нахождения проверочной матрицы для этого кода основан на том, что в циклическом коде аО и а' являются корнями порождающего многочлена, лежащими в GF (8). Следовательно, Q,0 Q,0 0',0 аО 0,0 Н = а4 а а5 а2 ае аО аО аЗ аО Над GF (2) эта матрица принимает 111111 101110 Н= 11 1001 001011 вид 1 0 0 1 В тех проверочных равенствах, которые включают сО, правая компонента равна единице. Существует восемь таких равенств, коэффициенты которых определяются следующим образом: 1111111 00101 1 1 010001 1 00011 01 1 001011 1 100101 1 01 0001 0111001 Выбрав третью, четвертую и седьмую строки, получим равен- ства с,+с,+с,‒ О, с,+с, +с, ‒ О, СО + С4 + Се 0 образующие искомое множество трех равенств, которые согла- суются в первой координате, содержащей с,. Основываясь на них, получим декодер, изображенный на рис. 13.1. Если перво- начально регистр сдвига содержит принятый вектор, то в случае, когда произошла одна ошибка, после семи сдвигов он будет сс- держать исправленное кодовое слово. 
454 ГЛ. 19. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ Рис. 13.1. Мажоритарный декодер для симплексного (7, 3)-кода. Конечно, для исправления одной ошибки необходимо исполь- зовать лишь два из приведенных выше проверочных равенств. Добавление третьего равенства приводит к декодеру, основанному на правиле решения «два из трех», а не на правиле «два из двух». До тех пор пока происходят одиночные ошибки, оба декодера ведут себя одинаково, но, если произошло две ошибки, поведение декодеров становится различным. Декодер «два из трех» испра- вляет несколько большую долю конфигураций из двух ошибок, хотя оба декодера не исправляют или неправильно исправляют большинство конфигураций из двух ошибок. При желании можно потребовать, чтобы удовлетворялись все три проверочных ра- венства. Тогда декодер будет испэззлягь все одиночные и обнару- живать все двойные ошибки. Можно превратить мажоритарный декодер в декодер Меггитта. Напомним, что синдромный многочлен определялся или как s(х) = Я <„> [u(х)], или как s (x) = R, <„> [х" ‒ » u(x)]. Через проверочную матрицу синдромный многочлен линейно связан с принятым многочленом и (х). Запишем каждый коэффи- циент в виде и ‒ 1 sJ ‒ ‒ QH<>v;, j=0, ..., и ‒ k ‒ 1. i=О Л:обэе другое проверочное равенсгвэ получается как некоторая линейная кэчэ.~ладил сгрэк Н, т. е. как линейная комбинация компонзлг синдрэмь. Пээгому все проверочные соотношения, 
И.2. ГАРЕМЫ МАЖОРИТАРНОГО ДЕКОДИРОВАНИЯ 466 используемые мажоритарным декодером, могут быть получены как линейная комбинация коэффициентов синдрома декодера Меггитта. Таким образом, любой мажоритарный декодер для циклического кода может быть реализован как декодер Меггитта. Симплексный (7,3)-код является циклическим, и его порождаю- щий многочлен равен g (х) = х' + х' + х + 1. Пусть s (x) = R«„, [x'u (x)] = = usx' + usx + u4x + уз + 0~ (х' + х + 1) + 01 (х' + х + х) + [so sl s2 s3] (оО о1 о2 оЗ ~4 о6 оВ] Для мажоритарного декодирования будем использовать сле- дующие проверочные равенства: с,+с,+с,‒ О, со+ <~+ с~ ‒ 0 со+ с4+ се ‒ О. Выражение в левой части первого из них совпадает с s, âòoðîå с s, а третье с s + s. На рис. 13.2 показан мажоритарный декодер, реализованный как декодер Меггитта. Мажоритарные декодеры даже без каких-либо дополнительных модификаций декодируют много ошибочных конфигураций и вне радиуса упаковки кода. Это может показаться заманчивым пре- имуществом мажоритарных декодеров. Однако, как правило, мажо- ритарное декодирование применяется для кодов, у которых ра- диус упаковки мал по сравнению с другими кодами с сопостави- мыми скоростью и длиной. Способность декодера декодировать вне радиуса упаковки можно рассматривать лишь как частичную компенсацию за выбор кода с худшими характеристиками. Яля того чтобы мажоритарный декодер, реализованный как декодер Меггитта, исправлял большое число конфигураций оши- бок вне радиуса упаковки, необходимо доэавить цепь обратной + 00 (X + x + 1) ° Это соотношение можно переписать в виде 111 011 110 100 010 001 000 0 1 1 0 0 0 1 
466 Гл. is. декОдиРОВАние мАжОРитАРным методдм ашная 3b Рис. 13.2. Декодер Меггитта для симплексного (7, 3)-кода. связи; такая цепь показана на рис. 13.2. Если декодирование вне радиуса упаковки не играет особой роли, то цепь обратной связи можно опустить. 13.3. АФФИНН Ы Е П ЕРЕСТАНОВКИ ДЛЯ ЦИКЛИЧЕСКИХ КОДОВ Циклический сдвиг любого кодового слова в циклическом коде дает другое кодовое слово. Следовательно, весь код инвариантен относительно циклического сдвига. Циклический сдвиг является простым примером перестановки. Циклический код может быть инвариантен и относительно других перестановок. В этом пара- графе мы покажем, что многие циклические коды, будучи расши- ренными, становятся ин вариантными относительно большой группы перестановок, называемых аффинными. Лффинные пере- становки могут использоваться для построения кодов, для их иссле- дования или для построения декодеров, в частности мажоритар- ных. Пусть У циклический код длины и = д 1, порождае- мый многочленом g (x), и пусть %' код длины q", получаемый из Ж добавлением к каждому кодовому слову У символа проверки на четкость. Иначе говоря, если (с„„..., с„с,) кодовое слово в Ж, то (с„„ ..., с,, с„ с ) кодовое слово в Ж; здесь с‒ символ проверки на четкость, определяемый как с = †(с„, + + ... + с, + с,). Чтобы перенумеровать компоненты кодового слова, будем использовать GF (tp) как множество локаторов. Ненулевые эле- менты GF (q) суть а~, где а примитивный элемент. Нулевой 
13.3. АФФИ ин ы Е П еРВСтА НСЬКИ фЩ элемент О в GF (q~) будем обозначать как а. Перенумеруем следующим образом компоненты вектора (с„„..., с„с„с) из Ф элементами GF (д"'): компонента с нумеруется локатором а, а компоненты с; при О < i а. д 1 локаторами а'. Группа перестановок называется траизитивной, если для любой пары локаторов (Х, Y) в кодовом слове существует пере- становка в группе, меняющая их местами; при этом возможно также изменение порядка других локаторов. Группа перестановок называется дважды траизитивиой, если для любых двух пар локаторов ((X„Y,), (X„Y,)), где Х, + X„Y, + Y,, суще- ствует такая перестановка в группе, которая меняет местами локаторы как в первой, так и во второй паре. При этом также возможно изменение порядка других локаторов. Аффанная перестановка ‒ это перестановка, которая пере- водит компоненту с локатором Х в компоненту с локатором аХ + + Ь, где а и b любые фиксированные элементы из GF (q) и а + О. Множество всех аффинных перестановок образует группу относительно композиции, так как: 1) если локатор Х переходит в локатор V = аХ + b и локатор Y переходит в локатор 2 = = а'Y + b', то Х переходит в Z = а'аХ + а'b + Ь' и 2) пере- становка a~X a 'о обратна перестановке аХ + b. Группа аффинных перестановок дважды транзитивна, так как при задан- ных парах (X„Y,) и (Х„У,) система уравнений Y> ‒‒ аХ1 + Ь, ~г =аХ2+ Ь решается относительно а и b единственным образом. Теорема !3.3.!. Любой код длииы и = д, иивариаитиый относительно группы аффинных перестановок, можно преобразо- вать в циклический код, отбросив позицию с локатором а. Доказательство. Пусть и примитивный элемент, используе- мый для задания локаторов. Перестановка Y = аХ аффинна. Но она представляет собой циклический сдвиг всех локаторов, кроме а. Следовательно, код является циклическим. G Несколько труднее сформулировать обратные условия, т. е. условия, при которых можно расширить циклический код и полу- чить код, инвариантный относительно группы аффинных пере- становок. Такие циклические коды, о которых пойдет речь в тео- реме 13.3.4, называются циклическими кодами, обладающими свойством дважды транзитивной инвариантности. Этой теореме будет предшествовать небольшое общематематическое отступление. Определение 13.3.2. Пусть ~ ‒ целое число в д-ичном раз- ложении: ! =~~ ~-(~ч ~ i2÷,-: -I J.,,q- ‒ ', о <~,.~~ 
4~Я ГЛ. 33. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ Отличное от j целое число й в д-ичном разложении'. k = k>+ k]p+ k, .,- й.1у- ', 0 < k; (q, называется д-ичным потомком числа j, если й~ а ji, L = 0, ..., т ‒ 1. Выяснить, является ли данное целое й д-ичным потомком це- лого j, может оказаться затруднительным. В случае когда д равно простому числу р, для нахождения простого эквивалентного 1 условия, записанного через сочетания ~, будет использоваться приведенная ниже теорема (напомним, что при т ) n принято считать = 0 . Теорема l3.3.3 (теорема Лукаса). Пусть р ‒ простое число, и пусть 1 = /о+f)P+ ''' +Im-1Р u = й,+up+ . +u,„,p ‒ ' р-ичные разложения двух произвольных целых чисел j и k. Тогда справедливо следующее соотношение: mod p. 1 Кроме того, равно нулю по модулю р тогда и только тогда, когда й не является р-ичным потомком числа j. Доказательство. Второе утверждение следует из первого, так как при всех ~ не равно нулю по модулю р тогда и только Ую C тогда, когда й является р-ичным потомком ~. Необходимо дока- зать лищь первое утверждение теоремы. Доказательство состоит в разложении многочлена (1 + x)i двумя различными способами и последующем приравнивании коэффициентов при одинаковых степенях х. Используя теорему 4.6.10, можно записать следующее тождество над ОР (р): (1+ х)'~ = 1+«~'. Тогда для произвольного j имеем (! + «)/ = (! + «)~о+4"+~в~*+" +lm Р = (1-~ «-)/ (! -'-«~)i (! -~« ° )~ ... (! +x~"' ')"' ‒ '. 
f $.3. АФФЙ н ные flEP EG1 А нОВКи 4фЯ Используя биномиальное разложение обеих частей этого равен- ства, перепишем его в следующем виде: ~ ~„)х" = =,ь,) ';.)',~ (,') "' [,)',(,':-,)"--"-'] где каждое Й; не больше j; и поэтому меньше р. Далее приравняем коэффициенты при х' и получим ( „) = g ( „) (,' )... ( „'" ' ) (то4 p), где суммирование ведется по всем т-совокупностям (Й„Й„... ..., Й„,,), в когорых каждая компонента меньше р и ~0 ) Кр+~2р + ' +~т-1р Выражение в правой части этого равенства представляет собой р-ичное разложение й, являющееся единственным. Поэтому сумма сосгоит лищь из одного члена и вырождается в равенство mod р. Эго завершает доказательство теоремы. 0 Теперь мы можем охарактеризовать те циклические коды, кото- рые инвариантны относительно группы аффинных перестановок. В формулировку приведенной ниже теоремы входят условия, которым должны удовлетворять корни порождающего многочлена. Порождающие многочлены g (x) c корнем а' из рассмотрения исключ i:îrñÿ, так как в противном случае выражения становятся неопределенными. Те рема 13.3.4. Пусть а примитивный элемент поля GF (q ) характериапики р, пусть У циклический код длины 1, порождаемый многочленом g (х), у которого а' не является корнем, и пусть У расширенный код, получаемый из него доба- влением символа проверки на четность. Расширенный код У инва- риантен относительно группы аффинных перестановок тогда и только тогда, когда из того, что а" корень g (x), а Й'‒ ненулевой р-ичный потомок Й, следует, что а~ также является корнем g (х). Доказательство. Пусть Х' = аХ + b означает аффинную пере- становку. Пусгь Х„Х„..., Х, локаторы ненулевых компо- ненг кодового слова с, и пусть значения этих компонент обозна- чены через Y>, V>, ..., Y,, Пусть, далее, Х1, Х~, ..., Х, озна- 
460 ~~ ° >3. p,ekopsposA~@E MAxop@~A<~um )~ет0дО)~ чают локаторы ненулевых компонент кодового слова при аффинной перестановке, т. е. Х~ ‒ ‒ аХ~ + b. Вначале предположим, что если а" корень g (х), то при лю- бом Й', являющемся ненулевым р-ичным потомком й, а~ будет корнем g (х). Необходимо доказать, что перестановка кодового слова порождает другое кодовое слово. Кодовый многочлен удовлетворяет соотношению с (х) = = g (х) d (х), а добавленный символ равен с = ‒ (с„, + . +с,). Пусть C; = с (а') = g";=>>а"c;. Тогда ll ‒ 1 V с;а' = ~, Y>XI= 0 Ф =-О 1 ‒ -О при всех j, для которых а> является корнем g (х). Заметим, что в локаторе а может быть ненулевой символ. Но а есть пред- ставление нулевого элемента; поэтому соответствующий Xt яв- ляется нулем. Даже в тех случаях, когда слагаемое У,Х> при равном нулю Х~ не входит в определение С;, можно считать его входящим, так как оно равно нулю. Переставленное слово с' является кодовым, если выполняется соотношение с + с„' 1 + + c0 ‒ ‒ О, остающееся, очевидно, справедливым и после перестановки, и если, кроме того, V С = gY,X,'=0 1=1 при всех /, для которых а> является корнем g (x). Рассмотрим такое j: С; = ~, 'У, (аХ, + b)'> = По теореме 13.3.3 ~ равно нулю по модулю р, если й не яв- l ляется р-ичным потомком j; для тех же Й, которые являются р-ич- ными потомками j, по предположению С< равно нулю. Следова- / тельно, в каждом слагаемом суммы или равно нулю, или Ci„ равно нулю. Поэтому С, равно нулю и переставленное кодовое слово снова является кодовым словом. Теперь докажем обратное. Предположим, что расширенный код инвариантен относительно группы аффинных перестановок. Тогда каждое кодовое слово удовлетворяет равенству V С; =- Q Y> (аХ,' ,I>)> = 0 1-=! 
13.4. кОды, ОснОВАнные нА пеРестАнОВкАх 461 для всех а и b и всех j, для которых и> является корнем g (х). Как и ранее, имеем c;= ~, („)ь' ас»=О. Пусть К ‒ число р-ичных потомков j; перенумеруем их числами й при I = 1, ..., К. Запишем сумму по ним в виде Пусть теперь а и b произвольны. Полагая b равным 1, а а пооче- редно равным первым К последовательным степеням а,-получаем (а ') (а ') (»,)9 (а «) 0 а' ... а~ (а >) Эга матрица ‒ матрица Вандермонда. Она обратима, так как все ее столбцы различны. Поэтому С~ ‒ ‒ 0 при 1 = 1, ..., К. Следовательно, а~~ корень g (х) при всех Й,, являющихся потомками j в р-ичном представлении. Это завершает доказатель- ство теоремы. 0 13.4. ЦИКЛИЧЕСКИЕ КОДЫ, ОСНОВАННЫЕ НА ПЕРЕСТАНОВКАХ х 1 == (x1)L 1 Теперь опишем метод построения некоторых допускающих одно- шаговое мажоритарное декодирование кодов, основанный на группе аффинных перестановок (см. $ 13.3). Этот метод может применяться для нахождения циклических кодов над GF (q) длины и при условии, что и составное число, а именно что и = = L J. Кроме того, необходимо предположить, что L не сравнимо с нулем по модулю р, где р ‒ характеристика GF (q). Это условие всегда удовлетворяется для тех и, которые являются примитив- ной длиной или ее делителем. Выберем длину кода и примитивной и составной; и = ‒ q"' ‒ 1 и и ‒ ‒ L J. Тогда 
4QQ Гл. 13. ДекодиеовАние мАЖоеитАеным методом Обозначим второй член этого разложения через а (х), так что х" ‒ 1 = (х~ 1) а (х). Ненулевые элементы GF (q ) являются корнями или х' 1, или а (х). Если а ‒ примитивный элемент GF (q ), то а~~ = 1 и а' ~' ‒ '), а~ ~~ ‒ '), а, ..., а~, 1 являюгся J корнями х~ 1. Поэтому при каждом j, не кратном L, а' является корнем а(х). Определим многочлен Й (х), такой, что взаимный ему много- член является проверочным многочленом рассматриваемого кода. При всех j, которые не кратны L и д-ичный потомок которых не кратен L, а~ является корнем Й (х). Так как каждый корень Й (х) является корнем а (х), многочлен а (х) кратен Й (х). Пусть Б (х) многочлен, взаимный к Й (х), и пусть g (х) определяется соотношением g(x) h(x) = х' 1. Мы получили два циклических кода, являющихся дуальными. Пусть У циклический код с порождающим многочленом g (х), а Уi ‒ циклический код с порождающим многочленом Б (х). По определению Й (х) и по теореме 13.3.4 У'- циклический код, обладающий свойством дважды транзитивной инвариантности. Поэтому можно расширить У~ до кода У~, который является инвариантным относительно группы аффинных перестановок. Составим J проверочных равенств для циклического кода У, согласующихся в одной координате. Так как код циклический, он мажоритарно декодируем и его минимальное расстояние не меньше J + 1. Найдем указанные проверочные равенства для кода У, оперируя с дуальным кодом У~. К,ак мы видели ранее, а~ является корнем многочлена а (х) = х' <" ‒ и + х~ <г. -'> + + хг+ 1 тогда и только тогда, когда j не кратно L. Следовательно, а (х) кратно Й (х) и является кодовым словом дуального кода. Поэтому все элементы множества многочленов {а (х), ха (х), хаа (х), ..., х~-' а (x)j являются кодовыми словами У~. Вес Хэмминга каждого из указанных кодовых слов равен L, и из рассмотрения а (х) следуег, что никакие два из них не имеют общей ненулевой ком- поненты. Теперь найдем другое множество кодовых слов из У'-, которое может использоваться для задания проверок кода У. Временно припишем в У'- добавочный символ. Впоследствии этот символ будет служить своеобразной точкой опоры при выписывании J согласующихся проверочных равенств. Чтобы этот добавленный символ можно было передвигать внутрь кодового слова, допустим 
13 4. КОДЫ, ОснОВАнные нА пеРестАнОВКАХ 463 возможность выбрасывания компонент кода, включая и вновь добавленный символ. К каждому из кодовых слов этого множества добавим символ проверки на четность. Эго дает J кодовых слов в расширенном кодеУ~- длины й = n + 1. Если L не сравнимо с нулем по моду- лю р, то добавленный символ отличен от нуля и одинаков для каж- дого из J построенных кодовых слов. Разделим кодовые слова на этот добавленный символ и получим новое множество кодовых слов. Таким образом мы установили существование в У~- мно- жества J кодовых слов со следующими свойствами.' 1) каждое кодовое слово из множества J кодовых слов имеет единицу в локаторе а; 2) одно и только одно кодовое слово из множества J кодовых слов имеет ненулевую компоненту в локаторе а~ при j = О, 1, ... ..., и 1. Теперь мы можем использовать теорему 13.3.4. В самом деле, предыдущие определения были выбраны таким образом, чтобы можно было применить эту теорему. Так как код У~ обладает свойством дважды транзитивной инвариантности, он инвариантен относительно любой аффинной перестановки. В частности, выберем Y = аХ + ап-'. Эга перестановка переводит множество кодовых слов У~ в дру- гое множество кодовьи слов У'-, обладающее следующими свой- ствами: 1) каждое кодовое слово из вновь построенного множества J кодовых слов имеет единицу в локаторе а" ‒ ', 2) одно и только одно кодовое слово из вновь построенного множества J кодовых слов имеет ненулевую компоненту в лока- торе а~' при j = оо, О, 1, ..., и 2. Теперь можно опустить локатор а и получить множество кодовых слов в У~, которое согласуется в координате и 1. В самом деле, эти J кодовых слов ортогональны кодовым словам кода У и поэтому образуют проверочные равенства. Полученные J проверочные равенства согласуются в координате и 1, и код является циклическим. Теперь мы можем доказать следующую теорему. Теорема 13.4.1. Пусть n = qm 1 может быть представлено в виде п = J. L. Предположим, что порождающий многочлен циклического кода У над GF (q) строится по следующему правилу. Яля каждого целого числа у элеменпг а~ является корнем много- члена g (х) тогда и только тогда, когда j или любой его q-ичный пото,цок кратна числу L. Тогда %' является мажоритарно 
464 Гл. 1э. де кОди РОВА ни е мА)кОРитАР н ы м метОдОм декодируемым кодом над GF (q) с минимальным расстоянием не меньше J. доказательство. По определению Б (х) а ' не является кор- нем g (х) тогда и только тогда, когда а~ является корнем Я (х). Поэтому h (х) имеет корень а> тогда и только тогда, когда ни /, ни любой его О-ичный потомок не являются ненулевыми кратны- ми L. Следовательно, как мы видели при рассмотрении дуального кода, для каждой координаты имеется J согласующихся в ней проверочных равенств. Код является кодом над GF (q), если каждый сопряженный с корнем многочлена g (х) элемент также является корнем этого многочлена. Если а ‒ ~' является корнем g (x), то, поскольку j кратно L, qj кратно q. L (по модулю LJ), и, следовательно, а ‒ ~~ также корень g (х). Если же а ‒ ~ является корнем g (х) вследствие того, что некоторый О-ичный потомок j' числа j кратен L, то д-ич- ный потомок qj' (mod L J) числа qj (mod L J) кратен qL (mod L J). П Проиллюстрируем теорему простым примером над GF (2). Так как 1 = (х' ‒ 1) (х" q х' + х' -1- х' + 1) = = (xü I) (x" + xü + 1) мы можем выбрать или J = 3 и L = 5, или J = 5 и L = 3, со- ответственно получив код, исправляющий одиночные ошибки, или код, исправляющий двойные ошибки. Построим код, исправляю- щий одиночные ошибки. Ненулевые кратные 5 равны 5 и 10; число 5 является двоичным потомком чисел 7 и 13; число 10 является двоичным потомком чисел 11 и 14. Следовательно, корнями Б (х) являются а, а', а', а', а', а', а' и а", где а примитивный элемент поля GF (16), а корнями g (x) являются а, а2, а', а', а', а" и а'. Следовательно, g(х) = (x 1) (х ‒ а) (х ‒ а') (х ‒ а4) (х а') (х ‒ а') >< >< (x а~о) = y7 + хз + x + и код имеет восемь информационных битов. В табл. 13.1 приведены параметры некоторых из рассмотрен- ных выше кодов, а также соответствующих кодов БЧХ. В каждом случае приведено минимальное расстояние, полученное из соот- ветствующих границ. Действительное минимальное расстояние может быть больше. Из таблицы видно, что в нескольких случаях выбор мажори- тарно деколируемого кода ие приводит к ощутимому уменьшению A', хотя в большинстве случаев оно значительно. Важно, однако, цонять. что мажоритарный декодер прост и быстр и, как правило, 
13.5. СВЕРТОЧ H blE КОДЫ 46б Таблица 18.1 Сравнение параметров некоторых двоичных кодов, декодируемых в один шаг, с параметрами кодов БЧХ может исправлять большое число конфигураций более чем из J ошибок. Поэтому перед окончательным выбором применяемого кода полезно провести моделирование. 13.5. СВЕРТОЧНЫЕ КОДЫ С МА)КОРИТАРНЫМ ДЕКОДИРОВАНИЕМ Некоторые сверточные коды могут декодироваться мажоритарным декодером. Точно так же, как и в случае блоковых кодов, эти декодеры просты и чрезвычайно быстры, но применяемые коды не так мощны, как другие. Предпочтительнее использовать коды с лучшими характеристиками. Мажоритарно декодируемые коды декодируются путем нахо- ждения большинства голосов в некоторой совокупности синдро- мов или в некоторой совокупности линейных комбинаций синдро- мов. Несколько мажоритарно декодируемых сверточных кодов найдено путем поиска на ЭВМ. Некоторые из них затабулированы ниже. Сверточный (12,6)-код, порождаемый кодером, представленным на рис. 12.3, и декодируемый декодером, представленным на pi1c. 12.20, может декодироваться и мажоритарно. Чтобы проде- монстировать природу мажоригарных декодеров, мы опшпем два 
466 Гл. 13. ДекОДиРОВАние мА)кОРитАРным метОДОм различных мажоритарных декодера для этого кода. На рис. 13.3 приведены синдромы для всех конфигураций одиночных ошибок. Таблица содержит модифицированные синдромы, вычисленные по двум различным правилам. Заметим, что для обеих правил модифицированные синдромы согласуются в первой позиции. Модмрицированные Модиц>ицироеанные синдромы . синдромы Правило ! ' Правило 2 Синдромы Концшаурации одиночных ошибок Ээ эг ~i So I У I I >э Sz ~! Эе 5~ 1б $3 SJ 5$ SP Правило 4 Правило 2. I $0=$0 S l $1 +$б $', — S~+S~ Sэ S3 Н $о =$о $~ =$э $2 Sl +$4 $э $5 Рис. 13.3. Модифицированные синдромы для сверточного (12, 6)-кода. Инсрорм'ацоонные .символы Рис. 13.4. Мажоритарный декодер дл я сверточного (12, 6)-кода, 000000000001 000000000010 000000000100 000000001000 000000010QOO 000000100000 000001000000 000010000000 000100000000 001000000000 010000000000 100000000000 1 l l 0 0 1 000001 1 1 0 0 1 С 0000 l 0 1 0 О 1 О 0 000 1 О 0 00 1000 001000 О!0000 О 1 О 0 0 0 1 0 0 0 О О 1 0 0 0 О О l 1 1 1 0 0 О 1 О ! 0 О О О 1 О О 000 01 00 1 0 0 0 l 0 0 0 0 О l О О О ! О О ! 0 О О l О 0 l 1 l 1 0 О О 1 l О 0 О 0 l О О l 0 О 0 0 0 0 О О 0 1 0 0 О ! 0 О l О О О l 0 0 1 О О О 1 О О 0 
13.5. СВЕРТОЧ НЬИВЕ КОДЫ 461 Информационны Е Рис. 13.5. Другой мажоритарный декодер. Так как в обоих случаях используются четыре модифицирован- ных синдрома, ошибка в первой позиции может быть исправлена даже в том случае, когда произошла вторая ошибка. На рис. 13.4 изображен мажоритарный декодер, основанный на первой сово- купности модифицированных синдромов. Этот декодер исправляет все конфигурации из двух ошибок и проще декодера на рис. 1220. Однако он обладает существенным недостатком, присущим мно- гим мажоритарныи декодерам сверточных кодов и состоящим в следующем. Некоторые конфигурации более чем из двух ошибок будут удовлетворять проверке по большинству и приводить к не- правильному исправлению. Для части из них сигнал обратной связи будет изменять синдром таким образом, что даже при от- сутствии дальнейших ошибок он будет воспроизводить некоторый синдром. Например, при отсутствии последующих ошибок син- дром 011010 не приводит к исправлению ошибок, следующий за ним синдром 001101 приводит к исправлению одной ошибки, а следующий за ним синдром 011010 возобновляет цикл. Такое явление называется обычным распространением ошибок. Оно при- суще мажоритарному декодеру и может наступать даже для не- катастрофического кода. В нормальном синдромном декодере обычное распространение ошибок не может иметь места. На рис. 13.5 изображен другой мажоритарный декодер того же кода, но уже основанный на второй из представленных на рис. 13.3 совокупностей модифицированных синдромов. В таком декодере не происходит обычного распространения ошибок. Этот пример показывает, что в некоторых мажоритарных декодерах сверточных кодов происходит обычное распространение ошибок, которого, впрочем, можно избежать путем тщательного выбора 
Щв ГЛ. 13. ДЕ КОД И РОВА Н И E Ъ ае ° ае Г 1Г + ГЧ +++ rV С с + + 'C "„ + н + К + + ~ф х х + ГЧ М М Ж о Г~ о М У<') х + ч! <~~ к К Zl ж Р' о ~.ю С4 Ю Ж v + + )а~ Г~ М + v. Ъ( + >( 2 Е С4 х Г:( о М (U Г~~ о о М Я х о х И Г ~ ос Ф ~' I оо г3 Г.3 х х х i Щ С4 л ~) < rl Г г'l Ф + + ЕЧ Г- н + + + )а~ ° М + >( + х + И + Ф К + f4 н + ~Ч М + <Ч + v. + У, + Ф v, Ъ< + V4 ч М И, И К + + v„ х н + + ЗС ~а <Ч х + V ю~ М + Ф~) и +++ к" м м + + х н + + rv Ф ~Ч М М + РЧ )~ + ~g М МАЖОРИТАРНЫМ МКТОДОМ 
13Я. OSOSIQE H Hbl E КОДЫ РИДА ‒ МАЛЛ ЕРА 46Q модифицированных синдромов. Если для выбранного кода это невозможно, то следует использовать нормальный синдромный декодер. Краткий список сверточных кодов, которые могут быть деко- дированы мажоритарно, приведен на рис. 13.6. Эти коды получены поиском на ЭВМ. 13.6. ОБОБЩЕННЫЕ КОДЫ РИДА ‒ МАЛЛЕРА Коды Рида ‒ Маллера первоначально были введены нами как двоичные; теперь же мы перейдем к изучению кодов Рида Маллера над произвольным полем Галуа GF (q). Хотя класс обобщенных кодов Рида ‒ Маллера (OPM) содержит подклассы мажоритарно декодируемых кодов, он также содержит большое число кодов, которые не имеют практического интереса. Все они описываются одной и той же общей теорией. OPM-кодь1, включая двоичные, будут введены расширением циклического кода, называемого циклическим OPM-кодом. В на- стоящем параграфе мы ограничимся обсуждением циклических OPM-кодов с примитивной длиной q 1 и ОРМ-кодами, полу- чаемыми из них добавлением символа проверки на четность. Корни кодовых слов определяются довольно сложным и даже несколько загадочнь1м образом. Определим вес целого числа в д-ичном разложении. Определение 13.6.1. Пусть j ‒ целое число, д-пчное разложе- ние которого имеет вид / = /o ~- Jiq +/гд + -'',-/1» и1"' Весом / и q-ичном разложении называется сумма (в смысле суммы целых чисел) 9 (/) /О г'11 +!2 1 ' ' ' г /)»-1 Определение 13.6.2. Циклическим ОРМ-кодом ') порядка г и длины п = q" 1 над полем GF (q) называется циклический код, порождающий многочлен g (х) которого имеет корни и> при всех j = 1, ..., д 1, таких, что О ( и, (/) ( (q ‒ 1) т ‒ г 1. Расширение этого циклического кода до кода длины и = у путем добавления символа простой проверки на четность называет- ся ОРМ-кодом порядка r. ') Альтернативное определение заключается в выборе g (х) с корнями я/, где j удовлетворяют соотношению О < ы, (j) ( (д ‒ 1) т ‒ r ‒ 1; по сравне- нию с принятым нами опрсделением первое строгое неравенство заменено не- строгим. Тогда ОРМ-код получается удлинением циклического ОРМ-кода путем добавления вектора, состоящего из одних единиц, к С, а нс к H. Г1р11 нашем определении коды Хэмминга являются циклическими ОРМ-кодам н. 
470 Гл. iç. дккодиеовляик MA)KopMTApHblM методом Из определения 13.6.1 следует, что / и jq (по модулю q" ‒ 1) имеют одинаковый вес в q-ичном разложении. Поэтому если является корнем g (х), то и все сопряженные с Р элементы явля- ются корнями g (х), и определение 13.6.2 в самом деле приводит к коду над GF (q). При д = 2 OPM-код сводится к коду, эквивалентному коду Рида Маллера; это тот же код, но с перестановкой компонент (поэтому он и называется обобщенным кодом Рида ‒ Маллера). Эгот код при мажоритарном декодировании может исправлять 2"-' ‒ ' 1 ошибок. Циклические коды Рида ‒ Маллера порядка т ‒ 2 являются кодами Хэмминга, так как в них все ), для кото- рых и, (/) = 1, являются корнями g (х); это/, равное 1 или числам, сопряженным с 1. Коды Хэмминга служат простейшим примером OPM-кодов. Поучительно построить некоторые двоичные ОРМ-коды. Выбе- рем m = 5 и r = 2. Длина этого кода равна 31, и при мажоритар- ном декодировании он может исправлять три ошибки. Провероч- ные частоты кода маркированы всеми отличными от нуля j, для которых и,(1) <2, т. е. теми j, двоичное представление которых содержит не более двух единиц. Это двоичные числа 00001 0001 1 001 01 и все их циклические сдвиги. Поэтому проверочные частоты по- являются при j = 1, 3 и 5 и при всех сопряженных с ними числах. Этот циклический OPM-код второго порядка идентичен (31,16,7)- коду БЧХ над GF (2). Расширение этого циклического кода пред- ставляет собой (32,16,8)-код ОРМ. Далее выберем т = 5 и г = 1. Этот код может исправлять мажоритарным способом семь ошибок. Индексы проверочных частот теперь удовлетворяют соотношению >g (j) < 3. Эги индексы записываюгся двоичными числами 00001 0001 1 001 01 001 11 01011 
19.В. ОБОБЩЕННЫЕ КОДЫ РХДА ‒ МАЛЛEPA 47] и всеми их циклическими сдвигами. Поэтому проверочные частоты появляются при j = 1, 3, 5, 7 и 11 и при всех сопряженных с ними числах. Получаемый циклический OPM-код первого поряд- ка является (31,6,15)-кодом, а его расширение представляет собой (32,6,16)-код OPM. Так как 9 принадлежит тому же классу со- пряженных элементов, что и 5, а 13 сопряжено с 11, циклический код идентичен (31,6,15)-коду БЧХ. Отсюда следует, что как к (31,16)-коду БЧХ, так и к (31,6)-коду ВЧХ применимо мажоритарное декодирование. Иная ситуация возникает пои т = 6 и r = 2. Этот код Рида Маллера при ма- жоритарном декодировании может исправлять семь ошибок, Ин- дексы проверочных частот удовлетворяют соотношению и., (j) < 3. Эти индексы записываются двоичными числами 000001 00001 1 0001 01 0001 1 1 001 001 00101 1 001 10! 0101 01 и всеми их циклическими сдвигами. Поэтому проверочные частоты появляются при j = 1, 3, 5, 7, 9, 11, 13 и 21 и при всех сопряжен- ных с ними числах. Этот циклический OPM-код второго порядка является (63,22,15)-кодом. Существует также (63,24)-код БЧХ, исправляющий семь ошибок. Указанный двоичный ОРМ-код имеет меньшую скорость, но зато может быть декодирован мажо- ритаоно. Расширением этого циклического ОРМ-кода является {64, 22, 16)-код OPM. Определим циклический OPM-код через спектр кодовых слов. Циклический OPM-код порядка г и длины п = q" 1 над полем GF (q) представляет собой множество слов, спектральные компо- ненты С> которых равны нулю при всех j, удовлетворяющих не- равенству 0(и(j) <(q 1)т г 1. Кодирование в частотной области производится следующим обра- зом: спектр во всех указанных частотах полагается равным нулю, оставшиеся частоты заполняются информацией в соответствии с ограничениями сопряженности, а затем производится обратное 
472 ГЛ. !9. ДЕКОДХРОВАНХЕ МАЖОРХТАРНЫМ МЕТОДОМ преобразование Фурье. Однако конструкция кодера во временной области обычно прощ.. Мчнимально~ расстояние циклических OPM-кодов должно удов- летворягь границе БЧХ. Эгу границу устанавливает следующая теорема. Теорема 13.6.3. Циклический OPM-код над GF (2) порядка г и длины и = о 1 представляет собой подкод кода БЧХ с кон- структивным расстоянием d = 2 ‒ ' I; его минимальное рас- стояние не меньше указанного конструктивного. Доказательство. В двоичном представлении 2 ‒ ' ! запи- сывается (т r)-разрядным двоичным числом, состоящим из од- них единиц. Числа, меньшие 2 ‒ ' 1, имеют менее т r единиц. Поэтомуи,(j)<гп г 1приj=1,2, ...,2 ‒ ' 2иа~яв- ляются корнями g(x) при / = 1, 2, ..., 2'" ‒ ' 2. Следовательно, этот код является подкодом кода БЧХ с конструктивным расстоя- ниемd = 2 ‒ ' 1. О Недвоичный циклический OPM-код порядка r также пред- ставляет собой подкод кода БЧХ, конструктивное расстояние ко- торого равно о ‒ ' 1, если r меньше о 1. Если последнее условие не выполняется, то выражение для конструктивного расстояния несколько сложнее, что отражено в следующей тео- реме. Теорема 13.6.4. Пусть г = (q 1) Q + R, где О < R ( q— 1. Цикллческлй OPM-код над GF (q) порядка г и длины и = = q ! преЭсгпаеляегп собой подкод кода БЧХ над GF (q) с кон- структивным расстоянием d = (g ‒ R) q — ~-' ‒ 1; его минимальное растояние не меньше указанного конструктив- ного. Доказательство. Рассмотрим q-ичное разложение числа (q R)q'" -> 1. Максимальный значащий символ этого чис- ла равен q R 1; остальные т Q 1 символов равны q 1. Следовательно, и, ((g ‒ И) q"'- ' ‒ ' ‒ ‒ 1) = (g ‒ 1) (т ‒ Q ‒ 1) -! q ‒ R - 1 = = (g ‒ 1) т ‒ г. Но тогда q-ичные веса всех /, меньших (q R) q'" -о ‒ ' 1, меньше (q 1) т г. Следовательно, при всех j, удовлетворяю- щих неравенству О ( j < (q R)q ‒ о ‒ ' 2, и> являются кор- нями порождаюц~его многочлена, а циклический ОРМ-код яв- ляется подкодом кода БЧХ с теми >ке корнями порождающего многочлепа. Это завершает доказательство. П 
is,â. 0воащеннь!е коды РидА ‒ млллкРА 473 q Х "вчх r (и. k) 6ЧХ 47 39 3! 13 !5 7 !5 7 3 Рис. 13.7. Параметры некоторых обобщенных кодов Рида ‒ Маллера. Характеристики некоторых обобщенных кодов Рида ‒ Маллера представлены на рис. 13.7. При о = 2 коды эквивалентны кодам Рида Маллера. Приведенные на рисунке минимальные расстоя- ния в действительности являются определяемыми теоремой 13.6.4 нижними границами минимальных расстояний. Число информа- ционных символов получается подсчетом: так как код опреде- ляется через корни g (х), число проверочных символов находится подсчетом положительных целых чисел, меньших и, для которых и,(/) а (д ‒ 1) т ‒ г l. 115 5) 4 (15. ! !) 5 1 (31 6) 2 (31 16) '! ( '11 16) 6 I (63 7) 6 2 (63 -'2-) б 3 (634) 6 4 (63. 57) 7 1 (127. В) 7 ' (127, 29) 7 3 (127, 64) 7 4 (127 99) 7 5 (127 120) I (255, 9) (255. 37) в 3 (255 93) 8 4 (255, ! 63) 8 5 (255. 219) 8 6 (255. 247) 9 1 (511, 10) 9 2 (511 46) 9 3 (511. 130) (5 I I, 256) 9 C (511 ~82) 9 б (511 466) 9 7 (5!1, 502) 31 !5 7 3 63 3! 15 7 3 127 63 31 15 7 3 255 1 7 63 31 !5 7 3 (I 5, 3) ( I Ñ 6) (15. 10) 4 (15. 13) 1 (63. 4) (63. 10) (63 2()) 4 (63, 32) 5 (63. 44) 6 (63. 54) 7 (63. Ю) 1 ('55. 5) (2-55, 15) (255, 35) 4 (255, 66) 5 (255, 106) (255, 150) 7 (255, 190) 9 ( 55,241) !0 (255 25!) II 7 3 2 47 31 !5 11 7 3 1 191 l 7 63 47 3! 15 11 7 3 (63 3) (63. 6) (63. 10) 4 (63. 15) с 164 21) 6 (63, 'В) 7 (63. 36) В (63, 43) 9 (63. 49) !() (63, 541 11 (63, 5В) 12 163, 61) (5!! 4) 2 (511. 10) 3 (511, 'О) 4 (511. 35) 5 (511, 56) 6 (511. 84) 7 (511, 120) В (5!1, 162) 9 (511 208) 10 (511, 256) ll (511. 304) 12 (5!I, 350) 13 (511. 392) 14 (511. 428) 15 (511, 456) 16 (511, 477) !7 (511 492) 18 (511. 502) 19 (511. 508) 4 3 2 447 3В3 319 255 191 127 63 55 47 39 31 'Ъ ! 15 7 6 5 4 3 2 
474 гл. 13. декодиРовАние мАЖОРихл~ныМ мет0дОм Теорема 13.6.5. Код, дуальный ОРМ-коду над GF (q) порядка г и длины п = q, эквиваленгпен ОРМ-коду порядка (q 1) т r 1 и длины п=д. Доказательство. Пусть У OPM-код, и пусть У цикли- ческий OPM-код, получаемый укорочением У. Доказательство теоремы распадается на три шага. На шаге 1 находится порожда- ющий многочлен й (х) кода У'-, дуального циклическому OPM-i оду Ж. На шаге 2 показывается, что проверочные многочг.ены как Ж, так и У~- имеют множителем х ‒ 1. На шаге 3 производится расши- рение кодов У и %i до ОРМ-кодов У и У'- и показывается, что расширенные коды дуальны. Иаг 1. У является множеством слов с проверочными часто- тами, которые при всех j удовлетворяют неравенствам О(1< 0 и,(j) < (q ‒ 1) т г 1. При всех указанных j величины и> являются корнями порождаю- щего многочлена g (х). Для удобства мы заменили О Hà q 1 в интервале изменения j (ñì. примечание на с. 469), так что ид (j) ) .. 0 при всех j. Из теории циклических кодов следует, что для определения проверочных частот дуального кода нужно заменить! на д 1 j и обратить нестрогое неравенство для д-ичного веса, заменив его строгим неравенством. Поэтому индексами провероч- ных частот служат те j, для которых w~ (q" ‒ 1 ‒ j) ) (q ‒ 1) т ‒ г ‒ 1. Но если 1 10 + i~q ~ 12ч + ' + 1ПЗ-19 то Д ‒ 1 ‒ i =(q ‒ 1 ‒ 1~)+ + (~ ‒ 1 ‒ ji) q -~ " ~- (у ‒ 1 ‒ i--- ) q" ' что может быть проверено сложением равенств. Следовательно, и~ (q 1 j) = (q ‒ 1) т ‒ и~ (j). Поэтому дуальный код име- ет проверочные частоты при j, удовлетворяющих неравенству 0 ~ ~) (~т ‒ ! и~(j) =(q ‒ 1)т и~(q ‒ 1 j)(г+1. Соответствующие этим j числа а> являются корнями порождаю- щего многочлена h (х) дуального кода У~. Шаг 2. Число а' не является корнем ни g (x), ни й (х). Следо- вательно, проверочные многочлены как У, так и У'- содержат множители х 1. 
13.7. ЕВКЛИДОВО-ГЕОМЕТРИЧЕСКИЕ КОДЫ 475 Шаг 8. Теперь расширим У и У'- и получим два OPM-кода. Проверочные матрицы этих расширенных кодов равны 1 1 1 1 ... 1 и Н' О 13.7. ЕВКЛИДОВО-ГЕОМЕТРИЧЕСКИЕ КОДЫ Конечная геометрия ‒ это конечное множество, в котором опре- делены некоторые подмножества, называемые линиями, плоско- стями или аффинными подпространствами и удовлетворяющие некоторому набору аксиом. Конечная геометрия заимствовала свою терминологию у обычной элементарной геометрии. Послед- няя оперирует с множеством, содержащим бесконечное число то- чек, и с подмножествами, известными как линии и плоскости. Каждая конечная геометрия определяется собственным набором аксиом, и в ее рамках можно построить систему теорем. Наиболее важными конечными геометриями являются евклидовы геометрии и проективные геометрии. Эти конечные геометрии могут исполь- зоваться для построения кодов. где H и H' проверочные матрицы кодов Уи У'-. Если временно исключить из рассмотрения первые строки каждой из матриц, полу- чим, что все строки левой матрицы ортогональны всем строкам правой матрицы; это вытекает из справедливости этого утвержде- ния для Н и Н'. Далее, строка, целиком состоящая из единиц, орто- гональна самой себе, поскольку длина кода кратна о. И наконец, строка, целиком состоящая из единиц, ортогональна любой дру- гой строке обеих матриц, так как х 1 является делителем обоих проверочных многочленов. Поэтому левая и правая матриць1 орто- гональны, а размерности расширенных циклических кодов в сумме равны О . Доказательство закончено. Cl Непримитивные ОРМ-коды могут быть также определены оче- видным образом. Этим определением мы завершаем параграф. Определение 13.6.6. Пусть b делит q 1. Циклическим не- примитивным OPM-кодом порядка г и длины п = (q" 1)/b над полем GF (q) является циклический код, порождающий много- член которого имеет корни а'1 при всех j = 1, ..., (q" 1)/О, таких, что О ( и, (bj) а (q 1) т г 1. 
476 ГЛ. ! 3. ДЕКОДИРОВАНИЕ МА)КОРИТА РНЫМ МЕТОДОМ Несколько классов кодов, описываемых на языке конечных геометрий, являются мажоритарно декодируемыми ‒ это евкли- дово-геометрические коды и проективно-геометрические коды. Мы введем эти классы кодов, используя терминологию кодов Рида ‒ Маллера. Первоначально они были введены иначе, а именно на основе теории конечных геометрий; этим и объясняются их на- звания. В этом параграфе мы рассмотрим евклидова-геометриче- ские коды, а в следующем ‒ проективно-геометрические коды. Ограничимся изучением лишь кодов над простым полем бР (р). Существенную роль играют три поля Галуа: GF (р) ‒ поле сим- волов евклидова-геометрического кода, GF (q) ‒ поле символов OPM-кода, представляющее собой расширение GF (р) для g = p', и поле локаторов GF (q"). Определение 13.7.1. Пусть r, s и т ‒ любые положительные целые числа, и пусть о = р', где р ‒ простое число. Евклидово- геометрическим кодом над GF (р) порядка г и длины п = q" на- зывается код, дуальный подкоду над подполем ОРМ-кода над GF (q) порядка (q 1) (т г 1) и длины q". Эквивалентное определение: евклидово-геометрическим кодом называется расширение циклического кода над GF (р) (также на- зываемого евклидова-геометрическим кодом) длины q" ‒ 1; он определяется следующей теоремой. Теорема 13.7.2. Пусть а ‒ примитивный элемент GF (q'"). Евклидова-геометрисческий код над GF (р) с параметрами г и s ряюъ,их неравенствам 0< j < о ‒ 1 и О ( тах ш, (jp') а (g ‒ 1) (т ‒ r ‒ 1). 0(с(з Доказательство. Подход над подполем GF (p) циклического OPM кода порядка (q ‒ 1) (т ‒ г ‒ 1) обладает порождающим многочленом с корнями а~ при 0 <. j < о ‒ 1, если j удовлетво- ряет неравенству а,(j) ( (q ‒ 1) т ‒ (q ‒ 1) (т ‒ г 1) 1 =(о ‒ 1) (г+1) ‒ 1 или если этому неравенству удовлетворяет любое р-сопряженное с j число. Обратно, а~ является корнем проверочного многочлена h (х), если и, (i ') ) (g ‒ 1) (г + 1) ‒ 1 для всех j', которые являются р-сопряженными с )числами. Но, согласно теории циклических кодов, порождающий многочлен дуального кода является взаимным к многочлену h(х). Поэтому а~' 
!3 7 евклидОвО-~åîìåT~H<å<KHå кОды 477 Евклиоово- ~еомеврцчесюц (и,k)-коЬ (и, It: )- код бЧХ (63, 39) (63, 18) (255, 239) (255, 19! ) (255, 179) (255, 47) (63, 37) (63, 13) (255. 23! ) (255, 175) (255, 127) (255. 19) 4 10 2 8 10 42 Рис. 13,8. Параметры некоторых евклидово-геометрических кодов и некоторых кодов БЧХ. ') Векторное подпространстводолжио содержать начало координат векторного пространства. Аффинное подпространство получается сдвигом векторного под- пространства (т. е. является его смежным классом). является корнем этого взаимного многочлена, если а" ‒ ~' является корнем h (х), т. е. если и, (и ‒ i ') ) (а ‒ 1) (г + 1) ‒ 1 при всех j', которые являются р-сопряженными с j числами. Но. как было установлено при доказательстве теоремы 13.6.5, в, (n ‒ j ') = (q ‒ 1) т ‒ и, (1'). Следовательно, и,(j') ( (q ‒ 1) (т ‒ г ‒ 1) при всех j', которые являются р-сопряженными с j числами. От-. сюда следует утверждение теоремы. П Простейшим примером евклидово-геометрического кода слу- жит код с s = 1 и р = 2. В этом случае и~(j) (т ‒ г ‒ 1, если а~ является корнем g (х). Это как раз код Рида ‒ Маллера порядка r. Евклидово-геометрические коды представляют собой обобщение кодов Рида ‒ Маллера. Параметры других евклидово- геометрических кодов приведены на рис. 13.8. Наша цель доказать, что евклидово-геометрические коды могут декодироваться мажоритарно в r + 1 шагов и что дед ‒‒ = (q ‒ ' ‒ 1)/(q 1). Мы опишем декодер на геометрическом языке, языке евклидовой геометрии, который мы сейчас введем. Евклидова геометрия размерности т над полем GF (q) (она обо- значается через EG (т, q)) состоит из а"' точек (векторное про- странство 6Р (q)) вместе с некоторыми подмножествами, называе- мыми плоскостями (или аффннными подпространствами ')), ре- куррентное определение которых следует ниже. О-плоскостью (нульмерным аффинным подпространством) называются точки EG (т,q).Èìè являются q~ векторов т-мерного векторного про- 
478 Гл. Is. декОдиРОвАние МАжОРитАРным метОдОМ странства. Из t-плоскости получается (t + 1)-плоскость как мини- мальное векторное подпространство, каждый сдвиг которого содержит t-плоскость. Иначе говоря, если Е~ является t ïëî. скостью, то множество (у~и ~ у, g CiF (q), и ~: Е,1 ‒ это минималь- ное векторное подпространство, содержащее Е~. Если v,+, любая конкретная точка в бР" (q), не принадлежащая Е,, то (t+ 1)- плоскость Е„, определяется как множество Е„, = (ч„, +у,и I у,Cбг" (q) и6Е,1. Приведем более формальное определение. Определение 13.7.3. Евклидовой геометрией EG (т, q) назы- вается векторное пространство бР" (q) вместе со всеми подпро- странствами и сдвигами надпространств бг'" (q). Из этого определения непосредственно вытекает следующая теорема. Теорема 13.7.4. Ьплоскость содержит ровно д' точек и сама имеет структуру евклидовой геометрии EG (t, q). Можно пред- ставить Ьплоскость как множество д' точек «+ Ук ч( ‒ ъ + уж « ‒ 2 + ' ' ' + Ъ чо1 где 7, пробегает множество всех элементов GF (q), включая нулевой, а векторы v„v,, ..., v, над бЕ'" (q) образуют флксированное мно- жесиоо линейно независимых элементов Ьплоскости. Можно называть 1-плоскость и 2-плоскость линиями и плоско- стями. Эги названия связаны с тем, что определение евклидовой геометрии по идее соответствует обычному евклидову простран- ству с той разницей, что оно строится над конечным, а не над ве- щественным полем. Можно также считать, что EG (т, q), GF (д'") и GF~ (q) состоят из одних и тех же элементов. Однако когда мы обозначаем поле через GF (о'"), то имеем в виду его алгебраиче- скую структуру, правила умножения и т. д. Когда мы обозначаем его через EG (т, q), то интересуемся его геометрической структу- рой, введенной определением 13.7.3. Если мы обозначаем его через бЕ (q), то мы интересуемся его структурой как структурой вектор- ного пространства. Евклидова геометрия EG (3, 2) представлена на рис. 13.9. Этот пример показывает, что число t-плосксстей в евклидовой геометрии может быть довольно большим. Подсчитаем число плоскостей в EG (т, q). Подсчет опирается на величинь, известные под названием q-ичных гауссовских коэффициентов и определяе- мые соотношениями 
3-плоскость I-плоскость 2-плоскость .000,001,010.011 000,001,4 00.101 000,00 1,1 I 0,1 1 I 000,0 !О,I OO,I 1 0 000,010.101 111 000.011. IO0.111 000,011,101,110 00! 011.101,111 (9 1,011, I 00, I 10 0010 10,101,1 !0 001,010,100,11 ! 010,011.! 10,111 010,011,! 00,! 01 100,101,110,111 000 001 010 011 100 101 ll0 !!I Рис. 13.9. Евклидова геометрия EG(3, 2). т приi =1,2,...,òè =1. Теорема 13.7.5. rn (i) EG (m, q) содержииг q~ ‒ ', различных t-плоскостей, где t=0, 1,...,т. (ii) При любых s и t, таких, что О < s < t < т, каждая s- m ‒ s плоскость содержит точно,», различных t-плоскосте й из EG (т, q). Доказательство. (i) Можно построить t-мерное подпростран- ство, выбирая упорядоченное множество t линейно независимых точек в EG (m, q). Это можно сделать (~- ‒ 1) (~ ‒ ~) (~ ‒ ~'-') различными способами. Однако многие из этих множеств незави- симых точек приводят к одному и тому же t-мерному подпростран- 000,001 000,010 000,011 000,100 000.101 000,110 000,111 001,010 001,011 001,100 001,101 001,110 001,111 010,011 010,100 010,101 010,110 010,1! 1 011,100 011,101 011.1 10 011,111 100.101 100,110 100.111 101,110 101,111 I!О,l I I !3.7. ЕвКЛИДОВО-! ЕОМЕ>>НЧЕСКИЕ КОДЫ 479 
48О ГЛ. 13. ДЕКОДИРОВАНИЕ МА)КОРИТАРНЫМ МЕТОДОМ ству. В самом деле, число множеств, приводящих к одному и тому же 1-мерному подпространству, равно (q' ‒ 1) (q' ‒ q) (q' ‒ q'-') т. е. равно числу способов, которыми можно выбрать упорядочен- ную последовательность независимых точек в t-мерном подпро- странстве. Следовательно, существует (q"' ‒ !) (q~ ‒ q) (q~ ‒ qt ') Г т (ч' ‒ !) (!' ‒ ч) (q' -- q' ') различных t-мерных подпространств. Каждое подпространство т имеет д ‒ ' смежных классов, и поэтому существует О ‒ ~ t-плоскостей. (!!) Заданная s-плоскость может быть расширена до t-плоскости выбором последовательности t ‒ s независимых точек, не при- надлежащих s-плоскости. Эго можно сделать (qm ~а) (qm ~1+1) ( и qt ‒ 1) способами. Однако многие из этих последовательностей незави- симых точек расширяют s-плоскость до той же самой t-плоскости. В самом деле, число последовательностей, приводящих к одной и той же t-плоскости, равно (q ‒ ~') (~' ‒ q*+') (q' ‒ q' ) т. е. равно числу способов, которыми можно выбрать упорядочен- ную последовательность независимых точек на t-плоскости, не используя точки из s-плоскости. Отношение этих двух произведе- ний равно числу различных t-плоскостей, в которых содержится s-плоскость. Эго эквивалентно утверждению, которое требовалось доказать. 0 Определение 13.7.6. Вектором инцадентноста подмножества множества Ч элементов, маркированных индексом е, называется вектор размерности д, ~-я компонента которого равна единице, если элемент, маркированный индексом ~, принадлежит этому подмножеству, и нулю в противном случае. В нашем определении OPM-кода элементы GF (д"') исполь- зуются для нумерации компонент векторного пространства раз- мерности и = ‒ q (которое само содержит qq векторов). Иначе говоря, элементы векторного пространства GF (q) используются для индексации и компонент векторного пространства GFq (q). Вектор инцидентности подмножества Gf ~ (q) ‒ это вектор B GFq (q). Если GF~ (q) определяет структуру евклидовой геоме- трии EG (т, q), то вектор инцидентности плоскости в EG (т, q) является вектором в 6Е~ (q). Как мы увидим, вектор инцидент- 
13.7. евклидово-геометРические коды 481 Для доказательства достаточно вычислить F; и показать, что при всех таких J оно равно нулю, хотя при других ) может быть отлич- ным от нуля. Шаг 1. Используя введенное в теореме 13.7.4 определение, представим (r + 1)-плоскость как множество (v,» ~ + гг; v, + + ггг,,v, ~ + + гг;,чь), где индексы i0 ~,=0, 1 г ° ° ° y C 1 1,...,0 ‒ 1, с,=О, 1г ° ° ° г Д 16 Р. Блейхут ности плоскости в ЕG (m, q) является кодовым словом ОРМ- кода, содержащимся в GF~~ (q). Теперь мы можем предложить альтернативное определение ев- клидово-геометрических кодов. Теорема 13.7.7. Евклидова-геометрическим кодаи r-го порядка и длины и = ды над GF (р) явгяется наибольший линейный код над GF (р), содержащий в своелг нуль-пространстве векторы инци- дентности всех (r + 1)-плоскостей в EG (т, q). Доказательство. Достаточно доказать, что ОРМ-код, которыи содержит код, дуальный евклидово-геометрическому коду, яв- ляется наименьшим линейным кодом над GF (q), содержащим все векторы инцидентности. Эго следует из того, что компоненты вектора инцидентности могут принимать лишь значения нуль или единица, и поэтому все его компоненты всегда лежат в подполе GF (р). Следовательно, вектор инцидентности принадлежит коду, дуальному евклидово-геометрическому коду, если оп принадле- жит ОРМ-коду, содержащему этот дуальный код. Вектор инцидентности принадлежит ОРМ-коду, если он при- надлежит циклическому ОРМ-коду и его символ расширения пра- вилен. Но вектор инцидентности (r + 1)-плоскости содержит О'+' ненулевых компонент, которые прибавляются к нулю по модулю р; поэтому его символ расширения всегда правилен. Необходимо лишь доказать, что вектор инцидентности, у которого последняя компонента опущена, принадлежит циклическому ОРМ- коду. Иначе говоря, нужно доказать, что преобразование Фурье каждого вектора инцидентности fимеет ко,мпоненту F-, равную нулю, если wq(j) ( (q 1) т (q 1) (т г 1) 1, или, что то же самое, , (i) а (д 1) ( + 1). 
48Я ГЛ. 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ маркируют q элементов поля GF (q), à v„..., v„, фиксирован- ное множество независимых точек на (r + 1)-плоскости. Если элемент поля а' принадлежит указанному множеству, то i-я компонента вектора инцидентности f равна единице; в противном случае она равна нулю. Поэтому спектральная компонента л ‒ 1 F;=fаJf, и=О может быть записана как сумма тех слагаемых, у которых /, равно единице; слагаемые, в которых f; равно нулю, можно опу- стить: q ‒ 1 q ‒ 1 q ‒ 1 ;= Z Z Z (о.+ +7,о.+т', р.‒ +" +7 "); io=0 с,=О g =0 Г здесь о„..., о„, можно считать элементами GF (q'+'). Необходимо определить те значения j, при которых F> равны нулю. Используя полиномиальное разложение, получим q ‒ 1 q--1 /! hr+1 hÃ, who ° ° ° и ~и. и . ~'+' О 1. Г+~ ° Г i=0 h i o=0 где под суммированием по h понимается суммирование по всем наборам (й„й„..., Ь„,), таким, что ho + hi + + й,+, = /. Затем переменим порядок суммирования и рассмотрим слагаемое вида g~ t (y~v), где h фиксировано. Шаг 2. Суммирование ~~=оу; проводится по всем элементам поля GF (q), и поэтому сумма может быть выражена через примитив- ный элемент а. При h, отличных от нуля, q ‒ 1 Ч ‒ -" ~у; =О+~ а Величина в правой части равна h-й компоненте преобразования Фурье вектора, состоящего только из единиц. Эта компонента равна нулю во всех случаях, кроме случая, когда h кратно О 1. В этом последнем случае она равна q 1 (mod р), или 1. Для h, равного нулю, ~ у,' = ~ 1 = О (mod р); !=0 i =-0 по определению считалось, что P = 1 при всех т, принадлежа- щих GF (q). Ненулевые слагаемые в сумме, определяющей F>, ‒ это слагае- мые, соответствующие тем h~, 1 = О, ..., r, которые являются не- 
13.7. EBKJIHQQBo-f EQNETPH R EGKHE ~одbl 483 нулевыми кратными д 1; остальные слагаемые равны нулю и могут быть опущены. Сумма принимает вид 1! hp h1 h~q> ~, = < I> ~, '~,' 0 1 "r+1 ho 61 Ьг+1 где суммирование производится по (Ь„..., Ь„y), таким, что fl,, 1 = О, ..., r, суть ненулевые кратные о 1, h.+, ~ О и r+1 h,=j. 1=0 П1аг 8. По теореме Лукаса (теорема 13.3.3) в равенстве для F; полиномиальные коэффициенты равны нулю в тех слагаемых, в которых h>, 1 = О, ..., r + 1, не является О-ичным потомком j; поэтому если h> входит в сумму, то h>, 1 = О, ..., r + 1, является р-ичным потомком j и, следовательно, о-ичным потомком 1. Это получится из теоремы Лукаса, если записать jl i1' t (1 hp) 1 hp! h1! ...ь,+1 ь, (j ‒ hp)! h1l ...ь„+1! = jl (1 hp) ' (1 hp h1)! hp! (j hp)! Ь1! (j ‒ hp ‒ Ь1)! Ьд! ° .. h . 1! Кроме того, любая сумма h>, входящих в сумму, равна р-ичному потомку 1 и, следовательно, О-ичному потомку 1. Резюмируем условия, которым удовлетворяют слагаемые, вно- сящие вклад в величину F;: (1) Z~=о~22 = /; (й) h<, t = О, ..., r, должны быть ненулевыми кратными q 1 иh„„wO; (ш) каждая позиция в q-ичном разложении j равна сумме со- ответствующих позиций О-ичных разложений hl. Для завершения доказательства необходимо показать, что при j, удовлетворяющем неравенству и, (i) ( (Ч 1) (г ; 1), таких слагаемых нет. Шаг 4. Рассмотрим О-ичное разложение некоторого целого й: О ~ ~2Ч + ~2Ч + ' ' ' + 1гп1-ЪЧ Тогда Й (mod q 1) можно вычислить следующим образом: ~2 = ~о + ~22Ч + ~2т >q > = ~22 + К + + ~2„2 ‒ ‒ (mpd q ‒ 1) =и (Й), 1б' 
484 ГЛ. 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ 1 число о можно заменить единицей. так как по модулю о Следовательно, Й = w, (Й) (mod d ‒ 1). Если Й равно ненулевому кратному q 1, то и w, (Й) равно не- нулевому кратному д 1. Рассмотрим д-ичные разложения j u hl. Каждая позиция в д- ичном разложении j равна сумме соответствующих позиций в д- ичных разложениях h<. Поэтому r+1 ,(i) = Z~,(h) причем при 1 = О, ..., г щ, (Ь,) являются ненулевыми кратными д 1. Следовательно, если F> отлично от нуля, то в, (i) ) (а 1) (г + 1). Теорема доказана. П Доказательство следующей теоремы включает алгоритм мажо- ритарного декодирования. Теорема 13.7.8. Пусть д = р'. Евклидово-геометрический код r-го порядка и длины и = q" над GF (р) может быть декодирован мажоритарно в r + 1 шагов при числе ошибок, не превышающем (qm r 1)/[2 (д 1) ] Доказательство. Доказательство проводится рекуррентно; по- казывается, что из множества проверочных равенств, основанных на векторах инцидентности t-плоскостей, можно получить прове- рочные равенства, основанные на векторах инцидентности (t 1)- плоскостей. Отсюда следует, что проверочные равенства, основан- ные на векторах инцидентности (г + 1)-плоскостей, как установ- лено теоремой 13.7.7, в r + 1 шагов сводятся к проверочным ра- венствам для отдельных символов. При этом надо рассуждать следующим образом. Из определения 1-плоскости в конечной геометрии следует, что векторы инцидентности всех t-плоскостей, которые содержат дан- m ‒ (t ‒ 1) ную (1 1)-плоскость, определяют множество г =, <,,> проверок, которые согласуются в сумме ошибочных символов, связанных с точками этой (t ‒ 1)-плоскости. Через любую точку, не принадлежащую заданной (t 1)-плоскости Е, проходит ровно одна t-плоскость, содержащая Е. Следовательно, используя ма- жоритарное решение, можно получить новую проверку, которая соответствует вектору инцидентности (1 1)-плоскости Е. Это >ке может быть сделано для всех (t 1)-плоскостей, содержащих заданную (t 2)-плоскость, которая в свою очередь определяет множество проверок, согласующихся в данной (t 2)-плоскости. 
Il PQEKTH BHo-гEoNETPH ч Ec KH E Kogbl 48б Таким образом, после t шагов по индукции мы получим множество проверочных равенств, согласующихся в О-плоскости, т. е. в од- ном ошибочном символе. Число согласующихся проверок, кото- т ‒ E+t рые могут быть использованы на ~-м шаге, равно, . Следо- m ‒ 1+1 вательно, на каждом шаге проводится не менее, проверок, и корректирующая способность алгоритма равна ‒ q -'+'-1 2 1 2 (д ‒ 1) Этим доказательство теоремы завершается. 0 13.8. ПРОЕКТИВНО-ГЕОМЕТРИЧЕСКИЕ КОДЫ Теорема 13.8.2. Проективно-геометрический код над GF (р) с параметрами r и s и длиной (q 1)I(а 1) является цикличе- ским кодом, порождаемым многочленом, корни которого располо- жены в точках I)>', причем / таковы, что 0 ( j а (q 1)(q ‒ 1) и 1) р') ( (q ‒ 1) (т r I), 0(таха,(i (а 0<1<S где q = p', I) = а~ ‒ ' и а примитивный влемент поля GF (q). Доказательство аналогично доказательству теоремы 13.7.2. Q На рис. 13.10 приведены параметры некоторых проективно- геометрических кодов. Проективно-геометрические коды мажори- Проективно-геометрические коды образуют класс кодов, похо- жий на класс евклидово-геометрических кодов. Отличие состоит лищь в том, что они строятся из непримитивных циклических OPM-кодов длины (q 1) (q 1), а не из OPM-кодов -длины о . Построение проводится так же, как и ранее. Существенную роль играют три поля: GF (p) поле символов кода с простым p, GF (q) с q = p' поле символов непримитивного OPM-кода и GF (q ) поле локаторов. Определение 13.8.1. Пусть r, s u m любые положительные целые числа, и пусть д = р', где р ‒ простое число. Проективно- геометрическим кодом над GF (р) порядка r и длины и = (q 1)I /(q 1) называется код, дуальный подкоду над подполем непри- митивного циклического ОРМ-кода над GF (q) порядка (q ‒ 1) Х X (т r 1) и той же длины. Этому определению эквивалентно определение проективно-гео- метрического кода как непримитивного циклического кода, по- рождающий многочлен которого описывается следующей теоре- мой. 
486 гл. 1з. декодиговАник мАжогитАгным мктодом Укороченный npuMumU8Hblu (п,k)-код бцХ Проеквивно- геомеврическмй (л,k)-код (21, 11) (73, 45) (85, 71) (85, 22) (273, 201) (341, 323) (341, 251) (341, 32) (585, 545) (585, 250) Рис. 13.10. Параметры некоторых проективно-геометрических кодов и некото- рых кодов БЧХ. тарно декодируемы в r шагов. Осталось построить мажоритарный декодер и доказать, что dMlL ‒‒ 1 + (q " 1)/(q 1). Процедуру декодирования можно описать на геометрическом языке проективных геометрий. Проективная геометрия близко связана с евклидовой геометрией. Коротко говоря, проективная геометрия ‒ это евклидова геометрия, дополненная некоторыми новыми точками, которые можно назвать бесконечно удаленными точками, и некоторыми новыми плоскостями, проходящими через эти точки. Формальное определение дело техники. Проективная геометрия PG (т, q) содержит (q +' ‒ 1)/(q 1) точек и определяется ненулевыми точками из GF~+' (q). Таких ненулевых точек q +' ‒ 1, и они разбиваются на (~+' ‒ 1)/(q 1) множеств, каждое из которых включает одну точку PG (т, q). В каждую точку PG (m, q) проектируется q ‒ 1 точек GF~+' (q) (этим и объясняется название проективной геометрии). Правило образования этих множеств следующее: для любого ненулевого вектора v в GF +' (q) и любого ненулевого элемента Х поля GF (q) v и Хч принадлежат одному множеству V; иначе говоря, они отображаются в одну и ту же точку PG (т, q). Число таких ненулевых Х равно д 1, и поэтому в множестве содержится д ‒ 1 векторов. Следовательно, точки проективной геометрии отожде- ствляются с (q +' 1)/(q 1) различными одномерными подпро- странствами из 6Р"+' (q). Проективная геометрия PG (т, q) размерности т над полем GF (q) ‒ это множество таких (~+~ 1)/(q 1) точек вместе 2 4 1 10 8 1 10 42 4 36 16 1 10 42 170 (21, 11) (73. 45) (85, 68) (85, 24) (273, 191) (341, 315) (341,' 195) (341, 45) (585, 520) (585, 184) (1057, 813) (1365, 1328) (1365, 1063) (1365, 483) (1365, 78) 
13.8. ЙРОеКтиВКО-ГеОметРиЧЕсКие КОДЫ 4Я7 с наборами подмножеств, называемых t-плоскостями (t = 0, 1, ...,т). Содержащая V, и V 1-плоскость определяется следующим об- разом. Пусть v, g V, и v, g V,; не имеет значения, какие именно элементы выбираются (см. задачу 13.9). Тогда 1-плоскость (или линия), содержащая V, и Г„образуется точками PG (т, q), яв- ляющимися образами точек Цьч, + Pð, в GF~+' (q), где Р, и Il,— произвольные элементы поля, не равные одновременно нулю. Вы- брать р, и р, можно q' 1 способами, поэтому отображение состоит из (q' 1)/(q ‒ 1) точек PG (т, q). Отсюда следует, что число точек 1-плоскости в PG (т, q) равно q + 1. Аналогично /-плоскость, содержащая V;, ~ = 0, 1, ..., t, опре- деляется следующим образом. Пусть v; Q V; при / = О, ..., t. Точки множества v; должны быть линейно независимыми над GF+' (q), так как множество V~ образуется различными точками из PG (т, q). Тогда t-плоскость, содержащая Vo ..., Vr ‒ это множество точек PG (т, q), которые являются образами точек ~д+Pð,+ +Pv, в 6Р +' (q), где Ц„..., Pt ‒ произвольные элементы поля, не равные одновременно нулю. Величины Ц„..., I)< можно выбрать а'+' ‒ 1 способами, поэтому образ состоит из (д'+' ‒ 1)/(q 1) точек из PG (т, q). Отсюда следует, что (t + 1)-плоскость содер- жит д' + д' ‒ ' + .. +д + 1 точек. t ‒ 1 Теорема 13.8.3. Ьплоскость в PG (т, q) содержит точек и сама имеет структуру проективной авомвтрии PG (3, q). Доказательство. Утверждение о числе точек немедленно сле- 8 ‒ 1 дует из равенства, = (q'+' 1)/(q 1). Утверждение о структуре t-плоскости вытекает из описания структуры PG (t, q) . U Теорема 33.8.4. т+1 (i) PG (т, q) содержит,+, различных t-плоскостей при 1=0,1, ...,т. (11) При любых s и t, таких, что О < s < t < т, каждая Ol ‒ S s-плоскость содержится точно в,, различных Ьплоскостях Ь PG (т, q). Доказательство по существу совпадает с доказательством теоремы 13.7.5. 0 В приведенной ниже теореме проективно-геометрические коды определяются альтернативным способом. Эта теорема аналогична теореме 13.7.7 и доказывается точно так же. Она будет использо- вана при доказательстве того, что проективно-геометрические ко- ды мажоритарно декодируемы, точно так же как теорема 13.7.7 
488 ГЛ ° 13. ДЕКОДИРОВАНИЕ МА)КОРИТА РНЫМ МЕТОДОМ ш~((</ 1) j) ( (q 1) т (q 1) (т r 1) или и,((q . 1)/)((q 1)(r (-1). Для доказательства достаточно вычислить F; « показать, что при таких j оно равно нулю. Шаг 1. Представим r-плоскость как образ множества (у< vr + 7<,,v, i + + 7<,~ь(, где индексы «'„„..., <, маркируют q элементов поля GF (q), а v„..., v, фиксированное множество независимых точек в r-плоскости. Точку, в которой все коэффициенты т равны нулю, исключать не обязательно, так как она не дает вклада в F>. Век- тор инцидентности f содержит в i-й компоненте единицу, если эле- мент'поля u' принадлежит этому множеству, и нуль в противном случае. Положим j' = (q 1) / при j = О, ..., (q 1)/(q 1) 1 и вычислим спектральные компоненты F;: tl ‒ 1 F<. ‒‒ ~', а<<'f< ю=О а ‒ 1 Ч ‒ 1 =Е Е i,=о i,— O q ‒ 1 g (7< vr+ V<, 1" ‒ ~+ +7.оь)'; i =-О Г использовалась при доказательстве того, что евклидово-геометри- ческие коды мажоритарно декодируемы. Теорема 13.8.5. Проеюпивно-геометрический код порядка r и длины и = (q 1)/(q 1) над GF (р) это наибольший ли- ,нейный код над GF (р), содержащий в своем нуль-пространстве векторы инцидентности всех r-плоскостей в PG (т, q). Доказательство. Достаточно доказать, что непримитивный циклический OPM-код, который содержит код, дуальный проектив- но-геометрическому коду, является наименьшим линейным ко- дом над GF (q), который содержит все векторы инцидентности r-плоскостей. Это вытекает из того, что компоненты вектора инцидентности могут принимать лишь нулевые и единичные зна-. чения и поэтому всегда принадлежат подпалю GF (р). Следова- тельно, вектор инцидентности принадлежит коду, дуальному про- ективно-геометрическому коду, если он принадлежит OPM-коду, содержащему этот дуальный код. Вектор инцидентности f принадлежит непримитивному цик- лическому OPM-коду, если компонента F) преобразования Фурье равна нулю при 
13.8. ПРОЕКТИВНО-ГЕОМЕТРИЧЕСКИЕ КОДЫ 489 где v„..., v,, считаются элементами GF (g~). Нужно определить те значения )', при которых эти компоненты равны нулю. Полино- миальное разложение дает q ‒ ! g — 1 j'! h ~о Р/ ° ° 1 у ~ ~ ~ ~~~ 0~ е ° ° )~~ ОО ф l,=0 l,=0 h где суммирование производится по, всем h, удовлетворяющим раз- ложению Ь, + Ь, + ... +Ь, = j'. Переменим порядок суммиро- вания и рассмотрим сумму ~,!в (y;v) . шаг 2. В ~, '!~ву; суммирование проводится по всем элементам поля, и поэтому сумма может быть выражена через примитивный элемент а. Отсюда так же, как и при доказательстве теоремы 13.7.7, заключаем, что вклад в F~ вносят лищь те слагаемые, в которых h< является ненулевым кратным д 1. Поэтому j'! ho hl h F~ = ( 1)g ho!hl! ... hi! '0 '! "о где суммирование проводится по (h„, "., h,), таким, что h<, 1 = = О, ..., r, являются ненулевыми кратными д 1 и г+! gh, =!'. l=О Шаги 3 и 4. Как и при доказательстве теоремы 13.7.7, из тео- ремы Лукаса вытекает, что при всех l величина Ь~'является д-ич- ным потомком j', следовательно, Но, как показано при доказательстве теоремы 13.7.7, и, (h~) являются ненулевыми кратными д ‒ 1 тогда и только тогда, когда h< есть ненулевое кратное д 1. Следовательно, если F; отлично от нуля, то [и~ (i ) ) (q ‒ 1) (г + 1). Эго доказывает теорему. 0 Яоказательство следующей теоремы включает в себя алгоритм мажоритарного декодирования. Теорема 13.8.6. Пусть д = р'. Проективно-геометрический код r-го порядка длины и = (q 1)l(q 1) над GF (p) может превы наю.цвм (q" +1 ‒ 1)l [2 (q 1) ]. 
49Р ГЛ. 13. ДЕКОДИРОВАНИЕ МА)КОРИТАРНММ МЕТОДОМ Доказательство. Доказательство проводится рекуррентно; по- казывается, что из множества проверочных равенств, основанных на векторах инцидентности 3-плоскостей, можно получить про- верочные равенства, основанные на векторах инцидентности (1 1}-плоскостей. Отсюда следует, что проверочные равенства, основанные на векторах инцидентности г-плоскостей, в г шагов могут быть сведены к проверочным соотношениям для отдельных символов. Рассуждения аналогичны доказательству теоремы 13.7.8. 0 ЗАДАЧИ 13.1. Показать, что двоичный (15,7)-код БЧХ, исправляющий двойные ошибки, мажоритарно декодируем при использовании декодера Меггитта в качестве мажоритарного декодера. 13.2. Построить двухшаговый мажоритарный декодер для двоичного (7, 4)- кода Хэмминга. 13.3. Построить мажоритарный декодер для двоичного проективно-геоме- трического (21,12)-кода, исправляющего две ошибки. 13.4. Найти порождающий многочлен для (15,6)-кода над GF (4), исправ- ляющего тройные ошибки и являющегося мажоритарно декодируемым. По- строить декодер. Найти порождающий многочлен для кода БЧХ над GF (4), исправляющего три ошибки. 13.5. Если GF (д) является полем характеристики 2, то некоторые мажо- ритарно декодируемые коды над GF (о) с посредственными характеристиками могут быть получены методом перестановок прн выборе l = (д"' ‒ !}/(д ‒ !). Проверить существование следующих кодов: (255, 156), 1 = 8, над GF (16); (4095, 2800), 3 = 32, над GF (64); (65 535, 47 040), 3 = 128, над GF (256). При проверке вручную для облегчения работы нужно использовать своего рода четырехмерную таблицу, описывающую д-ичные разложения степеней. 13.6. Доказать, что ни один код Рида ‒ Соломона не может быть декоди- рован мажоритарно в пределах его радиуса упаковки. 13.7. Построить мажоритарный декодер для представленного на рис. 13.6 сверточного (42, 28)-кода. 13.8. Показать, что если r-плоскость из EG (m, д) содержит начало коорди- нат, то как векторное пространство она является линейным подпространством в EG (m, д). Для заданной r-плоскости в EG (m, О) указать число r-плоско- стей, не пересекающихся с ней. 13.9. Показать, что при определении 1-плоскости в проективной геометрии не имеет значения, как выбирать в GF~ (О) представляющие Vp u Vy точки. 13.10. Доказать, что в проективной геометрии не существует двух парал- лельных линий, т. е. что любая пара 1-плоскостей имеет ненулевое пересечение. 13.11. Построить высокоскоростной декодер для двоичного (63, 24, 15)-кода БЧХ, одновременно используя четыре мажоритарных декодера для OPM (63, 22, 15)-кода. ЗАМЕЧАНИЯ Четкая формулировка того, что класс мажоритарно декодируемых кодов обра- зует специальный подкласс кодов, исправляющих ошибки, принадлежит Месси [1963). Он установил общие принципы обращения с такими кодами; до этого 
зАмечАния 49f мажоритарное декодирование использовалось лишь в некоторых частных слу- чаях. Первым, кто использовал мажоритарное декодирование, был Рид [1954], применивший его для декодирования кодов Рида ‒ Маллера. В своей работе Яесси специально интересовался сверточными кодами и определил класс мажо- ритарно декодируемых сверточных кодов. Дальнейшее развитие теории свер- точных кодов принадлежит Робинсону и Бернстайну [1967], а также By [1976]. Нахождение конструктивных классов мажоритарно декодируемых блоко- вых кодов оказалось более трудным, и здесь работа продвигалась медленно. Решающим вкладом явилось применение конечных геометрий при построении кодов, первоначально предложенное Рудолфом [1964, 1967] ') и реализованное Колесником и Мирончиковым [1968], а также Касами, Лином и Питерсоном [1968], установившими, что коды Рида ‒ Маллера являются циклическими (если исключить проверочный символ) и могут быть обобщены на произвольные алфавиты. Обобщенные коды Рида ‒ Маллера были введены в работе Касами, Лина и Питерсона [1968) и разрабатывались Уэлдоном [1967, 1968), Касами, Лином и Питерсоном в их второй статье [1968), Геталсом и Дельсартом [1968] и Дельсартом, Геталсом и Мак-Вильямс [1970]. Простой метод построения, описанный в g 13.4, принадлежит Лину и Марковскому [1980]. Конечно-гео- метрические коды подробно обсуждались в обзорной статье Геталса [1975]. ') Независимо от Рудолфа это было сделано В. Д. Колесником и E. Т. Ми- рончиковым; см. Колесников В. Д., Мирончиков E. Т. Некоторые циклические коды и схема декодирования по большинству проверок. ‒ Проблемы передачи информации, 1965, т. 1, вып. 2, с. 3 ‒ 17. ‒ Прим. ред. 
ГЛАВА 14 КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОНТРОЛИРУЮЩИХ ОШИБКИ КОДОВ Любая инженерная дисциплина начинается обзором методов ре- шения определенного класса задач. После того как эти методы изучены, переходят к вопросу об оптимальности. Являются ли эти методы наилучшими? Если нет, то в чем и насколько они усту- пают наилучшим методам? Чтобы ответить на такие вопросы, необходимо знать, насколь- ко хороши известные коды и насколько хороши наилучшие воз- можные коды. Вообще говоря, мы не можем ответить удовлетво- рительно ни на один из этих вопросов. Хотя наилучшие возмож- ные контролирующие ошибки коды для конкретных скоростей и длин неизвестны, известны некоторые границы, а именно гра- ницы, за которыми ни одного кода не существует, и границы, в пределах которых они заведомо существуют. Знание этих гра- ниц позволяет глубже понять предмет. В этой главе мы изучим композиционную структуру блоковых кодов, а также вероятности ошибочного декодирования и неудач- ного декодирования. Затем перейдем к границам для наилучших возможных кодов. 14.1. РАСПРЕДЕЛЕНИЯ ВЕСОВ Мы знаем, что если линейный блоковый код имеет минимальное расстояние d *, то существует хотя бы одно кодовое слово веса d ''. .Иногда нас не удовлетворяет столь малая информация; мы хотим знать, сколько кодовых слов имеют вес d * и каковы веса других кодовых слов. Например, в табл. 5.3 были приведены веса слов двоичного 123,12)-кода Голея. Если код мал, то такую таблицу весов можно построить про- стым перебором. Для кода большой мощности это сделать невоз- можно, и необходимо разработать, если удастся, аналитические методы. Так как для многих кодов неизвестно даже минимальное расстояние, то очевидно, что такие методы, вообще говоря, найти трудно. 
14.1. РАСПРЕДЕЛЕНИЯ ВЕСОВ 493 Пусть А~ число кодовых слов веса l линейного (и, k)-кода. Распределением весов кода называется (и + 1)-мерный вектор с компонентами А~, 1 = О, ..., n. Очевидно, что если минимальное расстояние кода равно d*, ,то А, = 1, А1, ..., А,. 1 равны нулю, а Ad. отлично от нуля. Более глубокая характеристика кода тре- бует дополнительного анализа. Аналитическое описание распределения весов кода трудная задача, но для важного случая кодов Рида Соломона (или лю- бого кода с максимальным расстоянием) аналитическое решение известно. Настоящий параграф служит введением в эту задачу. В нем получена формула числа кодовых слов каждого веса для кода с максимальным расстоянием. В случае произвольного ли- нейного кода такую формулу мы дать не сможем, но некоторые об- щие соображения приведем. Будет выведено тождество Мак- Вильямс, связывающее распределение весов кода с распределе- нием весов дуального кода. Тождество Мак-Вильямс полезно в тех случаях, когда дуальный код достаточно мал, так что его распре- деление весов можно найти на ЭВМ. Начнем с точного решения задачи для кодов с максимальным расстоянием. Теорема 14.1.1. В коде с максамальнь~м расстоянием любое множество k позиций может быть выбрано как множество инфор- мационных позаа,ай, значения символов в нах выбираются произ- вольным образом в GF (q). В оставшихся и k позициях выбор символов определяется правилам кодирования. Доказательство. Код с минимальным расстоянием d * "может восстанавливать любые d * ‒ 1 стертых символов. Так как для кодов с максимальным расстоянием d * = n ‒ Й + 1, то теорема доказана. П Из доказательства теоремы ясно, что если код не является ко- дом с максимальным расстоянием, то утверждение о том, что любое множество й позиций может использоваться как множество информационных позиций, неверно. Это обратное утверждение справедливо для всех двоичных кодов, так как ни один двоичный код не является кодом с максимальным расстоянием. Для кодов с максимальным расстоянием легко вычислить число кодовых слов веса d *. Разобъем множество целых чисел от О до и 1 на два непересекающихся подмножества Td~ H Т~., где Т~. состоит из d* целых чисел. Существует „, способов такого разбиения. Рассмотрим все кодовые слова, имеющие нули в тех позициях, которые принадлежат Т~,. Любое множество й = n d*+ 1 позиций в слове кода с максимальным расстоянием однозначно определяет это кодовое слово. Выберем в качестве и ‒ d' + 1 информационных позиций и ‒ d' позиций, принад- 
4g4 гл. 14. Композиция и хАРАкткРистики кОдОВ лежащих Т~„плюс одну дополнительную позицию. В этой до- полнительной позиции символ может принимать одно из д значе- ний, и тогда символы в оставшихся d 1 позициях определены. Следовательно, существует точно д кодовых слов, у которых в заданных и dÐ позициях стоят нули. Одно из них нулевое кодовое слово, а д 1 слов имеют вес, равный d*. Так как n ‒ d* нулевых позиций, принадлежащих Т~„могут быть выбраны и д, способами, то получим Ад. =~~,) (q ‒ 1). Чтобы найти А~ при 1) d', используем сходные, но гораздо более сложные рассуждения. Это будет сделано по ходу доказа- тельства следующей теоремы. Теорема 14.1.2. Распределение весов (и, Ц-кода над GF (q) с максимальным расстоянием опрвдвлявтся формулами А, = 1, А~ =Onpul 1, ...,d* 1и 1 ‒ И А~ ‒ ‒, д ‒ 1 ‒ -1 ~ . д' ‒ ~' ‒ ~ при 1~ d*. Доказательство. При l (d' теорема очевидна. Дальнейшее доказательство распадается на три шага. Иаг 1. Разобъем совокупность целых чисел от О до n ‒ 1 на два непересекающихся подмножества Т, и Т;, где Т, состоит из 1 целых чисел, и будем рассматривать лишь те кодовые слова, ко- торые содержат нулевые компоненты в позициях с номерами из Т; и ненулевые компоненты во всех других позициях. Пусть М~ число таких кодовых слов веса l. Для произвольного кода А~ ‒‒ , М~, поэтому необходимо лишь доказать, что Чтобы доказать это равенство, установим одно неявное соот- ношение, связывающее М~ и М~ при 1', меньших 1, и 1, боль- ших dÃ. 
14.). МСП ЮдКЛ КН ИЯ ВЕСо В 495 Выберем совокупность n ‒ d~ + 1 информационных компо- нент следующим образом: будем считать информационными все и /компонент, расположенных в принадлежащих Т; позициях, а также любые 1 ‒ d* + 1 компонент, расположенных в принад- лежащих Т~ позициях. Напомним, что компоненты, расположен- ные в позициях, принадлежащих Т;, равны нулю. Произвольным образом приписывая значения оставшимся 1 d* + 1 компонен- там, получим д' ‒ ~'+' 1 ненулевых кодовых слов, вес которых не превышает I. В множестве 1 позиций, принадлежащих Т~, можно выбрать любое подмножество 1' позиций. Число кодовых слов веса 1' с ненулевыми компонентами в этих 1' позициях равно М~ . Сле- довательно, Это неявное соотношение рекуррентно связывает Мд.+> с М..., Мд.~~ с Мд. и A1yeq] и т. д. Разрешив это рекуррентное соотно- шение, мы получим явную формулу для М~. Шаг 2. Запишем равенства в формулировке теоремы в более удобном для доказательства виде. Чтобы с суммой, входящей в последнее из этих равенств, можно было бы обращаться как с многочленом, будем рассматривать д как неопределенную пере- менную. Введем оператор [ 1: N2, =iraq", a„q" n=0 n= ‒ N,~ сохраняющий в сумме коэффициенты лишь при неотрицательных степенях и. Заметим, что он определяет линейную операцию. В этих обозначениях соотношение, которое должно быть доказано, можно переписать в виде Дополнительные слагаемые, включенные в эту сумму, соответ- ствуют отрицательным степеням д и не вносят вклад в М~. Свернем ее, используя формулу бинома Ньютона: 
49/ ГЛ. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ Шаг 3. Покажем, что полученное на втором шаге выражение для М! позволяет разрешить рекуррентное соотношение, выведен- ное на первом шаге: =(q ‒ 1) Z (,',)fq-"-'>(q ‒ 1)'-'1 = ! = (q ‒ 1) Ч-"'-"(Ч ‒ 1)-' Z (,,)(q ‒ 1)' (1 ‒ 1) fq ' (1 ‒ 1/)) 00 (q - 1) Е q'-'-' 1=0 ! ‒ d4 (q ‒ 1) Е q'-'-' = Ф-'+' ‒ 1. i=0 Это и завершает доказательство. 0 Следствие 14.1.3. Распределение весов (и, k)-кода над GF (q) с максамальныл~ расстоянием дается соотношениями А, = 1, А! =Onpul 1, ...,d* 1и ! ‒ И А, =, ' ‒ 1 > . д!-'!'+>-! ‒ 1 при 1~ d*. Доказательство. Воспользуемся тождеством и перепишем доказываемое равенство в виде ! ‒ И А ] / ~ ~l ‒ d~+I ‒ / — ] ! ‒ d4' =( ) Z, ( ‒ 1)'(; )(ЧЧ' "'- ‒ 1)‒ f ‒ d»+1 ‒ Е (-1)'-' (,, )(q'-"'+'- ‒ 1) )=! ! ‒ Н» --(",) Z ( ‒ 1)'(' ')(q-1)q'-‒ c- О Пос.чернее равеиство вытекает из теоремы 14.1.2. 
14.1. РАСПЮДEJIEKHg BECOB 497 Рис. 14.1. Распределение весов (3 1, 15)-кода Рида ‒ Соломона. Следствие 14.1.3 полезно при нахождении распределения ве- сов кодов Рида Соломона, например распределения весов (31, 15)-кода Рида Соломона, приведенного на рис. 14.1. Даже для таких кодов Рида Соломона небольшой мощности число кодовых слов веса 1 может быть очень большим. Вот почему, вооб- ще говоря, практически невозможно найти распределение весов ко- да простым перебором кодовых слов. В случае кодов, не являющихся кодами с максимальным рас- стоянием, не существует правила, аналогичпого теореме 14.1.2. 0 1 2 3 4 5 6 7 8 9 10 !! 12 !3 14 15 !6 !7 !8 !9 20 21 22 23 24 25 2~ 27 28 29 30 31 ! 0 О О О О 0 О 0 О 0 О 0 0 0 О 0 8,22 х !0~ 9,59 х 10" 2,б2 х 10' 4,67 х 10" 7,64 х lp'~ 1,07 х 101~ 1,30 х !P' 1,34 х IO""" 1,17 х!О'" 8,37 х 10'" 48! х 1()'" 2,13 х10" 6,83 х 102' 1,41 х 10'2 1,41 х 10'2 
49Я ГЛ. 14. КОМПОЗИЦИЯ 8 ХАРАКТЕРИСТИКИ КОДОВ При небольших и распределение весов может быть найдено по- иском на ЭВМ, но с ростом и этот метод быстро становится не- практичным. В настоящее время наиболее сильным инструментом являются выражения, устанавливающие связь между распределением весов линейного кода и распределением весов его дуального кода так называемые тождества Мак-Вильямс. Тождества Мак-Виль- ямс справедливы для любого линейного кода; они вытекают из векторной структуры линейного кода и из того факта, что дуаль- ный коду У код является ортогональным дополнением Ж. Прежде чем переходить к выводу тождеств Мак-Вильямс, мы должны вер- нуться K изучению абстрактных конечномерных векторных про- странств, начатому в ~ 2.6. Необходимо ввести понятия пересече- ния и прямой суммы двух подпространств и доказать их некоторые свойства. Пусть U u V подпространства пространства F". Тогда U Д V называется пересечением U u V и означает множество векторов, принадлежащих и U, и V; У® V называется прямой суммой U u V и означает множество всех линейных комбинаций au + bv, где и и v принадлежат соответственно U и V, а а и b скаляры. Как U Я Р, так и У® V являются подпространствами в F~ Теорема 14.1.4. dim [U P V] + dim f U ® V] = dim [У] + dim [~]. Доказательство. Базис надпространства U (] V состоит из dim [U Я V] векторов. Этот базис может быть расширен до ба- зиса U добавлением dim [U] dim [U () Vl базисных векторов и до базиса V добавлением dim [V] dim [U Д V] базисных векторов. Все эти базисные векторы в совокупности образуют ба- зис подпространства U ® V. Таким образом, dim [У ® V] = dim [U () V] + + dim [U] dim [U (] V] + dim' [V] dim [У (] V], откуда следует теорема. Теорема 14.1.5. (~~ П ~'~ = ((~ 83 V)~ Доказательство. Подпространство U содержится в (/ ® ~', и поэтому (U 83 V)i содержится в У~. Аналогично (U 9 V)-' содержится в V~. Следовательно, (U ® V)~ содержится в U> () П ~~-. С другой стороны, запишем элемент из U ® V как au + bv и обозначим через w любой элемент из U~ (] V~. Тогда w (пи+ + bv) = О, и, следовательно, У'- (] Vi содержится в (U EB V)-'-. Отсюда следует, что эти два множества совпадают, а 
14.1. РАсп~еделения весов 49g Пусть А ~, 1 = О, ..., и, и Bi, 1 = О, ..., и, представляют со- бой распределения весов линейного кода и его дуального кода соответственно. Определим нумераторы весов кода равенствами и и А (х) = ~"., А,х' и В (х) = ~ В,х~. !=О s=о Следующая теорема связывает эти два многочлена и позволяет вычислить один из них, если известен другой. Теорема 14.1.6. Нумератор весов А (х) линейного (n, 'я)-кода над GF (q) и нумератор весов В (х) дуального ему кода связаны coom- ношением д"В(х) = [1+(д ‒ 1) х]" А (, ). Доказательство. Рассмотрим код Ж и дуальный ему код Ж~. Доказательство состоит из двух частей. В первой части мы дока- жем, что В.( ) дп ‒ Й ‒ т~А ( ) для т = О, ..., и. Во второй части мы докажем, что это равенство эквивалентно утверждению теоремы. Часть 1. Для заданного т разобъем целые числа от О до и 1 на два непересекающихся подмножества Т и Т, где подмно- жество T„, состоит из т элементов. Пусть V образует т-мерное надпространство векторного пространства GF" (ci), состоящее из всех векторов с нулевыми компонентами в позициях с номерами из Т . Тогда V~ является (n т)-мерным подпространством, состоящим из всех векторов с нулевыми компонентами в позициях с номерами из Т. В силу теоремы 14.1.5 (@' П ~) 1 = @'1 Ю "'~; поэтому dim [Ж~ ® Г'-] = и ‒ 41т [Ж П V]. С другой стороны, по теореме 14.1.4 dim [Æ~ ® V~] = (n ‒ Й) +(n ‒ т) ‒ dim [Æ~ (] V~]. Из этих равенств следует, что dim[%'~ (] V~] = dim[%' (] V]+ и ‒ Й ‒ т. Теперь заметим, что при каждом выборе Т существует д [®~" ~~ векторов в Ж П У и д ' ~~ "~ ] векторов в Ж Д y . 
QPP ГЛ. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ Рассмотрим }Т} ‒ совокупность всех таких Т. Пересчитаем векторы в каждом Ж П V, которые могут быть получены из не- которого подмножества Т, принадлежащего совокупности }Т }. Число пересчитанных векторов равно ~~ ~г д ' }@ 1 "], причем / } многие из них входят в подсчет несколько раз. Аналогично пере- считав все векторы в каждом Ж-]- (( V~~, которое получается из Т, принадлежащего } T }, имеем Ъ~ dim [Я'] 1VÇ ] n ‒ /г ‒ лс Тi dim [ф( 1V] ,~~~ g =- g ~ g (Т„} (' ) Аналогично можно сосчитать векторы в Ж'- ("( V~. Тогда предыду- щее равенство переходит в равенство ~~Я,( ) ~л ‒ Й ‒ mfA.( Так как т произвольно, первая часть доказательства завершена. Часлгь 2. Исходя из выводов первой части, запишем тождество для многочленов IL 12 l2 12 ~m g~ Я ( ) ~~~~ ilmqn ‒ и ‒ т Q~ А ( ) и=-0 L= 0 ' nL=0 ~=0 Переменим порядок суммирования ll l2 ‒ L 1L tl у=-0 i=0 л1 =0 т=0 Чтобы завершить первую часть доказательства, необходимо оценить две суммы, входящие в это равенство.,Д,ля этого сосчи- таем, сколько раз вектор веса j, принадлежащий Ж, появится в множестве Ж f) V. Указанный вектор принадлежит Ж n V тогда и только тогда, когда эти ero j позиций входят в число тех т позиций принадлежащих V векторов, в которых допускаются ненулевые компоненты, или, что эквивалентно, если и ‒ т пози- ций, в которых принадлежащие V векторы должны содержать нулевые компоненты, попадают в и ‒ j позиций кодового слова. содержащие нулевые компоненты. Выбрать и ‒ т позиций, '12 ‒ jh которые содержат нулевые компоненты, можно „) cnoco- l2 ‒ 1' бами; поэтому данное кодовое слово веса j входит в „мно- жеств. Существует А, кодовых слов веса j. Поэтому }@ "] = gl А;(„ i,)} ('/ 1 12 ‒ лг, 
14.1. РАСПРЕДЕЛЕНИЯ ВЕСОВ QP$ n ‒ 1 вспомнив, что =- О, если пг ) n ‒ г. Используя формулу бинома Ньютона, имеем ~~ В. (1 + у)л ‒ г qè ‒ Й f А. (у(г7)п (1 ~ г7(у)~г ‒ г' j'=0 i=0 Наконец, сделав подстановку у = 1/х ‒ 1, получим или й Л д' Вх'= 1- д ‒ 1 x" А, i=0 !'=0 что завершает доказательство теоремы. 0 В заключение параграфа укажем на простое применение этой теоремы. Из табл. 1.1 следует, что распределение весов (7,4)-кода Хэмминга равно (А„А,, ..., А;) =- (1, 0, 0, 7, 7, 0, 0, 1), так что нумератор весов имеет вид А (х) = x' + 7х' ‒ 7х' + 1. Соответствующий дуальный код ‒ это двоичный циклический код, известный под названием симплексного. Корнями ero поро- ждающего многочлена g (õ) = х' + х' + х'- + 1 =- (1 ‒ х)' + 7 (1 + х)з (1 ‒ х)' + 7 (1 + х)' (1 ‒ х)~ + + (1 + х)', откуда следует, что В (х) ==- 7x4 -1- 1. Симплексный (7,31-код имеет одно кодовое слово веса О и семь кодовых слов веса 4. являются a,' и а'. Согласно теореме 14.1.6, нумератор весов В (х) симплексного кода удовлетворяет равенству 2'В (х) = (1 + л.)' А [(1 ‒ х)/(1 + х) ] =‒ 
5ОЯ Гл. 14. кОМЙОЗициЯ и хАРАктеРистики кОдОВ 14.2. ВЕРОЯТНОСТИ ОШИБОЧНОГО ДЕКОДИРОВАНИЯ И НЕУДАЧНОГО ДЕКОДИРОВАНИЯ Неполный декодер для корректирующего t ошибок кода исправ- ляет в пределах радиуса упаковки все конфигурации ошибок веса, не превышающего t, и не исправляет ни одной конфигура- ции ошибок веса больще t. Если происходит более t ощибок, то декодер иногда заявляет, что сообщение не подлежит исправле- нию, а иногда делает ощибку при декодировании. Следовательно, на выходе декодера может появляться правильное сообщение, неправильное сообщение или декодирование объявляется не- удачным (сообщение стирается). В общем случае неизвестно, как вычислить вероятности этих событий, но в некоторых част- ных случаях, представляющих практический интерес, получены удовлетворительные выражения. Рассмотрим случай использования линейных кодов в каналах, вносящих в символы ощибки независимо и симметрично. Выра- жения для указанных вероятностей зависят от распределения весов {А,) кода и поэтому полезны лишь в случае, когда оно известно. В предыдущем параграфе получено распределение весов для кодов Рида ‒ Соломона, так что для этих кодов мы можем вычислить вероятности ощибочного декодирования и не- удачного декодирования. Рассматриваемые каналы представляют собой О-ичные каналы, вносящие ощибки в передаваемые символы независимо с вероят- ностью P и передающие символы правильно с вероятностью 1 Р. Каждое из g ‒ 1 ощибочных значений принимается с вероятностью Pl(g ‒ 1). Каждая конфигурация Й ошибок наблюдается с вероятностью р (И) = ( ~ )' (1 ‒ P) - . Мы рассмотрим лищь неполный декодер, которь|й не принимает рещения о декодировании вне радиуса упаковки кода. Каждое принятое слово, лежащее от ближайщего кодового слова на рас- стоянии, не превыщающем t, декодируется в это кодовое слово; здесь t ‒ фиксированное число, удовлетворяющее неравенству 2t+ 1 < d*. Исследуем условные вероятности ощибочного и неудачного декоди- рования в случае линейного кода при условии, что передано слово, целиком состоящее из нулей. Каждое другое переданное слово приводит к тем же самым условным вероятностям, так что они являются также безусловными вероятностями. На рис. 14.2 изображены три области, в которые может попасть принятое слово. 
14.2. веюятности ошиьочного декодиеовАния 5О3 ' ® е' Кодовые слова ПереЪанное кодовое слово ® Рис. 14.2. Области декодирования. Вероятность правильного декодирования ‒ это вероятность того, что принятое слово попадает в область, покрытую редкой щтри- ховкой. Вероятность неправильного декодирования ‒ это вероят- ность того, что принятое слово попадет в область, покрытую частой щтриховкой. Вероятность неудачного декодирования‒ это вероятность того, что принятое слово попадет в незащтрихо- ванную область. Сумма этих трех вероятностей равна 1, поэтому достаточно найти формулы лищь для двух из них. Начнем с самого простого. Теорема !4.2.!. Вероятность правильного декодирования де- кодера, исправляющего ошибки в пределах радиуса упаковки кода, равна ( р„. = f (,1Р" (1 ‒ Р)™. v=0 Доказательство. Число способов, которыми можно разместить t2 конФигурации из > ощибок, равно,,; каждая из них имеет место с вероятностью P' (1 ‒ P)" ‒ '. Отсюда следует утверждение теоремы. 0 Хотя теорема справедлива для любых объемов алфавита, в формулу входит лищь вероятность появления ощибочного сим- вола. Не имеет значения, как она распадается на вероятности конкретных ощибочных значений. В следующей теореме, каса- ющейся неудачного декодирования, необходимо подсчитать число способов, которыми могут быть сделаны ощибки. Некоторые кон- 
Qp4 Гл 14. КОмпОзиция и хАРАктеРистики кОдОВ фигурации ошибок, вероятности которых нужно просуммировать, приведены на рис. 143. Пусть N (1, h; s) означает число конфигураций ошибок веса h, находящихся на расстоянии s от кодового слова веса 1. Ясно, что N (1, h; s) не зависит от выбора кодового слова веса l. Заметим, что если N (1, h; s) =,й О, то ! s ( h ~ 1+ s. В приведенной ниже теореме это условие выполняется автоматически, так как П мы условились считать = 0 при т а.. 0 или т ) и. ''Теорема !4.2.2. Число конфигураций ошибок веса h, нахо- дящихся на расстоянии s ои конкретного кодового слова веса 1, равно Доказательство. Равенству, которое требуется доказать, экви- валентно равенство Ш(1, Й; 5) = ~„'[( „) (q ‒ 1)~ [(,.) (q ‒ 2)' [( . )], i+i'+k=s 1+4 ‒ j=h что может быть проверено подстановкой А = j+ h ‒ 1. В нем фигурируют три индекса суммирования и два ограничения. Сум- мируется число кодовых слов, которые могут быть получень, заменой любых й из и ‒ 1 нулевых компонент кодового слова на любой из д ‒ 1 ненулевых символов, любых ~ из 1 ненулевых ПереЬО.нное коЬоеое слово РНс. 14.3. Н.котопые слова, вызывающие ошибку декодирова11ия. 
14.3. РАСПРЕДЕЛЕНИЕ ВЕСОВ СВЕРТОЧНЫХ КОДОВ Щ~) компонент на любой из оставшихся д ‒ 2 ненулевых символов и любых j из оставшихся ненулевых компонент на нули. Огра- ничение i + j+ А = s гарантирует, что результирующее слово находится на расстоянии s от кодового слова. Ограничение 1 -~- + А j = h гарантирует, что результирующее слово имеет вес h. ~Л Теорема 14.2.3. Есла 2t+ 1 ~ d* и декодер исаравляет все конфигурации ошибок, вес которых не превышает t, mo верояпгность ошибочного декодирования равна Л и р, = f [Pt(1 ‒ g)] (1 ‒ P) -« ~,' ~ А,N(t, h; s). h=0 3=0 l=] Доказательство. Число конфигураций ошибок веса h, кото- рые приводят к ошибке декодирования, равно ~„',=а~„'~ ~А,М (1, h; s); в силу условия 2t+ 1 ( d' ни одна из конфигураций оши- бок не сосчитана дважды. Вероятность каждой из них равна (Pl(g 1) ]«(1 ‒ P)" ", что доказывает теорему. О Теоремы 14.2.2, 14.2.3 и 14.1.2 содержат все необходимое для нахождения вероятности ошибки кода Рида ‒ Соломона. Эта вероятность может быть вычислена непосредственно на ЭВМ. Приведенные соотношения легко модифицировать применительно к декодеру, исправляющему ошибки и стирания. Если число стираний равно р, то нужно просто заменить и на и р, а р, на условную вероятность ошибки р,1р. Тогда если распределение вероятностей Q (р) числа стираний р известно, то р, может быть вычислено по формуле р, = ~р р, I pQ (р). 14.3. РАСПРЕДЕЛЕНИЕ ВЕСОВ СВЕРТОЧНЫХ КОДОВ Вес бесконечно длинного кодового слова сверточного кода равен числу его ненулевых компонент. Свободное расстояние ‒ это вес кодового слова минимального веса. Свободная длина ‒ это длина сегмента кодового слова минимального веса до его послед- него ненулевого кадра включительно. Если код настолько прост, что его решетку можно построить непосредственно, то все эти параметры можно найти по решетке. Например, на рис. 14.4 перерисована решетка сверточного (6,3)-кода, исследованного в гл. 12. Один из путей имеет вес 5, и этот вес является минималь ным расстоянием кода. Длина этого пути равна трем кадрам, поэтому свободная длина кода равна 6. Информационная последо- вательность пути, определяющего свободное расстояние, содержит одну единицу. Изучая далее решетку, увидим, что вес 6 имеют два пути, вес 8 один путь и вес 10 ‒ один путь. Таким образом 
5О6 Гл. 14. кОмпОзиция и хАРАктеРистики кОдОВ Время Cocmowue 0 00 2 3 00 00 00 00 ° ° ° ° ° ° ° ° ° 11 t 10 10 10 ПослебнмО ооспщлцваоО 0ие Рис. 14.4. Представление сверточного (6, 3)-кода с помощью решетки. ° ° ° 1О 1О - 10 b =Dc+Db, c=D2ö+-~, d = Dc+ Dd, е = D"-b. Решение этих уравнений дает gS 1 ‒ 2D можно пересчитать число путей каждого веса, но это занятие быстро становится утомительным. В этом параграфе мы опишем более эффективную процедуру. На рис. 14.5, а решетка после исключения временной оси све- дена к диаграмме состояний. для удобства эта диаграмма со- стояний перерисована на рис. 14.5, б с маркировкой путей. Так как мы интересуемся только путями. которые иачинаются и заканчиваются 00, узел, маркированный символами 00, представ- лен дважды: один раз как вход, второй раз как выход. На этой диаграмме состояний легко проследить путь веса 5. Вес пути можно найти проще, связав вклад каждого пути со степенью некоторой формальной переменной D и воспользовав- шись методом, предложенным для анализа диаграмм состояний. Модифицированная диаграмма состояний приведена на рис. 14.6, где вес ребра представлен степенью D. Вес пути получается умножением вкладов всех ребер вдоль этого пути. Вычислим общий вклад Т (D) совокупности всех путей между входом и выходом, решив следующую систему уравнений, най- денных по рис. 14.6: 
14,3, РАСДРЕДЕЛЕНКЕ BECOB СВЕРТОЧНЫХ КОПОВ 507 00 00 10 1О 01 Рис. 14.6. Модифицированная диаграмма состояний для сверточного (6, 3)-кода. а ‒ с переменной D, подсчитывающей задержку; б ‒ с перемен- ными D, L и 1, подсчитывающими соответственно задержку, число кадров и число единиц на входе. Следовательно, вес А + 5 имеют 2~ путей. Тот же метод можно использовать для изучения других свойств кода. Введем две новые формальные переменные, а именно L для подсчета кадров и I для подсчета числа единиц на входе. Вклад любого ребра равен одному L; если ребро соответствует поступлению единичного входного символа, то erp вклад равец Рис. 14.5. Диаграмма состояний для сверточного (6, 3)-кода. 2=00 b=-10 C =01 d =11 Е.=00 и поэтому передаточная функция равна T (D) D5 ~ 2Д6 + 4D( ( + 2ЙДЙ+5 1 ‒ 2D а -00 b= to с = 01 ~=11 е =00 
QQQ ГЛ. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ одному 1, а вклады остальных ребер не содержат (. Поэтому, как и ранее, получим рь|зу 1 ‒ DL(l + L) I ~)ъ~эI ~ DÂL4 (1 ~ () /2+Dч~5(1 ~ L)~ P + p~+~gà~ü (1 L цж р+I Мы видим, что путь веса 5 имеет длину 3 и соответствует инфор- мационной последовательности с одним единичным символом, Вес 6 имеют два пути, каждому из которых соответствует инфор- мационная последовательность с двумя единицами; длина одного из этих путей равна 5, а другого 6. Таким образом мы полностью определим свойства сверточного кода. Эти свойства полезно знать при сравнении структур двух сверточных кодов; кро1ие того, знание дистанционной структуры кода необходимо при оценке вероятности ошибки кода, исполь- зуемого в конкретном канале, 14.4. ГРАНИЦЫ МИНИМАЛЬНОГО РАССТОЯНИЯ ДЛЯ БЛОКОВЫХ КОДОВ О контролирующем ошибки коде с длиной и и скоростью R судят по его минимальному расстоянию d*. Если имеются два кода с одинаковыми и и R, то в общем случае следует предпочесть код с большим d'. Для данного кода У хотелось бы знать, яв- ляется ли его d* максимально большим среди минимальных рас- стояний кодов с даннымп и и Я. Вообще говоря, не считая слу- чаев, когда и довольно мало, ответ на этот вопрос неизвестен, и можно указать лишь некоторые грубые границы для d В част- ности, мы уже встречались с границей Синглтона, которая при и, много больших д, становится весьма грубой. Мы проведем лишь асимптотический анализ. При фиксиро- ванном объеме алфавита q введем обозначение d (и, R) = maxd'(Ó), Я' где максимум берется по всем кодам с длиной и и скоростью R, а Г (У) равно д*(Ж) = т1п d(x, y) х, yg® и представляет собой минимальное расстояние кода У. Функция d (n, R) определяет наибольшее минимальное расстояние среди всех кодов над GF (q) со скоростью R и длиной п. Если не считать 
144, ГРАНИЦЫ ДЛЯ БЛОКОВЫХ КОДОВ б09 области малых значений и, функция d (и, R) неизвестна. Опре- делим, далее, d (R) = lim [d (n, R)~!n) при условии, что этот предел существует. Если функция d (R) известна, то мы можем сказать, что при достаточно больших и наилучший блоковый код со скоростью R имеет минимальное рас- стояние Г, приблизительно равное nd(R). Поэтому функция d(R), если она известна, дает нам критерий, по которому можно судить о существующих классах контролирующих ошибки кодов. Кроме того, знание d(R) может дать нам некоторый ключ к изуче- нию структуры хороших кодов и указать путь их построения. Хотя знать функции d(n, R) и d(R) было .бы весьма жела- тельно, в настоящее время они не известны. Все что мы знаем это их нижние и верхние границы; некоторые из них выводятся в данном параграфе. Остановимся лишь на тех границах, которые можно получить, не прилагая больших усилий; в частности, мы получим границы, известные как нижняя граница Гилберта ') и верхняя грании,а Элайса. Чтобы получить эти границы, воспользуемся методом исчерпь|- вания и оценим композиции типичных кодовых слов. Композицией q-ичного кодового слова назовем q-мерный вектор (и,, ..., nq,), ",,и, = и, 1-я компонента которого определяет, сколько раз в кодовом слове встречается 1-я буква. Относительной частотой д-ичного кодового слова называется д-мерный вектор (р„, ... ...,р~,), где р, = и,!и. Выразим границы минимального расстояния через полиномиальные коэффициенты п1!Цп~1, где П,п,! означает произведение П~~ а (п,!). Функьия энтропии Н (р) определяется как Мы хотим доказать асимптотически справедливое при больших и равенство nl е<н (p) п~ (п~!) и сделать это как можно короче. Этому условию удовлетворяет доказательство, использующее формулу Стирлинга у 2lleK, < ll + 2~л " 1 12 ') Эта граница известна также под названием границы Варшамова ‒ Гид- берта. ‒ Прим. ред, 
51Q ГЛ. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ Теорема 14.4.1. en [H (р) ‒ оа (t ) ] <, Е~ [H (p) П~ (ng I) где о, (1) = ‒ (q ‒ 1)[од(2пя)+ logp, ‒ ‒ „ log (1 + „1), 1 1 1 1 l о,(1) = (q ‒ 1)[од(2пп) + ‒ logp, + 1 1 и ~ 12п ‒ 1 Доказательство. log с 1од п1 Р 2пп (и/е)" [1 + 1/(12п ‒ 1)] П~ (ngI) П1 [V2n in (п~/е)" I ] П~п"( у 2пп [1+ 1/(12п ‒ 1)] = log ‒ „ log П,n"( 1 П~ V2n~n Замена п~ ‒ ‒ пр~ доказывает правую часть неравенства. Левая часть доказывается тем же способом. П Теперь можно приступить к доказательству границы Гил- берта. Мы проведем его, подсчитав число кодовых слов внутри сферы с центром в произвольной точке пространства (не обяза- тельно представляющей кодовое слово) и затем усреднив это число. Число точек внутри сферы радиуса а назовем объемом сферы; оно равно о Теорема 14.4.2. Пусть V число точек внутри сферы ра- диуса d с и,ентром в некоторой точке векторного пространства GF" (g). Для заданного кода У мощности g~ среднее число кодовых слов внутри сферы радиуса а с центром в произвольной точке пространства равно т = gIVlgn Доказательстве. Опищем сферы радиуса а вокруг каждой точки пространства. Подсчитаем число кодовых слов внутри каж- дой сферы и затем просуммируем по всем сферам. Так как на расстоянии, не превышающем d, вокруг кодового слова нахо- дится V точек, это слово лежит внутри V таких сфер. Поэтому сумма числа кодовых слов внутри всех сфер равна g~V, и, сле- довательно, в среднем на сферу приходится q~ V/q" кодовых ÑËÎ~. 
f4,4. ГРАНИЦЫ ДЛЯ БЛОКОВЫХ КОДОВ Теорема 14.4.3. Над GF (g) существуют коды со скоростью R и минимальным расстоянием d, для которых R ) 1 (1/п} 1од V, где V объем сферы радиуса d. Доказательство. Воспользуемся теоремой 14.4.2 и будем счи- тать, что Т w 1. Если это не так, то можно взять любую точку, у которой на расстоянии, не превышающем d, нет кодовых слов, и объявить ее кодовым словом, тем самым расширив код. Следо- вательно, gk ‒ nV о1 или где о (1) стремится к нулю при п, стремящемся к бесконечности. Далее, logä V < 6 logä (g ‒ 1) ‒ 6 log, 6 ‒ (1 ‒ 6) log (1 ‒ 6) ‒ о' (1). Подставив это неравенство в неравенство, доказанное в теореме 14.4.3 и опустив в асимптотике член о' (1}, завершим доказа- тел ьст Во. П Для двоичных кодов граница Гилберта принимает вид R)1 Нь(с1), где Нь (d) d log2 d (1 d) 1оай (1 Графически эта граница изображена на рис. 14.7. d). ') При И < и/2. ‒ Прим. ред. и ‒ А <log V, откуда следует утверждение теоремы. Теорема 14.4.4 (граница Гилберта). Функция d(R) ) 6 для всех значений О, которые удовлетворяют нераеенству R)1 61од (g 1)+61о~ 6+ + (1 6) logg (1 ‒ 6). Доказательство. Объем V представляет сумму d слагаемых, из которых последнее является наибольшим '). Поэтому V ( d (g ‒ 1)~ (",). Используя теорему 14.4.1 и сделав подстановку О = djn, получим n [ ‒ 6 10g 6 ‒ (1 ‒ 6) 10g (1 ‒ 6) ‒ о (1)] Vс а~д ‒ 1)" д 
~12 tJl. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ 0,5 0,4 О,'3 ЫЯ) 0,2 О,t 0 0,1 0,2 О,З 0,4 0,5 0,6 0,7 О,В 0,9 1,0 Скоросвь R' рис. 14.7. Некоторы извхтные гр)цацы функции d (R) пРи Ч Теперь выведем верхнюю границу для d (R), называемую границей Элайса. Предположим, что код имеет М = е" слов длины и. Совместной композицией кодовых <»B < и с' на- 1 зывается таблица (и',~.) размера g X g, где элемент и>< опреде- ляет число позиций, в которых кодовое слово с содержит символ 1, а кодовое слово с' символ 1', следовательно, а (с, с') = ~, 'n;; (, (' g~ (е На расстоянии t от каждого кодового слова находится всего A, =(g ‒ 1) (",) слов; это число равно количеству слов, расположенных на сфере радиуса Теорема 14.4.5. Пусть А, ‒ число кодовых слов на сфере радиуса t с центром в любой точке векторного пространства GF" (g). Яля заданного кода У мощности g~ среднее число кодовых слов на сфере с центром в произвольной точке пространства равно т, = д~л,~q. Доказательство. Так как на расстоянии t от кодового слова располагается А, точек, оно лежит на А, таких сферах. Поэтому сумма числа кодовых слов, расположенных на всех таких сферах, равна о"А,, и среднее число кодовых слов на сфере равно g" А~/g". ~] 
14.4. ГРАНпЦЫ ДЛЯ БЛОКОВЫХ КОДОВ 613 Выберем сферу так, чтобы на ней число кодовых слов было бы не меньше среднего. Удобно представить себе, что центром такой сферы является слово, целиком состоящее из нулей. Для этого достаточно так отобразить на себя исходное пространство, вклю- чая кодовые слова, чтобы центр выбранной сферы совпал со словом, целиком состоящим из нулей. Это не повлияет на мини- мальное расстояние кода. Таким образом получим сферу радиуса 3 с центром в начале координат, на которой лежит Т кодовых слов, где Т не меньше g~ ‒ "А,. В дальнейшем величина t будет выбрана так, чтобы Т было достаточно большим и удовлетворяло нашим целям. Следу- ющий шаг ‒ оценка расстояния между двумя кодовыми словами, находящимися на сфере. Чтобы получить ее, оценим среднее расстояние между такими кодовыми словами 1 "" = т <т ‒ ~~ "~о где d«~ ‒ общее р асстоя ние, получаемое суммированием р ас- стояний между неупорядоченными парами кодовых слов (не обя- зательно различных) на сфере: dt„= ~, 'd(с, с') = ~,','Р и,",.. Ci 1=! !' Напомним, что (flt t ) ‒ это совместная композиция кодовых слов с и с . Упростим суммирование по с и с . Пусть fill' ~; равно единице, если в ~-й позиции с стоит 1, а с' имеет в этой позиции 1', в противном случае оно равно нулю. Пусть Т! ~; ‒ число кодовых слов на сфере, имеющих 1 в i-й позиции. Тогда ll ‒ 1 сс' ~~~ сс' и!!. ‒ ‒ Z™ nil.I ! 1 i=0 titot = Z Z ~, 'и'„',, i l. l' с,с' l~ l' Введем теперь величину ~! ~ ! Tl ~i~T равную доле кодовых слов на сфере, имеющих ! в i-й позиции. Общее расстояние между такими кодовыми словами равно 'stot = 7' g f ~It t~l ~ Р!1, с г! Р Р. Блейхут 
514 ГЛ. 14, КОМПОЗИЦИЯ Н ХАРАКТЕРИСТИКИ КОДОВ где D(i равно единице, если г «~= г', и нулю в противном случае. Значения Х( ~ i нам неизвестны, Но мы знаем, что они удовлетворяют двум следующим ограничениям: q ‒ 1и ‒ 1 Так как Х(~; неизвестны, рассмотрим наихудший случай, выбрав их значения так, чтобы при одновременном выполнении указан- ных ограничений величина в правой части формулы для dt,t была бы как можно больше. Если предварительно доказано, что максимальная функция является выпуклой функцией вероятност- ного вектора А, то один из методов решения задачи состоит в ис- пользовании множителей Лагранжа. Чтобы упросгить доказатель- ство, воспользуемся вместо этого элементарным приемом: сначала укажем, какие значения Х(~( являются максимизирующими, а за- тем докажем, что они в самом деле таковы, Лемма 14.4.6. Пуспгь F (>) =. ~',г QI ) lг,Х,.~ '~ll' где all. равно единице, если 1 «~~ l', а нул(о в проагавнач случпе. Если для Х имеют место ограначеная 0--1 то ~ + (~ ‒ ~)"- F(1)< / [ Доказательство. Прежде всего заметим, что из указанных ограничений вытекает соотношение n ‒ 1 ~, '1~о~; =- и -- /. -o Пусть 1-- t/è, 1= ‒ О, (Цп1((г( ‒ 1), г =- 1, ..., q -- 1 при всех г. Убедимся, что эти значения максггмизируют F (1). Заметим, что t/è, 1'=О, 1 ‒ Я)п~((у ‒ 1) г, I' + О. 
!4.4, ГРАНИЦЫ ДЛЯ БЛОКОВЫХ КОДОВ Поэтому при всех ~;, которые удовлетворяют нашим ограничениям, включая У 4 ~ ! 7, ~!к~ tD!! 1-=-0 i=- 0 !'= ‒ 0 1 1 + и Раскрыв скобки и проведя упрошения в левой части этого равен- ства, получим Е Z (4~ --М>г)(Xг >, - Z~' >гг)%! 1 1, 1' = Z 1 (Аг | I) I ~ с ‒ кг J А'[i) Dll'. с' 1, !' ,Достаточно показать, что величина в левой части этого равенства неположительна. Введем обозначение сг1г = (1 I I ( ‒ Xl I I) и заметим, что ~г сг ~ г ‒ ‒ О. Необходимо доказать, что при любом г ~, '(сг ~ гсг. г;) Е)гг. ~ О. 1/ Но при любом ° ° сг[гсг'~qDii = ~сгггсг Jf ‒ ~сг~г=О ‒ ~сг~г~О. 1. 1' 1, !' 1 1 Доказательство леммы завершается вычислением значения F ()г,*). Е3 Теорема 14.4.7 (граница Элайса}. Пуспгь 7' = q ‒ (tl ‒ lгг (q 1}г (,) Доказательство. Выберем величину t в теореме 14.4.5 так, чтобы Т, было больше единицы. Тогда существует сфера, на 17~ где t произвольно. Гсли Т ) 1, то любой код над GF (q) co ско- рость!о Я а дланой и содержат пару кодовых слов, расстояние d между которыма удовлетворяет неравенству d~ ~( Т ~ д 1+(д ‒,) Т ‒ 1 [ä ‒ 1 (д-- 1)~ и 
516 ГЛ. 14. КОИПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ которой число кодовых слов T больше единицы. Среднее расстоя- ние между этими кодовыми словами удовлетворяет неравенству d,„<(Т!(Т ‒ 1)1 Х Е41А! 1 р 1 1,!' ,Для завершения доказательства необходимо применить лемму 14.4.6 и воспользоваться тем, что хотя бы два кодовых слова должны располагаться друг от друга на расстоянии, не меньшем среднего. П Следствие 14.4.8 (граннца Элайса). В двоичных кодах со ско- ростью R относительное минимальное расстояние асамптоти- ческа удовлетворяет неравенству Ы (Р) а 2р (1 ‒ р) при любых р, для которых 1 ‒ Н~ (о) ) R. Доказательство. Положим в теореме 14.4.7 q = ‒ 2, tin = р и перепишем неравенство теоремы 14.4.7 в виде а,,, 2р(1 р), где Т =2иб+о(1) и о' О (р) 1+R По условиям следствия величина О положительна; поэтому Т!(Т ‒ 1) стремится к единице, когда п стремится к бесконеч- ности. Следствие доказано. П 14.5. ГРАНИЦЫ МИНИМАЛЬНОГО РАССТОЯНИЯ ДЛЯ СВЕРТОЧНЫХ КОДОВ Минимальное 1-е расстояние ф для сверточного кода с длиной блока п = (т + 1) пр определяется как минимальное расстояние Хэмминга среди всех пар начальных сегментов кодовых слов длины т + 1 кадров, у которых первые кадры различны. Ми- нимальное расстояние d* сверточного кода равно dye, а свобод- ное расстояние определяется соэтношением d = maxd~. 1 В этом параграфе мы найдем границы типа границ Гилберта и Элайса для dÐ' и d . Очевидно, что любой сверточный ксд моя:но усечь до длины N и получить блоковый код длины N; этот блоковый код не может быть лучше наилучшего блокового кода длины N. Целью настоя- щего параграфа является изучение поведения расстояния в за- висимости от других мер длины кода, таких, как длина блока и 
l4.$. rPAHHgbl ДЛЯ CBEPTOMHblX КОДО~ б17 свободная длина. Конечно, если несколькими способами опреде- лять и кодовое расстояние, и длину кода, то, комбинируя эти опре- деления, можно получить различные границы. Границы, которые будут получены в настоящем параграфе, можно сравнивать с границами для блоковых кодов. Однако делать какие-либо заключения опасно, так как не ясно, какой параметр сверточного кода соответствует длине блокового кода. Пусть объем алфавита q фиксирован; определим d (n, R) = max d' (У), %' где максимум берется по всем сверточным кодам с длиной блока и и скоростью R. à d' (У) означает минимальное расстояние для кода У. Функция d (и, R) определяет наибольшее минимальное расстояние по всем сверточным кодам над GF (q) со скоростью R и длиной блока и. Обозначим, далее, d (R) = lim [Ы (n, К)|п) при условии, что этот предел существует. Если функция d(R) известна, то мы можем сказать, что при достаточно больших и наилучший сверточный код со скоростью Я имеет минимальное расстояние d', приблизительно равное nd(R). Поэтому функция Г(Я), если она известна, дает нам критерий, по которому можно оценивать сверточные коды. Аналогичные определения можно дать и для свободного рас- стояния. В зависимости от того, что рассматривается: отношение свободного расстояния к длине блока или к свободной длине, можно получить различные функции. Определим d (n, R) = тахd (У), ® где максимум берется по всем сверточным кодам с длиной блока и и скоростью R, à d (У) означает свободное расстояние кода У. Функция d„(n, R) определяет наибольшее свободное расстояние по всем сверточным кодам над GF (q) со скоростью R и длиной блока и. Обозначим, далее, d (R) = lim [d (и, Я)п) при условии, что этот предел существует. Как и ранее, если функция d (R) известна, то мы можем сказать, что при доста- точно больших и наилучший сверточный код со скоростью Я и длиной блока и имеет свободное расстояние d, приблизительно равное пй (R). 
51 Q ГЛ. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ Так как обычно d (У) больше d' (У), можно ожидать, что и d (R) больше d(R). В некоторых случаях полезно использо- вать также следующее альтернативное определение. Пусть n„(n, R) означает свободную длину кода, на котором достигается d (n, R) Свободная длина более тесно связана со свободным расстоянием и сложностью декодера, чем длина кода. Обозначим d„(R) = lim [d„(n, R)ln„(n, R) ] П~с© прн условии, что этот предел существует. Тогда если функция d (R) известна, то можно сказать, что при достаточно большой свободной длине й наилучший сверточный код со скоростью R имеет свободное расстояние, приблизительно равное nd„(R). Мы ограничимся построением границы лишь для функции d (R). Границу типа границы Элайса легко получить, воспользо- вавшись ранее выведенной границей для блокового кода. Эта граница будет приведена лишь для двоичных сверточных кодов. Теорема 14.5.1 (граница Элайса). Для двоичного сверп~очного кода со скоростью R функция d (R) удовлетворяет условию d (R) а 2р (1 ‒ р) при любом р, таком, что 1 Hb(р) ) R. Доказательство. Усечением сверточного кода с длиной блока и = mnp, где т произвольно, получим блоковый код длины и. Скорость этого блокового кода также равна Я. так как каждые kp информационных символов кодируются и, символами кодового слова. Минимальное расстояние этого усеченного кода не больше минимального расстояния наилучшего блокового кода. Следова- тельно, любая верхняя граница минимального расстояния блоко- вого кода является также верхней границей минимального рас- стояния сверточного кода '). Такой границей является граница Элайса. 0 Граница Гилберта не может быть получена использованием границы Гилберта для блоковых кодов; ее нужно доказывать не- посредственно. Заметим также, что поскольку сверточные коды линейны, приведенная ниже граница Гилберта сильнее, чем гра- ница Гилберта, ранее доказанная для блоковых кодов, которая лишь утверждала существование некоторого кода, не обязательно линейного. Прежде чем доказывать границу Гилберта, необходимо дока- зать лемму. Лемма касается начального сегмента кодового словэ ') Это утверждение неточно. ‒ Орим. ред. 
f4.5 ° гРАни Цы ДлЯ сВеРтОч н ых КОДОВ 51 9 pî ~1' ~0. ° Я щ 1 0 О...P (ро~ i 3»рт) (~0~ ~i~ ~ ~т) P О Поэтому i p р„; это равенство задает и„‒ А, ограничений на Й, (и, Й,) элементов Р,; отсюда следует, что (Й, ‒ 1) (и, ‒ Й„) элементов могут быть выбраны независимо. Следовательно, при фиксированном первом кадре кодового слова матрица Р, может быть выбрана q (Й, ‒ 1} (и, Й,) способами. Аналогично i,P, = р, 1„Р„и матрица Р, может быть выбрана q (Й,‒ ‒ 1) (и, ‒ Й,) способами. Продолжая процесс, убеждаемся, что каждая матрица Р; может быть выбрана столькими же способами, и поэтому существует [д(" ‒ ') (" ‒ kp) ]'"+' сверточных кодов, у которых начальное кодовое слово фиксировано. П Теорема 14.5.3. Пусть при заданной скорости R =- А„/п„и длине блока п = (т + 1) п„величина р удовлетворяет условию р / ~- qn (1 ‒ R) /=1 Тогда существует хотя ghee один систематически й сверлгочный код над CiF (q), минимальное расстояние d' которого больше р. Доказательство. Минимальное расстояние сверточного кода больше р, если код не содержит начального сегмента кодового слова длины п и веса не больше р, у которого некоторый информа- ционный символ первого кадра отличен от нуля. В множестве сверточного кода, т. е. сегмента кодового слова, состоящего из первых и символов. Лемма 14.5.2. Начальный сегмент кодового слова, начинаю- щийся с ненулевого кадра, входит точно в q(m+)) (n ‒" ) (~g ‒ 1) различных систематических сверточных (и,, Ц-кодов с длиной слова (т + 1) Й,. Доказательство. Так как код систематический, задание пер- вых п символов кодового слова определяет первые (т + 1} Й„ информационных символов. Первые (т + 1} и, символов кодо- вого слова связаны с первыми (т + 1) Й„информационными символами через порождающую матрицу. Эта матрица описы- вается т + 1 матрицами P,, ..., P„, каждая из которых имеет размер Й, х (и, Й„). Проверочные кадры (р„р„..., р), число которых равно т + 1, определяются следующим матричным равенством: 
QQP 1Л. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ всех сверточнцх кодов с длиной блока а можно сосчитать общее число начальных кодовых слов, вес которых не больше р и которые имеют ненулевой символ в нервом кадре. Если их число меньше числа систематических сверточных кодов, то существует хотя бы один код, у которого минимальное расстояние больше р. Так как систематический сверточный (nÄ k,)-код описывается (и, Й,) Й, порождающими многочленами степени не выше т и каждый такой многочлен может быть выбран д+' различными способами, то число таких кодов равно д(+1) (" ‒ ~ )" . Ненулевые и-последовательности веса, не превышающего р, можно выбрать Е, (",) (Ч ‒ 1)' способами. Согласно лемме 14.5.2, каждый начальный сегмент кодового слова, имеющий ненулевой символ в первом кадре, может войти не более чем в д(~+1) (" ‒ A' ) (~ ‒ ') различных система- тических сверточных (n„k,)-кодов. Следовательно, если Р I iъ f (И+1) (~ ° ‒ kp) (kp ‒ 1) (~~+1) (flp ‒ kp) kp ~д ‒ 1~ д ад то должен существовать хотя бы один код с минимальным рас- стоянием, большим р. Теорема доказана. 0 Следствие 14.5.4 (граница Гилберта). Для двоичных сверточ- ных кодов i(()~) ~ ~, '(1 ‒ R) Доказательство. При q = 2 теорема утверждает, что 8(п, R) Д (".) o 2" ' Следовательно, d(n, R) (1/и) log Д (,".) ) 1 ‒ R. j=l Отсюда, используя теорему 14.4.1 и переходя к пределу, полу- чаем утверждение следствия. П ЗАДАЧИ 14.1. Рассмотреть (31, 27)-код Рида ‒ Соломона. а. Сколько кодовых слов имеет вес 5? б. Сколько конфигураций ошибок имеют вес 3? в. Какая часть конфигураций ошибок веса 3 не обнаруживается? 
ЗАМЕЧАНИЯ Щ1 r. Пусть слово выбрано случайно (с одинаковыми вероятностямн для всех его значений). Какова вероятность того, что оНо будет декодировано? 14.2. Используя тождество Мак-Вильямс и табл. 5.3, найти распределе- ние весов кода, дуального расширенному (24, 12)-коду Голея. (В действительности расширенный (24, 12)-код Голея является дуальным самому себе; такие коды называются сашодуальными.) 14.3. Доказать, что в линейном блоковом коде над GF (2) либо не суще- ствует слов с нечетным весом, либо половина слов имеет нечетный вес. 14.4. Простейшим двумерным двоичным кодом с N строками и М столб- цами является код, исправляющий одну ошибку. В каждой строке и в каждом столбце он имеет по одному проверочному символу. Минимальное расстояние кода равно 4. Предположим, что этот код используется для обнаружения ошибок в двоичном симметричном канале с переходной вероятностью д. Какова вероят- ность необнаруженной ошибки? При вычислениях необходимо учитывать лишь член с минимальной степенью д. 14.5. Исправляющий t ошибок (и, й)-код Рида ‒ Соломона имеет мини- мальное расстояние d»=n ‒ Й + 1 = 2t + 1 и число слов веса d» равно А,~,‒ = (g.) (q ‒ 1) а. Сколько существует конфигураций ошибок веса t+ I? б. Непосредственным подсчетом найти число конфигураций ошибок веса t + 1, которые декодер, декодирующий в пределах радиуса упаковки, декодирует неправильно. в. Какая доля конфигураций ошибок веса t+ 1 декодируется непра- вильно? r. Дать численный ответ на вопрос и. в в случаях q = 32, t = 5 нд=64, t=6. 14.8. Оценить сумму компонент распределения весов ~" А . 14.7. Исправляющий t ошибок (и, й)-код Рида ‒ Соломона имеет минималь- ное расстояние d" = n ‒ k+1=21+ ! и число слов веса d~ равно Аи, ‒ (а,) X Х (q ‒ 1). а. Сколько существует конфигураций пакетов ошибок веса t + 1 и длины t + 1? б. Найти число конфигураций пакетов ошибок веса /+ 1 и длины 1+ 1, которые декодер, декодирующий в пределах радиуса упаковки, деко- дирует неправильно. в. Какая доля конфигураций пакетов ошибок веса /+ 1 и длины t + 1 декодируется неправильно? r. Дать численный ответ на вопрос и, в в случаях q = 32, t = 5 и q=64, t=6. 14.8. Пусть код Рида ‒ Соломона над GF (2 ) используется как код, исправ- ляющий многократные пакеты ошибок над GF (2). Рассмотреть декодирование принятых слов, которые находятся вне радиуса упаковки кода. 14.9. Порождающие многочлены двоичного сверточного (8, 4)-кода равны д, (х) = х'+ х+ 1, д, (х) = хз+ х~+ х+ I. Найти его саободное расстояние, свободную длину и число единиц во входной последовательности, соответствующей пути с длиной, равной свободной. ЗАМЕЧАНИЯ Распределение весов кода с максимальным расстоянием было найдено незави- симо Ассмусом, Мэттсоном и Турином [1965], Форни [1966], Касами, Лином и Питерсоном [1966]. Тождество Мак-Вильямс было выведено ею в 1963 г. В этой же статье она дала свою трактовку связи между распределением весов и верояг- 
5ЯЯ ГЛ. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ ностью ошибки декодирования. Иная трактовка принадлежит Форни [1966] и Хунтуну и Михельсону [1977]. Использование диаграммы состояний для нахождения распределения весов сверточного кода предложил Витерби [1971]. Нижняя граница минимального расстояния блоковых кодов опублико- вана Гилбертом [1952]. Элайс никогда не публиковал свою верхнюю границу; впервые она появилась в его лекциях в 1960 r. Известны и лучшие верхние границы, но они доказываются гораздо сложнее. Наилучшая известная верхняя граница найдена Мак-Элисом, Родемичем, Рамсеем и Велчем [1977]. В недавно выполненной в СССР работе ') показано, что в GF (49) граница Гилберта может быть улучшена. ') См. работу: Tsfasman М. А., Vladuts S. G., Zink Th. Modular curves, Shimura curves and Goppa codes, better than Varshamov ‒ Gilbert bound. ‒ Math. Nachr., 1982, Bd 104, S. 13 ‒ 28. Она существенно опирается на работу: Гоппа В. Д. Коды на алгебраических кривых. ‒ ДАН СССР, 1981, т. 259, № 6, с. 1289 ‒ 1290. ‒ Прим. ред. 
ГЛАВА 15 ЭФФЕКТИВНАЯ ПЕРЕДАЧА СИГНАЛОВ ПО 3AUJ7MJIEHHI IM <AHA JIAM Сердцем любой цифровой системы связи обычно является анало- говый канал ‒ канал непрерывный как по амплитуде, так и по времени, На вход канала подается аналоговый сигнал, пред- ставляющий собой непрерывную функцию времени с веществен- ными или комплексными значениями. Цифровая система связи для такого канала включает модулятор/демодулятор (модем), преобразующий аналоговый канал в дискретный, так, чтобы можно было использовать кодер/декодер (кодек). Использование контролирующих ошибки кодов приносит наи- лучшие результаты при разумном согласовании устройства модема с устройством кодека. На этом уровне проектирования совместно используются теория информации, теория связи и теория кон- тролирующих ошибки кодов. Чтобы представить контролирующие ошибки коды в более широком контексте, мы вкратце коснемся в этой главе некоторых разделов теории информации и теории связи. В таком контексте станет более ясной роль контроли- рующих ошибки кодов как одного из средств проектирования эффективных систем передачи сигналов по непрерывным зашум- ленным каналам. В настоящей главе описаны алгоритмы декодирования, исполь- зующие дополнительную информацию, получаемую от демоду- лятора. При одном и том же коде эти декодеры с мягким решением, вообще говоря, имеют лучшие характеристики, чем декодеры с жестким решением, но в силу их большей сложности они полезны лишь для коротких кодов. Исключением является класс после- довательных декодеров; эти декодеры могут без труда исполь- зовать информацию мягкого решения даже для кодов с большой длиной кодового ограничения, однако при этом возникает проблема переполнения буфера. 
фЯ4 УЛ. 16. ПЕРЕДАЧА IIO SAIIIVMJlEHHLIAl КАНАЛАМ l5.l. ОГРАНИЧЕННЫЙ ПО ПОЛОСЕ ГАУССОВСКИЙ КАНАЛ Пусть на вход общего сигнального канала в течение йекоторого длительного интервала Т можно подавать любую непрерывную функцию s (t), где t пробегает значения от О до Т, и выполняется условие конечности интеграла E„= s~ (t) dt. О Этот интеграл от s' (t) называется энергией сообщения Е„, для сигнала s (t). Если Т стремится к бесконечности, то средняя мощ- ность S определяется как предел S = lim (E (T)tT) при условии, что он существует; здесь Е (T) ‒ энергия сооб- щения на интервале длины 7. Если сигнал выбирается случайно из ансамбля сигналов, то используются другие определения мощности, такие, как предел математического ожидания отноше- ния Е (T)IT по ансамблю сигналов. Каналы обычно накладывают ограничения на вид допустимых сигналов. Канал, ограниченный по полосе, ‒ это канал, который пропускает лишь те сигналы с модулированной несущей, которые известны под названием ограниченных по иолосе сигналов. Сигнал с модулированной несущей определяется выражением s, (t) = а (t) cos (2zf,t + 6 (t)) = = s„(t) cos 2zf,t + этз(п 2л/,t, где а (t) и 8 (t) вещественные функции, задающие так назы- ваемые амплитудную модуляцию и фазовую модуляцию соответ- ственно, а s> (t) и эт (t) называются вещественной и мнимой компонентами модуляции соответственно, Последние два термина объясняются зачастую более удобным альтернативным комплекс- ным описанием модуляции s,(t) = Re (s(t) et "~'), где s (t) = s> (t) + /эт (t). Комплексный сигнал s (t), ограничен- ный по полосе, представляет собой лишь математическую фикцию; наблюдаемый сигнал s, (t) определен ранее. Величина /„называе- мая несущей частотой, постоянна и не играет существенной роли в изучаемых нами задачах, хотя и имеет главенствующее значение в передаваемом сигнале. 
16.1. ОГРАКИЧЕННQЙ ho ООЛОСИ КАМАЛ файф Спектр сигнала s (t) определяется преобразованием Фурье ОО S(f) = I я(t) е ‒ '/"1'сц. Ограниченный по полосе сигнал ‒ это сигнал, спектр которого сосредоточен в малом интервале частотной оси около несущей частоты fp Длина этого интервала называется шириной полосы и обозначается W, причем W меньше 2fо. В идеале S (f) = О при f, ~ ) W/2, но на практике приемлемо более слабое условие, такое, как [S(f) ](з при Jf f,J) W/2. После кодирования кодовое слово или последовательность кодовых слов должны быть отображены в модулированные сигналы (а (t), 6 (t)) или (s„(t), s, (t)). Эта операция отображения назы- вается модуляцией, а обратная ей операция называется демоду- ляцией. Изучение этих операций составляет главный предмет теории цифровой связи. Исторически исследование контролиру- ющих ошибки кодов велось независимо от исследования цифровой модуляции. В этой главе, однако, мы будем придерживаться такого подхода к системам модуляции и демодуляции, при кото- ром вопросы, относящиеся к контролирующим ошибки кодам и к цифровой модуляции, излагаются совместно. Выходной сигнал v (t) ограниченного по полосе гауссовского канала с входным сигналом s (t) определяется сверткой u (t) = Ь (t) ~ (s (t) + п (t)), где Ь (t) ограниченная по полосе функция, называемая им- пульсным откликом канала, а шумовой сигнал п (t) выборочная функция гауссовского случайного процесса. Гауссовский шум является стандартом, который обычно ис- пользуется для суждения о качестве схемы модуляции даже в том случае, когда допускается использование модема при другом шумовом процессе. Более того, в качестве стандартного гаус- совского шумового процесса выбирается белый шум. Односторон- няя спектральная плотность сигнала в виде белого шума равна Вт/Г ',. Теория цифровой связи утверждает, что если 2WAT < 1, то можно рассматривать входной и выходной сигналы изучаемого нами канала лишь в дискретные равноотстоящие моменты вре- мени kAT. Поэтому дискретный во времени входной сигнал будем представлять как совокупность отсчетов s (Й ЬТ) = s„(k AT) + + /я (/p AT), или, короче, з~ ‒ ‒ яяд + /я,~ при1 Й = О, ~1, +-2, ..., где s» и яд, вещественны. Хорошо известная теорема отсчетов позволяет восстановить s (t) по отсчетам. Обычно удобно выбирать Ь (t) (быть может, путем добавления к модулятору и демодулятору специальных выравнивающих 
файф ГЛ. !6. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ 2,-очныо .3-очна.я ~РТ 4-очная ~РТ 4-очнь! о 8-очная 18-очная 8-очныа 36-очного 64-очнаа З2.-очная Рис. 15.1. Некоторые наборы сигналов. а ‒ вси~ествецные модуляционные алфавиты; б ‒ комплскспы; мо.~уляццонные ал(1;аьиты (фризовая теле- графия). фильтров) так, чтобы h (k AT) равнялось нулю при k, отличных от нуля, и равнялось единице при k, равном нулю. Тогда принятыЙ сигнал v (t) представляется дискретными отсчетами v> ‒ зд-, 'пд = (s»-.,-n„„) -/(~,ц;пп,), lг ‒..= О, t-1, +2,..., где 1пд~ отсчет вносимого аналоговым каналом шума в моменты й hT. В случае когда й-й выходной отсчет зависит лишь от й-го входного отсчета, говорят, что межсимвольная интерференция отсутствует. Если n (t) гауссовский процесс, то n< ‒ комплекс- ные гауссовские величины с нулевым средним. Более того, можно так организовать передачу по каналу, чтобы гауссовские случай- ные величины пд можно было рассматривать как независимые. Этот случай изучается в первую очередь. Очень часто при построении цифровой системы связи для представления m-битовых байтов выбирают совокупность вещественных или комплексных чисел, называемую наборо.» сигналов (или модуляционньт алфавшпом). На рис. 15.1 ириведеи1 ~ некоторые типичные наборы сигналов. Представлены четыре м<) дуляционных алфавита с вещественными значениями, объел»- 
15.2. ЭНЕРГИЯ И ЧАСТОТА ОШИБОК НА БИТ ~Я7 няемые названием М-ичная амплитудная модуляция, и шесть мо- дуляционных алфавитов с комплексными значениями, для обозна- чения которых используется несколько названий, а именно фа- зовая телеграфия (сокращенно ФТ), квадратурная амплитудная модуляция, амплитудно-фазовая модуляция (сокращенно АФМ). Не обсуждая выбор наборов сигналов, рассмотрим лишь их ис- пользование применительно к кодированию. Как правило, кодовое слово длины и над GF (q) отображается в последовательность элементов модуляционного алфавита длины п. (Возможны и другие варианты: например, модуляцион- ный алфавит объема 2 " может использоваться с кодом над GF (2"') путем отображения символов кодового слова в пары букв алфавита.) Демодулятор, принимающий жесткое решение, вновь отображает множество вещественных или комплексных чисел, представляющее собой последовательность од, в множество символов модуляционного алфавита, а затем и в символы кодо- вого слова. 15.2. ЭНЕРГИЯ НА БИТ И ЧАСТОТА ОШИБОК НА БИТ Цифровая система связи включает кодер и модулятор на переда- ющем конце и демодулятор и декодер на приемном конце. Ка- чество такой системы частично характеризуется вероятностью ошибки на бит, которая также называется частотой ошибок на бит (ЧОБ). В фиксированной цифровой системе связи, переда- ющей дискретные данные по каналу с аддитивным гауссовским шумом, частота ошибок на бит всегда может быть уменьшена путем увеличения мощности передатчика, которая также является одной из характеристик качества цифровой системы связи. Луч- шей из двух цифровых систем связи считается та система, которая достигает желаемой частоты ошибок на бит при меньшей переда- ваемой мощности передатчика. = Для сообщений конечной длины, состоящих из К информацион- ных битов и имеющих энергию сообщения Е, энергия Еь, при- ходящаяся на бит, определяется отношением Еь = Е (К. Вообще говоря, энергия на бит E> ‒ это не та энергия, которая может быть найдена по отдельной части сообщения, и не та энер- гия, которая может быть измерена. Она вычисляется по энергии всего сообщения. Определение Еь включает также число битов на входе блока кодер/модулятор. Если же рассматривать вход канала, то можно обнаружить сигналы, построенные так, что число символов в них, воспринимаемых как символы канала, будет больше. Эти дополнительные символы могут быть провероч- 
5я8 Гл. 15. пеРедАчА пО 3Ашумленным кАнАлАм ными символами, служащими для исправления ошибок, символами кадровой синхронизации или символами канального протокола. Эти символы не несут передаваемой информации. Для вычисле- ния Еь используются лишь информационные биты. Для сообщений бесконечной длины, передаваемых с постоян- ной скоростью R информационных бит/с, величина Еь опреде- ляется отношением Еь = SIR где S средняя мощность сообщения. Кроме сообщения в приемник поступает и белый шум с одно- сторонней спектральной плотностью У, Вт/Гц Яж). Ясно, что условия приема сигнала не изменятся, если удвоить и сигнал, и шум: на частоту ошибок на бит влияют только отношения EIN, »«>/Ó0. Для сравнения двух различных схем передачи сигна- лов исследуются графики зависимостей их ЧОБ от требуемых отношений Еь)И,. Как это ни удивительно, можно точно сформулировать утвер- ждение относительно значений Еь(И„при которых существуют хорошие сигналы. Исходным понятием для вывода границ ~st'No является шенноновская пропускная способность канала. Нам необходима лишь формула пропускной способности канала с ад- дитивным гауссовским шумом. Она утверждает, что, каков бы ни был сигнал s (t) мощности S = ЕьЯ со спектром S (f), обра- щающимся в нуль при [ f ! ) W/2, передача по каналу с аддитив- ным белым гауссовским шумом с произвольно малой частотой ошибок на бит возможна лишь в том случае, когда в секунду передается не более С = W logm [1 + Я/(УО11')) битов. Обратно, всегда существует сигнал в P), который lI03Bo ляет сколь угодно близко приблизиться к этой скорости передачи и к этому ограничению по полосе, как мала ни была бы требуема~ частота ошибок на бит. Эта знаменитая формула, которая вы- водится в любом учебнике по теории информации, дает критерии для оценки цифровой системы связи. Теорема 15.2.1. В любой цифровой системе связи, передаюшрй информацию на фоне белого гауссовского шума спектральной плот- ности Уо, необходимо, чтобы энергия на бит удовлетворяла не- равенству Еь ~ ~о 1о@ 2 = 0,69~о где Еь цзмеряется в джоулях, а N< в ващтах на герц. 
1б.2. ЭНЕРГИЯ И ЧАСТОТА ОШИБОК НА БИТ Щ9 Доказательство. Ширина полосы W в теореме не ограничена. Заменим в формуле Шеннона для пропускной способности S на REb и устремим lV к бесконечности. Тогда R ( (REplNp) 1од, е, откуда непосредственно следует утверждение теоремы. П Если отношение Eb/N, измеряется в децибелах, то наше неравенство переписывается в виде Еь/~/о ~ 1,б дБ так что значение Eb/N, = 1,б дБ устанавливает нижний пре- дел для допустимого отношения Eb/N',. Экспериментально уста- новлено, что при отношении Ец/И„приблизительно равном или большем 12 дБ, выбор сигнала, обеспечивающего малую частоту ошибки на бит, не представляет труда. Следовательно, проблема выбора сигнала возникает лишь в том случае, когда отношение EbIN, лежит между этими двумя числами и ширина области составляет примерно 14 дБ. Для этой области и производится сравнение структур сигналов, выбираемых для канала с гауссов- ским шумом. В случае когда предоставляется лишь ограниченная ширина полосы, требования на энергию становятся жестче. Определим спектральную скорость г в битах (измеряемую в битах в секунду на герц) как r = R/9'. Спектральная скорость r в битах и Е~ 'Np представляют со- бой две важнейшие характеристики цифровой системы связи. Теорема 15.2.2. Пусть r спектральная скорость в битах для некоторой цифровой системы связи. Тогда Ер 2 ‒ ! g ~~ е hолее того, можно так сконструировать систему передачи, чтобы она о5еспечивала надежную передачу при любом положитель- ном е и Ец 2 ‒ ! л ~ +~ э f Доказательство. Из формулы Шеннона для пролускной спо- собности вытекает, что при любом положительном е' может быть 
б3О гл. 15. ПеРедАчА по зАшумленным кАнАлАм Е о -~ CL~ о‒ ~ о О ~ Е а>3 д ~р т. О у. ~~д 2 Е е~~ д ОЭ Д~ 1 2. 3 4 5 ЭнеРгиЯ Е~/ф,, Дщ/<~щ/Рч~ Рис. 15.2. достигнута скорость передачи информации R, удовлетворяющая неравенству Отсюда непосредственно следует утверждение теоремы. Последняя теорема утверждает, что возрастание скорости передачи в битах на единицу полосы увеличивает требуемую энергию на один бит, Она является основой соотношений между энергией и шириной полосы в цифровой теории связи, где воз- растание ширины полосы при фиксированной скорости передачи информации может ослабить энергетические требования. Утверждение теоремы 15.2.2 иллюстрируется рис. 15.2. Любая система связи может быть описана точкой, лежащей ниже при- веденной кривой, и для любой точки ниже этой кривой можно сконструировать систему связи, у которой частота ошибки на бит может быть сделана настолько малой, насколько это желательно. История цифровой связи в какой-то степени представляет собой серию попыток приблизить системы к этой предельной кривой, сохраняя очень низкую частоту ошибок на бит. Такие системы используют как модемную технику, так и методы исправления ошибок. В некоторых цифровых системах связи водораздел между модемом и кодеком четко не обозначен. Демодулятор передает дополнительную информацию, которая помогает декодеру улуч- шить его характеристики. Это можно сделать многими способами. Например, в двоичном канале можно использовать приемник, у которого каждому принятому биту соответствует выходной 
16,$. МЯ РКОЕ ДЙКОДИ РОВАН ИЕ БЛОКОВ Ь! Х КОДОВ ~Я1 сигнал из трех бит. Он называется обнаружителем с л~ягкил~ ре- ~аениеа. Комбинация, состоящая из трех нулей, соответствует тому, что «уверенно» был принят нуль, а комбинация, состоящая' из трех единиц, соответствует «уверенному» приему единицы. Другие комбинации трех двоичных символов соответствуют раз- личным степеням неопределенности в приемнике. Для улучшения декодирования декодер может использовать эти мягкие решения. Мы уже знакомы с простейшим вариантом мягких решений‒ двоичным стирающим каналом. Три значения выходного сигнала приемника могут быть обозначены через 10 (жесткий нуль), 01 (жесткая единица) и 00 (стирание). Другим примером мягкого решения является списочное де- кодирование в д-ичном канале. Вместо одного наиболее вероят- ного значения каждого символа демодулятор выдает два или три наиболее вероятных значения, иногда приписывая каждому из них некоторую вероятностную меру. Конечно, если код фиксирован, то декодеры, использующие информацию мягкого решения, имеют, вообще говоря, лучшие характеристики,' поэтому можно выбирать декодер, исходя из этих соображений. Однако такой подход не является бесспорным. Прежде всего системы с мягким решением достигают своих по- тенциальных возможностей только в том случае, когда статистика шума в канале достаточно стационарна и достаточно хорошо под- дается моделированию. Если же шум прерывистый и переменный во времени или недостаточно хорошо известен, то следует пред- почесть жесткое решение или жесткое решение со стиранием. Кроме того, декодер с мягким решением дороже. Если стоимость системы фиксирована, то длина кода, используемого с декодером с мягким решением, меньше, чем кода, используемого с декодером с жестким решением. Следовательно, декодер с мягким решением не обязательно является лучшим. Декодер с жестким решением может иметь лучшие характеристики, чем декодер с мягким решением, использующий код, у которого длила меньше, Иногда система с мягким решением лучше удовлетворяет практическим требованиям. В других случаях лучше использовать систему с жестким решением, так как она позволяет использовать более мощный код. Выбор той или иной возможности является трудной инженерной задачей, которую нельзя правильно решить, исходя лишь из теоретических соображений. 15.3. МЯГКОЕ ДЕКОДИРОВАНИЕ БЛОКОВЫХ КОДОВ Вероятность ошибки декодирования минимизируется одновре- менным выбором демодуляции и декодирования. Модулятор ото- бражает q~ кодовых слов в q" сигналов s, (t), где r == 1, ..., q". 
ф;3Я 3'Л. 16. ПЕРЕДАЧА ll0 ЗАШУМЛЕННЫМ КАНАЛАМ Выходной сигнал канала v (t) s, (t) + n (t), где s, (t) ‒ пере- даваемый сигнал, а п (t) ‒ реализация шума, представляется своими отсчетами и~ v (l AT) при 1 = 1, ..., N. По этим отсче- там демодулятор и декодер должны восстановить кодовое слово, а затем и информационные символы. Плотность распределения вероятностей вектора ч и р и условии, что передан сигнал s„(t), дается выражением N Q (v ~ r) = П [1/(y' 2па)] е причем предполагается, что отсчеты шума представляют собой независимые одинаково распределенные гауссовские случайные величины с дисперсией о'. По принятому сигналу v приемник максимального правдоподобия определяет значение r, при котором Q (v ~ r) максимально, и объявляет, что было передано r-e сооб- щение. Однако поскольку шум предполагается гауссовским, прием- ник максимального правдоподобия идентичен приемнику мини- мального евклидова расстояния. Этот приемник находит значе- ние r, при котором евклидово расстояние N dE(v, s„) = ~, (v, ‒ s„,)', r = 1,..., q", l=l минимально, и объявляет, что было передано r-е сообщение, Яалее, если энергия s, (t) одинакова для всех r, то приемник минимального евклидова расстояния может быть заменен корре- ляционным приемником. Он вычисляет совокупность q" коэф- фициентов корреляции и затем принимает решение в пользу того кодового слова c„, у которого р, .> р, при всех r' =ф= r. После этого по с, восстанав- ливаются информационные символы. Поскольку q~ очень великс, обычно даже этот приемник довольно непрактичен и поэтому переходят к более компактным схемам, схемам меньшей слож- ности. На рис. 15.3 предлагается несколько вариантов приемника. Если модулятор и кодер фиксированы, то выбор самого верхнего варианта приводит к наименьшей частоте ошибок на символ, а самого нижнего к наибольшей. Может создаться впечатление, что по мере возможности всегда желательно реализовать приемник максимального правдоподобия. Но это, вообще говоря, не так Часто целесообразнее затратить имеющиеся ресурсы на болес 
3в.s. мяГкой дакодиРОВАние влоковмх кодов ф38 Ловок g-0÷íûõ символов, рвзбивый но, кодовь!в слова Головок Вероявносвь овибкм на цЛок <q~ Рис. 15.3. Возможные варианты приемника. мощный код и более мощный модулируемый сигнал, а для деко- дирования использовать подоптимальную процедуру. 3 общем случае возможность использования в декодере мяг- кого решения приводит к необходимости выбора между передачей большего количества информации от демодулятора к декодеру при одновременном использовании более простого кода и переда- чей меньшего количества информации от демодулятора к декодеру при одновременном использовании более сильного кода. Первый экстремальный случай демодулятор принимает жесткое реше- ние; при этом последовательность вещественных чисел превра- щается демодулятором в последовательность о-ичных символов, к которой можно успешно применить мощную технику алгебраиче- ского декодирования. Не представляет трудностей использование той же техники в случае, когда демодулятор может производить стирания. Второй экстремальный случай демодулятор вообще не принимает решения; при этом вся информация в принятом сиг- нале сохраняется и передается декодеру. В хорошо сконструированной системе связи сложность демо- дулятора и сложность декодера сбалансированы. С другой сто- роны, демодулятор принимает окончательное решение по возмож- 
534 ~Л. М. ПВРадАЧА ПО ЗАШУиЛЕЙНЫМ КАНАЛАМ ности на уровне символов; с другой стороны, он передает деко- деру достаточно информации, чтобы качественные характеристики системы оставались достаточно высокими. Сохраняется также возможность использования каскадных кодов. Тогда соотношения между сложностью и качеством можно рассматривать на трех уровнях обработки в демодуляторе и на двух уровнях декодера. Используя мягкое решение в сочетании с малой длиной кода во внутреннем декодере и жесткое решение с исправлением ошибок и стираний во внешнем декодере, корректирующем оставшиеся ошибки и отказы внутреннего декодера, можно получить отличное соотношение между сложностью и качеством декодирования. Изучим частный случай декодера мягкого решения, исполь- зующий алгоритм обобщенного минимального расстояния (OMP- алгоритм). Этот алгоритм мы опишем дважды: сначала для двоич- ных кодов, используя некоторые геометрические построения, а затем для кодов над произвольным полем Галуа. В первом случае в демодулятор поступает последовательность двоичных чисел на фоне шумов. Принимаемый демодулятором ~-й двоичный бит опи- сывается вещественным числом v; Q [ 1, 1 ], представляющим оценку принятого символа в сочетании с доверительным уровнем. Если о; равно 1, то ~-й принятый бит равен О с максимальным доверительным уровнем; если о; = +1, то i-й принятый бит равен единице с максимальным доверительным уровнем. Если 6; пред- ставлено в виде числа, характеризуемого знаком и величиной, то можно считать, что его знак представляет оценку ~-го бита на вь|ходе демодулятора, а абсолютная величина о; доверительный уровень оценки. Мы уже рассмотрели два частных случая. Если величины и; на выходе демодулятора принимают значения ~1, то демодулятор является демодулятором жесткого решения, а декодер исправляет лишь ошибки. Если на выходе демодулятора величины о; прини- мают лишь значения ~1 или О, то демодулятор является демоду- лятором жесткого решения со стиранием, а декодер исправляет ошибки и стирания. В данном параграфе мы рассмотрим OMP- алгоритм, который оперирует с величинами о;, принимающими любое значение между 1 и + l. Этот алгоритм декодирования может использоваться с любым демодулятором, выходные сим- волы которого о; лежат в интервале [ 1, 1 ]. После обработки принятого сигнала демодулятором на его выход поступает принятый вектор v = (vî~ оп 1). Если в канале не произошло ошибок и демодулятор приписа> максимальный доверительный уровень каждому биту, то сим- волы принятого вектора равны 1 в тех позициях, в которых сим- 
15.3. МЯГКОЕ ДЕКОДИРОBAИИЕ БДОКОВЫХ КОДОВ 536 волы переданного кодового слова с„равны нулю, и равны +1 в тех позициях, в которых символы с„равны единице. Пусть с„‒ вектор в и-мерном евклидовом пространстве, такой, что его компоненты определяются выражением 1, если с„.=О, +1, если с„; = 1. Это выражение описывает отображение кодовых слов из GF" (д) в Р". Сохраним за с„название кодового слова. Евклидово рас- стояние между принятым словом v и кодовым словом с, равно n ‒ 1 пе(у, с~)= iу ‒ с~i'= Z (О; ‒ с~() . i=0 Если v состоит лишь из символов жесткого решения V; = ~1, то евклидово расстояние связано с хэмминговым расстоянием соотношением dв (v, c,) = 4иц (у, c,), где компоненты о; вектора V равны О, если v; = ‒ 1, и равны 1, если о; = 1. В частности, для любых двух кодовых слов dq (c„cг ) = 4дц (с„с, ); Минимальное евклидово расстояние кода Я и минимальное хэм- мйнгово расстояние dÐ связаны соотношением dE = 4дй. Опишем ОМР-декодер с помощью скалярного произведения v с„, предварительно выразив евклидово расстояние кода через скалярное произведение. Мы можем переписать его в виде Ле(v, c,)=)v(- ‒ 2~ c, ~-)c,!'. Дляфиксированного v минимизация dE(v, c„) по r эквивалентна максимизации скалярного произведения v. с„по f, поскольку ~ v ~' не зависит от r и [ с, ~' равно и для любого кодового слова. Минимизация евклидова расстояния интуитивно понятнее, но при вычислениях лучше максимизировать скалярное произведение. Декодеру, исправляющему только ошибки, предшествует де- модулятор, который принимает лишь жесткие решения, При этом u = ~1 и Йв (v, c„) = 4йц (v, c,). Следовательно, нахождение с„на минимальном евклидовом расстоянии от v эквивалентно на- хождению с, на минимальном хэмминговом расстоянии от v. Неравенству d~ (v, с,) ( (Р ‒ 1)/2 
636 ГЛ. 16. ПЕРЕДАЧА ПО ЗАШУМЛЕННЬЗМ КАНАЛАМ удовлетворяет не более одного кодового слова с,. Следовательно, не более чем одно кодовое слово c„удовлетворяет неравенству Щ (ч, с,) w 2 (d' ‒ 1). Наконец, так как ~ v ~' равно и в случае демодулятора с жестким решением, то d< (v, c,) = 2 (n ‒ v c,) и не более чем одно кодовое слово удовлетворяет неравенству v с,оп ‒ (d* ‒ 1), где d* минимальное хэммингово расстояние кода. Декодирова- ние с исправлением только ошибок эквивалентно нахождению того единственного кодового слова с„, для которого v-cÄ > n ‒ д*, если такое кодовое слово существует. Возможно, что решения не существует и декодер не в состоянии найти кодовое слово. Такой декодер неполон, но он будет указывать, что соответствующие конфигурации ошибок являются неисправляемыми. Если действия демодулятора сводятся к жесткому решению или стиранию, то о~ ‒‒ +1 или О. По тем же причинам, что и выше, декодирование с исправлением ошибок и стираний эквивалентно нахождению того единственного кодового слова с„для которого vс,,.> и если такое кодовое слово существует. Как и ранее, соответству- ющий декодер полон. Следующая теорема утверждает, что те же условия существо- вания справедливы и при мягком решении. Теорема 15.3.1. Каков бы ни был вектор v с компонентами, лежащими в интервале [ 1, 1], в двоичном коде с длиной и и ми- нимальным хэмминговым расстоянием d* существует не более одного кодового слова с„, для которого v-с„> и ‒ а'. Доказательство. Пусть c„‒ некоторое кодовое слово, удовле- творяющее приведенному выше неравенству, и пусть с, любое другое кодовое слово. Тогда с, отличается от с, по меньшей мере в dÐ позициях. Пусть $ = ~в ~ с„фс,.;}; 
18.3. МЯГКОЕ ДЕКОДИРОВАНИЕ БЛОКОВЫХ КОДОВ 637 тогда v ° с„ = f v~c„q+ Q u;c„=А,+А„ 8+S СQS С-1 о;(:,; + g о;сг r ‒ ‒ А! ‒ Ар. кфир its v c Но величина А, удовлетворяет неравенству А,= g б,с„,~и ‒ d*, igS так как она равна сумме не более и d слагаемых, ни одно из которых не превышает единицу. Поэтому в силу неравенства v с,.О и d* А,:> О, и, следовательно, А1 А, ~ и d*, что завершает доказательство теоремы. G В качестве примера рассмотрим двоичный (3,2)-код У = 1000, 011, 110, 101}, у которого d* равно 2. Этот пример достаточно прост для графической иллюстрации теоремы 15.3.1. На рис. 15.4 изображен куб в трехмерном евклидовом пространстве, содер- жащий возможные принятые векторы v. В том же пространстве показаны четыре кодовых слова. Штриховкой в одном из углов выделена совокупность v, удовлетворяющая условию voñ„o + + б,с„, + б,с„, ) 1, которая декодируется в кодовое слово, лежащее в этом углу. Теорема утверждает, что если построить аналогичные области для каждого из четырех кодовых слов, то эти области не будут пересекаться. Используя эти четыре области декодирования, можно построить OMP-декодер. Заме- тим, что указанные четыре области не заполняют куб полностью. %Ф Остающаяся в центре область является тетраэдром, и если v Кодовые слова е слово Кодово Область декодцрования Psc. 15.4. Область декодирования по OMP-алгоритму для двоичного (3, 2)-кода. 
538 ГЛ ° >5. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ попадает в этот тетраэдр, то декодирование объявляется неудач- ным. Декодер является неполным, и его области декодирования лежат в евклидовом пространстве. ОМР-декодер находит единственное кодовое слово, удовлетво- ряющее теореме 15.3.1, если оно существует; в противном случае декодирование объявляется неудачным. Конечно, находить это кодовое слово, вычисляя все 2~ скалярных произведений, не- практично. Опишем практический способ нахождения этого ко- дового слова. Идея состоит в следующем. Мы уже знаем, как построить декодеры, исправляющие ошибки и стирания, полученные в результате жестких решений. Любой декодер, исправляющий ошибки и стирания, можно дополнить внешней петлей обработки данных. Основываясь на информации мягкого решения, этот модернизированный декодер вычисляет последовательность пробных векторов жесткого решения со сти- ранием. Для каждого 1 от 0 до d* 1 он стирает 1 компонент, для которых ~ 6~ ~ минимальны. (Если для некоторых t в силу равенства нескольких компонент выбор этих 1 компонент неодно- значен, то соответствующее l опускается.) Совокупность нестер- тых компонент отображается в нули или единицы в зависимости QT знака б;. При этом над GF (2) формируется вектор v<'> co стира- ниями ° Декодируем v~'>, используя декодер, исправляющий ошибки и стирания. Если декодирование дало кодовое слово с„, то про- верим выполнение неравенства v с„> и d . Если это нера- венство выполняется, то с„объявляется ОМР-декодированным кодовым словом. В противном случае 1 увеличивается и про- цедура повторяется до тех пор, пока 1 не превзойдет dÐ ‒ 1; в последнем случае декодирование объявляется неудачным. На рис. 15.5 представлен ОМР-алгоритм в недвоичном случае. Теоремы 15.3.2 и 15.3.4 утверждают, что ОМР-алгоритм, пред- ставленный на рис. 15.5, в самом деле декодирует в единственное ОМР-кодовое слово. Заметим, что алгоритм, изображенный на рисунке, проверяет неравенство лишь при четных 1. Этого до- статочно, так как при изменении числа стираний на два число ошибок, которые можно исправить, изменяется на единицу. Теорема 15.3.2. если v с„~ и dÐ', то хотя ба одно слово v('), 1 = О, ..., d' ‒ 1, удовлееаоряет неравенству v<'~ -с, -.> и ‒ d'. Доказательство следует из доказательства теоремы 15.3.4, являющейся более общей формой нашей теоремы. П Теперь обобщим ОМР-декодеры на недвоичные коды. Слож- ность ОМР-декодера приблизительно в (d* 1)/2 раз выше, чем декодера для кода, исправляющего ошибки и стирания. Поня- 
15.3. мЯГкОе ДекОДиРОВАние БЛОкОВых КОДОВ 539 Cm С,„пра. КОООВ Cmon— неубачное декодирование Рис. 15.5. ОМР-алгоритм. тие обобщенного расстояния естественным образом распростра- няется на недвоичные сигналы точно так же, как распространяется хэммингово расстояние., Как при определении хэммингова рас- стояния, так и при определении обобщенного расстояния не- двоичная природа символов игнорируется и задача сводится 
54О ГЛ. 15. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ к двоичной, при которой лишь учитывается, совпадают или нет два символа, а их величины не принимаются во внимание. ОМР- декодер в недвоичном случае почти не меняется. На выход демодулятора поступают д-ичные символы, каждый из которых характеризуется своей оценкой v;, элементом GF (q) и доверительным уровнем а;, О < а; < 1, измеряющим надежность оценки. Если а; равно единице, то принятый символ равен v; с максимальным доверительным уровнем', если а; равно О, приня- тый символ равен v; с минимальным доверительным уровнем. Как и в двоичном случае, для алгоритма декодирования не важно, какое правило демодулятор использует для нахождения а;. Он даже может всегда полагать а; равным единице в этом случае он является демодулятором с жестким решением; он может полагать а; равным О или 1 ‒ в этом случае он является демодулятором с жестким решением и со стиранием. Возможно также использование для нахождения а; более сложной довери- тельной меры. В двоичном случае мы смогли дать геометрическую интер- претацию декодирования, используя знак а~ для обозначения оценки переданного двоичного символа. В GF (q)-ичном случае такой геометрической интерпретации не существует. Для опреде- ления скалярного произведения введем обозначение для любого v'. +1, v=v', 6(v, v') = 1, V+V. Затем определ им произведение n ‒ 1 ч с, = g a<6(v<, с„~), к=о использование которого позволяет доказать GF (q)-ичный вариант теоремы 15.3.1. Это определение v.ñ„удобно, но неточно, по- скольку v-с„зависит и от а. Теорема 15.3.3. В коде над GF (q) с длиной п и минимальным расстоянием dÐ' существует хотя бы одно кодовое слово с„, для которого v-с„~ n ‒ dÐ. Доказательство аналогично доказательству теоремы 15.3.1. Q Алгоритм декодирования в недвоичном случае таков же, как и в двоичном. Для любого 1 из интервала [О, d* 1] сотрем компоненты, для которых а; минимальны. При этом получим над GF (q) слово v«> со стираниями. Начиная с 1, равного О, декоди- руем v<'), используя декодер, исправляющий ошибки и стирания. Для декодирования ч<'1 в с, проверяется неравенство ч с„) ;О и ‒ d*. Если оно удовлетворяется, то с, объявляется ОМР- 
15.4. МЯГКОЕ ДЕКОДХРОВАНИЕ СВЕРТОЧНЫХ КОДОВ Q4$ Доказательство. Достаточно доказать теорему для 1, пробе- гающих значения от О до п, поскольку ясно, что утверждение теоремы не может выполняться при l ~ d*. Упор ядочим а; по их величине. Пусть СХс 4 '2i ~< .. ° ~< CXc 1 2 7L ~0=~ 1 1 <1уп ‒ 1, Х~ = ‒ а; ‒ а~, !+3 !' Х„= 1 ©ю ° Л Тогда О ~ Х~ ~ 1 и ~ ~ ~Х~ ‒ ‒ 1, так что вектор Х ведет себя как вероятностное распределение. Более того, ~ л~=ац, ~~1 S=0 и поэтому ч = g L,v«>. с=о Допустим, что v~"~ с,~ и d' при всех l. Тогда Л Л v c, = ~. 'Ъ,ч«> с, < (и ‒ d') P, = и ‒ d', 1=0 1=0 что противоречит предположению теоремы. Поэтому теорема доказана. H 15.4. МЯГКОЕ ДЕКОДИРОВАНИЕ СВЕРТОЧНЫХ КОДОВ Использование информации мягкого решения может облегчить декодирование и сверточных кодов. В нашем распоряжении имеются вариант мягкого решения алгоритма Витерби и варианты декодированным кодовым словом. Если оно не удовлетворяется, т. е. если 1-е декодирование оказывается неудачным, то увеличим 1; будем повторять процедуру до тех пор, пока 1 не превысит d~ ‒ 1 ‒ в этом последнем случае декодирование объявляется неудачным. Следующая теорема обосновывает эту процедуру. Теорема 15.3.4. Если для кодового слова с, выполняется не- равенство v.ñ„> п d*, mo хотя бы одно слово ч®, 1 = 0,... dÐ 1, удовлетворяет неравенству ч® с„~ п ‒ d'. 
б4~ ГЛ. 15. IlEPEQA 4A llO 3AIHYMJl EH Hbl< KAHAJIAHl мягкого решения алгоритмов последовательного декодирования. Отложим изучение последовательного декодирования до следу- ющего параграфа, а в настоящем параграфе займемся алгоритмом Витерби с демодулятором с мягким решением. Затем изучим свер- точные коды Унгерб5ка, имеющие большое евклидово свободное расстояние; поэтому они полезны для каналов, ограниченных по полосе. Коды Унгерб'ка больше подходят для каналов, огра- ниченных по полосе, чем коды, построенные из соображений воз- можно большего хэммингова свободного расстояния. Алгоритм Витерби отыскивает на решетке путь, ближайший к принятому слову. Расстояние принятого слова от пути на ре- шетке определяется как сумма расстояний вдоль последователь- ных ребер. Мера расстояний выбирается произвольно, за исключе- нием того, что она должна удовлетворять требованию аддитив- ности. Поэтому, хотя алгоритм Витерби, введенный в $ 12.8, ис- пользует хэммингово расстояние, тот же алгоритм применим и при любом другом определении расстояния. Не является даже необходимым, чтобы расстояние было метрикой. Алгоритм Витерби хорошо использовать в тех случаях, когда шум в канале стационарен и легко моделируется. Пусть Q (о I с) условная вероятность того, что на выходе демодулятора наблю- дается символ о при условии, что на вход канала поступил сим- вол с. ~аже если с выбран из дискретного алфавита малого объема, демодулятор мягкого решения может иметь для и больший алфа- вит ‒ быть может, непрерывный алфавит или алфавит двоичных чисел из т битов. Возьмем некоторый кадр принятого слова. Он состоит из и компонент, обозначаемых через о;, i = 1, ..., n() ° Выберем некоторое ребро решетки. Оно состоит из и, компонент кодового слова, обозначаемых через с;, 1 = 1, ..., и,. Расстояние кадра кодового слова с от соответствующего кадра принятого слова ч определяется логарифмической функцией правдоподобия Пп d (v, с) = f 1о~ Q (ut ! С,). Эта функция, называемая метрикой ребра (или метрикой пути), обладает свойствами расстояния, хотя и не является истин- ноч метрикой. декодер Витерби с мягким решением аналогичен декодеру Витерби с жестким решением, но только вместо хэммингов;1 расстояния он использует новую метрику пути. При каждой итерации каждый выживший путь, ведущий в каждый узел, продолжается всеми возможными способами в узлы следующего уровня с прибавлением метрик ребер к общей накопленной ме- трике пути. Выживший в кажцом новом узле путь сохраняется, а остальные пуги отбрасываются. Поэтому сложность декодера 
15.4. МЯГКОЕ ДЕКОДИРОВАНИЕ СВЕРТОЧНЫХ КОДОВ $43 Витерби возрастает очень мало при его перестройке на мягкое решение, Если входные символы канала вещественные или комплекс- ные числа, а шум в канале ‒ аддитивный гауссовский незави- симый, То »и (~(у'с) = Я, ехр [ с=1 Яля гауссовского канала максимизация логарифмической функции правдоподобия эквивалентна минимизации евклидова расстояния. В качестве метрик ребер используем евклидово расстояние »о d~ (v, с)' = ~> (с; -- u;)'. На практике во многих каналах с мягким решением, не являю- щихся гауссовскими, Q (v ~ с) неизвестно, но евклидова расстояние по-прежнему используется для вычисления метрик ребер. Соот- ветствующий декодер является декодером по минимуму евклидова расстояния. Он не является декодером максимального правдопо- добия, но практичен. Алгоритм Витерби с мягким решением выгля- дит совершенно аналогично алгоритму Витерби с жестким реше- нием, но хэммингово расстояние заменено в нем евклидовым. Рассмотрим сверточные коды, использующие вещественные или комплексные алфавиты из 2" символов, где и, некоторое целое число. Типичные сигнальные алфавиты представлены на рис. 15.1. Каждый алфавит ‒ это дискретное множество симво- лов, выбираемых или из поля вещественных чисел, или из поля комплексных чисел. Сигнал представляет собой последователь- ность этих вещественных или комплексных чисел. Каждый сигнал из набора сигналов будет использоваться для представления одного из 2" ребер двоичного сверточного (mn,, тй,)-кода. Наборы сигналов на рис. 15.1 обеспечивают кодирование байтов, в которые входят от 2 до 6 битов. Информа- ционный байт меньше кодового байта. На протяжении кадра информационные байты поступают в кодер. Один из байтов кодо- вого слова (какой именно ‒ это зависит от текущего состояния кодера) передается по каналу в виде комплексного числа, а кодер переходит в новое состояние. Пусть Ю сверточный (тп„тй„)-код над комплексным по- лем С. Евклидово расстояние между двумя кодовыми словами с, и с, (с комплексными компонентами c„c,;, i = О, соответственно) определяется формулой 00 пв(с„с,)'= f ~с„‒ с,g!'. r=a 
544 гл. 15. певедАчА по зАшумленным кАнАлАм 10 10 Сосвояное 00 01 Рис. 15.6. Простой пример кодирования. а ‒ четверичный набор ФТ-модулиро- ванных сигналов при отсутствии кодирования; б ‒ восьмеричный набор ФТ-модулированных сигналов; в ‒ решетка для сверточного (6, 4)-кода. Евклидово свободное расстояние Ж, обозначаемое через определяется как минимум евклидовых расстояний всех возмож- ных пар кодовых слов из Ж. Евклидово свободное расстояние яв- ляется подходящим расстоянием для измерения кодовых характе- ристик в гауссовском канале. Это следует из того, что в гауссов- ском канале вероятность ошибки асимптотически ') удовлетво- ряет неравенству d P,oNd Q где а среднеквадратичное отклонение шума, Q интеграл гауссовского распределения, а Фд число кодовых слов на 1 При о- О. ‒ Брим. ред. 
15.4. мягкое декодиРовАние сверхточных кодов 640 расстоянии d от слова, целиком состоящего из нулей. Следова- тельно, увеличение d, грубо говоря, эквивалентно уменьше- нию о. Вот почему увеличение свободного расстояния мы назы- ваем выигрышем сверточного кода. Евклидово свободное расстояние часто измеряется в деци- белах; эта мера определяется соотношением d (дБ) = 20 log~p d Асимпто~пичгский выигрыш кодирования определяется фор- мулой G = 20 logy' (d /d„g) где draff ‒ минимальное евклидово расстояние между незакоди- рованными соответствующими сигналами той же мощности. На рис. 15.6 представлен простой пример. Сверточный код определяется восьмеричным набором ФТ-модулированных сигна- лов и решеткой в кодере. Он представляет собой (6,4)-код со скоростью 2/3. Пример несистематического кодера представлен на рис. 15.7, а. Соответствующий код может также использоваться как систематический, если рассматривать второй и третий биты в каждом кадре как информационные. Однако для реализации кода в систематической форме надо ввести в кодере обратную К 8-очному ФТ-моЬуляаору К. 8- очному ~РТ- моЬуляаору Информацоонные бовы Рис. 15.7. Кодеры для сверточного (6, 4)-кода. а ‒ кодер с регистром сдвига, не использующий обратную связь; б ‒ кодер с регистром сдвига, использующий обратную связь. 18 P. Блейхут 
546 Гл. is. ПеРедАчА по зАшумленным~КАЯАлАм связь, как показано на рис. 15.7, б. Символ кодового слова со- держит лишь два бита информации, а может принимать восемь различных значений. На рис. 15.6, в легко видеть, что минималь- ный вес имеет путь 001 011 000; ему соответствует кодовое слово, находя(цееся на минимальном расстоянии от кодового слова, О О О ~) О ° O ~) ".) 0 0 О О ('1 О 0 О Э О 0 ° О ° О и О O и (5 O г~ 0 0 Г) ° и ~1 ~> С) О г, о ( 01) 5 (00I ) 4 ( I I I 1 (сос, сВ) (OIIj 6 (0101 (1001 1 0- Два бопа на вхобе К 8-цчному ~ÐT- М( д~~Лп Два О1лпа на вхоЬе К 8- 1чНОМ VT-модуг р >2д( ‒ ) Два 5uma на вхоЬе К B-ОЧНОМЦ ФТ- мОЬ4ЛЯ Рис. 15.8. Некоторые коды для восьмернчного канала с фТ-модуляцией. О О О О 0 Ф Запись бВООчная (000) восьмеричная Q ~~~в р '~(2=1 d= d~ = 2,000 Вьюрыш в 3 дб 1'O-.раВнЕное С 4-цчноц ~РТ 1 О 2.,14! Вь1мРь1ш в 3,6 Ьб по сравнению с 4-очной ~РТ 0 0 0 0 р, >за(Д) 1. Я 2d, 2,t7i Ьь1оарыш в 4,1 бб по сравненцю с 4-uuvou 5т 
1В.4. МЯГКОЕ ДЕКОДИРОВАНИЕ СВЕРТОЧНЫХ КОДОВ Коды Ьля Ь-очного набора ~РТ-сцгналое Выигрыш по сравнению с 4-ичной ФТ без кодиро- вания (бб) Длина коЬового ограничения /1,(л) h3(w) /12(К) .1 .с' .~" +.с' .т +х , 7+ «" + л +X +.к +.v. +.~' +~ 1 л Коды для 8-ичного набора АФМ- сигналов Выигрыш по сровнению с 4-ичнои ФТ без кодиро- вания (дб) Длина кодового ограничения rg(r) X .2 м-+ м r3+ i +Х .3+ 2 <5 +,3+ 2+ '+. '+ <+ '+. Рис. 15.9. Таблнца кодов Унгербека целиком состоящего из нулей. Минимальное расстояние кода равно d,-' + d . На рис. 15.6, а представлен 4-ичный ФТ-модулиро- ванный набор для соответствующих незакодированных сигналов той же мощности. Выигрыш кодирования равен 6 = 10 log» l(d', + + d,')/d;], или 1,1 дБ, так как d, определяет евклидова свободное расстояние для незакодированных сигналов, изображенных на рис. 15 6, а. Как показывает выигрыш, кодирование приводит к небольшому улучшению, что является неожиданным для такого простого кода. Однако первый из изображенных на рис. 15.8 кодов, {9,6)-код, приводящий к выигрышу уже в 3 дБ, лццрв немноГо ыожнее, и поэтому следует отдать предпочтефщ ЕМу. 18е .~-+ 1 Г+1 .4+ .+1 +.x +! .~'+.~'+ 1 .1 +.<+1 л-н+х2+ I .1 1 ~ -t.x-+! .~2+ ! .3+ 1 ,4+ .+ 1 .с+ ! х~+ I .~'+ r+ 1 хв+ ! .с~+ ! О .2 .с +.С+.с Л +X3+i' .с + i +л'+х' .~" +x +л .с-'9 Г+,.4-1,3+.i.- t i + i"'+i О 2 Х .с~+.~~+ с 3 +X +X2 Х +Х х +.ñ+r +х ,8+ 7+ 3 3.0 3.6 4.I 4.6 48 5.0 54 57 «~0 З.о 3.8 3.8 4.5 5.! 5.! 56 
Q4Q Гл. 15. пеРедАчА пО зА)иумленным кАнАлАм Для нахождения более сложных кодов в общем случае тре- буется использовать ЭВМ, но даже при этом поиск должен быть разумно организован, иначе он станет практически невозможным. На рис. 15.8 приведены примеры трех кодов. Изображены решетки этих кодов, и в каждом случае выделен путь, на котором дости- гается евклидово свободное расстояние. На рис. 15,9 представлена таблица кодов Унгербека со ско- ростью 2/3 для восьмеричных наборов ФТ-сигналов и для восьме- ричных наборов АФМ-сигналов. Сверточные коды описываются своими матрицами проверочных многочленов. Здесь удобнее использовать проверочные многочлены вместо порождающих, поскольку скорость кода больше 1/2 и систематический кодер с обратной связью легче строить, исходя из проверочных много- членов. Любой из представленных на рис. 15.9 кодов Унгербека может быть использован для замены обычно используемого четырех- уровневого ФТ-модулятора. Информационная скорость по-преж- нему остается равной 2 бита на символ. Посимвольная скорость не изменяется, и поэтому кодовая система использует ту же полосу, что и система без кодирования, и передает то же число битов на символ. Поэтому пользователь системы даже не знает о наличии кодирования. Однако система может использоваться при меньшем отношении сигнал/шум ‒ код при длине кодового ограничения 9 дает выигрыш 5,7 дБ. 15.5. ПОСЛЕДОВАТЕЛЬНОЕ ДЕКОДИРОВАНИЕ Используются два типа алгоритмов последовательного декодиро- вания алгоритм Фано, который уже изучался применительно к каналам с жестким решением, и стек-алгоритм. Они достаточно отличаются по структуре и аппаратурной реализации. Оба могут использоваться и в каналах с жестким решением, и в каналах с мягким решением. Относительные преимущества каждого из этих алгоритмов до сих пор обсуждаются. Начнем с обсуждения стек-алгоритма. Класс алгоритмов последовательного декодирования, носящий общее название стек-алгоритма, был предложен для уменьшения вычислительной работы по сравнению с алгоритмом Фано. Стек- алгоритм сохраняет информацию о всех путях, которые уже были исследованы. В этом состоит его отличие от алгоритма Фано, который может продвинуться из данного узла, а затем вернуться на то же расстояние назад лишь для того, чтобы по- вторить обследование из того же узла. Стек-алгоритм хранит информацию лучше, так что не нужно повторять ненужную ра- боту. С другой стороны, стек-алгоритм требует значительно боль- шей памяти. 
1~.5. llOCAE QOBATEJl>HOB PEKPgy PP gAHg E б49 Cm0n‒ поЬааь на выхоЬ пусть на вершине cmeKa Рис. 15.10. Упрощенный стек-алгоритм Стек-алгоритм легок для понимания; его упрощенная блок- схема приведена на рис. 15.10. Декодер содержит стек ') ранее исследованных путей различных длин. Стек может быть органи- зован в виде списка в памяти случайного доступа. Каждая запись в стеке соответствует некоторому пути и со- держит три части: длину пути, последовательность информацион- ных символов переменной длины, определяющую путь, и метрику пути. До начала декодирования стек содержит лишь тривиальный путь нулевой длины. Метрика пути измеряет расхождение между соответствующим путем и начальным сегментом принятого слова той же длины. Она определяется как логарифмическая функция правдоподобия этого пути. Коротко объясним, как вычисляется эта метрика. Первые N + 1 кадров принятого слова можно записать в виде (N) ( 1 ло ! л, (t' nÎÚ 7 ~Я)у ° ° °, 00 ) О]) ° ° ° ) Vl ) ° ° °, VN ) ° е е ) VN j. ') В данном случае стеком называется упорядоченная память. ‒ Прим. ред. 
ГЛ. 16. ПаваДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ По предположению кодовые слова используются с одинаковой вероятностью; поэтому Pr (с<"'~) = ,~(л~+ ) l<~ =,~(m+l) tc„l< ' Множитель Pr (ч«'> ) c<"'>) можно переписать в виде nil V л„ р ( '"')l'"')=ППР( <[;) П П~(~) i =0 /=1 i m~-1 j=l Правая часть распадается на две части: произведение условных вероятностей по m + 1 кадрам кодового слова и произведение безусловных вероятностей по тем кадрам, в которых кодовое слово еще не определено. Разбиение вероятности на две части, которое мы провели, приводит естественным образом к вероят- ностному описанию последовательного декодирован и я. Задача сводится к нахождению пути, для которого величина m no TT TT Рг (о~ ~ С~1 р ( <N)) и n„<n<+<) л,R П П Р'("') i=oj=! максимальна. Используемая нами в последовательном декодиро- вании метрика пути, которая называется метрикой Фоно, пред- ставляет собой логарифмическую функцию Рг(ч<~~ ! с<~~) Рг (c<~') ц (с< >) = log ‒ ч Рг (v<~~) -Z пе Рг (о! ~ c<<) Рг (о') /=! В квадратную скобку заключен вклад в метрику Фано, вносимый с-м кадром. 3 каждом кадре каждого кодового слова необходимо Первые m + 1 кадров кодового слова с имеют вид (m) ( ! л, ! л, ! п61 С C0> s C0 s C1, s С! >... ° Cnzt, Cm J' Мы хотим найти сегмент кодового слова, для которого log [Рг (с<~ ~ v<~~) ] максимален. По определению последова- тельного декодера выбор начального сегмента кодового слова длины т + 1 должен производиться без учета последующей структуры кодового дерева. Но по правилу Бейеса р ( <+~) ( <<v~) Рг (v 1 c ' ) Рг (c ) Рг (v<+~) 
! 85. ПОСЛЕДОВАТЕЛЬНОЕ ДЯ КОД И РОВА НИ Е вычислять лишь этот член. Метрика пути р, (с< ~) получается прибавлением соответствующего приращения к метрике Фано кодового слова, находившегося на вершине стека на предыдущей итерации. Последовательное декодирование для жесткого решения, осно- ванное на алгоритме Фано, уже обсуждалось в g 12.9; аналогичное обсуждение может быть проведено и для каналов с мягким реше- нием. Единственно реальная разница между декодером для ка- налов с жестким решением и каналов с мягким решением состоит в используемой метрике пути. Соответствующая мягкому решению метрика пути ‒ это метрика Фано. Единственное, что необходимо изменить в алгоритме Фано, описанном в ~ 12.9, ‒ это ввести новую метрику. После такого изменения декодер Фано, описанный в ~ 12.9, станет пригодным и для каналов с мягким решением. Любой алгоритм последовательного декодирования обладает следующими свойствами. 'этот декодер производит по меньшей мере одно вычисление в каждом посещаемом им узле; ребра иссле- дуются последовательно, так что в любом узле выбор декодером ребра среди ранее не исследованных ребер не зависит от тех при- нятых ребер, которые расположены глубже на дереве. Это второе условие критическое; оно приводит к характерным особенно- стям поведения последовательного декодирования. Декодеры бло- ковых кодов и синдромные декодеры сверточных кодов могут использовать последующую информацию, чтобы принять более раннее решение, и поэтому ведут себя иначе. Число вычислений, производимых любым последовательным декодером для продвижения на один узел в глубь кодового дерева, является случайной величиной. Это обстоятельство в основном и влияет на сложность, требуемую для достижения заданного качественного уровня. Когда шум слаб, декодер обычно продви- гается по правильному пути, используя лишь одно вычисление для продвижения в глубь кодового дерева на одно ребро. Однако когда шум становится сильным, декодер может проследовать вдоль неправильного пути, и прежде чем декодер найдет правиль- ный путь, ему, возможно, потребуется произвести большое число вычислений. Непостоянство числа вычислений означает, что бу- феру входных данных может потребоваться большая память. Использование любого конечного буфера при последовательном декодировании приводит к ненулевой вероятности переполнения; это оэсгоятельство должно приниматься во внимание при вычисле- ниях характеристик декодера. ЗАДАЧ И 15.1. Привссти простое выражение для метрики Фано в случаях д-ичного с имметричного канала и гауссовского каиала. 15.2. Построить блок-схему ОМР-алгоритма для недвоичиых кодов. 
~5Я ГЛ. !6. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ 15.3. Яля сверточного кода с порождающей матрицей х хй 1 G (х) = О 1 построить систематический кодер, использующий в регистре сдвига обратну!о связь. 15.4. Разобрать случай декодирования, представленный на рис. 12.25, используя стек-алгоритм. ЗАМЕЧАНИЯ Возможность использования декодирования с мягким решением для улучшения качества декодирования стала ясной почти с того момента, когда были по- строены первые коды, однако хорошие декодеры для них тогда не были най- дены. По существу первая попытка построить алгоритмический де!<одер мягкого решения для блоковых кодов была сделана Форнп [1966], который ввел поня- тие обобщенного минимального расстояиия. Несколько отл!«!ающи!!ся алгоритм был предложен Чейзом [1972), который дополиил внешней петлей декодер двоичных кодов с жестким решением, исправляющий только ошибки. В рабогг Хартмана и Рудолфа [1976] предложен декодер мягкого решения совершенно иного типа. Для сверточных кодов декодеры с мягким решением были введены легче и получили более широкое практическое распространение, чем для блоковь!х. Это произошло из-за того, что декодеры минимального расстояния. испо1ь- зуемые для сверточных кодов, менее сложны, чем алгебраические декодеры, используемые д:!я блоковых кодов, таких, как коды БЧХ. Хэммингово расстоя- иие может быть заменено другими мерами разделения кодовых слов прН весьм» малом изменении структуры вычислений. Унгербек [1977, 1982] построил специально предназначенные для прием- ника мягкого решения коды, комбинируя выбор модуляции и выбор код; . Использование решетки для модуляции исследовали также Л!!дсрсон и Тс!!.1ор [1978], но вне связи с кодированием. Последовательное декодироваиие было предложено Возснкрафтом [1957) и описано Возепкрафтом и Рейффеном [1961). Оно было развито далее в ра- ботах Фано [1963), Зигангирова [1966] и Джелинека [1969). Про! рсссу в данной области способствовали также обзорные работы Яжелинека [196Ь) и форни [1974] и последующие разработки Шевийя и Костелло [1978] и Хаккоуна и фергюсона (1975). Нижние границы распределения числа вычцслспи!! последовательного декодирования получили Джекобс и Берлекэмп [1967), рассмотревшие т,~кже иллюстративный пример. Соответствующая верх няя гран пца была на йден ! Севиджем [1966]. 
ЛИТЕРАТУРА Моногрпфии [1] Peterson W. W. Error-correcting codes. ‒ Cambridge (Mass.): MIT Press, 1961. [Имеется перевод: Питерсон У. Коды, исправляющие ошибки.‒ М.: Мир, 1964.] [2] Peterson 1Ч. W., Weldon Е. J., Jr. Error-correcting codes. ‒ 2nd ed.— Cambridge (Mass.): MIT Press, 1971. [Имеется перевод: Питерсон У., Уэлдои Э. Коды, исправляющие ошибки. ‒ М.: Мир, 1976.] [3] Berlel<amp Е. R. Algebraic coding theory. ‒ New York: McGraw-Hil l, 1968. [Имеется перевод: Берлекэмп Э. Алгебраическая теория кодирова- ния. ‒ М.: Мир, 1971.] [4] Рогпеу G. D. Concatenated codes. ‒ Cambridge (Mass.): MIT Press, 1967. [Имеется перевод: форни ti,. Каскадные коды. ‒ М.: Мир, 1970. ] [5] Gallager R. G. Information theory and reliable communication. ‒ New York: McGraw-Hill, 1968, Ch. 6. [Имеется перевод: Галлагер P. Теория ин- формации и надежная связь. ‒ М.: Сов. Радио, 1974. ] [6] Lin S. Introduction to error-correction codes. ‒ Englewood Cliffs: Prentice- Hall, 1970. [7] Lucky R. W., Salz J., Weldon Е. J., Jr. Principles of data communi- cation. ‒ New York: McGraw-Hill, 1968, Ch. 11 and 12. [8] Blake I. F., Mullin R,. С. The mathematical theory of coding. ‒ Yew York: Academic Press, 1975. [9) Van 1Лп1 J. Н. Coding theory. ‒ New York: Springer, 1973. [10] MacWilliams F. J., Sloane N. J. А. The theory of error-correcting codes.— New York: North-Holland, 1977. [Имеется перевод: Мак-Вильямс Ф. Дж., Слоэн Н. Дж. А. Теория кодов, исправляющих ошибки. ‒ М.: Связь, 1979. ] [11] McEliece R. J. The theory of information and coding. ‒ Reading: Addi- son-Wesley, 1977. [12] Sloane N. J. А. А short course on error-correcting codes. ‒ New York: Springer, 1975. [13] Wiggert D. Error-control coding and applications. ‒ Dcdham: Art<eh House, 1979. [14] Clark G. С., Bibb Cain J. Error-correction coding for digital communi- cations. ‒ New York: Plenum Press, 1981. [15] Pless V. Introduction to the theory of error-correcting codes. ‒ New York: 1Ч1ley- Interscience, 1982. Обзоры [1] Blake I. F. Algebraic coding theory. ‒ Stroudsburg: Dowden, Hutchinscn and Ross, 1972. [2] Berlekamp E. R. Key papers in the development of coding theory. ‒ New York: IEEE Press, 1974. 
554 ЛИТЕРАТУРА Главп 1 [1] Shan»on С. Е. А mathematical theory of communication. ‒ Bel l Syst. Tech. J., 1948, ч. 27, р. 379 ‒ 423 (Part I), р. 623 ‒ 656 (Part II); reprinted in book form with postscript by W. KVeaver. ‒ Urbana: Univ. of Illinois Press, 1949. [Имеется перевод: Шеннон К. Работы по теории информации и кибернетике. ‒ М.: ИЛ, 1963, с. 243 ‒ 332. ] [2] Hamming R. W. Error detecting and error correcting codes. ‒ Bell Syst. Tech. J., 1950, ч. 29, р. 147 ‒ 160. [Имеется перевод: Хэмминг P. В. Коды с обнаружением и исправлением ошибок. ‒ В ки.: Коды с обна- ружением и исправлением ошибок. ‒ М.: ИЛ, 1956, с. 7 ‒ 22. ] [3] Bose R. С., Ray-Chaudhuri D. К. On à class of error-correcting binary group codes. ‒ Inf. Contr., 1960, ч. 3, р. 68 ‒ 79. [Имеется перевод: Боуз P. К., Рой-Чоудхури Я',. К. Об одном классе двоичных групповых кодов с исправлением ошибок. ‒ В кн.: Кибернетический сборник. Вып. 2. ‒ М.: ИЛ, 1962, 83 ‒ 94. ] [4] Hocquenghem А. Codes correcteurs d'erreurs. ‒ Chiffres, 1959, t. 2, р. 147‒ 156. [5] Reed 1. S., Solomon G. Polynomial codes over certain finite fields.— J. Soc. Indust. Appl. Math., 1960, ч. 8, р. 300 ‒ 304. [Имеется перевод: Рид И. С., Соломон Г. Полиномиальные коды над некоторыми конечными полями. ‒ В кн.: Кибернетический сборник. Вып. 7. ‒ М.: ИЛ, 1963, с. 74 ‒ 79.] Глпвп 2 [1] Birkhoff G., Мас Lane S. А survey of moder» algebra. ‒ Rev. ed.— New York: Macmillan, 1953. [2] Van der Waerden В. 1. Modern algebra. ‒ 2 vols, ‒ New York: Frederick Ungar, 1950, 1953. [Имеется перевод нем. изд. 1967 r.: Ван,дер Вар- ден Б. Л. Алгебра. ‒ М.: Наука, 1976; 2-е изд. 1979. ] [3] Thrall R. М., Tornheim L. Vector spaces and matrices. ‒ New York: Wi- ley, 1957. [4] Fraleigh J. В. А first course 1п abstract algebra. ‒ 2nd ed. ‒ Reading: Addison-Wesley, 1976. [5] Strang G. Linear algebra and its applications. ‒ 2n~l ед. ‒ New York: Academic Press, 1980. [Имеется перевод изд. 1976 г.: Стренг Г. Линей- ная алгебра и ее применения. ‒ М.: Мир, 1980.] [6] Baumslag В., Chandler В. Theory and problems of group theory. ‒ Schaum's Outline Series. ‒ New York: Мсбга» -Н111, 1968. Глпвп 3 [1] Hamming R,. S. Error detecting and error correcting codes. ‒ Bell Syst. Tech. J., 1950, ч. 29, р. 147 ‒ 160 [Имеется перевод: см. гл. 1, [2].] [2] Golay М. J. Е. Notes on digital coding. ‒ Proc. IRE, 1949, ч. 37, р. 657. [3] Slepian D. А class of binary signalling alphabets. ‒ Bell Sist. T~cli. J., 1956, ч. 35, р. 203 ‒ 234. [Имеется перевод: Слепя» Д. Класс двоичных сигиальных алфавитов. ‒ В кн.: Теория передачи сообщений. ‒ М.: ИЛ, 1957, с. 82 ‒ 113.] [4] Slepian D. Some further study of group codes. ‒ Bell Syst. Tech. J., 1960, ч. 39, р. 1219 ‒ 1252. [5] Piyasu 2. Research and development data no. 4. ‒ Electrical Communi- cations Laboratory, Nippon Tele. Corp., Tokyo, 1953. [6] Singleton R,. С., Maximum distance q-nary codes. ‒ IEEE Trans. Inf. Theor., 1964, ч. IT-10, р. 116 ‒ 118. 
ЯИТйеАти А Яф [7] Golay М. J. Е. Notes on the penny-weighing problem, lossless symbol coding with попрглпез, etc. ‒ IR,E Trans. Inf. Theor., 1958, ч. IT-4, р. 103‒ 109. [8] Cocke J. Lossless symbol coding with nonprimes. ‒ IRE Trans. Inf. Theor., 1959, ч. IT-5, р. 33 ‒ 34. [9] Tietayainen А. А short proof for the nonexistence of unknown perfect codes oyer GF (q), д ) 2. ‒ Annales Acad. Scient. Fennicae, Ser. А., 1974, No. 580, р. 1 ‒ 6. [10] Van Lint J. Н. А survey of perfect codes. ‒ Rocky Mountain J. Math., 1975, ч. 5, р. 199 ‒ 224. [11] Васильев Ю. Л. О негрупповых плотно упакованных кодах. ‒ В кн.: Проблемы кибернетики. Вып. 8. ‒ M. Физматгиз, 1962, с. 337 ‒ 339. [12] Schonheim J. On linear and nonlinear single-error-correcting д-nary perfect codes. ‒ Inf. and Contr., 1968, ч. 12, р. 23 ‒ 26. [13] Muller D. Е. Application of Boolean algebra to switching circuit desing and to error detection. ‒ IRE Trans. Electr. Comp., 1954, ч. EC-3, р. 6 ‒ 12. [14] Reed 1. S. А class of multiple-error-correcting codes and the decoding scheme.— I R Е Trans. Inf. Theor., 1954, ч. IT-4, р. 38 ‒ 49. [Имеется перевод: Рид И. С. Класс кодов с исправлением нескольких ошибок и схема деко- дирования. ‒ В кн.: Кибернетический сборник. Вып. 1. ‒ М.: ИЛ, 1960, с. 189 ‒ 205.] Глпвп 4 [1] Birkhoff G., Мас Lane S. А survey of modern algebra. ‒ Rev. ed. ‒ New York: Macmillan, 1953. [2] Van der %аеrden В. 1. Modern algebra. ‒ 2 vols. ‒ New York: Frede- rick Unger, 1950, 1953. [Имеется перевод: см. гл. 2, [2].] [3] Berlekamp Е. R. Algebraic coding theory. ‒ New York: McGraw-Hi i i, 1968. [Имеется перевод: см. монографии, [3]. ] [4] Fraleigh J. В. А first course in abstract algebra. ‒ 2nd ed. ‒ Reading: Addison-Wesley, 1976. Глава 5 [1] Prange Е. Cyclic error-correcting codes in two symbols. ‒ AFCRC-TN-57-103, Air Force Cambridge Research Center, Cambridge (Mass.), Sept. 1957. [2] Prange Е. Somç cyclic error-correcting codes with simple decoding algo- rithms. ‒ AFCRC-TN-58-156, Air Force Cambridge Research Center, Bed- ford (Mass.), April 1958. [3] РЛегзоп W. W. Encoding and error-correction procedures for the Bose— Chaudhuri codes. ‒ IRE Trans. Inf. Theor., 1960, ч. IT-6, р. 459 ‒ 470. [Имеется перевод: Питерсон У. Кодирование и исправление ошибок для кодов Боуза ‒ Чоудхури. ‒ В кн.: Кибернетический сборник. Вып. 6.‒ М.: ИЛ, 1963, с. 25 ‒ 54. ] [4] Kasami Т. Systematic codes using binary shift register sequences. ‒ J. Inf. Process. Soc. Japan, 1960, ч. 1, р. 198 †2. [5] АЬгатзоп N. А note on single error-correcting binary codes. ‒ IR,Å Trans. Inf. Thçor., 1960, v. IT-6, р. 502 ‒ 503. [6] Elspas В. А note on P-nary adjacent-error-correcting codes. ‒ IRE Trans. Inf. Th ог., 1960, ч. IT-6, р. 13 ‒ 15. [7] Abramson N. А. Class of systematic codes for non-independent errors.— IRE Trans. Inf; ТМог., 1959, ч. IT-5, р. 150 ‒ 157. [8] Kasami Т. Optimum shortened cyclic codes for burst-error correction.— IEEE Trans. 1п[. Theor., 1963, ч. IT-9, р. 105 ‒ 109. [9] Peterson %. W., Weldon Е. J. Jr. Error correcting codes. ‒ 2nd ed.— Cambridge (Mass.): MIT Press, 1971. [Имеется перевод: см. монографии, [2]. ] 
литемтуеА [10] Fire P. А class of multiple-error correcting binary codes for non-indepen. dent errors. ‒ Sylvanla Report RSL-E-2, Sylvania Reconnaissance Systems Lab., Mountain View, Calif., 1959. [11] Golay М. J. E. Notes on digital coding. ‒ Proc. IRE, 1949, ч. 37, р. 657. [12] McEliece R,. J. The theory of information and coding. ‒ Reading: Addi- son-Wesley, 1977. [13] Assmus Е. F., Jr., Mattson Н. F., Jr. Coding and combinatorics. ‒ ЫАИ Rev, 1974, ч. 16, р. 349 ‒ 388. Глава о [1] Peterson W. W. Encoding and error-correction procedures for the Bose— Chaudhuri codes. ‒ IRE Trans. Inf. Theor., 1960, 1. IT-6, р. 459 ‒ 470. [Имеется перевод: см. гл. 5, [3]. ] [2] Chien R. T. Cyclic decoding procedures for Bose ‒ Chaudhuri ‒ Hocquenghem codes. ‒ IEEE Trans. Inf. Theor., 1964, ч. IT-10, р. 357 ‒ 363. [3] Peterson W. W. Error-correcting codes. ‒ Cambridge (Mass.): MIT Press; New York: Wiley, 1961. [Имеется перевод: см. монографии, [1].] [4] Meggitt J. Е. ‒ Error-correcting codes for correcting bursts of errors.— 1ВМ J. Res. Develop., 1960, у. 4, р. 329 ‒ 334. [5] Ме©Ж А E. Error-correcting codes and their implementation. ‒ IR F Trans. Inf. Theor., 1961, v. IT-7, р. 232 ‒ 244. [6] Kasami' Т. А decoding procedure for multiple-error-correcting cyclic codes.— IEEE Trans. Inf. Theor., 1964, ч. IT-10, р. 134 ‒ 139. [7] MacWilliams F. J. Permutation decoding of systematic codes. ‒ Ве11 Syst. 1'еЖ А, 1964, ч. 43, р. 485 ‒ 505. [Имеется перевод: Мак-Виль- ямс Ф. Дж. Перестановочное декодирование систематических кодов.‒ кн.: Кибернетический сборник. Новая серия. Вып. 1. ‒ М.: Мнр, 1966, с. 35 ‒ 57.] [8] Mitchell М. Е. Error trap decoding of cyclic codes. ‒ G. E. Rep«t N<. 62МСРЗ, General Electric Military Communications Department, 0klahom i City, 1962. [9] Rudolph 1., Mitchell М. Е. Implementation of decoders for cyclic codes.--- IEEE Trans. Inf. Theor., 1964, ч. IT-10, р. 259 ‒ 260. Глава 7 [1] Hochquenghem А. Codes correcteurs d'erreurs. ‒ Chiffres, 1959, t. 2, р. 147‒ 156. [2] Bose R. С., Ray-Chaudhuri Р. К. On à class of error correcting binary group codes. ‒ Inf. and Contr., 1960, v. 3, р. 68 ‒ 79. [Имеется перевод: см. гл. 1, [3].] [3] R«d I. S., Solomon G. Polynomial codes over certain finite fields. ‒ J. So . Indust. Appl. Math., 1960, ч. 8, р. 300 ‒ 304. [Имеется перевод: см. гл. 1, [5]. ] [4] Kasami Т., Tokura N. Some remarks on ВСН bounds and minimum weiglit.' of binary primitive ВСН совая. ‒ IEEE Trans. Inf. Theor., 1969, ч. IT-15, р. 408 ‒ 412. [5] Chen С. L. Computer results on the minimum distance of some binary сусИс codes. ‒ IEEE Trans. Inf. Theor., 1970, ч. IT-16, р. 359 ‒ 360. [6] Peterson 1Ч. W. Encoding and error-correction procedures for the Bose-Chaud- huri codes. ‒ IEEE Trans. Inf. Theor., 1960, ч. IT-6, р. 459 ‒ 470. [Имеется перевод: см. гл. 5, [3].] [7] Gorenstein D. С., Zierler N. А class of error-correcting codes in р"' sy~»- bols. ‒ J. So". Indust. Appl. Math., 1961, v. 9, р. 207 ‒ 214. [Имеется перевод: Горенстейн Д., Цирлер Н. Класс кодов из р'+ символов с исправ- 
лийееАтмвА 657 Леняем ошибок. ‒ В кн.: Кибернетический сборник. Вып. 7. ‒ M.: ИЛ, 1963, с. 80 ‒ 89.] [8] Chien R,. Т. Cyclic decoding procedures for Bose ‒ Chaudhuri ‒ Hocquenghem codes. ‒ IEEE Trans. Inf. Theor., 1964, ч. IT-10, р. 357 ‒ 363. [9] Рогпеу G. D., Jr. On decoding BCH codes. ‒ IEEE Tra»s. Inf. Theor., 1965, ч. IT-11, р. 549 ‒ 557. [10] Berlekamp Е. R. Algebraic coding theory. ‒ New York: McGraw-Hi l l, 1968. [Имеется перевод: см. монографии, [3]. ] [11] Massey J. L. Shift-register syntesis and ВСН decoding. ‒ IEEE Trans. Inf. Theor., 1969, ч. 1Т-15, р. 122 ‒ 127. [12] Burton Н. О. Inversionless decoding of binary ВСН codes. ‒ IEEE Trans. Inf. Theor., 1971, ч. IT-17, р. 464 ‒ 466. [13] Sugiyama Y., Kasahara М., Hirasawa S., Namekawa Т. А method for sol- ving key equation for decoding Goppa codes. ‒ Inf. and Contr., 1975, ч. 27, р. 87 ‒ 99. [14] Welch 1. R., Scholtz R,. А. Continued fractions and Berlekamp's algo- rithm. ‒ IEEE Trans. Inf. Theor., 1979, ч. IT-25, р. 19 ‒ 27. [15] Mandelbaum D. М. Decoding beyond the designed distance for certain algeb- га1с codes. ‒ Inf. and Contr., 1977, р. 209 ‒ 228. Глава 8 [1] Reed 1. S., Solomon G. Polynomial codes over certain fi»ite fields. ‒ J» SIAM, 1960, ч. 8, р. 300 ‒ 304. [Имеется»еревод: см. гл. 1, [5]. ] [2] Mattson Н. F., Solomon G. А new treatm"nt of Bose Chaudhuri codes.‒ ~ J. Soc. Indust. Appl. Math., 1961, ч. 9, р. 654 ‒ 699. [Имеется перевод: , Мэттсон Х., Соломон Г. Новая трактовка кодов Боуза ‒ Чоудхури.‒ В кн.: Теория кодирования. ‒ М.: Мир, 1964, с. 7 ‒ 29.] [3] Mandelbaum D. M., Construction of error-correcting codes by interpolation.— IEEE Trans. Inf. Theor., 1979, ч. IT-25, р. 27 ‒ 35. [4] Pollard J. М. The fast Fourier transform in à finite field. ‒ Math. Com- putat., 1971, ч. 25, р. 365 ‒ 374. [Имеется перевод: Поллард Дж. М. Быстрое преобразование Фурье в конечном поле. ‒ В кн.: Яакклел- лан Дж. Х., Рейдер ~I. М. Применение теории чисел в цифровой об- работке сигналов. ‒ М.: Радио и связь, 1983, с. 147 ‒ 155. ] [5] Gore W. С. Transmitting binary symbols with Reed ‒ Solomon codes.— Proc. Princeton Conf. Inf. Sci. Syst., Princeton, 1973, р. 495 ‒ 497. [6] Chien R. Т., Choy D. M. Algebraic generalization of ВСН ‒ Goppa ‒ Hel- gert codes. ‒ IEEE Trans. Inf. Theor., 1975, ч. IT-21, р. 70 ‒ 79. [7] Lempel А., Winograd S. А new approach to error-correcting codes.— IEEE Trans. Inf. Theor., 1977, ч. IT-23, р. 503 ‒ 508. [8] Chic» R. T. А new proof of the ВСН bound. ‒ IEEE Trans. Inf. Theor., 1972, ч. IT-18, р. 541. [9] Wolf J. К. Adding two information symbols to certain nonbinary ВСН codes and some applications. ‒ Веl l Syst. Tech. J., 1969, ч. 48, р. 2405-‒ 2424. [10] Андрианов В. И., Сасковец В. Н. Дециклические коды. ‒ Кибернетика, 1966, № 1, с. 1 ‒ 6. [11] Sloane N. J А., Reddy S. М., Chen С. 1. New binary codes. ‒ IEEE Trans. Inf. Theor., 1972, ч. IT-18, р. 503 ‒ 510. [12] I(asahara M., Sugiyama Y., Hirasawa S., Nam kawa Т. А »гав class binary codes constructed on the basis of ВСН codes. ‒ IEEE Trans. I»f. Theor., 1975, ч. IT-21, р. 582 ‒ 585. [13] Blahut R. E. On extended ВСН codes. ‒ Proc. 18th Allerto» Conf. Com- mun. Contr. Comput., Univ, of Illinois, Monticello, 1980, р. 50 ‒ 59. [14] Нгlgert H. H. Alternant co3es. ‒ 1п[. and Со»1г., 1974, ч. 26, р, 369‒ 381. 
л ите РА1'УРА .[15] Гоппа В. Д. Новый класс лииейных корректирующих кодов. ‒ Проблемы передачи информации, 1970, вып. 3, с. 24 ‒ 30. [16] Delsarte P. On subfield subcodes of modified Reed ‒ Solomon codes. ‒ IEEE Trans. Inf. Theor., 1975, ч. IT-21, р. 575 ‒ 576. [17] Preparata F. P. А class of optimum nonlinear double-error-correcting co- des. ‒ Inf. a»d Co»tr., 1968, ч. 13, р. 378 ‒ 400. [Имеется перевод: Пре- парата Ф. П. Класс оптимальных нелинейных кодов с исправлением двой- ных ошибок. ‒ В кн.: Кибернетический сборник. Новая серия. Вып. 7.‒ М.: 1970, с. 18 ‒ 42.] [18] Nordstrom А. W„Pobinson J, P. An optimum linear code, ‒ Inf. a»d Contr., 1967, ч. 11, р. 613 ‒ 616. [19] Nadler М. А 32-point u equals 12, d equals 5 code. ‒ IRE Trans. Inf. Theor „1962, ч. IT-8, р. 58. [20] Green М. W. Two heuristic techniques for block code construction. ‒ IEEE Trans, Inf. Thcor., 1966, ч. IT-12, р. 273. [21] I(erdock А. М. А class of low-rate nonlinear codes. ‒ Inf. and Contr., 1972, ч. 20, р. 182 ‒ 187. [Имеется перевод: Кердок А. М. Класс нелинейных двоичных кодов с низкой скоростью передачи ‒ В кн.: Кибернетический сборник. Новая серия. Вып, 10. ‒ M.: Мир, 1973, с. 33 ‒ 38.] [22] Goethals J.-M. МолИ»еаг codes defined by quadratic forms over GF (2).‒ Inf. and Contr., 1976, ч. 10, р, 43 ‒ 74. Глава 9 [1] Reed 1. S., Solomon G. Polynomial codes over certain finite fields. ‒ J. Soc. Indust. Appl. Math., 1960, ч. 8, р. 300 ‒ 304. [Имеется перевод: см. гл. 1, [5].] [2] Mandelbaum D. O» decoding of Reed-Solomon codes. ‒ IEEE Trans. Inf. Theor., 1971, ч. IT-17, р. 707 ‒ 712. [3] Paschburg P,. Н. Software mplem ntation of error-correcting codes. ‒ М$ thesis. ‒ Univ. of Illinois, Urbana, 1974. [4] Gore W. С. Transmitting binary symbols with peed ‒ Solomon codes.— Proc. Pri»ceton Conf. Inf. Sci. Syst., Princeton, 1973, р. 495 ‒ 497. [5] Michelson А. А fast transform in som Galois fields and an applicatio» to decoding Red ‒ Solomon codes. ‒ IFEE Abstr. of Papers ‒ IEEE Inter»at. Symp. In f. Theor., P onneby (Sweden), 1976. [6] Blahut p,. Е. Transform techniques for error-control codes. ‒ IBM 3. Res. Develop., 1979, ч. 23, р. 299 ‒ 315. [7] Blahut p,. Е. Algebraic decoding in йа frequency domai». ‒ In: Algebraic coding й:огу and practice. Ed. by G. Longo. ‒ New York: Springer, 1979. [8] Blahut p. Е. On extended ВСН codes. ‒ Proc. 18th Allerton Conf. Circ. Syst. Theor,. Univ. of Illinois, Monticello, 1980, р. 50 ‒ 59. [9] Mandelbaum D. Ргcoding beyond the desig»ed distance for certain algebraic codes. ‒ Inf. a»d Contr., 1977, ч. 35, р. 209 ‒ 228. [10] Elias P. Error free codi»g. ‒ IRE Trans. Inf. Theor., 1954, ч. IT-4, р. 29‒ 37. [11] Blum P. А., %гЬя А. D. Further results in error-correcting codes. ‒ SM thes. ‒ MIT, Cambridge, 1960. [12] Forney G. D., Jr. On decoding BCH codes. ‒ IEEE Trans. Inf. Theor 1965, ч. IT-11, р. 549 ‒ 557. [13] Wolf J. К. Adding two information symbols to certain nonbinary ВСН codes and som applications. ‒ В 11 Syst. Tech. J., 1969, ч. 48, р. 2405 ‒ 2424. [14] Kasahara М., Яа1уата Y., Hirasawa S., Иатзkawa т., А»ещ class of binary codes constructed o» the basis of ВСН codes. ‒ 1ЕЕЕ Trans. Inf. ТЬгог., 1975, ч. IT-21, р. 582 ‒ 585. [15] Patterson N. J. Th algebraic decoding of Goppa codes. ‒ IEEF- Trans. Inf. Theor., 1975, ч. IT-21, р. 203 ‒ 207. 
лит~рлтмм ~@9 [16] Helgert Н. J. Decoding of alternant codes. ‒ IEEE Trans. Inf. Theor., 1977, ч. IT-23, р. 513 ‒ 514. [17] Delsarte P. On subfield-subcodes of modified Reed ‒ Solomon codes. ‒ IEEE Trans. Ы. Theor., 1975, ч. IT-21, р. 575 ‒ 576. [18] Berlekamp Е. R,. Algebraic coding theory. ‒ iVew York: Мсбга~ч-Hill, 1968. [Имеется перевод: см. лсоногрпфии, [3].] [19] Hartmann С. R. P. Decoding beyond the ВСН bound. ‒ 'IEEE Trans. фЫ. Theor., 1972, ч. IT-18, р. 441 ‒ 444. [20] Vanderhorst J., Berger Т. Complete decoding of triple-error-correcting binary ВСН codes. ‒ IEEE Trans. Inf. Theor., 1976, ч, IT-22, р. 138 ‒ 147. [21],Bluestein 1. 1. Linear filtering approach to the computation of discrete Fourier transforms. ‒ IEEE Trans. Audio Electroacoust., 1970, ч. AU-18, р. 451 ‒ 455. [22] Rader С. М. DiscreteFouriertransforms when the number of data samples is prime. ‒ Proc. IEEE, 1968, ч. 56, р. 1107 ‒ 1108. [Имеется перевод: Рейдер Ч. М. Дискретное преобразование Фурье, когда число отсчетов простое. ‒ В кн.: Макклеллан Дж. Х., Рейдер Ч. М. Применение теории чисел в цифровой обработке сигналов. ‒ М.: Радио и связь, 1983, с. 89‒ 91. ] [23] Goertzel G. ‒ An algorithm for the evaluation of finite trigonometric se- ries, ‒ Amer. Math. Mon., 1968, v. 65, р. 34 ‒ 35. [24] Oppenheim А. V., Schafer R. W. Digital signal processing. ‒ Englewood CIiffs: Prentice-Hall, 1975. [25] Rabiner L. R, Gold В. Theory and application оГЙдИа1 signal processing.— Englewood Cliffs: Prentice-Hall, 1975. [Имеется перевод: Рабинер P. Л., Гоулд 5. Теория и применение цифровой обработки сигналов. ‒ М.: Мир, 1978. ] [26] Sarwate D. V. Semi fast Fourier transforms over GF (2~). ‒ IEEE Trans. Com put, 1978, ч. С-27, р. 283 ‒ 284. Главп 10 [1] Elias P. Error free coding. ‒ IRE Trans. Inf. Theor 1954. ч. IT-4, р. 29‒ 37. [2] Burton Н. О., Weldon Е. J., Jr. Cyclic product codes. ‒ IEEE Trans. Inf. Theor., 1965, ч, IT-11, р. 433 ‒ 439. [3] Lin S., Weldon Е. J., Jr. Further results on cyclic ргойасГсодез. ‒ IEEE Trans. Inf. Theor., 1970, ч. IT-16, р. 452 ‒ 459. [4] Reddy S, M., Robinson J. P. Random-error and burst correction by iterated codes. ‒ IEEE Trans. Inf. Theor., 1972, ч. IT-18, р, 182 ‒ 185. [5] Weldon Е. J., Jr. Decoding binary block codes on Q-агу output channels.— IEEE Trans. Inf. Theor., 1971, ч. IT-17, р. 713 ‒ 718. [6] Blahut R,. Е. Transform techniques for error-control codes. ‒ IBM J. Res. Develop., 1979, ч. 23, р. 299 ‒ 315. [7] Chien R. Т., Ng S. W. Dual product codes for correction of multiple low- density burst errors. ‒ IEEE Trans. Inf. Theor„1973, ч. IT-19, р. 672‒ 678. Глпвп 11 [1] Cooley J. W., Tukey J. W. An algorithm for йе machine computation of complex Fourier series. ‒ Math. Comp., 1965, ч. 19, р. 297 ‒ 301. [2] Good 1. J. The interaction algorithm and practical Fourier analysis. ‒ J. Roy. Statist. Soc., 1958, ч. 20, р. 361 ‒ 375; addendum, 1960, ч. 22, р. 372‒ 375. [3] Thomas 1. Н. Using à computer to solve problems in physics. ‒ In: Appli- cations of digital computers. ‒ Boston: Ginn, 1963. 
56(} л итЯРАт УРА [4J Justesen J, On the complexity of decoding peed ‒ Solomon codes. ‒ IEEE Trans. Inf. ТЬеог., 1976, ч. IT-22, р. 237 ‒ 238. [5J Sarwate D, Ч. On the complexity of de oding Goppa codes. ‒ IEEE Trans. Inf. Thçor., 1977, ч. IT-23, р. 515 ‒ 516. [6J Agarwal R., Cooley J. W. Algorithms for digital convolution. ‒ IEEE Trans. Acoust. Speech Signal Process, 1977, ч. ASSP-25, р. 392 ‒ 410. [Имеется перевод: Лгарвал P. К., Кули gm. У. Новыс алгоритмы для цифровой свертки. ‒ В кн.: Макклеллан Дж. Х., Рейдер Ч. М. Применение теории чисел в цифровой обработке сигналов. ‒ M.: Радио и связь, 1983, с. 91‒ 117. ~ [7J Winograd S. On computing the discrete Fourier transform. ‒ Май. Comp., 1978, ч. 32, р. 175 ‒ 199. [Имеется перевод. Виноград С. О вычислении дискретного преобразования Фурье. ‒ В кн,: Макклеллан Пж. Х., Рей- дер Ч. М. Применение теории чисел в цифровой обработке сигналов.‒ М.: Радио и связь, 1983, с. 117 ‒ 136.] [8J Nussbaumer Н. J. Fast Fourier transform and convolution algoritlns.‒ Berlin: Springer, 1981. [Имеется перевод: Нуссбаумер Г. Быстрое преобра- зование Фурье и алгоритмы вычисления свертки. ‒ М.: Радио и связь, 1985. J [9J Miller R. L., Truong Т. К., Peed 1. S. Efficient program for decoding the (255, 223) Reed ‒ Solomon code over GF (28) mith both errors and erasures, using transform decoding. ‒ IEEE Proc., 1980, ч. 127, р. 136 ‒ 142. [10J Blahut R. Е. Efficient decoder algorithms based on spectral tcchniques.‒ IEEE Abstr. of Papers ‒ IEEE Internat. Sympos. Inf. Theor. ‒ Santa Monica, 1981. [11J Preparata F. P., Sarwate D. Ч. Computational ccmplexity of Роигкг tr-г~.'- forms over finite fields. ‒ Math. Comp., 1977, ч. 31, р. 740 ‒ 751. Глава 12 [1J Elias Р. Error free coding. ‒ 1РЕ Trans. Inf. Theor., 1954, ч. IT-4, р. 29‒ 37. [2J Жокепсгай J. М. Sequential decoding for reliable communication. ‒ 1957 Nat. IRE Conv. Rec., ч. 5, р. 11 ‒ 25. [3] Wy«r А. О., Ash К. В. Analysis of recurrent codes. ‒ IEEE Trans. Inf. ТЬеог., 1963, v. IT-9, р. 143 ‒ 156. [Имеется перевод: Вайнер А. Д., Эш P. 5. Анализ рекуррентных кодов. ‒ В кн.: Кибернетический сбор- ник. Новая серия. Вып. 5.‒ М.: Мир, 1968, с. 5 ‒ 33. J [41 Massey J. L., Threshold decoding. ‒ Cambridge (Mass.): MIT Press, 1963. [Имеется перевод: Месси Дж. Пороговое декодирование. ‒ М.: Мир. 1966. ] [5] «~®1о D. J., Jr. А construction technique for random-error-correcting codes. ‒ ~ЕЕЕ Trans. Inf. Theor., 1969, ч. IT-15, р. 631 ‒ 636. [6] Bussgang ~. А Some properties of binary convolutional code generators.— 1ЕЕЕ Trans. Inf. Theor., 1965, ч. IT-11, р. 90 ‒ 100. [7] Odenwalder J. P. Optimal decoding of convolutional codes. ‒ Ph. D. diss.—- Univ. of California,Los Angeles, 1970. [8J Bahl L. Р., Jelinek F. Pate 1/2 convolutional codes with complementary generators. ‒ IEEE Trans. Inf. Theor., 1971, ч. IT-17, р. 718 ‒ 727. [9J Larsen К. J., Short convolutional codes with maximal free distance for rates 1/2, 1/3 and 1/4. ‒ IEEE Trans. Inf. ТЬеог., 1973, ч. IT-19, р. 371 ‒ 372. [10] Paaske Е. Short binary convolutional codes ivith maximal free distance for rates 2/3 and 3/4. ‒ IEEE Trans. Inf. Theor., 1974, ч. IT-20, р. 683 ‒ 689. [11] Joh~nnsson Р. Robustly optimal rate one-half binary convolutional codes.— IEEE Trans. Inf. Thçor., 1975, ч. IT-21, р. 464 ‒ 468. [12] Мя.у J. L. Яч1п М. К. Inv rsçs of 11п..аг sequential circuits. ‒ IEEE '7rans. Comp., 1968, ч. С-17, р. 330 ‒ 337. 
л итеРАтУРА 56] [13J Рогпеу G. D., Jr. Convolutional codes I: Algebraic structure. ‒ IEEE Trans. Inf. Theor,, 1970, ч. IT-16, р. 720 ‒ 738. [14 J Lindner Р., Staiger L. Algebraische Codiernngstheorie. ‒ Berlin: Akade- mie-Ver lag, 1977. [15J Fano Р. М. А Ьыг1зИс discussion of probabilistic decoding. ‒ IEEE Тгапз. Inf. Theor., 1963, ч. IT-9, р. 64 ‒ 74. [Имеется перевод: Фано P. М. Эври- стическое обсуждение вероятностного декодирования. ‒ В кн.: Теория кодирования. ‒ М.; Мир, 1964, с. 166 ‒ 198.] [16J Gallager R. G. Information theory and reliable communication. ‒ New York: Wiley, 1968. [Имеется перевод: см. монографии, [5J. J [17J Viterbi А. J. Error bounds for convolutional codes and an asymptotically optimum decoding algorithm. ‒ IEEE Trans. Inf. Theor., 1967, ч. IT-13, р. 260 ‒ 269. [Имеется перевод: Витербн А. Границы ошибок для свеоточ- ных кодов и асимптотически оптимальный алгоритм декодирования. ‒ В кн.: Некоторые вопросы теории кодирования. ‒ М.: Мир, 1970, с. 142‒ 165. J [18J Не11ег J. А. Short constraint length convolutional codes. ‒ Jet Propulsion Labs. Space Prog. Sum. 37-54 III, 1968, р. 171 ‒ 177. [19J Viterbi А. J., Опшга J. К. Principles of digital communication and co- ding. ‒ McGraw-Hill, 1979. [Имеется перевод: Витерби Л. Д., Омура 3>х.К. Принципы цифровой связи и кодирования, ‒ М.: Радио и связь, 1982. J 120] Massey J. L. Error bounds for tree codes, trellis codes and convolutional codes with encoding and decoding procedures. ‒ In: Coding and comple- xity. Ed. by G. Longo. ‒ New York: Springer, 1975. [21J Forney G. D., Jr. Convolutional codes II: Maximum-likelihood decoding and convolutional codes; III: Sequential decoding. ‒ Inf. and Contr., 1974, ч. 25, р. 222 ‒ 297. Глава 13 [1J Massey J. L. Threshold decoding. ‒ Cambridge (Mass.): MIT Press, 1963. [Имеется перевод: см. гл. 14, [4J.J [2 f Reed 1. S. А class of multiple-error-correcting conc. and the decoding scheme.— IRE Trans. Inf. Theor., 1954, ч. IT-4, р. 38 ‒ 49. [Имеется перевод: см. гл. 3, [14J.1 [3] Robinson J. P., Bernstein А. J. А class of recurrent ccdes with limited error propagation. ‒ 1ЕЕЕ Trans. Inf. ТЬеог., 1N7, ч. 1Т-13, р. 10Г‒ 113. [4] Wu Ж. W. New convolutional codes. ‒ IEEE Trans. Ccrrn.unicat. Th~orÄ part I, 1975, ч. СОМ-23, р. 142 ‒ 156; part II, 1976, ч. СОМ-24, р. 19 ‒ 33; part III, 1976, ч. СОМ-24, р. 946 ‒ 955. [5] Rudolph L. D. Geometric configuration and majority-logic decodable co- des. ‒ М. Е. Е. thesis. ‒ Univ. of Oklahoma, Norman, 1964. [6] Rudolph 1.. D. А class of majority-logic decodable codes. ‒ IEEE Trans. Inf. Theor., 1967, ч. IT-14, р. 305 †3. [7] Kasami Т., Lin S., Peterson W. W. New generalizations of the Reed ‒ Muller codes. Part I: Primitive codes. ‒ IEEE Trans. Inf. Theor., 1968, v. IT-14, р. 189 ‒ 199. [8 J Колесник В. Д., Мярончиков Е. Т. Циклические коды Рида ‒ галлера и их декодированис. ‒ Про~лемы передачи информации, 1968, вып. 4, с. 15 ‒ 19. [9] eldon Е. J., Jr. Euclidean geom try cyclic codes. ‒ Proc. Sympos. Con~- binatorial Math., Univ. of 11orth Carolina, Chapel Hill, 1567. [10J Weldon Е. J., Jr. Nw gran ralizations of th Reed ‒ Muller codes. Part И: Non-primitive со&з. ‒ IEEE Trans. Inf. Theor., 1968, ч. IT-14, р. 19~‒ ~06, 
Л ИТЕРАТУРА [11] Казали' Т., Lin S., Peterson ®. W. Polynomial codes. ‒ 1ЕЕЕ Trans. Inf. Theor., 1968, v. IT-14, р. 807 ‒ 814. [12] Goethals J. М., Delsarte P. On à class of majority-logic decodable cyclic codes. ‒ IEEE Trans. Inf. Theor., 1968, ч. IT-14, р. 182 ‒ 189. [Имеется перевод: Геталс Яж. М., Дейзарт П. Один класс циклических кодов с ма- жоритарным декодированием. ‒ В кн.: Кибернетический сборник. Новая серия. Вып. 6. ‒ М.: Мир, 1969, с. 7 ‒ 23.] [13] Delsarte P. J., Goethals J. М., MacWilliams F. J. On generalized Reed‒ Muller codes and their ге1а6чез. ‒ Inf. and Contr., 1970, v. 16, р. 402‒ 442. [14] Lin S., Markowsky G. On à class of one-step majority-logic decodable cyclic codes. ‒ IBM J. Res. Develop., 1980, ч. 24, р. 56 ‒ 63. [15] Goethals J. М. Threshold decoding ‒ à tentative survey. ‒ In: Coding and complexity. Ed. by G. Longo. ‒ New York: Springer, 1975. Глава 14 [1] Assmus E. F., Jr., Mattson Н. F., Jr., Тигуп R. J. Cyclic codes.— AFCRL-65-332, Air Force Cambridge Research Labs, Bedford, Mass., 1965. [2] Forney G. D., Jr. Concatenated codes. ‒ Cambridge (Mass.): MIT Press, 1966. [Имеется перевод. см. монографии, [4 ]. ] [3] Kasami Т., Lin S., Peterson W. Ж. Some results on weight distributions of ВСН codes. ‒ IEEE Trans. Inf. Theor., 1966, ч. IT-12, р. 274. [4] МасЖИ11апiз F. J. А theorem on the distribution of weights in à systematic code. ‒ Bell Syst. Tech. J., 1963, р. 79 ‒ 94. [5] Huntoon Z. МсС., Michelson А. М. On the computation of the probability of post-decoding error events for block codes. ‒ IEEE Trans. Inf. Theor., 1977, ч. IT-23, р. 399 ‒ 403. [6] Viterbi А. J. Convolutional codes and their performance in communication systems. ‒ IEEE Trans. Communicat. Tech., 1971, ч. СОМ-19, р. 751 ‒ 772. [7] Gilbert Е. N. А comparison of signalling alphabets. ‒ Bell Syst. Tech. J., 1952, ч. 31, р. 504 ‒ 522. [8] McEliece R. J., Rodemich Е. R., Rumsey Н., Jr., Welch L. R. New upper bounds on the rate of à code via the Delsarte ‒ MacWilliams inequalities.— IEEE Trans. Inf. ТЬеог., 1977, ч. IT-23, р. 157 ‒ 166. [Имеется перевод. Мак-Элис Р.,д,, Родемич Е. P., Рамсей Г,, мл., Велч Л. Р. Новые верх. ние границы для скорости кода, основанные на неравенствах Дельсарта‒ Мак-Вильямс. ‒ В кн.: Кибернетический сборник. Новая серия. Вып. 17.‒ М.: Мир, 1980, с. 6 ‒ 27.] [9] Costello D. J. Free distance bounds for convolutional codes. ‒ IEEE Trans. 1п1. Theor., 1974, v. IT-20, р. 356 ‒ 365. [10] Savage J. E. Minimum distance estimates of the performance of sequential decoding. ‒ IEEE Trans. Inf. Theor., 1969, ч. IT-15, р. 128 ‒ 140. Глава 1$ [1] Рогпеу G. D., Jr. Generalized minimum distance decoding. ‒ IEEE Trans. Inf. Theor., 1966, ч. IT-12, р. 125 ‒ 131. [2] Chase D. А class of algorithms for decoding block codes with channel measu- rement information. ‒ IEEE Trans. Inf. Theor., 1972, ч. IT-18, р. 170‒ 182. [3] Hartmann С, К. P., Rudolph L. Р. An optimum symbol-by-symbol deco- ding rule for linear codes. ‒ IEEE Trans. Inf. Theor., 1976. v. IT-22, р. 514 ‒ 517. [4] Ung.гЬоес1с G. Trellis coding with expanded channel ддпа1 sets. ‒ Abstr.‒ 1977 IEEE Internat. Sympos. Inf. Theor., Ithaca, 1977. [5] Ungerboeck G. Channel coding with multilevel phase signals. ‒ IEEE Trans. Inf. Theor., 1982; ч. IT-28, р. 55 ‒ 67. 
JIHTEPATVPA ЩЯ [6] Anderson J. В., Taylor D. P. А bandwidth-efficient class of signaI-space codes. ‒ IEEE Trans. Inf. Theor., 1978, ч. IT-24, р. 703 ‒ 712. [7] Wozencraft J. М. Sequential decoding for reliable communication. ‒ 1957 Nat. ЩЕ Сопч. Rec., ч. 5, part 2, 1957, р. 11 ‒ 25. [8] Wozencraft J. М., Reiffen В. Sequential decoding. ‒ Cambridge (Mass.): MIT Press, 1961. [Имеется перевод: Возенкрафт Дж., Рейффен Б. После- довательное декодирование. ‒ М.: ИЛ, 1963. ] [9] Fano R. М. А heuristic discussion of probabilistic decoding. ‒ IEEE Trans. Inf. Theor.. 1963, ч. IT-9, р.64 ‒ 74. [Имеетсяперевод: см. гл. 12, [15].] [10] Зигангиров К. Ш. Некоторые процедуры последовательного декодирова- ния. ‒ Проблемы передачи информации, 1966, вып. 2, с. 13 ‒ 25. [11] Jelinek F. А fast sequential decoding algorithm using à stack. ‒ IBM J. Res. Develop., 1969, ч. 13, р. 675 ‒ 685. [12] Forney G. D., Jr. Convolutional codes Ш: Sequential decoding. ‒ Inform. Contr., 1974, v. 25, р. 267 ‒ 297. [13] Jelinek F. Probabilistic information theory. ‒ New York: McGraw-Í111, 1968. [14] Chevillat P. Р., Costello D. J., Jr. An analysis of sequential decoding for specific time-invariant convolutional codes. ‒ IEEE Trans Inf. Theor., 1978, ч. IT-24, р. 443 ‒ 451. [15] Haccoun D., Ferguson М. J. Generalized stack algorithms for decoding con- volutional codes. ‒ IEEE Trans. Inf. Theor., 1975, v. 1Т-21, р. 638 ‒ 651. [16] Savage J. Е. Sequential decoding ‒ The computation problem. ‒ Bel l Syst. Tech. J., 1966, ч. 45, р. 149 ‒ 175. [17] Jacobs 1. М., Berlekamp Е. R. А lower bound to the distribution of сотри- tations for sequential decoding. ‒ IEEE Trans. Inf. Theor., 1967, v. IT-13, р. 167 ‒ 174. [Имеется перевод: ДжекобсИ., Берлекэмп Е. Нижняя гра- ннца количества вычислений для последовательного декодирования. ‒ В кн.: Некоторые вопросы теории кодирования. ‒ М.: Мир, 1970, с. 230‒ 248.] [18] Jelinek F. Лп upper bound on тотгп1з of sequential decoding effort.— IEEE Trans. Ы. Theor., 1969, ч. IT-15, р. 140 ‒ 149. 
ИМЕННОЙ УКАЗАТЕЛЬ Абель (Abel N. H.) 60 Агарвал (Agarwal R.) 398 Андерсон (Anderson J. В.) 552 Анд риа нов В. Н. 284 Ассмус (Assmus Е. F.) 153, 521 Афанасьев В. Б. 397 Бартон (Burton Н. 0.) 238, 353 Бергер (Berger Т.) 10, 324 Берлекэмп (Berlecamp Е. Я.) 14, 111, 203, 214, 238, 324, 552 Бер иста йн (Bernstei и А. J.) 491 Бест (Best М. R.) 10 Биркгоф (Birkhoff А. G.) 60, 111 Блейхут Б. (Blahut В.) 10 Блейхут Р. Э. (Blahut R. Е.) 284, 324, 353, 398 Блейхут Э. Дж. (Blahut Е. J.) 10 Блечма н (Blachman N. М.) 10 Блюм (Blum R. А.) 324 Блюстейн (Bluestein 1. 1.) 324 Бол (Bahl 1. Я.) 447 Боуз (Bose R. С.) 14, 238 Буссганг (Bussgang J. J.) 447 Вайнер (Wyner А. D.) 447 Ван-дер-Варден (Van der%'aerden В. 1 .) 60, 111 Вандеркулк (Vanderkulk W.) 10 Вандерхорст (Va»derhorst J.) 324 Ван Линт (Van Lint J. Н.) 83 Васильев Ю. Л. 83 Вейс (Weiss А. D.) 324 Велч (Welch R. L.) 238, 522 Вест (West S. С.) 10 Виноград (Winograd S.) 10, 284, 398 Витерби (Viterbi А. J.) 10, 447, 522 Владус С. Г. (Vladuts S. G.) 522 Возенкрафт (~Чокепсгап J. М.) 447, 552 Вулф (Wolf J. К.) 284, 324 By (Wu W. W.) 491 Галлагер (Gallager R. G.) 447 Галуа (Galois Е.) 60 Герцель (Goer tzel G.) 324 Геталс (Goethals J. М) 284, 491 Гилберт (Gilbert Е. N.) 522 Голд (Gold В.) 324 Голей,(бо1ау М. J. Е.) 83, 153 Головина Л. И. 60 Гоппа В. Н. 14, 284, 522 1ор (Gore W..Ñ) 284, 324 Горенстейн (Gorenstein D. С.) 193, 238 Грин (Green М. W.) 284 Гуд (Good 1. J.) 397 Дельсарт (Delsarte Р.) 284, 324, 491 Джелинек (Jelinek F.) 447, 552 Джекобс (Jacobs 1. М.) 552 Зигангиров К. Ш. 552 Зиновьев В. А. 83 Зяблов В. В. 236 Йоханнессон (Johannesson К.) 447 Касами (l(asami' Т.) 153, 186, 238, 491, 521 Касахара (Kasahara М.) 238, 284, 324 Кок (Cocke J.) 83 Колесник В. Д. 491 Костелло (Costello D. J., Jr.) 447 Кердок (Perdock А. М.) 284 Киясу (Piyasu Z.) 83 Кобаяси (Kobajash K.) 10 Краченфелс (l(rachenfels С. А.) 10 Кули (Cooley J. ЪЪ'.) 397, 398 Курош А. Г. 60 Ларсен (Larsen 1(. J.) 447 Лемпель (Lempel А.) 284 Лин (Lin S.) 491, 521 Линднер (Lindner R.) 447 Мак-Вильямс (MacWilliams F. J.) 186, 491, 521 Маклейн (MacLane S.) 60, 111 Мак-Элис (МсЕ11есе К. J.) 153, 552 Маллер ((Muller D. Е.) 83 Мальцев А. И. 60 Мандельбаум (Man del baum D.) 238 284, 324 Марковский (Markowsky G.) 491 Меггитт (Meggitt J. Е.) 186 Месси (Massey J. 1 .)14, 203, 213, 238, 447, 490, 491 Миллер (Mi Пег R. L.) 398 Мирончиков Е. Т. 491 Митчелл (Mitchell М. Е.) 186 Михельсон (Michelson А ) 324, 522 Ыэттсон (Mattson H. F., Jr.) 153, 2Я4, 521 
ММВннОЙ УКАзАФ~ЛЬ Й амекава (Name kawa Т.) 238, 284 Нг (Ng S. W.) 353 Нейдлер (Nadler М.) 284 Нордстром (Nordstrom А. %.) 284 Нуссбаумер (Nussbaumer Н. J.) 398 Оденв альдер (Odenwal dåã J. P.) 447 Омура (Опшга J. К.) 447 Оппенгейм (Oppenheim А. Ч ) 324 Пааске (Paaske Е.) 447 Паттерсон (Petterson N. J.) 324 Пашбург (Pasch burg R. N.) 324 Питерсон (Peterson W. W.) 14, 153, 186, 193, 238, 491, 521 Поллард (Pollard J. М.) 284 Прейндж (Prange Е.) 153, 186 Препарата (Preparata F. P.) 284, 398 Поллард (Pol lard J. М.) 284 Рабинер (Rabiner L. R.) 324 Рамсей (R umsey Н., Jr.) 522 Редди (Reddy S. М.) 284, 353 Рейдер (Ra der С. М.) 324 Рейффен (Reiffen В.) 552 Рид (Reed 1. S.) 14, 83, 238, 284, 324, 398, 491 Робинсон (Robinson J. P.) 284, 353, 491 Родемич (Rodemich E. R.) 522 Рой-Чоудхури (Ray-Chaudhuri D. К.) 14, 238 Рудолф (Rudolph 1. D.) 186, 491, 552 Сайн (Sain М, К.) 447 Сасковец В. Н. 284 Севидж (Savage J. Е.) 552 Семаков Н. В. 83 Сервейт (Sarwate D. V.) 10, 324, 397, 398 Симада (Shimada М.) 10 Синглтоп (Singleton К. С.) 66, 83 Слепян (Slepian D.) 83 Слоэн (Sloane N. J. А.) 284 Соломон (Solomon G.) 14, 238, 284, 324 Суги яма (Sugi yama Y.) 238, 284 Тейлор (Taylor D. P.) 552 Тиетявяйнен (Tietavainen А.) 83 Токура (Tokura N.) 238 Томас (Thomas L. Н. 397 Торн гейм (ТогпЬеип Ь.) 60 Тралль (Thrall Р. М.) 60 Т р уонг (Truong T. К.) 398 Турин (Тцгуп Р. J.) 521 Тычки (Tu key J. W) 397 Унгербек (Ungerboeck G.) 10, 552 Уэлдон (Weldon Е. J.) 153, 353, 491 Фано (Fano R. М.) 447, 552 Файр (Fire P.) 153 Фергюсон (Ferguson М. J.) 552 Форни (Forney G. D.) 238, 324, 447, 521, 552 Хаккоун (Haccoun D.) 552 Хартман (Hartmann С. R. P.) 324, 552 Хасимото (Hashimoto Т.) 10 Хеллер (Неllег J. А.) 447 Хель герт (Hel gert Н. J.) 284, 324 Хирасава (Hirasawa S.) 238, 284 Хоквингем (Hochquenghem А.) 14, 238 Хунтун (Huntoon Z. МсС.) 522 Хэмминг (Hamming R. W.) 13, 83 Цинк (Zink Th.) 522 Цирлер (Zierler N.) 193, 238 Цфасман М. А. (Tsfasman М. А.) 522 Чамер (Chamer А. S.) 10 Чейз (Chase D. А.) 552 Чень (Chien R. Т.) 186, 238, 284, 353 Чинь (Chen С. L.) 10, 238, 284 Ч ой (Choy D. М.) 284 Шафер (Schafer R. W.) 324 Шевийя (Chevillat Р. R.) 552 Шеннон (Shannon С. Е.) 13, 14 Шенхейм (Ясйопйепп J.) 83 Шольц (Scholtz R. А.) 238 Штайгер (Staiger L.) 447 Эйбрамсон (АЬгатзоп N.) 153 Элайс (Elias P.) 324, 353, 447, 522 Элспас (Elspas В.) 153 Эльгамаль (E1Gamal А.) 10 Эш (Ash R. В.) 447 Юстесеи (Justesen J.) 14, 232, 236, 397 
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Абелева группа 32 Авторегрессионный филь1 р 158 Алгебраическое дои ол иенне 51 Алгоритм Агарвала ‒ Кули 371 ‒ 374 ‒ Берлекэмпа 214 ‒ ‒ рекуррентный 389 ‒ ‒ ускоренный 385 ‒ Берлекзмпа ‒ Месси 208 ‒ 215, 287, 293, 302, 308 ‒ Блвстейна 318 ‒ БПФ 364 ‒ 371 ‒ быстрый для свертки 357 ‒ Винограда для свертки 357 ‒ ‒ БПФ 370 ‒ 381 ‒ Витерби 433 ‒ 438 ‒ Герцеля 322 ‒ Гуда †Тома 365, 370 ‒ декодирования см. Декодирование ‒ деления для многочлепов 90 ‒ ‒ ‒ целых чисел 85 ‒ Евклида для многочленов 92, 224 ‒ ‒ ‒ целых чисел 86 ‒ Кули ‒ ToI0x«366 ‒ 367 ‒ Месси 213 †2 ‒ поиска tro решетке 438 ‒ 446 ‒ Рейдера 318 ‒ 319 ‒ Рида 79 ‒ синдромного декодирования свер- точного кода 423 †4 ‒ стек 549 ‒ Фано 440 ‒ 446 ‒ форни 213 Амплитудная модуляция 525 Асимптотическпй выигрыш кодиров»- ния 545 Ассоциативности закон 32, 38 Аффинная перестановка 457 Аффиц ное подпространство 477 Базис 44 ‒ пополнение 45 Белый ш ум 525 Бит 18 ‒ информационный 25 ‒ проверочный 25 ‒ частота ошибки 528 ‒ энергия 528 Берл. кэмпа алгоритм см. Лл го ритм Берлекэмпа ‒.Чесси алгоритм ся. Ал- горитм Блоковый код 13, 1h Блюстейна алгоритм 318 БПФ-алгор итмы 364 ‒ 371 Буфера перепол нение 444 Б Ч Х-г ра ница 248 БЧХ-коды см. Коды БЧХ Быстрое преобразование Фурье (БПФ) 317 Быстрые алгоритмы свертки 357 ‒ 364 ‒ коды БЧХ 342 ‒ 344 Яайнера ‒ Эша код 418 Варшамова ‒ Гилберта граница см. Граница Гилберта Вектор 42 ‒ внутренний 254 ‒ инцидентности 480 ‒ ортогональный 46 ‒ сигнальный 240 ‒ синдромных многочленов 49 ‒ сложение 42 ‒ умножение на скаляр 42 ‒ частотный 240 Векторное пространство 42 Вероятность декодирования неудачно- го 502 ‒ ‒ ошибочного 502 ‒ ‒ правильного 502 Вес q-a~uvi целого числа 469 ‒ распределение 493 ‒ ‒ в коде Голея 147 ‒ ‒. ‒ ‒ с максимальным расстоя- нием 496 ‒ Хэ.чминга 62 ‒ ‒ кодового слова 65 Винограда алгоритм БПФ 370 ‒ 381 ‒ ‒ ‒ дл я свертки 367 Витерби ал гор итлi 433 ‒ 438 Внешний код 229 Внутренн ий код 229 Выбрасывание 22 Вылавливание ошибок 173 ‒ 179 Вычет квадратичный 148 ‒ no модулю миогочлена 91 ‒ ‒ ‒ целого числа 85 Гауссовской шум 525 Геометр ия евкл идова 476 ‒ конечная 474 ‒ проектнвиая 486 Герцеля алгоритм 322 Ггталса код 284 1'одея код 142 ‒ 147 ‒ ‒ распределение весов 147 Гопаы кол, 269 ‒ 279 
ПРЕДг~~ЕТНЬ~Й УКАЗАТЕЛЬ 667 Гоппы код в узком смысле 269 ‒ ‒ сеиарабельн~И 272 ‒ м ногочлен 26~9 Граница БЧХ 24б ‒ Гилберта 269, 511 ‒ ‒ для сверточных кодов 520 ‒ квадратного корня 150 ‒ Рейггра 137 ‒ Синглтона 66 ‒ Хэмлгинга 26 ‒ Элайса 515 ‒ ‒ для свсрточных кодов 518 Группа 32 ‒ абелева 29, 32 ‒ дважды траизитивная 457 ‒ конечная 32 ‒ перестановок 34 ‒ ‒ аффиниая 456 ‒ порядок 32 ‒ транзитивная 457 ‒ циклическая 36 Гуда ‒ Толгаса алгоритм 365, 370 Двоичный код Голея 142 ‒ 147 '~войной траизитивности свойство 457 Декодер 12 ‒ во временнбй области 308 ‒ ‒ ‒ ‒ для поля характеристики 2 309 ‒ для альтернантного кода 316 ‒ ‒ двоичного OPM-кода 535 ‒ 538 ‒ ‒ кода-произведения 332 ‒ ‒ д-ичного ОРМ-кода 538 ‒ 541 ‒ мажоритарный 449 ‒ ‒ L-шаговый 451 ‒ Меггитта 165 ‒ 172 ‒ на регистрах сдвиг» 162 †1 ‒ неполныЙ 22 ‒ несистематический 1G9 ‒ Питерсона ‒ Горенгтейна ‒ Qup- лера 193 ‒ 201 ‒ полный 22 ‒ с вылавливанием ошибок 173 ‒ 179 ‒ синдромный 164, 423 ‒ 428 ‒ систематический 162 ‒ с обратной связью 413 ‒ частотный для кодов БЧХ 287 исправляющий ошибки и стирания 298--299 основанный на алгорит- ме Евклида 293 схемные реал изаци и 289 двоичных кодов Б Ч Х 30() ‒ ‒ ‒ расширенных кодов Б Ч Х 3()3 ‒ 304 Декодирование альтернаи гных кодов 314 ‒ 317 ‒ быс1рое кодов БЧХ 211 ‒ 221 ‒. ио временили области 303 ‒ 309 ‒ двоичных кодов БЧ Х 221 ‒ 223 ‒ за границей Б'-1 X 309 ‒ 314 ‒ мажоритарное 449 ‒ мя гкое бл око вых кодов 531 ‒ 541 ‒ ‒ спертсчных кодов 541 ‒ 548 ‒ иеполиос 22 ‒ поиском по решетке 438 ‒ 446 ‒ полное 22 ‒ по минимуму расстояния 21, 434 ‒ ‒ обобщсипому минимальному рас- стояиию 534 ‒ 537 ‒ последовательное 548 ‒ 551 ‒ просмотром табл ицы 168 ‒ расширенных кодов PC 299 ‒ 303 ‒ с исгрявленисм г' ошибок 285 ‒ 287 -- --- ‒ ошибок и c'tèðàíèé 294 ‒ 299 ‒ ‒ помошью ал гор итма Евклида 223 †2 Делимость 38 Демодуляция 526 Дерево 406 Ди грамма состояний 506 .Чискветное преобразование Фурье (ДПФ) в поле Галуа 240 быстрое 317, 364‒ 371 GF (р), р ‒ простое чис- ло Ферма 368 ‒ комплексных чисел 240, 265 двумернос 338 ‒ ‒ ‒ полубыстлое 322 Яистаипноиньш профнль 414 Дистрибутивности закои 38, 42 Дл ина кода 17 ‒ ‒ прими гивная 122 ‒ кодового блока 401. 408 ‒ ‒ ограничения 400, 408 ‒ ‒ слова информапионная 401 ‒ преобразования Фурье 240 ‒ свободная 414 ~ПФ г.и. Дискретное преобразование Фурье Древовидный код 399, 401 ‒ ‒ свойства 401 †4 Дуальное подпространство 63 Яуальиый код 63 Лак<~и ассоциативности 32, 38 ‒ дистрибутивности 38, 42 Замкнутости свойство 32, 37 
ЩЯ ЙРЯДМЕТНЫЙ УКАЗАТЕЛЬ Евклида алгоритм 86, 92, 224 Евклидова геометрия 476 Евкл идово-геометр ический код 476, 481 Единица 32 ‒ кольца 39 Ивадаре код 429 Идеал кольца 117 Идемпотент 246 Изоморфизм полей 104 Интерференция межсимвольная 525 Информационная длина кодового слова 401, 408 Информационный бит 25 ‒ кадр 400 ‒ символ 25 Информационное слово 63 Инцидентности вектор 480 Кадр информационных символов 400 ‒ кодового слова 401 Канал 12 ‒ гауссовский 524 ‒ ограниченный по полосе 523 ‒ пропускная способность 13, 528 Квадратично-вычетный код 149 Квадратичный вычет 148 КИО-фильтр 158 Китайские теоремы об остатках 328‒ 332 Класс сопряженных элементов 244 Классификация древовидных кодов 403 Код 13 ‒ альтернантный 264 ‒ ‒ в частотиой области 265 ‒ блоковый 18 ‒ ‒ скользящий 402 ‒ БЧХ 187 ‒ 236 ‒ ‒ быстрый 343 ‒ ‒ непримитивный 192 ‒ ‒ примитивный 187 ‒ ‒ расширенный 258 ‒ Вайнера ‒ Зша 418 ‒ внешний 229 ~ ‒ виутренний 229 ‒ выкалывание 77 ‒ Геталса 284 ‒ Голея 142 ‒ 147 ‒ Гоппы 269 †2 ‒ ‒ в узком смысле 269, 271 ‒ ‒ двоичный 273 ‒ ‒ расширенный 270 ‒ ‒ сепарабельный 272 ‒ двоичный 17 ‒ двумерный 339 ‒ древовидный 399, 40) Код дуальиый 63, 342 ‒ евклидово-геометрический 476, 481 ‒ Ивадаре 429 ‒ каскадный 228 ‒ 232 ‒ катастрофический 412 ‒ квадратично-вычетнь|й 148 †1 ‒ квазисовершенный 74 ‒ Кердока 284 ‒ контролирующий ошибки 13, 18 ‒ линейный 61 ‒ ‒ нумератор весов 499 ‒ многомерный 325 ‒ Нейдлера 284 ‒ некатастрофический 412 ‒ несистематический 66, 402 ‒ Нордстрома ‒ Робинсона 284 ‒ основанный на спектральных мето- дах 239 ‒ 284 ‒ подкод над подполем 77 ‒ Препараты 280 ‒ проективно-геометрический 485 ‒ произведение 326 ‒ 342 ‒ расширенный 75 ‒ решетчатый 401 ‒ Рида ‒ Маллера (РМ) 76 ‒ ‒ порядка r 76 ‒ ‒ ‒ ‒ обобщенный 469 ‒ ‒ ‒ ‒ циклический 465 ‒ Рида ‒ Соломона (PC) 201 ‒ 203 ‒ ‒ непримитивный 475 ‒ ‒ расширенный 254 ‒ самодуальный 63, 521 ‒ сверточный 14, 399 ‒ ‒ исправляющий пакеты ошибок 428 ‒ 433 1 ошибок 414 ‒ ‒ катастрофический 412 ‒ ‒ некатастрофический 412 ‒ с выбрасыванием 77 ‒ ‒ повторением 23 ‒ симплексный 453 ‒ систематический 66, 402 ‒ совершенный 74 ‒ Унгербека 547 ‒ Файра 139 ‒ 142 ‒ Хэмминга 23, 83 ‒ ‒ недвоичный 71, 83 ‒ циклический 112 ‒ 153 ‒ ‒ исправляющий две ошибки ‒ ‒ непримитивный 475 ‒ ‒ примитивный 122 ‒ ‒ расширенный 254 ‒ ‒ укороченный 179 ‒ 183 ‒ ‒ частотное определение 248 ‒ К)стесена 232 ‒ 236 
пгадматный уклзАталь gag Кодер 12 ‒ на регистрах сдвига 162 †1 ‒ несистематический 162 ‒ систематический 162 ‒ ‒ для кодов Гоииы 270 ‒ ‒ частотный для кодов БЧХ 251‒ 253 ‒ ‒ ‒ ‒ кода PC 249 ‒ ‒ ‒ ‒ расширенного кода БЧХ 261 ‒ ‒ ‒ ‒ ‒ ‒ - PC 256 ‒ 257 ‒ ‒ ‒ ‒ циклического кода 247 †2 Кодовая длина блока 408 Кодовое слово канала 12, 18 ‒ ‒ источника 12 Кольцо 29 ‒ 37 ‒ комм утативное 38 ‒ многочленов 88 ‒ 95 ‒ отношений 87 ‒ с единицей 38 ‒ целых чисел 84 ‒ 88 Конструктивное расстояние 188 Контролирующий ошибки код 12 Класс сопряженных элементов 244 Кронекеровское произведение 378 д-ичный потомок 458 Кули †Тыч алгоритм 366 †3 Левый обратный 30 ‒ смежный класс 36 Лидер смежного класса 36, 68 Линейная зависимость 44 ‒ комбинация 44 ‒ независимость 42 ‒ свертка 354 Линейность сверточного кода 402 Линейный код 61 Логнческие цепи 154 ‒ 157 Локатор 134, 457 Локаторный многочлен 249 Лукаса теорема 458 L-шаговое мажоритарное декодирова- ние 451 Мажорнтарное декодирование 449 Матр ица Вандермонда 144, 195 ‒ 196 ‒ вырожденная 50 ‒ главная диагональ 48 ‒ единичная 48 ‒ каноиический ступенчатый вид 52 ‒ квадратная 48 ‒ кронекеровское произведение 378 ‒ невырожденная 50 ‒ нулевое подпростраиство 52 ‒ определитель 62 Матрица порождающая 62 ‒ ‒ в систематическом виде 65 ‒ ‒ из многочленов 409 ‒ пространство столбцов 52 ‒ ‒ строк 52 ‒ транспонированная 50 ‒ элементарная 50 Меггитта декодер 165 ‒ 172 Метрика ребра 544 ‒ Хэмминга 27 Минимальное расстояние 20, 414 Минимальный многочлен 104 Минор 5l Многомериая циклическая свертка 371 Многомерное PI19 338 Многомерные спектральные методы 325 †3 Многомерный код~321 ‒ спектр 339 Многочлен 88 ‒ алгоритм деления 90 ‒ ‒ Евклида 92, 229 ‒ ассоциированный 242 ‒ взаимно простой 89 ‒ взаимный 130 ‒ ‒ к локаторному 212 ‒ Гоииы 269 ‒ значений ошибок 212 ‒ информационный 119, 120 ‒ истинно-локатор ный 290 ‒ кодовый 113, 120 ‒ кольцо 88 ‒ ‒ по модулю приведенного много- члена 95 ‒ корень 94 ‒ локаторов 249 ‒ ‒ ошибок 194 ‒ и стираний 296, 298 ‒ мииимальный 104 ‒ ‒ элемента 122 ‒ непр иводимый 89 ‒ НОД 89 ‒ НОК 89 ‒ ошибок 119, 120 ‒ порождающий 117, 406 ‒ приведенный 88 ‒ примитивный 103 ‒ принятый 119, 120 ‒ проверочный 118 ‒ простой 89 ‒ синдромный 119, 120, 212 ‒ степень 88 Множество ортогональных проверок 449 ‒ согласующихся проверок 449, 451 ‒ сопряжеиных элементов 125 
~7О ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Модулятор/демодулятор 525 Модуляционный алфавит 526 Мягкое декодированис блоковых кодов 531 ‒ 541 ‒ ‒ сверточных кодов 541 ‒ 548 Набор сигналов 526 Невязка 205 Недвоичный код Лэл~минга 71, 83 Неисправляемая конфигурация оши- бок 309 Нейдлера код 284 Некатастрофи ческий код 412 Неполный декодер 22 Неприводимый многочлси 89 Нерекуррентный фильтр 158 Несистематический код 66, 402 Несистематический кодер 162 НОД многочленов 89 ‒ целых ч исел 85 НО К многочленов 90 ‒ целых ч исел 84 Нордстрома=Робинсоча код 234 Нулевое поди рост ра нс1 во матр ицы 52 Нумератор весов 499 Область целостностп 42 Обнаружитель с мягким решением 5'31 Обобщенный код Рада ‒ Маллера (OPM-код) 469 ‒ 475 Обратный элемент 32 ‒ ‒ левый 32 ‒ ‒ правь! й 32 Ограничения (условия) сопряженио- сти 243 Ограниченный по полос~ сигизл 521 ОРИ-код порядка r 469 ‒ ‒ ‒ циклический 469 Ортогональное дополпсиие 47 Ошибок вылав1нваиие 173 ‒ 179 ‒ исправляемая конфигурация 309 ‒ неисправляемая конфигурация 309 ‒ пакет 136, 428 ‒ ‒ циклический 136 ‒ распространение 469 Память перемежа~ощаяся 232 Переполнение буфера 444 Переста иовка 34 ‒ аффинная 456 Питерсона ‒ Горенстей на ‒ Цирлера декодер 193 ‒ 201 Подгруппа 37 ‒ разложение по 37 Подкод над подполем 77 Подпространс гво 45 -- аф~~инное 477 ‒ дуальное 63 ‒ пересечсние 498 ‒ прямая сумма 498 ‒ размерность 45 Поле 39 ‒ изоморфпзм 104 ‒ конечное 40, 95 ‒ 111 ‒ ‒ основанное на кольце мпогочлс- нов 95 ‒ 99 целых чисел 87 ‒ 88 ‒ и р им ит ив иый элемент 99 ‒ разложения многочлена 106 ‒ расширение 41 ‒ характеристика 99, 103 ‒ целые числа 99 Пол ный декодер 22 Пои олнеи ие базиса 45 ‒ кода 77 Порождающая матрица 62, 65 ‒ ‒ из многочленов 408 Порождающий многочлен 117, 120, 406 Порядок группы 32 ‒ элемента 36 Последовательное декодирование 548‒ 551 Потомок д-ичный 458 Преобразоваиие фурье в поле Галуа 240 ‒ быстрые алгоритмы 317, 364 †3 ‒ - ‒ ‒ ‒ 6Р' (р), р ‒ простое число Ферма 368 комплексных чисел 240, 265 ‒ ‒ многомерное 338 Препараты код 280 Приведенный многочлен 88 Примитивная длина 122 Примитивный многочлен 103 ‒ циклический код 122 ‒ элемент 99 Проверка на четность 24 Проверочная матрица 64, 65 ‒ ‒ из многочленов 409 Проверочный бит 25 Проверочный многочлен 118, 120 Проективная геометрия 486 Проективио-геометрический код 485 Произведение кронекеровское 378 Производная формальная 90 Пропускная способность канала 13, 528 Простое число 84 ‒ ‒ Ферма 368 Простой многочлен 89 Пространство векторов 42 
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ б71 Профиль дистанционный 414 Процедура БерМес 389 ‒ Ченя 199 радиус покрытия 74 ‒ сферической упаковки 74 Разложение по подгруппе 37 Размерность 45 Ранг матрицы по столбцам 52 строкам 52 Распределение весов 493 ‒ ‒ в коде Голея 147 с максимальным расстоя- нием 496 ‒ ‒ сверточных кодов 505 ‒ 508 Распространение ошибок 413, 469 ‒ ‒ катастрофическое 413 ‒ ‒ обычное 413 Расстояние евклидово 543 ‒ конструктивное 189 ‒ минимальное 20, 414 ‒ ‒ обобщенное 534 ‒ no Хами игу 20 ‒ свободное 414 Расширение кода 28 ‒ поля 75 Расширенный код БЧХ 258 ‒ ‒ РС 254 Ребра метр ика 544 Регистр сдвига 154 ‒ ‒ разряды 154 ‒ ‒ с лииейной обратной связью 158 Рейгера алгоритм 318 Рейдера граница 137 Рекуррентный фильтр 158 Решетка сверточного кода 505 Решетчатый код 401 Рида алгор итм 79 Самодуальный код 63, 521 Свертка линейная 356 ‒ ‒ метод перекрытия с накопле- нием 356 ‒ циклическая 354 ‒ ‒ алгоритм Агарвала ‒ Кули 365‒ 366 ‒ Винограда 357 ‒ ‒ в суррогатном поле 394 Сверточный код 14, 399 ‒ ‒ исправляющий t ошибок 414 ‒ ‒ ‒ пакеты ошибок 428 ‒ 433 ‒ ‒ катастрофический 412 ‒ ‒ иекатастрофический 412 Свободиая длииа 414 Свободиое расстояиие 414 Свойство двойиой транзитивиости 457 Сепарабельный код Гоапы 272 Сигнал, мощность 524 ‒ ограниченный по полосе 524 ‒ спектр 525 ‒ ширина полосы 525 ‒ энергия 525 Симплексный код 453 Синглтона гран иц» 66 Синдром 25, 70 Сиидромное декодирование блоковых кодов 164 в 184 ‒ ‒ сверточ ны х кодов 423 ‒ 428 Синдромиь~й многочлен 119, 120, 212 Снстематнческ.Я код 66, 402 ‒ кодер 162 Скаляр 39, 88 ‒ умножитель 155 Скаляриое произведение 16 Скорость кода 18, 400 Счс д д- нч иы й 244 Слово, вес Хьмминга 62 ‒ внутренне» 254 ‒ кодовое ист оч и ика 12 ‒ -- канала 12, 18 ‒ принятое Сложение векторнос 42 ‒ по модулю 2 29 Спектральные методы 239 ‒ 324 ‒ ‒ ыиогомерныс 325, 352 Совершенный код 74 Согласующиеся проверки 449 Сопряженный элемент 125 Спектр 240 ‒ двумерный 339 ‒ профильтрованный 265 Спектральная (частотная) компонента 242 Спектральное описание циклических кодов 247 ‒ 253 Спектральный миогочлен 242 Сравнения в кольце чногочленов 91 ‒ ‒ ‒ целых чисел 85 Стандартное расположсние 37 Стирание 22 ‒ помеченное 298 Сумматор по модулю 2 29 Суперкан;и 229 Суррогатное поле 394 Сферы дскоднроваиия 21 Таблица значений синдрома 120 Такт 154 Теорема, алгоритм Берлекзмиа ‒ Месси 208 ‒ ‒ деления 85, 90 ‒ ‒ Евклида 86, 92, 229 
Хорда 244 Хэмминга вес 20 ‒ метрика 27 ‒ расстояние 20 матри- ~7Я ПРЕДМЯТНЫИ УКАЗАТЕЛЬ Теорема, алгоритм Форни 213 ‒ граница БЧХ 248 ‒ ‒ Гилберта 511, 520 ‒ ‒ Рейгера 137 ‒ ‒ Синглтона 66 ‒ ‒ ‒ квадратного корня 150 ‒ Лукаса 458 ‒ Меггитта 265 ‒ о свертке 241 ‒ свойство сдвига 242 Тождество Мак-Вильямс 498 Транзитивная группа перестановок 457 Транспонирование матрицы 50 Троичный канал 237 Удлинение кода 75 Укорочение кода 75 Укороченные циклические коды 179‒ 183 Умножение вектора на скаляр 42 ‒ по модулю 2 29 Умножитель 155 ‒ на скаляр 156 Унгерб-ка код 547 Ускоренное декодирование кодов БЧХ 391 ‒ 393 Ускоренный алгоритм Берлекэмпа‒ Месси 385 Условия (огра ничения) сопряженности 243 Файра код 139 ‒ 142 Фано ал гор итм 440 ‒ 446 Фильтр 157 ‒ автор егрессионный 158 ‒ нерекур рентный 158 ‒ реку ррентный 158 ‒ с конечным импульсным откликом (КИО-фильтр) 158 ‒ ‒ линей ной обр атной связью 157‒ 158 ‒ цифровой 157 Форни алгоритм 213 Формальная производная 90 Характер истика поля 103 Целые числа поля 99 Цепи логические 154 ‒ 157 Uerbs b умножения «а многочлен 159 U,èêëè÷åñêàÿ свертка 354 ‒ ‒ алгоритм Агарвала ‒ Кули 365‒ 366 Винограда 357 ‒ ‒ быстрые ал го р итмы 357 ‒ ‒ в суррогатном поле 394 Циклический код 112 ‒ 153 ‒ ‒ исп равляющи й две ош ибки 134 ‒ ‒ непримитивный 475 ‒ ‒ примитивный 122 ‒ ‒ расширенный 254 ‒ ‒ укороченный 179 ‒ 183 ‒ ‒ частотное определение 248 Частота 240 ‒ граничная 255 ‒ информационная 252 ‒ ошибки на бит 528 ‒ проверочная 248 ‒ свободная 253 ‒ связанная 253 Частотная функция 240 Число взаимно простое 84 ‒ поля целое 99 ‒ простое 84 ‒ составное 84 Шаблон во временной области 264 ‒ в частотной области 264 Ширина полосы сигнала 525 Элемент примитивный 99 ‒ сопряженный 125 Элементарные операции над цами 52 Элементы устройств 155 Энергия сигнала 525 Юстесена код 232 ‒ 236 
ОГЛАВЛЕИИЕ От редактора перевода....................... 5 Предисловие к русскому изданию.................. 7 Предисловие............................ 8 ВВЕДЕНИЕ .......................... 11 1.1. Дискретный канал связи ................. 11 1.2. История кодирования, контролирующего ошибки...... 13 1.3. Приложения........................ 15 1.4. Основные понятия..................... 16 1.5. Простейшие коды ..................... 23 Задачи ............................ 26 ВВЕДЕНИЕ В АЛ ГЕЬРУ................... 28 2.1. 2-поле и 6-10-поле..................... 28 2.2. Группы.......................... 31 2.3. Кольца .......................... 37 2.4. Поля ........................... 39 2.5. Векторные пространства .................. 42 2.6. Линейная алгебра ..................... 48 Задачи ............................ 57 Замечания........................... 60 ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ.............. ° 61 3.1. Структура линейных блоковых кодов............ 61 3.2. Матричное описание линейных блоковых кодов....... 62 3.3. Стандартное расположение................. 65 3.4. Коды' Хэмминга ...................... 71 3.5. Совершенные и квазисовершенные коды.......... 73 3.6. Простые преобразования линейного кода ......... 74 3.7. Коды Рида ‒ Маллера ................... 76 Задачи ............................ 81 Замечания........................... 83 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА .............. 84 4.1. Кольцо целых чисел .................. 84 4.2. Конечные поля, основанные на кольце целых чисел...... 87 4.3. Кольца многочленов.................... 88 4.4. Конечные поля, основанные на кольцах многочленов..... 95 4.5. Примитивные элементы .................. 99 4.6. Структура конечного поля ................. !03 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Замечания . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 ЦИКЛИЧЕСКИЕ КОДЫ.................... 112 5.1. Код с точки зрения расширения поля........... 112 5.2. Полиномпальное описание циклических кодов........ 116 5.3. Минимальные многочлены и сопряжения.......... 121 5.4. Матричное описание циклических кодов.......... 128 5.5. Коды Хэмминга как циклические коды........... 131 5.6. Циклические коды, исправляющие две ошибки....... 134 5.7. Циклические коды, исправляющие пакеты ошибок ..... 136 5.8. Двоичный код Голея.................... 142 5.9. Квадратично-вычетные коды ................ 148 Задачи ............................ 152 Замечания........................... 153 
574 огллвля ни E 6. СХ ЕМНАЯ РЕАЛ ИЗАЦИ Я ЦИКЛ ИЧ ЕСКОГО КОДИРОВАНИЯ 154 6.1. Логические цепи для арифметики конечного поля..... ° 154 6.2. Цифровые фильтры ................. 157 6.3. Кодеры и декодеры на регистрах сдвига........... 162 6.4. Декодер Меггитта ..................... 165 6.5. Вылавливание ошибок................... 173 6.6. Укороченные циклические коды .............. 179 6.7. Декодер Меггитта для кода Голея ............. 183 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Замечания . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 КОДЫ БОУЗА ‒ ЧОУДХУРИ ‒ ХО КВИ Н ГЕМА......... 187 7.1. Определение кодов БЧХ ................. 187 7.2. Декодер Питерсона ‒ Горенстейна ‒ Uíðëåðà ........ 193 7.3. Коды Рида ‒ Соломона .................. 201 7.4. Синтез авторегрессионных фильтров............ 203 7.5. Быстрое декодирование кодов БЧХ............. 211 7.6. Декодирование двоичных кодов БЧХ ........... 221 7.7. Декодирование с помощью алгоритма Евклида....... 223 7.8. Каскадные (гнездовые) коды ............... 228 7.9. Коды Юстесена ...................... 232 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Замечания . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 8. КОДЫ, ОСНОВАННЫЕ НА СПЕКТРАЛЬНЫХ МЕТОДАХ 239 8.1. Преобразования Фурье в поле Галуа............ 239 8.2. Ограничения сопряженности и идемпотенты....,.... 243 8.3. Спектральное описание циклических кодов......... 247 8.4. Расширенные коды Рида ‒ Соломона ............ 254 8.5. Расширенные коды БЧХ ................. 258 8.6. Альтернантные коды.................... 263 8.7. Характеристики альтериантных кодов............ 266 8.8. Коды Гоппы........................ 269 8.9. Коды Препараты...................... 279 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283 Замечания . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 АЛ ГОРИТМЫ, ОСНОВАННЫЕ НА СПЕКТРАЛЬНЫХ МЕТО- ДАХ ............................. 285 9.1. Спектральные методы декодирования ........... 285 9.2. Исправление стираний и ошибок............. 294 9.3. Декодирование расширенных кодов Рида ‒ Соломона.... 299 9.4. Декодирование расширенных кодов БЧ Х......... 303 9.5. Декодирование во временной области........... 304 9.6. Декодирование за границей БЧХ ............. 309 9.7. Декодирование ~альтернантных кодов ........... 314 9.8. Вычисление преобразований в конечных полях....... 317 Задачи............................ 323 Замечания .....................,.... 324 МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ....... 325 10.1. Коды-произведения ................. 325 10.2. Китайские теоремы об остатках....,,....... 328 10.3. Декодирование кода-произведения ............ 33> 10.4. Многомерные спектры ......,.......... 338 10.5. Быстрые коды БЧХ........,.......... 342 10.6. Декодирование многомерных кодов . . . . . . . . . . . . 346 
огллвлкния 575 10.7. Дл~~~~е коды Hag MaabIMH rroasMH............ 347 Задачи............................ 352 Замечания .......................... 353 11. БЫСТРЫЕ АЛГОРИТМЫ................... 354 11.1. Линейная свертка и циклическая свертка......... 354 11.2. Быстрые алгоритмы свертки ............... 357 11.3. Быстрые преобразования Фурье............. 364 11.4. Алгоритмы Агарвала ‒ Кули вычисления сверток.... 371 11.5. Алгоритм Винограда быстрого нреобразования Фурье... 374 11.6. Ускоренный алгоритм Верлекэмпа ‒ Мессп ........ 381 11.7. Рекуррентньш алгоритм Верлекэмпа ‒ Месси........ 387 11.8. Ускоренное декодирование кодов ВЧХ.......... 391 11.9. Свертка в суррогатных полях .............. 394 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396 Замечания .......................... 397 12. СВЕРТОЧНЫЕ КОДЫ .................... 399 12.1. Древовидные и решетчатые коды............. 399 12.2. Описание сверточных кодов с помощью многочленов..... 406 12.3. Исправление ошибок; понятия расстояния........ 412 12.4. Матричное описание сверточных кодов.......... 415 12.5. Некоторые простые сверточные коды........... 418 12.6. Алгоритмы синдромного декодирования.......... 423 12.7. Сверточные коды для исправления пакетов ошибок .... 428 12.8. Алгоритм декодирования Витерби............ 433 12.9. Алгоритмы поиска по решетке.............. 438 Задачи............................ 446 Замечани я .......................... 447 1З. КОДЫ И АЛГОРИТМЫ ДЛЯ ДЕКОДИРОВАНИЯ МА)КОРИ- ТАРНЫМ МЕТОДОМ..................... 448 13.1. Декодирование мажоритарным методом.......... 448 13.2. Схемы мажоритарного декодирования........... 452 13.3. Аффинные перестановки для циклических кодов...... 456 13.4. Циклические коды, основанные на перестановках..... 461 13.5. Сверточные коды с мажоритарным декодированием..... 465 13.6. Обобщенные коды Рида ‒ Маллера ............ 469 13.7. Евклидово-геометрические коды ............. 475 13.8. Проективно-геометрические коды ............ 485 Задачи............................ 490 Замечани я ......................... 490 1~. КОМЛОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОНТРОЛИРУЮЩИХ ОШИБКИ КОДОВ....................... 492 14.1. Распределения весов . . . . . . . . . . . . . . . . . . . 492 14.2. Вероятности ошибочного декодирования н неудачного декоди- рования . . . . . . . . . . . . . . . . . . . . . . . ° . 502 14.3. Распределение весов сверточных кодов.......... 505 14.4. Границы минимального расстояния для блоковых кодов... 508 14.5. Границы минимального расстояния для сверточных кодов 516 Задачи ........................... 520 Замечания ........... ° .. °........... 521 
576 ОГЛАВЛЕН ИЕ ЭФФЕКТИВНАЯ ПЕРЕДАЧА СИГНАЛОВ ПО ЗАШУМЛЕН- Н ЫМ КАНАЛАМ ...................... 523 15.1. Ограниченный ио полосе гауссовский канал........ 524 15.2. Энергия на бит и частота ошибок на бит......... 527 15.3. Мягкое декодирование блокозь1х кодов......... 531 15.4. Мягкое декодирование сверточных кодов......... 541 15.5. Последовательное декодирование . . . . . . . . . . . . . 548 Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551 Замечания . . . . . . . . . . . . . . . . . . . . . . . . . . 552 Литература ............................ 553 Именной указатель ........................ 564 Предметный указатель .................. -... 566 УВАЖАЕМЫЙ ЧИТАТЕЛЬ! Ваши замечания о содержании книги, ее оформлении, качестве перевода и другие просим присылать по адресу: 129820, Москва, И-110, ГСП, 1-й Рижский пер., д. 2, издательство «~Мир». Ричард Э. Блейхут ТЕОРИЯ И ПРАКТИКА КОДОВ, КОНТРОЛИ РУЮЩИХ ОШ ИБКИ Ст. научи. редактор Г. М. Ильичева Мл. научи. редакторы: P. И. Пяткина, Л. А. Королева Художник Л. М. Муратова Х удожественыый редактор В. И. Ш аповалов Технический редактор В. П. Сизова Корректор В. С. Соколов ИБ № 5595 Сдано в ыабор 3.0-,.85. Подписано к печати 13.02.86. Формат 60Х 90'/~ ° Бумага типографская № 1.Печать высокая. Гарнитура литературная. Объем бум. л. 18,00. Усл. печ. л. 36,00. Усл. кр.-отт. 36,00. Уч.-изд. л. 32,21. Изд. № 1/4310. Тираж 10000 экз. 3ах. 247. lie~a 2 Р. 60 к. ИЗДАТЕЛЬСТВО «МИР» 129820, ГСП, Москва, И-110, 1-й Рижский пер., 2. Ленинградская типография № 6 ордена Трудового Красного Знамени Ленинградского объединения «Техынческая книга» им. Евгении Соколовой Союзполиграфпрома при Государственном комитете СССР по делам издательств, полиграфии и книжной торговли. 193144, г. Ленинград, ул. Моисеенко, 10.