Текст
                    THEORY AND
PRACTICE OF
ERROR CONTROL
CODES
RICHARD E. BLAHUT
ADDISON-WESLEY PUBLISHING COMPANY
READING, MASSACHUSETTS
MENLO PARK, CALIFORNIA • LONDON
AMSTERDAM - DON MILLS, ONTARIO
SYDNEY
REPRINTED WITH CORRECTION
1084

Р. БЛЕЙХУТ ТЕОРИЯ И ПРАКТИКА КОДОВ, КОНТРОЛИРУЮЩИХ ОШИБКИ ПЕРЕВОД С АНГЛИЙСКОГО И. И. ГРУШКО и В. М. БЛИНОВСКОГО ПОД РЕДАКЦИЕЙ К. Ш. ЗИГАНГИРОВА МОСКВА „МИР“ 1986
ББК 32.811 Б68 УДК 519.725 Блейхут Р. Б68 Теория и практика кодов, контролирующих ошибки: Пер. с англ. — М.: Мир, 1986. — 576 с., ил. непосредственно Фурье 2—86, ч. 1 1502000000—183 041 (01)86 ББК 32.811 Copyright © 1983 by Addison-Wesley Publishing Company, Inc. © перевод на русский язык, «Мир», 1986
ОТ РЕДАКТОРА ПЕРЕВОДА Книга Р. Блейхута посвящена разделу науки, за которым традици- онно закреплено название «теория кодов, исправляющих ошибки». В последнее время, однако, в зарубежной литературе все чаще используется более точный термин «коды, контролирующие ошибки», поскольку эта теория изучает не только исправление, но и обнаружение ошибок. В отличие от традиционных курсов теории кодирования, адресованных в первую очередь специали- стам в области передачи информации, данная книга ориентиро- вана на проектировщиков цифровых комплексов обработки дан- ных независимо от того, для чего предназначены эти комплексы: для передачи данных, для их хранения или для других операций над ними. Это условие наложило свой отпечаток на структуру книги. В ней почти не рассматриваются вопросы оптимальности предла- гаемых методов кодирования, а вопросы их схемной реализации исследуются более подробно, чем это обычно принято. Хотя книга в первую очередь адресована читателю с инженерным образова- нием и формально не требует от него предварительного знакомства с высшей алгеброй, ее математический уровень достаточно высок (отметим, что в начале книги имеются специальные главы, изла- гающие сведения из алгебры). Центральное место в книге занимает спектральная теория циклических кодов, в развитие которой автор внес существенный вклад. Достаточно отметить модификацию автором процедуры Бер- лекэмпа—Месси, позволившую сократить число операций декоди- рования с О (л2) до О (n log п). Эта теория излагается в гл. 8 - 11 и частично в гл. 13 на основе дискретного преобразования Фурье (ДПф) в конечных полях. Хотя связь ДПФ с циклическими ко- дами была известна и ранее, Р. Блейхут был первым, кто заметил большие потенциальные возможности такого подхода. Этот под- ход не только позволяет упростить процедуру декодирования, но и способствует более глубокому пониманию теории циклических кодов. В основном книга посвящена теории блоковых кодов, и автор излагает ее превосходно. Теория сверточных кодов излагается
6 от РЕДАКТОРА ПЕРЕВОДА несколько бегло и не всегда достаточно четко. В частности, ми- нимальное расстояние 'сверточных кодов, введенное в гл. 12, мало связано с реальными характеристиками этих кодов, а их теоретическое описание неточно. Некоторые неточности содержит и гл. 15, посвященная связи модуляции и кодирования. В списке литературы неполно отражен вклад в теорию коди- рования советских ученых, так что в отдельных случаях перевод- чики (гл. 1, 2, 4—6 в 8—15 переведены И. И. Грушко, гл. 3 и 7 — В. М. Блиновским) сочли необходимым дать соответству- ющие комментарии. При переводе учтены исправления, внесенные автором в первоначальный вариант книги, и исправлены заме- ченные опечатки. Переводчики и редактор выражают признательность автору книги за сотрудничество в процессе перевода книги, в част- ности за любезно присланное им исправленное ее издание. Соответствующие изменения внесены в перевод в корректуре. /С. Ш. Зигангиров
ПРЕДИСЛОВИЕ К РУССКОМУ ИЗДАНИЙ) Автор переведенной на иностранный язык книги чувствует себя как отец, сын которого покидает дом, чтобы начать собствен- ную жизнь: к чувству гордости примешивается сознание, что книга начинает новую жизнь, которую ты никогда не узнаешь. Русское издание готовилось специалистами высокого класса: редактором Камилем Зигангировым и переводчиками Инной Гру- шко и Владимиром Блиновским. Я очень благодарен им за боль- шую работу по переводу книги «Теория и практика кодов, контро- лирующих ошибки» на русский язык. Используя возможность, предоставленную мне издательством «Мир», я обращаюсь к советскому читателю. Он несомненно за- метит, что книга адресована как инженерам, так и математикам, работающим в области приложений, и что в ней декодерам и ал- горитмам декодирования уделяется гораздо больше внимания, чем в других книгах. Это связано отчасти с моими научными интере- сами и отчасти с широким распространением декодеров, исправ- ляющих ошибки, за последнее десятилетие. Найти хороший алго- ритм декодирования сейчас так же важно, как и найти хороший код. Читатель обнаружит также, что в книге недостаточно отра- жен крупный вклад советских исследователей в эту область. Ча- стично это объясняется моей неосведомленностью, частично тем, что во многих советских работах принят более высокий уровень математической строгости, чем принятый в данной книге, и, нако- нец, тем, что советские исследователи не столь интенсивно ра- ботают в области алгоритмов декодирования, которая интересует меня больше всего. Я хотел бы поблагодарить переводчиков п редактора за ис- правление многочисленных ошибок, которые они нашли, и при- нимаю ответственность за оставшиеся ошибки. Р. Э. Блейхут
ОДНИ ЛИШЬ СЛОВА—это ничто — девиз Королевского общества ПРЕДИСЛОВИЕ В настоящее время невозможно представить себе инженера- конструктора цифровых систем, который бы не был знаком с ко- дами, контролирующими ошибки. Сегодняшний интерес к этому предмету резко контрастирует с тем, что в прежние годы такие коды считались практически применимыми лишь в самых дорогих системах связи. Необходимость в контроле ошибок сейчас так велика, а возможности электроники столь развиты, что интерес к этой тематике непрерывно растет. Умение применять кодирова- ние стало важным для любого специалиста, создающего современ- ные системы связи или большие цифровые системы, и это умение ценится все больше. По этой теме написаны превосходные книги, но в них основное внимание уделяется математическим исследо- вательским аспектам. Традиционно превалируют вопросы, свя- занные с построением лучших кодов. Хотя эти вопросы важны для дальнейшего развития теории, конструктору в принципе инте- ресно лишь то, что он может построить. Эта книга написана для студентов и инженеров, которые ин- тересуются кодами, контролирующими ошибки, и намереваются использовать их в различных приложениях. Сказав это, мы дол- жны, однако, также сказать, что отделить практику от теории невозможно. Не располагая необходимой математической базой и опираясь лишь на поверхностное знакомство с материалом, конструктор не сможет удовлетворительно работать, хотя ему нет необходимости столь же мастерски владеть всеми аспектами теории, как исследователю. Книга возникла из конспекта курса лекций, посвященного кон- тролирующим ошибки кодам, который автор много раз читал как в Кориеллском университете, так и в корпорации ИБМ. От слуша- телей этих лекций нельзя было ожидать какой-либо подготовки по современной алгебре. Поэтому одно из требований к курсу со- стояло в изложении необходимых основ алгебры, которое обеспе- чило бы достаточную математическую строгость, и в то же время умещалось в считанное число лекционных часов. Учитывая это ограничение, я попытался включить в книгу все те основы ал- гебры, которые требуются для введения в теорию коптролирую-
ПРЕДИСЛОВИЕ 9 щих ошибки кодов и позволяют проводить доказательства или убедительную аргументацию. Это тот минимум, без которого ин- женер не может быть уверен в своих построениях. На протяжении тех лет, что читался курс, аудитория измени- лась: сначала это были аспиранты и студенты старших курсов, а затем появились и студенты младших курсов; это заставило за- ботиться о более простых объяснениях, излагавшихся, по возмож- ности, на языке, попятном инженерам. Математические рассужде- ния проводились на возможно более низком уровне, хотя в неко- торых вопросах уровень оставался достаточно высоким. Материал излагается в форме «теорема—доказательство», хотя в инженерной литературе чаще используется описательная форма. Принятая нами форма позволяет читателю при желании пропу- скать доказательства и выделять необходимые главные факты. Кроме того, те, кто заботится о строгости, могут разбить теорию на легче усваиваемые части. Я пытался выдвинуть на первый план преобразование Фурье в конечных полях, так как оно интуитивно понятнее инженерам и быстро усваивается людьми с техническим образованием. При- менение преобразования Фурье проясняет также тот факт, что теория контролирующих ошибки кодов является одной из ветвей теории дискретной обработки сигналов. Хотя для студентов ин- женерных специальностей предпочтительнее другой способ изло- жения того же круга идей, который основан па использовании многочленов Мэттсона—Соломона, такое изложение вызвало бы необходимость изучать новый для них язык в то время, как они уже владеют одним, столь же употребительным. По возможности подчеркивалась тесная связь теории кодов, контролирующих ошибки, и теории обработки дискретных сигна- лов. Во многих работах эта связь оставалась невыявленной; объяснение заключается в том, что данные дисциплины развива- лись совершенно различными путями: одна разрабатывалась в основном алгебраистами, а другая — в основном инженерами. Однако, если не считать различия в числовых системах — поле Галуа в одном случае и поле комплексных чисел в другом — ис- пользуемые методы аналогичны. Обе дисциплины основаны на преобразовании Фурье, фильтрах с конечным импульсным откли- ком, циклических свертках и соотношениях между свойствами последовательностей во временной и частотной областях. В книге на первый план выдвигается реализация кодеров и декодеров с помощью цепей, содержащих регистры сдвигов, причем по возможности используется техническая терминология, принятая в теории фильтров. Для максимально возможной яс- ности изложения описывается построение регистров сдвига и часто выявляются модификации, позволяющие уменьшить число эле- ментов устройства. Даже в тех случаях, когда описывается про-
10 ПРЕДИСЛОВИЕ граммная реализация кодеров и декодеров, приводятся некоторые соображения о том, как использование регистров сдвига может упростить программу. Моя точка зрения состоит в том, что окон- чательным критерием качества кода или алгоритма является сто- имость кодера и декодера. Инженер не будет интересоваться кодами с наибольшим минимальным расстоянием, если неизвестны хо- рошие алгоритмы их декодирования. Хорошие коды нуждаются в хорошем декодере, а хорошие алгоритмы декодирования найти трудно. По-видимому, поиск теоретиками новых кодов, допуска- ющих использование известных алгоритмов декодирования, мо- жет оказаться более плодотворным, нежели поиск новых алгорит- мов декодирования для известных кодов. При выборе обозначений и терминологии всегда возникает вопрос, использовать ли традиционные или ввести новые, более удобные. В выборе обозначений предпочтение отдается традици- онным, хотя в некоторых случаях я считал, что важнее добиться методологической ясности и согласованности. Например, при обсуждении сверточных кодов я выбрал обозначения, подчерки- вающие их аналогию с блоковыми кодами, хотя иногда они от- личаются от обозначений, принятых в литературе по сверточным кодам. Благодарности. Было бы очень трудно перечислить все беседы и источники, оказавшие существенное влияние на эту книгу: любой список оказался бы неполным, и поэтому я упомяну лишь главные. Профессор Тоби Бергер был моим другом и консультантом на протяжении всех лет работы над книгой- его советы всегда были очень полезны. Профес- сор Д. Л Сервейт внимательно прочитал большую часть рукописи и спас меня от многих ошибок и неточностей. Полезные советы и критические замечания сделали также К- Л. Чинь, А. ЭльГамаль, М. Р. Бест, Н. М. Блечман, Т. Ха- симото, К. Кобаяси, М. Симада, Г. Унгербёк, В. Вандеркулк, С. Виноград и С. К- Вест. Книги и статьи, прямо или косвенно оказавшие существенное влияние на нашу книгу, перечислены в списке литературы; список статей, ока- завших меньшее влияние, был бы необъятным. Я должен выразить признательность корпорации ИБМ за поддержку при подготовке этой книги н Кпрнеллскому университету за предостааление лекцион- ных помещений, в которых ее текст прошел апробацию. Текст книги шлифовалей также в процессе лекций, прочитанных в Технологическом институте Южного Китая. Наиболее важное участие в подготовке книги приняла моя жена Барбара. Опа помогала и морально поддерживала меня, разделяя все трудное™ и удачи. Наконец, эта книга посвящается Эдварду Дж. Блейхуту, Эндрю С. Чамеру и Карлу А. Краченфелсу; частицы их душ живут в ней.
ГЛАВА 1 ВВЕДЕНИЕ Обработка дискретных сигналов является инженерной дисци- плиной со многими разветвлениями. Сюда относится и теория кодов, контролирующих ошибки, — отдельный предмет со сво- ими собственными задачами и собственными арифметическими си- стемами. Однако наиболее эффективными из этих арифметических систем являются известные операции обработки сигналов, в том числе свертки, преобразования Фурье, фильтры и регистры сдви- гов. Теория кодов, контролирующих ошибки, - предмет со своей собственной историей и своими прелестями; его различные грани смыкаются со многими другими дисциплинами. Рассматриваемая в теории кодов, контролирующих ошибки, техническая задача состоит в защите цифровых данных от появ- ляющихся в процессе передачи ио каналам связи ошибок. Многие хитроумные способы защиты от ошибок, развитые на основе бо- гатой математической теории, превратились в зрелые важные ин- женерные методы с многочисленными приложениями. Большие объемы данных в современных системах связи и хранения данных, большинство из которых очень чувствительно к ошибкам, приводят к необходимости контроля ошибок. Зрелая теория хороших кодов и хороших кодовых алгоритмов способна удовлетворить эту потребность. Кроме того, быстрые успехи в создании интегральных цифровых схем открывают возмож- ность реализации этих алгоритмов. 1.1. ДИСКРЕТНЫЙ КАНАЛ, СВЯЗИ Система связи соединяет источник данных с получателем данных посредством канала; примерами каналов являются микроволновые линии, коаксиальные кабели, телефонные сети и даже магнитные ленты. При проектировании системы связи разрабатываются устройства, подготавливающие вход и обрабатывающие выход каналов. Уже стало традицией подразделять основные функции
12 ГЛ. Г. ВВЕДЕНИЕ цифровой системы связи так, как показано на блок-схеме на рис. 1.1. Данные, поступающие в систему связи от источника данных, прежде всего обрабатываются кодером источника, предназначен- ным для более компактного представления данных источника. Это промежуточное представление является последовательностью символов, которая называется кодовым словом источника. Затем данные обрабатываются кодером канала, преобразующим после- довательность символов кодового слова источника в другую по- следовательность символов, называемую кодовым словом канала. Кодовое слово канала представляет собой новую, более длинную последовательность с большей, чем у кодового источника, избы- точностью. Каждый символ кодового слова капала может быть представлен битом или, возможно, группой битов. Далее модулятор преобразует каждый символ кодового слова канала в соответствующий аналоговый символ из конечного мно- жества допустимых аналоговых символов. Последовательность аналоговых символов передается по каналу. Так как в канале возникают различного типа шумы, искажения и интерференция, то выход канала отличается от его входа. Демодулятор преобра- зует каждый полученный на выходе канала сигнал в последова- тельность символов одного из кодовых слов канала. Каждый при- нятый символ является лучшей оценкой переданного символа, но из-за шума в канале демодулятор делает ошибки. Демодулиро-
1.8. ИСТОРИЯ 13 ванная последовательность символов называется принятым сло- вом. Из-за ошибок символы принятого слова не всегда соответст- вуют символам кодового слова канала. Декодер канала использует избыточность кодового слова канала для того, чтобы исправить ошибки в принятом слове, и затем выдает оценку кодового слова источника. Если все ошибки исправлены, то оценка кодового слова источника совпадает с ис- ходным кодовым словом источника. Декодер источника выполняет операцию, обратную операции кодера источника, результат которой поступает к получателю. В данной книге рассматривается только конструкция кодера и декодера канала — дисциплина, известная как кодирование, контролирующее ошибки. Сжатие данных или функции более компактной записи данных, выполняемые кодером и декодером источника, а также устройства модулятора и демодулятора в ней не рассматриваются. Кодер и декодер канала будут в дальнейшем называться просто кодером и декодером соответственно. 1.2, ИСТОРИЯ КОДИРОВАНИЯ, КОНТРОЛИРУЮЩЕГО ОШИБКИ История кодирования, контролирующего ошибки, началась в 1948 г. публикацией знаменитой статьи Клода Шеннона. Шен- нон показал, что с каждым каналом связано измеряемое в битах в секунду и называемое пропускной способностью канала число С, имеющее следующее значение. Если требуемая от системы связи скорость передачи информации R (измеряемая в битах в секунду) меньше С, то, используя коды, контролирующие ошибки, для данного канала можно построить такую систему связи, что веро- ятность ошибки на выходе будет сколь угодно мала. В самом деле, из шенноновской теории информации следует тот важный вывод, что построение слишком хороших каналов является расточитель- ством; экономически выгоднее использовать кодирование. Шен- нон, однако, не указал, как найти подходящие коды, а лишь до- казал их существование. В пятидесятые годы много усилий было потрачено на попытки построения в явном виде классов кодов, позволяющих получить обещанную сколь угодно малую вероят- ность ошибки, но результаты были скудными. В следующем деся- тилетии решению этой увлекательной задачи уделялось меньше внимания; вместо этого исследователи кодов предприняли длитель- ную атаку по двум основным направлениям. Первое направление носило чисто алгебраический характер и преимущественно рассматривало блоковые коды. Первые блоко- вые коды были введены в I960 г., когда Хэмминг описал класс блоковых кодов, исправляющих одиночные ошибки. Коды Хэм- минга были разочаровывающе слабы по сравнению, с обещанными
14 rj|. •- ВВЕДЕНИЕ Шенноном гораздо более сильными кодами. Несмотря на усилен- ные исследования, до конца пятидесятых годов не было построено лучшего класса кодов. В течение этого периода без какой-либо общей теории были найдены многие коды с малой длиной блока. Основной сдвиг произошел, когда Боуз и Рой-Чоудхури [I960] и Хоквингем [19591 нашли большой класс кодов, исправляющих кратные ошибки (коды БЧХ), а Рид и Соломон [I960] нашли свя- занный с кодами БЧХ класс кодов для недвоичных каналов. Хотя эти коды остаются среди наиболее важных классов кодов, общая теория блоковых кодов, контролирующих ошибки, с тех пор успешно развивалась, и время от времени удавалось открывать новые коды. Открытие кодов БЧХ привело к поиску практических методов построения жестких или мягких реализаций кодеров и декоде- ров. Первый хороший алгоритм был предложен Питерсоном. Впоследствии мощный алгоритм выполнения описанных Питерсо- ном вычислений был предложен Берлекэмпом и Месси, и их реа- лизация вошла в практику как только стала доступной новая цифровая техника. Второе направление исследований по кодированию носило скорее вероятностный характер. Ранние исследования были свя- заны с оценками вероятностей ошибки для лучших семейств блоковых кодов, несмотря на то что эти лучшие коды не были из- вестны. С этими исследованиями были связаны попытки понять кодирование и декодирование с вероятностной точки зрения, и эти попытки привели к появлению последовательного декодиро- вания. В последовательном декодировании вводится класс не- блоковых кодов бесконечной длины, которые можно описать дере- вом и декодировать с помощью алгоритмов поиска по дереву. 11аиболее полезными древовидными кодами являются коды с тон- кой структурой, известные под названием сверточных кодов. Эти коды можно генерировать с помощью цепей линейных регист- ров сдвига, выполняющих операцию свертки информационной последовательности. В конце 50-х годов для сверточных кодов были успешно разработаны алгоритмы последовательного декодирова- ния. Интересно, что наиболее простой алгоритм декодирования — алгоритм Витерби - не был разработан для этих кодов до 1967 г. Применительно к сверточным кодам умеренной сложности алго- ритм Витерби пользуется широкой популярностью, но для более мощных сверточных кодов он не практичен. В 70-х годах эти два направления исследований опять стали переплетаться. Теорией сверточных кодов занялись алгебраисты, представившие ее в новом свете. В теории блоковых кодов за это время удалось приблизиться к кодам, обещанным Шенноном: были предложены две различные схемы кодирования (одна Юсте- сеном, а другая Гоппой). позволяющие строить семейства кодов,
1.8. ПРИЛОЖЕНИЯ 16 которые одновременно могут иметь очень большую длину блока и очень хорошие характеристики. Обе схемы, однако, имеют пра- ктические ограничения и надо ждать дальнейших успехов. Л\е- жду тем к началу 80-х годов кодеры и декодеры начали появляться в новейших конструкциях цифровых систем связи и цифровых систем памяти. 1.3. ПРИЛОЖЕНИЯ Так как развитие кодов, контролирующих ошибки, первоначально стимулировалось задачами связи, терминология теории кодиро- вания проистекает из теории связи. Построенные коды, однако, имеют много других приложений. Коды используются для защиты данных в памяти вычислительных устройств и на цифровых лен- тах и дисках, а также для защиты от неправильного функциони- рования или шумов в цифровых логических цепях. Коды исполь- зуются также для сжатия данных, и теория кодирования тесно связана с теорией планирования статистических экспериментов. Приложения к задачам связи носят самый различный характер. Двоичные данные обычно передаются между’’ вычислительными терминалами, между летательными аппаратами и между спутни- ками. Коды могут быть использованы для получения надежной связи даже тогда, когда мощность принимаемого сигнала близка к мощности тепловых шумов. И поскольку электромагнитный спектр все больше и больше заполняется создаваемым челове- ком сигналами, коды, контролирующие ошибки, становятся еще более важным инструментом, так как позволяют линиям связи надежно работать при наличии интерференции. В военных при- ложениях такие коды часто используются для защиты против намеренно организованной противником интерференции. Во многих системах связи имеется ограничение на передава- емую мощность. Например, в системах ретрансляции через спут- ники увеличение мощности обходится очень дорого. Коды, контро- лирующие ошибки, являются замечательным средством снижения необходимой мощности, так как с их помощью можно правильно восстановить полученные ослабленные сообщения. Передача в вычислительных системах обычно чувствительна даже к очень малой доле ошибок, так как одиночная ошибка может нарушить программу вычисления. Кодирование, контроли- рующее ошибки, становится в этих приложениях весьма важным. Для некоторых носителей вычислительной памяти (магнитных лент, например) использование кодов, контролирующих ошибки, позволяет добиться более плотной упаковки битов. Другим типом систем связи является система с многими поль- зователями и разделением по времени, в которой каждому из данного числа пользователей заранее предписаны некоторые вре-
16 гл. I. ВВЕДЕНИЕ менные окна (интервалы), в которых ему разрешается передача. Длинные двоичные сообщения разделяются на пакеты, и один пакет передается в отведенное временное окно. Из-за нарушения синхронизации или дисциплины обслуживания некоторые пакеты могут быть утеряны. Подходящие коды, контролирующие ошибки, защищают от таких потерь, так как утерянные пакеты можно вос- становить по известным пакетам. Связь важна также внутри одной системы. В современных сложных цифровых системах могут возникнуть большие потоки данных между подсистемами. Цифровые автопилоты, цифровые системы управления процессами, цифровые переключательные системы и цифровые системы обработки радарных сигналов — все это системы, содержащие большие массивы цифровых данных, которые должны быть распределены между многими взаимно связанными подсистемами. Эти данные должны быть переданы или по специально предназначенным для этого линиям, или посредст- вом более сложных систем с шинами передачи данных и с разде- лением по времени. В любом случае важную роль играют методы кодирования, контролирующего ошибки, так как они позволяют гарантировать соответствующие характеристики. Со временем коды, контролирующие ошибки, и устройства кодирования и декодирования достигли такого уровня развития, на котором они могут обрабатывать большие массивы данных. Можно ожидать, что в системах связи будущего методы кодиро- вания, контролирующего ошибки, будут играть центральную роль. Представляется правдоподобным, что в будущем грамофон- ные пластинки, ленты и телевизионные сигналы будут содержать цифровые сообщения, защищенные кодами, контролирующими ошибки. Влияние повреждений пластинки или интерференции в принятом сигнале может быть полностью устранено кодирова- нием, если число ошибок не выходит за пределы возможностей заложенного в конструкцию кода, контролирующего ошибки. 1.4. ОСНОВНЫЕ ПОНЯТИЯ ' Предмет кодирования, контролирующего ошибки, одновременно прост и сложен. Он прост в том смысле, что его задачи легко объяснить любому технически грамотному человеку, и сложен в том смысле, что для того, чтобы получить решение задачи (и даже частное ее решение), потребуется весь объем данной книги, причем изложению должно предшествовать отступление, посвя- щенное некоторым разделам современной алгебры. Предположим, что все представляющие интерес данные могут быть представлены в виде двоичной (закодированной двоично) информации, т. е. в виде последовательности нулей и единиц. Эта двоичная информация подлежит передаче по каналу, подвержен-
I 4. ОСНОВНЫЕ ПОНЯТИЯ 17 ному случайным ошибкам. Задача кодирования состоит в таком добавлении к информационным символам дополнительных сим- волов, чтобы на приемнике эти искажения могли быть найдены и исправлены. Иначе говоря, последовательность символов данйых представляется в виде некоторой более длинной последовательнос- ти символов, избыточность которой достаточна для защиты данных. Двоичный код мощности Л! и длины п представляет собой множество из М двоичных слов длины п, называемых кодовыми словами. Обычно М - 2*. где k — некоторое целое число; такой код называется двоичным (п, £)-кодом. Например, можно построить следующий код: 10 10 1 т 10 0 10 9 ~ 0 1110 11111 Это очень бедный (и очень маленький) код с /И = 4 н л — 5, но он удовлетворяет приведенному выше определению. Данный код можно использовать для представления 2-битовых двоичных чисел, используя следующее (произвольное) соответствие: 00 — 10101, 01 ~ 10010, 10 — ОШО, II — 11111. Если получено одно из четырех 5-битовых кодовых слов, то по- лагаем, что соответствующие ему два бита являются правильной информацией. Если произошла ошибка, то мы получим 5-битовое слово, отличающееся от кодовых слов. Тогда попытаемся найти наиболее вероятно переданное слово и возьмем его в качестве оцен- ки исходных двух битов информации. Например, если мы при- няли 01100, то полагаем, что передавалось 01110, и, следовательно, информационное слово равнялось 10. В приведенном примере код не является хорошим, так как он не позволяет исправлять много конфигураций ошибок. Жела- тельно выбирать коды так, чтобы каждое кодовое слово по воз- можности больше отличалось от каждого другого кодового слова;в частности, это желательно в том случае, когда длина блока велика. Первой целью дайной книги является построение хороших кодов. Хотя с внешней стороны эта задача может показаться про- стой, на самом деле она чрезвычайно трудна, и многие хорошие коды пока еще не найдены. По неопытности может показаться, что достаточно определить требования к хорошему коду а затем предпринять машинный поиск
18 ГЛ. I. ВВЕДЕНИЕ по множеству всех возможных кодов. Но сколько кодов существует для двнных п и Л? Каждое кодовое слово представляет собой по- следовательность п двоичных символов, и всего имеется 2fe таких слов; следовательно, код описывается п-2к двоичными символами. Всего существует 2"'-'1 способов выбора этих двоичных симво- лов; следовательно, число различных (л, /г)-кодов равно 2",2fe- Конечно, очень многие из этих кодов не представляют интереса (как в случае, когда два кодовых слова равны), так что надо либо проверять это по ходу поиска, либо развить некоторую теорию, позволяющую исключить такие коды. Например, выберем (n, k) =•- (40, 20) — код, весьма умерен- ный по современным стандартам- Тогда число таких кодов пре- взойдет величину IO10"00 000 — невообразимо большое число! Сле- довательно, неорганизованные процедуры поиска бессильны. В общем случае блоковые коды определяются над произволь- ным конечным алфавитом, скажем над алфавитом из q символов |0, I, 2, .... q— 1|. На первый взгляд введение алфавитов, от- личных от двоичного, может показаться излишним обобщением. Из соображений эффективности, однако, многие современные ка- налы являются недвоичными, и коды для этих каналов должны быть недвоичными. На самом деле коды для недвоичпых каналов часто оказываются достаточно хорошими, и сам этот факт может служить причиной для использования лсдвоичных каналов. Дво- ичные данные источника тривиальным образом представляются символами 9-ичного алфавита, особенно если q равно степени двой- ки, как это обычно и бывает па практике. Определение t.4.1. Блоковый код мощности М над алфавитом из q символов определяется как множество из М <у-ичных последо- вательностей длины п, называемых кодовыми словами. Если q = 2, то символы называются битами. Обычно М = q'e для некоторого целого k, и мы будем интересоваться только этим случаем, нвзывая код («, /?)-кодом. Каждой последовательности из k 9-ичных символов можно сопоставить последовательность ИЗ И 9-ИЧИЫХ символов, являющуюся кодовым словом. Имеются два основных класса кодов: блоковые коды п древо- видные коды; они иллюстрируются рис. 1.2. Блоковый код за- дает блок из k информационных символов «-символьным кодовым еловом. Скорость R блокового кода *) определяется равенством R = kin. т) Скорость — величина безразмерная или. возможно, измеряемая в еди- ницах бит/бит или симвоа/символ. Ее следует отличать от другого называемого тем же термином скорость понятия, измеряющего канальную скорость в бит/с Используется и другое определение скорости- Д’ — (ft/л) log,4, единицей которой является наг /символ, где одни на г равен log2<? битов Принято также опре- деление R = (kin) log^y, в котором скорость измеряется в единицах бит/символ.
1.4. ОСНОВНЫЕ ПОНЯТИЯ 19 Информационная последовательность к битов Койовоеслово: п битов Скорость =к/л /-битовый п-Битовый л-битоеый /-битовый блок, | | блок. I | блок. | I блок ----------*i Ковер -----------------5-1 канал -----------——*• Декойер -----------—— Блоковый кеб Информационная скорость: к0 бйтов/кабр Скорость канала.пс битов/кайр Скорость поЙа.Лс/лс битов/бит Древовидный коб Рис. 1.2. Основные классы кодов. Древовидный код более сложен. Он отображает бесконечную по- следовательность информационных символов, поступающую со скоростью k0 символов за один интервал времени, в непрерывную последовательность символов кодового слова со скоростью па символов за один интервал времени. Мы отложим рассмотрение древовидных кодов до гл. 12 и сначала сосредоточим внимание на блоковых кодак. Если сообщение состоит из большого числа битов, то в прин- ципе лучше использовать один кодовый блок большой длины, чем последовательность кодовых слов из более короткого кода При- рода статистических флуктуаций такова, что случайная конфи- гурация ошибок обычно имеет вид серии ошибок. Некоторые сег- менты этой конфигурации содержат больше среднего числа оши- бок, а некоторые меньше. Следовательно, при одной и той же ско- рости более длинные кодовые слова гораздо менее чувствительны к ошибкам, чем более короткие кодовые слова, но, конечно, со- ответствующие кодер и декодер могут быть более сложными. На- пример, предположим, что 1000 информационных битов переда- ются с помощью (воображаемого) 2000-битового двоичного кода, способного исправлять 100 ошибок. Сравним такую возможность с передачей одновременно 100 битов с помощью 200-битового кода, исправляющего 10 ошибок па блок. Для передачи 1000 битов не- обходимо 10 таких блоков. Вторая схема также может исправлять 100 ошибок, но лишь тогда, когда они распределены частным_об- разом — по 10 ошибок в 200-битовых подблоках. Первая схема может исправлять 100 ошибок независимо от того, как они рас-
20 гл- I- ВВЕДЕНИЕ положены внутри 2000-битового кодового слова. Она существенно эффективнее. Эти эвристические рассуждения можно обосновать теорети- чески, но здесь мы к этому не стремимся. Мы только хотим обо- сновать тот факт, что хорошими являются коды с большой длиной блока и что очень хорошими кодами являются коды с очень боль- шой длиной блока. Такие кода может быть очень трудно найти, а будучи найденными, они могут потребовать сложных устройств для реализации операций кодирования и декодирования. О блоковом коде судят по трем параметрам: длине блока п, информационной длине k и минимальному расстоянию d*. Ми- нимальное расстояние является мерой различия двух наиболее похожих кодовых слов. Минимальное расстояние вводится двумя следующими определениями. Определение (.4.2. Расстоянием по Хэммингу между двумя 9-ичными последовательностями х и у длины п называется число позиций, в которых они различны. Это расстояние обозначается через d (х, у). Например, возьмем х= 10101 и у = 01100; тогда имеем </(10101, 01100) = 3. В качестве другого примера возьмем х — = 30102 и у = 21103; тогда d (30102, 21103) = 3. Определение (.4.3. Пусть — {cf, i = 0, ..., М — 11 — код. Тогда минимально* расстояние кода равно наименьшему из всех расстояний по Хэммингу между различными парами кодовых слов, т. е. d* — min </(с{, сЛ. (n, й)-код с минимальным расстоянием </* называется также (п, k, <1*)-кодом. В коде выбранном в первом примере данного параграфа, d (10101, 10010) = 3, d (10010, OHIO) = 3, <1(10101, OHIO) = 4, </(10010, Illll) = 3, </(10101, Hill) = 2, </(01110, 11111) = 2; следовательно, для этого кода d* = 2. Предположим, что передано кодовое слово и в канале про- изошла одиночная ошибка. Тогда принятое слово находится на равном 1 расстоянии по Хэммингу от переданного слова. В слу- чае когда расстояние до каждого другого кодового слова больше чем 1, декодер исправит ошибку, если положит, что действительно переданным словом было ближайшее к принятому кодовое слово.
1 4. ОСНОВНЫЕ ПОНЯТИЯ 21 В более общем случае если произошло t ошибок и если рас- стояние от принятого слова до каждого другого кодового слова больше /, то декодер исправит эти ошибки, приняв ближайшее к принятому кодовое слово в качестве действительно нереданиого. Это всегда будет так, если d* 1. Иногда удается исправлять конфигурацию из t ошибок даже тогда, когда это неравенство не удовлетворяется. Однако если d* — 1, то исправление любых t ошибок не может быть гарантировано, так как тогда оно зависит от того, какое слово передавалось и какова была конфигурация из t ошибок внутри блока. Геометрическая иллюстрация дается па рис. 1.3. В простран- стве всех g-ичных «-последовательностей выбрано некоторое множество «-последовательностей, объявленных кодовыми сло- вами. Если d* — минимальное расстояние этого кода, a t — наибольшее целое число, удовлетворяющее условию d * 1, то вокруг каждого кодового слова можно описать непересекающиеся сферы радиуса t. Принятые слова, лежащие внутри сфер, деко- дируются как кодовое слово, являющееся центром соответству- ющей сферы. Если произошло не более / ошибок, то принятое слово всегда лежит внутри соответствующей сферы и декодируется правильно. Некоторые принятые слова, содержащие более t ошибок, попадут внутрь сферы, описанной вокруг другого кодового слова, и будут декодированы неправильно. Другие принятые слова, Произвольные Рис. 1.3. Сферы декодирования.
22 ГЛ. 1. ВВЕДЕНИЕ содержащие более t ошибок, попадут в промежуточные между сферами декодирования области. В зависимости от применения последний факт можно интерпретировать одним из двух способов. Неполный декодер декодирует только те принятые слова, которые лежат внутри сфер декодирования, описанных вокруг кодовых слов. Остальные принятые слова, содержащие более допустимого числа ошибок, декодер объявляет нераспознаваемыми. Такие конфигурации ошибок при неполном декодировании на- зываются неисправляемыми. Большинство используемых деко- деров являются неполными декодерами. Полный декодер декодирует каждое принятое слово в бли- жайшее кодовое слово. Геометрически это представляется следу- ющим образом: полный декодер разрезает промежуточные обла- сти на куски и присоединяет их к сферам так, что каждая точка попадает в ближайшую сферу. Обычно некоторые точки находятся на равных расстояниях от нескольких сфер; тогда одна из этих сфер произвольно объявляется ближайшей. Если происходит более t ошибок, то полный декодер часто декодирует неправильно, но бывают и случаи попадания в правильное кодовое слово. Полный декодер используется в тех случаях, когда лучше угады- вать сообщение, чем вообще не иметь никакой его оценки. Мы будем также рассматривать каналы, в которых кроме оши- бок происходят и стирания. Это значит, что конструкцией прием- ника предусмотрено объявление символа стертым, если он полу- чен ненадежно или если приемник распознал наличие интерфе- ренции иди сбой. Такой канал имеет входной алфавит мощности q и выходной алфавит мощности q -f- I; дополнительный символ называется стиранием. Например, стирание символа 3 в сооб- щении 12345 приводит к слову 12-45. Эго не следует путать с дру- гой операцией, называемой выбрасыванием, которая дает 1245. 3 таких каналах могут использоваться коды, контролиру- ющие ошибки. В случае когда минимальное расстояние кода равно d*, любая конфигурация из р стираний может быть восстановлена, если d* р 4- I. Далее, любая конфигурация из v ошибок и р стираний .может быть декодирована при условии, что d* $s 2v -г 1 , р. Для доказательства выбросим из всех кодовых слов те р ком- понент, в которых приемник произвел стирания. Это даст новый код, минимальное расстояние которого не меньше d* —р; сле- довательно, v ошибок могут быть исправлены при условии, что выполняется выписанное выше неравенство. Таким образом, можно восстановить укороченное кодовое слово с р стертыми компонентами. Наконец, так как d* > р 4- I, существует только
1.5. ПРОСТЕЙШИЕ КОДЫ 23 одно кодовое слово, совпадающее с полученным в нестертых компонентах; следователь по, исходное кодовое слово может быть восстановлено. 1.6. ПРОСТЕЙШИЕ КОДЫ Некоторые коды настолько просты, что их можно описать в са- мом начале. Простые коды с проверкой на четность. Эго высокоскоростные коды с плохими корректирующими характеристиками. К задан- ным k информационным битам дописывается (k 4- 1)-й бит так, чтобы полное число единиц в кодовом слове было четным *). Таким образом, например, для k = 4 0000 — 0000 0, 000 1 —000 1 1, 001 0 — 0010 1, 00 11 —00 1 1 о и т. д. Этот код является (А 4- 1, &)-кодом или (л, п— 1)-кодом. Минимальное расстояние кода равно двум, и, следовательно, никакие ошибки не могут быть исправлены. Простой код с про- веркой на четность используется для обнаружения (но не исправ- ления) одной ошибки. Простые коды с повторением. Это низкоскоростные коды с хорошими корректирующими характеристиками. Один заданный информационный символ повторяется п раз (обычно п нечетно). Таким образом. 0 — 00000, 1 — 11111. Эго (п, 1)-код. Для него минимальное расстояние равно л, и при предположении, что большинство принятых битов совпа- дает с переданным информационным битом, может быть исправ- лено (п — 1)/2 ошибок. К.оды Хэмминга. Эти коды позволяют исправлять одну ошибку. Сейчас мы введем эти колы с помощью непосредственного описа- ния. Для каждого т существует (2т — 1, 2т—1-—/п)-код Хэмминга. При больших т скорость кода близка к I, но доля общего числа битов, которые могут быть искажены, очень мала. (7, 4)-код Хэмминга можно описать с помощью приведенной на рис. 1.4, а реализации. При заданных четырех информационных битах (<!, t2i ta, t4) полагаем первые четыре бита кодового слова ’) В дальнейшем этот доппчиитсльный биг называется битом проверки на четность. — Прим. ред.
24 ГЛ. 1. ВВЕДЕНИЕ Рис. 1.4. Кодер/декэдгр для простого (7. 4)-кода Хэмминга, а — кодер, б — декодер.
I 5. ПРОСТЕЙШИЕ коды 25 равными этим четырем информационным битам. Дополняем тремя проверочными битами, задавая их равенствами Pi = *1 + *2 + /а» Pi ~ is 'I' *з 1 й» ря — 11 4-ц 4 14. Здесь 4- обозначает сложение по модулю 2: 04-0 = 0, 04- I = 1» I | 0 — 1, I + I — 0. Шестнадцать кодовых слов (7, 4)-кода Хэмминга выписаны в табл. 1,1. Декодер принимает 7-битовое Таблица 1.1 (7, 4)-код Хэмминга о о о о о с о О О о 1 (I 1 1 0 0 10 1 10 001I101 0 10 0 1 I I 0101100 0 1 10 0 0 1 0 1110 10 1000101 10 0 1 I 10 10 10 0 1 1 10 1 10 0 0 1 10 0 0 10 I I О I О О I 1 I 10 10 0 слово v — (1'1, Ц, is, it, р\, р2, рз). При передаче в этом слове про- изошло не более одной ошибки. Изображенный на рис. 1.4, б декодер вычисляет биты Si ~ pi 4- h 4- й |- 1з» S2 = Р2 I Й 4- Й 4- it, S3 = р’з 4- И 4- й 4- if. Трехбитовая последовательность (si, s2, s3) называется син- дромом. Она зависит не от истинных информационных битов, а только от конфигурации ошибок. Всего имеется восемь возмож- ных синдромов: один для случая отсутствия ошибки и по одному для каждой из семи возможных одиночных ошибок. Простая проверка показывает, что каждая из этих ошибок имеет свой един- ственный синдром. Таким образом, не составляет труда скон- струировать цифровую логику, которая по синдрому локализует
26 гл. I. ВВЕДЕНИЕ соответствующий бит. После внесения исправления проверочные символы можно опустить. Две или более ошибки превышают возможности кодовой конструкции, и код будет ошибаться. Это означает, что он будет вносить неправильные исправления и выдавать искаженные информационные биты. Идея этой кодовой конструкции, естественно, не меняется при перестановке позиций битов в кодовых словах. Все такие вари- анты называются (7, 4)-кодом Хэмминга. ЗАДАЧИ 1.1. Исправляющие одну ошибку коды Хэмминга содержат 2"' 1 битов, гп из которых являются проверочными битами. и. Выписать (я, k) для первых пяти нетривиальных кодов Хэмминга (начиная с т = 3). б. Вычислить скорости этих кодив. в. Выписать выражение для вероятности ре ошибки декодирования при условии, что код используется в двоичном канале с вероятностью ошибки q. Как ведет себя вероятность ре с ростом п? 1.2. Руководствуясь рис. 1.4, сконструировать кодкр/декодер для (15,11)- кода Хэмминга. Опустить повторяющиеся детали (т. е. в принципе показать, как это можно сделать). 1.3. а. Методом проб и ошибок найти множество из четырех двоичных слов длиной 3, таких, что каждое слово находится от каждого другого слова на расстоянии, не меньшем 2. 6. Найти множество из |6 двоичных слов длиной 7, такое, что каждое слово находится от каждого другого слова на расстоянии, не меньшем 3. 1.4.а. Описать, как выреза fl. 88 кругов диаметром 1 дюйм («2,5 см) из листа бумаги шириной 8,5 дюйма и длиной 11 дюймов. Доказать, что нельзя вырезать более 119 кругов диаметром 1 дюйм б. Доказать, что нельзя пайти 32 двоичных слова длиной 8, таких, что каждое слово отличается от каждого другого слова не менее чем тремя ком- понентами. 1.5. Доказать, что число k информационных символов любого блокового (п, А)-кода с минимальным расстоянием, не меньшим 2Z —|— 1, удовлетворяет неравенству (граница Хэмминга для алфавита из q элементов). 1.6. Простейший пример кодовой конструкции, известной под названием «код-произведение», имеет вид г----Проверка А пс строкам по столбцом—» Pt.it t
ЗАДАЧИ 27 где ktk2 символов верхнего левого блока являются двоичными информационными символами. Конструкция дает ((£2-|- I) (/г2 + I), (jt/eJ-Kon. а. Показать, что является проверочным символом н во строкам, и по столбцам. 6. Показать, что данный код является кодом, исправляющим одну ошибку в. Показать, что данный код является кодом, обнаруживающим две ошибки. Привести пример двух двойных ошибок, которые этот код не может отличить одну от другой. г. Чему равно минимальное расстояние данного кода? 1.7. Доказать, что расстояние но Хэммингу обладает следующими тремя свойствами: (!) d (х. У) 0, причем равенство достигается тогда и только тогда, когда х= у (ii)d(x, у)= d(y, х); (iii) выполняется неравенство треугольника d (х. у) d (у, z) -f- + d (х, z). Функция расстояния, обладающая этими тремя свойствами, называется метри- |.8.а. Показать, что код®1 позволяет обнаруживать любую конфигурацию не более чем из d ошибок тогда и только тогда, когда минимальное расстояния кода V больше d. б. Показать, что код способен исправлять любую конфигурацию не более чем из t ошибок, если минимальное расстояние кода равно по меньшей мере 2/ -J- 1. в. Показать, что код можно использовать для исправления всех кон- фигураций не более чем из t ошибок и одновременного обнаружения всех конфигураций не более чем из d ошибок (d f), если минимальное расстояние кода не меньше d+ /-|- I. г. Показать, что код можно использовать для восстановления р стер- тых символов, если минимальное расстояние кода не меньше р+ I. 1.8.а. Показать, что если двоичный (15, |1)-код Хэмминга используется в канале, который вносит две ошибки, то выход декодера всегда будет ошибоч- б. Показать, как используя проверку па четность, расширить (15. 11)-код Хэмминга до (16, Н)-кода. исправляющего все одиночные и обнаружи- вающего все двойные ошибки. Чему равно минимальное расстояние этого кода?
ГЛАВА 2 ВВЕДЕНИЕ В АЛГЕБРУ Поиск хороших кодов, контролирующих ошибки, в значительной мере связан с мощными и изящными структурами современной алгебры. Многие найденные важные коды основаны на структу- рах колец многочленов и полей Галуа. Кроме того, эти алгебраи- ческие понятия и методы являются необходимым рабочим инстру- ментом для конструирования кодеров и декодеров. Данная глава и гл. 4 посвящены изложению тех разделов алгебры, которые важны для теории кодов, контролирующих ошибки. Изложение ведется строго, но ограничивается лишь используемым в даль- нейшем материалом. 2.1. 2-ПОЛЕ И 6-10-ПОЛЕ Вещественные числа образуют известное множество математиче- ских объектов, которые можно складывать, умножать, вычитать и делить. Аналогично комплексные числа образуют множество объектов, которые можно складывать, вычитать, умножать и делить. Обе эти арифметические системы яаляются важнейшей основой всех инженерных дисциплин Нам необходимо построить другие, менее известные арифметические системы, полезные при исследовании кодов, контролирующих ошибки. Такие новые арифметические системы состоят из множеств и операций над элементами этих множеств. Хотя мы будем называть операции «сложением», «вычитанием», «умножением» и «делением», они не обязательно будут теми же операциями, что в элементарной арифметике. Изучаемые в современной алгебре арифметические системы классифицируются в соответствии с усложнением их математи- ческой структуры. Такая формальная классификация будет приведена ниже в дайной главе. Пока мы дадим следующие не- формальные определения:
2.1. 2-ПОЛЕ И В-Ю-ПОЛЕ 29 1) абелева группа *): множество математических объектов, которые можно «складывать» и «вычитать»; 2) кольца, множество математических объектов, которые можно «складывать», «вычитать» и «умножать»; 3) поле’, множество математических объектов, которые можно «складывать», «вычитать», «умножать» и «делить». Заметим, что названия этих операций взяты в кавычки потому, что, вообще говоря, они не являются принятыми арифметиче- скими операциями; эти названия употребляются из-за их сход- ства с принятыми. Прежде чем переходить к формальным понятиям, выполним некоторые вычисления в простейшем из всех возможных полей, а именно в иоле, состоящем только из двух элементов (Поле ве- щественных чисел содержит бесконечное число элементов.) Обозна- чим через 0 и 1 два элемента поля и определим операции сложе- ния и умножения равенствами 0 + 0^0, 0 4-1 = 1, I 1-0 = 1, 1 -|- I = 0, 0-0 - о, 0-1 -о, 1-0-0, 11-1. Так определенные сложение и умножение называются сложением по модулю 2 и умножением по модулю 2. Заметим, что из равенства I -J- 1 = 0 следует, что —I — 1, а из равенства 1-1 =1 — что I-1 = 1. Используя это, легко проверить, что, за исключением деления на нуль, вычитание и деление всегда определены. Алфа- вит из двух символов 0 и I вместе со сложением по модулю 2 и умножением по модулю 2 называется полем из двух элементов и по приведенным в гл. 4 соображениям обозначается через GF (2). В указанной арифметической системе можно осуществлять известные алгебраические операции. Пример дается следующей системой уравнений над полем GF (2): X 4- У + Z= 1, X + У - 0, х -:-z=i. Эту систему можно решить вычитанием третьего уравнения из первого, что дает У = 0. Тогда из второго уравнения получаем X = 0, а из первого уравнения Z = I. Подстановкой нолучен- 1) Абелева группа является частным случаем группы Арифметическая операция группы общего вида слишком слаба дти того, чтобы называться сло- жением
30 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ ного решения в исходную систему уравнений проверяем, что оно правильно. Чтобы получить другой способ решения, предположим, что можно доказать возможность применения обычных методов ли- нейной алгебры над полем GF (2). Определитель системы вычис- ляется следующим образом: = 1.1-1.] _ ы =-1 = 1. Эту систему уравнений можно решить по X=D->.^0 1 0 |_0, F-D-‘.p правилу Крамера: Z Вторым примером поля является 6-10-поле. Это поле содержит 16 элементов, которые мы обозначим символами 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, Л, В, С, D, Е, F. Таблицы сложения и умножения в этом поле выписаны на рис. 2.1. Отметим, что здесь правила сложения и умножения значительно отличаются от известных правил сложения и умножения вещественных чисел; в то же время эти таблицы обладают внутренней закономерностью и позволяют осуществлять вычитание и деление. Для деления надо взять х : у = где у~‘ —элемент поля, удовлетворяющий усло- вию у- y~l = I • Просмотр таблицы умножения показывает, что каждый ненулевой элемент имеет обратный, и, следовательно, деление всегда определено, за исключением деления на нуль. Большинство методов линейной алтобры, так же как и матрич- ные операции, переносится на случай произвольного поля. Именно поэтому ноля с конечным числом элементов оказались очень полезными. Мы будем изучать эти поля и найдем способы построе- ния таблиц сложения и умножения, которые порождают поле даже для большого числа элементов. Со временем мы увидим, что поля с q элементами можно построить тогда и только тогда, когда q равно рт, где р — простое, ат — произвольное поло- жительное целое число. Но прежде мы должны ввести понятия групп и колец.
2.2. ГРУППЫ 31 5 Рис. 2.1. 6-1О-полс. а — таблица сложения, б — таблица умножения. 2.2. ГРУППЫ Группа — эго собирательное название некоторых алгебраиче- ских структур. Хотя существуют многие конкретные примеры интересных групп, в математике введено абстрактное понятие группы, так как легче одновременно исследовать все матема-
32 Гл. 2. ВВЕДЕНИЕ В АЛГЕБРУ 2.3. ГРУППЫ 33 тические системы с общей структурой, чем исследовать каждую из них по отдельности. Определение 2.2.1. Группой G называется множество элемен- тов с определенной для каждой пары элементов операцией (обо- значаемой *), обладающее следующими четырьмя свойствами: 1) замкнутость: для каждой пары а и b из множества эле- мент с — а*Ь принадлежит множеству; 2) ассоциативность: для всех а, b и с из множества а * (Ь * с) — (а * Ь) * с; 3) существование единицы: в множестве существует элемент е, называемый единичным элементом и такой, что а*е — е*а = а для любого элемента а множества; 4) существование обратных элементов: для любого а из мно- жества существует некоторый элемент b из множества, называе- мый обратным элементу а и такой, что а*Ь = Ь*а — е. Если группа G содержит конечное число элементов, то она называется конечной группой, а число элементов в G называется порядком G. Некоторые группы обладают тем дополнительным свойством, что для любых а и b из группы а *-Ь — Ь*а. Это свойство называется коммутативностью. Группы, облада- ющие этим дополнительным свойством, называются коммутатив- ными или абелевыми группами. За исключением некоторого мате- риала этого параграфа, мы всегда будем иметь дело с абелевыми группами. В случае абелевых групп групповая операция обозначается символом |- и называется сложением (даже тогда, когда она не является обычным арифметическим сложением). В этом случае единичный элемент называется нулем и обозначается 0, а обрат- ный элементу а элемент записывается в виде —а, так что а + (—а) — (—а) 4- о = 0. Иногда групповая операция обозначается символом - и назы- вается умножением (даже тогда, когда она не является обычным арифметическим умножением). В этом случае единичный элемент называется единицей и обозначается I, а обратный элементу а элемент записывается в виде а'1, так что а- а-1 a~l- а = 1. Теорема 2.2.2. Единичный элемент е каждой группе является единственным. Для каждого элемента группы обратный элемент также является единственным, и (гт1)-1 = а. Доказательство. Предположим, что е и е' — единичные эле- менты группы; тогда е = е*е' = е’. Далее, предположим, что b и Ь’ — элементы, обратные элементу а; тогда Ь = Ь*(а» b') = (b*a)*b‘ — Ь'. Наконец, а'1а — aa~l = 1, так что а—обратный элементу с-1. Но в силу единственности обратного элемента (а~1)~1 = <?-□ Имеется бесконечно много примеров групп. Многие группы содержат бесконечное число элементов. Примерами являются целые числа относительно сложения, положительные рацио- нальные числа относительно умножения г), множество веществен- нозначных (2 X 2)-матриц относительно сложения. Многие дру- гие группы содержат только конечное число элементов. Приме- рами являются двухэлементное множество |0, 1} относительно операции «исключительного или» (сложения по модулю 2), мно- жество {0, 1, 8, 9| относительно сложения по модулю 10 и т. д. В качестве более сложного примера построим конечную’не- абелеву группу, т. е. менее известную структуру. Одним из способов построения групп с интересной алгебраической струк- турой является исследование преобразований простых геометри- ческих фигур и алгебраическая интерпретация этих преобразо- ваний. Например, равносторонний треугольник с вершинами А, В и С (занумерованными по часовой стрелке) можно вращением или отражением относительно оси отобразить на себя точно шестью различными способами, причем каждое из этих враще- ний и отражений имеет обратное преобразование. Используя некоторые очевидные факты, можно быстро построить алгебраи- ческую группу. Обозначим эти шесть преобразований символами I, а, Ь, с, d и е следующим образом: । — 1лг>г- . лоуч (нет изменений), (вращение против часовой стрелки), (вращение по часовой стрелке), (отражение относительно биссек- трисы угла А) (отражение относительно биссек- трисы угла В), (отражение относительно биссек- трисы угла С), ’) Этот пример дает удобный повод предостеречь относительно терминологии. В случае произвольной абелевой группы групповая операция обычно называется сложением, по не обязательно является обычным сложением. В данном примере она является обычным умножением. 2 Р. блейхут I = (АВС АВС) а = (АВСС А В) b = (АВС ВС А) '<? = (ЛВС А СВ) d ~ (АВС-*- СВ А) е = (АВС-*- ВАС)
34 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ где преобразование АВС -» ВСА означает, что вершина А пере- ходит в вершину В, вершина В переходит в вершину С, а вер- шина С переходит в вершину А. Таким образом, треугольник поворачивается на 120е. Пусть группа (G, *) определяется мно- жеством О = {1, а, Ь, с, d, е} и у*х является элементом группы, обозначающим преобразо- вание, которое получается последовательным выполнением сна- чала преобразования х, а затем преобразования у, например, a*d = (АВС^- ВСА)*(АВС-»- СВА) = (ЛВС-»- ВАС) = е. Поступая таким образом, можно построить таблицу для х*у: Поскольку таблица построена, можно забыть о ее геометри- ческом происхождении. Таблица сама определяет группу. Под- черкнем, что это пример неабелевой группы, так как а*с =/= с*а. Заметим также, что каждый элемент появляется один раз в каж- дом столбце и в каждой строке. Для конечных групп это выпол- няется всегда. Нашим последним примером группы является группа пере- становок п букв. Пусть X представляет собой множество |1, 2, ..., л}. Взаимно-однозначное отображение этого множества на самого себя называется перестановкой. Всего имеется л! таких перестановок, и можно определить группу, называемую симме- трической группой и обозначаемую через Sn, элементами которой являются перестановки на множестве X. (Сначала может не- сколько смущать то обстоятельство, что элементами группы яв- ляются операторы — операторы перестановок на множестве X. На самом деле в примере преобразований равностороннего тре- угольника речь также идет о группе перестановок.) Если взять перестановку на выбранных целых числах и переставить их еще раз, то получится другая перестановка на этих целых числах. Выберем в качестве групповой операции • такую композицию
2.2. ГРУППЫ ЗБ перестановок и возьмем, например, п = 4. Всего имеется 41 = 24 перестановок в группе S4. Типичный элемент группы S4 равен а = [(1 2 3 4) (3 1 4 2) ] и является перестановкой, заменяющей I на 3, 2 на 1, 3 на 4 и 4 на 2. Другой такой перестановкой является b = [(I 2 3 4)-> (4 1 3 2)]. Тогда произведение b *а в группе S4 равно перестановке, полу- чающейся в результате применения сначала а, а затем Ь: Ь*а = ((I 2 3 4)^(2 3 4 1)1, что является элементом группы S4. С таким определением умно- жения группа перестановок S< является неабелевой группой, содержащей 24 элемента. Пусть G —• группа, и пусть Н — некоторое подмножество в G. Тогда Н называется подгруппой группы G, если оно является группой относительно ограничения операции * на Н. Для того чтобы проверить, что непустое множество Н является подгруп- пой группы G, необходимо только проверить, что для всех а и b из Н элемент а * b принадлежит Н (замкнутость) и что элемент, обратный к а из Н, также принадлежит Н. Остальные группо- вые свойства наследуются из группы G. Как вскоре мы увидим при рассмотрении циклических подгрупп, в случае конечных групп из свойства замкнутости автоматически вытекает даже свойство существования обратного элемента. Например, множество всех четных чисел и множество чисел, кратных 3, являются подгруппами в множестве всех целых чисел (положительных, отрицательных и нуля) относительно опера- ции сложения. Один из путей построения подгруппы Н конечной группы G состоит в выборе произвольного элемента h группы Н и формиро- вании Н как множества элементов, образованных умножением h на самого себя произвольное число раз. Таким образом, строим последовательность элементов h, h* h, h*h*h, h* h*h»h, .... обозначая их для простоты через h, h2, ha, h*, ... . Так как G ко- нечна, то только конечное число этих элементов различно, так что с некоторого момента последовательность начнет повторяться. Первым повторяющимся элементом должен быть сам элемент Л, так как если два различных элемента h1 и h' равны, то их можно умножить на элемент, обратный Л, и получить, что Л'-1 и h’~l также равны. Далее заметим, что если hi = h, то h>-1 = 1, еди- ничному элементу группы. Множество II называется подгруп- пой, порожденной элементом h. Число с элементов в Н называется 2*
36 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ порядком элемента ft. Множество элементов h, hz, h3, .... ft = I называется циклом. Цикл является подгруппой, так как произ- ведение двух элементов такого вида снова яаляется элементом этого вида, а элемент, обратный элементу ft‘, равен hc~‘ и, следо- вательно, является одним из элементов цикла. Группа, состоя- щая из всех степеней одного из ее элементов, называется цик- лической группой. Для заданных конечной группы G и подгруппы Н существует важная операция, которая устанавливает некоторые взаимо- связи между G и Н и называется разложением группы G на смеж- ные классы по //. Обозначим через hlt h2, !ц, ... элементы из Н, причем через ftx обозначим единичный элемент. Построим таб- лицу следующим образом. Первая строка состоит из элементов подгруппы ft, причем первым слева выписан единичный элемент ht и каждый элемент из Н записан в строке один и только один раз. Выберем произвольный элемент группы G, не содержащийся в первой строке. Назовем его g2 и используем в качестве первого элемента второй строки. Остальные элементы второй строки получаются умножением слева элементов подгруппы на этот пер- вый элемент. Аналогично строим третью, четвертую и пятую строки: каждый раз в качестве элемента первого столбца выби- раем не использованный на предыдущих шагах элемент группы G. Построение заканчивается тогда, когда после некоторого шага оказывается, что каждый элемент группы записан в некотором месте таблицы- Процесс обрывается в силу конечности G. В ре- зультате получается следующая таблица: hi = 1 h2 h3 ... hn gs* hi=g2 g2*h2 g2* h2 ... g2* hn g<* ht = g5 g3*h2 g3* h3 ... g3* hn gm* h1=gm gm*h2 gm*h2 ... g,„* hn Первый элемент слева в каждой строке называется лидером смеж- ного класса. Каждая строка таблицы называется левым смежным классом, а в случае абелевой группы — просто смежным классом. Если при построении разложения группы на смежные классы использовать правое умножение на элементы группы G вместо левого, то строки называются правыми смежными классами. В силу указанных выше правил построения разложение на смеж- ные классы всегда представляется прямоугольной таблицей, все строки когорой полностью заполнены. Докажем теперь, что всегда получается таблица, в которой каждый элемент группы встречается точно один раз.
2.3. КОЛЬЦА 37 Теорема 2.2.3. В разложении группы. G на смежные классы каждый элемент из G встречается один и только один раз. Доказательство. Каждый элемент появится хотя бы один раз, так как в противном случае процесс не остановится. Докажем теперь, что каждый элемент не может появиться дважды в одной и той же строке и что один и тот же элемент не может появиться в двух разных строках. Предположим, что два элемента одной и той же строки, gi*h} и gi*hk, равны. Тогда умножение [слева. —• Перес.] каждого из них на gi' дает равенство hj = hh. Это противоречит тому, что каждый элемент подгруппы выписан в первой строке только один раз. Предположим, что два элемента различных строк gt*hj и gk*hi равны и что Умножение справа на hjl приводит к равенству = gb»hi*hf'. Тогда gt порождает fe-й смежный класс, так как элемент ht*hjl принадлежит подгруппе. Это противоречит указанному выше правилу выбора лидеров смеж- ных классов. □ Следствие 2.2.4. Если Н — подгруппа группы G, то число элементов в Н делит, число элементов в G. Таким образом, (Порядок Я)-(Число смежных классов G по Н) = = (Порядок G). □ Доказательство следует непосредственно из прямоугольности таблицы разложения на смежные классы. Теорема 2.2.5. Порядок конечной группы делится на порядок любого из ее элементов. Доказательство. Группа содержит циклическую подгруппу, порожденную любым из ее элементов; таким образом, утвержде- ние теоремы вытекает из следствия 2.2.4. [j 2.3. КОЛЬЦА Следующей необходимой нам алгебраической структурой является кольцо. Кольцо представляет собой абстрактное множество, которое является абелевой группой и наделено дополнительной структурой. Определение 2.3.1. Кольцом R называется множество с двумя определенными на нем операциями: первая называется сложением (обозначается -г), вторая называется умножением (обозначается соседним расположением), причем имеют место следующие ак- сиомы: 1) относительно сложения ([-) 7? является абелевой группой; 2) замкнутость: произведение аЬ принадлежит R для любых а и Ъ из 7?:
38 гл- 2- ВВЕДЕНИЕ В АЛГЕБРУ 3) закон ассоциативности: a (be) — {ab) с\ 4) закон дистрибутивности: а (Ь + с) — ab + ас, (Ь 4- с) а = Ьа 4- са. Сложение в кольце всегда коммутативно, а умножение не обязательно должно быть коммутативным. Коммутативное кольцо — это кольцо, в котором умножение коммутативно, т. е. ab ~ Ьа для всех а и Ь из R. Закон дистрибутивности в определении кольца связывает операции сложения и умножения. Этот закон имеет несколько непосредственных следствий, как, например, приведенная ниже теорема. Теорема 2.3.2. Для произвольных элементов cube кольце R (i) dO — Оа — О, (ii) а (—b) — (—а) Ь -= — (ab). Доказательство. (i). аО = о (0 + 0) — аО 4- аО. Вычитая из обеих частей равенства о0, получаем 0 = а0. Вторая часть утверждения (i) доказывается аналогично. (ii). 0 — сО = а (Ь — b) = ab + а (—Ь). Следовательно, а (—Ь) = — (ab). Вторая часть утверждения (ii) доказывается аналогично. □ Операция сложения в кольце имеет единичный элемент, назы- ваемый нулем. Операция умножения не обязательно имеет еди- ничный элемент, но если он есть, то является единственным. Кольцо, обладающее единственным элементом относительно умно- жения, называется кольцом с единицей. Этот единичный элемент называется единицей и обозначается символом I. Тогда для всех а из R имеет место равенство la = al = а. Относительно операции сложения каждый элемент кольца имеет обратный. Относительно операции умножения элемент, обратный данному элементу, не обязательно существует, но в кольце с единицей обратные элементы могут существовать. Эго означает, что для данного элемента а может существовать элемент Ь, такой, что ab = I. Если это так, то Ь называется пра- вым обратным к а. Аналогично если существует элемент с, такой, что са — 1, то с называется левым обратным к а. Теорема 2.3.3. В кольце с единицей (i) единица единственна; (ii) если элемент а имеет как правый обратный Ь, так и левый обратный с, то элемент а называется обратимым.
i.4. поля 39 причем обратный ему элемент является единственным (и обозначается через а-1); (iii) (о-1)-1 - о. Доказательство. Рассуждения аналогичны проведенным при доказательстве теоремы 2.2.2. □ Обратимый элемент кольца называется единицей. Множество всех единиц в кольце замкнуто относительно умножения, так как если а и b — единицы, то с — ab имеет обратный элемент, равный (Г* — Irhr1. Теорема 2.3.4. (i) /Множество единиц кольца образует группу относительно умножения в кольце. (ii) Если с ~ ab и с — единица, то а имеет привый обратный, а b — левый обратный элемент- Доказательстно. Непосредственная проверка. □ Имеется много известных примеров колец, и ниже приводятся некоторые из них. Представляется поучительным проиллюстри- ровать этими примерами теоремы 2.3.3 и 2.3.4. I. Множество всех вещественных чисел образует коммута- тивное кольцо с единицей относительно обычных сложения и ум- ножения. Каждый ненулевой элемент кольца является единицей. 2. Множество всех целых чисел (положительных, отрицатель- ных и нуля) образует коммутативное кольцо с единицей относи- тельно обычных сложения и умножения. Это кольцо принято обозначать через Z; его единицами являются только ±1. 3. Множество всех квадратных (n х и)-матриц, элементами которых яаляются вещественные числа, образует некоммутатив- ное кольцо с единицей относительно матричного сложения и умножения. Единицей является единичная (n х w)-матрица. Еди- ницами в кольце служат все невырожденные матрицы. 4. Множество всех квадратных (и х л)-матриц, элементами которых являются целые числа, образует некоммутативное кольцо с единицей относительно матричного сложения и умножения. 5. Множество всех многочленов от х с вещественными коэф- фициентами образует коммутативное кольцо с единицей отно- сительно сложения и умножения многочленов. Единицей кольца является многочлен нулевой степени р (х) — I. 2.4. ПОЛЯ Нестрого говоря, абелевой группой является множество, в кото- ром можно складывать и вычитать, а кольцом — множество, в котором можно складывать, вычитать и умножать. Более силь-
40 ГЛ. 2. »В€ДЕНИЕ'«В- АЛГЕБРУ ной алгебраической структурой, называемой полем, является множество, в котором можно складывать, вычитать, умножать и делить. Определение 2.4.1. Полем называется множество с двумя определенными на нем операциями —сложением и умножением, причем имеют место следующие аксиомы: I) множество образует абелеву группу по сложению; 2) поле замкнуто относительно умножения, и множество нену- левых элементов образует абелеву группу по умножению; 3) закон дистрибутивности: (а 4- Ь) с = ас + Ьс для любых а, Ь, с из поля. Единичный элемент относительно сложения принято обозна- чать через 0 и называть нулем, аддитивный обратный элементу а элемент — через —аг, единичный элемент относительно умноже- ния обозначать через I и называть единицей, мультипликативный обратный к элементу а элемент — через п-1. Под вычитанием (а — Ь) понимается а 4- (—б); под делением (alb) понимается Широко известны следующие примеры полей: 1) R: множество вещественных чисел, 2) С: множество комплексных чисел, 3) Q: множество рациональных чисел. Все эти поля содержат бесконечное множество элементов. Мы интересуемся полями, содержащими конечное число элемен- тов. Поле с q элементами, если оно существует, называется конеч- ным полем или полем Галуа и обозначается через GF (q). Что представляет собой наименьшее поле? Оно обязательно содержит нулевой элемент и единичный элемент. На самом деле этого уже достаточно при следующих таблицах сложения и умно- жения; + 01 «01 001 000 I 10 10 1 Это поле GF (2), с которым мы уже встречались в § 2.1. Проверка показывает, что не существует другого поля с двумя элементами. В гл. 4 конечные поля будут изучены более детально. Сейчас мы приведем два простых примера и опишем их таблицами сло- жения и умножения (вычитание и деление неявно определяются этими же таблицами).
3.4. ПОЛЯ 41 Поле GF (3) = {0, 1, 2} с операциями + 0 12 0 1 2 1) 0 12 0 0 0 0 1 12 0 1 0 1 2 2 2 0 1 2 0 2 1 Поле GF (4) = {0, 1, 2, 3| с операциями + 0 12 3 0 1 2 3 0 0 12 3 0 0 0 0 0 1 0 3 2 i 0 12 3 3 0 1 2 0 2 3 1 з 3 2 10 3 0 3 12 Отметим, что умножение в поле GF (4) не является умножением по модулю 4 и сложение не является сложением по модулю 4. Существуют многие другие поля Галуа. Даже для этих приме- ров очень маленьких полей не так легко с помощью простой про- верки установить, что они обладают указанной структурой. Структура этих и больших полей будет разъясняться в гл. 4. Прежде чем расстаться с этими примерами, заметим, что поле GF (2) содержится в GF (4), так как в поле GF (4) два эле- мента 0 и 1 складываются и умножаются точно так же, как они складываются и умножаются в поле GF (2). Однако GF (2) не со- держится в GF (3). Определение 2.4.2. Пусть F — некоторое поле. Подмножество в F называется подполем, если оно само является полем относи- тельно наследуемых из F операций сложения и умножения. В этом случае исходное поле F называется расширением поля. Для того чтобы доказать, что подмножество конечного поля является подполем, необходимо доказать только, что оно содер- жит ненулевой элемент и что оно замкнуто относительно сложе- ния и умножения. Все остальные необходимые свойства насле- дуются из F. Обратные элементу р по сложению или умножению элементы содержатся в порожденной р циклической группе относительно операции сложения или умножения. Поле обладает всеми свойствами кольца, а также важным дополнительным свойством — в нем всегда возможно сокращение.
42 гл. 2. ВВЕДЕНИЕ В АЛГЕБРУ Сокращение представляет собой слабую форму деления и озна- чает, что если аЬ = ас, то Ь = с. Теорема 2.4.3. Если в произвольном поле ab ас и а =/= О, то Ь — с. Доказательство. Умножить на с-1. □ Некоторые кольца могут также удовлетворять этому условию сокращения, ио все-таки не быть полями. Простым примером служит кольцо целых чисел. В этом кольце сокращение возможно, но приведенное для теоремы 2.4.3 доказательство не проходит, так как в этом кольце не существует элемента о-1. Кольца, в ко- торых всегда возможно сокращение, имеют специальное название. Определение 2.4.4. Коммутативное кольцо, в котором Ь = с, если ab = ас и элемент а отличен от нуля, называется областью целостности. 2.5. ВЕКТОРНЫЕ ПРОСТРАНСТВА Известный пример векторного пространства дает трехмерное евклидово пространство, фигурирующее во многих физических задачах. Его обобщением является n-мерное векторное простран- ство над полем вещественных чисел. Понятие n-мерного про- странства тесно связано с идеями линейной алгебры и теории матриц и играет важную роль во многих приложениях. Для произвольного поля можно дать абстрактное определе- ние векторных пространств. Определение 2.5.1. Пусть F — некоторое поле. Назовем эле- менты из F скалярами. Множество V называется векторным пространством, и его элементы называются векторами, если для пар элементов из V определена такая операция векторного сложения (обозначается плюсом), а для элементов из V и эле- ментов из F определена такая операция умножения на скаляры (обозначается приписыванием), что результат выполнения опе- рации дает элемент из V, причем имеют место следующие ак- сиомы: 1) V является абелевой группой относительно векторного сложения; 2) закон дистрибутивности: для каждой пары векторов vlt v2 и скаляра с выполняется равенство С (vi 4- *а) — CVi + cv2; 3) закон дистрибутивности: для произвольного вектора v и произвольных скаляров ct и сг выполняются равенства Iv = v и (Ci | e2)v=cvI |-cv2;
t S. ВЕКТОРНЫЕ ПРОСТРАНСТВА 43 4) закон ассоциативности-, для произвольного вектора v и произвольных скаляров Q и с3 выполняется равенство («,)<= г. (<,»). Нулевой элемент из V называется началом координат простран- ства V и обозначается через 0. Отметим, что мы использовали символ 4~ двумя различными способами: для векторного сложения и для сложения в поле. Отметим также, что мы использовали символ 0 для обозначения нулевого элемента поля и символ 0 для обозначения начала коор- динат векторного пространства. В качестве менее известного примера векторного простран- ства V можно указать множество многочленов от х с коэффициен- тами из GF (<?). Векторами этого пространства служат много- члены. Векторное сложение совпадает со сложением многочле- нов, а умножение па скаляр — с умножением многочленов на элементы поля. В векторном пространстве V сумма вида U = + C2V3 -I------|- GfcVft, где at — скаляры, называется линейной комбинацией векторов v1# .... vh. Множество векторов vlt .... v„ называется линейно зависимым, если существует множество не всех равных пулю скаляров \aL, ak|, такое, что «1*1 + O2*S I---4- OfcVj, = 0. Множество векторов, которое не является линейно зависимым, называется линейно независимым. Никакой вектор из множества линейно независимых векторов не может быть представлен в виде линейной комбинации остальных векторов этого множества. Отметим, что нулевой вектор 0 не может принадлежать линейно независимому множеству; каждое множество, содержащее 0, является линейно зависимым. О множестве векторов говорят, что оно порождает векторное пространство, если каждый вектор пространства равен хотя бы одной линейной комбинации векторов из этого множества. Век- торное пространство, порождаемое конечным множеством век- торов, называется конечномерным векторным пространством. Мы в первую очередь интересуемся конечномерными векторными пространствами. Теорема 2.5.2. Если векторное пространство V порождено конечным множеством из k векторов А — {vlt ...,vf.} и V содер- жит т линейно независимых векторов В — {ult .... и„Д, то k т.
44ВГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ Доказательство. /Мы опишем правило построения последова- тельности множеств Ао, Ло А.г.....Ат, таких, что каждое из множеств порождает V, каждое из множеств содержит k элемен- тов, выбираемых из А и В, и множество Аг содержит ult ur. Таким образом, среди k элементов множества Ат будут содер- жаться ut, u,n, и, следовательно, k т. Так как никакая линейная комбинация векторов из В с нену- левыми коэффициентами не равна нулю, то никакой элемент из В не может быть представлен в виде линейной комбинации других элементов из В. Если множество Аг_г не содержит иг и порож- дает V, то должен быть способ представления и, в виде линей- ной комбинации элементов из включающий хотя бы один вектор из А (скажем, \j), не принадлежащий множеству В. Урав- нение, задающее эту линейную комбинацию, можно разрешить относительно Vj, представив v} в виде линейной комбинации из ur и других элементов из Лг_ц. Это построение осуществляется следующим образом. Пусть Ло = А. Если АТ_, содержит и„ то полагаем /1г — Дг_г; в про- тивном случае ur не принадлежит множеству но может быть представлен в виде линейной комбинации элементов из Аг_г, содержащей некоторый элемент vj из А, не принадлежащий В. Множество Аг образуем из множества заменой vj па ur. Произвольный вектор v равен некоторой линейной комбинации элементов из Ат^ и, следовательно, также элементов из Ат, если исключить вектор vj, используя линейную комбинацию, связывающую Vj и иг с другими векторами из Следова- тельно, множество Аг порождает V, и из Лг_1 мы построили А, с желаемыми свойствами. Таким образом, множество Ат может быть построено, и доказательство закончено. □ Теорема 2.5.3. Два множества линейно независимых, векторов, порождающие одно и то же векторное пространство, содержат одинаковое количество векторов. Доказательство. Если одно множество содержит т векторов а другое k векторов, то по теореме 2 5.2 т k и k т, и, сле- довательно, т = k. □ Число линейно независимых векторов в множестве, порожда- ющем конечномерное векторное пространство V, называется размерностью пространства V. Множество k линейно независи- мых ^векторов, порождающее ^-мерное векторное пространство, называется базисом этого пространства. Согласно теореме 2.5.2, в Л-мерном векторном пространстве каждое множество, содер- жащее более k векторов, является линейно зависимым. Теорема 2.5.4. В k-мерном векторном пространстве V любые k линейно независимых векторов об pay ют базис пространства V.
2.5. ВЕКТОРНЫЕ ПРОСТРАНСТВА 45 Доказательство. Пусть {v>, — произвольное множе- ство k линейно независимых векторов из V. Если оно не порождает V, то в V найдется такой вектор V, что он не равен никакой ли- нейной комбинации векторов vb ..., vJ;. Множество }v, vtl V/Д содержит k -|- 1 линейно независимых векторов из V, что про- тиворечит теореме 2.5.3. Следовательно, множество jvi, v,,| порождает V и является базисом. П Если множество линейно независимых векторов й-мерпого пространства не является базисом, то оно должно содержать меньше k векторов. Дополнение такого множества векторами так, чтобы оно превратилось в базис, называется пополнением базиса. Теорема 2.5.5. Заданное множество линейно независимых век- торов в конечномерном векторном пространстве всегда может быть дополнено до множества, образующего базис. Доказательство. Если данное множество не является базисом, то некоторый вектор пространства не является линейной комби- нацией векторов данного множества. Выберем такой произволь- ный вектор и присоединим его к исходному множеству, увеличив объем множества на единицу. Если полученное множество все еще не является базисом, повторим процесс. Процесс обяза- тельно оборвется, так как число линейно независимых векторов в множестве нс может превосходить размерность пространства. Полученное по завершении процесса множество векторов удо- влетворяет условиям теоремы. □ Непустое подмножество векторного пространства называется векторным подпространством, если оно также является вектор- ным пространством относительно исходных операций векторного сложения и умножения на скаляр. Относительно операции век- торного сложения векторное пространство является группой, а векторное подпространство подгруппой. Чтобы установить, что непустое подмножество векторного пространства образует подпространство, достаточно проверить только замкнутость под- множества относительно векторного сложения и умножения на скаляры. Замкнутость относительно умножения на скаляры гарантирует, что нулевой вектор принадлежит подмножеству; другие необходимые свойства наследуются из исходного про- странства. Теорема 2.5.в. Множество всех линейных комбинаций множе- ства векторов {vb .... произвольного векторного пространства V образует подпространство в V- Доказательство. Каждая линейная комбинация векторов Vj,.... vk является вектором из V, и поэтому множество W всех линей- ных комбинаций образует подмножество пространства V. Оно не пусто, так как 0 принадлежит U7. Мы должны показать, что
46 СЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ U7 является подпространством. Если w == b^i + ... -J- bkvk и u = CiVt 4- ... j- CkVh — два произвольных элемента подмноже- ства 117, то w + u = (fcx 4- Ci) vx 4- (bh 4- O,) vh также при- надлежит W7. Далее, для произвольного вектора w скалярное кратное вектора w, aw = abivl + ... + аЬкУь, также принад- лежит IV7. Так как IV' замкнуто относительно векторного сложе- ния и умножения на скаляр, то оно является векторным под- пространством. □ Теорема 2.5.7. Если размерность векторного подпространства W конечномерного векторного пространства V равна размерно- сти V, то W V. Доказательство. Обозначим размерность обоих пространств через k. Выберем в IV7 базис. Он образует множество k линейно независимых векторов пространства V, поэтому является бази- сом в V. Следовательно, каждый вектор из К' принадлежит также V. □ Для заданного поля F величина (alt ait ..., ал), составлен- ная из элементов поля, называется п-последовательностью эле- ментов поля. Относительно операций покомпонентного сложения и покомпонентного умножения на скаляры множество «-последо- вательностей элементов поля F образует векторное пространство, которое обозначается через Fn. С помощью выбора базиса vx, ..., vft любое конечномерное векторное пространство можно превра- тить в пространство «-последовательностей, представляя каждый вектор v atVi 4- 4-GnVn «-последовательностью его коэф- фициентов (а,, .... ап). Следовательно, мы можем ограничиться рассмотрением только векторных пространств «-последователь- ностей. Скалярное произведение двух «-последовательностей из F”: и = сп) и v = (£>x...b„) равно скаляру, определяемому так: u-v = (аь ..., a^(blt .... bn) =atbt 4---|- апЬп. Можно сразу же проверить, что u-v = vu, (cu)-v = с (u-v) и w-(u 4- v) = (w-u) 4- (w-v). Если скалярное произведение двух векторов равно нулю, то они называются ортогональными. Ненулевые векторы над GF (у) могут быть ортогональны сами себе. Вектор, ортогональный к каждому элементу множества, называется ортогональным к множеству. Теорема 2.5.8. Пусть V — векторное пространство п-после- довательностей нод некоторым полем F, и пусть К7 — некоторое его подпространство. Множество векторов, ортогональных к IV7, также образует подпространство.
2.5. ВЕКТОРНЫЕ ПРОСТРАНСТВА 47 Доказательство. Обозначим через U множество всех векто- ров, ортогональных к W. Так как 0 принадлежит U, то U не пусто. Пусть w — произвольный вектор из IV7, a гц и и2 — два произвольных вектора из U. Тогда w-u, -= w-Ua = 0 и w-Uj 4- 4-wua = 0— w(u, + п2), так что ux + пг принадлежит U. Также w-(cut) — с (w-uL) = 0, и, следовательно, cut принадле- жит U. Таким образом, U является подпространством. □ Множество векторов, ортогональных к W, называется орто- гональным дополнением № и обозначается через IV7-1. В случае конечномерных векторных пространств над полем вещественных чисел пересечение IV7 и IV7*- содержит только нулевой вектор, но над полем GF (7) подпространство IV7- может иметь нетривиаль- ное пересечение с W или может даже принадлежать W либо со- держать W. В действительности можно даже построить при- меры подпространств, которые сами являются своими ортогональ- ными дополнениями. Например, в GFa (2) подпространство {00, 11} совпадает со своим ортогональным дополнением. Теорема 2.5.9. Вектор, ортогональный к каждому вектору множества, порождающего IV7, принадлежит ортогональному дополнению пространства №. Доказательство. Предположим, что множество {w,........ и„| порождает IV7. Вектор w из № можно записать в виде w—c1wi } . • 4-enwn. Тогда w u = (c1w14-----i c„wn) u =c1wi u4--------}-cnwn-ti. Если u ортогонален к каждому wit то он ортогонален к каждому w из №. Г] Если размерность подпространства № в векторном простран- стве «-последовательностей равна k, то размерность ортогональ- ного дополнения равна п — k. Этот факт часто используется в дальнейшем и поэтому будет доказан в виде теоремы 2.6.9. Мы сошлемся на этот факт при доказательстве следующего ре- зультата. Теорема 2.5.10. Пусть №— подпространство в пространстве п-последовательностей, а пусть IV7-1- — его ортогональное допол- нение. Тогда IV7 представляет собой ортогональное дополнение подпространства IV7-1-. Доказательство. Пусть размерность W равна k. Тогда, со- гласно теореме 2.6.9, размерность IV71 равна п — k, а размер- ность ортогонального дополнения пространства №- равна k. Но каждый вектор из № ортогонален к IV71. Следовательно, IV7 содержится в ортогональном дополнении к №1 и имеет ту же самую размерность, так что эти подпространства совпадают. П
48 ГЛ. В. ВВЕДЕНИЕ В АЛГЕБРУ 2.6. ЛИНЕЙНАЯ АЛГЕБРА Широко используемые разделы прикладной математики — ли- нейная алгебра, в частности теория матриц, — обычно изучаются только для поля вещественных чисел и поля комплексных чисел, однако большинство известных операций линейной алгебры спра- ведливо также для произвольного поля. Мы кратко изложим этот материал отчасти в порядке обзора и отчасти для доказа- тельства того, что известные методы остаются справедливыми над произвольным полем (а иногда даже над произвольным кольцом). Определение 2.6.1. (п X т)-матрицей А над кольцом F назы- вается прямоугольная таблица, состоящая из п строк и т столб- цов и содержащая пт элементов из кольца R: А -- °и П|2 ... а1т с22 • °2<л - - - #nni В большинстве приложений кольцо R в действительности является полем, и мы ограничимся этим случаем. Как правило, мы будем рассматривать матрицы над конечным полем GF (</)- Множество элементов aiit для которых номер строки совпа- дает с номером столбца, называется главной диагональю. Если п равно т, то матрица называется квадратной матрицей, (п X X п)-матрица, "все элементы главной диагонали которой равны единичному элементу ноля, а остальные элементы равны нулевому элементу поля, называется единичной (n X п)-матрицей. Единичная матрица обозначается через I. Примерами единич- ных матриц являются Две (п X /?г)-матрицы А и В над полем GF (<j) можно скла- дывать по правилу °12 “Ь ^18 • • alm I Ь1т А В = с,.| I Ьп, ап9-\-Ьп?, . . а„т । Ьп,
2.6. ЛИНЕЙНАЯ АЛГЕБРА 49 (n X т)-матрицу А можно умножать на элемент поля р по пра- вилу Ра11 Рй12 • • • Р°1« Р«Г.1 - • - Р^пи т. (I X л)-матрицу А можно умножить па (n X /«)-матрицу В, получив результирующую (/ х лг)-матрицу С, по правилу ctj = olhbhj, i = 1, ..., /, / = 1». fr._i Эго произведение матриц обозначается через С-АВ. Как легко проверить, множество квадратных (n X п)-матриц образует кольцо относительно так определенных умножения и сложения матриц. Это кольцо не коммутативно, но обладает еди- ницей, а именно единичной (n X я)-матрицей. Матрицу можно разбить на блоки по правилу где Ац, А12, Ag, и А2г — меньшие матрицы, размеры которых очевидным образом дополняют друг друга до размеров матрицы А. А именно сумма числа строк матрицы Аи (или A1S) и числа строк матрицы A2i (или А22) равна числу строк матрицы А; аналогич- ное утверждение выполняется для столбцов. Матрицы можно перемножить поблочно, а именно если В,| ;В121 в21 : в22] и С — АВ, то при условии корректного выбора размеров блоков (корректного в том смысле, что вес произведения н суммы матриц определены) ГАцВ,, + Ai2B2i ; AiiBi2 + А|2Ва1 [a2ib„ + а,2в;, : а21в.; +а2’2в2; г Такое разложение можно получить как простое следствие аксиом ассоциативности и дистрибутивности основного поля.
50 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ Транспонированной к (n X /п)-матрице А называется (т X X л)-матрица А’, такая, что а1., = а... Таким образом, строками матрицы Ат служат столбцы матрицы А, а столбцами матрицы Ат служат строки матрицы А. Обратной к квадратной матрице А называется квадратная матрица А-1 (если она существует), такая что А-1 А = А А-1 — I. Как можно сразу проверить, множество всех обратимых (п X п)-матриц образует группу относительно операции умножения. Следовательно, если матрица имеет обрат- ную, то обратная матрица единственна, так как в силу теоремы 2.2.2 это свойство выполняется в каждой группе. Матрица, име- ющая обратную, называется невырожденной: в противном случае она называется вырожденной. Если С = АВ, то при условии, что А и В обратимы, С-1 = В-ХА-Х, так как (В-ХА-Х) С = I = -= С (В-1А-1). Впоследствии мы увидим, что если у А или у В нет обратной матрицы, то и у С нет обратной матрицы. Определение 2.6.2. Пусть задано поле F. Определитель ква- дратной (л X п)-матрицы А для каждого п является функцией на множестве всех (n X п)-матриц над F со значениями в поле F, обозначается через det (А) и задается формулой det (А) =2]^ - • • - а«»п, где jx, ig, .... 1п — перестановка на множестве целых чисел {1, 2, n}, |tl in равно ±1 в зависимости от четности или нечет- ности перестановки, а суммирование ведется по всем переста- новкам. Нечетная перестановка определяется как произведение нечет- ного числа транспозиций (транспозицией называется переста- новка двух членов). Четная перестановка определяется как пере- становка, которая не может быть получена нечетным числом транс- позиций. Один из способов сделать это определение наглядным состоит в рассмотрении множеств всех матриц, которые можно получить из матрицы А перестановкой строк. Для каждой из таких матриц возьмем произведение всех членов, лежащих на главной диаго- нали (если перестановка была нечетной, то изменим знак произ- ведения), и сложим все полученные таким образом произведения. Конечно, вычислять таким образом определитель не следует, но это дает хороший способ установления свойств определи- телей. В приведенной ниже теореме перечислены свойства функции det (А), вытекающие непосредственно из ее определения. Теорема 2.6.3. (i) Если все. элементы некоторой строки квадратной матрицы равны нулю, то определитель этой матрицы равен нулю.
2.6. ЛИНЬЙНАЯ АЛГЕБРА Б1 (ii) Определитель матрицы равен определителю транспони- рованной матрицы. (iii) Если две строки матрицы поменять местами, то ее опре- делитель изменит знак. (iv) Если две строки матрицы равны, то ее определитель ра- вен нулю. (v) Если все элементы одной строки матрицы умножить на элемент поля с, то определитель новой матрицы будет равен определителю исходной матрицы, умноженной на с. (vi) Если матрицы А и В отличаются только i-u строкой, то сумма их определителей равна определителю матрицы С, i-я строка которой равна сумме i-x строк матриц А и В, а осталь- ные строки равны соответствующим строкам матрицы А или В. (vii) Если к элементам некоторой строки матрицы k раз прибавить соответствующие элементы некоторой другой ее строки, то определитель матрицы не изменится. Доказательство: исполь- зовать свойства (iv), (v) и (vi). (viii) Определитель матрицы отличен от нуля тогда и только тогда, когда ее строки (столбцы) линейно независимы. Доказательство предоставляется читателю в качестве упраж- нения. Замечание: в общем случае утверждение (iv) не может быть доказано с помощью перестановки двух строк и применения свойства (iii). Почему? □ Если в квадратной матрице удалить строку и столбец, содер- жащие элемент аи, то определитель оставшейся квадратной таблицы размера п — 1 называется минором элемента atJ и обо- значается через Ми. Алгебраическое дополнение, обозначаемое здесь через Су, определяется равенством Су = (—])«+/ Му. Из способа задания определителя матрицы следует, что алгеб- раическое дополнение элемента Оу является коэффициентом при Пу в разложении определителя: det (А) = £ aihCib. fr._। Эго известная формула Лапласа для разложения определителей. Ола дает выражение определителя (п X л)-матрицы через опре- делители (п — 1) X (л — 1)-матриц. Формула разложения Лап- ласа лежит в основе рекуррентного способа вычисления опре- делителей. Если aik заменить на ajk, то получится сумма равная определителю новой матрицы, полученной из старой за-
62 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ меной элементов i n строки элементами j-n строки; этот опреде- литель равен нулю, если i. Таким образом, А-МТ' Й Поэтому если det (А) =/= 0, ю матрица А — [йу 1 имеет обратную, равную А ‘ - [ del (А) ] Если det (А) -- 0, то обратной матрицы не существует. Строки (n X /п)-матрицы А над GF (q) можно рассматривать как множество /n-мерпых векторов над GF (q). Пространство строк матрицы А определяется как множество всех линейных комбинаций векторов-строк матрицы А. Размерность простран- ства строк называется рангом матрацы по строкам. Аналогично столбцы матрицы А можно рассматривать как множество «-мер- ных векторов над GF (q). Пространство столбцов матрицы А определяется как множество всех линейных комбинаций векто- ров-столбцов матрицы А, а размерность пространства столбцов называется рангом матрицы по столбцам. Множество всех век- торов V, таких, что AvT = О, называется нулевым простран- ством матрицы А. Ясно, что пулевое пространство является под- пространством в GF" (q). В частности, нулевое пространство является ортогональным дополнением пространства строк матрицы А, так как нулевое пространство можно задать как множество всех векторов, ортогональных ко всем векторам пространства строк. Элементарными операциями над строками матрицы назы- ваются следующие действия: 1) перестановка двух произвольных строк; 2) умножение произвольной строки на пулевой элемент поля; 3) замена произвольной строки па сумму ее самой и некото- рого кратного любой другой строки. Каждая элементарная операция над строками обратима, и обратная операция имеет такой же вид. Каждая элементарная операция над строками (« х л)-матрицы А может быть выполнена путем левого умножения А на соответствующим образом подо- бранную так называемую элементарную (п X п)-матрицу F.
i.6. ЛИНЕЙНАЯ АЛГЕБРА 63 Элементарные матрицы определяются как одна из следующих модификаций единичной матрицы: О 1 1 о Элементарные операции над строками используются для при- ведения матрицы к стандартному виду', называемому каноническим ступенчатым видом и определяемому следующим образом: 1) ведущий ненулевой элемент каждой ненулевой строки ра- вен единице; 2) все остальные элементы каждого столбца, содержащего такой ведущий элемент, равны нулю; 3) ведущий элемент любой строки находится правее любого ведущего элемента любой расположенной выше строки. Нулевые строки расположены ниже всех ненулевых строк. Примером матрицы, приведенной к каноническому ступенча- тому виду, является 1 10 13 0" А = 001100 000001 000000 Заметим, что нулевая строка расположена снизу и что если уда- лить последнюю строку, то все столбцы единичной (3 X 3)-матрицы появятся среди столбцов матрицы, но в разбросанном виде. В об- щем случае если имеется k ненулевых строк и по меньшей мере такое же количество столбцов, то матрица в каноническом сту- пенчатом виде всегда будет содержать все столбцы единичной матрицы размера k. Частным случаем канонической ступенчатой формы матрицы является матрица вида А=Ц;Р1. где 1 — единичная матрица. С помощью элементарных операций над строками каждая матрица, содержащая по меньшей мере столько же столбцов, сколько и строк, может быть приведена к каноническому ступенчатому виду, но не к указанному выше его частному случаю.
В4 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ Теорема 2.6.4. Если матрицы А м А' получаются одна из другой с помощью элементарных операций, то пространства строк этих матриц совпадают. Доказательство. Каждая строка из А' является некоторой линейной комбинацией строк матрицы А. Следовательно, каждая линейная комбинация строк матрицы А' также является линей- ной комбинацией строк матрицы А, и, таким образом, простран- ство строк матрицы А содержит пространство строк матрицы А'. Но матрица А получается из матрицы А' с помощью обратных элементарных операций, и, следовательно, пространство строк матрицы А' содержится в пространстве строк матрицы А. Таким образом, А и А' имеют одно и то же пространство строк. □ Теорема 2.6.5. Если матрицы К и А' связаны между собой последовательностью элементарных операций над строками, то любое множество линейно независимых столбцов в А линейно не- зависимо и в fit'. Доказательство. Так как для элементарных операций над стро- ками первого и второго вида теорема очевидна, то достаточно доказать ее только для элементарной операции третьего вида. Итак, предположим, что А' получается из А прибавлением крат- ного строки а к строке р. В любой линейно зависимой комбинации столбцов матрицы А' элементы строки а должны давать нуль и, следовательно, не оказывать никакого воздействия на строку р. Таким образом, рассматриваемое множество столбцов в матрице А также является линейно зависимым. Теорема 2.6.6. (k X п)-матрица fit, k строк которой линейно независимы, содержит k линейно независимых столбцов. Доказательство. Приведем А к каноническому ступенчатому виду А'. Так как строки линейно независимы, то ни одна из них не является нулевой. Следовательно, для каждой строки суще- ствует столбец, элемент которого в этой строке равен единице, а в каждой другой строке равен пулю. Множество из k таких столбцов матрицы А' линейно независимо, и, следовательно, в силу теоремы 2.6.5 это же множество столбцов линейно незави- симо в А. □ Теорема 2.6.7. Ранг матрицы А по строкам равен ее рангу по столбцам и равен размеру наибольшей квадратной подматрицы, определитель которой отличен от нуля. (Поэтому данная вели- чина называется просто рангом матрицы.) Доказательство. Достаточно показать, что ранг матрицы А по строкам равен размеру наибольшей квадратной подматрицы с ненулевым определителем. То же самое доказательство при- менительно к транспонированной матрице дает доказательство
2.К. ЛИНЕЙНАЯ АЛГЕБРА 65 утверждения для ранга матрицы по столбцам, и, таким образом, доказывается, что ранг по строкам равен рангу по столбцам. Подматрица матрицы А получается выбрасыванием из А некоторого числа строк и столбцов. Пусть М — невырожденная квадратная подматрица матрицы А наибольшего размера. Со- гласно теореме 2.6.3 (viii), строки матрицы М линейно незави- симы, и, следовательно, их продолжения до строк матрицы А также должны быть линейно независимыми. Следовательно, ранг матрицы А по строкам не меньше размера матри- цы М. С другой стороны, выберем произвольное множество из k ли- нейно независимых строк матрицы А. Согласно теореме 2.6.7, матрица, образованная такими строками, имеет k линейно незави- симых столбцов. Таким образом, определитель матрицы, состав- ленной из расположенных на пересечении этих k столбцов и этих k строк элементов, будет отличен от нуля. Следовательно, размер наибольшей невырожденной подматрицы не меньше ранга ма- трицы А по строкам. Это завершает доказательство. □ Пусть А —квадратная (лХл)-матрица с ненулевым опреде- лителем. Тогда, согласно теоремам 2.6.4 и 2.6.7, ее каноническая ступенчатая форма является (пХл)-матрицей, все строки которой отличны от нулевой, и, следовательно, представляет собой еди- ничную матрицу. Так как А может быть получена из I обраще- нием последовательности элементарных операций над строками, то А можно записать через элементарные матрицы: A-FJ.-F,. Теорема 2.6.8. Если в кольце (п 'йу-матриц над полем F С — АВ, то det (С) = det (A) det (В). Доказательство. Шаг 1. Сначала покажем, что если det (А) или det (В) равны нулю, то и det (С) равен нулю. Предположим, что det (В) равен нулю; тогда по теореме 2.6.3 (viii) строки матрицы В линейно зависимы. Но строки матрицы С являются линейными комбинациями строк матрицы В. Следовательно, строки матрицы С линейно зависимы и det С равен нулю. Анвлогично исследуется случай, когда det (А) равен нулю. Шаг 2. Предположим, что det (А) не равен нулю. Тогда ма- трицу А можно записать в виде произведения элементарных матриц: А = FtFs ... Fr.
66 ГЛ- 2, ВВЕДЕНИЕ В АЛГЕБРУ Каждая из матриц F, соответствует элементарной операции над строками матрицы А, и, следовательно, согласно пп. (iii), (v) и (vii) теоремы 2.6.3, имеем det (АВ) -- det [(FjFa ... Fr) В] = det [Fj (Fs ... F,B)] = = (det Fi) det (FB ... FrB) = (det Ft) (det F2) ... ... (det Fr) (det B). При В — I это дает det (A) = (det F,) (det F2)... (det Fr). Подставляя последнее равенство в формулу для случая произ- вольной В, получаем det (АВ) — det (A)-det (В), что и требова- лось доказать. □ Одно из следствий этой теоремы состоит в том, что если С — -= АВ, то матрица С обратима тогда и только тогда, когда обе матрицы А и В обратимы, так как квадратная матрица имеет обратную тогда и только тогда, когда се определитель отличен от нуля. Заканчивая данный параграф, завершим работу, оставшуюся от предыдущего параграфа. Теорема 2.6.9. Если размерность подпространства IV' век- торного пространства всех п-последовательностей равна k, то размерность его ортогонального дополнения W-1- равна п — k. Доказательство. Пусть Jglt .... g(i) —базис подпространства 1Г; определим матрицу G равенством "gi ' где строками являются базисные векторы. Ранг этой матрицы равен k, и размерность пространства столбцов матрицы G равна k. Вектор v принадлежит W7—, если Gvr = 0, так как в этом случае он ортогонален к каждому базисному век- тору. Пусть (hj, hr} —базис подпространства W1. Попол- ним этот базис до базиса всего пространства (hj, hr, fn ..., fn-r}- Теперь вектор v из пространства столбцов матрицы G запишется в виде v = GbT, где вектор b представляет собой не- которую линейную комбинацию базисных векторов. Следова- тельно, каждый вектор в пространстве столбцов матр|щы G
ЗАДАЧИ 57 должен записываться в виде линейной комбинации векторов (GhL GhJ, Gtf, GfT, ... GfJ_,}. Покажем теперь, что векторы (GfT, GfJ_Л образуют базис пространств столбцов матрицы G. Так как Gh‘ = 0, то это множество порождает пространство столбцов матрицы G. Далее, эти векторы линейно независимы, так как если o,(GfI)T - I (GIL и поэтому й, — ай — - - - — оп_г = 0, поскольку единственной линейной комбинацией векторов ft, fn_r, принадлежащей нулевому пространству матрицы G, является нулевой вектор 0. Следовательно, {GfT, Gf«-J образуют базис пространства столбцов матрицы G. Таким образом, п — г = k, что и доказывает теорему. □ ЗАДАЧИ 2.1. Используя вращения и отражения, отображающие на себя пятиуголь- ник, можно построить группу. а. Сколько элементов содержит эта группа? б. Является ли эта группа абелевой? в. Построить эту группу. г. Найти в этой группе подгруппу, содержащую пять элементов, и подгруппу, содержащую два элемента. д. Существует ли подгруппа этой группы, содержащая четыре эле- мента? Почему? 2.2. а. Доказать, что существует только одна группа, содержащая три элемента. Построить эту группу и доказать, что она абелева. б. Доказать, что существуют только две группы, содержащие четыре элемента. Построить эти группы и доказать, что они абелевы. Доказать, что одна из этих групп с четырьмя элементами нс содержит элемента четвертого порядка (эта группа называется четвертой группой Клейна). 2.3. Пусть групповая операция в группах из задачи 2.2 называется сло- жением. а. Определить умножение так. чтобы превратить эту трехэлементную группу в кольцо. Единственно ли опо? б. Для каждой из четырехэлементных групп Определить умножение так, чтобы превратить их в кольца. Единственны лп эти кольца5 2.4. Какие из трех колец задачи 2.3 являются также и пслями? Можно ли Задать умножение другим способом и получить при этом поле? 2.5. Доказать, что множество всех целых чисел (положительных, отри- цателыгых и нуля) не образует группу относительно операции вычитания. 2.6. Привести пример кольца бед единицы.
68 ГЛ. 2. ВВЕДЕНИЕ В АЛГЕБРУ 2.7. Рассмотрим множество S {0 = I, 2, 3} с операциями Является ли оно полем? 2.8. Пусть G — произвольная группа (не обязательно конечная). Для удобства назовем груцповуЮ операцию умножением, а единичный элемент единицей. Пусть g—произвольный элемент, a v (если оно существует) — наи- меньшее целое число, такое, что gv — 1, где gv означает gg- .. -g (v раз). Тогда v называется порядком элемента g. Доказать, что подмножество {/’, g*,.... gv, /?'} образует подгруппу группы G. Доказать, что эта подгруппа абелева, даже если G не является абелевой. 2.9. Доказать теоремы 2.3.3 и 2.3.4. 2.10. Пусть задано некоторое кольцо с единицей I. и пусть a-b~ 1. До- казать эквивалентность следующих утверждений' (1) Ь— левый обратный к и, (ii) если ах = 0, то х — 0. (ill) если yb — 0, то у = 0. Замечание. В некоторых кольцах условие (ii) не выполняется. В таких кольцах элемент может иметь только правый обратный или только левый обратный. 2.11. Поле из четырех элементов GF (4) задается арифметическими табли- цами Решить в GF (4) систему уравнений 2x4-// — 3, х4-2р=3. 2.12. Поле с тремя элементами GF (3) задается арифметическими таблицами + 0 12 II 1 2 0 0 12 0 0 0 0 1 12 0 1 0 1 2 2 2 0 1 2 0 2 1
ЗАДАЧИ В9 Вычислить определитель матрицы и доказать, что ее ранг равен 3. 2.13. Привести матрицу к каноническому ступенчатому виду. Можно ли решить задачу, пе конкрети- зируя поле? Почему? 2.14. Сколько векторов содержит векторное пространство GFn (2)? 2.15. Верно ли, что если векторы х, у их — линейно независимы над GF {«?), то и векторы х + у, у + х и х + х линейно независимы? 2.18. Существует ли над полем CF (д) векторное пространство, содержащее 24 элемента и имеющее размерность, ббльшую 1? 2.17. Пусть S и Т — различные двумерные подпространства трехмерного векторного пространства; доказать, что их пересечение образует одномерное подпространство. 2.18. Пусть S — произвольное конечное множество, и пусть G— множе- ство подмножеств из элементов S. Для двух подмножеств А и В обозначим через Ли® подмножество, состоящее из элементов, принадлежащих хотя бы одному из А и В , через А П В множество элементов, принадлежащих как А, так и В, а через Л — В множество элементов, принадлежащих А и не при- надлежащих В. а. Доказать, что относительно операции объединения множеств (J множество G не является группой. б. Теоретико-множественная операция симметрической разности Д определяется равенством А А В = (Л — В) (J (В — А). Доказать, что если в качестве групповой операции в G выбрать симметрическую разность, то G на самом деле будет группой. Является ли эта группа абелевой? в. Доказать, что относительно операций Л и Л множество G образует кольцо. Является ли это кольцо коммутативным? Имеется ли в нем единица? 2.19. Поле с бесконечным числом элементов, содержащее конечное поле, также называется полем Галуа. Пусть F — множество всех формэльных вы- ражений вида НСН/С&‘< где / и J — некоторые положительные целые числа, а й; и I, — элементы поля GF (3) Предложить свои собственные определения операций сложения и умножения, такие, чтобы множество F превратвлось в поле Галуа с беско- нечным числом элементов.
60 гл- 2- ВВЕДЕНИЕ В АЛГЕБРУ ЗАМЕЧАНИЯ В этой главе рассматривался обычный материал современной алгебры. Можно указать много учебников, в которых этот материал излагается более детально. В качестве легко удваиваемого вводного курса, по уровню достаточного для данной книги, мы рекомендуем кишу Биркгофа и Маклейна [1953]. Моногра- фия Ban дер Вардена [1950, 1953] представляет собой курс белее высокого уровня, адресованный в основном математикам и углубленно излагающий многие вопросы. Материал по линейной алгебре и теории матриц можно найти также и в учебниках, специально посвященных этям разделам алгебры. Особенно подходящей является книга 'Грааля и Торнгейма [1957], так как она нс предполагает никакой предварительной подготовки х). Поля Галуа названы в честь Эвариста Галуа (1811—1832). Абелевы группы названы в честь Нильса Хенрика Абеля (1802—1829). В Не требующее предварительной подготовки хорошее изложение начал линейной элгебры и теории матриц можно найти также в книге. Голозина Л. И. Линейная алгебра и некоторые ее приложения. -4-е изд. —М.: Наука, 1985. Более углубленное изложение содержится в следующих книгах- Курош А. Г. Курс высшей алгебры. — 11-е изд. —М.: Наука, 1975; Мальцев А. И. Основы линейной алгебры. — 4-е изд. — М. Наука, 1975. —Прим, перев.
ГЛАВА 3 ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ Большинство известных хороших кодов принадлежит классу ли- нейных кодов. Этот класс кодов определяется специально выбирае- мой структурой кода. Такая структура облегчает поиск хороших кодов, а также помогает создать хорошие кодеры и декодеры. Следует подчеркнуть, что мы изучаем линейные коды не потому, что это лучшие коды, а скорее потому, что в настоящее время мы располагаем весьма скудной информацией о построении нелиней- ных кодов. В то же время хорошие линейные коды существуют и некоторые из них известны. Большинство наиболее эффективных теоретических методов применимо только к линейным кодам, и поэтому при поисках новых кодов обычно ограничиваются клас- сом линейных кодов. 3.1. СТРУКТУРА ЛИНЕЙНЫХ БЛОКОВЫХ КОДОВ Напомним, что векторное пространство GF'- (<?) представляет со- бой множество п- последовательностей элементов из GF (q) с по- компонентным сложением и умножением на скаляр. Наиболее важным частным случаем является GFn (2) — векторное простран- ство двоичных слов длины п, в котором при сложении двух век- торов в каждой компоненте происходит сложение по моду- лю 2. Определение 3.1-1. Линейный код есть подпространство в в GF" («у). Таким образом, .линейный код есть непустое множество л-по- следовательностей над GF (q), называемых кодовыми словами, та- кое, что сумма двух кодовых слов является кодовым словом, и произведение любого кодового слова на элемент поля также яв- ляется кодовым словом. В любом линейном коде нулевое слово как начало координат векторного пространства всегда есть кодо- вое слово. Точнее, если с — кодовое слово, то — с также коде-
62 гл. 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ вое слово и, следовательно, с (—с) тоже будет кодовым сло- вом. Каждое слово в линейном коде связано с остальными словами кода так же, как любое другое кодовое слово. Расположение со- седних кодовых слов вокруг нулевого слова есть типичное распо- ложение слов вокруг любого другого кодового слова. Например, предположим, что с — некоторое кодовое слово и c|t ..., сг — кодовые слова, находящиеся на некотором расстоянии d от с; тогда с - с —нулевое слово и с, —с, с3 — с, с, — — с — кодовые слова, находящиеся на расстоянии d от нуле- вого слова. Таким образом, для определения минимального рас- стояния линейного кода достаточно определить расстояние между нулевым словом и ближайшим к нему другим кодовым словом. Определение 3.1.2. Вес Хэмминга w (с) кодового слова с равен числу его ненулевых компонент. Минимальный вес кода w* есть минимальный вес ненулевого кодового слова. Теорема 3.1.3. Для линейного кода минимальное расстояние d* находится из равенства d* = min w(c) = at*, cfO где минимум берется по всем кодовым словам, кроме нулевого. Доказательство. d* = min d(cit су) — min d(0, сг — c,) = min w(c). W i t-l c*° □ Следовательно, для нахождения линейного кода, исправляющего t ошибок, необходимо найти линейный код с минимальным весом, удовлетворяющим неравенству то* > 2/ + 1- Изучение метрических свойств линейных кодов много проще, чем нелинейных. 3.2. МАТРИЧНОЕ ОПИСАНИЕ ЛИНЕЙНЫХ БЛОКОВЫХ КОДОВ Линейный код образует подпространство в GFn (q). Для изуче- ния этих кодов будет полезна теория линейных пространств. Любое множество базисных векторов может быть использовано в качестве строк для построения (k X п)-матрицы G, которая назы- вается порождающей матрицей кода. Пространство строк матрицы G есть линейный код любое кодовое слово есть линейная ком- бинация строк из G. Множество qk кодовых слов называется линей- ным (п, fe)-кодом.
S.2. МАТРИЧНОЕ ОПИСАНИЕ 63 Строки матрицы G линейно независимы, и число строк k равно размерности подпространства. Размерность всего пространства GFn (</) равна п. Всего существует qk кодовых слов, и q'1 различных ^-последовательностей над GF (q) могут быть отображены на множество кодовых слов. Любое взаимно однозначное соответствие fc-последовательно- стей и кодовых слов может быть использовано для кодирования, но наиболее естественный способ кодирования использует отобра- жение с =- 1G, где i — информационное слово, представляющее собой k-no- следователыюсть кодируемых информационных символов, а с —образующая кодовое слово «-последовательность. Зада- ваемое последним равенством соответствие между информацион- ным и кодовым словами определяет кодер и зависит от выбора базисных векторов в качестве строк матрицы G; в то же время само множество кодовых слов не зависит от этого выбора. В качестве простого примера двоичного блокового кода рас- смотрим порождающую матрицу (100101 0 10 0 11. 0 0 1 11] В этом случае информационное слово 1 = [0 1 II будет кодироваться в кодовое слово 110 0 10 1 О 1 О О 1 I = [0 1 1 1 0]. 0 О 1 1 1 J Порождающая матрица является сжатым описанием линейного кода. Сравните двоичный линейный (Ю0,50)-код, для описания которого требуется 100 x50 — 5000 битов, определяющих эле- менты матрицы G, с произвольным (100, 50)-кодом, имеющим 2Б0 кодовых слов и требующим для описания примерно 10” битов. Поскольку является подпространством, оно имеет ортого- нальное дополнение®’-*-, которое состоит из всех векторов, орто- гональных к ®’. Ортогональное дополнение также является под- пространством и, таким образом, может рассматриваться как код. Когда ®’± само рассматривается как код, оно называется кодом, дуальным к
64 ГЛ. 8. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ Ортогональное дополнение имеет размерность л —/г, и любой его базис также состоит из п — k векторов. Пусть Н — ма- трица со строками, являющимися этими базисными векторами. Тогда n-последовательность с является кодовым словом в том и только том случае, когда она ортогональна каждой вектор-строке матрицы Н, т. е. когда сНт = О, Это равенство позволяет проверить, является ли данное слово ко- довым. Матрица Н называется проверочной матрицей кода. Она является (п — k) х п матрицей; поскольку равенство сНт — О выполняется при подстановке вместо с любой строки матрицы G, то GHT = 0. Для порождающей матрицы G, рассмотренной в предыдущем при- мере, получаем что является одним из возможных выборов матрицы Н. Заметим, что точно так же, как существует много способов выбора матрицы G, существует много способов выбора матрицы Н. Теорема 3.2.1. Порождающая матрица кода ‘ё’ является про- верочной матрицей дуального кода ®’J-. Доказательство непосредственно следует из предыдущих рас- суждений. □ Саязь минимального веса кода и проверочной матрицы уста- навливается следующей теоремой. Теорема 3.2.2. Код *8 содержит ненулевое кодовое слово веса Хэмминга не более w* тогда и только тогда, когда Н содержит множество из ai линейно зависимых столбцов. Доказательство. Для любого кодового слова с выполняется равенство сНт — 0. Пусть с имеет вес w. Исключим из рас- смотрения пулевые компоненты вектора с. Полученное равенство будет соотношением линейной зависимости w столбцов из Н. Следовательно, Н содержит множество из w линейно зависимых столбцов. Обратно, если Н содержит множество из и> линейно зависимых столбцов, то найдется равная пулю линейная комбинация, соста- вленная не более чем из ю столбцов. Соответствующие w ненулевых коэффициентов определяют вектор веса не более w, для которого сНт - 0. □
S.2. МАТРИЧНОЙ ОПИСАНИЕ 66 Следствие 3.2.3. Код имеет минимальный вес не менее w тогда и только тогда, когда каждое множество из w — 1 столбцов ма- трицы Н линейно независимо. Отсюда следует, что для того чтобы найти («, /г)-код, исправля- ющий I ошибок, достаточно найти (п —k) X n-матрицу Н, в ко- торой любые 21 столбцов линейно независимы. Из данного (п, Л)-кода с минимальным расстоянием d* можно получить новый код с теми же параметрами, если в каждом кодо- вом слове выбрать две позиции и поменять местами символы в этих позициях. Однако в этом случае мы получим код, который лишь тривиальным образом отличается от исходного. Говорят, что такой код эквивалентен исходному. Вообще два линейных кода, одинаковых с точностью до перестановки координат, называются эквивалентными. Порождающие матрицы 6 и G' эквивалентных кодов просто связаны друг с другом. Сам код является пространством строк ма- трицы G и поэтому остается неизменным при элементарных опера- циях над строками. Перестановка координат кода эквивалентна перестановке столбцов в матрице G. Таким образом, два кода эквивалентны тогда и только тогда, когда их порождающие ма- трицы получаются одна из другой посредством: 1) перестановки столбцов и 2) элементарных операций над строками. Каждая порождающая матрица G эквивалентна некоторой ма- трице канонического ступенчатого вида, и, поскольку строки G линейно независимы, все строки эквивалентной матрицы являются ненулевыми. Следовательно, с точностью до перестановки столб- цов любая порождающая матрица эквивалентна матрице, которая в первых k столбцах содержит единичную подматрицу размером k х k. Эквивалентную матрицу можно записать в виде С == [I : Р], где Р есть k х (п —/г)-матрица. Любая порождающая матрица может быть приведена к такому частному виду при помощи после- довательности элементарных операций над строками и последу- ющей перестановки столбцов. Такую порождающую матрицу будем называть порождающей матрицей в систематическом виде. Предположим, что G =-. [I; Р ]. Тогда естественным опреде- лением проверочной матрицы в систематическом виде, очевидно, яаляется равенство Н = ]— Рт I], поскольку ОН* = ]1 : Р] [ .Р. | = -- Р + Р = 0.
I 66 гл. i. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ Определение 3.2.4. Систематическим ') кодом называется код, у которого каждое кодовое слово начинается с информационных символов. Оставшиеся символы называются проверочными сим- волами. Принято говорить о систематическом коде, хотя это всегда означает систематическое кодирование соответствующего кода Теорема 3.2.5. Каждый линейный код эквивалентен система- тическому линейному коду. Доказательство. Систематический линейный код кодируется умножением информационного вектора на порождающую матрицу G в систематическом виде, а каждая порождающая матрица G эквивалентна некоторой систематической матрице. □ В качестве примера выберем тогда i = |0 1 II при систематическом кодировании отобра- зится в слово с -[011101. Рассматривая код в систематическом виде, можно получить простое неравенство, связывающее параметры кода. Эта граница является очень неточном, и большинство хороших кодов имеет минимальное расстояние, существенно меньшее, чем следует из границы, но бывают случаи, когда она оказывается полезной Пусть задан некоторый систематический (л, /г)-линейиый код с минимальным расстоянием d*. Следующая теорема накладывает ограничение на возможные значения (n, k, d*). Теорема 3.2.6 (граница Синглтона). Минимальное расстоя- ние (минимальный вес) любого линейного (n, k)-Koda удовлетворяет неравенству d* < 1 4- п — k. Доказательство. Ненулевое слово минимального веса в коде имеет вес d*. Существуют слова систематического кода с одним ненулевым информационным символом ил /г проверочными сим- волами. Такое кодовое слово не может иметь вес, больший 1 + ') В гл. 5 будут рассматриваться циклические коды и будет удобно по со- глашению считать, что кодовое слово с начинается с координаты с максималь- ным номером сп j и кончается св В этом случае будем использовать экви- валентные матрицы вида G — [Р 1] и Н = [I : — Рт] для некоторой новой Р. Эти матрицы получаются обращением всех столбцов и строк матриц, записанных в систематическом виде. Такие матрицы также называются система- тическими
3 3. СТАНДАРТНОЕ РАСПОЛОЖЕНИЕ 67 + п —k. Таким образом, минимальный вес кода не может быть больше I + п — k □ Определение 3.2.7. Любой код с минимальным расстоянием, удовлетворяющим равенству d* - 1 In — k, называется кодом с максимальным расстоянием. Граница Синглтона показывает, что для исправления t ошибок код должен иметь не менее 2t проверочных символов (2 провероч- ных символа на ошибку). Большинство кодов, даже оптималь- ных, имеют намного больше проверочных символов, чем требует граница Синглтона, но параметры некоторых кодов удовлетво- ряют 1ранице с равенством. Коды с максимальным расстоянием имеют точно 2t проверочных символов. 3.3. СТАНДАРТНОЕ РАСПОЛОЖЕНИЕ Поскольку разность двух кодовых слов линейного кода является кодовым словом, нулевое слово всегда будет кодовым. Если мы знаем, какое множество принятых слов линейного кода лежит ближе всего к нулевому слову, то с помощью простого сдвига на- чала координат нетрудно выяснить, какие из принятых слов лежат ближе всего к любому другому кодовому слову. Пусть d* нечетно и d* — 21 + 1. Внутри сферы радиуса t с центром в нулевом слове находится множество точек S„= |V|<I(1), Эта сфера содержит все принятые слова, которые декодируются в нулевое кодовое слово. Внутри сферы радиуса t с центром в ко- довом слове с находится множество точек Sc = {V | d(c, v) с тогда St =: So • |- c = {v -|- c | v £ <S>|. Таким образом, мы можем выписать точки, лежащие внутри каждой сферы декодирования или (что эффективнее) внутри сферы декодирования с центром в нулевом слове, а точки, лежащие вну- три других сфер получать ио мере необходимости с помощью про- стого сдвига. Стандартное расположение представляет собой способ описа- ния всех этих сфер. Пусть 0, Cj, Сз, .... суть кодовых слов (п, /г)-кода. Построим таблицу, изображенную на рис. 3.1» следующим образом. В первой строке выпишем все кодовые слова- Из оставшихся в GFn (<?) слов, лежащих на расстоянии 1 от нуле- вого слова, выберем любое и обозначим егр vx. Во второй строке з*
68 ГЛ- 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ Сфера бекойирсеания Область бекейироеания 0 Сг 0+v, сг +v, с5 +V| V +Vj Смежный I масс | 0+v* сг*у> Cj +v2 С?Л +v2 1 0 +Vj с, ♦ V» Горизонтальная Cj + Ч' c?h+vi o+V-i 0+v, c2»v, с5+Ч c«* + Vh +vi Лойеры смежных Область межбу классов сферами, тяготеющая к С3 Рис. 3.1. Стандартное расположение. запишем 0 -? V,, Ог + V|, с3 + vb .... ц_ vb Таким же, образом строятся следующие стрски. На /-м шаге выберем слово Vj, которое является ближайшим к нулевому и отсутствует в пре- дыдущих строках, и запишем в j-й строке 0 4- Vj, с2 + vt с3 -j- Vj, .... с^* -j- V/. Эта процедура закончится, когда после очередного шага не останется неиспользованных слов. Если рассматривать код как подгруппу, то описанная проце- дура порождает смежные классы по этой подгруппе. Следова- тельно, процесс закончится, когда каждое слово в таблице встре- тится ровно один раз. По следствию 2.2.4 всего в таблице будет стрОк Слова из первого столбца называются лидерами смеж- ных классов. Поскольку строки таблицы построены подобно чешуйкам лука, начиная с нулевого слова, первый столбец должен содержать все слова, лежащие внутри сферы декодирования с центром в ну- левом слове, т. е. все слова, находящиеся на расстоянии не более
3.3. СТАНДАРТНОЕ РАСПОЛОЖЕНИЕ 69 t от нулевого. Когда чешуйки заполнят всю внутренность сферы радиуса t вокруг пулевого слова, проведем в таблице горизон- тальную черту Могут остаться векторы, не занесенные в таблицу выше этой черты, и далее в стандартном расположении эти век- торы будут сопоставляться ближайшим, но отчасти произволь- ным кодовым словам. Существуют два основных класса декодеров, которые могут быть описаны с помощью стандартного расположения: полные декодеры и неполные декодеры. Полный декодер сопоставляет принятому слову ближайшее кодовое слово. Принятое слово необ- ходимо найти в стандартном расположении, определить столбец, в котором оно находится, и декодировать его в кодовое слово в верхней позиции этого столбца. Неполный декодер сопоставляет каждому принятому слову кодовое слово, находящееся от него на расстоянии не более /, если такое существует, в противном же случае отказывается от деко- дирования. Принятое слово необходимо найти в стандартном рас- положении. Если оно лежит выше горизонтальной черты, то деко- дируем его в кодовое слово в вершине столбца, в котором оказы- вается принятое слово. Если же оно лежит ниже горизонтальной черты, то помечаем принятое слово как не поддающееся декоди- рованию. В таком слове имеется более t ошибок. В качестве примера рассмотрим (5, 2)-код с порождающей матрицей Этот код позволяет исправлять одну ошибку. Стандартное располо- жение выглядит следующим образом: Сферы радиуса 1 не пересекаются. Имеются всего четыре сферы, шесть точек внутри ка/кдой сферы и восемь точек вне каждой сферы.
70 ГЛ- s. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ Очевидно, что ценность стандартного расположения относи- тельна. Для больших п и k составлять такую таблицу было бы не практично. Таблицу можно упростить, если мы сможем помнить только первый столбец и находить остальные столбцы по мере необхо- димости. Это можно сделать, введя понятие синдрома оши- бок. Для любого принятого вектора v определим синдром равен- ством S =: vHT. Теорема 3.3.1. Все векторы из одного смежного класса имеют одинаковый синдром, присущий только этому смежному классу. Доказательство. Если v и v’ лежат в одном смежном классе, то v — c-t + у, v' — Cj + у для некоторого у и кодовых слов сг и С;. Для любого кодового слова с выполняется равен- ство сНт — О. Отсюда получаем s = vH’ = уНг, s' = v'HT = уНт, и, следовательно, s — s'. Обратно, допустим, что s = s'; тогда (v —v') Нт =. О, и поэтому разность v —v' является кодовым словом. Следовательно, v и v' принадлежат одному смежному классу. □ Любые два вектора из одного смежного класса имеют одинако- вый синдром. Следовательно, нам необходимо только свести в таб- лицу синдромы и лидеры смежных классов. Затем мы можем про- изводить декодирование следующим образом. По принятому вектору v вычисляем синдром и находим соответствующий этому синдрому лидер смежного класса. Этот лидер является разностью между принятым словом и кодовым словом, которое одновре- менно является центром сферы кодирования. Таким образом, мы исправим ошибку, вычтя из слова v лидер смежного класса. В примере, приведенном выше, проверочной матрицей будет [111003 10010, 11001]
3.4. КОДЫ ХЭММИНГА 71 н новая таблица запишется в виде Ливеры смежных классов ооооо О О О О I 0 0 0 10 0 0 10 0 0 10 0 0 10 0 0 0 0 0 0 1 I 0 0 110 Синврсмы ООО О О I О I о 1 о о I О I О I I 1 I о Эта таблица проще, чем стандартное расположение. Предположим, что принят вектор v — 10010. Тогда s = vHT - 101. Лидер смежного класса будет равен 01000. Отсюда получим, что пере- данное слово равно 10010 01000 = 11010, а информационное слово равно II. 3.4. КОДЫ ХЭММИНГА Код, у которого минимальное расстояние не менее трех, в силу следствия 3 2.3 имеет проверочную матрицу, в которой все столбцы ненулевые и различные. Если проверочная матрица двоичного кода имеет tn строк, то каждый столбец оказывается двоичным чис- лом длины т. Существует всего 2“ — 1 возможных столбцов. Следовательно, если Н — матрица двоичного кода с d* 3— имеет т строк, то она может иметь не более 2т 1 столбцов В результате получается (2т — 1, 2т - - 1 — /п)-код. 11ростейший нетривиальный пример соответствует т 3. В этом случае ма- трицы Н и G в систематическом виде запишутся следующим обра- зом: Г 1 1 0 1 1 о оп Н =1 10 1 1 О 1 о I | 0 1 1 I О О 1J "10001 10 0100101 G ~ 0 0 1 0 0 1 1 0 0 0 1 1 1 1
ЧЧ. ГЛ- s. Линейные блоковые коды Такие —1,2'" — I - /д)-коды называются кодами Хэм- минга. Ясно, что каждая пара столбцов матрицы Н линейно незави- сима (поскольку никакая пара различных двоичных векторов не дает в сумме нуля), а некоторые множества из трех столбцов будут линейно зависимы. Следовательно, согласно теореме 3.2.2, минимальный вес кода равен 3 и код исправляет одиночные ошибки. Определение кодов Хэмминга легко обобщить на случай боль- ших алфавитов. Достаточно просто заметить, что главная идея построения таких кодов состоит в определении матрицы Н, любая пара столбцов которой линейно независима. Для задания прове- рочной матрицы нельзя использовать все ненулевые /л-последо- вательности над GF (<;), q =#= 2, поскольку некоторые из них по- парно линейно зависимы. Чтобы обеспечить линейную независи- мость, выберем в качестве столбцов матрицы все т-последова- тельности, у которых первая ненулевая компонента равна единице. Тогда все столбцы будут попарно линейно независимыми, а неко- торые тройки столбцов могут оказаться линейно зависимыми, и минимальный вес в коде будет равен трем. Всего существует ((fn - !)/(? — I) таких различных столбцов. Следовательно, .получившийся код будет ((</" — l)/(q — 1), (qm — !)/(<? — 1) —/nj-кодом. Код Хэмминга, исправляющий оди- ночные ошибки, существует для каждого q, для которого сущест- вует поле GF (q), и для любого т. Для примера в табл. 3.1 приве- дены параметры нескольких кодов Хэмминга. Таблица 3.1 Параметры (л. к) некоторых кодов Хэмминга GF(2) GF14) GM8I GH16) • GF(27) Р.4) (5.3) (9.7) (17. 15) (28.26) (15. II) (21. 18) (73.70) (273.270) (757,754) (31.26) (85.81) (585.581) (63. 57) (341,336) (127. 120) Например (13,10)-код Хэммнпга над GF (3) задается провероч- ной матрицей Г । 1 ) 1 । । । 1 о о 1 о о! Н-|о О I 1 I 2 2 2 I 1 (> | О и 2 О I 2 0 1 2 I 2 О О 1J
8.S. СОВЕРШЁННЫЕ И КВАЗНСОВЕРШЕННЫЕ КОДЫ 73 и порождающей матрицей Второй пример носит более практический характер. Предполо- жим, что ЭВМ и периферийное устройство связаны кабелем, по которому параллельно передаются 4 бита. Четыре бита предста- вляют один 6-10-символ, и передается последовательность таких информационных символов. Нам бы хотелось объединить символы в блоки и защитить каждый блок от одиночных ошибок. Взяв q =. 16 и т = 2, мы видим, что можно было бы получить (17, 15)- код Хэмминга над полем GF (16) при условии, что такое поле суще- ствует. Но поле GF (16) уже было приведено на рис. 2.1 (хотя мы еще не проверили, что оно удовлетворяет аксиомам поля). Исполь- зуя это поле, можно построить порождающую матрицу (17, 15)- кода Хэмминга над GF (16) и с ее помощью выписать следующие соотношения для проверочных символов: Р1 =-' 11 + «2 “Г *3 4-- Г *14 I *15. -- *1 — 2tu |- З*3 4---F EiH 4- Л15. После каждого блока из 15 информационных символов ставятся эти два проверочных символа. Используя это, декодер может ис- правлять одиночные ошибки в блоке из 17 символов. Конечно, все это имеет смысл только в том случае, когда поле GF (16) суще- ствует и задано так, как на рис. 2.1. Прежде чем проводить только что описанное построение в некотором поле GF (q), мы должны доказать, что такое поле существует, и задать в нем сложение и умножение. 3.5. СОВЕРШЕННЫЕ И КВАЗНСОВЕРШЕННЫЕ КОДЫ Представьте себе маленькие сферы с центрами во всех кодовых словах; все эти сферы имеют один и тот же(цечеочисенный) радиус. Пусть теперь радиус сфер увеличивается (оставаясь целыми чис-
74 ГЛ. 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ ламп) до тех пор, пока дальнейшее увеличение радиуса будет не- возможно без пересечения сфер. Значение этого радиуса равно числу исправляемых кодом ошибок. Этот радиус называется ра- диусом сферической упаковки кода. Теперь позволим радиусу уве- личиваться далее (оставаясь при этом целым числом) до тех пор, пока каждая точка пространства не окажется внутри хотя бы одной сферы. Такой радиус называется радиусом покрытия кода. Радиус упаковки и радиус покрытия кода могут совпадать; если это так, то построение стандартного расположения закон- чится в тот момент, когда исчерпаются все векторы внутри сфер радиуса t. Все точки пространства содержатся внутри этих сфер, и ни одна точка не остается вне сфер. Определение 3.5.1. Совершенный код есть код, для которого сферы некоторого одинакового радиуса вокруг кодовых слов, не пересекаясь, покрывают все пространство. Совершенный код удовлетворяет границе Хэмминга из задачи 15с равенством. Код Хэмминга, имеющий длину п -- (qm — — !)/($ — 1), является совершенным. Это происходит потому, что внутри каждой сферы радиуса 1 содержится 1 п (q — 1) = ср* точек, и число точек в пространстве, деленное на число сфер, равно = qm, поскольку п — k - т. Совершенные коды (в случаях, когда они существуют) обладают замечательными свойствами, и с ними приятно иметь дело, но они столь редки, что имеют ограни- ченное практическое значение. Определение 3.5.2. Квазиссвершенный код — это код, у кото- рого сферы радиуса t вокруг каждого кодового слова не пере- секаются и все слова, не лежащие внутри какой-либо из этих сфер, находятся на расстоянии t -|- 1 хотя бы от одного кодового слова. Квазисовершенные коды встречаются чаще, чем совершенные коды. Когда для заданных п и k существует такой код (и не суще- ствует совершенного кода), то для этих п и k не существует кода с большим значением d*. Однако мы должны снова отметить, что квазисовершенные коды редки и по всей видимости не являются особо важными в практических приложениях. 3.6. ПРОСТЫЕ ПРЕОБРАЗОВАНИЯ ЛИНЕЙНОГО КОДА Существует набор простых преобразований, которые, незначи- тельно изменяя исходный линейный код, приводят к новому коду Если новый код также оказывается линейным, то эти преобразо- вания соответствуют небольшим изменениям порождающей ма-
S.fi. ПРОСТЫЕ ПРЕОБРАЗОВАНИЯ ЛИНЕЙНОГО КОДА 7g трицы G; например, можно добавить в эту матрицу столбец или строку, выбросить из нее столбец пли строку, добавить одновре- менно столбец и строку, выбросить одновременно столбец и строку. Все эти изменения кода легко описать, хотя может оказаться, что непросто найти такое преобразование, которое необходимо в каж- дом конкретном случае. Длину кода п можно увеличить за счет увеличения k или п — k. Мы будем называть такие преобразования удлинением и расшире- нием кода соответственно и объединим оба этих понятия более общим понятием увеличения кода Под увеличением кода мы пони- маем увеличение длины или за счет расширения, или за счет удли- нения. Шесть основных преобразований кода выглядят следую- щим образом. Расширение кода. Увеличение длины путем добавления новых проверочных символов, что приводит к возрастанию большего размера порождающей матрицы. Удлинение кода. Увеличение длины кода путем добавле- ния новых информационных символов, что приводит к увели- чению обоих размеров порождающей матрицы па одно и то же число. Выкалывание кодовых координат. Уменьшение длины кода уда- лением проверочных символов, что приводит к уменьшению боль- шего размера порождающей матрицы. Укорочение кода. Уменьшение длины кода удалением информа- ционных символов, что приводит к уменьшению обоих размеров порождающей матрицы на одно и то же число. Пополнение кода. Увеличение числа информационных симво- лов без увеличения длины кода, что приводит к увеличению мень- шего размера порождающей матрицы. Код с выбрасыванием. Уменьшение числа информационных сим- волов без изменения длины кода, что приводит к понижению мень- шего размера порождающей матрицы. Указанные преобразования можно использовать для модифи- кации известных кодов, чтобы сделать их подходящими для каких либо конкретных приложений, а также для получения новых клас- сов хороших кодов. Любой двоичный (п, 1г, й*)-код с нечетным минимальным рас- стоянием можно расширить до (п -|- 1, 1г, d* -|- 1)-кода добавле- нием к каждому кодовому слову суммы всех его компонент в каче- стве проверки на четность Так происходит потому, что в случае, когда исходное слово имеет нечетный вес, к нему будет добав- ляться единичный символ. Следовательно, все кодовые слова веса d* становятся кодовыми словами веса d* 4- 1 Если Н
76 ГЛ. 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ проверочная матрица исходного кода, то расширенный код будет иметь проверочную матрицу В частности, каждый (2т — 1,2"’ — 1 — /п)-код Хэмминга может быть расширен до (2"1, 2™ т)-кода, исправляющего одиночные ошибки и обнаруживающего двойные ошибки; обычно этот код также называется кодом Хэмминга. Можно произвести и редукцию кода, переходя к коду над меньшим полем. Из некоторого кода над полем GF (</”) выберем все слова с координатами из подполя GF (<у). Получившийся код называется подкодом над подполем исходного кода. Если исходный код является линейным, то лолкод над под- йолем также линеен, но не является подпространством исходного кода. Это происходит потому, что подпространство должно содер- жать все возможные произведения кодовых слов на элементы поля GF (qm). Подкод над подполем является линейным потому, что над нодполем GF (q) все линейные комбинации кодовых слов будут оставаться в подкоде над подполем. Любое множество базисных векторов в подкоде над подполем является линейно независимым также и в поле GF (qn), и поэтому размерность исходного поля не меньше размерности подкода над подполем. Обычно, однако, ис- ходный код имеет большую размерность; подкод над подполем имеет меньшую скорость, чем исходный код. 3.7. КОДЫ . РИДАМ АДЛЕРА Коды Рида—Маллера представляют собой класс линейных кодов над GF(2) с простым описанием и декодированием, осуществляе- мым методом простого голосования. По этим причинам коды Рида— Маллера играют важную роль в кодировании *),хотя если судить об этих кодах по минимальному расстоянию, то, за некоторыми исключениями, они не заслуживают особого внимания. Для лю- бых целых т и г < т существует код Рида Маллера длины 2“, который называется кодом Рида—Маллера r-го порядка длины 2Ш. Код Рида—Маллера является линейным кодом. Мы определим этот код через порождающую матрицу; эту матрицу будем строить '} Кодч Рида—Маллера были использованы при передаче фотографий Марса космическим кораблем Маринер н 1972 г В настоящее время для этой цели можно было бы использовать более эффективное кодирование
8.7. КОДЫ РИДА МАЛЛЕРА 77 в удобной для декодирования несистематической форме. Прежде всего определим покомпонентное произведение двух векторов а и Ь; если а == (ос„ аь .... ап_л) и b = (Ьо, Ь,....bn_t), то их произведение равно вектору ab = (а0Ь0, aJb.........an_ibn_i)- Порождающая матрица кода Рида—Маллера r-го порядка длиной 2т определяется как совокупность блоков где Go — вектор размерности п = 2т, состоящий из одних еди- ниц; G, есть (/и х2<”)-матрица, содержащая в качестве столбцов все двоичные /^-последовательности; строки матрицы G( полу- чаются из строк матрицы Gr как все возможные произведения / строк из Gv Для определенности будем считать, что первый стол- бец в G, состоит из одних нулей, последний — из одних единиц, а остальные т-последовательности в G, расположены в порядке возрастания, считая, что младший бит расположен в нижней строке. Поскольку существует всего ("') способов выбора I строк, входящих в произведение, то матрица Gz имеет размер (r) X X 2”. Ясно, что для кода Рида—Маллера порядка г ‘=+(7) + - н(7). «-*='+(?)+• -• что обеспечивается линейной независимостью строк в матрице G. Код Рида—Маллера нулевого порядка является (и, 1)-кодом. Это просто код с повторением, который тривиально декодируется с помощью мажоритарного метода. Минимальное расстояние та- кого кода равно 2т. В качестве примера положим т -= 4, п — 16, г — 3. Тргда G0 = [l 11111111111111 lj = [aj, 0000000011111111“] la, G, = 0000111100001111 0011001100110011 0101010101010101 a, a, а.з
78 ГЛ. S. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ Поскольку G, имеет 4 строки, матрица G2 имеет (2) строк: “6 000000000001 1 1 1“ 00000000001 1001 1 000000000101010 1 000000110000001 1 000001010000010 1 000100010001000 1 а,а2 а,ал aiai а2а3 айа4 аяа. а матрица Ga имеет ( 3 ) строк: Таким образом порождающая матрица кода Рида—Маллера третьего порядка длины 16 является (15Х 16)-матрицей вида Эта порождающая матрица задает (16, 15)-код над GF (2) (на са- мом деле это просто код с проверкой на четность). Другой код Рида—Маллера может быть получен с использованием этих ма- триц, если мы положим г - 2. В этом случае порождающая ма- трица имеет вид -Е] и задает (16, 11)-код над GF (2). (В действительности это (15, 11)- код Хэмминга, расширенный с помощью проверки на четность.) Из определения порождающей матрицы ясно, что код Рида— Маллера r-го порядка может быть получен пополнением кода Рида—Маллера (г — 1)-го порядка, а код Рида—Маллера (г - 1)- го порядка получается из кода r-го порядка с помощью выбрасы- вания. Поскольку код Рида—Маллера /"-го порядка содержит код (г — 1)-го порядка, ясно что его минимальное расстояние не может быть больше минимального расстояния кода (г — 1)-го порядка. В дальнейшем мы докажем, что код Рида—Маллера г-го порядка имеет минимальное расстояние d* — 2т г.
3.7. КОДЫ РИЛА—МАЛЛЕРА 79 Каждая строка матрицы G( имеет вес 2m~t. Таким образом, любая строка матрицы G имеет четный вес, а сумма двух двоичных векторов четного веса также имеет четный вес (см. задачу 3.11). Следовательно, все линейные комбинации строк матрицы G имеют четный вес, а это означает, что все кодовые слова имеют четный вес. Матрица G, содержит строки весом 2т~г, и, следовательно, ми- нимальный вес кода не превосходит 2"1’ г. Мы должны доказать, что строки G линейно независимы, и найти минимальный вес кода. Мы докажем, что код имеет мини- мальный вес 2т~' и строки в матрице 6 линейно независимы. Для этого мы построим алгоритм декодирования — алгоритм Рида, который позволяет исправлять -2т~' — 1 ошибок и восстанавливать k информационных символов. Отсюда следует, что минимальное расстояние будет не меньше 2т ' — 1, но оно долж- но быть четным и поэтому будет не меньше 2т~г. Алгоритм Рида был разработан специально для кодов Рида - Маллера. Можно, конечно, использовать процедуру синдромного декодирования, описанную в § 3.3, но в данном случае осущест- вить ее довольно сложно. Алгоритм Рида отличается от большин- ства алгоритмов декодирования тем, что позволяет восстановить информационные символы прямо из принятого слова и при этом не дает точного значения самой ошибки. В этом алгоритме не ис- пользуются также промежуточные переменные, например син- дром. Предположим, что у нас имеется декодер для кода Рида— Маллера (г — 1)-го порядка, исправляющего ” — 1 ошибок. Мы построим декодер для кода Рида—Маллера г-го по- рядка, исправляющего ^-•2т~' — 1J ошибку, сведя этот случай к предыдущему. Поскольку мы уже знаем, что код Рида—Маллера нулевого порядка может быть декодирован с помощью мажори- тарного метода, мы по индукции получим метод декодирования для кодов высших порядков. Удобно разбить информационный вектор на г -| 1 сегмент, по- ложив 1 - [1„, 1х, ...» 1,1, где сегмент 1г содержит ин- формационных битов. Каждый сегмент будет умножаться на один блок матрицы G. Кодирование можно представить поблочным умножением вектора на матрицу:
80 ГЛ. 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ Предположим, что информационная последовательность разбита на сегменты следующим образом: каждому сегменту соответствует один из г блоков порождающей матрицы, который при кодирова- нии умножается на этот сегмент. Если мы сможем восстановить ин- формационные биты в г-м сегменте, то затем сможем вычислить их вклад в принятое слово и вычесть его из принятого слова. Тогда задача сведется к декодированию кода Рида—Маллера (г — 1)-го порядка. Процедура декодирования представляет собой последо- вательность мажоритарных декодирований и начинается с нахо- ждения мажоритарным методом информационных символов в сег- менте с номером г. Принятое слово запишем в виде v=[l0, 1,----Ir] "Со" Gi Алгоритм декодирования сначала по вектору v восстанавливает 1„ затем вычисляется разность v- 1А = По. <1, V-.1 которая является искаженным кодовым словом кода Рида —Мал- лера (г — 1)-го порядка. Прежде всего рассмотрим декодирование информационного бита который умножается на последнюю строку матрицы Gr. Декодируем этот бит, вычисляя 2ПЬ*Г проверочных сумм по 2Г бит из 2"1 бит принятого слова, так что каждый принятый бит входит лишь в одну сумму. Проверочные суммы строятся таким образом,' что символ вносит вклад только в одни бит, а все другие ин- формационные символы вносят вклад в четное число битов в каж- дой проверочной сумме. Таким образом, при отсутствии ошибок все проверочные суммы равны Но, даже если имеется не бо- лее -g--2m~r— 1 ошибок, большинство проверочных сумм по- прежнему будет равняться Первая проверочная сумма представляет собой сумму по мо- дулю 2 первых 2 битов принятого слова, вторая — сумму по мо- дулю 2 вторых 2Г битов принятого слова и т д. Всего получается 2"1-' проверочных сумм и по предположению имеется— 1
ЗАДАЧИ 81 ошибок. Таким образом, мажоритарное голосование проверочных сумм дает правильное значение Для построенного ранее (16, 11)-кода Рида—Маллера эти четыре суммы выглядят следую- щим образом: iio Ч «2-г«з, 4о =• »4 -г «б — °т> tlO | tffo-j-On, ‘ lu' = ®I2 + l>!3 |- fl4 i OlS- Если произошла только одна ошибка, то одна из оценок, даваемых проверочными суммами, будет неверна; мажоритарное решение дает значение il0. Если произошло две ошибки, то ни одно значе- ние проверочных сумм не встречается чаще других и обнаружи- вается даойная ошибка. Аналогично может быть продекодирован любой информацион- ный символ, который умножается на одну из строк матрицы Gr. Это происходит потому, что любая строка матрицы G, ничем не выделяется среди остальных. Перестановкой столбцов мы можем добиться того, что любая строка будет выглядеть так же, как по- следняя строка матрицы Gr. Следовательно, можно использовать те же самые проверочные суммы, соответственно переставив ин- дексы у символов, входящих в эти суммы. После построения 2т~' проверочных сумм каждый бит декодируется мажоритарным ме- тодом. После того как эти информационные символы найдены, их вклад в кодовое слово вычитается из принятого слова. Это экви- валентно тому, что мы получаем слово кода Рида — Маллера (г — 1)-го порядка. В свою очередь его последний сегмент инфор- мационных битов вычисляется с помощью той же самой процедуры. Этот процесс повторяется до тех пор, пока не будут найдены все информационные биты. задачи 3.1. Порождающая матрица кода над GF (2) задается следующим образом- fl 0 1 О I 11 О 1 1 1 0 1 I. О 1 1 О 1 о J а. Найти порождающую и проверочную матрицу эквивалентного си- стематического кода б. Выписать вектор дуального кода. в. Выписать стандартное расположение дли этого кода г. Сколько кодовых слов имеет пес О, . , 6? д. Найти кодовое слово, соответствующее информационной иоследо- ВДте.-1Ы|осгч 101 Декодировать принятое слово 1110C1I,
82 гл. 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ коды 3.2. Для заданного кода с проверочной матрицей Н показать, что смежный класс, соответствующий синдрому s, содержит вектор веса tv в том и только том случае, когда некоторая линейная комбинация и> столбцов матрицы Н равна б. 3.3. В этой задаче доказывается, что хороший декодер должен производить нелинейные операции (даже если сам код является линейным). а. Доказать, что процедура вычисления синдрома линейна пр отно- шению к вектору ошибок. Это значит, что если s— г (е), то F (ле, -|- 6еа) = аГ (е.) + bF (е2). б. .Линейный декодер — это такой декодер, у которого функция е - -= I (s), слизывающая синдром и вектор ошибок, удовлетворяет равенству f (CS1 + fa*) == Of (Si) + bf (%). Доказать, что линейный декодер может исправлять самое большее (n — k) X X (<7 - I) из n (q - |) возможных одиночных ошибок. в. Доказать, что если мы хотим, чтобы декодер исправлял все одиноч- ные ошибки, то функция е — f (s). связывающая синдром и вектор ошибок, должна быть нелинейной- 3.4. Доказать, что если линейный двоичный код имеет нечетное минимальное расстояние, то расширение кода добавлением проверки на четность увеличивает минимальное расстояние на I. 3.5. Определим линейный (5, 3)-код над GF (4) с помощью порождающей матрицы [I О U 1 I | 0 10 12 1 0 0 1 1 3 J а. Найти проверочную матрицу. б. Доказать, что этот код исправляет одиночные ошибки в. Доказать, что этот код исправляет два стирания Jcm. задачу 3.9 — Переа. | г. Доказать, что это совершенный код. 3.6. Чему равна скорость (максимального) двоичного подкода над подпо- лем, лежащего в кпде над GF (4) иэ задачи 3 5? Выписать для этого подкода порождающую матрицу в систематическом виде. 3.7. Сделав необходимый расчет, доказать возможность существования совершенного (11, 6)-кода над GF (3), исправляющего 2 ошибки (Голей построил такой код в 1949 г ) 3.8. Сделав необходимый расчет, доказать возможность существования совершенного^ | 1,д—1)-кода над GF (q), исправляющего одиночные ошибки. (Эти коды являются расширенными кодами Рида Соломона. Они эквивалентны кодам Хэмминга.) 3.9. Предложить процедуру восстановления двух стираний для двоичного (7,4)-кода Хэмминга. (Стиранием называется потеря передаваемого символа в некоторой позиции Оно отличается от ошибки тем, что известно, в какой именно позиции это произошло.) 3.10. Найти проверочную и порождающую матрицы для (21, 18)-кода Хэм- минга над GF (4). Разработать кодер и использующий таблицу синдромов деко- дер, че входя во все детали, а только указывая необходимые тля работы де- кодера блоки Является ли подлежащая просмотру таблица синдромов чрез- мерно большой д-ти практического использования? 3.11. Доказать, чго сумма двух двоичных пг-ыерных векторов четного веса имеет четный вес.
Замечания 83 3.12. Взвешивание шаров. Пусть имеются весыс двумя чашками и 12 бильярд- ных шаров, и< которых один может оказаться легче или тяжелее остальных а. Используя проверочную матрицу укороченного (12, 9)-кода Хэммин- га над GF (3), предложить способ, как за три взвешивания определить нестандарт- ный шар (если он имеется) и выяснить, легче или тяжелее он остальных шаров. б. Можно ли решить задачу таким же способом, если шаров будет 13? Можно ли решить задачу в случае 13 шаров, если можно использовать четырнадцатый, заведомо стандартный шар? в. Используя сферическую упаковку, доказать, что задачу нельзя решить для 14 шаров, один из которых может оказаться нестандартным. 3.13. Код, совпадающий с дуальным ему кодом, называется самодцальным. а. Доказать, что линейный код с проверочной матрицей [(— Р) : 1] является самодуальным тогда и только тогда, когда Р — квадратная матрица, удовлетворяющая равенству РРТ —- I. б. Построить двоичный самодуальиый код длины 4 и 8. 3.14. Предложить алгоритм декодирования кодопого слова кода Рида - Маллера при наличии 2"!—г — 1 стираний. 3.15. Можно ли с помощью проверки на четность расширить любой не- двоичный (и, k, d*)-¥s>R Хэмминга для получения (n + I, Л, d* -]- 1)-кода? Привести доказательство или контрпример. 3.16. Доказать, что граница Синглтона верна также и для нелинейных кодов. 3.17. Построить двоичный (7, 4)-код Хэмминга с помощью диаграммы Венна- пересечь три круга так, чтобы получилось семь областей, н четырем обла- стям поставить в соответствие информационные символы, а остальным трем — проверочные символы. Обсудить исправление ошибок и стираний, используя полученную диаграмму. ЗАМЕЧАНИЯ Изучение линейных кодов восходит к ранним работам Хэмминга [I950J и Го- лея |1949|. Большинство положений, используемых в настоящее время при изучении линейных кодов, заложено Слепяном J1956. I960); первые три пара- графа тесно связаны с этими работами. Еще до этого Киясу 11953] обратил внимание на связь между линейными кодами и подпространствами векторных пространств. Коды с максимальным расстоянием впервые изучал Синглтон Двоичные коды Хэмминга как коды, исправляющие ошибки, впервые рас- сматривал Хэмминг, хотя подобные комбинаторные структуры, рацее встреча- лись в задачах статистики, Недвоичпые коды Хэмминга были получены Голеем J1958J и Коком |1959j. Понятие совершенного кода впервые истречается у Голея, хотя он не поль- зовался таким термином. Делалось много попыток найти новые совершенные коды, но лишь отдельные из них увенчались успехом. В ряде работ Тнетявяй- нен и Ван Линт (работы завершились в 1974 и 1975 гг. соответственно) до- казали, что не существует линейных (нетривиальных) совершенных кодов, отлич- ных от кодов Хэмминга или Голея, и не существует нелинейных (нетривиаль- ных) кодов, за исключением кодов Васильева [1962] и Шёнхейма [1968]й). Коды Рида—Маллера были получены Маллером L1954J, и в этом же году Рид разработал алгоритм их декодирования. Этот алгоритм необычем тем, что принимает решение, основанное на мажоритарной логике. КОДЫ Ридв—Маллера являются предшественниками обширных семейств мажоритарно декодируемых кодов, с которыми мы встретимся в следующих главах. ’) Одновременно этот же результат был получен Семаковым и Зиновьевым (см. Семаков Н. В , Зинпвьев В. А. (Свершенные и квазисовсршенные коды. — Проблемы передачи информации, I9G9, сын. 2, с, 14—18). — Прим перво.
ГЛАВА 4 АРИФМЕТИКА ПОЛЕЙ ГАЛУА Важнейшие и наиболее мощные идеи теории кодирования осно- ваны на арифметических системах нолей Галуа. Многим из нас эти арифметические системы не известны, и, прежде чем продол- жать изложение теории кодирования, нам придется изучить ос- новы этого раздела математики. В настоящей главе мы возвращаемся к начатому в гл. 2 опи- санию структуры полей Галуа Там мы ввели определение поля, но не указали процедур построения полей Галуа, а именно их таблиц сложения и умножения Мы будем изучать поля Галуа с помощью двух построений, одно из которых основывается на кольце целых чисел, а другое — на кольцах многочленов, и докажем, что таким образом можно построить все поля Галуа. 4.1- КОЛЬЦО ЦЕЛЫХ ЧИСЕЛ Множество всех целых чисел (положительных, отрицательных и нуля) образуют кольцо относительно обычных операций сложе- ния и умножения. Это кольцо принято обозначать через Z. В дан- ном параграфе мы будем изучать структуру кольца целых чисел. Говорят, что целое число $ делится на целое число г или что г делит s (или что г является делителем s), если го — s, где а — не- которое целое число. Если г и делит $, и делится на s, то г = ±х. Действительно, г — sa и s = rb для некоторых целых чисел а и Ь; следовательно, г = гаЬ и ab должно равняться I. Так как а и b — целые, то и о, н & должны быть либо I, либо 1. Положительное целое число р > J, которое делится только на ±р или ±), называется простым. Положительное целое число, большее I, не являющееся простым, называется составным. Наи- больший общий делитель двух целых чисел г и s обозначается через НОД (г, s) и определяется как наибольшее положительное число, которое делит оба из них. Наименьшее общее кратное двух целых чисел г и s обозначается через НОК (г, .$) и определяется как наи-
4.1. КОЛЬЦО ЦЕЛЫХ ЧИСЕЛ Вб меньшее положительное число, которое делится па оба из «их. Два числа называются взаимно простыми, если их наибольший общий делитель равен I. В общем случае в кольце целых чисел деление возможно, не всегда, зато имеют место две почти столь же важные операции, а именно сокращение и деление с остатком. В силу возможности сокращения кольцо целых чисел является областью целостности. Возможность деления с остатком (известного как алгоритм деле- ния) обычно доказывается с помощью конструктивной процедуры. Мы сформулируем ею в виде самоочевидной теоремы. Теорема 4.1.1 (алгоритм деления). Для каждой пары целых чисел cud при отличном от нуля d найдется единственная пара целых чисел Q (частное) и s (остаток), таких, что с - dQ + s, где 0 < s < | d ]. Обычно нас будет больше интересовать не частное, а остаток. Мы будем часто записывать остаток в виде равенства s = Да kJ. которое читается так: «д является остатком от деления с на d». Другим обозначением является s = с (mod d). Соотношение такого вида называется сравнением и читается так: «5 сравнимо с с по модулю d». Оно означает, что при делении на d числа s и с имеют один и тот же остаток, но s не обязательно меньше d. Вычисление остатка от сложного выражения, содержащего сложение и умножение, облегчается тем, что можно менять после- довательность выполнения операции вычисления остатка со сложением и умножением. А именно справедливо следующее утвер- ждение. Теорема 4.1.2. (i) Да \а 4- Ь] - Да\Да k 1 Д Да [&]}. (ii) la b] -= Да kl-7?d [61}. Доказательство предоставляется читателю в качестве упраж- нения. □ Используя алгоритм деления, можно найти наибольший общий делитель двух целых чисел. Например, НОД (814, 187) находится следующим образом: 814 - 4х]87 + 66, 187 - 2x66 + 55, 66 — I х 55 j- 11, 55 - 5 4 11 |- 0.
86 ГЛ- 4- АРИФМЕТИКА ПОЛЕЙ ГАЛУА Так как НОД (814, 187) делит и 814, и 187, то он должен делить и остаток 66. Так как он делит и 187, и 66, го он делит и 55. Так как он делит и 66, п 55, то он делит и 11, С другой стороны, 11 делит 55, а поэтому и 66, и 187, и, наконец, также 814. Следовательно, НОД (814, 187) равен II. Теперь можно выразить 11 в виде линейной комбинации чисел 814 и 187, начиная снизу выписанной выше последовательности и поступая следующим образом: 11= 66 — 1 x 55 - = 66 — 1 > (187 — 2 - 66) - 3 X 66 - 1 X 187 - = 3 X (814 4 X 187) 1 > 187 = 3 < 814 13 X 187. Следовательно, мы выразили НОД (814, 187) в виде линейной ком- бинации чисел 814 п 187 с коэффициентами из кольца целых чисел, а именно НОД (814. 187) = 3 X 814 — 13 X 187. Эти рассуждения могут быть проведены в общем виде для произ- вольных целых чисел г и у и позволяют доказать приведенные ниже теорему и следствие. Теорема 4.1.3 (влгоритм Евклида). Наибольший общий де- литель двух различных ненулевых целых чисел г us может быть вычислен итеративным применением алгоритма деления. Предпо- ложим, что г <s и оба эти числа положительны; тогда алгоритм состоит в следующем: s Q,r |-г(, г = QZl + Га, ft ~ QirZ + ГХ, f n-1 = Qn+ifnt и процесс заканчивается, когда полученный остаток равен нулю. Последний ненулевой остаток гп равен наибольшему общему дели- телю. Наконец, мы приходим к важному и интуитивно не очевидному результату теории чисел. Следствие 4.1.4. Для любых целых чисел г и s существуют целые числа а и Ь, такие, что НОД (г. s) - аг ч bs.
4 2. КОНЕЧНЫЕ ПОЛЯ; КОЛЬЦО ЦЕЛЫХ ЧИСЕЛ 87 Доказательство. Последний остаток в теореме 4.1.3 равен НОД (г, s). Воспользуемся множеством выписанных в этой теореме уравнений, чтобы исключить все остальные остатки. Это даст выра- жение для гп в виде линейной комбинации г икс целочисленными коэффициентами. П 4.2. КОНЕЧНЫЕ ПОЛЯ, ОСНОВАННЫЕ НА КОЛЬЦЕ ЦЕЛЫХ ЧИСЕЛ Имеется очень важная конструкция, позволяющая по заданному кольцу построить новое кольцо, называемое кольцом отношений. В случае произвольного кольца для построения кольца отноше- ний строятся смежные классы, однако в случае кольца целых чи- сел кольцо отношений строится просто. В некоторых случаях это построение приводит к полям (в случае, когда кольцо является об- ластью целостности). Определение 4.2.1. Пусть q— положительное целое число. Кольцом отношений, именуемым также кольцом целых чисел по модулю q и обозначаемым через Z !(q), называется множество |0, 1, ..., q— 1} с операциями сложения и умножения, опреде- ляемыми равенствами a -J- b = 7?^ [а 4- b J, a-b = [аЫ. Элементы, обозначенные через О, I, .. , q— 1, принадлежат как Z, так и Z/(«y). Пожалуй, лучше под элементами из Z/(<?) по- нимать не первые q элементов из Z, а некоторые другие объекты, обозначенные таким же образом. Произвольный элемент а из Z можно отобразить в Z/(^), полагая o' = Rq 1«]. Два элемента а и b из Z, отображаемые в один элемент из Z/(?), сравнимы по мо- дулю q и а - b mq для некоторого целого т. Теорема 4.2.2. Кольцо отношений Z !(q) является кольцом. Доказательство предоставляется читателю в качестве упраж- нения. Г] Как показывают примеры из § 2.4, арифметику нолей GF (2) и GF (3) можно описать как сложение и умножение по модулю 2 и 3 соответственно, а арифметику в поле GF (4) так описать нельзя. Таким образом, в принятой нами символике GF (2) = -- Z/(2), GF (3) = Z/(3), GF (4)^=Z';(4). Общий результат дается следующей теоремой. Теорема 4.2.3. Кольцо отношений Z'(q) является полем тогда и только тогда, когда q равно простому числу. Доказательство. Предположим, что q — простое число. Для доказательства того, что кольцо является полем, надо показать, что каждый ненулевой элемент имеет мультипликативный обрат-
88 ГЛ. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА ный. Пусть s— ненулевой элемент кольца; тогда I с s eg— 1. Так как q просто, то НОД (s, q) = 1, и в силу следствия 4.1.4 I =« ад -|- bs для некоторых а н Ь. Таким образом, 1 = ₽, IИ « RQ[aq -Ь bs] = Rq {tfjogj /?, [6s]| = = Rq |tel = Rq\Rq fb] Rq Is]} = Rq\Rq lb] s|. Следовательно, элемент Rq |bl является мультипликативным об- ратным элементу s относительно операции умножения по модулю д. Теперь допустим, что q — составное число. Тогда q — rs. Если данное кольцо представляет собой поле, то г имеет обратный элемент Г1, и поэтому s = [5] = Rq [Г-1«] = R, f г' ’<?] = 0. Но s Ф 0, так что мы получили противоречие. Следовательно, рас- сматриваемое кольцо не является полем. □ В случае когда кольцо отношений Z/(g) образует поле, оно также обозначается через GF (q), чтобы подчеркнуть тот факт, что оно является полем. 4.3. КОЛЬЦА ' МНОГОЧЛЕНОВ Многочленом над полем GF (q) называется математическое выра- жение I (*) = f'J -г f« 4---------+ fl* + f«, где символ х называется неопределенной переменной, коэффициенты /п~1, ---» /о принадлежат полю GF (д), а индексы и показатели сте- пеней являются целыми числами. Нулевым многочленом назы- вается многочлен [ (х) — 0. Приведенным многочленом называется многочлен, старший коэффициент f„_i которого равен 1. Два мно- гочлена равны, если равны все их коэффициенты Д Степенью ненулевого многочлена f (х) называется индекс старшего коэффициента степень многочлена f (х) обозначается через deq f (х). Степень ненулевого многочлена всегда конечна. Степень нулевого многочлена по соглашению полагается равной отрицательной бесконечности (—оо). Множество всех многочленов над полем GF (д) образует кольцо относительно сложения и умножения, определяемых по обычным правилам сложения и умножения многочленов. Такое полино- миальное "кольцо можно определить для каждого поля Галуа GF (д) Это кольцо обозначается через GF (g) fxj. В исследованиях по кольцам GF (д) [х] элементы поля GF (q) иногда называются скалярами.
4.8. КОЛЬЦА МНОГОЧЛЕНОВ 89 Суммой двух многочленов / (х) и g (х) из GF (q) IxJ называется многочлен из GF (q) lx I, определяемый равенством ZW 1 е(л) = Д (А+ &)*'. где, конечно, члены с индексом, большим наибольшей из степеней многочленов f (х) и g (х), равны нулю. Степень суммы не превос- ходит наибольшей из этих двух степеней. Нанример, над GF (2) (х8 | Xs-г 1) + (Xs | Х-г 1) = - Х«п (I -г 1)х24- х -| (1 + I) Xs 4-х. Произведением двух многочленов из GF (<?) Lx J называется много- член из GF (q) lx J, определяемый равенством №)«(->) S (^,ta-/) *' Например, над GF (2) (x8 4- x8 + I) (x® г x 4- I) - Xs 4- x -Ь I. Степень произведения равна сумме степеней множителей. Кольцо многочленов во многих отношениях аналогично кольцу целых чисел. Чтобы сделать эту аналогию очевидной, в изложе- нии данного параграфа мы следуем §4.1. Скажем, что многочлен s (х) делится на многочлен г (х) или что г (х) делит s (х), если су- ществует многочлен а (х), такой, что г (х) а (х) — s (х). (Многочлен Р (*), делящийся только на многочлены ар (х) или а, где а — про- извольный ненулевой элемент поля GF (q), называется неприводи- мым многочленом. Приведенный неприводимый многочлен назы- вается простым многочленом. Наибольший общий делитель двух многочленов г (х) и s (х) обо- значается через НОД [г (х), s (х) J и определяется как приведенный многочлен наибольшей степени, делящий одновременно оба из них. Наименьшее общее кратное двух многочленов г (х) и s (х) обозна- чается через НОК Lr (х), s (х) ] и определяется как приведенный многочлен наименьшей степени, делящийся на оба из них. Как мы увидим, наибольший общий делитель и наименьшее общее кратное определены единственным образом, так что наше определение кор- ректно. Если наибольший общий делитель двух многочленов ра- вен I, то они называются взаимно простыми. Если г (х) одновременно делится на s (х) и делит s (х), то г (х) — — се s (х), где a — элемент поля GF (q) Это доказывается следую- щим образом. Должны существовать многочлены а (х) и b (х), та- кие, что г (х) — s (х) а (х) и s (х) = г (х) Ь (х); следовательно, r (х) — г (х) b (х) а (х). Но степень правой части равна сумме степеней г (х), Ь (х) и а (х). Так как эта величина должна быть рав-
SO ГЛ. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА ной степени левой части, то b (х) и а (х) должны иметь нулевую степень и, таким образом, являться скалярами. Для многочленов над полем вещественных чисел очень полезна (и элементарно вводится) операция дифференцирования, В случае многочленов над конечным полем определение дифференцирова- ния в смысле операции предельного перехода невозможно. Тем не менее удобно определить операцию над многочленами, резуль- тат которой ведет себя так, как вела бы производная. Такой мно- гочлен называется формальной производной от многочлена. Определение 4.3.1. Пусть г (х) — г^х”-’ — Гп-г-1^-2 I----I" 4- rLx ф г() — многочлен над GF (д). Формальная производная от г (х) определяется как многочлен вида г' (х) ((п - 1)) J х" 2 4- ((« - 2)) Гп-ал:"-3 |-+ Г1т где коэффициенты ((!)) называются числами поля GF (q) и вычис- ляются как сумма I членов в поле GF (q): «))-' - I +• + I. Легко проверить, что сохраняются многие полезные свойства производных, а именно что [г (х) s (х) |' г' (х) S (х) г (х) s' (х) и что если аг (х) делит г (х), то а (х) делит г' (х.) В кольце многочленов, так же как и в кольце целых чисел, деление в общем случае невозможно. Однако для многочленов над полями тоже имеют место сокращение и деление с остатком. Алгоритм деления для многочленов дается следующим утвержде- нием. Теорема 4.3.2 (алгоритм деления для многочленов). Для каждой пары многочленов с (х) и d(x),d (х) =/= 0, существует единственная пара многочленов Q (*) [частное) и s (х) (остаток), таких, что с (*) -- <2 (х) d (х) 4- s (х) и deg s (х) < deg d (х). Доказательство. Частное и остаток находятся по элементар- ному правилу деления многочленов. Они единственны, так как если с (х) — d (х) Qi (х) 4 sL (х) =•- d (х) <32 (х) 4- s2 (х), то d (х) [Qt (х) — Q-> (х) ] = s2 (х) — Sjt (х). В правой части стоит ненулевой многочлен, степень которого меньше deg d (х), а в левой — ненулевой многочлен, степень ко- торого не меньше deg d (х). Следовательно, оба многочлена равны нулю, и представление единственно. □
4.3. КОЛЬЦА МНОГОЧЛЕНОВ Q1 Практическое вычисление частного и остатка выполняется с по- мощью простого правила деления многочленов «уголком». Обычно мы будем больше интересоваться не частным, а остатком. Остаток можно также записать в виде s (х) — |с (л) ]. Часто оста- ток называют вычетом многочлена с (х) по модулю многочлена d (х). Несколько отличным понятием является сравнение s (х) = с (х) (mod d (х)), которое означает, что при делении на d (л ) многочлены s (х) и с (х) дают один и тот же остаток, но степень многочлена с (х) не обязательно меньше степени многочлена d (х). Иногда при вычислении остатка удобнее разбивать деление на этапы. Это можно осуществить с помощью следующей теоремы. Теорема 4.3.3. Пусть d (л) кратен многочлену g (х). Тогда для любого а (х) Rg М Iй (*')] = Rg (ж) [Rd (ж) |° (А)]|- Доказательство. Пусть d (х) = g (х) h (х) для некоторого h (х). Раскрывая правую часть, получаем a(x) = Qi(x)d(x) | /?<ги)[а(х)] = = (*)g(x) h (х) т- (х) g(х) + Re (*j [Rd м [a (x)]j. где степень остатка меньше degg (х). Раскрывая левую часть, имеем о (х) - Q (-*) g (х) + Rg ix) [а (х) ], и, согласно алгоритму деления, такая запись однозначна при сте- пени остатка, меньшей deg g (х) Теорема вытекает из отождест- вления подобных членов в обоих выражениях. □ Теорема 4.3.4. (i) Rd (ж) [а (х) |- b (х)] = Ra w [й (х)] r Ra (ж) (х)], (И) Rd (ж) [а (х)-b (х)] Ra lx) {ж) [a (x)] - Rd w [6(x)]|. Доказательство сводится к упражнению: использовать алго- ритм деления для выражений в сбеих частях равенства и прирав- нять остатки. □ Подобно тому как часто бывает полезным представление поло- жительных целых чисел в виде произведения простых сомножите- лей, часто бывает полезным представление приведенных много- членов в виде произведения простых многочленов. Теорема 4.3.5 (теорема об сднозиачном разложении). Ненулевой многочлен р (х) над некоторым полем однозначно (с точ- ностью до порядка следования множителей} разлагается в произве- дение элемента поля и простых многочленов над этим полем.
92 ГЛ 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА Доказательство. Ясно, что входящим в произведение элемен- том поля должен быть коэффициент pn-i. ГДО п —1 —степень многочлена р (х). Можно пренебречь этим элементом и доказывать теорему для приведенных многочленов. Предположим, что теорема не верна. Пусть р (х) — приведен- ный многочлен наименьшей степени, для которого не верна тео- рема. Тогда имеются два разложения: Рй = «| WO.CT °* (*) WM-0 - М*)- где ak (х) и bf (х) — простые многочлены Все многочлены а^ (х) должны отличаться от всех многочле- нов bj (х), так как в противном случае можно было бы сократить общие члены и получить многочлен меньшей степени, который можно разложить двумя разными способами. Без потери общности предположим, что степень многочлена (х) не больше степени многочлена (х). Тогда «1 (х) = bt (х) Л (х) + s (х), где deg s (х) < deg bt (х) с deg (х). Далее, s (х) а8 (х) а3 (х) . . ак (х) - = Ьг (х) [Ь2 (х) ... bj (х) — h (х) с2 (х) ... ак (х)]. Разложим многочлен s (х) и многочлен, стоящий в квадратных скобках, на простые множители, разделив, если надо, на соответ- ствующий элемент поля так, чтобы все множители были приве- денными. Поскольку bi (х) не содержится в левой части, мы полу- чили два различных разложения приведенного многочлена, сте- пень которого меньше степени р (х). Эго противоречие доказывает теорему. П В силу теоремы об однозначном разложении теперь ясно, что для любых даух многочленов г (х) и $ (х) НОД Ir (х), s (х) ] и НОК [г (х), s (х)1 являются единственными, так как наибольший сбщий делитель равен произведению всех общих для г (х) их (х) простых делителей, причем каждый делитель входит в наимень- шей из степеней, в которых он входит в г (х) и в s (х), а наименьшее общее, кратное равно произведению всех простых делителей, вхо- дящих либо в г (х), либо в s (х), причем каждый делитель входит в наибольшей из степеней, в которых он входит в г (х) или в s (х). Далее, лк бей мнегечлен, делящий как г (х), так и s (х), делит НОД [г (х), s (х) ], а любой многочлен, делящийся и на г (х), и на $ (х), делится на НОК [г (х), s (х) ]. Из алгоритма деления многочленов вытекает важное следствие, известное под названием алгоритма Евклида для многочленов. Теорема 4.3.6 (алгоритм Евклида для многочленов). Наибольший общий делитель двух многочленов г (х) и s (х) над
4.3. КОЛЬЦА многочленов 93 полем GF (9) можно вычислить с помощью итеративного приме- нения алгоритма деления Если dog s (х) 5s deg г (х) 0, то после- довательность вычислений такова: S И •- 01И ' М + г, (X), г (-') - 0, И г, (X) + Г, (г), П (X) - 0s (х) г, (х) + Г, (X), ' xn_i (х) = Ог.т (х) Г„ (х), и процесс обрывается, как только получается равный нулю остаток. Тогда гп (х) = а НОД lr (х), s (х) 1, где а — некоторый скаляр. Доказательство. Отправляясь от первого уравнения, видим, что НОД к (х), s (х) ] делит и делимое, и делитель, и, следователь- но, остаток. Проводя это рассуждение далее по всем уравнениям, видим, что НОД [г (х), s (х) ] делит гп (х). Отправляясь от послед- него уравнения, видим, что гп (х) делит делитель и остаток, так что он делит и делимое. Проводя это рассуждение по всем уравне- ниям вплоть до первого, видим, что гп (х) делит НОД [г (х), s (х) 1. Так как гп (х) делит НОД к (х), s (х)] и делится на него, то'полу- чаем утверждение теоремы. □ Следствие 4.3.7. НОД к (х), s (х)] = а (х) г (х) 4- b (х) s (х), где а (х) и b (х) —многочлены над GF (у). Доказательство. Последнее уравнение с ненулевым остатком в утверждении предыдущей теоремы дает выражение многочлена гп (х) через гп-1 (х) и rn_s (*)• Перебирая уравнения снизу вверх, исключаем сначала Гп_г (х), затем гп_2 (х) и т. д. и в конце концов получим выражение гп (х) только через г (х) и s (х). □ Для произвольного элемента 0 поля GF (у) можно вычислить значение мпегочлена над GF (у) в этой точке, подставив элемент 0 вместо неопределенной переменной. Например, пусть над GF (3) р (х) = 2х» 4 х4 + Xs + 2. Тогда (см. рис. 4.1) получаем р (0) _= 2-0» 4 О4 + О2 4-2-2, р (1) - 2-1» 4- 1* I8 4- 2 = 0, р (2) = 22» 4- 24 4- 22 4- 2 - 2. В случае поля вещественных чисел известной процедурой является вычисление значений многочлена в расширении этого поля; широко применяется вычисление значений многочлена с веществен- ными коэффициентами в поле комплексных чисел. Аналогично
94 гл. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА СЛ4» Рис. 4.1. Примеры конечных полей. можно вычислять значения многочлена над GF ((/) в расширении поля GF (у). Такое вычисление проводится подстановкой элемен- тов из расширения поля вместо неопределенной переменной х и выполнения операций в расширении поля. Например, пусть над GF (2) р(>) х^Ч-х-Ь 1. Тогда (см. рис. 4.1) для элементов поля GF (4) имеем р (0) - О3 4- 0 + 1 1, р(1) = I3 « 1 | 1 - 1, /? (2) = 2s 4- 2 + 1 - 2, р (3) = 3s 4- 3 + 1 = 3. Если р (Р) — 0, то элемент р называется корнем многочлена р (х) или корнем уравнения р (х) = 0. Многочлен не обязательно имеет корни в своем собственном поле. .Многочлен х® 4- х 4- 1 не имеет корней в GF (2), а также в GF (4). Теорема 4.3.8. Элемент Р является корнем многочлена р (х) тогда и толеко тогда, когдах —р делит р (х). Более того, корня- ми многочлена р (х) степени п являются не более п элементов поля. Доказательство. Согласно алгоритму деления, р W j (» — Р) Q W + s W. где степень s (х) меньше единицы. Таким образом, s (х) является элементом поля s0. Следовательно, 0 = р (Р) — (р — р) Q (Р) + 4- s0, и соответственно s (х) — sD — 0.
4.4 КОНЕЧНЫЕ ПОЛЯ: КОЛЬЦА МНОГОЧЛЕНОВ $)(5 Обратно, если х - 0 делит р (х), то г И - (* - f) Q W. так что р (0) (0 — 0) Q (0) — 0, и, таким образом, 0 — корень многочлена р (х). Разложим теперь многочлен р (х) в произведение элемента поля и простых множителей. Степень многочлена р (х) равна сумме степеней простых множителей, и для каждого корня имеется один такой множитель. Следовательно, существует не более п корней. □ 4.4. КОНЕЧНЫЕ ПОЛЯ, ОСНОВАННЫЕ НА КОЛЬЦАХ МНОГОЧЛЕНОВ Конечные поля можно построить из колец многочленов таким же образом, каким были построены поля из кольца целых чисел. Пусть имеется кольцо многочленов F |х| над полем F. Так же, как были построены для кольца Z кольца отношений, можно построить и кольца отношений для кольца F [х]. Выбирая из F [х I произвольный многочлен р (х), можно определить кольцо отноше- ний, используя р (х) в качестве модуля для задания арифметики этого кольца. Мы ограничимся рассмотрением только приведен- ных многочленов, так как это ограничение снимает ненужную неопределенность построения- Определение 4.4.1. Для произвольного приведенного много- члена р (х) ненулевой степени над полем F кольцом многочленов по модулю р (х) называется множество всех многочлепов над F, степень которых не превосходит степени многочлена р (х), с опе- рациями сложения и умножения мноючленов по модулю р (х). Это кольцо принято обозначать через F (х)/(д (х)). Произвольный элемент г(х) кольца F [х ] можно отобразить в элемент кольца F |х ]/(д (х)) с помощью соответствия г (х) -> -» RP (х) [г (х) J. Два элемента а (х) и b (х) из F |х 1, отображаемые в один и тот же элемент из F 1х ].-(/? (х)), называются сравнимыми: а (х) - b (х) (mod р (х))_ Тогда Ь (х) а (х) -| Q (х) р (х) для некоторого многочлена Q (х). Теорема 4.4.2. Множество F [х]/(р (х)) является кольцом. Доказательство предоставляется читателю в качестве упраж- нения. ГН Выберем в кольце многочленов над GF (2), например, много- член р (х) X3 -} I. Тогда кольцо многочленов по модулю р (х) равно GF (2) Ix]/(xM- 1). Оно состоит из элементов {О, I, х.
96 ГЛ. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА х + I, х®, л3 I 1, Xs |- л, л3 + х I 11- В этом кольце умноже- ние выполняется, например, следующим образом (х2 Н) (*4) = ^н1(*1+1) -И = = /^+1 |х(х® , 1) 4-Xs [ X) = X® + X, где использована редукция по правилу х1 — х (х® F 1) + х. Теорема 4.4.3. Кольцо многочленов по модулю приведенного многочлена р (х) является полем тогда и только тогда, когда мно- гочлен р (х) прост 1) . Доказательство. Пусть многочлен р (х) прост. Чтобы доказать, что рассматриваемое кольцо образует поле, достаточно показать, что каждый ненулевой элемент имеет1 мультипликативный обрат- ный. Пусть s (х) — некоторый ненулевой элемент кольца. Тогда deg s (х) < deg р (х). Так как многочлен р (х) прост, то НОД [s (х), р (х) I = I. По следствию 4.3.7 1 -"ИсИ для некоторых многочленов а (х) и Ь (х). Следовательно, I = /?р (х) 11] = /?р (*) [«(*) Р(Х) I - Ь (X) 8 (х)] = — Rp (х) {RP м № (-*)] Rp <«) Is (А)11 = Rp (х) {Rp м (•*)]'s (*)!• Таким образом, в кольце многочленов по модулю р (х) многочлен Rp (х) lb (х) 1 является мультипликативным обратным к s (х). Предположим теперь, что степень многочлена р (х) равна по меньшей мере 2 и что он не преет. Тогда р (х) г (х) s (х) для некоторых г (х) и s (х), степени которых равны по меньшей мере 1. Если кольцо является полем, то многочлен г (х) имеет обратный Г1 (х), и поэтому S W = Чр и (S (41 = Rp И) 1Г‘ (х) г И S (*)] = = Кр ‘W р(41 =0- Но s (х) =/= 0, и мы получаем противоречие. Следовательно, такое кольцо не может быть полем. □ Если над полем СК (q) найден простой многочлен степени п, то, используя развитую в данном параграфе теорию, можно по- строить поле Галуа, содержащее q" элементов. В этом построении элементы поля представляются многочленами над GF (q) степени не выше п— I. Всего существует qn таких многочленов, и, следова- тельно, их столько же, сколько элементов в поле. J) Напомним, что простой многочлен является одновременно неприводимым и приведенным. Для построения поля достаточно только неприводимости р (х), но мы условились рассма>ривать только приведенные многочлены, так что дальнейшие результаты носят менее общий характер
4.4. КОНЕЧНЫЕ ПОЛЯ; КОЛЬЦА{*МНОГОЧЛ ЕНОВ 97 Многочлен»® обозначения Двоичные обозначения Целочисленные обозначения Степенные обозначения 0 00 0 0 1 01 I хл ю 2 ... х + I и 3 V а + 0 I х х +1 . 0 < X х+1 о о 1 х г I 1 0 0 0 0 0 0 х+1 х 1 0 I X X + 1 x + i fl 1 \ 0 х v | | 1 х ч 1 х+1 х 1 0 x+i 0 х + 1 1 X Рис. 4,2. Структура поля GF (4). а — представления поля GF(4); б арифме- тические таблицы. В качестве примера построим поле GF (4) по полю GF (2), используя примитивный многочлен р (х) = х® + х 4- I. Переби- рая все возможные разложения, легко проверить неприводимость этого многочлена. Элементы поля задаются многочленами {О, I, х, х 4- Ц. Приведенные на рис 4.2 таблицы сложения и умно- жения строятся по готовым правилам. Конечно, после того как арифметические таблицы построены, можно заменить многочлен- ные обозначения на целочисленные или другие желаемые обозна- чения. Таблица 4.1 содержит список простых многочленов над GF (2). Одним из способов проверки простоты этих многочленов является метод проб и ошибок, т. е. непосредственная проверка всех воз- можных разложений, хотя для многочленов высоких степеней для этого потребуется ЭВМ. Собранные в табл. 4.1 простые много- члены представляют собой специальные'частные случаи простых многочленов, известных под названием примитивных многочленов. Как будет описано в следующем параграфе, они дают наиболее удобное представление расширения поля. В заключение параграфа подытожим, где мы находимся. Мы разработали необходимые для получения полей построения, которые будут использованы в дальнейшем, но для полного пони- мания предмета необходимы еще некоторые сведения. В частности, необходимо установить следующие факты: 1) над каждым нолем Галуа существуют простые многочлены любой заданной степени; 2) разработанные построения достаточны для получения всех 4 Р. Блейхут
98 ГЛ. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА Таблица 4./ полей Галуа —других полей пет1) ; 3) в каждом поле имеются некоторые предпочтительные, так называемые примитивные эле- менты. На рис. 4.3 дается сводка наиболее существенных результатов, относящихся к нолям Галуа Остальная часть главы посвящена ’) Математическая строгость требует здесь большего формализма, и надо било бы сказать, что нет других полей с точное сью до изоморфизма. Нефор- мально это означаю, что любые дна ноля Галуа с одинаковым числом элемен- тов являются двумя различными представаениями одного и того же поля. Иллюзия другой структуры можег быть, например, создана перестановкой тех же самых символов.
I.S. ПРИМИТИВНЫЕ ЭЛЕМЕНТЫ 99 1. Число элементов любого поля Галуа равно степени про- стого числа. 2. Для любого простого р и целого положительного т наи- меньшим подполем поля GF (рт) является иоле GF (р) Элементы поля GF (/?) называются целыми числами поля GF а число р — его характеристикой. 3. В поле Галуа характеристики 2 для каждого элемента 0 поля выполняется равенство —₽—Р. 4. Для любою простою р п целого положительного т суще- ствует поле Галуа с р”' элементами. 5. Каждое поле Галуа GF (q) содержит хотя бы один прими- тивный элемент. 6. Над каждым полем Галуа существует хотя бы один при- митивный многочлен любой положительной степени. 7. Каждый примитивный элемент имеет над любым подполем простой минимальный многочлен. 8. Два поля Галуа с одним и тем же числом элементов изо- морфны. 9. Для любого д, являющегося степенью простого числа, и любого положительного целого т поле GF (д) является подполем в GF (дт), a GF (дт) является расширением поля GF (д). 10. Если п не делит т, то GF (дп) не является подполем поля GF (дт). 11. Для любого элемента поля GF (дт) степень минимального многочлена над GF (д) является делителем т. Рис. 4.3. Некоторые основные свойства полей Галуа. доказательству большинства из этих результатов и введению новых понятий. Доказательство существования примитивных многочленов мы откладываем до конца § 5.3. 4.5. ПРИМИТИВНЫЕ ЭЛЕМЕНТЫ В предыдущем параграфе было построено поле GF (4). На рис. 4.2 видно, что элемент поля, представляемый многочленом х, можно выбрать как бы в качестве некоторого основания логарифмов. За исключением нуля, все элементы поля могут быть представлены в виде степени элемента х. Определение 4.5,1. Примитивным элементом поля GF (д) на- зывается такой элемент а, что все элементы поля, за исключе- нием нуля, могут быть представлены в ваде степени элемента а.
100 ГЛ. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА Например, в поле GF (5) 21 — 2, 2а - 4, 2s -= 3, 2* = 1, так что 2 является примитивным элементом поля GF (5). Примитив- ные элементы полезны при построении полей, так как если один из них найден, то, перемножая степени этого примитивного эле- мента, можно построить таблицу умножения в поле. В данном пара! рифе будет доказано, что каждое поле содержит примитив- ный элемент. Поле образует абелеву группу двояким способом. Множество всех элементов поля образует абелеву группу по сложению, и множество всех элементов поля, исключая нуль, образует абелеву группу по умножению. Мы будем работать с группой по умноже- нию. Согласно теореме 2.2.5, порядок этой группы делится на по- рядок каждого ее элемента. Теорема 4.5.2. Пусть ръ р2, ..., р?-1 ненулевые элементы поля GF (у)-, тогда X»-1 - 1 = (X - W (х (х - Доказательство. Множество ненулевых элементов поля GF (у) образует конечную группу по умножению. Пусть р — какой-либо ненулевой элемент из GF (у), и пусть h — порядок этого элемента по умножению. Тогда, согласно теореме 2.2.5, h делит у—1 Сле- довательно, Р«-1 = — ]U-l)/h = [г так что р является корнем многочлена л5_| —1. □ Теорема 4.5.3. Группа ненулевых элементов поля GF (у) по умножению является циклической. Доказательство. Если число q—I простое, то теорема три- виальна, ибо порядок всех элементов, за исключением нуля и еди- ницы, равен q—1, так что каждый такой элемент примитивен. Доказывать теорему надо только для составного числа у—I. Рассмотрим разложение числа q—1 на простые множители: « । -Пр?- Так как GF (у) — поле, то среди его q—1 ненулевых элементов должен найтись хотя бы один, не являющийся корнем многочлена ,,,р» — j, поскольку этот многочлен может иметь не более (у—V)/pt корней. Следовательно, для каждого i можно найти такой ненулевой элемент at поля GF (у), что а\" *Р' у= I. Пусть bj — = и пусть Ь = JlLib, Докажем,что порядок b равен q—1 и, следовательно, группа является циклической.
4.S. ПРИМИТИВНЫЕ ЭЛЕМЕНТЫ 101 Шаг /. Порядок элемента &{ равен р,' Доказательство. Очевидно, что — 1, так что порядок элемента Ь. делит рл. Он равен числу вида р"£. Если п. меньше vt, то Ьр‘ 1. Но bP' - I, и, следовательно, порядок элемента bi равен р/. Шаг 2. Порядок элемента b равен q I. Доказательство. Предположим, что bn — ] Покажем сначала, что из этого следует равенство п — 0(mod р,-‘) для всех i -- I, .... s. Для каждого i можно записать Заменяя b на HUi&r и используя равенство ЬР‘ =1, находим Д”й'?)=1. Таким образом, п П pvJ = 0 (mod pv(l). Поскольку pi являются различными простыми числами, то п = = 0 (mod р*£) для каждого I. Следовательно, п = П*=1рр- Теорема доказана. □ Эта теорема дает важнейший ключ к пониманию структуры полей Галуа, а именно следующее утверждение. Теорема 4.5.4. В каждом поле Галуа имеется примитивный элемент. Доказательство. Так как ненулевые элементы поля GF (q) образуют циклическую группу, то среди них имеется элемент порядка q—1. Этот элемент является примитивным. □ Использование примитивного элемента для умножения в поле иллюстрируется следующими примерами. В поле GF (8) порядок каждого ненулевого элемента делит 7. Так как 7 —простое число, то каждый элемент, за исключением нуля и единицы, имеет порядок, равный 7, и, следовательно, примитивен. Поле GF (8) можно построить с помощью многочлена
102 гл. 4. Арифметика полей галуа Р (2) — z3 + z + 1. Основываясь на примитивном элементе а - г, имеем а — г. В таком представлении умножение выполняется легко; например, а4-а5 — а7 аа = а4. Порядок каждого элемента в поле GF (16) делит 15. Элемент может иметь порядок I, 3, 5 или 15. Поле GF (16) можно по- строить с помощью многочлена р (z) — z4 + г 4 I и примитив- ного элемента а - г; имеем а3 =г3, ae =23 + z3. «’ = Z8 -|-г+1, а8 = z8 4-1, а* = z3 4- Z, 23 + z+I> а*1 = z3 4- г8 4- 2, а*8 =2»4- 2«4-z-r 1» а13 = г3 4- 2s 4- I, а" = г* 4- 1, <х16 = 4-1. В таком представления ПОЛЯ умножение опять просто; например, au.au = a,s-aB = a*. При построении расширения поля в виде множества много- членов удобно, чтобы многочлену х соответствовал примитивный
4.в. структура Конечного по Л Я юз элемент поля. В этом случае в таблице умножения можно исполь- зовать к в качестве основания логарифмов, и это самое простое из возможных оснований. Такое построение поля можно осуще- ствить с помощью простых многочленов специального частного вида, называемых примитивными. Определение 4.5.5. Примитивным многочленом р (х) над по- лем GF (у) называется простой многочлен над GF (у), такой, что в расширении поля, построенном по модулю р (х), соответствую- щий многочлену х элемент поля является примитивным. Для каждого поля Галуа существуют примитивные многочлены всех степеней, но доказательство этого результата мы отклады- ваем до конца следующего параграфа. Предваряя этот результат, можно сказать, что примитивный многочлен представляет собой простой многочлен, корнем которого является примитивный эле- мент поля. 4.6. СТРУКТУРА КОНЕЧНОГО ПОЛЯ Ранее в данной главе мы изучали, как строить поле. Предпола- гая, что можно найти простой многочлен степени п над полем GF (р), мы научились строить конечное поле с рп элементами. Теперь изменим точку зрения на противоположную. Вместо того чтобы строить поле, предположим, что нам дано конечное поле, и докажем, что независимо от происхождения этого поля всегда можно предполагать, что оно построено соответственно идеям, изложенным в предыдущих параграфах. Никаких других полей так построить нельзя. В процессе работы над материалом данного параграфа мы углу- бим*наше понимание структуры конечных нолей. Структурные свойства будут полезны во многих приложениях. Мы докажем также, что для всех полей Галуа существуют простые многочлены всех степеней. Определение 4.6.1. Число элементов наименьшего подполя поля GF (у) называется характеристикой поля GF (д). Теорема 4.6.2. Каждое поле Галуа содержит единственное наименьшее подполе, число элементов которого равно простому числу. Следовательно, характеристика каждого поля Галуа яв- ляется простым числом. Доказательство. Поле содержит элементы 0 и 1. Для задания подполя рассмотрим подмножество G — |0, 1, 1 | 1, 1 + 1 -г + 1, ...|, обозначая его элементы через {0, 1, 2, 3, ...}. Это подмножество является циклической группой по сложению, которая должна содержать конечное число р элементов. Мы пока- жем, что р — простое число и что G = GF (д). Сложение в G
104 ГЛ. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА является сложением по модулю р, так как G образует цикличе- скую группу по сложению. В силу закона дистрибутивности умно- жение также должно быть умножением по модулю р, ибо «•f> = (! + ••• + 1) р-₽+ • I ₽, где элемент р суммируется а раз и суммирование ведется по мо- дулю р. Следовательно, умножение также является умножением но модулю р. По умножению каждый элемент обратим, так как последовательность |р, 2р, Зр, ...} образует циклическую под- группу в G. Таким образом, подмножество G содержит единичный элемент, замкнуто относительно операций сложения и умножения п содер- жит элементы, обратные его элементам и по сложению, и по умно- жению. Следовательно, оно является подполем, и арифметика в этом подполе есть арифметика по модулю р. Но это в точности поле, описываемое теоремой 4.2.3, и, следопателыю, р должно быть простым. □ В поле Галуа GF (д) мы построили подполе GF (/>), где р — простое число. В частности, если д, с которого мы начинаем, само является простым числом, то, как мы видим, поле GF (д) можно^ интерпретировать как поле чисел по модулю д. Следовательно, для заданною простого числа действительно существует только одно поле с данным числом элементов, хотя, конечно, оно может быть представлено многими разными способами. Два поля, раз- личающиеся только представлениями, называются изоморфными. Мы увидели, что исходное поле GF (д) является расширением подполя GF (р). Геперь мы рассмотрим многочлены над GF (р), корнями которых являются некоторые выбранные элементы поля GF (д\ Для большей точности введем следующее определение. Определение 4.6.3. Пусть GF (д) —некоторое ноле, пусть GF (Q) — расширение поля GF (д), и пусть р — элемент GF (Q). Простой мпогочлеп / (х) наименьшей степени над GF (р), для кото- рого / (р) 0, называется минимальным многочленом элемента р над GF (д). Мы должны доказать, что минимальный многочлен всегда су- ществует и является единственным. Теорема 4.6.4. Каждый элемент р из GF (Q) имеет единствен- ный минимальный многочлен над GF (<у). Если минимальный много- член элемента р равен f (х) и р является корнем многочлена g (х), то f (х) делит g (х). Доказательство. Прежде всего р всегда является корнем многочлена д'? —х, представляющего собой многочлен над GF (д). Воспользуемся теоремой об однозначном разложении: —X - f, (x)f, (х) ... h (x),
1.в. СТРУКТУРА КОНЕЧНОГО ПОЛЯ ЮВ где множители в правой части — все простые многочлены над полем GF (q). Если 0 — корень левой части, то в правой части должен найтись некоторый член, корнем которого является 0. Это может быть только один из членов правой части, так как над расширением GF (Q) простые многочлены дальше разлагаются в произведение линейных членов и констант, и 0 может быть корнем только одного из линейных членов. Чтобы доказать вторую часть теоремы, положим е (х) f (х) Л (х) + s (х), где степень многочлена s (х) меньше степени f (х), так что 0 не может быть его корнем. Но О = g(0) - f (0) h (0) 4- s (0) - s (0); следовательно, s(x) должен равняться нулю, и теорема доказана. □ Следствие 4.6.5. Если fa (х), ..., fh (х) — все различные мно- гочлены над GF («у), являющиеся минимальными для одного или нескольких элементов из GF (Q), то -x = f,Wf.W~hW- Доказательство следует нз теоремы, так как каждый такой элемент 0 является корнем многочлена х^ —х. □ При Q — q разложение сводится к равенству х? —х = х (х — 0j) (х — 0J ... (х - 0^,). которое мы уже встречали в теореме 4.5.2. Минимальный много- член над GF (q) элемента 0, принадлежащего GF (<у), является многочленом первой степени f (х) — х — 0. Теорема 4.6.6. Пусть g (х) — произвольный многочлен над GF (q). Тогда существует расширение GF (Q), в котором g (х) распадается на произведение линейных множителей. Доказательство. Без потери общности можно предположить, что g (х) приведен. Построим последовательность расширений GF (q) с GF (Q0 с GF ((?,) с • • • с GF (Q) по следующему правилу. На каждом шаге запишем g (х) в виде произведения простых многочленов над GF (Q}). Если еще имеются нелинейные множители, то выберем один из них, скажем gj (х), и построим расширение поля GF (Q}), используя gj (у) в качестве простого модуля. В этом расширении g (х) можно раз- ложить далее, поскольку новый элемент 0 =~ у является корнем многочлена g) (х). Таким образом (в случае необходимости уни- фицируя обозначения) будем действовать до тех пор, пока все множители не станут линейными. Поскольку степень g (х) конечна, этот процесс закончится после конечного числа шагов. □
106 ГЛ. 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА Определение 4.6.7. Любое расширение поля GF (#), в котором многочлен g (х) над GF (д) распадается в произведение линейных множителей и констант, называется полем разложения много- члена g (х). Теперь у нас есть все необходимое для описания структуры произвольного поля Галуа. Теорема 4.6.8. Пусть а — примитивный элемент поля Галуа GF (Q), являющегося расширением поля GF (q), и пусть т — степень минимального многочлена f (х) элемента a Had^fiF (q). Тогда число элементов в поле равно Q — q”1 и каждый элемент р может быть представлен в виде Р = O/n-ia'”-’ 4 а^а"'-2 4-..j- Gja + Oq, где am_lt аи —элементы поля GF (q). Доказательство. Очевидно, что каждый элемент р вида P = o^,a"-' | |----1-o.a Но. принадлежит полю GF (Q). Такое разложение единственно, так как если Р = 4- Ьт_йат~2 4----1 4- bc — другое представление элемента р, то О = (am_i - *m_i) a"-’ 4---1 (а± — fet) a [- (a0 — bB), и, следовательно, a является корнем многочлена степени т — 1, что противоречит выбору числа т. Всего имеется q”1 таких эле- ментов р, и, следовательно, число элементов поля Q не меньше qm. С другой стороны, каждый ненулевой элемент поля может быть представлен в виде некоторой степени элемента а. Но если / (х) — минимальный многочлен элемента а, то (а) = 0. Следо- вательно, а" + f™-,»”-1 +----Г + fo - 0, Полученное равенство можпо использовать для того, чтобы выра- зить элемент а'” через сумму меньших степеней элемента а: ат = а”’1 -------Да -1„. Полученное соотношение можно повторно применять для редук- ции любой степени элемента а к линейной комбинации степеней (ат~’, ..., а1, а°), что дает am+i = Чт ----- ha- to - — -----Zia2 — foa.
4.6. МгНЮТУТА КОНЕЧНОГО ПОЛЙ 1б? й т. д. Следовательно, каждый элемент поля GF (Q) может быть представлен в виде линейной комбинации элементов а""-1, а’”-*2 .... ..., а, а0, так что Q не может быть больше if1, и теорема доказана. □ Следствие 4.6.9. Каждое поле Галуа содержит рт элементов, где р — некоторое простое, ат — положительное целое число. Доказательство. Каждое поле Галуа содержит подполе с р элементами, к которому надо применить теорему 4.6.8. □ Заметим, что теорему 4.6.8 можно использовать для того, чтобы связать с каждым элементом поля некоторый многочлен степени не выше т — I путем простой замены элемента а на неопре* деленную переменную х. Эти многочлены можно рассматривать как элементы поля. Складываться и умножаться они будут по модулю минимального многочлена f (х) элемента а. Это в точности то же самое поле, которое получается в теореме 4.4.3, если в ка- честве простого многочлена выбрать f (х). Следовательно, число элементов в каждом поле Галуа равно степени простого числа, и кажДое поле Галуа может быть построено с помощью арифме- тики по модулю простого многочлена. Наконец, мы должны доказать и обратное: такое поле суще- ствует для каждого простого р и целого положительного числа т. Прежде всего установим некоторые предварительные результаты. Теорема 4.6.10. Пусть характеристика поля GF (q) равна р. Тогда для любых элементов а и £ из GF (q) и любого положитель- ного целого т (а ± PFm = apm ± р*"1. Доказательство. Предположим, что теорема верна для т — 1. Тогда (сг ± Р)" «р ± Р₽. Возведем это равенство в р-ю степень: ((« ± Р)р)р = (аР ± Р₽)р, и снова используем теорему для т = 1: (а ± Р)р* = аР* ± РрЕ. Повторяя эту процедуру т — 1 раз, получаем (a ± P)Pn,=aPm±ppm. Следовательно, теорему надо доказать только для т — I. Вос- пользовавшись биномиальным разложением (а±ру = Д(")а'(±Р)<'-'.
108 ГЛ 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА видим, что достаточно доказать, что в поле GF (q) выполняется равенство ()=0. --1.........р-1- Но для каждого i (И _ Р!___________Р(Р—1)» u; ii(P-i)i - i!(p-oj является целым числом, ар- простое. Следовательно, знамена- тель делит (р —1)1, а число кратно р. Таким образом, (; ) — 0 (modр), и поскольку арифметикой целых чисел в поле GF (д) является арифметика по модулю р, то в GF (у) биномиаль- ный коэффициент ) — 0. Наконец, если р = 2, то (±0)3 = = 0й, а если р нечетно, то (±0)р—±0р. Это завершает доказа- тельство теоремы. □ Теорема 4.6.11. Пусть р —простое, а т —положительное целое число. Тогда наименьшее поле разложения многочлена g (х) — = хр —х, рассматриваемого над полем GF (р), содержит рт элементов. Доказательство. Каждый многочлен над GF (р) имеет наимень- шее поле разложения. Пусть GF (Q) — наименьшее поле разложе- ния многочлена g (х) = хрт — х. Тогда в поле GF (Q) многочлен g (л) имеет р"1 корней (возможно, кратных). Мы покажем, что все pm корней различны и образуют поле. Из этого будет следовать, что GF (<2) содержит рт элементов. Для того чтобы доказать, что множество корней образует поле, достаточно показать, что оно замкнуто относительно опе- раций сложения и умножения и содержит обратные для всех ненулевых элементов. Пусть а и 0 — корни многочлена g (х). Согласно теореме 4 6 10, (Я±₽Г"-а»”±₽«”=«±Р, так что а ± 0 также корень многочлена, и, следовательно, множество замкнуто относительно операции сложения. Далее, (a0)pm = aPm.0Pm = a0, и, таким образом, «0 тоже является корнем, и множество корней замкнуто относительно оиерации умножения. Далее, —а является аддитивпым обратным элементу а, так что каждый элемент имеет аддитивный обратный. Аналогично легко проверить, что если а — корень многочлена, то а-1 —также его корень.
4.6. СТРУКТУРА КОНЁЧНОТО ПОЛЯ 10& Наконец, проверим, что все рт корней многочлена х‘рт — х различны. Это вытекает из вида формальной производной: d [х’,п _ x]/dx = ((рт)) х»т-' -]=-i, так как ((р)) = 0 в поле GF (Q). Следовательно, многочлен хРт — х не имеет кратных корней. □ Теперь мы получили обращение теоремы 4.6.9. Следствие 4.6.12. Для каждого простого р и положительного целого числа т существует поле Галуа с рт элементами. Покажем, наконец, что если у является не простым числом, а степенью простого числа, то GF (у”1) можно построить как рас- ширение поля GF (у). Для этого достаточно доказать существова- ние над GF (у) простых многочленов степени т. Теорема 4.6.13. Для каждого целого положительного т над каждым конечным полем GF (у) существует хотя бы адин простой многочлен степени т. Доказательство. Так как у —степень простого числа, то уп также является степенью простого числа. Согласно следствию 4.6.12, существует поле с элементами. Это поле содержит при- митивный элемент а, и, по теореме 4.6.8, минимальный многочлен этого элемента а над GF (у) является простым многочленом сте- пени т. □ Следствие 4.6.14. Для каждого целого положительного т над каждым конечным полем GF (у) су цеапвует хотя бы один прими- тивный многочлен степени т. Доказательство. Пусть а — примитивный элемент поля GF (уп), н пусть f (х) — минимальный многочлен элемента а над GF (у) Тогда в поле многочленов по модулю f (л) примитив- ный элемент а — х является корнем многочлена /’ (х), так что мно- гочлен х представляет собой примитивный элемент поля. □ В заключение главы рассмотрим вопрос о существовании квад- ратного корня в поле Галуа. Теорема 4.6.15. Каждый элемент поля GF (2"‘) имеет в этом поле квадратный корень. Для нечетных простых р половина нену- левых элементов поля GF (рт) имеет квадратный корень в GF (рт). Половина ненулевых элементов поля GF (рт) имеет квадратный корень в расширении GF (р*т), а не в GF (рт). Доказательство. Так как нулевой элемент имеет квадратный корень в любом поле, то рассматривать надо только ненулевые элементы поля. Сначала рассмотрим полебГ (2"1) характеристики 2 с примитивным элементом а. Тогда порядок элемента а является
110 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА нечетным числом. Каждый элемент поля р может быть записан в виде а1 для некоторого I, и поэтому j/p = ai/2, если i четно, и j/p = а<н-п}/2, если i нечетно. В любом случаеj/"р является эле- ментом поля GF (2т). Рассмотрим теперь поле GF (q), характеристика которого равна простому нечетному числу р, а примитивным элементом является а = т?+’, где у — примитивный элемент расширения Of (<?’) (порядка q2, — 1 = (q -}- 1) (q — 1)) и q -|- 1 четно, так как q равно степени нечетного простого числа. Любой элемент Р может быть записан в виде сс‘ или в виде уй'+ч 1 для некоторого i. Тогда если i четно, то >/р — ct‘V2 и принадлежит полю GF (q), а если i нечетно, то у/р = *?2 и принадлежит полю GF ((f), но не полю GF (q), так как i (q -}- ])/2 в этом случае не кратно q 1. □ ЗАДАЧИ 4.1. Пусть иад GF (2) pi (х) — Xs + 1 и р2 (х) — х4 + х1 + x-j- I. а. Найти НОД [Pj (х), рв(х)]. б. Найта многочлены А (х) и В (х), удовлетворяющие равенству НОД [₽! (х). ра (х)1 = А (х) Рх (х) В (х) р2 (х) 4.2. а. Сколько различных приведенных многочленов второй степени вида x’ + cx-ph, имеется над полем GF (16)? б- Сколько различных многочленов вида (х — а) (х — р), а, Р^О. имеется над полен GF (16)? в. Доказывает ли это существование неприводимых многочленов над полем GF (16)? Сколько простых многочленов степени два имеется над полем GF (16)? 4.3. Доказать теорему 4.1.2, связывая обе части равенств с алгоритмом деления. Этим же способом доказать теорему 4 3.4 4-4. а. Используя алгоритм Евклида, найти НОД (1573, 308). б. Найти целые числа А и В, удовлетворяющие равенству НОД (1573.308) — 1573А 4- 308В. 4.5. Доказать, что в кольце Z/(15) целых чисел по модулю 15 многочлен р (х) = х® — 1 имеет более двух корней. Эгот же многочлен над полем имеет два корня. В каком месте не проходит доказательство теоремы в случае кольца? 4.6. Сколько различных приведенных многочленов над GF (2) делят мно- гочлен х® — 1? 4.7. Построить поле GF (5), выписав для него таблицы сложения и умно- жения. 4.8. Построить таблицы сложения и умножения для полей GF (8) и GF (9). 4.9. а. Доказать, что многочлен р (х) = х® -f- х® 2 неприводим над по- лем GF (3). 6. Каковы возможные (мультипликативные) порядки элементов поля GF (27)? в. Чему равен порядок элемента х в поле GF (27), построенном по мо- дулю этого многочлена р (х)? г. Предполагая, что поле GF (27) построено по модулю данного много- члена р (х), найти (2х-[- 1)(х®4-2) 4.10. Вычислить 3lM (mod 5)
ЗАМЕЧАНИЯ 111 4.11. Доказать, что кольца отношений и GF (ц) [х]/(р (х)) являются кольцами. 4.12. Многочлен р (х) = х? + х9 4* х’4- 1 неприводим над полем GF (2). Следовательно, кольцо многочленов по модулю р (х) является полем GF (16). а. Доказать, что в этой конструкции элемент поля, соответствующий многочлену х. не является примитивным. б- Показать, что многочлену х + 1 соответствует примитивный эле- мент этого поля. в. Найти минимальный многочлен элемента х I 4,13. а. Построить таблицы сложения и умножения ноля GF (2я), исполь- зуя неприводимый многочлен х9 4" х2 4- 1 над GF (2). б. Повторить задачу и. а для многочлена х3 {- х |- 1 н доказать, что эти два ноля изоморфны. Иначе говоря, доказать, что второе поле можно получит из первого путем переименования его элементов. 4.14. Таблицы сложения и умножения для поля GF (2*) можно построить по меньшей мере двумя следующими способами: (i) используя иепрпподпмый многочлен степени 4 над GF (2); (ii) используя неприводимый многочлен степени 2 иадСГ (4). Построить эти таблицы. используя второй способ 4.15. Многочлен р (х) — х20 |- к* + I примитивен над полем GF (2) и может быть использован для построения поля GF (1 048576), в котором элемента, соот- ветствующий многочлену х, будет примитивным а. Каковы нодполя этою ноля? б. Сколько из этих подполен не имеют никаких собственных подполен, отличных от GF (2)? в. Вычислить в этом поле выражение ab9 - I. где а — х12 -| х’ -|— 1 и b — х1а ха х3. 4.16. Доказать, что для формальной производной многочлена выполняется равенство [г (X) S (х) ]' = г' (х) S (X) 4 Г (X) S' (X) и что а3 (х) делит г (х) тогда и только тогда, когда а (х) делит / (х). 4.17. Доказать, что в любом поле характеристики 2 любой элемент Р удовлетворяет условию —Р — р. ЗАМЕЧАНИЯ Материал даннеч'г главы обычен дли математической литературы. Свойства полей Галуа описываются во многих книгах по абстрактной алгебре, например в кни- гах Биркгофа и Маклейна [1953J, а также Ван дер Вардена [1950, 19531 Однако стандартное изложение является формальным, уделяет основное внимание аб- страктным свойствам и содержит мало примеров и приложений. В книге Бер- лекэмпа 119681 подробно рассматриваются те свойства полей Галуа, которые используются в теории кодирования
ГЛАВА 5 ЦИКЛИЧЕСКИЕ КОДЫ Циклические коды являются подклассом в классе линейных кодов, удовлетворяющим дополнительному сильному структурному тре- бованию. В силу этой структуры поиск хороших кодов, контроли- рующих ошибки, в классе циклических кодов оказался наиболее успешным. При этом в качестве математического аппарата, облег- чающего поиск хороших кодов, была использована теория полей Галуа. Вне класса циклических кодов теория полей Галуа помо- гает мало; большинство завершенных построений, использующих идеи этой теории, относится к циклическим кодам. Важность циклических кодов обусловлена также тем, что зало- женные в основу их определения идеи теории полей Галуа при- водят к процедурам кодирования л декодирования, эффективным как с алгоритмической, так и с вычислительной точки зрения. В противоположность необходимым для произвольного линейного кода табличным методам декодирования алгоритмические методы декодирования находят важные практические приложения. 5.1. КОД С ТОЧКИ ЗРЕНИЯ РАСШИРЕНИЯ ПОЛЯ Циклические коды над GF (q) представляют собой класс линейных кодов, допускающих специальное описание, которое, как будет показано, оказывается достаточно мощным. Хотя эти коды яв- ляются кодами над GF («/), они часто яснее просматриваются из расширения GF (</"). Подобно тому как теория функций комплекс- ного переменного используется для более детального исследова- ния функций вещественного переменного, функции над GF (д) можно? изучать над GF (<?’"). Поэтому не следует рассматривать введение расширения поля как нечто искусственное; вместо этого надо набраться терпения, и вы будете вознаграждены за него. Мы видели, что линейный код над GF (?) может быть описан посредством матрицы с элементами из GF (д), называемой прове-
5.1. КОД С ТОЧКИ ЗРЕНИЯ РАСШИРЕНИЯ ПОЛЯ 113 рочной матрицей. Вектор с над GF (?) является кодовым словом тогда и только тогда, когда сНт = 0. Например, выберем, следую- щую проверочную матрицу (7, 4)-кода Хэмминга: [1 0 0 I 0 I 11 0 10 1110 1. 001011 1 I Переходя в расширение поля, эту матрицу можно записать более компактно. Столбцы матрицы Н можно отождествить с элементами поля GF (8). В многочленах, представляющих элементы ноля, используем элементы первой строки матрицы в качестве коэффи- циентов при г®, второй — в качестве коэффициентов при г1, а третьей — в качестве коэффициентов при г2 Тогда, используя для построения ноля GF (8) многочлен р (?) = ?® -J- г |- I и выбирая г в качестве иредставитетя примитивного элемента а, перепишем матрицу II в виде II - [а° а* а2 а8 а* а5 а«]. Над расширением ноля GF (8) проверочная .матрица оказалась (1 >7)-матрицей. Используя эту матрицу, кодовое слово можно определить как вектор над GF (2), такой, что в расширении поля GF (8) он дает нулевое произведение с Нт: сНт = 0, или S г,о< = 0. 1=0 Теперь мы подошли к идее представления кодовых слов в виде многочленов: кодовое слово с представляется многочленом и операция умножения кодового слова на проверочную матрицу превращается в операцию вычисления многочлена с (х) в точке х — а. Условие того, что с (х) представляет кодовое слово, пре- вращается в равенство с (а) = 0. Иначе говоря, двоичный много- член с (х) является кодовым словом тогда и только тогда, когда а является корнем многочлена с (х) Представление многочленами (7,4)-кода Хэмминга образует множество всех многочленов над GF (2) степени не выше 6, таких, что а из GF (8) является корнем каждого из них. Существует обширным класс линейных кодов, к которому при- меним тот же метод, который был использован для представления кода^ Хэмминга в виде множества многочленов. Предположим,
114 ГЛ- 6. ЦИКЛИЧЕСКИЕ коды что проверочная матрица линейного кода содержит п столбцов и что число п—k строк этой матрицы делится на т. Каждая группа из т строк такой матрицы может быть представлена в виде одной строки, содержащей элементы изб/7 (q™). Таким образом, первыет строк становятся одной строкой (Рп, .. , р,п). а матрица Н сво- дится к матрице Г₽.. н - с г = (n - k)ini строками. Вместо |(п —k) >. т1-матрицы над GF (</) мы получили (гХп)-матрицу над GF (</"). Мы, конечно, ничего не изменили при таком представлении, а только сделали его более компактным. В данной главе будет исследоваться частный случай, когда проверочная матрица может быть записана в виде ???'• т1,_! у! 1 тГ’тГ’ н = где п = (Г — 1 и у} £ GF (qm) для всех j = 1, г. Заменяя каждый элемент поля GF (дт) коэффициентами пред- ставляющего его многочлена над GF (q), эту матрицу можно запи- сать в виде проверочной матрицы над^бТ (q) с п = д™ — 1 столб- цами и гт строками. Мы, однако, предпочитаем работать в боль- шем поле. Каждое кодовое слово с является вектором над GF (<?), таким, что в расширении GF (qm) выполняется матричное равенство сН’ = О, которое для выбранного выше частного вида матрицы Н можно записать в виде /-1. Это соотношение в точности совпадает с утверждением, что все элементы Тг, .... уг являются корнями кодового многочлена с (х). Рассматриваемый код определяется как множество многочленов с (л) = степени не выше п — 1 и таких, что для всех j = 1, ..., г выполняется равенство с (ty) = Q.
г.1, код с точки ЗРЕНИЯ РАСШИРЕНИЙ -ЦОЛЙ 11Й Таким образом мы перешли от матричного описания линейных кодов к полиномиальному описанию одного частного подкласса линейных кодов. Мы ограничиваемся рассмотрением этого под- класса потому, что полиномиальная формулировка облегчает поиск хороших кодов и разработку кодеров и декодеров. По при- чинам, которые выясняются в следующем параграфе, эти коды называются циклическими кодами. Например, выберем некоторый примитивный элемент а поля GF (16) и примем длину кода равной 15. Для построения провероч- ной матрицы кода над GF (2) выберем у, = a, ys = а3: Г*й я1 a1 а3 а4 а* а6 а7 ае а9 а10 а" а12 а13 а,41 I... а6 а* а'2 а1' я"’ а2' а24 а27 а*» а” я3* а” а4?] Другой выбор элементов у, и у2 приводит к другой проверочной матрице, иногда хорошей, а иногда плохой. Мы надеемся, что сделанный выбор приведет к хорошей проверочной матрице, но пока что еще рано объяснять причины этого. При желании можно эту проверочную матрицу заменить прове- рочной матрицей над GF (2), используя приведенное в § 4.5 пред- ставление поля GF (16). Для этого надо каждую степень эле- мента а заменить 4-битовым столбцом, полагая верхний элемент столбца равным коэффициенту при г” в полиномиальном пред- ставлении этого элемента поля, второй элемент столбца равным коэффициенту при z1 и т. д. В результате получится матрица Хотя этого сразу не видно, строки данной проверочной матрицы линейно независимы, и, следовательно, она определяет двоичный (15,7)-код. Минимальное расстояние этого кода равно 5 (хотя это тоже не очевидно). Этот код можно также представить в виде множества многочленов над GF (2) степени не выше 14, таких, что в расширении GF (16) каждый многочлен удовлетворяет равен- ствам с (а) — Оис (а3) = 0. Иначе говоря, кодовые слова являются многочленами с корнями в а и а3.
116 ГЛ. S. ЦИКЛИЧЕСКИЕ КОДЫ Можно показать, что всегда проще иметь дело с матрицей в расширении, и поэтому мы в большинстве случаев будем работать в большом поле. Конечно, ограничиваясь проверочными матри- цами такого частного вида, мы исключаем из дальнейшего рассмо- трения многие коды. 5.2. ПОЛИНОМИАЛЬНОЕ ОПИСАНИЕ ЦИКЛИЧЕСКИХ КОДОВ Начнем изложение заново, а затем вернемся к материалу преды- дущего параграфа. Линейный код называется циклическим, если из того, что слово с (с0, <?j, ..., гп_,) принадлежит $?, сле- дует, что слово с' (сП-х. ^о. Gi-a) также принадлежит Кодовое слово с' получается из кодового слова с циклическим сдвигом всех компонент на одну позицию вправо. Примером циклического кода является приведенный в табл. 1.1 код Хэм- минга Каждый линейный код над GF (q) длины п представляет собой подпространство пространства GFn (q), а циклический код является частным случаем подпространства, так как обладает дополнительным свойством цикличности. Каждый вектор из GF" (q) можно представить многочленом от х степени не выше п - 1. Компоненты вектора отождествляются с коэффициентами многочлена. .Множество многочленов обладает структурой векторного пространства, идентичной структуре про- странства GFn (q). Это же множество мноючленов обладает струк- турой определенного в §42 кольца GF {q) Lx](x"-1). Как в кольце, в этом множестве определено умножение Pi (х) Р2 (х) = Rx„_t {р, (х) pi (х)]. Заметим, что в это равенство входят произведения двух видов. Произведение в левой части является произведением в кольце GF (q) [x]/(xn— 1), определенным через произведения в кольце GF (q) lx] в правой части. Циклический сдвиг может быть записан через умножение в этом кольце: Итак, если кодовые слова некоторого кода задаются в виде многочленов, то код является подмножеством кольца GF (у) —1). Такой код является циклическим, если вместе с каждым кодовым словом с (х) он содержит кодовый многочлен х с (х).
Б.2. ПОЛИНОМИАЛЬНОЕ ОПИСАНИЕ 117 Теорема 5.2.1. Подмножество Ч? кольца GF (9) lxl/(xn—1) об- разует циклический кад тогда и только тогда, когда он обладает следующими двумя свойствами *): I) Ж’ образует подгруппу кольца GF (у) {х ]/(хп—1) пр сло- жению-, 2) если с (х) и а (х) £ GF (у) [х]/(хп 1), то ^*«-1 (4 с (*)1 € Доказательство. Предположим, что данное подмножество об- ладает этими двумя свойствами. Тогда оно замкнуто относительно сложения и умножения на скаляр и, следовательно, является подпространством. Оно замкнуто относительно умножения на любой элемент кольца, в частности на элемент х, и, следовательно, образует циклический код. Теперь предположим, что рассматриваемое множество является циклическим кодом и поэтому замкнуто относительно сложения и умножения на элемент х. Но тогда оно замкнуто относительно умножения на степени элемента х и на линейные комбинации этих степеней, т. е. относительно умножения на произвольный многочлен. Следовательно, оно удовлетворяет обоим сформули- рованным условиям, и теорема доказана. □ Выберем теперь в ненулевой кодовый многочлен наимень- шей степени и обозначим его степень через п—k (она должна быть меньше п). Умножим этот многочлен на элемент поля, чтобы сде- лать его приведенным. Поскольку код линеен, результирую- щий многочлен тоже принадлежит 2?. В коде не содержится ника- кого другого приведенного многочлена этой степени, так как в противном случае разность этих двух приведенных многочленов давала бы кодовый многочлен степени меньше n~k,& это противоре- чит выбору исходною многочлена. Единственный приведенный ненулевой многочлен наименьшей степени в коде называется порождающим многочленом кода S? и обозначается через g (х). Теорема 5.2.2. Циклический код состоит из всех произведений порождающего многочлена g (х) на многочлены степени не выше k— 1. Доказательство. Согласно теореме 5.2.1, все такие много- члены принадлежат коду, так как# (х) принадлежит коду. Далее, ’) Эго подмножество называется идеалом кольца. В общем случае под- множество / кольца R называется идеалом в R, если: 1) / является под- группой аддитивной группы кольца R к 2) из г R и а £ I следует, что ar € I-
118 ГЛ. В. ЦИКЛИЧЕСКИЕ КОДЫ если некоторый многочлен с (х) принадлежит коду, то, согласно алгоритму деления, с(х) = Q(x)g м +s(x). где deg s (х) < deg g (х), и многочлен s(x) = c(x)-Q(x)g(x) является кодовым, так как оба многочлена в правой части пряна* длежат коду, а код линеен. Но степень многочлена s (х) меньше п—k, наименьшей степени ненулевого многочлена в коде. Следова- тельно, s (х) 0 и с (х) — Q (х) g (х). □ Теорема 5.2.3. Циклический код длины п с порождающим многочленом g (х) существует тогда и только тогда, когда g (х) делит кп—1. Доказательство. Согласно алгоритму деления, х" — I = Q (х) g (х) + s (х), где степень многочлена $ (х) меньше степени многочлена g (х). Тогда о = [хп - I] = /?хп_, [<2(x)g(x)] 4- Rx„_f (s(x)], и, следовательно, О = R^ IQ (х)я(х)] | s(x). Из теоремы 5.2.1 вытекает, что первый многочлен в правой части является кодовым многочленом. Тогда s (х) также является кодо- вым многочленом степени ниже, чем степень g (х). Единственный такой кодовый многочлен равен $ (х) - 0. Таким образом, q (х) делит х" — 1. Далее, каждый многочлен, делящий х"—1, может быть выбран в качестве порождающего многочлена циклического кода. Это завершает доказательство. □ Согласно теореме 5.2.3, для порождающею многочлена g (х) любого циклического кода выполняется равенство х" — 1 = g (к) h (х) при некотором многочлене h (х). Многочлен h (х) называется проверочным многочленом. Каждое кодовое слово с (х) удовлетво- ряет равенству R^ lh(x)c(x)] -= О, так как h (х) с (х) = h (х) g (х) а (х) - (хп — 1) а (х) для некоторого многочлена а (х).
S.2. ПОЛИНОМИАЛЬНОЕ ОПИСАНИЕ Ц9 Пусть с (х) обозначает переданное кодовое слово. Это значит, что символами переданного слова были коэффициенты много- члена с (х). Пусть многочлен v (х) обозначает принятое слово, и пусть е (х) — v (х) — с (х). ^Многочлен е (х) называется много- членом ошибок. Ненулевые коэффициенты этого многочлена стоят в тех позициях, где в канале произошли сшибки. Представим информационную последовательность в виде мно- гочлена i (х) степени k - 1 *) Множество информационных мно- гочленов можно отобразить в кодовые многочлены многими удоб- ными способами. Одним простым правилом кодирования является <• W ~= ' М к И- Такой кодер является неснстемазическим, так как по мноючле- нус(х) нельзя сразу установить i (х). Систематическое правило кодирования имеет несколько более сложный вид. Идея состоит в записи информации в виде старших коэффициентов кодового многочлена и подборе младших коэффициентов так, чтобы полу- чить допустимое кодовое слово. Иначе говоря, кодовое слово записывается в виде С (X) = х"-*х (X) + t (X), где I (х) выбирается так, чтобы выполнялось условие /?£(*) [с (х) ] = 0. Это требование означает, что М [^1(Х)1 I К(х)1 = О и степень многочлена / (х) меньше п—k, степени многочлена g (х). Следовательно, /(х) = —Rg (А) [хп-’‘1 (х)], и правило кодирования является взаимно-однозначным, так как k старших коэффициентов многочлена определены однозначно. И систематическое, и несистематическое правила кодирования дают одно и то же множество кодовых слов, но соответствия между i (х) и с (х) различны Определим синдромный многочлен s (х), который будет исполь- зован для декодирования, как остаток от деления многочлена v (х) на g (х): s(x) = RgM In(x)| = /?g<x) [с(х) I е(х)] = = Яж*» [«(*)]• ’) На самом деле надо было бы говорить, что степень i (х) не выше k — I, но в случаях, подобных данному, когда i (л) является одним из многочленов множества, удобнее указывать максимальную степень р множестве, хотя этр и менее точно.
120 ГЛ. 5. ЦИКЛИЧЕСКИЕ КОДЫ Синдромный многочлен зависит только от е (к) и не зависит ни от с (х), ни от i (х). Итак, мы ввели следующие многочлены: порождающий многочлен g (х), проверочный многочлен h (х), информационный многочлен I (х), кодовый многочлен с (х), многочлен ошибок е (х), принятый многочлен о (х), синдромный многочлен s (х), deg g (х) ~ п —k, deg h (х) = k, deg i (x) k- 1, deg c (x) =* n — 1, deg e (x) = n — 1, deg v (x) — n — I, deg s (x) = n — k — 1. Теорема 5.2.4. Пусть d* - минимальное расстояние цикли- ческого кода Ч?. Каждому многочлену ошибок веса меньше, чем d*!2, соответствует единственный синдромный многочлен. Доказательство. Предположим, что веса ег (х) и (х) меньше, чем d*l2, и что им соответствует один и тот же синдромный мно- гочлен. Тогда Cl (х) = Qi (х) g (х) + s (х), е2 (х) -= Q2 (х) g (х) g (х) 4- S (х) и «1 (х) — еЛ (х) = IQj (х) — (х) 1 g (х). По предположению вес каждого из многочленов et (х) и е2 (х) меньше, чем d*/2, так что вес их разности меньше d*. В правой части последнего равенства стоит кодовое слово. Если это слово отлично от нулевого, то вес его не меньше d*, минимального веса в коде. Следовательно, в правой части стоит нуль, и многочлены et (х) и е2 (х) равны. Это доказывает теорему. □ Таким образом, задача исправления ошибок сводится к одно- значному вычислению многочлена е (х) с наименьшим числом ненулевых коэффициентов, удовлетворяющего условию «И = RsM fc(x)). При не очень большом числе входов эта задача может быть решена путем построения таблиц. Для каждого корректируемого много- члена е (х) вычисляется и табулируется многочлен s (х) так, как это показано в таблице, приведенной на рис. 5.1. Эта таблица называется таблицей значений синдромов. Вычисляя s (х) по принятому v (х), декодер находит s (х) в таблице значений синдро- мов, а затем соответствующий многочлен е (х). Если таблица зна- чений синдромов не очень велика, то практически ее можно реали- зовать либо с помощью памяти, либо с помощью цепей комбина- торной логики.
5.8. МИНИМАЛЬНЫЕ МНОГОЧЛЕНЫ] И СОПРЯЖЕНИЯ 121 4х) •Ч.х) W1 W*2 ] лясх>11 +Х1 W’+-x2] Рис. 5.1. Таблица значений синдромов. Временно будем считать эту простую схему декодирования удовлетворительной. В следующих главах будут разработаны более эффективные, чем запоминание заранее вычисленной таблицы, алгоритмы вычисления е (х) по многочлену s (х). 5.3. МИНИМАЛЬНЫЕ МНОГОЧЛЕНЫ И СОПРЯЖЕНИЯ Мы видели, что циклический код длины п над полем GF (ц) суще- ствует для каждого многочлена g (х) над GF (q), делящего много- член х" — 1. Теперь мы хотим более подробно изучить порождаю- щие многочлены. Прежде всего мы хотим найти порождающие многочлены циклических кодов длины п. Наиболее естественный подход состоит в разложении многочлена х” — 1 па простые множители: X" - 1 А (х) /8 (X)... а (X), где $ — число простых множителей. Произведение произвольного подмножества этих множителей дает порождающий многочлен g (х). Если все простые множители многочлена хп — I различны, то всего имеется 2® — 2 различных нетривиальных циклических кодов длины п (исключаются тривиальные случаи g (х) = 1 н g(x) -= х" - 1). Какие из них, если они вообще имеются, дают коды с большим минимальным расстоянием — вопрос, па который сразу ответить нельзя. Предположим, что# (х) представляет собой порождающий мно- гочлен. Он делит многочлен хп - 1, и, следовательно, g (х) - Пл w. где произведение берется по некоторому подмножеству множества $ простых многочленов. Порождаемый многочленом g (х) циклический код состоит из многочленов, которые делятся на каждый из этих ft (х). Многочлен g (х) можно найти, найдя все его простые делители.
122 ГЛ- 6- ЦИКЛИЧЕСКИЕЕКОДЫ В данном параграфе мы хотим проследить взаимосвязь простых многочленов с их корнями, лежащими в расширении поля, В част- ности, мы хотим исследовать, как по заданному множеству кор- ней можно найти простые многочлены и, следовательно, порождаю- щие многочлены. В гл. 7 мы увидим, как надо выбирать корни, чтобы гарантировать хороший код Мы начнем с одного предпочитаемого значения п, называемого примитивной длиной кода. Определение 5.3.1. Для кода пал GF (q) длина п вида п = = ([" — J называется примитивной Циклический код примитив- ной длины над GF (q) называется примитивным циклическим кодом. Поле GF ((]"•) является расширением поля GF (q). Согласно теореме об однозначном разложении, разложение над полем GF (q) однозначно. Так как g (х) делит многочлен х*"—' — 1, то он должен быть равен произведению некоторых из этих множителей. С другой стороны, каждый ненулевой элемент поля GF (у,:) является корнем многочлена — J. Следова- тельно, в поле расширения GF (qr;t) многочлен xQ'”~1 1 можно представить в виде ^"-'-) = Пе ра где р7 — все ненулевые элементы поля GF (q'!l). Отсюда следует, что каждый из многочленов [, (х) может быть разложен в произве- дение некоторых из этих линейных множителей и что каждый элемент pj является корнем точпо одною из fi(x). Этот много- член fi(x) является минимальным многочленом элемента ру, и мы также1) обозначим его через Он представляет собой многочлен наименьшей степени с коэффициентами из основного поля GF (?), для нрторого элемент р?- из расширения поля является корнем. Теперь мы можем связать данное определение циклического кода с использованной в § 5 1 его трактовкой. Теорема 5.3.2. Пусть элементы Pi,..., Рг из поля GF (qm) являются корнями порождаю-цего многочлена g (х) примитисного кода. Многочлен с (х) над GF (q) является кодовым тогда и толь- ко тогда, когда С <Р.) -c(PJ =..-=<№,) = о. ’) Мы извиняемся за неопределенность в использовании fr (с) при 1= t.з для обозначения различных минимальных многочленов и fj(x) при j = I..... <fn — 1 для обозначения минимальных многочленов элементов 0j. Конкретный смысл всегда будет ясен из контекста.
В.З. МИНИМАЛЬНЫЕ МНОГОЧЛЕНЫ И СОПРЯЖЕНИЯ 123 где с (f>j) вычисляется в поле GF ((/”). Доказательство. Если с (к) — а (л) g (х), то имеем с (fy) = = а (Пу) S (Ру) = о Обратно, предположим, что с (PJ 0, и запишем с(х) - Q{x)h(r) +s(x), где степень 5 (х) меньше степени fj(x), а /;(х) -минимальный многочлен элемента Р7-. Но тогда из равенства о = = «(₽,)/,(₽,) I s (₽,) следует, что s (л) = 0 Следовательно, с (х) должен делиться на (х) для всех / ], .. , г, а поэтому и на НОК If. (х), ftW....../г(х)1 £(>)• □ Чтобы проиллюстрировать эти идеи, выберем л = 15. Можно найти все циклические коды длины 15, разложив х10 — ] на про- стые многочлены: х" - 1 - (X + 1) (х“ +х + )) (Г* '-X f- )) (X* + + х* + 1) (л1 +х’ +Х! +х + )). Справедливость такого разложения можно проверить перемно- жением, а простоту множителей — методом проб и ошибок. Всего имеется 26 = 32 подмножества множества этих простых множи- телей и, следовательно, 32 порождающих многочлена цикличе- ских кодов длины 15. Два из них (g(x) = х*6 — ) с k = 0 и g (х) = 1 с k — ri) являются тривиальными, а 30 приводят к не- тривиальным циклическим кодам. В качестве примера рассмотрим один из них, положив g (X) = (X4 +х’ + 1) (X4 +х3 +х» +х + 1) = = л® +х* 4-Х2 4-х + ]. Так как степень g (х) равна 8, то п — k — 8 и k = 7, а так как вес многочлена g (х) равен 5, то минимальное расстояние не пре- восходит 5. В гл. 7 мы увидим, что минимальное расстояние равно 5. Следовательно, рассматриваемый код является (15, 7, 5)-кодом и позволяет исправлять две ошибки. Проверочные соотношения могут быть записаны в виде с (а1) =0, с (al) — 0, где а‘ и а} — некоторые корни многочленов х4 4 х8 4 1 и х4 4~ 4х’ 4 Xs 4х 4 1 соответственно из расширения GF (16). В част- ности, с (а) = 0 и с (а8) = 0, и, следовательно, это рассмотрен- ный в § 5.1 пример. (Многочлен g (х) имеет, конечно, и другие корни, но этих двух корней достаточно, чтобы определить g (х), и нет необходимости проверять остальные.)
124 гл. 5. ЦИКЛИЧЕСКИЕ коды Предположим теперь, что мы хотим построить порождающий многочлен g (х), имеющий своими корнями элементы рх, .... рг. Обозначим через fL (л), .... fT (х) минимальные многочлены этих элементов. Тогда ;;И = нок If. (х), А (А). . , М’)1- и таким образом задача сводится к отысканию минимального многочлена f (х) заданного элемента р. Пусть степень минимального многочлена f (х) элемента р равна т'. Тогда в GF (q'n) он должен иметь т' корней. Эти допол- нительные корпи можно описать следующими двумя теоремами. Теорема 5.3.3. Пусть характеристика поля GF (q) равна р. Тогда для любого многочлена s (х) над GF (q) и произвольного це- лого т выполняется равенство это равенство справедливо также при замене р любой его степенью. Доказательство. Начнем ст 1 и будем рассуждать так же, как при доказательстве теоремы 4.6.10. Чтобы сократить число шагов, определим многочлен s’ (х) равенством s (х) — s’ (х) х-t- з0, тогда Is(x)l₽= j(,)[s'(x)xjfs₽-*. Но /Р\ _ pt _ р(р— I)! \i) — и р является простым числом, которое не входит в знаменатель, за исключением случаев i - 0 и i = р, так что представляет собой целое число, кратное р, т. е. равное нулю по модулю р. Следовательно, [s(x)p = [s'(x)|Px₽ + s₽. Применим теперь те же рассуждения к многочлену s' (л) и про- должим вычисления. Это даст доказательство утверждения для т — 1: /=0 Далее, |s«f = [|s«T - f Е ^"Г - E •Г*"'-
S.3. МИНИМАЛЬНЫЕ МНОГОЧЛЕНЫ И СОПРЯЖЕНИЯ 12Б Эти вычисления можно повторить произвольное число раз, так что теорема верна при замене р любой его степенью. □ Теорема 5.3.4. Предположим, что f (х) над GF (q} является минимальным многочленом элемента р из GF (qm). Тогда f (х) является также минимальным многочленом элемента Р9. Доказательство. Так как у равно степени характеристики р поля, то теорема 5.3.3 дает deg ; (X) l№)l’ = X nW- Но коэффициенты ft принадлежат полю GF (q), а все элементы этого ноля удовлетворяют условию уя = у. Следовательно, degf <*) [/(*)!• = S AM'-m и так как f (Р) — 0, то 0 [/ (р)]9 — f (Р9), и, следовательно, Р9 является корнем многочлена f (х). Поскольку f (х) — простой многочлен, он является^минимальным многочленом элемента р9, и теорема доказана. * □ Определение 5.3.5. Два элемента из поля GF (tf”), являю- щиеся корнями одного и того же минимального многочлена над GF (q), называются сопряженными (относительно поля GF (</)). В общем случае у элемента может быть больше, чем один, со- пряженный элемент — на самом деле т. Необходимо также от- метить, что отношение сопряженности зависит от основного поля. Два элемента из GF (16) могут быть сопряжены относительно поля GF (2) и не сопряжены относительно поля GF (4). Используя теорему 5.3.4, легко выписать все сопряженные с р элементы. Если многочлен f (х) является минимальным для элемента р, то он минимален и для элемента р9, п для Р9 и т. д. Следовательно, сопряжены все элементы множества IP. Р. Г’...Р'“,1. где г — наименьшее целое число, такое, что Р’г — р. Заметим, что так как Р9"" Р, то г с т. Выписанное выше множество называется множеством сопряженных элементов. Все сопряжен- ные элементы являются корнями многочлена f (х), и следующая теорема показывает, что других корней нет. Теорема 5.3.6. Минимальный многочлен элемента Р равен f(x)-(x-P)(x-p)...O- р'-*). Доказательство. Согласно теореме 5.3.4, все эти элементы действительно должны быть корнями минимального многочлена
126 ГЛ. 5. ЦИКЛИЧЕСКИЕ КОДЫ элемента р, так что степень минимального многочлена не может быть меньше. Поэтому нам надо только показать, что все коэф- фициенты f (х) принадлежат полю GF (q). Воспользуемся тем фактом, что все корпи многочлена х’—х образуют подполе поля GF (q”‘). Прежде всего вычислим I/ (х) И: [/ (х)]« = (х - W (х - р«)’ . . . (х - рвГ"‘)« - = (х" - Р«) (X’ — P’s)... (X’ - Р), где второе равенство вытекаег из теоремы 5.3.3 и того факта, что Р9 -- р. Таким образом, uwf-ют- ем1». в то время как теорема 5.3.3 утверждает, что Следовательно, /’ = /, для каждого i, и Д- принадлежит подполю GF (?), что и требовалось доказать. □ Например, выберем а равным примитивному элементу поля GF (256). Тогда множество (а, а2, а4, а8, а18, а82, а64, а128} представляет собой множество сопряженных элементов. Оно за- канчивается элементом а128, так как «8и = 1, и, следовательно, а256 = а — элементу, уже содержащемуся в множестве. Мини- мальный многочлен элемента а равен многочлену f (х) = (х — а) (х — а2) (х — а4) ... (х — а84) (х — а128), все коэффициенты которого (после раскрытия скобок) будут элементами поля GF (2). Аналогично множеством сопряженных элементов, содержащих элемент а7, будет (а7, а14, а28, а66, а112, а224, аиз, а181}, а минимальный многочлен элемента а7 равен f (х) = (х — а’) (х — а14) (х — а28) ... (х — а193) (х — а131), все коэффициенты которого (после раскрытия скобок) будут эле- ментами поля GF (2). Теперь вместо GF (2) выберем в качестве основного поля GF (4), которое также является подполем поля GF (256); тогда множеством сопряженных элементов, содержащим а7, будет [а7, а29, а118, а,м). и минимальный многочлен элемента а’ над полем GF (4) равен / (X) = (х — а7) (х — а28) (х — а112) (х — а*9*).
5.3. МИНИМАЛЬНЫЕ МНОГОЧЛЕНЫ И СОПРЯЖЕНИЯ 127 все коэффициенты которого (после раскрытия скобок) будут элементами ноля GF (4). Для того чтобы указать эти элементы из поля GF (4), надо, однако, выделить элементы нодполя GF (4) среди элементов поля GF (256). В ноле GF (256) подполе GF (4) состоит из элементов {0, 1, а85, а*70}, так как элементы а85 и а170 являются единственными элементами поля GF (256) порядка 3. Вернемся теперь к циклическим кодам, которые не являются примитивными. Мы видели, что для примитивных циклических кодов существует тесная связь между' порождающим многочленом g (х) и полем GF (q'n), описываемая корнями многочлена g(x). Теперь мы хотим рассмотреть коды длины п, отличной от — ]. Следующая теорема устанавливает связь этих кодов с получен- ными ранее результатами. Теорема 5.3.7. Пусть GF (<?) — конечное поле. Если п и q взаимно просты, то многочлен хп — 1 делит многочлен х*''"—1 — 1 при некотором т и многочлен хп — 1 имеет п различных корней в расширении GF (qm) поля GF (у). Доказательство. Необходимо доказать только, что п делит qm — 1 при некотором т, так как в этом случае можно восполь- зоваться общим разложением («' - 1) = (х = | 4- ... |- X + 1). чтобы показать, что при qm — 1 -= nh для некоторого b имеет место равенство - 1 = (хп)'> - 1 = = (хп - 1) (хп <*—•> + Xя “-2> -I . . . г Xя I 1). Таким образом, хп — 1 делит х”"1-1 — 1 и, следовательно, имеет п различных корней в GF (д'"), так как х’/т~1 — 1 имеет qm — 1 различных корней в этом поле. Чтобы доказать, что п делит qm — 1 для некоторого т, вос- пользуемся алгоритмом деления и выпишем п -j- 1 следующих равенств: q = QLn 4- sn <? --= Qzn 4- s2, q"1 = Qsn + ss, —Qn+iM s„+i.
128 ГЛ. 5. ЦИКЛИЧЕСКИЕ КОДЫ Все остатки расположены между 0 и п — I. Так как их всего п + 1, то по меньшей мере два из них равны между собой, ска- жем Sj и Sj при I, меньшем j. Тогда qi = Qin Qin -Xi. или «/(v'-'- D = (Qj-Qi)n. Так как q и п взаимно просты, то п должно делить q1' — 1. Полагая т — j — i, завершаем доказательство. □ Используя эту теорему, любой циклический код в случае взаимно простых п и q можно описать в соответствующем рас- ширении поля. Порождающий многочлен g (х) циклического кода длины п делит многочлен хп —1, который делит х^т~1—I, так что g (х) делит также х’™-1 - 1, Мы всегда будем пользо- ваться наименьшим т, для которого это выполняется. Пусть а - примитивный элемент поля GF (qm), пусть q'” - - 1 = nb, и пусть р = ссь. Тогда все корни многочлена xn 1 (а поэтому и многочлена g (х)) исчерпываются степенями элемента ₽ Простые делители многочлена х" - 1 имеют своими корнями только такие элементы. Подводя итоги, скажем, что если мы используем р = аь вместо а и ограничиваем множество корней порождающего мно- гочлена только степенями р, то мы получаем циклический код длины п - (у™ - l)/b. 6.4. МАТРИЧНОЕ ОПИСАНИЕ ЦИКЛИЧЕСКИХ кодов Эту главу мы начали кратким обсуждением связи проверочной матрицы с корнями многочленов, лежащими в расширении поля. В следующих параграфах, в которых рассматривались цикли- ческие коды, проверочным матрицам уделялось мало^внимания. А сейчас самое время заняться связью циклических кодов с их порождающими и проверочными матрицами. Имеется много способов формирования этих матриц. Прежде всего проверочную матрицу можно формировать в расширении ноля так, как это было сделано в § 5.1. Если нулями g(x) яв- ляются элементы С GF (</") при J—!,..., г, то 1=0
S.4. МАТРИЧНОЕ ОПИСАНИЕ 129 что в матричном виде можно переписать как Заменим теперь эту (г X п)-матрицу над GF (дт) па (гт х ^-ма- трицу над GF (д), заменяя каждый элемент р вектором-столбцом коэффициентов многочлена, представляющего Р над GF (</). Это дает проверочную матрицу над GF (д), но некоторые строки этой матрицы могут быть линейно зависимыми и, следовательно, яв- ляются излишними. Удалим наименьшее число строк, необходи- мое для построения матрицы с линейно независимыми строками. Это приведет к проверочной матрице кода. Хотя описанная процедура проясняет связь между корнями порождающего многочлена и проверочной матрицей кода, она слишком сложна для использования. По порождающему много- члену можно построить необходимые матрицы, даже не переходя в расширение поля. Одним из способов сделать это является по- строение порождающей матрицы непосредственно по порождаю- щему многочлену. Так как кодовые слова записываются в виде с (х) = i (х) g (х), то в матричной форме имеем " 0 ... О gn_k g-,_ftJ . . . g2 gl go~ о gn-fc gn-k-i gn-k-t • gl go 0 Q _ 0 gn-h-1 gn-h-г gn-k-я • • • go 0 0 Проверочная матрица соответственно равна “0 0 0 ... hb~ Н- ' 1 , 0 h0 . hh_i hh 0 0 0 _hD fti h0 - - • hk 0 0 ... 0 0_ где h (x) — проверочный многочлен циклического кода. Для про- верки равенства GHt = 0 5 р. Блсйхут
130 ГЛ. 5. ЦИКЛИЧЕСКИЕ КОДЫ рассмотрим величины иг - £ gr-Jli • в силу равенства h (л) X X g(x) = хп — 1 равные пулю при 0 <г < п. Но пл да GH1 «п-2 «П-Я - • Uk-1 = 0, _«п-й «п-ft-l • - «1 и, следовательно, так определенная матрица Н действительно является проверочной матрицей. Теперь видно, что дуальный код ё'- для циклического кода с порождающим многочленом g{x) также является циклическим, так как Н представляет со- бой его порождающую матрицу и имеет вид порождающей ма- трицы циклического кода. Порождающий многочлен дуального кода равен взаимному к h (х) многочлену Гг (х) = xkh (х1). Иногда при рассмотрении циклических кодов дуальным называют код, порожденный многочленом h (х), но если быть точным, то в этом случае можно говорить только о коде, эквивалентном дуальному коду. Можно также .просто получить порождающую матрицу' в си- стематическом виде. Воспользуемся алгоритмом деления и вы- пишем для каждой информационной позиции i = 1, .... Л мно- гочлен х" l = Qi(x)g(x) | st(x), i — 1, . . А, где S£ (х) — jS SjiXf. Тогда многочлен х°-/ — s, (х) является кодовым словом, так как X—1 -s,(x) = Q,(x)g(x). Используя коэффициенты многочлена в левой части равенства в качестве элементов порождающей матрицы, получаем ---S'd, Л — So, h-1 — $(»:-*—I), * 1 0 ... 0 --- $(,!—£ 1). *_j 0 1 ... 0 L -Sb,: — s<n-*—ij.i 0 0 ... 1_ В этой систематической порождающей матрице индексы коорди- нат информационных символов пробегают числа от п k до п — 1. Чтобы выписать такую порождающую матрицу, необ- G —
5.5. КОДЫ ХЭММИНГА КАК ЦИКЛИЧЕСКИЕ КОДЫ 131 ходимо только вычислить все остатки sf (х) от деления х* па g (х). Используя описанные в § 3.2 методы, теперь можно выписать и проверочную матрицу кода. Она равна "10.. 0 so,* 0 1 ... 0 Si,* So.i «1.1 .0 0 ... 1 Sfn—*—!), * 5.5. КОДЫ ХЭММИНГА КАК ЦИКЛИЧЕСКИЕ КОДЫ Порождающий многочлен (7,4)-кода Хэмминга, использованного в начале главы, равен g (х) — х3 + х 4- 1. Корнем этого много- члена является примитивный элемент а поля GF (8), и, следо- вательно, все кодовые слова удовлетворяют равенству с (а) - 0. Аналогично, чтобы получить код Хэмминга с примитивной дли- ной п = 2т - - 1, выберем g (х) так, чтобы примитивный элемент а поля GF (2"‘) был его корнем, а именно положим g (х) равным минимальному многочлену р (х) элемента а, используемому для построения поля GF (2т). Тогда так как с (х) = а (х) g (х), то с (а) = 0 для каждого кодового слова. Это эквивалентно ра- венству сНт - 0, где Н — [а0 а1 . . . а"-1). Для больших алфавитов также существуют коды Хэмминга. В § 3.4 мы видели, что для каждого т существует код Хэмминга над полем GF (<?) с n = (qm — \)!{q — 1) и k — (qm — l)/(q — 1) — — m. В данном параграфе мы покажем, что многие из этих кодов (хотя и не все) являются циклическими, выписав их порождаю- щие многочлены. Пусть а — примитивный элемент поля GF (tf”), и пусть р — = а»-1. Тщда р(«т—О/и-П =1, и, следовательно, Р является корнем многочлена х(«'"—О/й—0—1. Таким образом, мини- мальный многочлен элемента р является делителем многочлена JC(en’—i)/(4-i) — । и может-быть выбран в качестве порождаю- щего многочлена циклического кода длины п = — \)!{q — 1). Проверочная матрица равна Н —. IP” Р1 ... Р"—Ч. Для q — 2 и Р = а легко доказать ,гчто этот код исправляет одпу ошибку, указав простую процедуру исправления одной ошибки. Принятое слово записывается многочленом степени п — 1 в виде —’ v (х) = а (х) g (х) + е (х), S*
132 гл- S. ЦИКЛИЧЕСКИЕ КОДЫ где многочлен е (х) содержит не более одного ненулевого коэф- фициента, так что е (х) = 0 или е (х) = х'\ Целое число i марки- рует позицию, в которой произошла ошибка. Для маркировки ошибочных позиций мы будем также использовать поле GF (2т). Элемент поля а* соответствует компоненте с номером i. Так как g(a) = 0, то v (а) = а', и все степени а от 0 до 2т — 2 различны. Таким образом, по величине сх£ сразу определяется позиция ошибки, за исключением случая v (а) = 0, соответствующего отсутствию ошибки. Следовательно, рассматриваемый код яв- ляется исправляющим одиночную ошибку кодом над GF (2) с л — = 2"‘ — 1 и k = п — т; на самом деле это код Хэмминга над GF (2). Мы доказали для случая q — 2 формулируемую ниже теорему. Общий случай этого утверждения более сложен, так как для произвольного элемента у из GF (q) все величины вида уР* должны быть различны. Докажем формально теорему для произвольного q. Теорема 5.5.1. Минимальное расстояние кода с проверочной матрицей Н = [р° р1 ... p"-i ], где р = а’-* и п = (q" — \)!(q — — 1), равно по меньшей мере 3 тогда и только тогда, когда п и q — 1 взаимно просты, что возможно тогда и только тогда, когда т и q — 1 взаимно просты. Доказательство. Предположим, что два столбца матрицы Н линейно зависимы: Р‘ = ур/, где элемент у принадлежит GF (q). Тогда элемент рх~£ принадлежит полю GF (q) и, следовательно, является корнем уравнения х’~1 — 1=0. Но ненулевые элементы поля GF (q) можно представить через примитивный элемент а поля GF (<7"*) в виде первых q — 1 степеней элемента а№т—Mv-», так как все такие степепи различны и = 1. Тогда для некоторого k, меныцего q — 1, имеем р'-< = («(«’"-О/й-о)* = ал. Далее, так как р = а*-*1, то (<? — 1) (i — /) = nk. Так как i — j меньше, чем п, то это уравнение разрешимо отно- сительно i — /тогда и только тогда, когда п и q — 1 не являются взаимно простыми; таким образом, Н содержит два линейно за- висимых столбца тогда и только тогда, когда п и q—1 не явля- ются взаимно простыми. Покажем теперь, что п и q — 1 взаимно просты тогда и только тогда, когда т и q — 1 также взаимно просты. Но « = (<?w - 1)/(? - О = 9”1-’ + 4-----М
5.5. КОДЫ ХЭММИНГА КАК ЦИКЛИЧЕСКИЕ КОДЫ 133 q^-i = (д - 1) Sj + 1 для некоторого Sj, поскольку qm—i— 1 делится на д— 1. Следо- вательно, суммируя по /, получаем п = т 4 (q — 1) У sjt i—i так что п и q — 1 взаимно просты тогда и только тогда, когда т и q — 1 взаимно просты. □ Согласно доказанной теореме, коды Хэмминга над GF (д) длины п = (дт — 1)1 (д— 1) валяются циклическими, если tn и д — 1 взаимно просты. В § 3.4 мы рассматривали, однако, не- которые коды Хэмминга, для которых т и д — 1 не взаимно просты. Для этих кодов такое циклическое построение не работает. Простейшим их примером является (21,18)-код Хэмминга над GF (4). Этот код нельзя описать через порождающий многочлен. Однако большинство представляющих интерес кодов Хэмминга являются циклическими. В качестве примера циклического кода Хэмминга рассмотрим (85,81)-код над GF (4), для которого выпишем порождающий многочлен. Это построение реализуется в поле GF (256) и сво- дится к нахождению минимального многочлена над GF (4) эле- мента ₽ — а®. Элементами порядка 3 в поле GF (256) являются только а®5 и а170, так что в поле GF (256) поле GF (4) таково: GF (4) -= {О, I, а85, а170}. Множеством сопряженных элементов, содержащих р, относительно поля GF (2) является {₽, Р2, Р4, Р8, Р1в, Р82, Р“, P128J. Но нам нужны сопряженные относительно поля GF (4) элементы, а они образуют множество |₽. ₽*, 1!"\ ₽“Ч- Следовательно, искомый порождающий многочлен равен g (х) - (X - Р) (X - Р4) (X - Р16) (X - ₽«) - ^(х— а3) (х — а12) (х — а48) (х — а1®2). Раскрыв скобки, мы получим многочлен, все коэффициенты кото- рого принадлежат полю GF (4). Таким образом, дальше нам уже не понадобится структура поля GF (256). Теперь поступим сле- дующим образом. Используя примитивный многочлен р (х) = = Xs -}- х4 + х2 -г х2 -}- 1, имеем а® = а4 4- а® -|- а® + 1. Неод- нократно повторяя эту подстановку или используя таблицу
134 гл. Б. ЦИКЛИЧЕСКИЕ коды логарифмов для умножения в поле GF (256) (в обоих случаях вычисления займут примерно час), находим g (х) = х4 + х3 Ч- а170х + 1. Наконец, поскольку мы уже оставили работу в поле GF (256), то заменим обозначения на более естественные для поля GF(4) и получим g (х) = х4 + Xs + Зх + 1. Это и есть искомый порождающий многочлен (85,81)-кода Хэмминга над полем GF (4). 5.6. ЦИКЛИЧЕСКИЙ КОДЫ, ИСПРАВЛЯЮЩИЕ ДВЕ ОШИБКИ В предыдущем параграфе было дано описание кодов Хэмминга как циклических кодов, порождающие многочлены которых имеют корень в соответствующем расширении основного поля. Описанные коды исправляют одну ошибку. Сейчас мы возвра- щаемся к исправляющим две ошибки кодам над полем GF (2). Пусть длина кода имеет вид п — 2т — 1 для некоторого tn, и пусть а — примитивный элемент поля GF (2'")- Мы рассмотрим те даоичные коды, для которых а и а8 являются корнями порож- дающих многочленов, и покажем, что такие коды позволяют исправлять две ошибки. Пусть g (х) — многочлен наименьшей степени, для которого а и а8 из GF (2"') являются корнями. Описав процедуру деко- дирования, позволяющую исправлять все одиночные и двойные ошибки, мы докажем, что минимальное расстояние этого кода равно во меньшей мере 5. Принятое слово записывается многочленом степени п — 1 вида V (х) = а (х) g (х) 4- е (х), где е (х) содержит не более двух ненулевых коэффициентов, по- скольку мы рассматриваем случай исправления не более двух ошибок. Таким образом, или е (л) = 0, или е (х) = х1, или е (х) = — х1 -|- х‘ . Целые числа i и Г маркируют позиции, в которых произошли ошибки. Для маркировки ошибочных позиций мы будем также использовать элементы поля GF (2т). Элемент поля а* соответствует компоненте с номером I. В этой роли элементы поля называются локаторами. Обозначим = а‘ и Х2 = а!". Так как длина кода л равна порядку элемента а, то локаторы XY и Х2 определяются однозначно. Если произошла только"*одна ошибка, то положим Х.2 = 0; если ошибок не произошло, то Xj ;= Хя = 0.
S.6. КОДЫ. ИСПРАВЛЯЮЩИЕ ДВЕ ОЮИГ1КМ 135 Пусть Sx — v (а) и Ss - ч (а8). Эти элементы, известные также под названием компонент синдрома, вычисляются непосред- ственно по принятому слову v (х). Так как а и а8 являются кор- нями g (х), то Sj = е (а) и Х3 — е (а8). Предположим, что про- изошли две ошибки: 5Х = а* + а*', Х3 = а3( -р а3£\ Но это в точности дает систему двух уравнений относительно двух не- известных X] и Х2 в поле GF (2т): Sx = Xi + Х2, Если может произойти не более двух ошибок, то величина St равна нулю тогда и только тогда, когда не произошло ни одной ошибки. Декодер должен продолжать работу в том случае, когда 5Х отлично от нуля. Если выписанная система из двух нелиней- ных уравнений однозначно разрешима относительно Хх и Х2, то две ошибки могут быть исправлены, и минимальное расстояние рассматриваемого кода равно по меньшей мере 5. Прямого очевидного способа решения такой системы нет. Один из методов состоит во введении нового многочлена, опре- деляемого так, чтобы локаторы ошибок были его корнями: (х ~XJ(x-XJ=* + (Xi + Х2) х -|- XiXa. Если мы сумеем найти коэффициенты этого многочлена, то, раз- ложив его на линейные множители, мы сможем найти Xt и Х2. Но над расширением поля GF (2) Sj + Sa = Х&, + = S,X,X^ Таким образом, (х -|- Х|) (х + Х2) = х2 S[X -Т (5? 4- Ss)/Sj, и 0, если произошли одна или две ошибки. Многочлен в правой части нам известен, поскольку известны Si и S3. Локаторы ошибок являются корнями этого многочлена, а корни любого многочлена над полем определяются однозначно. Следовательно, код исправляет две ошибки. Указав процедуру декодирования, мы установили, что вы- бранный многочлен g(x) порождает код, исправляющий две произвольные ошибки. Практически можно использовать любую удобную процедуру декодирования, и одной из них является процедура вычисления корней выписанного выше квадратного уравнения в GF (2™). Так как всего имеется 2т возможностей выбора каждого из корней, то это часто делается методом проб и ошибок. Другие схемы декодирования будут рассмотрены в следующих главах. Рассмотренные в настоящем параграфе коды, исправляющие две ошибки, служат иллюстрацией того, как построить цикли-
136 ГЛ. 5.. ЦИКЛИЧЕСКИЕ КОДЫ ческие коды над некоторым полем, используя лежащие в боль- шем поле корни порождающих эти коды многочленов. В гл. 7 будет рассмотрен общий случай такого построения для произ- вольного поля символов GF (0 и произвольного числа исправля- емых ошибок. 5.7. ЦИКЛИЧЕСКИЕ КОДЫ, ИСПРАВЛЯЮЩИЕ ПАКЕТЫ ОШИБОК В большинстве случаев коды строятся для исправления любой случайной конфигурации из t ошибок. Некоторые каналы, од- нако, более чувствительны к пакетам ошибок. Если необходимо исправлять I ошибок, группирующихся в пределах короткого временного интервала, а не произвольную конфигурацию из t ошибок, то можно воспользоваться этим ослаблением требования для того, чтобы строить более эффективные коды, а именно коды с большей скоростью. В настоящем параграфе мы кратко кос- немся данного вопроса и приведем некоторые циклические коды, исправляющие пакеты ошибок. В силу цикличности эти коды обладают дополнительными свойствами, обычно не необходимыми: они будут исправлять не только данный пакет ошибок, но также и все его циклические сдвиги — так называемые циклические пакеты ошибок. Определение 5.7.1. Циклическим пакетом длины t называется вектор, все ненулевые компоненты которого расположены среди t последовательных (по циклу) компонент, первая и последняя из которых отличны от нуля. Пакет ошибок можно описывать многочленом вида е (х) = = xfb (х) (mod хп — 1), где Ь (х) — многочлен степени не выше t— 1 с отличным от нуля коэффициентом Ьо, Таким образом, b (х) описывает пакет ошибок, а х' указывает начальный локатор пакета. Синдромные многочлены s (х) для исправляющего пакеты ошибок циклического кода должны быть различными. А именно: если многочлены s(*> - Кею!<(•«) I различны при различных многочленах е (х), задающих цикли- ческие пакеты длины t, то данный код обладает способностью исправлять все пакеты длины t. Например, многочлен g (х) = х* -|- х3 т- х3 }- х 4- 1
5.7. КОДЫ, ИСПРАВЛЯЮЩИЕ ПАКЕТЫ ОШИБОК 137 порождает двоичный код длины 15. Перечислим все циклические пакеты ошибок длины не более 3: е (х) — хс, 1 = 0.........14, е (х) = х* (1 х) (mod х16 — 1), / = 0, ..., 14, е (х) = х1 (1 4- х®) (mod х15 — 1), i = 0, ..., 14, е(х) --х*(1 1-х 4-х3) (mod xIB — 1), 1=0........14. Непосредственным вычислением легко проверить, что синдромы для каждой из этих 56 ошибок различны, и, следовательно, по- рождаемый многочленом g (х) циклический код позволяет исправ- лять все пакеты длины 3. Заметим, что сумма кодового слова и исправляемого пакета не может быть равна сумме другого кодового слова и исправляе- мого пакета ошибок. В частности, в данном примере никакой пакет длины 6 не должен являться кодовым словом. В общем слу- чае если линейный код исправляет все пакеты длины t и меньше, то он не может содержать в качестве кодовых слов пакеты длины 21 или меньше. Следующая теорема является аналогом границы Синглтона для кодов, исправляющих случайные ошибки, хотя доказатель- ство ее отличается от доказательства границы Синглтона. Она справедлива не только для циклических кодов. Теорема 5.7.2 (граница Рейгера). Каждый линейный блоковый код. исправляющий все пакеты длины t и менее, должен содер- жать по меньшей мере 2t проверочных символов. Доказательство. Предположим, что код исправляет все па- кеты ошибок длины t и менее. Тогда он не содержит в качестве кодового слова ни одного пакета длины 21 или менее. Если два вектора принадлежат одному и тому же смежному классу, то их разность равна кодовому слову. Выберем два произвольных вектора, все компоненты которых, кроме первых 2/, равны нулю. Если эти два вектора принадлежат одному смежному классу в стандартном расположении, то их разность равна кодовому слову. Но эта разность предстааляет собой пакет длины 2/ и, согласно сказанному ранее, не может быть кодовым словом. Поэтому два таких вектора должны лежать в разных смежных классах, а число смежных классов должно быть по меньшей мере равным числу различных таких векторов. Всего имеется различных векторов, все ненулевые компоненты которых содер- жатся в первых 2t позициях; следовательно, число смежных классов равно по меньшей мере q’it. так что код содержит по мень- шей мере 2t проверочных символов. □
138 ГЛ. 5. ЦИКЛИЧЕСКИЕ коды Таблица 5.1 Некоторые двоичные циклические коды исправляющие пакеты ошибок Порождающий многочлен Параметры Длина исправляемого пакета (7.3) 2 xs 1 X4 F.X“ 4-1 (15, 10» 2 V*’ + х5 + х4 1 х-‘ + 1 (1\9) 3 ,х6+х»4-х* + 1 (31,25) 2 Е Х*’ + V5 + Х-’ + X2 1 1 (63. 56) 2 хн 1 х’ + .х'Ч-х’-И (63, 55) 3 л12 + Xs + к’ + Х-‘ + 1 (511,499) 4 х‘' + х'"+ Х-’+ хь 1 х' 1 X4 1 х2 1 1 11023. 1010) 4 Отметим, что предыдущий пример циклического кода, исправ- ляющего пакеты ошибок, удовлетворяет границе Рейгера со знаком равенства. Наиболее изученными кодами, исправляющими пакеты оши- бок, являются циклические коды, и мы ограничимся рассмотре- нием только этого класса. Для малых t и умеренных длин кода с помощью поиска на ЭВМ было найдено много хороших цикли- ческих кодов над GF (2). Некоторые из этих кодов приведены в табл. 5.1. Из приведенных в табл. 5.1 кодов можно построить более длинные коды методом перемежения. Чтобы из (п, /е)-кода по- лучить (fn, /Л)-код, выберем из исходного кода j произвольных кодовых слов и укрупним кодовые слова, чередуя их символы. Если исходный код исправлял произвольный пакет ошибок длины t, то, очевидно, результирующий код будет исправлять все па- кеты ошибок длины jt. Например, применяя метод перемежения к четырем копиям (31,25)-кода, получаем (124,100)-код. Так как каждый из четырех исходных кодов исправлял пакет ошибок длины 2, то новый код будет исправлять любой пакет ошибок длины 8. Для циклических кодов метод перемежения приводит к цикли- ческим кодам. Предположим, что исходный код порождается многочленом g(x). Тогда порождающий многочлен получаемого перемежением кода равен g (х1). Чтобы установить это, заме- тим, что перемежение символов нескольких информационных многочленов с последующим умножением на g (х‘) дает то же самое кодовое слово, что и умножение каждого из исходных
6.7. КОДЫ, ИСПРАВЛЯЮЩИЕ ПАКЕТЫ ОШИБОК 139 информационных многочленов на g(x) с последующим переме- жением этих слов (л, /е)-кода. Точнее, пусть С. W = ч We (Л. С,(х) = 4 W g W. <7 W = ч W g W представляют собой выбранные кодовые слова. Для формиро- вания слова из кода-перемежения каждое из этих выбранных информационных кодовых слов растягивается вставкой между' всеми символами слова j— 1 нулей. Кодовое слово из кода-пе- ремежения получается затем задержкой и сложением этих слов: с W - С1W) + ХГ. М I + *,_19 W) = -<,W)gW)+*'«W)eW) г *'_,‘7W)sW) = = 14И r»2(V)-l —i-w-'OWHffW)- Стоящий в квадратных скобках член можно разложить так, что получится информационное слово, составленное из исходных информационных слов методом перемежения. Это слово можно заменить любым информационным словом i (х); следовательно, < W = ‘ We(*)- Замена g (х) на g (х!) эквивалентна перемежепию j копий кода, порождаемого многочленом g (х). Кроме найденных па ЭВА\ кодов и получающихся из них пере- межеиием кодов известны также коды, построенные аналитическими методами. Одним из классов таких кодов являются кода Файра. Параметры некоторых кодов Файра приведены в табл. 5.2. Таблица 5.2 Параметры некоторых двоичных'кодов Файра (л. М t=m (9.4) (35.27) (105,94) (279.265) (693.676) (165). 1631) (3825.3802) (8687,8661) (19437, 19408) 5 6 7 8 9 10
140 гл. S. ЦИКЛИЧЕСКИЕ коды Определение 5.7.3. Кодом Файра называется исправляющий пакеты ошибок циклический код над GF (q) с порождающим многочленом g(x) = (x!'-1 - 1)р(х), где р (х) — примитивный многочлен над GF (q), степень т ко- торого не меньше длины I исправляемого пакета и который не делит х2/ 1 — 1. Длина п кода Файра равна наименьшему це- лому п, такому, что g (г) делит а”1 — 1. Теорема 5.7.4. Длина кода Файра равна п — е (2t— 1), где е — наименьшее целое число, такое, что р (х) делит х" — I. Сле- довательно, если р (х) примитивен, то для этого кода (п. k) = ((q"' — 1) (2f— 1), — 1) (2t — I) — m — 2t + 1). Доказательство. При n e (21 — 1) возможно несколько раз- ложений многочлена х’1 — 1: хп - 1 = х- <»-» 1 =- (хе - 1) £ хек, fe=0 X" - I = X- - 1 = (*»-> -1)2 Х»-» ‘ . k- о Так как р (х) делит Xе — 1, то он делит их" — 1. Так как он не делит Xй-1— 1, то он должен делить многочлен $Zrj62l~li к. Таким образом, X" — 1 = (х2/~‘ — 1)р(х)д(х) для некоторого а (х), и так как не существует меньшего п, для которого имеет место это разложение, то такое п равно длине кода. В частности, если р (х) — примитивный многочлен степени т, то р (х) делит Xе — 1 при е = qm — 1 и не делит ни при каком меньшем значении е. □ Теорема 5.7.5. Код Файра исправляет все пакеты ошибок длины t и менее. Доказательство. Этот код способен исправлять все пакеты длины / и менее, если никакие два таких пакета, xzbx (х) и хФ2 (х), не принадлежат одному и тому же смежному классу. В силу цикличности кода без потери общности можно полагать, что । равно нулю. Предположим, что два пакета длины t или меньше, bL (х) и хф2 (х), принадлежат одному и тому же смежному классу стандартного расположения рассматриваемого кода. Тогда их разность равна кодовому' слову и для некоторого а (х) имеем t, (д) — хФа(х) = a(x)(x-/~l - 1)р(х) (modx'' — 1).
5.7. КОДЫ. ИСПРАВЛЯЮЩИЕ ПАКЕТЫ ОШИБОК 141 Но многочлен хя~1— 1 делит xv (2/—•>— 1 для всех неотрицатель- ных V. Следовательно, можно записать (Xv (И-H _ IJbJx) Q(x)(x3/“I - 1) (modx" - 1). Складывая эти равенства, получаем х^ (27- I) _ х/-л, (27-п/>2 (х)| = а' (х) (X3'-’ - 1) (med х” — 1), или, что эквивалентно, X* & 1) -(/-и 1^-1^(х) _ X/+(/-l)-v (2/-l)fe2 (X)] - = а" (х) (х3'-1 1) (modx’" — 1) для некоторых и' (х) и а" (х). Но теперь в каждом из последних да ух равенств можно выбрать неотрицательное целое v, мень- шее е, так что Ь5 (х) будет умножаться на х*, 0 < k < t. Таким образом, за счет выбора v получаем Х* <*-i* И?! (х) - х*Ьа (X)) = а’ (X) (X»-1 - 1) (mod х" - 1), или XV <2' >—€*—> [х'-'б, (X) - Х»68 (х)1 = = й"(х)(х2/-1 — 1) (medхя — 1), где deg bt (х) < t, deg Ь2 (х) < t и k < t, так что степень мно- гочлена в квадратных скобках не превышает 2t— 2. Но х2'-1 — 1 должен делить стоящий в квадратных скобках многочлен. Сле- довательно, или bt (х) — х*Ь2 (х) — О, или х'-‘ bt (х) — х*Ь2 (х) — 0. Но определению пакета ошибок оба коэффициента 610 и Ь20 от- личны от нуля. Следовательно, /? 0 или соответственно k — — t— 1. В любом случае j = v(2f— 1) и bi (х) = Ьг (х) = b (х). Остается показать, что b (х) - 0. Но исходное соотношение 61 (х) - х'/?2 (х) = а (х) (х?/-‘ 1) р (х) теперь приводится к виду — (j v (27-1) _ j) ft (Х) == о (х) (х2'-« 1) р (X). При v 0 многочлен р (х) не может делить xv <2/- •> — 1, так как v меньше е и р (х) не делит хч <2'—»— 1 ни для одного целого положительного v, меньшего е. Поэтому в левой части равенства многочлен р (х) может делить только b (х). Но степень многочлена b (х) меньше степени многочлена р (х); следовательно, при v 0 многочлен Ь (х) равен нулю. Так как, далее, / = v (2t — — 1), то v = 0 означает, что j = 0, а это совместно с уже доказан-
142 гл. Б. ЦИКЛИЧЕСКИЕ КОДЫ ним равенством bL (х) Ьг (х) противоречит выбору двух разных пакетов. Таким образом, два различных пакета Ьл (х) и х'Ь.2 (х) длины t и менее всегда принадлежат разным смежным классам, и, сле- довательно, код способен исправлять пакеты длины t и менее. □ В качестве примера кода Файра выберем т — t= 10 и по- ложим р (х) равным примитивному многочлену степени 10. Тогда е — 2"' — 1, и мы получаем (19437, 19408)-код, исправляющий все пакеты ошибок длины 10 и менее. Коды Файра являются высокоскоростными кодами с малой (при т — t) избыточностью п — k. В этих случаях избыточность равна 3/ — 1, что превышает границу Решера только на t— 1. Метод перемежения позволяет строить из кодов Файра более длинные коды, исправляющие более длинные пакеты ошибок. Эти коды являются лучшими известными высокоскоростными кодами, исправляющими пакеты ошибок. В следующей главе мы увидим, что для этих кодов известны очень простые способы построения декодеров. 5.8. ДВОИЧНЫЙ КОД ГОЛЕЯ Любой, кто займется исследованием таблицы биномиальных ко- эффициентов, может заметить, что [О цП+(П+С’)12'’=2” Это равенство представляет собой необходимое (но не достаточное) условие существования совершенного исправляющего тройные ошибки (23, 12)-кода над GF (2), так как: 1) число точек внутри сферы декодирования задается записанным в квадратных скоб- ках выражением, 2) всего имеется 212 таких сфер и 3) все про- странство содержит 223 точек. Следовательно, можно ожидать существования (23, 12, 7)-кода. Такой код, названный кодом Голея, действительно существует. Он удовлетворяет границе Хэмминга из задачи 1.5 со знаком равенства. Код Голея занимает уникальное и важное место в теории ко- дирования. В силу такой хорошей упаковки сфер не удивительно, что код Голея тесно связан со многими математическими объек- тами, и поэтому его можно использовать для перехода от изу- чения теории кодирования к глубоким задачам теории групп и других областей математики. Однако встав на практическую точку зрения, вероятно, справедливо было бы заметить, что из-за малой длины код Голея, по-видимому, не найдет дальней- ших конкретных приложений. Определим код Голея как двоичный циклический код через ею порождающий многочлен.
5.8. ДВОИЧНЫЙ КОД ГОЛЕЯ 143 Пусть g (л) и g (х) — следующие взаимные многочлены: g (х) = хи 4- хм | Xе 4~ Xе I хс + хс I I, g (х) = X11 — х® + X7 + Xе 4- х® | X — 1. Простым вычислением проверяется, что (х— >)« (x)g(x) = Xй — 1, так что в качестве порождающего многочлена циклического (23, 12)-кода можно использовать как g (х), так и g (х). Мы вос- пользуемся многочленом g (х). Проведенное в начале параграфа комбинаторное рассуждение показывает, что минимальное рас- стояние этого кода не может быть больше 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 (х) и g (х). Если а — примитивный элемент поля, то в силу разложения 2047 -- — 23 X 89 и элемент поля р = а89, и обратный ему элемент Р-1 имеют порядок 23. Пусть f (х) н f (х) — минимальные многочлены элементов р к Р-* соответственно. Согласно теореме 5.3.6, минимальный многочлен элемента р равен f И = (х - р) (х - ₽) (Л- - Р<) ... (л - где все показатели степеней приводятся но модулю 23 и 2- 2Г~1 — - 1 mod 23). Сопряженными являются элементы множества В = .‘Р, рг, р«, ps, р,я. р®, р‘\ р13, р3, р®, р1»|,
144 ГЛ. 5. ЦИКЛИЧЕСКИЕ коды которых всего 1 ], так что степень многочлена / (л) равна 11. Ана- логично минимальный многочлен элемента p-t равен Г (х) = (х - ₽-') (х - Р-) <х - |S-‘) . . (х - а множество сопряженных элементов равно в = {р1, р-\ р-< frs, р-*®, р °, р18, p-*s, р-\ р^, р-«]. Вместе множества В и В содержат 22 элемента ноля, порядок каждого из которых равен 23; следовательно, (x-l)/(x)f(x) = x“-l, причем, согласно теореме о единственности разложения, это разложение единственно. Но мы видели, что такое же разложение имеет место для порождающих многочленов g (х) и g (х) кода Го- лея. Следовательно, эти порождающие многочлены представляют собой минимальные многочлены элементов сс89 и а-99 из поля CF (2048). Лемма 5.8.1. Код Голея не содержит ненулевых кодовых слов веса 4 и менее. Доказательство. Так как элементы р, р2, р8 и р4 принадлежат множеству В, то они являются корнями каждого кодового мно- гочлена. Следовательно, каждое кодовое слово удовлетворяет равенству сНт — 0, где “1 ₽₽*... ₽“ 1 Р8 р* . . . Р2‘ I р» р® . . . р30 ’ I р® р2 . . . р'в_ и, таким образом, с является кодовым словом кода с проверочной матрицей Н. Но любые четыре столбца матрицы Н образуют ненулевую матрицу, кратную матрице Вандермонда, определи- тель которой, как известно, отличен от нуля, если все элементы ее первой строки различны (это будет доказано в § 7.2). Следо- вательно, согласно следствию 3.2.3, Н является проверочной матрицей кода, минимальный вес в котором равен по меньшей мере 5. □ Следующая лемма утверждает, что код Голея не содержит слов веса 2, 6, 10, 14, 18 и 22. Лемма 5.8.2. Если вес слова Голея четен, то он кратен 4. Доказательство. Пусть с (х) = а (х) g (х) — кодовое слово, вес которого четен: I (X) = £ <<Х‘,
5.8. ДВОИЧНЫЙ КОД ГОЛЕЯ 145 где число коэффициентов q, равных единице, четно. Тогда с (]) = = 0, и поэтому х — 1 делит с (л). Но х — I не делит g (х); следо- вательно, с (а) -• 11 W (х — 1) g (х) для некоторого b (х). Определим взаимный многочлен: 8(x) - Ё с22_,х' = х" Ё С|Х-'. 1=0 1=0 Поскольку с (Р-1) в 0, для некоторого а (х) имеем г (х) = а (х) g(x). Таким образом, с (к) с (х) - Ь (х) а (х) (х — I) g (х) g (х) = b (х) а (х) (х43 — 1). Ниже мы используем это равенство, а сейчас вычислим с (х) с (х ) отметив, что произведение многочленов может быть записано в виде свертки: 44 V2 44 22 с<х)г(х)= Ё ЁсД.|х'-= Ё Scfe.i-X'- / -О 1=0 ]-Л 4=0 Если считать, что коэффициенты с индексами, меньшими нуля и большими 22, равны нулю, то сумму по £ можно заменить сум- мой от —со до со (это позволит избежать двльнейших хлопот с пределами суммирования). Сумму можно разбить на части сле- дующим образом: (х)с(х)=Ё Ё Qfas+i-j^T Ё ffXiS |- j=0 i =—со /=—со + Ё з ClCt.2+t-}xl • Второе слагаемое равно нулю, так как с4 — с, в поле GF (2) п по предположению число коэффициентов с», равных единице, четно. В последнем слагаемом сделаем подстановку £' = i + 22 — j и в обоих слагаемых заменим / на j'. Тогда с (х) с (х) = Ёо + I Ё . Ё ci'Fr 22Cf'X/'.
146 ГЛ. Б- ЦИКЛИЧЕСКИЕ КОДЫ Далее заменим I’ на I во втором слагаемом и положим j' — j — 1 в первом слагаемом и /' — / + 22 во втором. Это дает 22 оо 22 оэ с(х) с (х) = Ё . £ СКГМ-/Х/-1 + S Ci' iijX1' = 22 Г 22 = Я [ Jj QCas+i-j + CiCi+J J xi~' - [22 co 1 sJ*-1"'1-*)• Но с (x) с (x) кратно многочлену л23 — 1, и следовательно, I cuj) = 0, /=1. . 22. Это равенство должно выполняться при сложении по модулю 2. Следовательно, при целочисленном сложении при каждом / в левой части должно получаться четное число: 2j Q (^яз+м I fi+i) = 2aj. /= 1, - ... 22 для некоторых чисел aj. Левая часть не меняется при замене j на 23—/. Следовательно, й} — a29_s. Таким образом, сумми- рование по / дает 22 22 22 II Ё Ё ci т = 2 Ё а1 = 4 Ё ai = 4а ,=Oi=O j=i для некоторого а. Наконец, левую часть можно переупорядо- чить. Положим f = 23 — / в первом слагаемом и i — — j во^втором; тогда 22 22 22 22 ,Ё Ё^Л-гГ 1 Ё Ёвсгс*'-/ —4«- что вырождается в .S = 40- Так как двоичные компоненты q отличны от нуля в w позициях, отсюда следует, что w (w — 1) — 4а. В силу четности w это означает, что w кратно 4, что в доказывает лемму. [□
е.в. двоичный код голея 147 Теперь можно перейти к доказательству следующей теоремы. Теорема 5.8.3. Код Голея является совершенным кодом, ис- правляющим три ошибки. Доказательство. Как уже было указано в начале этого пара- графа, необходимо только доказать, что минимальное расстоя- ние равно по меньшей мере 7- В силу леммы 5.8.1 оно равно по меньшей мере 5, а в силу леммы 5.8.2 оно не может быть равно 6. Таким образом, необходимо только доказать, что код не содер- жит слов веса 5. Рассмотрим кодовое слово g (х) g (х); в действительности g(х) g(х) =- Ufe-ix*. так как (х — 1) g (х) g(x) = х" — 1 = (х — — 1) Sfe^exft- Таким образом, коду принадлежит слово, все ком- поненты которого равны 1. Прибавление этого кодового слова к любому кодовому слову веса к> дает кодовое слово веса 23 — w. Тогда, согласно лемме 5.8.2, в коде не содержится слов с весами, равными 21, 17, 13, 9, 5 и 1; в частности, не содержится слов веса 5. Теорема доказана. □ Отметим, что из доказательства теоремы следует также, что все веса слов в коде Голея исчерпываются числами 0, 7, 8, 11, 12, 15, 16 и 23. Просчитанное па ЭВМ число слов каждого веса приведено в табл. 5.3. Кроме двоичного кода Голея существует также совершенный троичный (11, 6, 5)-код Голея. Этими двумя кодами исчерпы- ваются все нетривиальные примеры совершенных кодов, исправ- ляющих более одной ошибки. Таблица 5.3 Веса слов кода Голея Бес Число слое (23.121-ков Расширенный (24,12)'КО0 0 7 8 253 0 506 759 1288 (1 1288 2576 15 16 23 24 506 О 253 759 1 0 - 1 4096 4096
148 ГД- S. ЦИКЛИЧЕСКИЕ КОДЫ 5.9. КВАДРАТИЧНО-ВЫ ЧЕТНЫЕ КОДЫ Класс квадратично-вычетных кодов представляет собой частный подкласс циклических кодов, широко изучаемых потому, что в этом подклассе было найдено несколько хороших кодов и поэ- тому имеется надежда найти в нем другие хорошие коды. На рис. 5.2 приведены параметры некоторых квадратично-вычетных кодов с известным минимальным расстоянием. Наиболее извест- ным кодом класса является код Голея. Большинство кодов из этого списка обладают большим минимальным расстоянием, чем любой друюй известный код с теми же параметрами п и А, что и привлекает внимание исследователей к квадратично-вычетным кодам. Однако не все эти коды хороши, и нс известно, сущест- вуют ли хорошие квадратично-вычетные коды большой длины. Поэтому неясно, насколько квадратично-вычетные коды полезны в практических приложениях. рассмотрим только двоичные квадратично-вычетные коды. Название этих кодов отражает их связь с теми элементами про- стого поля, которые имеют в этом поле квадратный корень. Как показывает теорема 4.6.15, в полях характеристики 2 каждый элемент имеет единственный квадратный корень. В простом поле GF (р), Р =5^ 2, квадратный корень имеет точно половина нену- левых элементов, а именно те (р — 1 )/2 элементов, которые равны четным степеням примитивного элемента. Эти элементы принято называть квадратичными вычетами (так как они равны квадра- там своих квадратных корней по модулю р). Подчеркнем, что, Рис 5.2. Параметры некоторых двоичных квадратично-вычетных кодов. Знаком сноски *) отмечены параметры лучших из известных кодов с данными п и k.
6.9. КВАДРАТИЧНО-ВЫЧЕТНЫЕ КОДЫ 149 хотя мы рассматриваем коды над GF (2), квадратичные вычеты, входящие в их определение, лежат в поле GF (р), р ^=2. Не следует также путать поле локаторов GF (2"‘) с полем GF (р), которое не является подполем поля локаторов. Определение 5.9.1. Квадратично-вычетным кодом называется циклический код над GF (2), длина которого равна простому числу р, делящему 2'" 1 при некотором т, а корнями порож- дающего многочлена являются все элементы а? из GF (2"‘), та- кие, что / является квадратичным вычетом поля GF (р). Как следует из этого определения, g(x)= П (х -аГ), i EQR где произведение вычисляется по множеству QR всех квадратич- ных вычетов по модулю р, причем предполагается, что g (х) пред- ставляет собой многочлен над GF (2). Если такой многочлен не является многочленом над GF (2), то для этого значения р кода не существует. Из определения многочлена g (х) следует также, что Хр - 1 = (X — 1) g(x) g(x), где многочлен g (х) определяется тем, что все (р — 1)/2 его кор- ней суть элементы вида а1' из GF (2"‘) для всех ненулевых ква- дратичных невычетов / из GF (р). Многочлен g (х) является вза- имным к g(x) и порождает эквивалентный код. Многочлен g'W=(*-i) П (* “9 / порождает другой код. У этого многочлена корней на один больше, чем у многочлена g (х), и, следовательно, порождаемый им код является подкодом квадратично-вычетного кода. Этот подкод тоже называется квадратично-вычетным, но он не так интересен, как исходный код, и в дальнейшем мы не будем его рассматривать. Квадратично-вычетный код над полем GF (2) существует только тогда, когда все коэффициенты многочлена g(x) лежат в этом поле. Вскоре мы увидим, что квадратично-вычетный код сущест- вует только тогда, когда р является простым числом вида р= = 8/е ± 1. Но для описания одного такого кода надо знать его минимальное расстояние. Обычно задача вычисления минималь- ного расстояния квадратично-вычетного кода является достаточно сложной, и каждый из кодов требует индивидуального подхода. Один из примеров мы встретили в предыдущем параграфе при исследовании (23, 12)-кода Голея- Для всех перечисленных на рис. 5.2 квадратично-вычетных кодов минимальные расстояния
150 гл. Б, ЦИКЛИЧЕСКИЕ коды известны. Имеется много других квадратично-вычетных кодов, но их минимальные расстояния не известны Мы укажем одну границу для минимального расстояния про- извольного квадратично-вычетного кода. Граница не очень хо- роша, но легко доказывается. Теорема 5.9,2 (граница квадратного корня). Минимальное расстояние произвольного квадратично-вычетного кода длины р удовлетворяет неравенству d* ] р. Доказательство. Зафиксируем произвольный ненулевой эле- мент s поля G/-’ (р), не являющийся квадратичным вычетом. Каж- дый элемент поля GF (р) можно записать в виде js для некоторого j (так как GF (р) — поле). Если число j является квадратичным вычетом, то, очевидно, js будет квадратичным невычетом, если же j — квадратичный невычет, то js является квадратичным вычетом. Пусть с (х) представляет собой кодовый многочлен минималь- ного веса d*. Тогда с(х) ~ а (х) g (х) для некоторого а (х). Опре- делим с (х) — с (xs) (mod х" — 1). При этом с (х) = a (Xs) X Xg(x*) (mod хл— 1), и вес многочлена с(х) равен самое боль- шее d*. Но если / — квадратичный вычет, то g (ods) 0, а если / — квадратичный невычет. Tog (cd5) = 0. Таким образом, g (xs) — = g (х). Следовательно, с (х) с (х) (mod х" — 1) делится как на g (х), так и на g(x). Этот многочлен кратен многочлену х₽_* + + хр-2 -Ь ... + х + 1, а степень его равна самое большее р — 1, и поэтому с(х)с(х) = х₽-’ | xp-®+ - , х | ] (mod л? — 1). В правой части стоит многочлен веса р, а так как вес многочлена с (х) равен d*, то возможный вес многочлена в левой части не превосходит (d*)2. Итак, d* j р, что и требовалось доказать.□ Теперь определим, когда коэффициенты определенного выше многочлена g(x) принимают только двоичные значения. Если 2 является квадратичным вычетом, то все степени двойки также являются квадратичными вычетами. Далее, если / — другой квадратичный вычет, то все числа 2j, 4/, 8j, ... также являются квадратичными вычетами- Следовательно, вместе с cd все его сопряженные относительно ноля GF (2) элементы являются кор- нями порождающего многочлена. 13 этом случае многочлены g(x) и g (х) представляют собой многочлены над GF (2). Таким обра- зом, квадратично-вычетные коды существуют для всех таких р, для которых 2 является квадратичным вычетом в ноле GF (р). Мы увидим, что числа р, для которых 2 является квадратичным вычетом в поле GF (р), исчерпываются простыми числами вида р — 8/е ± 1 для произвольного целого k. Это утверждение яв-
Б.Я. КВАДРАТИЧНО-ВЫЧЕТНЫЕ КОДЫ 161 ляется достаточно трудной теоремой теории чисел, и чтобы облег- чить ее доказательство, мы введем несколько лемм. Лемма 5.9.3. Если р — простое число вида р = 8k 1, то в поле GF (р) имеет место равенство 2(₽-’№ = ]. Если р — про- стое число вида р = 8k -*= 3, то в поле GF (р) имеет место равен- ство •№ = —1. Доказательство. Прежде всего заметим, что в поле Gt (р) для любого а справедливо равенство 2а = —(р — 2а), и, таким образом, а, а, Л П 2о= П I—(р-2а)]_(— П (р- •>„)- а=А„ а=А, Пусть х обозначает наибольшее целое число, меньшее или равное х. Тогда имеем следующую цепочку равенств: (P-D/2 (P-D/2 2<р-1)/2 п а = П (2а) = L(p-I>/4J <Р-’>/2 = П (2а) П (2а) = с=1 a=L(P-1)/4J+I ГЦр-ИД! J Г (P-0/2 ] Теперь в перво.м произведении 2а пробегает по всем четным це- лым числам от 2 до (р — 1)/2, а во втором произведении р — 2а пробегает по всем нечетным целым числам от ] до (р — 1 )/2 — 1. Это легко проверить, отдельно рассматривая случаи четных и нечетных (р — ])/2. Объединяя оба произведения, имеем (р-О/2 (Р—0/2 2(р-о/2 П а = (— l)[(p“O/2-i(p-i)/4j] П а. а—1 ‘ с=1 Далее, так как в поле GF (р) все члены произведения отличны от нуля, то можно провести сокращение, что дает 2<р-1)/2 = (— ])((P-IJ/2-L(p-I)/4JJ. Если р -• 8k -ь 1, то показатель степени у (—1) равен четному числу и 2CP-D/2 = 1. Если р = 8k ± 3, то показатель степени у (—1) равен нечетному числу II 2<Р-1)/2 = — 1 f что и завершает доказательство леммы- □
162 гл. Б. ЦИКЛИЧЕСКИЕ КОДЫ Лемма 5.9.4. В поле GF (р) число г является квадратичным вычетом тогда и только тогда, когда г,р~1№ = 1. Доказательство. Предположим, что Тогда -\'г не может существовать, так как если он существует, то (у'г)р-1 должно равняться единице, что противоречит предположению. Предположим теперь, что = |, и обозначим через а примитивный элемент поля GF (р). Все четные степени а, оче- видно, являются квадратичными вычетами, и так как половина ненулевых элементов поля является квадратичными невычетами, то отсюда вытекает, что все нечетные степени элемента а обра- зуют квадратичные невычеты. Нам надо только показать, что г равно четной степени элемента а. Допустим противное; тогда г = a®+! и r<₽-i)/2 = (авн-1)(д>-1)/2 = а1 (₽-»«(₽—0/2 — =a<p-i)/2=?4=], так как порядок а равен р — 1. Итак, из равенства гСр-0/2 — ] вытекает, что г равно четной степени элемента а и, следовательно, является квадратичным вычетом. □ Теорема 5.9.5. В простом поле GF (р) элемент 2 является квадратичным вычетом, если р = 8k =1 для некоторого це- лого k, и квадратичным невычетом, если р = 8k 3. Доказательство непосредственно вытекает из леммы 5.9.3 и 5.9.4. □ ЗАДАЧИ 5.1. Многочлен g (х) = xs -f- х’ -Т хв + **+ 1 порождает циклический код над GF (2) длины 15. а. Найти проверочную матрицу кода. б. Сколько ошибсж может испрвалятъ этот код? в. Сколько стираний может исправлять этот код? г. Найти порождающую матрицу кода в систематическом виде. 5.2. Найти минимальный многочлен для каждого элемента поля GF (16). 5.3. Найти порождающий многочлен даоичного (3), 2!)-кода, исправляю- щего две ошибки 5.4. Найти порождающий многочлен двоичного циклического (21, 12)-кода, исправляющего две ошибки. 5.5 Многочлен g (х) — хе Зх5 + х* -f- ха -|- 2х2 + 2х + 1 порождает над GF (4) циклический код длины 15, исправляющий две ошибки. а. Найти порождающую матрицу кода в систематическом виде. б. 1 (оказать, что каждое кодовое слово кода из задачи 5.1 принадлежит рассматриваемому коду. 5.6. Пусть g (х) — порождающий многочлен циклического кода над GF (q) длины п. Доказать, чго если л и q взаимно просты, то слово, все компоненты ко- торого равны ), принадлежит коду тегда и только тогда, когда I не является корней порождающего многочлена.
ЗАМЕЧАНИЯ 163 5.7. Предположим, что многочлен g (х) — gn_ftx" k F — + go порож- дает циклический код. Доказать, 4voga нс равно нулю Доказать, что взаимный многочлен g(x) = g^"-* + gjx”-* + — + gn-h порождает эквивалент- ный циклический код. 5.8. Предположим, что двоичный циклический код обладает тем свойством, что если с (л) — кодовый многочлен, то и ? (х) - - кодовый многочлен. Дока- зать, что g (х) — g (X). Как формулируется соответствующее утверждение для недвоичного кода? 5.9. Панги порождающий многочлен (9, 7)-када Хэмминга над GF (8). 5.10. Расширить табл. 5.2, включив в нее все коды Файра, основанные на примитивных многочленах р (х) для 12 > т t. 5.11. Предположим, что g, (х) и ge(x) порождают над 67 (q) дна кода н с одинаковой длиной. Доказать, что если все корни многочлена g, (х) яв- ляются корнями многочлена g2 (х) (так чти gt (х) делит g., (х)), то 9В является иодкодом кода V,. 5.12. Многочлен g (х) — х® | Зх» -| х®-[-л® |-2х® ,-2х 1 над GF (4) порождает циклический (15,9)-код над GF (4), исправляющий две ошибки. а. Является ли многочлен » (х) — х10 -1- Зх8 г х J- 2 кодовым словом? 6. Чему равен синдромный многочлен для многочлена в (х)? в. Сколько синдромных многочленов нужно затабулировать, чтобы охватить все исправляемые конфигурации ошибок? 5.13. Разложить многочлен х® — 1 над GF (3) Сколько имеется цикличе- ских кодов над GF (3) длины 8? 5.14. Доказать, что все элементы, сопряженные с примитивным элементом, также являются примитивными. 5.15. Построить над GF (256) порождающий многочлен для кода Файра длины п = 4845, исправляющего все пакеты не более чем из 10 ошибок. ЗАМЕЧАНИЯ Центральная идея, объединяющая всю эту главу, была выдвинута в глубоких работах Прейнджа [1957, 1958 J. Прсйндж ввел понятие циклического кода и указал на его связь с идеалами алгебр, которые независимо изучали ои, Питер- сон [1960] н К асами [I960]. Эта работа появилась в конце 50-х годов и зало- жила фундамент переворота, произошедшего в 60-х годах, когда стало понятно, что циклические коды можно описывать в расширениях полей, и это привело к идеям, которые будут изложены в гл. 7. Большинство материала данной главы использует метод расширения полей Исследование кодов, исправляющих пакеты ошибок, было начато Эйбрам- соном [1959]. Большинство из практически используемых кодов было пайдено с помощью поиска на ЭВМ, причем многие из них нашел Касами [1963]. Пер- вая таблица из § 5.7 основана на компиляции из книги Питерсона и Уэлдона [1971]. Коды Файра были опубликованы Файрсм в 1959 г. Двоичный (23,12,7)-код Голея и троичный (11,6.5)-код Голея были опуб- ликованы в 1949 г. (Гойей [1949]). Наше доказательство теорены о минимальном расстоянии двоичного кода Голея восходит к Мак-Элису [19771- Циклическую структуру кодов Хэмминга независимо установили Эйбрамсон [I960] и Элспас [I960] Квадратично-вычетные коды были введены Прсйнджем [1958] и ши- роко изучались впоследствии; резюме посвященных им работ дали Лссмус и Мэттсон [1974]
ГЛАВА 6 СХЕМНАЯ РЕАЛИЗАЦИЯ ЦИКЛИЧЕСКОГО КОДИРОВАНИЯ В этой главе мы временно прерываем поиски циклических кодов с большим минимальным расстоянием. К ним мы вернемся в сле- дующей главе, а сейчас займемся теми конструкциями кодеров и декодеров, которые, как правило, содержат регистры сдвига. Цифровые логические устройства легко организовать в виде цепей регистров сдвига, имитирующих циклические сдвиги и по- линоминальную арифметику, используемые в описании цикли- ческих кодов. Поэтому структура циклических кодов тесно свя- зана со структурой цепей регистров сдвига. В частности, эти цепи очень удачно подошли для реализации многих процедур кодирования и декодирования, в которых они часто принимают вид фильтров. В самом деле, многие алгоритмы проще описать, используя символику цепей регистров сдвига. Многие детвли легче понять на схеме, чем из формулы. В данной главе мы рас- смотрим кодеры и декодеры, основанные на регистрах сдвига. 6.1. ЛОГИЧЕСКИЕ ЦЕПИ ДЛЯ АРИФМЕТИКИ КОНЕЧНОГО ПОЛЯ Арифметику полей Галуа легко реализовать с помощью логи- ческих цепей, особенно если q является степенью двойки. Нам пужны элементы цепи для запоминания элементов поля, называ- емые разрядами регистра сдвига, и элементы цепи для выпол- нения арифметических операций конечного поля. Мы определим эти элементы для произвольного поля GF (q), хотя обычно они строятся из двоичных элементов. PeiHcrp сдвига, как показано на рис. 6.1, представляет со- бой последовательность элементов памяти, называемых разря- дами. Каждый разряд содержит один элемент поля GF (q). Со- держащийся в каждом разряде символ, покидая этот разряд, по- является па выходящей из него линии Каждый разряд снабжен также входной лшшей, по которой в пего поступает элемент
6.1. ЛОГИЧЕСКИЕ Ц^ЕПИ 165 поля GF (д). Если нет других указаний, то этот входной символ принимается равным пулевому элементу поля. В дискретные мо- менты времени, называемые тактами, содержащиеся в устрой- ствах памяти элементы поля замещаются элементами поля с вход- ных линий. Современные электронные регистры сдвига допускают тактовую частоту, превосходящую 10 миллионов тактов в секунду. Помимо регистров сдвига мы будем использовать три других элемента, показанных на рис. 6.2, а именно умножитель на ска- ляр, сумматор и умножитель. Умножитель на скаляр является функцией одной входной переменной; он умножает входную пе- ременную на фиксированный элемент поля GF (q). Сумматор и умножитель являются функциями двух входных переменных, принимающих значения из GF (q). В двоичном случае сумматор также называется элементом «исключительною или», а умножи- тель — элементом «и». Все перечисленные выше элементы цепей можно для произволь- ною GF (q) построить из двоичных элементов Опишем, как это делается в том случае, когда q представляет собой степень двойки. Элементы поля GF (2"‘) записываются совокупностями т битов и могут быть реализованы в цепи или параллельно (в один мо- мент времени один бит на каждом из гп проводов), или последова- тельно (в один момент времени один бит на одном проводе) Оба способа реализации элементов воля GF (2Ш) на двоичных регистрах .сдвига демонстрируются на рис. 6.3, где показан част- ный случай поля GF(16). Каждый элемент поля представляется четырьмя битами, а последовательность элементов поля записы- вается последовательностью 4-битовых чисел. Элементы поля могут быть выполнены последовательно или параллельно, г е с исполь- зованием одною или четырех проводов. В случае последователь- ного исполнения регистр сдвига для GF (16) реализуется в виде двоичного регистра, длина которого в четыре раза больше. Для сдвига элемента поля в следующую ячейку на самом деле потре- буется четыре такта. Рис. 6.1. «-разрядный регистр сдвига. 6 Рис. 6.2. Элементы устройств, а — умножитель на скаляр; б — сумматор, в — умножитель.
163 ГЛ. «. СХЕМНАЯ РЕАЛИЗАЦИЯ а Рис. 6.3. Построенные из двоичных компонентов регистры сдвига для поля 16 элементов, а — последовательное исполнение-, б — параллель- ное исполненвс. На рис. 6.4 показаны цепи сложения элементов в поле GF (16) как для последовательного, так п для параллельного исполнения. В каждом случае перед выполнением сложения слагаемые вво- дятся в соответствующие регистры сдвига, а сумма формируется
В.2. ЦИФРОВЫЕ ФИЛЬТРЫ 1Е7 в третьем регистре сдвига. В схеме последовательного исполнения для выполнения сложения требуются четыре такта, а в схеме па- раллельного исполнения требуется только один такт, но сумматор содержит больше проводов и сумматоров по модулю 2. При же- лании слагаемые могут быть возвращены в исходные регистры сдвига для дальнейшего использования в других целях. На рис. 6.5 изображен умножитель произвольного элемента поля GF (16) на констапту [5 = г8 поля GF (16). Для описания этого устройства нам необходимо конкретизировать представление поля GF (16). Предположим, что оно построено с помощью примитив- ного многочлена р (z) = г* + г I 1 и что у yaz8 — ysz8 ]- + YjZ + Уо — произвольный элемент поля. Тогда — Тз2в + Т8г5 Ч YiZ4 -|- т0г3 — = (Тз - То) 2® + (Тз + Ts) г2 + (?2 -I Vi) z + ь. Из этого равенства непосредственно вытекает способ параллель- ного исполнения умножителя на скаляр. Последовательное ис- полнение этого умножителя менее очевидно. В нем использованы обе строки предыдущего равенства: сначала вычисляется ysz5 + + Т^г5 + Ti2* 4“ То2®» 3 затем делается приведение по модулю z4 + z + 1. Эта схема является цепью деления на многочлен z4-j z -| 1. Для выполнения умножения на 0 в ней требуются четыре такта. 6.2. ЦИФРОВЫЕ ФИЛЬТРЫ Регистры сдвига можно использовать для умножения и деления многочленов над GF (<у); этим и объясняется их частое применение в конструкциях кодеров и декодеров. Регистры сдвига полезны и для развития теории, так как играют роль своего рода псевдо- математических обозначений, помогающих лучше понять некото- рые действия над многочленами. Цепи регистров сдвига называ- ются также фильтрами. Можно интерпретировать п символов, содержащихся в реги- стре длины п, как коэффициенты многочлена степени п — 1. В качестве обычного соглашения условимся, что регистр всегда сдвигается слева направо. Такое требование приведет иногда к тому, что коэффициенты многочлена будут появляться в регистре сдвига в нисходящем порядке справа палево, а это, к сожалению, проти- воречит общепринятому правилу записи многочленов. Для циклического сдвига многочлена используется замкну- тый в кольцо регистр сдвига. На рис. 6.6 изображен н-разрядный регистр, используемый для циклического сдвига многочлена сте- пени п — 1. Он вычисляет xv (a) (modx" 1). Это простейший пример регистра сдвига с линейной обратной связью.
168 ГЛ. в. СХЕМНАЯ РЕАЛИЗАЦИЯ Рис. 6.6. Устройство циклического сдвига многочлена. Рис. 6.7. Регистр сдвига с линейной обратной связью. Общий вид регистра сдвига с линейной обратной связью пока- зан па рис. 6.7. Эта цепь реализует вычисление рекурсии р, = — Если в начальный момент регистр загружен L символами (р0, • то на выходе регистра появится бесконечная последо- вательность символов, начинающаяся с р0 и удовлетворяющая вы- писанному выше рекуррентному уравнению. Если этот фильтр используется в изображенной на рис. 6.8 цени, то он называется авторегрессионным фильтром. Так как в нем имеется обратная связь, то он относится к обширному классу так называемых рекуррентных фильтров. Вместо того чтобы па вход фильтра подавать по линии обрат- ной связи его выходной сигнал, в качестве входного сигнала мо- жно использовать генерируемую извне последовательность. Та- кой линейный регистр сдвша без обратной связи показан на рис. 6.9. Он называется также фильтром с конечным импульсным откликом (КИО-фильтром) или нерекуррентным фильтром. Пусть коэффициенты многочлена g (х) gLxL I ... т gtx |- -|- gv равны весовым множителям в отводах регистра сдвига без обратной связи, и пусть входная и выходная последовательности записываются соответственно многочленами а (х) — аьх'г -г ... + + fljX -г а0 и b (х) =- fefc+LXft+/- -| ... + btx + bv. Тогда произ- ведение этих многочленов b (х) — g (л) а (х) описывает проис- ходящие в изображенном на рис. 6.9 регистре сдвига процессы при условии, что в начальный момент регистр содержал только нули и ввод элемента сопровождается вводом L нулей. Говорят,
п.2, цифровые фильтры leg «то коэффициенты многочленов a (г) и g (а) свертываются реги- стром сдвига, так как 1'1 = S Применительно к многочленам КИО-фильтр можно рассматри- вать как устройство для умножения произвольного многочлена а (х) па фиксированный многочлен g (л). Мы будем называть его также цепью умножения на g (х). На рис. 6.Ю, а приведен пример цепи умножения на g (х) для g (х) — х® + х7 - х4 4- х® -J- х I. Эта цепь является КИО- фильтром. Подчеркнем, что внутренние разряды регистра сдвига считываются, но не изменяются. Можно указать другой вариант устройства, в котором внутренние разряды меняются, но, как правило, этот альтернативный вариант оказывается более доро- гим. На рис. 6.10, б показан такой альтернативный вариант для цепи умножения на g (х). Эта форма КИО-фильтра не является общепринятой. Регистр сдвига можно также использовать для деления произ- вольного многочлена на фиксированный многочлен. Выполняю- щая эту операцию цепь почти повторяет обычную процедуру де- Рис. 6.8. Авторегрессионный фильтр. с0 А Рис. 6.9. Регистр с чеша без обратной связи.
160 гл. И. СХЕМНАЯ РЕАЛИЗАЦИЯ ленця многочленов. Предположим, что делитель является приве- денным многочленом. (В противном случае скалярный множи- тель можно вынести и выполнить соответствующее деление от- дельно.) Деление «уголком» записывается в виде (я,- + - (л„-2 — а„ ).v" * 4- - Эти вычисления можно записать в виде системы двух рекуррент- ных равенств. Пусть Q(r) (х) н /?<'• (х) —соответственно частное и остаток на r-м таге рекурсии с начальными значениями Q(Oi (л) - 0 и /?° (х) - а (л). Тогда рекуррентные равенства за- писываются в виде еи и = </'-" (х) + R"’(х) = R<r-,)(х) - Й'-||х'-'в(х), и после k шагов итерации получаются частное Q{ft) (х) и остаток Rw (х). Изображенная на рис. 6.11 цепь является цепью деления произвольного многочлена на фиксированный многочлен g (х). Это легко понять, обратившись к любому из двух приведенных описаний процедуры деления. Единственной не отраженной на цепи операцией является вычитание члена Rn-rX™ из самого себя, выполнять которую не надо, так как результат всегда равен нулю. После п сдвигов на выходе регистра будет вычислено част- ное, а в регистре окажется записанным остаток от деления. На рис. 6.12, а приводится пример цепи, реализующей де- ление произвольного многочлена над GF (2) на многочлен g (х) — =-х2 + х» | х*-J-х® + х 4- 1. Рис. 6.10. Два устройства умножении на многочлен Xs | х’ | х4-1 Xя -| х -| 1.
6.S. ЦИФРОВЫЕ ФИЛЬТРЫ 161 Рис. 6.11. .Устройство деления на многочлену (х)^ Остаток на тактах Вниз на тактах от л+1 во л+А Частное на тактах от п -А дол б Рис. 6.12. Двч устройства деления на многочлен Xя — х1 1 х4 |-х”+х-|- 1. Отметим, что в этой цепи между внутренними разрядами ре- гистра вставлены сумматоры и это часто усложняет работу цепи. Вместо описанной цепи деления можно использовать цепь, в ко- торой производится только считывание содержимого разрядов регистра сдвига без их изменения. Для построения такой цепи ор- ганизуем иначе деление многочленов Идея сводится к одновре- менному выполнению всех вычитаний одного столбца в описанном выше делении «уголком». Чтобы показать, как это делается, за- метим, что можно записать W-QI'I Wg«. так что r"-" s' к„ , .,g" f-=I <2W (*) = «"-"« Эти равенства можно реализовать с помощью модификации цепи умножения на g (х). На рис. 6.12, б показана соответствующая цепь деления на многочлен g (х) — х- + х7 -1- х4 + х2 I х -|- 1. 6 Р. Б-чеЙхут
162 ГЛ- в. СХЕМНАЯ РЕАЛИЗАЦИЯ 6.3. КОДЕРЫ И ДЕКОДЕРЫ НА РЕГИСТРАХ СДВИГА Целесообразность использования регистров сдвига для построе- ния циклических кодеров и декодеров объясняется структурой циклических кодов. При несистематическом кодировании цикли- ческих кодов для формирования кодового слова с {х) надо соот- ветствующий информационный многочлен i (х) умножить на фик- сированный порождающий многочлен g (х). Эту операцию можно реализовать на КИО-фильтре над GF (q). Такой кодер для (15, 11)-кода Хэмминга представлен на рис. 6.1.3. Для кодирования непрерывного потока информационных битов последовательно- стью слов (15, 11)-кода Хэмминга информационная последова- тельность просто разбивается на блоки по 11 битов, каждый блок дополняется «прокладкой» из четырех нулей, а результирующий поток битов пропускается через КИО-фильтр. На выходе полу- чается последовательность непересекающихся 15-битовых слов кода Хэмминга Такой кодер, показанный на рис. 6.14, очень прост, но кодовые слова оказываются несистематическими. Для получения слов кода в систематическом виде надо восполь- зоваться другим кодером. Поместим информационные биты в стар- шие разряды кодового слова и подберем проверочные символы так, чтобы получить допустимое кодовое слово. Кодовое слово записывается в виде с (л) = xn~ki (х) -F t (х), где t (х) = -Rg (*) [x"—ki (х) ], так что Я£(Х) ]С (X)l = 0. Для реализации систематического кодера используется цепь де- ления на g(x). Для (15, 11)-кода Хэмминга «И- К«и 1л«1; соответствующее устройство показано на рис. 6.15. Одиннадцать информационных битов, занимающих старшие разряды, вводятся слева в цепь деления на х* + х + 1. Умножение на х4 учитыва- ется временем работы цепи. Первый бит понимается как коэффи- циент при х’5. Деление не начинается до тех пор, пока не выпол- нены четыре тактовых сдвига, так что первые четыре бита оказы- ваются записанными в разрядах регистра сдвига. Поэтому ниже цепи деления в устройство включен буфер из четырех разрядов, так, что первые четыре бита начинают поступать в канал одно- временно с началом деления. После 11 тактов работы все 11 ин- формационных битов поданы в канал, деление закончено и вы-
G.3. КОДЕРЫ И ДЕКОДЕРЫ НА РЕГИСТРАХ СДВИГА 163 г(л)“Ка:)(х4+х+1) Рис. 6.13. Несистематический кодер дли (15, II)-кода Хэмминга. 4-битовая Н-битовое 15-битовое прокладка информационное кодовое мою --------------------^KM0-(puwnp|--------------------- Рис. 6.14. Кодирование длинного потока битов. Открыто на последних Вверх на последних 4 тактах С(х) (всего 19 тактов) Рис. 6.15. Систематический кодер для (15, 11)-кода Хэмминга. численный остаток готов для подачи в канал в качестве провероч- ных символов. В течение этих последних четырех тактов работы цепь обратной связи в устройстве деления разомкнута. В общей сложности полное кодирование занимает 19 тактов. Можно несколько ускорить кодирование, 'удалив первые че- тыре такта. Такой кодер изображен на рис. 6.16. Чтобы понять эту схему, нужно заметить, что поступающие информационные символы не вводятся немедленно" для выполнения деления на g (х), а поступают тогда, когда необходимо сформировать сигнал обратной связи. Таким образом, обратная связь*~в устройстве на рис. 6.16 такова же, как и в устройстве на рис. 6.15. Далее, так как последние биты многочлена х4/ (х) всегда равны нулю, то’ни- чего не случится, если мы прибавим их к остатку от деления. Та- ким образом, остаток, вычисляемый устройством на рис. 6.16, равен остатку, вычисляемому устройством на рис. 6.15, но вычисление происходит только за 15 тактов, что, конечно, удобнее. 6»
164 ГЛ. 6. СХЕМНАЯ РЕАЛИЗАЦИЯ Открыто на последних L тактах Вверх на последних 4 тактах *----------С($) Вниз на первых it тактах (всего 15 тактов; Рис. 6.16. Другой систематический кодер для (15, 11)-кода Хэммнша. Теперь обратимся к декодеру. В канал поступаю i коэффици- енты многочлена с (х). К ним прибавляется многочлен ошибок е (х). На выходе канала принимается многочлен v (х) с (х) + г (х). В § 5 2 была описана очень простая но идее процедура декодиро- вания, основанная на просмотре таблицы. Принятая последо- вательность делится на g (х), и остаток отделения полашется рав- ным синдромному многочлену. Синдромный многочлен использу- ется для выбора из таблицы оценки для многочлена ошибки. В дво- ичном случае синдром можно использовать непосредственно как адрес хранящейся в таблице оценки вектора ошибок е (х). На рис. 6.17 изображен декодер для несистематического (15, 11)-кода Хэмминга. Для этого кода синдром задастся 4 битами, и, следовательно, необходимо постояннее запоминающее устрой- ство (ПЗУ), в котором записаны 15-битовые слова, четыре из кото- рых заняты адресом. Такой подход представляв!ся практичным для длин п —k синдромов вплоть до 12 или 14 битов, но, как |15-6итовый регистр ейаигп. —|15-битовь1й регистр сВьига Кх) Рис. 6.17. Синдромный декодер для несистематического (15, 11)-кода Хэм- минга. ПЗУ: 1b слой по 15 битое каждое
6.4- ДЕКОДЕР МЕГГИТТА 1 gg мы увидим в следующем параграфе, возможны и другие техниче- ские решения. После исправления принятого слова получаем многочлен с (х), по которому устройство деления на g (л) вычис- ляет информационные символы согласно правилу i «-«.wlcwi, и на этом работа декодера заканчивается. 6.4. ДЕКОДЕР МЕГГИТТА Наиболее сложной частью описанного в предыдущем параграфе декодера с регистром сдвига является табулирование заранее вычисленных синдромных многочленов и соответствующих им многочленов ошибок. Такой табличный декодер можно значительно упростить, воспользовавшись сильной ал1ебраический струк- турой кода для отыскания связей между синдромами. Опираясь на эти связи, можно запомнить только многочлены ошибок, соот- ветствующие некоторым типичным синдромным многочленам. Вычисление остальных необходимых величин осуществляется за- тем с помощью простых вычислительных алгоритмов. Простейший декодер такого типа, так называемый декодер Меггшпта, проверяет синдромы только для тех конфигураций ошибок, которые расположены в старших позициях. Декодирова- ние ошибок в остальных позициях основано на циклической струк- туре кода и осуществляется позже. Соответственно таблица синдро- мов содержит только те синдромы, которые соответствуют много- членам ошибок с ненулевым коэффициентом Если вычислен- ный синдром находится в этой таблице, то еп-1 исправляется. Затем принятое слово циклически сдвигается и повторяется про- цесс нахождения возможной ошибки в предшествующей по стар- шинству позиции (t'n-s #= 0) Этот процесс повторяется последо- вательно для каждой компоненты; каждая компонента проверя- ется на наличие ошибки, и если ошибка найдена, то она исправ- ляется. В действительности нет необходимости вычислять синдромы для всех циклических сдвигов принятого слова. Новый синдром можно легко вычислить по уже вычисленному. Основная взаимо- связь описывается следующей теоремой. Теорема 6.4.1 (Меггитт). Предположим, что g (х) h (х) — = хп — 1 и КаЮ 1» (A)] =S(x). Тогда Hg (*) ] w (х) (mod хп — 1)] = (JC) [xs (x)].
166 ГЛ- О- СХЕМНАЯ РЕАЛИЗАЦИЯ Доказательство сводится к комбинации трех простых утвер- ждений. (i) По определению «м-кИйн+'И. XV (х) - xg (x)Q, (х) + XS (X), (il) xv (х) (mod X*' 1) = xv (х) — (х" - 1) t'._i (iii) Согласно алгоритму деления, xs (х) = g (х) & (х) + t (х) однозначно, причем deg t (х) < deg g (х). Комбинируя эти утверждения, получаем xv (х) (mod х" — 1) =- [xQj (х) + Qz (х) -|- vn_Ji (х) 1 g (х) +1 (х) = = Qs (х) g (х) -h t (X). Так как deg / (л) < deg g (х), то, согласно алгоритму деления, t (х) определяется однозначно и t (х) = Re (х) [xt, (х) (mod х" — 1)] = Rg (х) [xs (х)|, что и требовалось доказать. □ Из этой теоремы, в частности, следует, что многочлены ошибок и соответствующие им синдромные многочлены удовлетворяют равенству R6 м [хе (х) (mod х» — 1)] = Rg м [xs (х)]. Если е (х) — испрааляемая конфигурация ошибок, то многочлен е' (х) = хе (х) (mod х" — 1) получается циклическим сдвигом многочлена е (х). Следовательно, е' (х) также является исправляемой конфигурацией ошибки, и его синдром дается равенством s' (х) = Rg (*) [<?' (х) ] = Rg (х) [xs (х) ]. Это соотношение показывает, как вычислять синдром произволь- ного циклического сдвига конфигурации ошибки, синдром кото- рой известен. Такое вычисление можно реализовать на простой цепи с регистром сдвига, что, как правило, намного проще, чем просмотр таблицы синдромов. Предположим, что s (х) и е (х) представляют собой вычислен- ные синдром и ошибку соответственно и что надо проверить, является ли s (х) синдромом для многочлена ошибок s (х). Про- верим, выполняется_ ли равенство s (х) = § (х); если да, то мы знаем, что е (х) = ё (х). Если нет, то вычислим Rgw [xs(x)l и сравним его с § (х). Если они совпадают, то ё (х) = хе (х) (mod хп — 1)
6.4. ДЕКОДЕР МЕГГМТТА 167 Обратная связь цепи Веления на д(х) Принятое слово XU I I ~ ------•—(+)-Ч(/г-Л}-разрядный регистр I |сдвига| Проверка на совпадение со всеми табличными синдромами Бадер * В Рис. 6.18. Декодер Меггитта. представляет собой циклический сдвиг многочлена е (х), так что мы знаем е (х). Продолжая таким образом, вычислим ₽g<x) [x/?g (х) [xs (х) ] 1; в случае совпадения этого многочлена с s(x), заключаем, что ё (х) равен х2е (х) (modx" — 1), и т. д. Составим таблицы из таких конфигураций ошибок, чтобы каж- дая исправляемая конфигурация была циклическим сдвигом од- ной (или нескольких) из них. Тогда в декодере необходимо запом- нить только эту таблицу и таблицу соответствующих синдромных многочленов. Истинный синдром s (х) сравнивается со всеми синд- ромами, которые содержатся в таблице. Затем вычисляется /?g (*)[xs (х)[ и тоже сравнивается со всеми содержащимися в таб- лице синдромами. Повторая этот процесс п раз, находим лю- бую исправляемую кодом ошибку. Обычно при использовании в декодере цепей с регистром сдвига в качестве табличных конфигураций ошибок выбираются такие, у которых ненулевые коэффициенты расположены в конце реги- стра сдвига. Это позволяет уменьшить число проводов и исполь- зовать регистры, начальные разряды которых не имеют прямого доступа. Такая реализация показана на рис. 6.18. В качестве табличных выбираются все синдромы, соответству- ющие исправляемым ошибкам с ненулевыми старшими компонен- тами. В начале работы декодера содержимое всех разрядов ре- гистра равно нулю. Сначала в декодере срабатывает цепь деления на g (х). В результате такой операции в регистре цепи деления записан синдром s (х), а буферный регистр содержит принятое слово. Вычисленный синдром сравнивается со всеми табличными синдромами, и в случае совпадения хранящийся в старшем раз- ряде буфера символ исправляется. После этого синдромный ре- гистр и буферный регистр один раз циклически сдвигаются. Это
168 ГЛ. «. СХЕМНАЯ РЕАЛИЗАЦИЯ реализует умножение синдрома на % и деление результата на g (х). Содержимое разрядов синдромного регистра теперь равно многочлену 7?g [xs (л) I, представляющему собой синдром ошиб- ки хе (х) (mod хп — 1). Если этот новый синдром совпадает с од- ним из табличных синдромов, то в предыдущей по старшинству позиции произошла ошибка, которая теперь появится в последнем разряде буфера, Этот бит исправляется, и производится новый циклический сдвиг на одну позицию; синдромный регистр опять ютов к проверке ошибки в позиции, отстоящей от старшей на два такта. После повторения этого процесса п раз все биты будут исправлены. Показанная на рис. 6.18 обратная связь, предназначенная для исправления записанных в буфере символов, не является необходимой; вычисленные символы можно передавать непосред- ственно пользователю. Мы показали эту связь на схеме для того, чтобы проиллюстрировать идею о том, что только после последнего сдвига в буфере будет записано правильное кодовое слово, а также для того, чтобы иметь отправную точку для некоторых реализа- ций декодера, которые будут описаны ниже. Приложения теоремы Меггитта лучше всего пояснить на кон- кретных примерах. Рассмотрим (15, 11)-код Хэмминга, задавае- мый порождающим многочленом g (х) — х4 -J- х + I. Так как этот код исправляет только одну ошибку, то имеется только одна конфигурация ошибки с единицей в старшем разряде, а именно е (х) х14, и соответствующий ей синдром равен s (х) = х8 -г- 1. Декодер Д1еггитта для этого кода изображен на рис. 6.19. Вычис- ленный по принятому слову синдром будет содержаться в синдром- пом регистре после 15 сдвигов. Из них первые 4 сдвига нужны толь- ко для того, чтобы ввести в регистр данные, без которых нельзя начать деление. Если синдром равен (1001), то е (х) х14 и соот- ветствующий бит исправляется. Если после одного сдвша синд- ром равен (1001), то е (х) — х18 и соответствующий бит исправля- ется. Таким же способом проверяется необходимость исправле- ния каждого из битов. После 15 таких сдвигов процесс исправ- Рис. 6.19. Декодер .Меггитта для (|5, И)-кода Хэмминга.
в.4. ДЕКОДЕР МЕГГИТТА 169 Принятое слово Рис. 6.20. Другой декодер Меггитта. ления закончен. Следовательно, полный процесс работы декодера занимает 30 тактов. Обычно декодер Меггитта используют в несколько иной форме, показанной на рис. 6.20. Этот вариант декодера отлича- ется от предыдущих наличием линии, помеченной словами «моди- фикация синдрома». Хотя, как следует из предыдущего описания, эта линия не является необходимой для работы декодера, она необходима для тех реализаций декодера, которые будут описаны ниже. Сейчас операцию модификации синдрома следует рассматри- вать как своего рода попытку сделать декодер более изящным без существенного его усложнения. Чтобы попять использование модификации синдрома, предпо- ложим, что при наличии ошибки мы хотим ее исправить и полно- стью ликвидировать ее влияние так, как будто ее не было вообще. Согласно теореме Меггитта, необходимо позаботиться только о слу- чае, когда ошибка произошла в старшем символе. После этого остальные компоненты будут учтены автоматически. Пусть е' (х) = en-ix"-'. Тогда вклад в синдром от этой един- ственной компоненты вектора ошибок равен S (X) = Rg(x) ten—>Х" Ч- После исправления enJ этот вклад надо вычесть из истинного синдрома, заменив содержимое s (х) синдромного регистра па s (х) — s' (х). Но многочлен s' (х) может иметь много ненулевых коэффициентов, так что такое вычитание затрагивает многие ячейки синдромного регистра и создает дополнительные неудоб-
170 ГЛ. в. СХЕМНАЯ РЕАЛИЗАЦИЯ ства. Чтобы избежать этих неудобств, изменим определение синдрома, задав его равенством s (х) — R6ix} [х''-*и (х)1. Это определение отличается от первоначального, но не хуже его, и с ним можно работать точно так же, как и с первоначальным. Его преимущество состоит в том, что s' W = (X) = Re („ = = Rew [еа^~к-Ч = en^lXn-,'-^, так как степень многочлена g (х) равна п — k. Но теперь отличен от нуля только один коэффициент многочлена s' (х), а именно старший. Соответственно после исправления йп_1"для замены s"(x) на s (х) s' (х) достаточно только вычесть en-i из старшего коэф- фициента синдрома. При этом полностью ликвидируется вклад, вносимый в синдром исправляемым символом. Предварительное умножение е (х) на хп—к выполняется сдви- гом v (х) в новую позицию синдромного регистра. На рис. 6.2| изображен модифицированный декодер Меггитта для (15, 11)-кода Хэмминга, декодер которого уже рассматри- вался выше (рис. 6.19). Принятый многочлен v (х) умножается на х* и делится на g (х), так что синдром равен Преимущество такой модификации состоит в том, что соответству- ющий ошибке е (х) = х14 синдром равен S (х) = 7?х.+х+1 [х14] = /?х*4-х+1 [**] = X3, а это дает возможность исправления с помощью сигнала обратной связи. Г(Х) хйи(х) Проверка равенства, 5(Х)=Х3 1 —^б-разряйный буфер |------------*4+)-»-с(х) Рис. 6.21. Другой декодер Меггитта для (15,11)-кода Хэмминга.
U. Декодер meIthttA iff Следующим примером является декодер для (15, 7>кода БЧХ, исправляющего две ошибки (этот код будет определен в гл. 7). Сейчас мы только укажем без доказательства, что этот код цикличен, порождается многочленом g (х) = х® х7 -f~ х8 -f- 4- ? + 1 и позволяет исправлять две ошибки. Среди них содер- жатся 15 конфигураций ошибок, содержащих ненулевой старший разряд: одна одиночная ошибка и 14 двойных. Принятое слово умножается на х8 и делится на g (х). Следо- вательно, если е (х) = х14, то s (х) = /?в (X) [х»-х«] = х7. Аналогично если е (х) — х14 + х48, то S И = Ъ м [**• (*14 + *и)1 = X’ + X». Продолжая таким образом, можно вычислить все подлежащие за- поминанию синдромы. Для нахождения ошибок декодер сравни- вает вычисленный по принятому слову синдром со всеми этими 15 синдромами. Такой декодер Меггитта показан на рис. 6.22. Отметим, что для нахождения ошибки в старшем разряде содер- жимое 8-битового синдромного регистра сравнивается с каждым из 15 табличных 8-битовых синдромов. Такое сравнение произ- водится после каждого из 15 сдвигов, ибо каждая позиция в свою очередь проверяется на наличие ошибки в соответствующем бите. Всего декодирование занимает 30 тактов: 15 для вычисления синдрома и 15 для локализации ошибки. ДАожно упростить этот декодер и далее и получить схему, изоб- раженную на рис. 6.23. Заметим, что при циклическом сдвиге при- нятого слова многие из 15 исправляемых конфигураций ошибок появляются дважды. Например, вектор (000000100000001) после восьми циклических сдвигов переходит в вектор (000000010000001), где черта под единицей использвана в качестве маркера сдвигае- мой единицы. Каждой из этих ошибок соответствует свой таб- личный синдром. Если удалить один из этих синдромов, то при соответствующем циклическом сдвиге ошибка все-таки будет найдена. Следовательно, для каждой такой пары достаточно запоминать только один синдром. В данном случае имеется только восемь синдромов, которые нужно запомнить. На рис. 6.22 они выписаны в первом столбце таблицы синдромов. Однако в тот момент, когда первая ошибка достигнет конца буфера, она может быть не исправлена, хотя в течение 15 сдвигов будет исправлена по меньшей мере одна ошибка. Для исправления обеих позиций не- обходимо произвести два полных цикла сдвигов, так что декоди- рование займет 45 тактов. Теперь необходимость модернизации синдрома очевидна, так как в противном случае ошибка не будет
172 ГЛ. 6. СХЕМНАЯ РЕАЛИЗАЦИЯ Рис. 6.23. Другой декодер .Меггитта для (I5,7)-кода БЧХ. распознана и при втором ее поступлении в конец буферного ре- гистра. Показанный на рис. 6.23 декодер для (15, 7)-кода БЧХ почти идентичен декодеру с вылавливанием ошибок, который будет описан в следующем параграфе.
6.Ё. ВЫЛАВЛИВАНИЕ ОШИБОК 173 6.5. ВЫЛАВЛИВАНИЕ ОШИБОК Описанный в конце предыдущего параграфа вариант декодера содержит таблицу синдромов, которая, как сразу видно, содержит только слова веса I и 2. На самом деле эти синдромы очень по- хожи на исправляемые конфигурации ошибок, левая часть кото- рых содержит только нулевые символы и опущена. Такой декодер известен под названием декодера с вылавливанием ошибок. Декодер с вылавливанием ошибок является модификацией декодера Мег- гитта, применимой к некоторым циклическим кодам. Предположим, что все произошедшие ошибки расположены близко друг от друга. Тогда соответствующим образом сдвинутый синдром будет точной копией ошибки. Определим длину конфи- гурации ошибок как наименьшее число последовательных разря- дов регистра, которые надо просмотреть для того, чтобы при не- котором циклическом сдвиге конфигурации ошибок все ошибочные позиции оказались внутри этих разрядов. Предположим, что наи- большая длина исправляемой конфигурации не превосходит длины синдрома. Тогда при некотором циклическом сдвиге кон- фигурации ошибок синдром будет равен ошибке. Для таких кодов синдром можно циклически сдвигать до тех пор, пока не получится исправляемая конфигурация. Для завершения исправления оши- бок надо теперь вычесть содержимое синдрома из соответствую- щего циклического сдвига принятого вектора. На рис. 6.24 приведен вылавливающий ошибки декодер для (15. 7)-кода БЧХ. Для полного исправления двойных ошибок тре- буется 45 тактов работы декодера: 15 для генерирования синдрома, 15 для исправления первой ошибочной позиции и 15 для исправле- ния второй ошибочной позиции. На рис. 6.25 представлен конвей- ерный вариант декодера, в котором использованы три генератора синдромов. Оп позволяет декодировать непрерывно поступающие 15-битовые блоки с тактовой линейной скоростью. На рис. 6.26 расписаны 45 тактов работы декодера с вылавливанием ошибок для типичной конфигурации ошибок (ошибки вылавливаются на так- тах помер 28 и 33). В качестве второго примера декодера с вылавливанием ошибок рассмотрим декодер для (7, 3)-кода Рида—Соломона над GF (8) с порождающим многочленом g (х) — X4 ' (2 Н- 1) X4 | Xs + ZX + (2 + 1), где элементы поля записаны в виде многочленов от г. В другом виде порождающий многочлен записывается как g (х) - х* | сс3х® 4- х2 4- ах + а3, где элементы поля заданы в виде степеней примитивного элемента а - z. В гл. 7, где рассматриваются коды Рида—Соломона.
i?4 hl, 6. СХЕМНАЯ' РЕАЛИЗАЦИЯ V(X) X6U(X) Замыкается на тактах от 16 0а 30 Рис. 6.24. Декодер с вылавливанием ошибок для (15, 7)-кода БЧХ. Рис. 6.25. Конвейерный вариант декодера с вылавливанием ошибок для (15, 7)- кода БЧХ.
6.Б. ВЫЛАВЛИВАНИЕ ОШИБОК 17В г[х) = х' е(х)=х’ г(х)=х' Рис. 6.26. Пример вылавливания ошибок для (15,7)-кода БЧХ. будет показано, что этот код исправляет две ошибки. Сейчас мы примем это утверждение без доказательства. Исправляемые конфигурации ошибок содержат не более двух ненулевых символов и задаются многочленом степени не выше 6. Их всегда можно циклически сдвинуть в многочлен степени не выше 3. Так как степень синдромного многочлена не превосхо- дит 3, то можно применить декодирование с вылавливанием оши- бок. Такой декодер показан на рис. 6.27. В двоичной реализации восьмеричные разряды регистра сдвига представляют собой парал- лельные регистры с тремя двоичными разрядами. Все линии пе-
176 ГЛ. в. СХЕМНАЯ РЕАЛИЗАЦИЯ редачи данных в каждый момент времени передают три бита. Элементы умножения на г И (т. е. на а3) и па г (т. е на а) в цепи обратной связи являются просто определяемыми устрой- ствами двоичной логики с тремя входами и тремя выходами. Для исправления всех ошибок такому декодеру необходим всею 21 такт. Первые семь тактов уходят на вычисление синдрома; следу- ющие семь тактов требуются на исправление хотя бы одпой ошибки, а иногда и обеих ошибок. Последние семь тактов уходят на ис- правление второй ошибки (если она еще не исправлена). На рис. 6.28 отдельные операции алгоритма декодирования от- слеживаются в деталях. Это очень ценный пример, так как он демонстрирует технику вылавливания ошибок п одновременно представляет собой конкретный пример взаимосвязи абстрактных понятий теории полей Галуа и практического построения логиче- ских цепей, использующих регистры сдвига. Содержимое синдромного и информационного регистров для каждого сдвига выписаны в таблице. После семи сдвиюв синдром- ный регистр содержит синдром. Начиная с восьмого сдвига деко- дер исправляет ошибки, если они образуют вылавливаемую коп- Всего 21 такт Рис. 6.27. Вылавлиалние ощибок для (7, 3)-кода Рида—Соломона,
6.5. ВЫЛАВЛИВАНИЕ ОШИБОК 177 g(x) = x4 + «3х34-х2 + ax-i-a3 фс) = о*х6 + аАхь + «Ъсэ + а6х + аь 4х)= а*х*4-а3 ФО = «*х6 + а3х3 + а6х + а4 Такт Синдромный регистр Информационный регистр «’оЛх’а® а*0 ало* СинЙрОМ 13 14 15 16 17 18 а30 оЛх" Выловленная а“о о о о о о О а*0 О О О О О 0 oft) О О О я30 0 а4!) О О О я30 О сЛ) О eft) а30 О «*0 ал-^0 а30 0 а4 &W0 а30 О О rtVoft) а30 О 0 оЛЛЛ) а3 я30 0 сЛЛЛ) 1а4> I ^Выловленная l!L<'_L21l ошибка. к6о*0 а30 О а4 яМО а30 г&Л) я3 а6я60 я6»'’ 5*0 а4 а3я40 О а’а4 ю Рис. 6.28. Пример вылавливания ошибок. фигурацию. К ним принадлежат ошибки, содержащие не более двух ненулевых символов, один из которых расположен в крайней правой позиции. Если произошло не более двух ошибок, то это случится хотя бы однажды в течение следующих семи тактов ра- боты (в примере это случилось на 13-м такте). Следовательно, ошибка выловлена. Подчеркнем, что символы синдрома упоря- дочены в порядке возрастания слева направо. В момент вылавли- вания ошибки в синдромном регистре записан 4-символьный сег- мент (е4, е5, ев, е0) сдвинутого многочлена ошибки. Поскольку
178 ГЛ- 6. СХЕМНАЯ РЕАЛИЗАЦИЯ ошибка поймана, она исправляется в информационном регистре, а в синдромном регистре е0 устанавливается равным нулю (или вычитается сам из себя). После 14 тактов синдромный регистр содержит синдром оставшейся конфигурации ошибки. Процесс повторяется в течение последних семи тактов, после чего исправ- ление ошибок закончено полностью. Если в начале синдром оказался отличным от нуля, а в течение вторых семи тактов работы декодера не была поймана ни одна ошибка, то в принятом слове произошло более двух ошибок (но обратное утверждение неверно). Это позволяет легко включить в декодер дополнительную логическую цепь для обнаружения неисправляемых конфигураций ошибок. В качестве последнего примера этого параграфа рассмотрим декодер с вылавливанием ошибок для кодов, исправляющих па- кеты ошибок. В отличие от ситуации для кодов, исправляющих независимые ошибки, исправляющие пакеты ошибок коды всегда допускают декодирование с вылавливанием ошибок. Мы опишем декодер для (14, 6)-кода, исправляющего пакеты ошибок длины 4. Этот^ код получается перемежением двух копий (7, 3)-кода из табл. 5.1. Порождающий многочлен кода-перемежения равен g(x) -= х" +Л* +х* + 1. Вылавливание пакета ошибок длины не более 4 сводится к про- верке равенства нулю четырех самых левых символов синдрома. Схему, однако, можно немного улучшить. Заметим, что разряды с четными номерами и разряды с нечетными номерами не взаимо- действуют. Поэтому цепь вычисления синдрома можно рассматри- вать как две независимые цепи вычисления синдромов для каж- Рис. 6.29. Декодер с вылавливанием ошибок для кода-перемежения, неправ» дякдцего пакеты ошибок.
М. УКОРОЧЕННЫЕ ЦИКЛИЧЕСКИЕ КОДЫ ДоЕо из двух перемежаемых кодов, но с последующим перемеже- нием позиций синдромов. Такая модификация декодера с вылавли* ванием ошибок показана на рис. 6.29. Этот декодер позволяет ис* правлять все пакеты ошибок длины 4, а также некоторые допол- нительные конфигурации ошибок. Исправляется любая конфи- гурация, состоящая из пакета длины 2 в позициях с нечетными номерами и пакета длины 2 в позициях с четными номерами. 6.6. УКОРОЧЕННЫЕ ЦИКЛИЧЕСКИЕ КОДЫ Любой систематический циклический код можно укоротить, а именно от (п, /г)-кода можно перейти к (п — b, k — о)-коду выбрасыванием Ь информационных позиций в каждом кодовом слове. Будем полагать, что b меньше k и что выбрасываются Ь старших разрядов- Последнее объясняется тем, что выбрасывае- мые символы при укорочении полагаются равными нулю и поэ- тому не передаются, но при декодировании декодер их восстанав- ливает, так что декодирование осуществляется на полной длине кода. Если минимальное расстояние исходного кода равно d*, то минимальное расстояние укороченного кода не меньше d*. Аналогично если исходный код позволяет исправлять пакеты оши- бок длины t, то укороченный код позволяет исправлять пакеты длины t (или больше). С помощью укорочения и перемежения из кодов табл. 5.1 можно построить большой набор хороших ко- дов, исправляющих пакеты ошибок. Укороченный циклический код уже не является циклическим, так как многочлен Rxn-_t Ixc (х) ] в общем случае уже не является кодовым словом для произвольного кодового слова с (х). Однако укороченный циклический код все-таки обладает алгебраической структурой подмножества соответствующего кольца. В то время как циклический код является идеалом кольца многочленов по модулю хп — 1, укороченный циклический код является идеа- лом кольца многочленов по модулю некоторого многочлена /' (х) степени п' = п— Ь. Точный результат дается следующей теоремой. Теорема 6.6.1. Если^ —укороченный, циклический код, то существует многочлен f (х), такой, что если с (х) — кодовое слово, а а (х) — произвольный многочлен, то Rf (Я) [а (х) с (х) 1 также является кодовым словом. Доказательство. Пусть g (х) — порождающий многочлен уко- рачиваемого циклического кода длины п, и пусть п' — длина уко- роченного циклического кода. Тогда, согласно алгоритму деления, =-<rWQW +s(x). Так как п’ — п — Ъ > п — k = degg (х), то степень остатка s (х) меньше п . Пусть f (х) = х"' —s (х); тогда степень много-
180 ГЛ. В. СХЕМНАЯ РЕАЛИЗАЦИЯ члена f (х) равна п' и g (х) делит f (х) Если с (х) кратен g (х) и а (х) — произвольный многочлен, то, согласно алгоритму де- ления, имеем а (х)с(х) - f(x) О' (х) -I г (г). Так как g (х) делит и с (х), и f (т), то г (х) кратен g(v); таким образом, в кольце GF(<?) lx i (f (x)) многочлен a (x) c (x) - r (x) кратен многочлену g (x), что п требовалось доказать. [_1 Укороченный циклический код длины п' п — b можно де- кодировать с помощью декодера Меггитта, сконструированного для исходного (п, k)-кода. Отсчет времени в таком декодере осно- ван на группах ио п тактов, хотя входное кодовое слово содержит п' символов. Это временное рассогласование иногда удается устра- нить конструкцией устройства, так что оно становится несущест- венным; в других случаях целесообразнее сбалансировать время Мы рассмотрим такую модификацию принятого слова, которая поз- воляет перестроить работу декодера Меггитта на цикл из л'тактов и соответственно ускорить декодирование укороченных цикли- ческих КОДОВ. Переопределим синдром так, чтобы можно было обойти такто- вое время работы регистра, соответствующее выбрасываемым символам. Вместо вычисления остатка от деления многочлена хп—v (х) на g (х) определим синдром при b выбрасываемых сим- волах равенством s(x) = /?s(x)|x" л+'р(л)]. Чтобы обосновать такой выбор, предположим, что старший символ укороченного циклического кола ошибочен, т е. что е(х) = е„- [Х01-**— Тогда s (4 = Rg w [е^х^-Ц = Rg (х) [Rx"-i ix2'1-6-’]] — «„'-tX4-*- Следовательно, единственным ненулевым коэффициентом много- члена s (х) является старший коэффициент. Пусть = [*’-*+*]• Тогда, согласно правилам вычислений по модулю, многочлен s(x) .можно записать в виде s 1яW»(*)!- Все, что нужно сделать, сводится к предварительному (перед де- лением на g (х)) умножению v (х) на фиксированный многочлен а (х). Такое умножение можно реализовать с помощью устрой-
6.6. УКОРОЧЕННЫЕ ЦИКЛИЧЕСКИЕ КОДЫ 181 СТВа деления на g (х) путем выбора точки ввода v (х) в цепь деле- ния. Покажем на примерах, как это делается. Сначала приведем два примера декодеров для циклических кодов. Первым рассмотрим укороченный циклический код, ис- правляющий пакеты ошибок. Предположим, что в некотором при- ложении потребовалось укоротить (511, 499)-код из табл. 5.1 до (272, 260)-кода. Этот код исправляет все пакеты ошибок длины не более 4. В данном случае g (х) — х12 f-xg х* -|- х8 -J-1, ХП—k+b — х23! и необходимо вычислить а (х) = [х251]. Одним из способов этого вычисления является представление х251 в виде х281 = (х12)и (х12)4 (х“) с тем, чтобы воспользоваться равенством х12 = х® 4- х8 х8 1. Повторяя возведение в квадрат величины х1а и проводя редукцию по модулю g (х), быстро вычисляем (х12)4 и (х1а )1в, а, следова- тельно, и х261, так что Рис. 6.30. Декодер с вылавливанием ошибок для (272, 260)-кода, исправля- ющего пакеты ошибок.
162 М. 6. СХЕМНАЯ] РЕАЛИЗАЦИЯ Рис. 6.31 - Декодер Меггитта для (64, 60)-кода Хэмминга над CF (4). и, наконец, s (х) = /?ж>ч-хч-х»+х’+1 К*“ 4 *® Н •*’ I *’ г**т О» (*)]• Вычисление такого синдрома можно реализовать на одной цепи деления на g (х), если при каждой итерации входящий коэффи- циент многочлена v (х) подавать в соответствующую точку теку- щего остатка. Декодер Меггитта для рассматриваемого укорочен- ного кода изображен на рис. 6.30. Этот декодер является кон- вейерным, так что он может обрабатывать непрерывный поток входящих битов. В качестве второго примера рассмотрим (64, 60)-код над OF (4), являющийся укорочением (85, 81)-кода Хэмминга. Как уже обсуждалось в § 5.5, (85, 81)-код Хэмминга является цикли- ческим с порождающим многочленом g (х) - х* г Xs + Зх + I. В данном случае xn—ft+A = х25. Выполняя деление «уголком», получаем а(х) =. /?*.+1.+зх+1 [х®] = х3 + Зх2 + 2, и модифицированный синдром задается равенством s (*) = Яжч-*ч-з*+1 К*3 + Зх2 — 2) v (х)]. Показанное на рис. 6.31 устройство является декодером Меггитта для этого укороченного кода, время декодирования для которого равно 128 тактам. Для вычисления модифицированного синдрома
6.7. ДЕКОДЕР МЕГГИТТА ДЛЯ КОДА ГОЛЕЯ 183 декодер умножает принятое слово на х9 + Зха 4- 2 и затем делит на х* х® 4- Зх + I. Полное время декодирования, равное 128 тактам, состоит из 64 тактов, необходимых для вычисления моди- фицированного синдрома, и 64 тактов, необходимых для исправ- ления ошибок. При желании можно сделать декодер конвейерным или последовательно соединить два декодера так, чтобы декодер работал одновременно с вводом данных. 6.7. ДЕКОДЕР МЕГГИТТА ДЛЯ КОДА ГОЛЕЯ В тех случаях, когда данный код не позволяет непосредственно использовать декодер с вылавливанием ошибок, иногда удается так добавить несколько дополнительных цепей, чтобы аннулиро- вать влияние некоторых мешающих применению декодера кон- фигураций ошибок. В общем случае для получения удовлетвори- тельного решения требуется некоторая изобретательность. Мы опишем такой декодер для (23, 12)-кода Голея. Длина вектора ошибок равна 23, а вес не превосходит 3. Длина синдромного регистра равна 11. Если данная конфигура- ция ошибок не вылавливается, то она не может быть циклически сдвинута так, чтобы все три ошибки появились в 11 младших раз- рядах. Можно убедиться (возможно, после нескольких прикидок), что в этом случае по одну сторону от одной из трех ошибочных по- зиций стоит по меньшей мере пять, а по другую сторону — по меньшей мере шесть нулей. Следовательно, каждая исправляемая конфигурация ошибок может быть с помощью циклических сдви • гов приведена к одному из трех следующих видов (позиции ну- меруются числами от 0 до 22): 1) все ошибки (не более трех) расположены в 11 старших разрядах; 2) одна ошибка занимает пятую позицию, а остальные распо- ложены в 11 старших разрядах; 3) одна ошибка занимает шестую позицию, а остальные рас- положены в II старших разрядах. Таким образом, в декодере надо заранее вычислить величины $5 (х) = Rg<x) lx"-**5! и 5б (х) = Rg(x) lx"-*х®]. Тогда ошибка вылавливается, если вес s (х) не превышает 3 или если вес s (х) — s6 (х) либо s (х) — st (х) не превышает 2. В декодере мо- жно либо исправлять все три ошибки, если эти условия выпол- нены, либо исправлять только две ошибки в младших II битах, дожидаясь удаления из регистра третьего ошибочного бита. Разделив Xм и х17 на порождающий многочлен £ (х) == х11 + х10 + хв 4- хъ х* + х® 4-1,
184 ГЛ. 6. СХЕМНАЯ РЕАЛИЗАЦИЯ имеем «ь (х) = х* + х® + Xе I- Xе +XS -ьх, «а (X) = х1П +*9 +Х7 +х* +хэ +х2. Следовательно, если ошибка содержится в пятой или шестой по- зициях, то синдром соответственно равен (01100110110) или (0011001 ЮН). Наличие двух дополнительных ошибок в II стар- ших разрядах приводит к тому, что в соответствующих позициях два из этих битов заменяются на противоположные. Декодер отслеживает синдром, отличающийся от нулевого синдрома не более чем в трех позициях, а также синдром, отлича- ющийся от выписанных двух синдромов не более чем в двух по- зициях. ЗАДАЧИ 6. 1 .а. Построить поле GF (8) с помощью примитивного многочлена р(х)-- =- х* -f- х + I (а обозначает примитивный элемент а ~ х). 6. Для заданного произвольного многочлена g (а) над GF (2) построить простое логическое устройство, вычисляющее g (а®). в. Сконструировать устройство, реализующее умножение двух произ- вольных элементов поля GF (8). г. Сконструировать устройство, реализующее умножение произволь- ного элемента поля GF (8) на сквляр д. Указать те элементы поля GF (8), квадраты которых также принад- лежат этому полю; звтабулировать такие элементы. е. Сконструировать устройство, вычисляющее квадратный корень из тех элементов поля GF (8), для которых ои существует, 6.2. Пусть поле GF(16) звдаио многочленом **4- х+ I. Определим два произвольных элемента этого поля. ₽ =₽3*S+₽3*S+ ₽!*+₽«. У - Тз’-'9 + Та*2 + Vi* + То, где коэффициенты принадлежат полю GF (2). Построить параллельное логиче- ское устройство, выполняющее умножение двух произвольных влементов из GF (I6). 6.3. Исходя из равенств р-1 = (р^-1-*)2 и 2т - 1 = ^'^2*, и ис- пользуя устройство возведения в квадрат и умножитель, сконструировать ите- ративное логическое устройство вычисления элемента р-1 по заданному В за т тактов работы. 6.4. Циклический (15, 9, 5)-код над GF (4) порождается многочленом g(х) л« + Зх* + х4 + х» + 2х24- 2х-J- I. а. Построить кодирующее устройство для этого кода, основанное на регистре сдвига. б. Построить декодер А1еггитта для этого кода. 6.5. Порождаемый многочленом g (*) — х4 4-Xs 4-х4 4~ 1 двоичный цик- лический код позволяет исправлять пакеты ошибок длины 2 а. Чему равны длина и скорость этого кода?
ЗАДАЧИ 1бБ б. Найти минимальное расстояние этого кода. в. Сконструировать систематический кодер для этого кода. г. Сконструировать декодер с вылавливанием ошибок, позволяющий исправлять все пакеты длины 2. 6.6. Исправляющий три ошибки (23, 12)-код является циклическим с порож- дающим многочленом g (х) — х“ + Xю + 4- хь 4- 4- д«4- I g(x)=-xu+xs+x»+xn4-x5+x4- I- а. Найти проверочный многочлен h (х) этого кода. б. Сконструировать кодер, использующий регистр сдвига. в. Можно ли методом вылавливания ошибок исправлять все тройные ошибки? Почему? 6.7. Используя регистры сдвига с 4-битовыми регистрами, сконструировать кодер и декодер для рассмотренного в § 3.4 (17, |5)-кода Хэмминга над полем из 16 элементов. Показать все логические цепи. 6.8. В процессе считывания и записи в запоминающем устройстве ЭВМ. состоящем из 256 8-битовых слов, возможны искажения одного 8-битового слова. Для борьбы с этим явлением решено воспользоваться укороченным кодом Хэм- минга над GF (28), исправляющим одно искаженное слово. Описать (256, 252)-код и сконструировать кодер и декодер с вылавливанием ошибки. (Заметим, что задачей схемы является отыскание и исправление в па- мяти одного искаженного слова.) 6.9. Сконструировать кодер и декодер с вылавливанием ошибок для двоич- ного (19537, 19408)-кода Файра с порождающим многочленом g (х) = (х1® — 1) X X р (х), где р (х) — примитивный многочлен степени 10. 6,10. Задаваемый одним корнем в точке <х16 поля GF (256) двоичный цикли- ческий код длины 17 представляет собой (17, 9, 5)-код, принадлежащий к классу квадратично-вычетных кодов. Найти порождающий многочлен кода и скон- струировать модифицированный декодер с вылавливанием ошибок, позволяющий исправлять все двойные ошибка. Сконструировать также декодер, основанный на просмотре таблицы синдромов. Сравнить сложность и скорость этих двух декодеров. 6.11. (7,5)-код Рида—Соломона над GF (8) порождается многочленом g (х) =-х2 + сАса3. Построить циклический код, исправляющий пакеты ошибок длины 2 над GF (8), выполняя следующую последовательность тагов. а. Выписать порождающий многочлен исправляющего восьмеричные пакеты длины 2 кода, получающегося перемежением двух одинаковых исходных кодов Рида—Соломона. б. Чему равны длина и скорость так построенного кода? в. Составить для этого кода схему кодера с использованием регистра сдвига. г. Сконструировать декодер с вылавливанием ошибок, позволяющий исправлять все пакеты длины 2. 6.12. Построить (1072, 1024}-код для исправления пакетов ошибок длины 16 путем укорочения и перемежения подходящего кода из табл. 5.1. Построить (1080, 1024)-код для исправления пакетов длины 20 путем укорочения и пере- межения кода файра. 6.13. Исправляющий две ошибки двоичный (31, 21)-код порождается много- членом g (х) ==х1» 4- х» 4 х8 4 х8 4 х6 + х2 + 1. а. Показвть, что декодер с вылавливанием ошибок нс позволяет исправлять всех ошибок в пределах конструктивного расстояния.
Гл. 6. СХЕМНАЯ РЕАЛИЗАЦИЙ б. Показать, что простая модификация декодера с вылавливанием ошибок позволяет организовать декодирование в пределах конструктивного расстояния. в. Построить другую конструкцию декодера с вылавливанием оши- бок, позволяющего исправлять все двойные ошибки, используя вместо цикли- ческого сдвига подстановку v (х) — v (х2) (mod х” — I). ЗАМЕЧАНИЯ Многие идеи данном главы уже ясно просматриваются как идеи теории дискрет- ных фильтров, ио с заменой поля вещественных или комплексных чисел на поле Галуа. Это смутно ощущалось еще в самом начале и становилось все более оче- видным по мере развития предмета. Содержащие регистры сдвига устройства были сразу использованы большинством исследователей и вошли в литературу без всяких фанфар. Использовавме регистров сдвига в кодерах и декодерах можно найти в работах Питерсона [1960] и Ченя [1964]. В виде учебного ма- териала эти идеи появились уже в нииге Питерсона Г19611- Меггитт опубли- ковал описание устройств своих декодеров в 1960 и 1961 гг. Не совсем ясно, кому принадлежит идея декодера с вылавливанием ошибок, но обычно ее при- писывают Прейцджу. Способы модификации декодера с вылавливанием ошибок, позволяющие корректировать исправляемые, но не вылавливаемые ошибки, рассматривал Касамп [1964]. На методах К асами основан описанный в § 6.7 декодер для кода Голея. Использование отличных от циклических перестановок исследовала Мак-Вильямс [1964]. Другие ранние результаты приводятся в статьях Мит- челла [1962] и Рудолфа и Митчелла [1964[.
ГЛАВА 7 КОДЫ БОУЗА-ЧОУДХУРИ- ХОКВИНГЕМА Коды Боуза—Чоудхури—Хоквингема (БЧХ) представляют со- бой обширный класс кодов, способных исправлять несколько ошибок и занимающих заметное место в теории и практике коди- рования. Интерес к кодам БЧХ определяется по меньшей мере следующими четырьмя обстоятельствами: 1) среди кодов БЧХ при небольших длинах существуют хорошие (но, как правило, не лучшие из известных) коды; 2) известны относительно простые и конструктивные методы их кодирования и декодирования (хотя если единственным критерием является простота, то предпочте- ние следует отдать другим кодам); 3) коды Рида—Соломона, являющиеся широко известным подклассом недвоичных кодов, обладают определенными оптимальными свойствами и прозрачной весовой структурой; 4) полное понимание кодов БЧХ, по всей видимости, является наилучшей отправной точкой для изучения многих других классов кодов, В этой главе мы будем говорить о кодах БЧХ во временном представлении. Это будет отражать исторически первый подход к изучению кодов БЧХ. В гл. 8 мы изложим те же самые идеи при помощи частотной интерпретации полей Галуа. Мы сначала определим исправляющие t ошибок коды БЧХ над GF (<?) длины qm — I, задавая порождающий многочлен g (х). Коды такой длины называют примитивными кодами БЧХ. Мы докажем, что эти коды исправляют t ошибок, построив в яв- ном виде алгоритм декодирования. Затем мы обобщим наши рас- суждения на случай кодов БЧХ, длина которых является дели- телем qm — 1. 7.1. ОПРЕДЕЛЕНИЕ КОДОВж1БЧХ Порождающий многочлен циклического кода можно представить в виде в (х) =- НОК If! (X), fs (х), .... fr (х) 1, где fi(x), .... fr (х) — минимальные многочлены корней g(x).
188 гл. 7. КОДЫ БОУЗА—ЧОУДХУРИ—ХОКВИНГЕМА Используя этот подход, мы будем строить коды по порождающему многочлену, который будет задаваться своими корнями. Пусть с (х) — кодовый многочлен, а е (х) — многочлен оши- бок. Принятый многочлен с коэффициентами из GF (<?) запи- шется в виде v (х) = с (х) ч- е (х). Мы можем вычислить значение этого многочлена на элементах из GF (?т); в частности, нас будут интересовать значения много- члена в точках, являющихся корнями g (х), скажем в точках Уи ..., 7,.. Тогда поскольку с (у,-) = 0 для любых у}, являющихся корнями g (х), то f (•») = «W + ‘ (•»)=< (») Таким образом, 1'(-Л) = "Х'.ТЛ J=l, для всех у,, являющихся корнями g (х), В результате мы получаем г уравнений, содержащих только величины, определяемые ошиб- ками и не зависящие от кодового слова. Если эти уравнения можно разрешить относительно ef, то мы сможем определить многочлен ошибок. Будем выбирать yj таким образом, чтобы система г урав- нений могла быть решена относительно £| каждый раз, когда не более t неизвестных отличны от куля. Для произвольного циклического кода с порождающим много- членом g (х), имеющим корни уг, определим компоненты синдрома $1 - >(?,). /= I. .... Г- Эти элементы поля отличны от синдромного многочлена s (х), но содержат эквивалентную информацию. Мы хотим подобрать Tt. • Ут так. чтобы по ..., Хг можно было найти t ошибок. Вскоре мы докажем, что если а — примитивный элемент поля GE (<7т), то таким множеством является а?, а3, ..., а8/}. Приняв это пока на веру, выберем многочлен g (х) с указанной последовательностью корней. Задав длину п — qm —1 прими- тивного кода для некоторого tn и число t ошибок, которое необ- ходимо исправить, поступим следующим образом: 1) выберем примитивный многочлен степени m и построим поле GF (qm); 2) найдем минимальные многочлены f«(x) для а/, j — I, .... 2/; 3) положим g (х) = НОК [fi (х), ..., f2t (х) ].
7-1. ОПРЕДЕЛЕНИЕ КОДОВ 64 X 188 В следующем параграфе, подробно описав алгоритм декоди- рования, мы докажем, что такой циклический код может исправ- лять t ошибок. Иногда построенные таким образом коды БЧХ могут исправлять более I ошибок. Поэтому величина d - 21 ' I называется конструктивным расстоянием кода. Истинное мини- мальное расстояние кода d* может быть больше конструктивного. В табл 7.1 задано представление поля GF (16) как расши- рение поля GF (2), построенное по примитивному многочлену р (z) — z4 | г + I, в нее включены также минимальные мно- гочлены GF (2) для всех элементов из поля GF (16), где а. - -г - примитивный элемент GF (16) Заметим, что минимальные мно- гочлены для любой четной степени а всегда уже содержатся в од- ной из предыдущих строк таблицы. Это следствие теоремы 5.3.4, которая утверждает, что элементы 0 п 0“ для любых 0 имеют одинаковые минимальные многочлены над полем GF (2). Данный факт немного поможет нам при вычислении g (х). Порождающий многочлен для исправляющею две ошибки кода БЧХ длины 15 получается следующим образом- Г: (,.) - ИОК If, (х), (*). I, W, ft <*)1 HOK lx ’ 4- x 4- 1, x1 4- x 4- I, x4 4- | x3 4- xx I- x 4- I , xi ' x 4- 11 - Таблица 7.1 Представления ноля GF (2J) В еиЭе степени В ви0Е В йвоичном В Оесятичнпм Минимальные многочлена вибе вийе многочлены i> 7 " ~ + 7- “ ® - г,'т х" * iiillif & z’l-z2 HIX) 12 т4 I т2 Кк Г I а -'1211 1011 II .х4 + х’ + 1 -' 1 1)101 5 х4 + к э 1 я” я10 КИО Ю -к4 l-.v' + x' + x ‘ 1 Рь-Г-1 ОШ 1 JC2+<II z’rz’t-z 1110 14 -d+x’bl НИ 15 x4 + .v3 + x2 + x+1 st13 z’+z’+l 1101- 13 .х4+.к’+-1 а- г’+l 1001 9 .k4 + .v'+I
190 ГЛ- ?• КОДЫ ЕОУЗА—ЧОУДХУРИ—ХОКВИНГЕМА = (х4 4-Х + 1) (X4 -j-X® 4-Xй 4-Х 4- 1) = — х® 4-х7 4- х4 4- х4 4- I - Поскольку степень g (х) равна 8, л — k =-- 8. Отсюда k = 7, и мы получили порождающий многочлен (15, 7)-кода БЧХ, исправляющего 2 ошибки. Отметим, что коды БЧХ строятся по заданным п и t. Значение k не известно, пока не найден g (х). Тем же способом мы можем построить порождающий много- член для другого примитивного кода БЧХ длины 15. Пусть t =-- 3: g (х) =-- НОК [/, (х), fs (х), f3 (х), fa (х), fg (х), fe (х) ] = = (х4 4-х 4- I) (х4 4-х’ 4-х® 4-х 4- 0 (*3 + ]- х -h I) =-- Xй 4-х8 4- X4 4- X4 Р X® -Р X 1- I. Получился порождающий многочлен для (15, 5)-кода БЧХ, ис- правляющего три ошибки. Пусть t 4: g (х) = НОК (А (х), f2 (х), fa (х), fa to, f5 (x), f8 (x), f? (X), fe (X) ] = (X4 4- X 4- I) (x4 4- Xs 4- 4- x® 4-x 4-1) (x® 4-x -f-1) (x4 -j-x® 4- I) = = x14 4- xls 4- x12 4- x11 4- xM 4. x® 4- xe 4- 4-x’ 4-x4 4-x® 4-x4 4-x® 4-x4 4-x 4- 1. Получился порождающий многочлен для (15л1)-кода БЧХ. Это простой код с повторением, исправляющий'семь ошибок. Пусть t 5, 6, 7. Каждый из этих случаев приводит к та- кому же порождающему многочлену, как и при t = 4. При t > 7 код БЧХ не определен, поскольку ненулевых элементов поля GF (16) всего 15. В табл. 7.2 приведено представление поля GF (16) как расши- рение поля GF (4), построенное по примитивному многочлену р (а) = z® -j- z -j- 2. Эта таблица содержит также минимальные многочлены над GF (4) для всех элементов из поля^СГ (16), где а =-- z — примитивный элемент. Порождающий многочлен для исправляющего одиночные ошиб- ки кода БЧХ надОГ (4) длины 15 находится следующим образом: g(x)= HOK [Д(х), f2(x)] = = (х® 4- х + 2) (х® 4- х 4- 3) = х4 4- х 4- 1. Получился порождающий многочлен для (15, 11)-кода БЧХ над GF (4), исправляющего одиночные ошибки. Этим кодом последо- вательность 11 четверичных символов (что эквивалентно 22 би-
7.1. ОПРЁДЁЛЁНИЁ КОДЙВ БЧХ 161 Таблица 7.2 Представления поля GF(42) В виде степени В виде многочлена В четверичном виде В десятичном виде Минимальные многочлены 0 0 00 о 01 Х+1 я1 К) 4 х2 + х + 2 . Z -г _ 12 .к2 + х + 3 3z + 2 32 14 х2 + 3х + 1 а4 z + l 11 5 X " + V + я5 2 02 1 v + 2 а" 20 8 х2 н 2х + 1 ** ??+ 3 Ц 11 х’ + 2х +2 я* 7^-3 13 .х2 + х + 3 а 22 10 хх+2х+ 1 я.п 03 3 х + 3 а11 Зг 30 1? х! + Зх н 1 а12 3z 1 1 31 «” 1 21 9 х’+2х н2 а14 Зг + З 33 15 х2 + 3х нЗ там) кодируется в последовательность 15 четверичных символов. Такой код не является кодом Хэмминга. Таким же образом мы можем найти порождающие многочлены для других кодов БЧХ над GF (4) длины 15. Пусть t — 2: g (х) - НОК [А (х), ь (х), Ь (х), (х)] - =: (х* -I X + 2) (хв 4- к 4- 3) (Xs 4- Зх 4-1) == = X4 4- Зх5 4- х4 4-х® 4- 2Х2 4- 2х 4- 1 Получился порождающий многочлен для (15, 9)-кода БЧХ над GF (4), исправляющего две ошибки.
182 ГЛ- I- КОДЫ БОУЗА— ЧОУДХУРИ—ХОКВИНГЕМА Пусть t — 3: g (х) = х’ -|- Зх8 Зх’ 4- 2х8 х8 4- 2х* 4- х -|- 2. Это дает (15, 6)-код БЧХ над GF (4), исправляющий три ошибки. Пусть t — 4: g(x) = х» 4-х10 +2.S 4-Зх’ 4-Зх* +х* 4- Зх* -J-х» 4-х 4-3. Это дает (15, 4)-код БЧХ над GF (4), исправляющий четыре ошибки. Пусть I - 5: g W - х12 4- 2х” + Зх“ 4- 2хв 4- 2х8 — х’ 4- Зх8 4- (- Зх4 4- Зх8 4-х8 р 2. Это дает (15, 3)-код БЧХ над GF (4), исправляющий пять ошибок. Пусть t - 6: g (х) =: х*4 4- х1Я F х14 4- х11 + х10 4- хв 4- хв 4- 4- х’ 4- х® 4- х® 4- х* 4- х8 l х® 4- х 4. I. Получается (15, 1)-код БЧХ над GF (4), исправляющий шесть ошибок. Это простой код с повторением, который в действитель- ности исправляет семь ошибок Теперь мы дадим формальное определение кода БЧХ. Ойо будет более общим, чем данное выше определение примитивного кода БЧ X, так как в качестве корней g (х) будут браться 2/ по- следовательных степеней произвольного элемента ₽ поля (не обя- зательно примитивного элемента). Длина кода будет равна по- рядку элемента р, т с. такому наименьшему п, для которого Рп — - I. Определение 7.1.1. Пусть заданы q и т, и пусть р — любой элемент GF (</”*) порядка п. Тогда для любого положительного целого числа I и любого целого числа /() соответствующий код БЧХ является циклическим кодом длины п с порождающим много- членом sW-HOKff,.w, /,.+,(»).... где [j (х) — минимальный многочлен элемента Pz. Часто выбирают j0 =-- 1, что, как правило, (но не всегда), приводит к многочлену g (х) с наименьшей степенью. Обычно требуется большая длина кода, и тогда выбирается элемент р поля с наибольшим порядком, т. е. примитивный элемент.
7.2. ДЕКОДЕР ПИТЕРСОНА—ГОРЕНСТЕЙНА—ЦИРЛЕРЛ 193 7.2. ДЕКОДЕР ПИТЕРСОНА—ГОРЕНСТЕЙНА— ЦИРЛЕРА Коды БЧХ являются циклическими, и, следовательно, к ним применимы любые методы декодирования циклических кодов. Имеются, однако, существенно лучшие алгоритмы, разработанные специально для декодирования кодов БЧХ. Рассматриваемый в данном параграфе алгоритм впервые был предложен Питерсоном для двоичных кодов (мы опишем ei о общий случай, разработанный Горенстейиом и Цирлером). Доказав, что этот алгоритм позволяет исправлять t ошибок, мы тем самым докажем, что описанное в пре- дыдущем параграфе построение кодов БЧХ приводит к коду, ис- правляющему / ошибок. Для упрощения уравнений всюду по- лагается /о * 1, хотя все выкладки без изменения идей могут быть проделаны для произвольного Предположим, что в основе конструкции кода БЧХ лежит элемент а поля, возможно не примитивный. Многочлен ошибок равен е (х) = епjx”-1 en-jx”-2 ---h etx + e0, где не более t коэффициентов отличны от пуля. Предположим, что на самом деле произошло v ошибок, 0 с v с I, и что этим ошиб- кам соответствуют неизвестные позиции j,, i2..tv. Много- член ошибок можно записать в виде <’ И Н-----I- e'vX’V> где е,. — величина Z-й ошибки (в двоичном случае ef. -- 1). Мы не знаем ни i\, .... tv, ни е|р ..., e<v; в действительности мы даже не знаем числа v. Для исправления ошибок нужно вычислить все эти числа. Чтобы получить компоненту синдрома Sx, надо найти значения полученного многочлена в точке а: Sx —. v (а) =: с (а) + е (а) = е (а) = == е^а*14- е^а'» | • -|- ₽/vatv. Принятые здесь обозначения слишком громоздки. Для их упрощения определим для всех L — I, ..., v величины ошибок Yi — и локаторы ошибок X/ =-- а11, где ii — истинное поло- жение Z-й ошибки, а X, — элемент ноля, ассоциированный с этим положением. Заметим, что так как порядок элемента а равен п, то все локаторы рассматриваемой конфигурации ошибок различны В этих обозначениях запишется в виде S. YtX, -|- У2ХИ h ... -J- FVXV. '1 Р. Влсйхут
194 гл. 7 КОДЫ БОУЗА—ЧОУДХУРИ—ХОКЕИНГЕМА Аналогично можно вычислить значения принятого многочлена при всех степенях а, входящих в определение £ (г) Для / — I, .... 2/ определим синдромы равенствами S; = и (cP) = с (а/) -| е (а») = Тогда получим следующую систему из 21 уравнений относи- тельно v неизвестных локаторов Л',, .... Л\. и v неизвестных величин ошибок ... У\,: S, Г,Х1 Д-Г2Х, I-.. 1-FvXv. S, = r.x? I Y2xl i I r.xt &, = YtX? j- V,X? ++ VvX?. В силу определения синдрома эта система уравнений должна иметь хотя бы одно решение Мы увидим, что это решение един- ственно. Наша задача состоит в вычислении неизвестных по за- данным компонентам синдрома, т. е. в решении системы нелиней- ных уравнений. Описываемый метод решения таких систем под- ходит для произвольного поля Эту систему нелинейных уравнений трудно решать непосред- ственно. Воспользуемся искусственным приемом, определив не- которые промежуточные переменные, которые могут быть вычи- слены по компонентам синдрома и по которым можно вычислить затем локаторы ошибок. Рассмотрим многочлен от х: Л (х) ЛуХ* -|- Лу_1Х'’“| 4- - - 4-Apr + 1, известный под названием многочлена локаторов ошибок и опре- деляемый как многочлен, корнями которого являются обрат- ные к локаторам ошибок величины XJ1 для I = I, .... v. Итак, Л (х) - (1 — xXt) (1 - хХ,) .. (I — xXv). Если коэффициенты этого многочлена известны, то для вычисления локаторов ошибок нужно найти его корни. Поэтому попытаемся сначала вычислить по заданным компонентам синдрома коэффи- циенты ЛI, .... Л». Если нам это удастся, то задача будет близка к решению. Умножим обе части равенства, определяющего этот многочлен, на ViX},v и положим х - XT1- Тогда левая часть обратится в пуль, и мы получим о=г,х{"(1 | л.х;' | ЛгХг5 |~л_|Х7<|-"’ . л.хг').
7,2. ДЕКОДЕР ПИТЕРСОНА—ГОРЕНСТЕЙ НА— ЦИРЛЕРА 195 ИЛИ V',(XP' | A,E/+V 1 | ...+Л„х!)-О. Это равенство выполняется при каждом I и при каждом /. Про- суммируем эти равенства по I от 1 до v. Для каждого / это дает Ег,(х{> 1=1 или Ё YtX^v -I Л, Ё + |- Av У Y{X} _= 0. i=i i=i i=i Каждая сумма в левой части последнего равенства является ком- понентой синдрома, так что уравнение приводится к виду S/+v -г- AiSj+v_i -j- И • • • + AvSj = 0. Так как v с t, то для /в интервале I с j < v все индексы задают известные компоненты синдрома. Таким образом, получаем си- стему уравнений AiSj'Jv_i+AeSj+v_s | А^г = — SJ+V, /=1...........V, т. е. систему линейных уравнений, связывающих компоненты си ид- Если матрица невырождена, то эту систему можно решить путем обращения матрицы. Докажем, что если произошло v ошибок, то матрица невырождена. Первым шагом этого доказательства слу- жит доказательство невырожденности матрицы Вандермонда. Теорема 7.2.1. Матрица Вандермонда, определяемая как про- извольная матрица вида Xt А = xl _хг' xf-'
196 ГЛ. 7. КОДЫ БОУЗА— ЧОУДХУРИ—ХОКВИНГЕМЛ имеет отличный от нуля определитель тогда и только тогда, когда X-t ф Xj для всех i, / =-- 1, .... р; i j. Доказательство. Обратное утверждение очевидно, поскольку если любые даа Х}- равны, то в матрице оказываются два одина- ковых столбца и, следовательно, определитель равен нулю. Для доказательства прямого утверждения воспользуемся ин- дукцией. Утверждение верно при р — I, Мы сейчас покажем, что если оно верно для матриц Вандермонда размера (р — I) X X (р — 1), то оно верно и для матриц Вандермонда размера р х р. Заменим A'i в матрице на переменную х. Тогда определи- тель будет функцией от х и запишется в виде D (х) = det _ I X, Xj ... Л*1 _ Определитель можно разложить в сумму элементов первой строки, умноженных на соответствующие этим элементам алгебраиче- ские дополнения. Это даст многочлен от х степени р — I, который может быть записан в виде tf D (х) = dw_iX'‘-[ + ... +dtx + d0 и, таким образом, имеет не более р — I корней. Коэффициент d|j_i сам по себе равен определителю матрицы Вандермонда и по предположению индукции не равен нулю. Если для любого t, 2 с i с р, мы положим х — Xi, то два столбца в матрице будут равны и D (X-,) =-- 0. Таким образом, каждое Xf (i 1) есть ко- рень D (х), и, поскольку все они различны и их число равно р — 1, легко получить разложение многочлена ОЮ-Ч.П (*-*>) Отсюда следует, что определитель исходной матрицы Вандер- монда равен о (Х1) = d,,j п (Х1 - X,). (=2 Последнее выражение отлично от нуля, поскольку d,,_i отлично от нуля, a Xj отличен от остальных Х(. Поэтому опреде- литель матрицы Вандермонда размера р X р не равен нулю, и по индукции получаем справедливость теоремы для любого р. □
7.S. ДЕКОДЕР ПИТЕРСОНА- ГОРЕ ИСТЕЙ НА-ЦИГЛЕРА 197 Теперь у нас все готово для доказательства центральной тео- ремы алгоритма декодирования. Эта теорема дает условие, по которому можно определить число v произошедших в действи- тельности ошибок. Теорема 7.2.2. Матрица компонент синдрома Sj $а ...5ц ' S2 Sa ... _ Sfl ^Ц+1 • • • _ невырождена, если р равно числу v произошедших в действитель- ности ошибок. Матрица является вырожденной, если р больше v. Доказательство. Пусть Хц —- 0 для р > v, и пусть А — матрица Вандермонда " 1 1 ... 1 ’ X» ХЕ ... Х^ с элементами Ац — X/ *, а В — диагональная матрица 0 ... О “ О У2Х2 ... О о о ... у^Хд. с элементами Bi} = У,Х*6у, где бу = I, если I — j, и бу «= О в противном случае. Тогда произведение матриц АВАТ будет иметь элементы (АВА% - Ё х; 1 Ё у,хм,-' = / i *=1 = Ё x’r'YW,-' =: Ё У.А-;+'-', II 1-1 которые совпадают с элементами матрицы М. Таким образом, М = АВАТ и, следовательно, определитель матрицы М удов- летворяет соотношению det (М) = det (A) det (В) det (А).
198 ГЛ. 7. КОДЫ БОУЗА—ЧОУДХУРИ-ХОКВИ НГЕМА Если [л больше v, то det (В) =« 0. Тогда det (М) = 0 и М выро- ждена. Если р равно v, то det (В) 0. Кроме того, определитель матрицы Вандермонда А не равен нулю, если все столбцы матрицы различны, что выполняется, если р равно v. Следовательно, det (М) 0, и теорема доказана. □ Эта теорема является основной при построении алгоритма декодирования. Прежде всего найдем правильное значение v, поступая следующим образом. В качестве пробного значения возьмем v = t и вычислим определитель матрицы М. Если он не равен нулю, то мы получили правильное значение для v; если же определитель равен нулю, то уменьшим значение v на 1 и повто- рим процедуру. Поступать таким образом необходимо до тех пор, пока не будет получен определитель, отличный от нуля, и тогда мы узнаем число v ошибок, которые произошли на самом деле. Затем обратим матрицу М и вычислим коэффициенты Л (х). Найдя корни Л (х), найдем локаторы ошибок. Если код двоич- ный, то ошибки известны. В противном случае вернемся к уравне- ниям, определяющим компоненты синдрома: = У1Х, + УЙХ2 ; - уух« 52 = Г1Х® + У2Х14УХ S2t = YtX? i -L . - • + YyXl1. Поскольку локаторы ошибок известны, мы имеем систему 21 линейных уравнений с v неизвестными значениями ошибок. Первые v уравнений могут быть решены относительно значений ошибок, если определитель матрицы коэффициентов этих урав- нений не равен нулю. Но По теореме 7.2.1 определитель последней матрицы не равен нулю, если произошло v ошибок, поскольку Xlt Х2, ..., Xv различны и не равны нулю- Алгоритм декодирования представлен на рис. 7.1. Здесь мы предположили, что /с произвольно, хотя все рассуждения проводились для частного случая /0 = 1. Рассуждения остаются теми же для произвольного /0.
7.2. ДЕКОДЕР ПИТЕРСОНА- ГОРЕ ИСТЕЙ НА—ЦИГЛЕРА 199 Рис. 7.1. Декодер Питерсона—Горештейна—Цирлера. Поскольку число элементов поля конечно, обычно простейшим путем нахождения корней многочлена Л (х) является метод проб и ошибок, известный как процедура Ченя. Эта процедура состоит просто в последовательном вычислении Л (ед) для каждого j и про- верки полученных значений на нуль. Наиболее простым способом вычисления значения Л (х) в точке р является схема Горнера: Л(Р) = (...(((М-> VJP I лч,)р I I Vs) р I ... + л„).
200 гл. 7. КОДЫ БОУЗА—ЧОУДХУРИ—ХОКВИИГЕМА Для вычисления Л (р) по схеме Горнера требуется только v умно- жений и v сложений. В качестве примера процедуры декодирования рассмотрим декодирование (15,5)-кода БЧХ, исправляющего три ошибки и имеющего порождающий многочлен g (х) - X10 h А* + Xs ь X* -h ХЕ + X + 1. Для примера будем считать принятый многочлен равным у (х) = -- х7 + Xs. Ясно, что если бы произошло не более трех ошибок, то кодовое слово должно было бы быть нулевым н v (х) = е (х), но декодер не может сделать такого заключения. Выполним все шаги алгоритма декодирования. Сначала вычислим компоненты синдрома, используя арифметику в поле GF (16): S, = а7 4- а2 = а12, S2 = а14 + а4 = а®, S3 = а21 4- а® = О, S4 == а28 + а8 = а3, SB = аЗБ 4- а10 = а®, Se - а42 4- а12 = 0. Пусть v = 3, тогда S2 S31 Га12 а® 01 S2 Ss S4 = а® 0 а3|. ss st sj |_ 0 а3 1 J Определитель М равен нулю; следовательно, полагаем v = 2. Тогда Определитель не равен нулю; следовательно, произошло две ошибки. Далее, следовательно, Л(х) = сЛс2 + а1ах 4- I.
7.!. КОДЫ РИДА—СОЛОМОНА 201 Используя процедуру Ченя, получаем разложение Л (х) = (а7х + I) (а2х |- I) = а” (х — а8) (х — а18). Многочлен локаторов ошибок Л (х) имеет корни а8 и а*3, а лока- торы ошибок равны элементам, обратным корням. Таким обра- зом, ошибки произошли во второй и седьмой позициях. Поскольку код является двоичным, значения ошибок равны I и е (х) = «х’-Ьл1. 7.3. КОДЫ РИДА СОЛОМОНА Важным и широко используемым подмножеством кодов БЧХ являются коды Рида—Соломона. Это такие коды БЧХ, у кото- рых мультипликативный порядок алфавита символов кодового слова делится на длину кода. Таким образом, т =- 1 и поле сим- волов GF (q) совпадает с полем локаторов ошибок GF (</"). Обычно мы будем выбирать а примитивным; тогда п =-- q”1 — 1 =q — I. Минимальный многочлен над GF(q) элемента р, взятого из того же поля, равен fp (X) =-- X — ₽. Поскольку поле символов и поле локаторов ошибок совпадают, все минимальные многочлены линейны. В коде Рида—Соломона, исправляющем t ошибок, обычно полагается /п = 1, и тогда порождающий многочлен записывается в виде g W " — «) (х — ctn) ... (х — а21). Степень этого многочлена всегда равна 2t, откуда следует, что параметры кода Рида—Соломона связаны соотношением п — k = 2/. В коде Рида—Соломона можно выбрать также любое другое зна- чение /0, причем с помощью разумного выбора /0 иногда удается упростить кодер. Таким образом, g (х) =-. (х - а'») (х — Ll) ... (х — аА+-/-1). В качестве примера найдем g (х) для (15,11)-кода Рида— Соломона с/ = 2 над GF (16). Может быть выбрано любое /в; мы выберем /0 =- I. Тогда g W = (* — а) (х — а8) (х - а8) (х — а4) = = х4 4- (z8 + z8 + I) х® Ч- (z8 I- z8) х? -1 z3x -| (г® -| z 4 I) = = х4 + аих® 4- а6х® ’• а3х I а10 (Здесь использовано приведенное в табл. 7.1 представление эле- ментов поля GF (16) в виде мноючленов от 2.) Поскольку сте-
2 02 ГЛ. 1- КОДЫ БОУЗЛ—ЧОУДХУРИ—ХОКВИНГЕМА! пень g(x) равна 4, п — k — 4 и й = 11. Информационный мно- гочлен представляет собой последовательность одиннадцати сим- волов из GF (16), что эквивалентно 44 битам. В качестве второго примера найдем g (х) для (7, 3)-кода Рида— Соломона с / = 2 над GF (8). Может быть выбрано любое j0; мы выберем /0 — 4. Тогда g (х) = (х — а4) (х — а5) (х — а6) (х — а0) = = X* Ь (z® I 1) X3 + (Z> + 1) х1 + (2 + 1) X 4 - Z (здесь использовано представление элементов поля GF(8) в виде многочленов от z) Информационный многочлен представляет собой последовательность трех восьмеричных символов (что эквивалентно девяти битам). Предположим, что i (X) - (2® + Z) X® + X + (Z + 1). Кодовое слово несистематического кода запишется в виде с (х) = / (х) g (х) = = (а4х® + х + а3) (х4 + а"х® |- а’х® + а3х + а) = = а4х® + ах5 + а6-*4 + Ох® + Ох® + а5х ]- а4, что представляет собой последовательность семи восьмеричных символов. Коды Рида—Соломона являются оптимальными в смысле границы Синглтона. Теорема 7.3.1. Код Рида—Соломона имеет минимальное рас- стояние п — k + 1 и является кодом с максимальным расстоя- нием. Доказательство. Пусть d = 21 + 1 — конструктивное рас- стояние кода. Минимальное расстояние d* удовлетворяет нера- венству rf*^d = 2/4-l=n — й+ 1, поскольку для кодов Рида—Соломона 21 = п — k. Но для лю- бого линейного кода имеет место граница Синглтона d* < п — k + 1. Следовательно, d* — п — k + 1 и d* = d. □ Доказанная теорема утверждает, что при фиксированных п и k не существует кода, у которого минимальное расстояние больше, чем у кода Рида—Соломона. Этот факт часто является веским основанием для использования кода Рида—Соломона. Не стоит, однако, понимать это утверждение буквально. Часто предпочтение отдается кодам с такими параметрами (п', k‘).
7.4. СИНТЕЗ АВТОРЕГРЕССИОННЫХ ФИЛЬТРОВ 203 при которых не существует кода Рида—Соломона. В то же время коды Рида -Соломона всегда оказываются короче всех других циклических кодов над тем же алфавитом. 7.4. СИНТЕЗ АВТОРЕГРЕССИОННЫХ ФИЛЬТРОВ При использовании описанного в § 7.2 алгоритма декодирова- При небольших значениях v эту систему можно решить с помощью обращения матрицы. Для обращения матрицы размера v X v необходимо произвести порядка v3 действий- Однако на практике часто требуется использовать коды, исправляющие большое число ошибок, и в таких случаях желателен более эффективный метод решения данной системы. Такой метод был разработан Берлекэмпом. В основе этого метода лежит тот факт, что выпи- санное выше матричное уравнение не произвольно: матрица обладает специальной структурой. Это позволяет существенно упростить связанные с нахождением вектора А вычисления, хотя сама процедура вычислений становится более сложной для понимания, чем простое обращение матрицы. Остановимся на предложенном Месси варианте алгоритма, который понял, что наилучший способ реализации алгоритма состоит в переформулировке задачи в виде задачи построения схемы с использованием регистров сдвига с линейной обратной связью. Предположим, что нам известен вектор Л. Тогда первая строка выписанной выше системы .определяет значение Sv+i через значения Sx...Sv, вторая строка определяет Sv+2 через Sa, ..., Sv+1 и т. д. Этот последовательный процесс описывается уравнением % —/ = »+1...................2v. Для фиксированного Л это уравнение определяет авторегрес- сионный фильтр. Он может быть реализован как регистр сдвига с линейной обратной связью, множители в отводах которого задаются вектором Л.
204 гл. 7. КОДЫ БОУЗА- ЧОУДХУРИ-ХОКВИНГЕМА Переформулированная таким образом задача сводится к по- строению изображенного на рис. 7.2 регистра сдвига с линейной обратной связью, генерирующего известную последовательность компонент синдрома. Задача состоит в том, чтобы среди боль- шого числа таких регистров найти регистр сдвига с наименьшей длиной. Это позволит определить вектор ошибок минимального веса в принятом слове, или, что то же самое, определить много- член А наименьшей степени. .Многочлен минимальной степени имеет степень т и определяется единственным образом, поскольку матрица размера v X v исходной системы уравнений обратима. Процедура построения авторегрессионного фильтра является также методом решения матричного уравнения относительно вектора А. Ниже будет приведена процедура построения такого регистра сдвига. Описанный метод окажется применимым для вычисления в любых полях н не будет предполагать каких-либо особых свойств последовательности Slt S2, .... S2t- Эта последо- вательность нс обязательно должна состоять из компонент син- дрома, но если ее элементы все же являются компонентами син- дрома для исправляемой конфигурации ошибок, то процедура всегда приведет к регистру сдвига с ненулевым весовым множи- телем в самом правом отводе. Для произвольного регистра сдвига с линейной обратной связью, описываемой многочленом А (х), длина регистра может быть больше, чем степень А (х), поскольку несколько самых правых ячеек регистра может быть не охвачено обратной связью. Для построения требуемого регистра сдвига необходимо найти две величины: длину регистра сдвига L и многочлен обратной связи А (х): Л (х) = - Av_ixv-’ | ... + AjX -|- 1, где deg 'V (x) c L. Обозначим эту пару через (L, Л (х)). Необ- ходимо найти регистр сдвига с обратной связью наименьшей длины, который генерирует последовательность ...» S2f, при соответствующем начальном состоянии. Процедура построения регистра является индуктивной. Для каждого г, начиная с г — 1, построим регистр сдвига, генериру- в начальном состоянии содержит последовательность ............5, Ряс. 7.2. Многочлен локаторов ошибок в цепи регистра сдвига.
7.4. СИНТЕЗ АВТОРЕГРЕССИОННЫХ ФИЛЬТРОВ 20В ющнй первые г компонент синдрома. Регистр сдвига (Lr, A<r| (х)) является регистром сдвига минимальной длины, генерирующим Slf .... S’,. Он не обязательно должен быть единственным: может существовать несколько таких регистров сдвига, но все они имеют одинаковую длину. К началу r-й итерации уже будет задан спи- сок регистров сдвига Л-(л)). (/.„ Дга(Л)), Основная идея алгоритма Берлекэмпа—Месси состоит в нахожде- нии способа построения нового регистра минимальной длины (L,, Л<'> (х)), генерирующего последовательность S,j, Sr. Это будет сделано с использованием предыдущего регистра сдвига, в котором при необходимости будут надлежащим образом изме- нены длина и весовые множители. При r-й итерации вычислим следующий выход (г — 1)-го регистра сдвига: Sr = — £ A)r-nsr_z. Поскольку п — I больше, чем степень Л(г многие слагаемые в сумме будут равны нулю, и, таким образом, ее можно записать как сумму от 1 до deg Л<г—(х). Однако обозначения будут менее громоздкими, если сумма будет записываться так, как указано выше. Вычитая S, из требуемого выхода Sr, получаем величину А„ называемую г-й невязкой: Ar-=St-ST = Sr I- £ или, что эквивалентно, д,= Дл/ l>s,4. Если Аг равняется нулю, то положим (Ltf Л<г> (л)) = (bri, А1'—*> (х)), и r-я итерация будет закончена. В противном случае следующим образом изменим весовые множители в цепи обрат- ной связи регистра сдвига: Л<'> (х) = Ди- » (х) । AxfA<m »(г), где А — элемент поля, I — целое число, а Л<”!- ’> (х) — один из многочленов регистра сдвига, встречавшихся в одной из
206 ГЛ. 7. КОДЫ БОУЗА—ЧОУДХУРИ—ХОКВИНГЕМА предыдущих итераций. Теперь, используя новый многочлен, снова вычислим невязку (обозначим ее Дг) л; = "ел}Ч-,= I л£,л)*-"5^,_1. /М) /=0 О Теперь все готово для определения величин т, I и А. Выбе- рем т меньше г и такое, что Дт =/= 0. Выберем также I = г — т и А -= —АЙА. Тогда д; = Дг—-^-Дга =°, и, следовательно, новый регистр сдвига будет генерировать последовательность 5|, .... Sr_j, Sr. Однако нам нужен не любой такой регистр сдвига, а регистр сдвига с минимальной длиной. У нас остался произвол в выборе т, для которого Дг„ 0. Выбрав в качестве т номер ближайшей итерации, в которой выполнялось условие Lm > Tm_i, получим в каждой итерации регистр мини- мальной длины, однако такое усовершенствование требует для своего выполнения дополнительного времени. Практическая реализация того, что было изложено до настоя- щего момента, представлена на рис 7.3. Два регистра сдвига при итерациях т и г изображены на рис. 7.3, а. В качестве т-й итерации выбирается та, при которой регистр сдвига (ЬП1_1,Л’"‘ 1 (*)) не способен генерировать компоненту синдрома и минималь- ная длина регистра сдвига, генерирующего требуемую компо- ненту синдрома при m-й итерации, больше Лт_д. Будем также считать, что регистр сдвига (LrJ, Л(г—'• (х)) не способен гене- рировать Sr; в противном случае он остается без изменения. На рис. 7.3, б регистр сдвига (LmJ, Л<т-*> (х)) превращен во вспомогательный регистр путем увеличения его длины, изме- нения ею связей и такой его перестройки, которая позволяет скомпенсировать неспособность регистра (£r_i, Л(г—” (х)) гене- рировать S,. Отметим, что вспомогательный регистр имеет допол- нительный отвод с весовым множителем единица, соответству- ющим коэффициенту Ло"'—”. На протяжении первых г—1 ите- раций в остальных отводах цепи обратной связи формируется отрицательное значение этой соответствующей дополнительному отводу величины, и поэтому па выходе вспомогательного реги- стра формируется последовательность нулей, не оказывающая влияния на генерируемые компоненты синдрома. При г-й итера- ции эти величины взаимно не уничтожаются, и выход вспомога- тельного регистра оказывается ненулевым. Коэффициент А вы- бирается таким образом, чтобы его добавление к r-му выходному сигналу обратной связи главного регистра приводило бы к полу- чению нужной компоненты синдрома S,.
1.4. СИНТЕЗ АВТОРЕГРЕССИОННЫХ ФИЛЬТРОВ 207 Рис. 7.3. Конструкция Берлекзмпа Месси. На рис. 7.3, в показано, как два регистра сдвига, изображен- ные на рис. 7.3, б, сливаются в один регистр, что в силу принципа суперпозиции не меняет общего поведения схемы. Это дает ре- гистр (Lr, ДЮ (х)). Иногда Lr — Lr_i, иногда Lr > L,.t. В по- следнем случае при проведении дальнейших итерации т заме- няется на г.
208 ГЛ. 7. КОДЫ БОУЗА—ЧОУДХУРИ—ХОКВИИГЕМА Точное описание процедуры дается следующей теоремой, которая утверждает, что эта процедура приводит к наименьшему регистру сдвига с требуемым свойством. Довольно длинное дока- зательство теоремы займет всю оставшуюся часть этого параграфа. Теорема 7.4.1 (алгоритм Берлекэмпа —Месси). Пусть заданы Sj,..., S3I из некоторого поля, и пусть при начальных условиях Л<°> (л) ™ 1, В,0) (х) = 1 и Lo = 0 выполняются следующие ре- куррентные равенства, используемые для вычисления Л<?/> (х): л,= Е лГ"^,. /=« £, = 6, (г-£,_,)+(! ГЛИИ Г I -Ла 1ГЛ*' Ч(х)1 (х) | | л; 'ь (I - 6.) xj Lb1'-'1 (x)J г = 1, .... 2t, где 6r = 1, если одновременно Дл =/= 0 и 2Lr-i с <. г — 1, и = 0 в противном случае. Тогда Лг/> (л) является многочленом наименьшей степени, коэффициенты которого удо- влетворяют равенствам = 1 и Sr + £ Af'Sr-j =0, г =• L2t + 1____2t. В этой теореме Дг может равняться нулю, но только в том случае, когда 6Г — 0. Положим тогда по определению Д7‘6Г = 0. В каждой итерации для умножения матриц требуется не бо- лее 2t умножений, а для вычисления Дг — не более t умножений. Всего производится 21 итераций, так что делается не более б/2 умножений. Следовательно, использование этого алгоритма обычно эффективнее обращения матрицы, в котором требуется порядка t3 операций. Доказательство теоремы 7.4.1 сводится к двум приведенным ниже леммам. Сначала в лемме 7.4 2 находится неравенство, связывающее Lr и Lr_t. Затем в лемме 7.4.3 используется ука- занный в теореме 7.4.1 алгоритм для построения по регистру сдвига минимальной длины, генерирующему последовательность S,, ..., Sr_(, регистра сдвига, генерирующего последователь- ность Si, ..., Sr. Из леммы 7.4.3 будет следовать, что вытекающее из теоремы 7.4.1 построение приводит к регистру сдвига мини- мальной длины, поскольку его параметры будут удовлетворять границе из леммы 7.4.2. Лемма 7.4.2. Пусть (Lr~t, Л<,—° (л)) — регистр сдвига с ли- нейной обратной связью минимальной длины, генерирующий последовательность Si, .... Sr_i, a (Lt, А<г) (л)) —регистр сдвига
? синтез Авторегрессионных фильтров 209 с линейной связью минимальной длины, генерирующий St, ..., Sr-i, S„ и (х) =/= (х). Тогда Lr^ max г £r_J. Доказательство. Неравенство, которое требуется доказать, разбивается на дна неравенства: Lr^Lr_t н L,^r Lf_y. Первое неравенство очевидно, поскольку если регистр сдвига с линейной обратной связью генерирует некоторую последова- тельность, то он генерирует и любую меньшую последователь- ность, являющуюся началом исходной. Если Lr_A г, то второе неравенство также становится очевидным. Поэтому предполо- жим, что < г и что второе неравенство не выполняется, и попытаемся прийти к противоречию. Из предположения следует, что Lr < г — 1 — £г_,. Для сокращения записи введем следу- ющие обозначения: с (х) = Л<г—’> (л), Ь (х) = A(r> (х), L = LrJ и L' — Lr. В новых обозначениях исходные предположения при- мут вид r^L+L' -j- 1 к L<Z г. Кроме того, из условий леммы следует, что 3, = J £ c,Sw. j » I. +1.....г - I, И /'aj = L' -f- 1......r. Теперь установим противоречие. С одной стороны, Sr = - £ £ CiSM 4—1 4—1 i—1 где справедливость разложения Srjt следует из того, что г — k пробегает содержащиеся среди чисел L 4-1, —1 целые значения от г — 1 до г - L', поскольку по предположению г £ |- £' 4- |. С другой стороны, Sr =f= — £ CfSr_f = £ Q £ ^kSr-j-h, /=1 1=1 4—1 где справедливость разложения Sr_i следует из того, что г — i пробегает содержащиеся среди чисел L' 4-1, г — 1 целые значения от г - 1 до г — £, а это опять следует из предположе- ния r^L |- £' -|- 1. Изменение порядка суммирования в пра-
210 ГЛ. 7. КОДЫ БОУЗА ЧОУДХУРИ—ХОКВИНГЕМА вой части последнего равенства приводит к выражению для S,., полученному в правой части предыдущего равенства. Таким образом, получаем доказывающее лемму противоречие Sr =/= Sr. □ Если удастся построить регистр сдвига с длиной, удовлетво- ряющей соотношению из леммы 7.4.2 с заменой знака нестрогого неравенства знаком равенства, то тем самым будет построен регистр минимальной длины. Следующая лемма показывает, что такое построение дается теоремой 7.4.1. Лемма 7.4.3. Предположим, что (Lt, А* (л)), I = 1, ..., г, является последовательностью регистров сдвига минимальной длины с линейной обратной связью, таких, что Л(0 (л) генери- рует Sv.... S,-. Если Л<г> (л) у= Л,г *> (х), то Lr = max lLr.i, г - Lr_}] и любой регистр сдвига, генерирующий Si, .... Sr и имеющий длину, совпадающую с величиной правой части последнего равен- ства, является регистром сдвига минимальной длины. Такой регистр сдвига определяется теоремой 7.4.1. Доказательство. Согласно лемме 7.4.2, LT не может быть меньше величины в правой части последнего равенства. Если удастся построить какой-либо регистр сдвига, который генери- рует требуемую последовательность и длина которого совпадает с указанной величиной, то он будет регистром сдвига минималь- ной длины. Доказательство будет проводиться по индукции. Мы построим регистр сдвига, удовлетворяющий теореме, в пред- положении, что такие регистры последовательно построены для всех k г — 1. Для каждого k, k = г — 1, будем обозна- чать через (Lh, Л* (х)) регистр сдвига минимальной длины, гене- рирующий Si, ..., Примем за предположение индукции, что Lh =* max k Т-л-Л, k = 1,..., л — 1, каждый раз, когда A<fr) (х) =/= Л<*-*> (х). Это верно для k =- О, поскольку 1ф = 0 и 1. Значение k в последней итерации, приведшей к изменению длины, будем обозначать через т. По- следнее означает, что при завершении (г — 1)-й итерации т яв- ляется целым числом, таким, что ^г-1 — Lm_|. Теперь имеет место следующее равенство: S, + 's ЛГ%-. I, 1=1 l J = Г.
7.S. БЫСТРОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ 211 Если Дг — 0, то регистр (Lr.i, Л'г ° (х)) также генерирует пер- вые г символов, п, таким образом, L, = L,_t и Л<г> (х) = Л<'-*> (х). Если Дг=/=0, то необходимо построить новый регистр сдвига. Напомним, что изменение длины регистра произошло при k = т. Следовательно, и по предположению индукции E,_i Lni - max |Lm_,, гп LK1_i| =т — Lm_v, поскольку L„, > L,n_i. Теперь выберем новый многочлен Ли (л) =. Л1'-11 (л) Л, V”-11 (X) н положим Lr -- deg Л(г> (х). В этом случае поскольку deg М'~° (х) < Z-r_i и deg |хг-"’Л<'в-1) (х)] < г — т + Lin_i, то Lr < max |Lr_i, г т Lm_t] с шах |£г_!» t — Lr_J. Из последнего неравенства и леммы 7.4.2 при условии, что Л<г> (х) генерирует S1( ...» S,., следует, что Lr — max |Lr_i, г — Lr_il. Осталось доказать, что регистр сдвига (L,, Л<г> (х)) генерирует требуемую последовательность. Докажем это непосредственным вычислением разности между Sj и сигналом па выходе обратной связи peiистра сдвига. = S, . S — [sz_,i«+ Г’ = I 0. j. £„/,(-I......г-1. “ I Л, - Д - О, i =г. Итак, peiметр (Lr, Л<И (х)) генерирует Slt .... Sr; в частности, (Ел, Л|й) (х)) генерирует Sj.S^. Лемма доказана. □ 7.5. БЫСТРОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ Уяснение работы декодера Питерсона—Горенстейна—Цирлера — лучший путь к пониманию процесса декодирования кодов БЧХ. Но при построении декодера приходится жертвовать концепту- альной ясностью во имя вычислительной эффективности. Опи-
212 ГЛ. 7. КОДЫ БОУЗА—ЧОУДХУРИ—ХОКВИНГЕМА санный в § 7.2 декодер Питерсона—Горенстейна— Цирлера пред- полагает обращение двух матриц размера t X t. Хотя обращение матрицы в конечном поле не приводит к ошибкам округления, вычислительная работа, особенно для больших значений t, может оказаться чрезмерно большой. В то же время обращения обеих матриц можно избежать. Обращение первой матрицы, необходи- мое для вычисления многочлена локаторов сшибок, можно обойти, используя алгоритм Берлекэйиа—Месси. Обращение второй ма- трицы, необходимое для вычисления значений ошибок, можно обойти, воспользовавшись процедурой, носящей название алго- ритма Форни. Этот параграф начнется с описания алюритма Форни, а затем будет продолжено рассмотрение алгоритма Бер- лекэмпа—Месси. Дпя описания алгоритма Форни вам понадобится многочлен локаторов ошибок А (х) = А^ | Л^-1 + • • | | - 1, имеющий корни X/1, 1 = 1 ...,v: л«-П(1 «,). Определим синдромный многочлен s(x)= w-ee у.х& i-i i-i и многочлен значений ошибок Q (х): Й (х) = S (х) Л (х) (mod х2'). Многочлен значений ошибок будет иногда использоваться в даль- нейших рассуждениях. Его связь с локаторами и значениями ошибок устанавливается следующей теоремой. Теорема 7.5.1. Многочлен значений ошибок можно записать в следующем виде: а(«) = ЕглП(1-ад. Доказательство. Из определения сомножителей, входящих в ра- венство для Й (х), получаем ОМ = [г Е ‘ | [Й(1 - ад] (mod?') = = X Г|Л'| [(1 - ад £ (Х,х)'-'] П(1-ад (mod*»).
7.в. БЫСТРОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ 213 Выражение в квадратных скобках является разложением для (1 —Х^х-'). Таким образом, аИ-2>'1х,(|-х??)П(1- Хк) (ж.,/'). i—Г Г+i Последнее выражение, взятое по модулю х21, совпадает с выра- жением, которое требуется доказать. Тем самым теорема доказана. □ Теперь все готово для того, чтобы выписать выражение для значений ошибок, которое намного проще аналогичного выраже- ния, использующего обращение матрицы. Теорема 7.5.2 (алгоритм Форни). Значения ошибок получа- ются из равенства, = л,-‘е(л,-) _ в (л, ) ' П(|-х/г') Л'(ЛГ') Доказательство. Используя равенство из утверждения тео- ремы 7.5.1 при х — XT', получим й(хг')=у,х,П(1 -х,х,-‘), откуда вытекает первая часть теоремы. С другой стороны, производная многочлена Л (х) равна л»--Ёх,П(1~хх,), и, таким образом, Л (хг') -- х,П(1-х,х,-'), откуда сразу следует утверждение теоремы. □ Алгоритм Форни обладает существенным преимуществом перед обращением матрицы, но использует деление. В гл. 9 будет пред- ложено другое решение, не использующее деление. Теперь вернемся к вычислению многочлена локаторов оши- бок, использующему алгоритм Берлекэмпа—Месси теоремы 7.4.1. Предложенный Месси вариант решения этой задачи показан па рис. 7.4, а. По заданным 5), /= 1, .... 2/, находится вектор Л минимальной длины, удовлетворяющий t уравнениям S/ + 2j =-0, j = t + 1,..., 2t. *•=1 Это означает, что требуется по заданным 2t компонентам век- тора S из свертки вычислить вектор Л, если априори известно,
214 ГЛ. 7- КОДЫ БОУЗА — ЧОУДХУРИ—ХОКВИНГЕМА Начальное состояние регистра | | | | — 1| 5~|------------------- SW Коэффициенты 6 отводах, равны Л/ Начальное состояние регистра ЭД Коэффициенты 8 отеойах равны Л/ 6 Рнс. 7.4. Генерация спектра ошибок. а — вариаш Месси; б — вариант Бср- аекэмпа. что Л/ = О при i> t. Удовлетворяющий этому равенству век- тор Л определяет коэффициенты многочлена локаторов ошибок л(*)-П(1 -*Х). где Xi, I = 1, .... v, являются локаторами ошибок. Многочлен значений ошибок не вычисляется с помощью этого алгоритма, но получается позже из Л (х) п S (х) согласно определению Й (х) = S (л) Л (х) (mod х”). Вариант Берлекэмна решения этой задачи показан на рис. 7.4,6, из которого видно, что многочлену значений ошибок отводится центральная роль. Такой вариант предполагает поиск векторов Л и Й, компоненты которых равны нулю при t<Z k с и и удов- летворяют 2/ уравнениям s, + Eva. = j = i.si. где S} = 0 при j < 0. Заметим, что j пробегает 2t значений. Решение задачи чается двумя многочленами: многочленом лока- торов ошибок н многочленом значений ошибок. Два описанных выше варианта эквивалентны. В дальнейшем будет рассмотрен вариант, предложенный Месси При пеобходи-
7.5. БЫСТРОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ 216 мости алгоритм Берлекэмпа—Месси можно преобразовать в форму Берлекэмпа, производя итерации непосредственно для много- членов Л<г* (л) и Q,r) (х). На рис. 7.5 приведена блок-схема алгоритма Берлекэмпа— Месси. Как было показано, этот алгоритм позволяет вычислять многочлен локаторов ошибок исходя из заданных 2t компонент Начальные значения: Вычисление ошибки в следующей компоненте синдрома br=Sr+i, ЛАЛ- £ AjSH) i»i j=0 Рис. 7.5. Алгоритм Берлекэмпа—Месси,
216 ГЛ. 7. КОДЫ БОУЗА ЧОУДХУРИ-ХОКВИНГЕМЛ синдрома Sb ...» S2t- Если /0 в коде отлично от 1, то определим S, — Vy+;-0_b / = 1, ..., 2t. Эти компоненты синдрома участвуют в вычислениях точно так же, как и прежние компоненты. Сам алгоритм при этом не претерпевает никаких изменений, и дело сводится лишь к соответствующему изменению индексов внутрен- них переменных в алгоритме. Этот алгоритм и его обоснование будут понятнее, если во всех деталях проследить работу алгоритма по схеме на рис. 7.5 для конкретных примеров. В табл. 7.3 приведены необходимые вычисления для (15,9)-кода Рида—Соломона, исправляющего тройные ошибки. В достоверности приведенных вычислений можно убедиться, проделав шесть итераций по изображенной на рис. 7.5 схеме. Табл. 7.4 содержит анвлогичные вычисления для исправ- ляющего’тройные ошибки (15,5)-кода БЧХ. Внутренняя логика работы алгоритма Берлекэмпа—Месси может показаться несколько загадочной. Возможно, ответы на Таблица 7.3 Алгоритм Берлекэмпа—Месси для (15, 9)-кода Рида—Соломона, исправляющего тройные ошибки
7.6. БЫСТРОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ 217 Таблица 7.4 Алгоритм Берлекэмпа—Месси для (15, 5)-кода БЧХ, исправляющего тройные ошибки 9(х)~х’0 + хв + х5+х4 + х2 t х + 1 Ят) = О «<х)=х, + х‘=+х2 = г(х) г Д, Их) Л{х) L 0 1 1 0 1 a I +a x a 1 Tax I 2 0 l+a’4x ax 1 +а,4х 1 3 a11 l+ct'4x+«l2x2 a*+a3x 1 +o,4x+a,2x2 2 4 0 1 + «'4х + я'2х2 atx+a’x2 l+o'4x+a'2x2 2 5 a" 1 +e’*x+a’' x2 +al4x tf+a’x+ax1 1+а'4х+я’'х2+я‘4х3 3 6 0 1 +a,4x+«' *x2+e,4x я’х+я’х'+ях’ 1 +а,4х+а,,х2+я,4х’ 3 Л{х)= 1 + a'S+a1 [х2 + я'Ъ? = (I + «тхХ1 +а*хХ’1 + а2х) возникшие вопросы помогут найти следующие соображения. На некоторых итерациях, скажем на r-й итерации, наравне с вы- бранным по алгоритму Берлекэмпа—Месси регистром с линей- ной обратной связью могут существовать другие регистры мини- мальной длины с линейной обратной связью, генерирующие требуемые символы. Все эти регистры будут генерировать одну и ту же требуемую последовательность г компонент синдрома; в то же время последующие компоненты, не входящие в г-ю ите- рацию, у них будут различны. Каждый раз, когда это возможно, на следующей итерации выбирается регистр сдвига с линейной обратной связью с прежней длиной, генерирующий следующую требуемую компоненту синдрома; если такого регистра не оказы- вается, то длину регистра приходится увеличивать. Однако при решении вопроса о необходимости увеличения длины регистра никак не учитывается значение следующей компоненты син- дрома (проверяется лишь выполнение соотношения Аг+1 =/= 0).
218 гл. 7. КОДЫ Ы1УЗЛ —ЧОУДХУРИ —ХОКВННГЕМА Завание тамол и управляющая логика Управление ключами и тактовые импульсы вля камйсго регистра сйвига Рис. 7.6. Схема аппаратурной реализации алгоритма Берлекэмпа—Месси. За- мечания Требуется 21 итераций из 2(/ + 1) тактов каждая. Бее дан- ные передаются т параллельными битами. Таким образом, на (г + 1)-шаге имеется по меныней мере столько же возможных вариантов регистра сдвига, сколько значений мо- жет принимать Sr±1. Описанный алгоритм может быть реализован в виде программы для универсальных или специализированных ЭВМ, предназна- ченных для вычислений в полях Галуа. Если требуется очень большая скорость декодирования, то можно воспользоваться специальным жестким исполнением декодера, возможно включа- ющим регистры сдвига. Схема аппаратурной реализации построенного на регистрах сдвига устройства приведена на рис. 7.6. Три регистра, изобра- женные на рисунке, используются для хранения значений коэф- фициентов многочленов S (х), Д (х) и В (х); длина каждого ре- гистра должна’быть не меньше той, которая необходима для хранения соответствующего многочлена наибольшей степени, а иногда выбирается немного большей. Если регистры содержат многочлены со степенями меньше максимальных, то неиспользо-
7«5. БЫСТГОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ 219 ванные разряды заполняются нулями. Регистры S (х) и В (х) имеют на один разряд больше, чем необходимо для храпения многочленов максимальной степени; отметим наличие дополни- тельного разряда в регистре S (х). Такой выбор длин регистров вместе с выбором числа тактов работы каждого из регистров в течение одной итерации приводит к тому, что в результате каждой итерации коэффициенты много- членов сдвигаются от своего первоначального положения на одну позицию. Это обеспечивает умножение В (х) на х и такую пере- ипдексацню компонент Sj, чтобы получились компоненты Sr_j, входящие в выражение для ДЛ. Чтобы понять это, снова обра- тимся к рис. 7 6, на котором регистр S (х) показан в своем исход- ном состоянии. В результате каждой итерации содержимое этого регистра сдвигается на одну позицию вправо, что позволяет в следующей итерации правильно произвести умножение соот- ветствующих коэффициентов многочленов S (х) и Л (х). Регистр Л в течение одной итерации сдвигается на полную длину дважды: когда вычисляется Дг и когда в этот регистр вводится новое значение Л. На рис. 7 7 представлена последовательность вычислений, производимых декодером, использующим алгоритм Берлекэмпа— Месси и алгоритм Форни. В случае когда произошло не более t ВвоВ и[х) Рис. 7.7. Быстрое декодирование колов БЧХ.
220 ГЛ. 7- КОДЫ СОУЗА ЧОУДХУРИ ХОКВИНГЕМА ошибок, такой декодер выдаст правильное выражение для много- члена локаторов ошибок. В случае когда произойдет более t оши- бок, декодирование будет неудачным и получится либо многочлен, не удовлетворяющий условиям, которым должен удовлетворять многочлен локаторов ошибок, либо допустимый, но неправиль- ный многочлен. В первом случае декодер может обнаружить ошибку и пометить сообщение как не поддающееся декодирова- нию. Решение об обнаружении иеисправляемой конфигурации ошибок принимается тогда, когда выполняется хотя бы одно из двух условий: 1) число различных лежащих в GF (qm) корней Л(х) отлично от L\ 2) значения ошибок не лежат в поле символов кода. При декодировании сначала осуществляется проверка много- члена локаторов ошибок. Если он удовлетворяет требуемым усло- виям, то декодер приступает к вычислению многочлена значений ошибок. Может случиться, что значения ошибок не будут лежать в поле символов кодовых слов, если последнее меньше поля лока- торов ошибок. Такой символ не может быть внесен каналом, и, следовательно, его наличие указывает на то, что вектор ошибок содержит более t искаженных позиций. В § 9.6 будут рассмотрены способы декодирования кодов БЧХ с исправлением некоторых конфигураций более чем t ошибок; здесь же мы обсудим противоположный случай, когда число исправляемых ошибок ограничивается конструктивным расстоя- нием. На практике такое декодирование используется для значи- тельного уменьшения вероятности ошибки декодирования, пла- той за которое является увеличение вероятности отказа от деко- дирования Для уменьшения вероятности неправильного декодирования число исправляемых декодером ошибок можно ограничить чис- лом t, таким, что 2/ 1 будет строго меньше d* (при четном d* это выполняется всегда). В этом случае декодер всегда будет обнаруживать неисправляемую конфигурацию ошибок при усло- вии, что число v действительно случившихся ошибок удовлетво- ряет неравенству t -|-v <d*, поскольку для перехода кодового слова в неправильную сферу декодирования должно произойти не менее d* — t ошибок. В таком декодере хорошо применять алгоритм Берлекэмпа— Месси. Для вычисления Л (х) необходимо сделать 2f итераций по алгоритму Берлекэмпа —Месси. Остальные т — t итераций, т = = d* — I — t, требуются для проверки равенства нулю невя- зок Аг. Если хотя бы при одной из этих дополнительных_итера-
7.6. ДЕКОДИРОВАНИЕ ДВОИЧНЫХ КОДОВ БЧХ 221 ций Дг не равняется нулю, то принятое слово объявляется сло- вом, в котором произошло более t ошибок. Правомерность описанной процедуры доказывается следую- щей теоремой. Теорема 7.5.3. Пусть произошло не более т ошибок и заданы Sj при j - 1, ..., I т и т > I. Пусть, далее, (LZt, Л?1 (л)) — регистр сдвига с линейной обратной связью, генерирующий после- довательность Sj, j = 1, ...» 2t, и л, = Г i=f> причем Лг равняются нулю при г = 2t -|- 1, .... t -|-т и I. Тогда произошло не более t ошибок и Л<я> (л) будет являться правильным многочленом локаторов ошибок. Доказательство. В условии теоремы заданы компоненты син- дрома Sj для / = 1, .... t + т. Если бы имелись еще т — t компо- нент синдрома Sj, j = t -j- T 4* 1 • , 2т, то можно было бы исправлять т ошибок, т. е. любую конфигурацию предполагае- мых ошибок. Вообразим на минуту, что эти дополнительные компоненты сообщены нам добрым волшебником или переданы по неведомому добавочному каналу. Тогда, используя алгоритм Берлекэмпа—Месси, можно найти многочлен локаторов ошибок, степень которого равна числу ошибок. Но при 2?-й итерации Lit с t, и по предположению Дг равняется нулю при г = 2t л- 4- 1, ..., t 4- т. Поэтому значение L не будет меняться до итера- ции с номером f 4-т 4- 1, и, следовательно, по правилу изме- нения L Z-st^a+т+ 1) +т + 1)-« = т 4-1, а это противоречит предположению о том, что произошло не бо- лее т ошибок. □ 7.6. ДЕКОДИРОВАНИЕ ДВОИЧНЫХ КОДОВ БЧХ Все, что было сказано в этой главе до настоящего момента, спра- ведливо в любом конечном поле. В случае поля GF (2) проведен- ные рассуждения можно дополнительно упростить. Очевидное упрощение состоит в том, что при декодировании необходимо вычислять лишь позиции ошибок, а значения ошибок всегда равны единице (хотя’декодер может вычислять значения ошибок в качестве дополнительной проверки). Дальнейшее упрощение декодирования менее очевидно; намек на его возможность содержится в примере, приведенном в табл. 7.4.
222 гл. 7. коды БОУЗА—ЧОУДХУРИ—ХОКВИНГЕМЛ Нетрудно заметить, что значение Az всегда обращается в нуль при четных итерациях. Если это происходит всегда при декоди- ровании двоичных кодов, то итерации с четными номерами можно пропускать. В этом параграфе будет доказано, что дело обстоит действи- тельно так. Доказательство основывается па следующем факте: в поле GF (2) синдромы с четными номерами определяются син- дромами с нечетными номерами по формуле что следует из теоремы 5.3.3. Получим для нескольких начальных значений г алгебраические выражения для коэффициентов Л<г) (к). Следуя алгоритму, приведенному на рис. 7.5, и используя спра- ведливые для всех двоичных кодов равенства Si = S’ = S|, получаем Д1 = s1( Ai = Sg 4 Si - 0, Дз = 5з4-«А, Ai = Sj -|— S1S3 — Si 'S-tSs I Si — 0, Л<» (x) = Sxx-f-1,] Л«(л) =S1x4-l, A,s>(x) = (Sf’Se I 50/ -|-S,x h 1. Отсюда следует, что для любых двоичных кодов БЧХ Д2 и Д4 всегда равняются нулю Бесконечное продолжение этого пря- мого пути для вычисления других значений синдромов с четными номерами невозможно. Вместо этого сформулируем общий резуль- тат, показывающий, что Дг — 0 для всех четных г. Теорема 7.6.1. Пусть в расширении поли GF (2) задана про- извольная последовательность Slf S2, .... Ssv_i» удовлетворяющая условию Sit — Sj для 2/ с 2v — I; пусть также задан регистр сдвига с линейной обратной связью Л (х) и выпо.чняютсч равенства Sj = Е hiSj-i. i = , 2v — I. Если следующий член последовательности задается равенством S2V - S Л,5„_„ I—t то Sav = Sl.
7.7. АЛГОРИТМ ЕВКЛИДА 223 Доказательство. Покажем, что при сделанных предположе- ниях выражения для Sv и Sgv совпадают С одной стороны, si = | £ A.s.-i) = lj лК , - s a?siv_„. С другой стороны, S2v = J. = L Е ^kAfSav-ftj- A—I *=I /=1 Из симметрии последнего выражения следует, что каждое сла- гаемое с i =/= k входит в сумму дважды. Поскольку вычисления производятся в расширении поля GF (2), сумма этих слагаемых будет равняться нулю Поэтому вклад в последнюю сумму дадут только диагональные члены, для которых i - k: Ssv — AjSgv—2£. Это выражение совпадает с полученным в начале доказательства выражением для S*. что доказывает теорему. □ Таким образом, по индукции получаем, что Лг равно нулю для четных г; поэтому можно рассматривать только нечетные итерации, формально объединяя две последовательные итерации: Л<'> (*) = Л(,-2> W - А,х-В<г-г) (X), Ви (х) = б.йг'л1'"’1 (х) + (I - 6,) (х). Используя эти формулы, можно пропустить итерации с четными номерами, и в результате декодирование двоичных кодов уско- ряется. Заметим, что поскольку при доказательстве теоремы были использованы лишь соотношения сопряженности между компо- нентами синдрома и ничего пе говорилось о двоичных конфигура- циях ошибок, то описанное упрощение возможно даже для кон- фигураций более чем t ошибок. Поэтому те же виды проверки при- меняются при числе ошибок, большем t. 7.7. ДЕКОДИРОВАНИЕ С ПОМОЩЬЮ АЛГОРИТМА ЕВКЛИДА Декодирование с помощью алгоритма Евклида представляет собой один из способов декодирования, отличный от рассмотрен- ных ранее. Принцип работы такого декодера несколько проще понять, однако считается, что он менее эффективен в практиче- ском использовании; впрочем, справедливость такого мнения, возможно, в значительной мере зависит от конкретного при- менения.
224 гл. 7. КОДЫ БОКЗА-ЧОУДХУРИ- ХОКВИНГЕМА В гл. 4 алгоритм Евликда был описан как рекуррентная процедура нахождения наибольшего общего делителя двух много- членов. Небольшое расширение этого алгоритма позволяет до- полнительно вычислять многочлены а (х) и Ъ (х), такие, что НОД к (х), l(x) 1 = a lx) s (х) I- b (х) I (х). Для двух произвольных многочленов $ (х) и I (х) повторим алго- ритм Евклида в более удобной для нас матричной форме, исполь- зуя для алгоритма деления запись s (х) - ]s (х).7 (х)) / (х) — г (х) Теорема 7.7.1 (алгоритм Евклида для многочленов). Пусть заданы два многочлена s (х) и t (х), такие, что deg s (х) deg t (х), пусть sW) (х) = s (х), (х) = t (х), и пусть А<°> (х) = (j. Тогда решением рекуррентных уравнений Р'+"('>1 = Г° 1 1(*,W1 = AM»W[SW] Li -сии]le-wl я будет многочлен (x) =- у НОД (S (х). t (X)], причем найдется такой скаляр у, что уНОД[5(х), Цх)] = A<«»(x)s(x) | Л<?>(х)/(х), где R таково, что /<я> (х) 0. Доказательство. Поскольку deg /,г; ’’ (х) < deg (х). то в конце концов (х) = 0 при некотором R, и процесс обяза- тельно закончится. Таким образом, г.иь[ л. |:л.и||га- откуда следует, что любой делитель многочленов s (х) и I (х) делит также и s,R) (х). Легко проверить, что ГО 1 1-'_г<2«'>(х) 11 [1 “11 oj’
1.1. АЛГОРИТМ ЕВКЛИДА 22В и поэтому п [гмо]}[гм так что многочлен sfR) (х) должен делить s (х) и t (х), а следова- тельно, и НОД ]s(x), t (х)|. Отсюда получаем, что НОД [з (х), t (х) 1 делит з(Л) (х) и сам делится па s<R> (х); таким образом, з<«> (>;) = у НОД 1s (х), /(х)1. Далее [ o()]=am,wL(<)1- и, следовательно, S™ (X) - л!?' (х)S (X) I /Ilf1 (X) I (х). Это доказывает последнее утверждение теоремы. □ В теореме 7.7.1 найден смысл матричных элементов (х и (х). Можно интерпретировать и два остальных элемента,) для чего нам потребуется обратить матрицу А(г) (х). Напомним, что амм“,п.[| 4“>(х)]- Из этого равенства видно, что определитель матрицы (л) равеп (—1)г. Обратная матрица запишется в следующем виде: АК> (х) А£> (х) !-• _ Г Л£> (х) (х) 1 (*) (X) J 14 -А<'> (X) Xfp (X) J Следствие 7.7.2. Многочлены Ag> (х) и Ag> (х), полученные с помощью алгоритма Евклида, удовлетворяют равенствам «(*) = (—(х) у НОД [s(x), /(х)], t(*) = - (-•)* А® (*) ТНОД (s(x), /(х)]. Доказательство. Используя выписанное выше выражение для обратной к А*о (х) матрицы, получаем 5(Л)1 [ Л-Р(1) Г*,Я’Ю1 Л(Р(х) J l 0 J’ откуда и вытекает утверждение следствия. □ Опишем два совершенно различных способа использования алгоритма Евклида при декодировании; один из них будет при- веден ниже, а другой — в § 9.1. 8 Р. Блсйхут
226 гл. 7. КОДЫ БОУЗА-ЧОУДХУРИ-ХОКВИНГЕМА Напомним, что синдромный многочлен, многочлен локаторов ошибок п многочлен значений ошибок связаны соотношением й (х) = S (х) Л (х) (mod Xя) и условиями deg Л (х) с t и degQ (х) < t — 1. Постараемся теперь использовать доказательство алгоритма Евклида для ре- шения этого уравнения относительно Л (х) и й (х). Из этого доказательства легко установить, что Г W 1 _ Г (х) ЛЙ> (х) 1 Г s(x) 1 l«'>(x)J Lajpw uwr и поэтому № (X) = t (x) Ag> (x) (mods(x)). Если положить t (x) — S (x) и s (x) = Xй, то последнее равенство можно рассматривать как уравнение, которое нам необходимо решить. Это уравнение выполняется для каждого г. Чтобы ре- шить поставленную задачу, необходимо найти такое значение г (если оно существует), при котором deg А^* (х) < t и deg J(r> (х) с с t — 1. Удовлетворить последним условиям можно, выбрав г' равным такому значению г, при котором deg/(rl>(x) Z и deg/<r) (х) « t — I. Поскольку deg /<0> (х) — 2/ и степень (х) строго убывает с воз- растанием г, эти неравенства определяют единственное значе- ние /. По определению г' получаем deg /*г'* (х) « t — I. Степень (х) возрастает с возрастанием г. Остается лишь показать, что degAg'»(x) < t. Это неравенство доказывается с помощью обращения матрицы А (х). Сначала напомним, что А ГО । 1 откуда следует что deg (х) deg (х). Напомним также, что deg s,r) (х) > deg № (х). Из этих неравенств и матричного равенства Г *!'« -dg’Wl [S«W1
Г.Г. АЛГОРИТМ ЕВКЛИДА 227 вытекает, что deg s (х) — deg Ag> (х) 4- deg s<r,) (x),i и, поскольку s(r> (x) = fl**-'» (x), получаем deg Д<£’> (x) = degs(x) — deg/<r'_|) (x) < 2t — t - t, где неравенство следует из определения г'. Теперь мы почти полностью доказали следующую теорему. Теорема 7.7.3. Пусть заданы s° (х) = xw, № (х) = S (х), где S (х) — синдромный многочлен кода БЧХ, исправляющего t оши- ПО] бок, и пусть А‘°> (х) = I q j I - Будем решать следующие ре- куррентные уравнения до тех пор, пока не будет выполнено нера- венство deg « t — 1: Fs<'+’>(x)l [0 1 1 Г8<'»(х)1 | fl'+D (X) J = 11 -QW (X) J 1t<') (X) J • Тогда многочлены £2(x) = Л(х) = Л-'Л£>(х). где А = А&’> (0), являются единственным решением уравнения £2 (х) = S (х) Л (х) (mod x2t), удовлетворяющим условия и deg Л (х) « t. Ад = 1 и deg £2 (х) « С t— I. Доказательство. Деление на А обеспечивает равенствоЛо = ]. С другой стороны, из предыдущих рассуждений следует, что по- следнее уравнение и все условия удовлетворяются. Единствен- ность полученного решения вытекает из того факта, что для синдрома кода БЧХ, исправляющего t ошибок, существует только одно такое решение. □ После того как Л (х) и £2 (х) найдены, декодирование можно завершить любым из методов, предложенных для алгоритма Берлекэмпа—Месси. Блок-схема соответствующего декодера пред- ставлена на рис. 7.8, где декодер завершается алгоритмом Форни (хотя его можно завершить и иначе). 8*
228 ГЛ. 7. КОДЫ БОУЗА— ЧОУДХУРИ —ХОКВИНГЕ1НА Рис. 7.8. Декодирование кодов БЧХ при помощи алгоритма Евклида. 7.8. КАСКАДНЫЕ (ГНЕЗДОВЫЕ1)) КОДЫ Одним из путей построения блоковых кодов с большими длинами является каскадирование кодов. Этот прием состоит в сочетании кода с символами из малого алфавита с кодом с символами из ’) Гнездовые (nested) коды называются также каскадными (concatenated) кодами, поскольку кодеры и декодеры для них группируются о каскады. Мы предпочитаем резервировать термин «каскадный» за каскадными кодовыми сло- вами, которые выписываются одно за другим, образуя единую цепочку. (По- скольку в русскоязычной литературе по теории корректирующих кодов термин «гнездовые кодь» вообще не применяется, а термин «каскадные коды» является общепринятым, мы будем везде пользоваться последним. — Перев-]
7.8. КАСКАДНЫЕ (ГНЕЗДОВЫЕ) КОДЫ 229 Рис. 7.9. Каскадное кодирование. алфавита с большим объемом. Представим себе последовательность 9-ичных символов длины ЛК. Эту последовательность можно раз- бить на К блоков по k символов и рассматривать каждый такой блок как элемент «^-ичного алфавита. Последовательность из К таких элементов кодируется (IV, К)-кодом, заданным над полем GF Затем каждый из N получившихся Личных символов представляется в виде последовательности из k 9-ичяых символов и кодируется 9-ичным (п, £)-кодом. Таким образом, каскадный код имеет два различных уровня кодирования. Итак, суть каскадных кодов состоит в следующем. Пусть при передаче по 9-ичному каналу в качестве внутреннего исполь- зуется (п, Л)-код. Этот код, заданный над GF (</), содержит слов. На вход внутреннего кодера подается последовательность k сим- волов, которые могут рассматриваться как один элемент поля GF (qk). Этот ^-ичный символ поступает на внутренний кодер, а затем выходит из внутреннего декодера (возможно, с искаже- ниями). Таким образом, систему из внутреннего кодера, канала и внутреннего декодера можно рассматривать как некий супер- канал с большим входным/выходным алфавитом из поля GF (t?6). Для передачи сообщений по такому суперканалу могут быть построены суперкоды. На рис. 7.9 для передачи по суперканалу сообщения кодируются (N, К)-кодом над полем GF (9*). Примеры. Пусть внутренним кодом является исправляющий 2 ошибки (7, 3)-код Рида — Соломона над GF (8), а внешним — исправляющий 3 ошибки (511, 505)-код Рида—Соломона над GF (8s). Полученный из этих кодов каскадный код над GF (8) имеет параметры (3577, 1515) и исправляет любую конфигурацию 11 ошибок, а также очень большое число конфигураций с боль- шим числом ошибок. На рис. 7.10 наглядно представлено строе- ние кодового слова. Заметим, что" в действительности кодовое слово является вектором, состоящим из 3577 восьмеричных сим- волов. На рисунке это слово изображено в виде двумерного мно- жества только для того, чтобы продемонстрировать способ построе- ния слова каскадного кода.
230 ГЛ. 7. КОДЫ БОУЗА— ЧОУДХУРИ —ХОКВИНГЕМА Соломона. Другой пример кодового слова каскадного кода представлен на рис. 7.11. Этот код используется при передаче по восьмеричному каналу. Он получается из (7, 4)-кода Рида—Соломона над GF (8) и укороченного (22, 18)-кода Рида—Соломона над GF (4096). Кодовое слово содержит 72 восьмеричных информационных символа и имеет длину, равную 154. Отметим, что все множество кодовых слов после внутреннего кодирования составляет одно кодовое слово каскадного кода. Принятое сообщение, представленное на рис. 7. II, в резуль- тате прохождения по каналу искажено ошибками и стираниями. Приемник объявляет символ стертым, если он не удовлетворяет каким-либо внутренним проверкам на соответствие этого символа правильному. Нестертые символы могут оказаться либо правиль- ными, либо ошибочными. На рис. 7.11 позиции стираний отме- чены прочерками, а ошибочные символы подчеркнуты. Ясно, что декодер знает позиции с прочерками, но не знает, какие сим- волы подчеркнуты. Декодирование с исправлением стираний будет рассмотрено в § 9.2. Этот пример демонстрирует большие возможности каскадного кода, поскольку с его помощью удается успешно декодировать даже столь искаженное сообщение. Заметим, что длинные последо- вательности стираний могут быть вызваны случайными сбоями Исходные данные —72 восьмеричных символа 01234567654321001 2 345676543210012345 676543210012345676 5432100I2345676543
Кодовое слово внешнего (22,18, б)-кода Рида—Соломона над GF (4096) (каждый столбец представляет один символ, провероч- ные символы расположены в первых четырех столбцах) 04651012345676543210012 2465345676543210012345 4002676543210012345676 2l72|s432IOOI2345676543 Кодовое слово внутреннего кода - 22 кодовых слова (7, 4, 4)- кода Рида—Соломона над GF (8) (каждый столбец представляет одно кодовое слово, проверочные символы расположены в первых трех строках) 414541042543626414 047265242154346047 46171 1253073322461 01 234567 6’5 43210012 345676543210012345 676543210012345676 543210012345676543 Принятое сообщение с ошибками и стираниями Сообщение после кодирования внутренним декодером 04—50—2345676743210012 24—53—5676543310012345 40-26-65432I0012345676 21-25-3210012645676543 Сообщение после кодирования внешним декодером 0123456765432100)2 3456765432)0012345 6765432100)2345676 5432100)2345676543 Рис. 7.II. Восьмеричный каскадный код.
232 гл. 7- КОДЫ ЕОУЗА-ЧОУДХУРИ-ХОКВИНГЕМА в приемнике пли случайной интерференцией при построчной передаче символов. Однако поскольку внутренний кодер форми- рует столбцы, такой способ передачи требует использования так называемой перемежающей памяти (corner-turning memory) между внутренним кодером и каналом. В такой памяти слова внутрен- него кода записываются в столбцы до тех пор, пока не будет построено все кодовое слово каскадного кода, которое затем построчно считывается из памяти в канал. Используя каскадный принцип построения кодов, можно даже сочетать блоковые и сверточные коды. В гл. 12 будет описан простой сверточный код с декодированием по Витерби, хорошо исправляющий отдельные ошибки в длинных последовательно- стях двоичных символов. В то же время большое число близко расположенных ошибок при декодировании по Витерби приведет к пакету ошибок. Для исправления этих пакетов может исполь- зоваться внешний код Рида—Соломона. Известно, что этот метод каскадирования кода Рида—Соломона и слабого, но простого сверточного кода является мощным орудием конструирования декодеров для каналов с гауссовским шумом. 7.9. КОДЫ ЮСТЕСЕНА Любой код над полем GF (q^) можно превратить в код над полем GF(<7), «развернув» каждый ^"-ичиый символ исходного кода в последовательность /жу-ичных символов. В результате из ли- нейного (N, TQ-кода над GF (qm) получится линейный (mN, щ^)-код над GF (д). В кодовом слове минимального веса d* ненулевых символов запишутся в виде последовательности из md* символов, из которых только часть будут ненулевыми. Скорость получен- ного кода будет такая же, как и у исходного кода, а минимальное расстояние будет составлять много меньшую долю длины. Это «развертывание» представляет собой простой способ по- строения кода, исправляющего многократные пакеты ошибок. Если исходный код имел минимальное расстояние, равное 5, то в результате получится код, исправляющий одиночные пакеты 0-ичных ошибок длины m -|- I и многие конфигурации из двух пакетов меньшей длины. Например, (п, k) код Рида-Соломона над GF (2т) развертывается в двоичный (тп, /пй)-код, исправля- ющий многократные пакеты ошибок. Однако, как правило, такой код плохо исправляет случайные ошибки. Юстесен обнаружил, что если разумным образом дополнить эту конструкцию, то можно получить хорошие коды. В резуль- тате получился класс кодов, называемых кодами Юстесена, содержащий, как будет показано ниже, некоторые очень хорошие коды. К сожалению, коды Юстесена хороши только при больших длинах и поэтому не представляют особого практического инте-
Г.О. КОДЫ ЮСТЕСЕНА 233 реса. Эти коды могут служить примером построения хороших кодов с большой длиной. Алгоритмы декодирования кодов Юстесена еще не достаточно разработаны. Кодовое слово (2mN, п?А')-кода Юстесена представляет собой [2т X (qm— 1)]-таблицу элементов поля GF (q). Построение кода Юстесена начинается с выбора фиксированного (N, К)-кода Рида —Соломона, содержащего столько слов, сколько должно содержаться в конструируемом коде Юстесена. Прежде всего построим начинающуюся с кодового слова с — (с0, ..., Сдг_1) кода Рида—Соломона (2 X ^-таблицу над GF (</”): [со С1 ct ... cN_t "j ct°c0 cA?2 ... aN~’Сдг.! J * Каждый элемент этой таблицы лежит в поле GF (tf"). Заменим теперь каждый символ в таблице соответствующим m-мерным вектором-столбцом над GF (q). Получившаяся таблица элементов из GF (q) размера 2т X N будет образовывать одно кодовое слово кода Юстесена, Эту таблицу можно любым удобным образом преобразовать в вектор. После повторения такой процедуры для каждого слова кода Рида—Соломона получится код Юстесена. Прежде всего заметим, что указанная процедура приводит к линейному коду. Это важно, поскольку в этом случае для опре- деления минимального расстояния кода достаточно найти значе- ние минимального веса в коде. Остановимся теперь на той особен- ности конструкции Юстесена, благодаря которой она относится к классу хороших кодов. Поскольку слова кода Рида—Соломона имеют вес не менее N — К 4-1, каждая представляющая кодовое слово таблица содержит не менее N — К -Р 1 ненулевых столб- цов. Далее, если в двух столбцах таблицы совпадают т верхних элементов, то в этих столбцах т нижних элементов обязательно будут различными. Таким образом, в таблице нет’двух одина- ковых ненулевых столбцов. Чтобы оценить минимальный вес кодового слова, допустим, что все N — /(4-1 ненулевых столб- цов различны и имеют минимальный возможный вес. Искомая оценка получится суммированием весов N — К + 1 2т-мерных векторов минимального веса. Теорема 7.9.1. Для минимального расстояния (2mN, 2/пК)- кода Юстесена, построенного из (N, К)-кода Рида—Соломона, при каждом /, удовлетворяющем неравенству умеет место оценка £
234 ГЛ. 7. КОДЫ БОУЗА — ЧОУДХУРИ—ХОКВИНГЕМА Доказательство. Кодовое слово минимального веса содержит N — К 4- I различных ненулевых столбцов. Таким образом, вес этого слова не меньше веса слова, которое получится при записи в этих N — К -f- 1 столбцах N — К + I различных последовательностей длины 2т, имеющих минимальный вес. Существует способов выбора I ненулевых элементов в по следовательности длины 2т, а число таких ненулевых элементов равняется q—1. Следовательно, при любом /, удовлетворяющем неравенству 2й-о'(Т)<"-х 11, существует столбец веса 1. Минимальное расстояние кода будет не меньше суммы весов D Для того чтобы наилучшим образом использовать результат теоремы 7.9.1, требуется помощь ЭВМ. Но для больших значе- ний N вычисление биномиальных коэффициентов даже на ЭВМ оказывается весьма непростой задачей- Сейчас будет предложен другой подход к исследованию поведения кода при больших длинах. (Последующий текст не связан непосредственно с теорией кодирования и необходим лишь для описания асимптотического поведения кода при больших длинах ) Лемма 7.9.2. Для всех р, удовлетворяющих условию 0 < р < < 1/2, причем пр - целое число, имеет место неравенство где Н (р) - —р log2 (р) — (1 — р) log2 (I - р). Доказательство. Пусть X — произвольное положительное чи- сло. Справедлива следующая цепочка неравенств: 2М1-Д1. S (“)= 21 <!-»>. 2 £ 2>*(J)« Л=о'в/ k^{l-p>n'n' k^u-p^n К ) л=о ’ Отсюдв получаем
?.S. КОДЫ ЮГ.ТЕСЕНА 4зв Выберем теперь X — 1og2 [(I — р)!р 1; тогда рП f п\ 2 ( k ) < I2_ <|~с) |<®« IO-PJ/pJ 2Р ,ил 1(1-Р)/Р]]': = = [2 <*—р) <*—р) — р 1<?Й1 р ^2i«gsp _|_ 2|1®1 <t—р))]« = = 2"н(р> (р | I р)ч, что доказывает лемму. □ Лемма 7.9.3. Для любого множества М различных ненулевых двоичных слов длины 2т сумма W весов слов удовлетворяет нера- венству W^2m\{M. где X — любое число в интервале (0, 1/2). Доказательство. В силу леммы 7.9.2 в рассматриваемом мно- жестве для любого X из интервала (0. 1/2) число последователь- ностей длины 2т, имеющих вес не более 2/пк, удовлетворяет неравенству 2и>. . „ . s (7 )<2г-""<». Таким образом, для каждого X существует не менее М — 22‘”я <х* слов веса более 2л?Х. Следовательно, сумма весов М слов множе- ства удовлетворяет неравенству Лемма доказана. □ Теорема 7.9.4. Пусть для каждого фиксированного 7? (0 < <R < 1/2) К — Г2Д//?"]. Тогда при каждом целом т (п, ty-код Юстесена (п — 2mN, k — 2mR) имеет скорость не менее R и минимальное расстояние, удовлетворяющее неравенству d*/n (I - 27?) (И-1 (1/2) — о ([)), где о (1) — функция от п, стремящаяся к нулю при г -* <х. Доказательство. Поскольку R = Г2^^1> то К 5* 2NR и, сле- довательно, скорость кода A7(22V) превышает R. Кодовое слово с содержит не менее N — К Ц- 1 различных ненулевых столбцов, т. е. не менее N — К + 1 различных ненулевых двоичных по- следовательностей длины 2т. Далее, N — К 1 N (1 — 27?)
236 ГЛ. 7. КОДЫ БОУЗА-ЧОУДХУРИ-ХОКВННГЕМА Выберем N (I — 2/?) этих последовательностей длины 2т. Тогда условия леммы 7.9.3 удовлетворяются, и из этой леммы следует оценка d* > W 2tnk {N (1 - 2R) - 22т" J, или я* / 2И.Н(Ч \ 2R)(1— Полагая Х = ^'("Г log.Zm )’ приходим к утверждению теоремы. □ Из теоремы 7.9.4 следует важность кодов Юстесепа. Эта тео- рема гласит, что для достаточно больших п выполняется нера- венство d*!n >0,11 (1 — 2Я). При фиксированном R <1/2 отношение d*ln отделено от нуля при п -» оо. Коды Юстесена являются единственным известным классом кодов с заданной в явном виде конструкцией, для кото- рых установлено это свойство х). Коды Юстесена имеют скорость, меньшую 1/2. Коды с боль- шей скоростью можно получить, выкалывая компоненты исход- ного кода. Получаемые таким образом коды также представляют только теоретический интерес как пример кодов, имеющих хоро- шие характеристики при очень больших длинах. ЗАДАЧИ 7.1. Найти порождающий многочлен g (х) для исправляющего двойные ошибки двоичного кода длины п=31. Использовать примитивный элемент а и примитивный многочлен р (х) = х4 + + । 7.2. Найти кодовое слово, соответствующее информационному многочлену а*х + а3 для кода Рида—Соломона длины 15, исправляющего одиночные ошибки и построенного по примитивному элементу а поля GF (21). 7.3. а. Найти порождающий многочлен g(x) для исправляющего двойные ошибки кода Рида—Соломона, основываись на примитивном элементе а поля GF (21) и полагая j0= I. 1) Коды Юстесена отнюдь нс являются единственным подклассом обширного класса каскадных кодов, обладающих тем свойством, что при увеличении и оба параметра кода — и скорость, и отношение расстояпие/доипа — отделены от нуля. Подчеркиваемая автором «явность» конструкции Юстесена в равной мерс может быть отнесена и к конструкции Зяблова линейных каскадных кодов, если допустить несущественный перебор внутренних кодов, лежащих на гра- нице Варшамовз—Гилберта (см. Зяблов В. В. Оценка сложности построения двоичных линейных каскадных кодов. — Проблемы передачи информации. 1971, Вып. I, с. 5—13) — Прим. ред.
задачи 237 б. Используя метод декодирования Питерсона- Горснстейпа—Цирлсра (НГЦ), найти многочлены локаторов ошибок, локаторы и значения ошибок, если $1 = а*. 32 = 0, Ss = а8 и S4 — о?. L в. Решить задачу п. б, используя алгоритм Берлекэмпа—Месси. 7.4. В § 7 1 был получен порождающий многочлен (16, 6, 7)-кода БЧХ вад полем GF(4). Найти порождающий многочлен (15, 7, 7)-кода БЧХ над тем же полем. 7.5. Исправляющий двойные ошибки (15, 7)-код БЧХ имеет порождающий многочлен g (х) — «"Ч- + х®4- **+ 1- Комбинируя идеи декодера Мег- гитта и алгоритма ПГЦ, построить декодер, работающий по принципу декодера Меггитта, но использующий последовательность компонент синдрома S,, 32, Sg, в расширении поля, а вс сам синдромный многочлен з (х) 7.6. Найти порождающий многочлен (63, 55, 5)-кода над GF (8). 7.7. Предположим, что задан код Рида Соломона с минимальным расстоя- нием 2/ -J- 1 и что v — целое число, меньшее t. При декодировании требуется исправлять псе ошибки кратности до v включительно и обнаруживать ошибки с кратностями г пределах от v J- I до 2/ — V. Как это сделать, используя алго- ритм Берлекэмпа—Месси? Решить ту же задачу в случае кода БЧХ. 7.8. Показать, что каждый КОД БЧХ является подкодом над подполем не- которого кода Рида—Соломона с тем же конструктивным расстоянием. В каком случае скорость подхода над подполем будет такой же, как и у исходного кода Рида—Соломона? Найти в несистематическом (7, 5)-коде Рида—Соломона 16 информационных последовательностей, которые порождают кодовые слова (7, 4)- кода Хэмминга. 7.9. Найти порождающий многочлен для исправляющего двойные ошибки (23, 12)-кода БЧХ нал GF (2). (Заметим, что найденный код представляет собой код Голея; он является примером кода БЧХ, у которого минимальное расстояние больше конструктивного.) 7.10. По троичному каналу в каждый момент времени передается одни из трех символов: синусоидальный импульс с нулевой фазой, синусоидальный импульс с фазой 120° и синусоидальный импульс с фазой 240°. Обозначим мно- жество передаваемых символов через (0, 1, 2) и будем считать, что ошибки в ка- нале происходят случайно и с равными вероятностями. Построить исправляющий тройные ошибки код длины 80 для передачи по такому каналу, учитывая, что примитивный многочлен степени 4 вад GF (3) записывается в виде р (х) = х-Ч- х+ 2. Какова скорость полученного кода? Как использовать этот код для передачи блоков двоичных данных? 7.11. Память на магнитной ленте хранит байты из восьми битов как один 256-ичный символ. Построить в этом алфавите исправляющий одиночные ошибки (15, 13)-код над GF (256), а также схему декодера. 7.12. Многочлен i^+iM-l является примитивным многочленом иадС/7 (2). Примитивный влемент а = у с минимальным многочленом g®4- 1 исполь- зуется для построения исправляющего двойные ошибки кода БЧХ длины 2™ = 1 048 576. а. По пришлому слову вычислены компоненты синдрома Si= И. Ss='/'Н-Р®-! У6. Найти остальные компоненты синдрома б. Найти многочлен локаторов ошибок. в. Найти позиции ошибок или ошибки 7.13. а. Найти порождающий многочлен g (х) двоичного кода ЬЧХ длины п — 15 с d = 7. При построении использовать примитивный элемент a, je= 1 и неприводимый многочлен р (х) = х* + х + 1.
238 ГЛ. 7. КОДЫ ПО УЗА-ЧОУДХУРИ—ХОКВИНГЕМА б. Пусть при использовании кода из п а по принятий последователь- ности v вычислены компоненты синдрома Sj = v (а) -= а 4- а®, S8 - v (а8) — а®, SB - v (а®) — 1. (1) Найти SE, S4 и Se. (ii) Найти число ошибок v, если известно, что v 3. (iii) Найти многочлен локаторов ошибок. (iv) Найти вектор ошибок. ЗАМЕЧАНИЯ Коды БЧХ независимо открыли Хоквингем [1959] и Боуз и Рой-Чоудхури [1960]. Вскоре Горенстейн и Цирлср [1961] установили, что открытые ранее Ридом и Соломоном [19601 коды являются частным случаем недвоичных кодов БЧХ. Поведение минимального расстояния и скорости кодов БЧХ большой длины исследовалось многими авторами на протяжении большого промежутка времени. Коды БЧХ длины — 1 становятся неудовлетворительными, когда эта длина оказывается много больше q Для умеренных длин кодов так происходит потому, что в случае двоичных кодов на каждую исправляемую ошибку приходится по- рядка т проверочных символов, а в случае кода с q =f= 2 — порядка 2т прове- рочных символов. Асимптотическое поведение таких кодов несколько лучше, хотя все еще остается неудовлетворительным. Точное изложение этих вопросов потребовало бы значительных усилий. Касами и Токура [19691 открыли бесконечный подкласс примвтивных ко- дов БЧХ, для которых граница БЧХ строго меньше истинного минимвльного расстояния, первым примером такого кода был (127,43)-код БЧХ с 4=29 и d* = 31. Чинь [1970] придумал примеры циклических кодов, которые лучше кодов БЧХ; одним из таких примеров является циклический (63, 28, 15)-код. Впервые процедура исправления ошибок для двоичных кодов БЧХ была предложена Питерсоном [I960], а для кодов БЧХ с произвольным алфавитом — Горенстейном и Цирлером [1961]. Чень [1964] и Форни [19651 упростили эту процедуру. Итеративный алгоритм нахождения многочлена локаторов ошибок был предложен Берлекэмпом [1968]. Месси [1969] представил этот алгоритм в виде процедуры построения авторегрессионных фальтров. Бартон [1971 ] показал, как осуществлть алгоритм Берлекэмпа—Месси, не используя деления, хотя для вычисления значений ошибок деление все равно необходимо. Сугияма, Касахара, Хирасава и Намекава [19751 впервые предложили использовать при декодировании алгоритм Евклида. Велч и Шольц [1979] по- строили использующий разложение в непрерывную дробь декодер, совершенно эквивалентный декодеру, использующему алгоритм Евклида. Другой способ использования алгоритма Евклида при декодировании был предложен Ман- дельбаумом [1977] и будет рассмотрен в § 9.1
ГЛАВА 8 КОДЫ, ОСНОВАННЫЕ НА СПЕКТРАЛЬНЫХ МЕТОДАХ Обработка дискретных сигналов основывается на применении преобразования Фурье. Исследование сигналов с непрерывным временем, принимающих вещественные и комплексные значения, существенно связано с преобразованием Фурье; в случае сигналов с дискретным временем аналогичную роль играет дискретное пре- образование Фурье. Для многих значений п существуют также преобразования Фурье на векторном пространстве последова- тельностей длины п над полем Галуа GF (<?). Преобразования Фурье в поле Галуа могут играть важную роль в исследовании и обработке GF (^)-значных сигналов, т. е. кодовых слов. Осно- вываясь на преобразовании Фурье, можно построить теорию кодирования существенно отличным от использовавшегося ранее способом. Циклические коды можно определить как коды, в кото- рых некоторые спектральные компоненты слов равны нулю. Декодирование кодов БЧХ и кодов Рида —Соломона также может быть описано на спектральном языке. В данной и в последующих главах коды и алгоритмы изучаются с частотной точки зрения. Пересматривая многие положения с ча- стотной точки зрения, мы можем углубить наше понимание пред- мета и найти альтернативные методы кодирования и декодиро- вания. Частотный подход мы используем также для введения некоторых дополнительных классов кодов. 8.1. ПРЕОБРАЗОВАНИЯ ФУРЬЕ В ПОЛЕ ГАЛУА В поле комплексных чисел дискретное преобразование Фурье вектора р — {р£, i = 0, .... N — Ц с комплексными компонен- тами определяется как вектор Р \Phi k = G......A^ — Ц, задаваемый равенствами JV-I /,.-£ t , 0....N 1,
240 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ где / = V—I . Ядро преобразования Фурье exp ( -2n/W-’) равно корню степени N из единицы в поле комплексных чисел. В конечном поле GF (if) элемент а порядка п равен корню сте- пени п из единицы. Проводя аналогию между_ехр (—2ji/AH) и а, получаем следующее определение. Определение 8.1.1. Пусть v = {vj, i — 0... п — 1| — век- тор над GF (<?), где п делит д’” — I при некотором т, и пусть а — элемент порядка п в поле GF (if). Преобразование Фурье в поле Галуа вектора v определяется как вектор V = {Уу, / — О, ...» п — — I}, задаваемый равенствами п— I V.= £a4 / = 0, .... л-1. 1=0 Дискретный индекс i естественно назвать временем, a v — временной функцией или сигналом. Аналогично индекс j можно назвать частотой, а V — частотной функцией или спектром. В качестве длины преобразования Фурье можно выбрать произ- вольный делитель числа cf — [, но наиболее важную роль играют примитивные длины п — f — 1. В последнем случае а является примитивным элементом поля GF (if). В отличие от поля ком- плексных чисел в поле Галуа преобразование Фурье существует не для любой длины п, так как не для любого п в поле существует элемент этого порядка. Для многих целей, однако, таких элемен- тов оказывается достаточно. Если т — наименьшее целое, такое, что п делит if — 1, то над полем GF (q) существует преобразование Фурье длины п и компоненты этого преобразования лежат в поле GF (if). К сожалению, для некоторых значений п преобразования, хотя они и существуют, лежат в столь большом расширении поля, что неприемлемы для данного практического применения. В случае дискретного преобразования Фурье преобразова- ние Р вещественнозначной временной функции р является ком- плексным. Аналогично если в случае преобразования в поле Галуа временная функция v принимает значения в поле GF (у), то ее спектр V лежит в расширении поля GF (qm). В применениях, связанных с контролем ошибок, все связанные с декодированием действия осуществляются на самом дело в большом поле GF (д’п), однако начинать мы должны с вектора па входе канала, т. е. в малом поле GF (q). Теорема 8.1.2. Над полем GF (q) характеристики р вектор и его спектр связаны соотношениями Vj — S a'iVi, v, -= (1/rt) S a l‘Vj, где п интерпретируется как число поля^ т. е. по модулю р.
в.1 ПРЕОБРАЗОВАНИЯ ФУРЬЕ В ПОЛЕ ГАЛУА 241 Доказательство. В любом поле х" - 1 = (х - 1) (х"-1 Н-х"-2 |--| л 4- 1). По определению элемента а элемент а.' при всех г является корнем многочлена в левой части. Следовательно, для всех г=/=0'по модулю п элемент аг является корнем последнего многочлена. Но это эквивалентно равенству У а'1 = 0, г =/= 0 (mod л); /=о если же г = 0 по модулю л, то и—I £ a'i = п (mod р), что всегда отлично от нуля, если л не кратно характеристике р. Комбинируя эти равенства, получаем £ a-*' XJ a*/»fc = У vh У а<*-0/ — (nraoip)vt. i~v е=-в k-С i=® Наконец, qm — I - pSI — 1 кратно n и поэтому л не кратно р. Следовательно, л 0 (mod р). Это доказывает теорему. □ Преобразование Фурье обладает многими сильными свой- ствами, которые переносятся на случай конечных полей. Примером является свойство свертки, доказываемое в приведенной ниже теореме. (Можно доказать и обратную теорему, поменяв местами временную и частотную области). Теорема 8.1.3 (теорема о свертке). Предположим, что «•I = figi. I - о____п 1. Тогда Е, = (Пл) S Eai-k»Gk, j = 0, ..., л — 1, *=о где двойные скобки означают, что индексы вычисляются в арифме- тике по модулю п Доказательство. Найдем преобразование Фурье вектора с компонентами et — figp Ej = Ё «‘ft (р/л) = /,—1 In—1 \ п— I = (1/«) £ Glt Е а‘‘ = (I/л) У GkFtil М). □ 4-С \i=0 / fc-0
242 гл. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Заметим также, что выбор / = 0 в формуле свертки Е/ ~ £ а“,,е‘ -(l/n) МF,(ik,,Gk приводит к формуле типа равенства Парсеваля: Ъ ftgi = 0/п) Теорема 8.1.4 (свойство сдвига). Если {vj -<-> {Vj} является парой преобразования Фурье, то парами преобразований Фурье являются также {cA»fJ <-* IVgh-dj} и l»((i-D)} ** {“%•}• Доказательство получается непосредственной подстановкой. □ Иногда вектор v задается многочленом v (х). С помощью пре- образования Фурье в поле Галуа многочлен » (х) - -}- - - - vLx 4- vu может быть преобразован в многочлен v (х> - Г^х"1 4- • - - 4- 4- Vo. который называется спектральным многочленом или ассоцииро- ванным с v (х) многочленом. Как устанавливает следующая тео- рема, свойства спектра тесно связаны с корнями многочленов. Теорема 8.1.5. (i) Элемент а' является корнем многочлена v (х) тогда и только тогда, когда f-я частотная компонента Vj равна нулю. (ii) Элемент а~‘ является корнем многочлена V (х) тогда и только тогда, когда i-я временная компонента равно нулю. Доказательство утверждения (I) очевидно, так как г (а/) = £ v^i = Vj. Утверждение (ii) доказывается тем же путем. □ Таким образом, если один говорит о корнях многочлена в ко- нечном поле, а другой — о равных нулю спектральных компо- нентах, то в действительности они говорят об одном п том же. хотя терминология и точки зрения различны: в нервом случае на первый план выдвигается разложение многочленов, во вто- ром — преобразование Фурье.
R.2. ОГРАНИЧЕНИЯ СОПРЯЖЕННОСТИ 248 8.2. ОГРАНИЧЕНИЯ СОПРЯЖЕННОСТИ И ИДЕМПОТЕНТЫ Преобразование Фурье длины п над GF (<у) принимает значения в расширении поля GF (дт). Если мы начнем с произвольного п-мерного вектора над GF (qm) и вычислим обратное преобразова- ние Фурье, то в общем случае не получим временного вектора над GF (д); возможны компоненты нз большего поля. Нам надо найти ограничения на спектр, которые бы гарантировали попада- ние компонент временного вектора в GF (д). Ограничения такого рода знакомы по полю комплексных чисел. Напомним, что в иоле комплексных чисел спектр Р (/) имеет вещественное обратное преобразование Фурье тогда и только тогда, когда Р* ( -/) = Р (Л- Следующая теорема описывает множество ограничений, которые называются ограничениями (или условиями) сопряженности и устанавливают аналогичное условие для конечного поля. Теорема 8.2.1. Пусть V есть п-мерный вектор с компонен- тами из GF (дт), где п делит qm — 1. Тогда обратное преобразо- вание Фурье v является вектором с компонентами из GF (д) тогда и только тогда, когда выполняются следующие равенства-. V’, = vmm. 1 = 0.....п 1. Доказательство. По определению Vj = Д aHot, j = 0.....п — 1. В иоле характеристики р для любого целого г справедливо равен- ство (а 4- Ъ)рг = с₽г Ьрг. Далее, если vt — элемент поля GF (у), то vf — v. при всех I. Следовательно, V/ — ( £ a4Vi) = £ = £ avtiv{ <= 4=0 / £-0 i-JJ Обратно, предположим, что V’ — для всех /. Тогда Е ах<м = Е а%£, 7=0.......п — 1. >=О £•—0 Пусть k -- gj. Так как д взаимно просто с п -дт — 1, то, когда / принимает все значения от 0 до л - - 1, число k также принимает все значения от 0 до л 1. Следовательно, Я = Е atkVi, k = 0, -.., п — 1, 1=0 <=0
244 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ и в силу однозначности преобразования Фурье о? = vi для всех I. Таким образом, vt являются корнями многочлена х® — х при всех I, и этими корнями исчерпывается все поле GF (0. □ Чтобы применить данную теорему, следующим образом ра- зобьем числа по mod я па подмножества, известные под названием классов сопряженных элементов: А, = I/. й.... где Ш] — наименьшее целое положительное число, удовлетворя- ющее равенству jq"'i — j (mod л). В силу конечности поля такое rrij всегда существует. Например, если q = 2 и п 7, то классы сопряженных элементов имеют вид Ло = |0|, Л1 = |1, 2, 4}, Аа =* |3. 6, 5}. Класс сопряженных элементов А; выделяет в спектре множе- ство частот. Назовем это множество частот хордой .Теорема 8.2.1 утверждает, что если временной сигнал принимает значения в поле GF (q), то значение спектра в одной из частот хорды определяет значения спектра при всех частотах этой хорды. В следующем параграфе мы воспользуемся этим, чтобы дать спектральное описание кодов. На рис. 8.1 приведены классы сопряженных элементов для некоторых малых полей в несколько измененных обозначениях. Для того чтобы подчеркнуть получающиеся симметрии, классы сопряженных элементов выписаны с использованием отрицатель - ных целых чисел. При желании на рис. 8.1 отрицательное целое число j можно заменить положительным целым я -J- /. Классы сопряженных элементов по модулю 21 включены в таблицу для напоминания того, что в качестве модуля можно выбирать любое целое число. Заметим, что если члены классов сопряженных эле- ментов по модулю 21 умножить на 3, то эти классы становятся классами сопряженных элементов по модулю 63. Определение 8.2.2. q-ичным следам элемента 0 поля GF (q”) называется сумма tr(₽)-"£₽< Согласно теореме 4.6 10, q-я степень «у-ичного следа элемента р равна f-ичиому следу элемента р, и, следовательно, /у-ичный след является элементом поля GF (q). Если класс сопряженных эле- ментов, которому принадлежит р, содержит т элементов, то tr (Р) равен сумме всех элементов этого класса сопряженных элементов. В противном случае число элементов в классе сопряженных делит т, и кратность, с которой каждый элемент входит в след.
6.2. ОГРАНИЧЕНИЯ СОПРЯЖЕННОСТИ 24В По мойулю 7 По мойулю 63 з; -И. -22. 19. -25. в. 26; ! о; -9. -18. 27{ । 1- 2,-3] -5, -10,-20, 23. -17, 29] -3, -6, -12. -24. 15, 30] 1. -2, -4. -8. -16. 31; 0} По мобулю 15 1. 2, 4, 8, 16. -31} — 3. 6, 12. 24, -15, -зо; {-1.-Х-4. 7; 5. 10. 20, -23, 17, -29] I °! 7. 14, 28. -7, -14. -28) { 1, 2. 4. -7' 9. 18, -27} { 3. 6. -3, -6} И, 22, -19, 25, -13. -26} { 5. -5; 21, -21} По мойулю 31 По мобулю 12.7 {-5,-10, 11. -9, 13} -21. -42. 43, 41, 45. -37. 53] {-3. -6,-12. 7. 14} -19, -38, 51. 25. -50, 27, 54} | — 1 —2 4. -8. 15] -13, -26, -52. 23, 46, -35. 57] 1 °! -И, -22, -44. 39, -49. 29, 58} | 1. 2. 4 8. -15) -9. -18. -36. 55. -17, -34, 59} : з, в. и. — 7, -14} -7. -14. -28. 56.. 15, 30. 60} { 5. 10. -11. 9. -13} -5, -10, -20. 40, 47. -33, 61} — -3. -6. -12. 24. -48, 31. 62; -1. -2, -4, -8, -16, -32, 63} 0} 1, 2, 4. 8. 16. .32. -63} По мойулю 2.1 3. 6. 12. 24, 48, -31, -62} 5, 10. 20. 40, -47. 33. -61} 1-3. -6, 9] 7. 14. 28. 56. -15, -30. -60} 1-1. -2. -4. - 8, 5. 10] 9, 18. 36. 55. 17.. 34, -59} ! °! И. 22. 44, 39, 49. -29. -58} ; 2, 4, 8. -5. -10] 13. 26. 52, 23, -46. 35. -57} 1 3. 6, —9] 19. 38. -51. 25, 50. -27. -54} ! 7. -7) 21. 42. -43, 41. -45, 37. Рис. 8.1. Классы сопряженных элементов. равна получающемуся частному. Из определения следа и теоремы 4.6.10 следует, что 1г (Р + Т) = tr (Р) -I- tr (у) и что все сопряженные элементы имеют один и тот же след.
246 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Теорема 8.2.3. Над GF (qm) q-ичный след принимает в каче- стве своего значения каждое из чисел поля GF (q) одинаково часто, а именно q"n~i раз. Доказательство. Пусть у — элемент поля GF (д), ар — эле- мент из GF (qm), след которого равен -у. Тогда р является корнем многочлена Степень этого многочлена равна у”'-1, и, следовательно, он имеет не более qm—1 корней. Но всего существует только q таких много- членов, и каждый из элементов поля GF (qm) является корнем одного из них. Это доказывает теорему. □ Одно из полезных свойств следа устанавливает следующая теорема. Теорема 8.2.4. Квадратное уравнение х* + х + а • О, где а — элемент поля GF (2"1), имеет корни в поле GF (2"') тогда и только тогда, когда двоичный след элемента а равен нулю. Доказательство. Пусть р — корень этого квадратного урав- нения. Вычисленный в точке р двоичный след соответствующего квадратичного трехчлена равен tr (р2 + р+«)== tr (0) - 0. По отношению к сложению след дистрибутивен, а следы элементов р и р8 являются одним и тем же элементом поля GF (2). Следова- тельно, tr (а) = 0. Обратно, каждое р является корнем многочлена х2 х -j- а для некоторого а, а именно для а, равного —(Р + Р5)- Всего имеется г"1—1 таких а, для которых след равен нулю, и этого в точности хватает, чтобы составить 2т| уравнений с двумя корнями каждое. Доказательство закончено. □ Предположим теперь, что мы выбрали хорду Ak н определили спектр (1, i&Ak. Согласно теореме 8.2.1, обратное преобразование Фурье для этого спектра является вектором над GF (д), который можно представить многочленом w (х). Так как в частотной области свертка ш2 (х) преобразуется в произведение Wj, то W] = Wj,
8.S. СПЕКТРАЛЬНОЕ ОПИСАНИЕ 247 и, следовательно, многочлен w (х) обладает следующим сиециаль- ным свойством: w1 (х) = w (х) (mod х" I). Произвольный многочлен ю (х), удовлетворяющий условию w2 (х) = w (х) (mod х" — 1), называется идемпотентом. Каждый идемпотент может быть получен следующим образом. Выберем несколько хорд и положим W, = 0, если / принадлежит одной из них, и IV j = 1 в противном случае. Обратное преобразо- вание Фурье дает во временной области многочлен, который является идемпотентом, и каждый идемпотент можно построить таким способом. Завершим этот параграф применением полученных результа- тов к циклическим кодам. Теорема 8.2.5. Каждый циклический код содержит в качестве кодового слова единственный многочлен w (х), такой, что много- член с (х) является кодовым словом тогда и только тогда, когда с (а) и/ (х) - с (х) (mod х" — 1). Многочлен w (х) является идемпотентом. Доказательство. Пусть g (х) — порождающий многочлен, и пусть [ 0, если g(af) = О, ' — 11, если g(af) =/= 0. Тогда w (х) является идемпонентом. Его корни совпадают с кор- нями g (х), и, следовательно, он является кодовым словом. Кроме того, Wfij = Gj для всех /, и поэтому и> (х) g (х) = g (х). Далее, многочлен с (х) является кодовым словом тогда и только тогда, когда для некоторого а (х) выполняется равенство с (х) — a (x)g(x), откуда следует, что с(х) и»(х) = о(х) w(x) g(x) = а(х) g(x) = с(х) (modx" — 1); это и доказывает теорему. 8.3. СПЕКТРАЛЬНОЕ ОПИСАНИЕ ЦИКЛИЧЕСКИХ кодов Каждое слово с (х) циклического кода задается многочленом сте- пени п — 1. В несистематическом виде оно может быть записано как с (х) - g (х) d (х), где d (х) - информационный многочлен
248 гл. В. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ степени k — 1. Во временной области это дает (циклическую) свертку: я—1 с< = X вш-лп^. k=0 Следовательно, в частотной области операция кодирования может быть записана в виде произведения ci = GiDj Любой удовлетворяющий этому равенству спектр задает в частот- ной области кодовое слово при условии, что во временной области все компоненты являются GF (0-значными. В силу произволь- ности информационного спектра единственная существенная роль компонент G] состоит в том, чтобы определить частоты, в которых стоят нулевые компоненты Cj спектра кодового слова. Таким образом, можно дать следующее альтернативное определение циклического кода. Циклическим кодом называется множество таких слов над GF (0, у которых все спектральные компоненты, принадлежащие заданному множеству так называемых провероч- ных частот jit ..., равны нулю. Хотя каждое слово циклического кода является вектором над GF (0, спектр кодового слова является вектором над GF (qm). Следовательно, циклический код может быть определен как мно- жество GF (0-значных обратных преобразований Фурье мно- жества всех спектральных векторов, компоненты которых в за- данном множестве частот равны нулю. Нельзя выбирать произ- вольный спектральный вектор, у которого стоят нули в заданном множестве частот; обратные преобразования некоторых из таких векторов могут иметь компоненты, не принадлежащие полю GF (0. Для того чтобы кодовое слово принадлежало полю GF (0, выбирать нужно только спектр, который удовлетворяет условиям сопряженности, приведенным в теореме 8.2.1. Коды БЧХ являются такими циклическими кодами, в которых проверочные частоты выбираются последовательно. Исправля- ющий t ошибок код БЧХ длиной п - qm — 1 определяется как множество всех кодовых слов над GF (0, спектр которых равен пулю в заданном блоке из 21 последовательных частот. Доказательство границы БЧХ в частотной области предста- вляется простым и интуитивно очевидным. Следует, пожалуй, привести это второе доказательство, чтобы выявить различие в подходах и методах. Теорема 8.3.1 (граница БЧХ). Пусто п делит qm—1 при некотором т. Единственным вектором «з GFn (0 веса не более (I - 1, имеющим d — 1 последовательных нулевых компонент спектра, является нулевой вектор.
8.9. СПЕКТРАЛЬНОЕ ОПИСАНИЕ 249 Доказательство. Обозначим через ......iv индексы v ненуле- вых компонент вектора с, v с d — 1. Определим в частотной области вектор, обратное преобразование Фурье которого содер- жит нулевые компоненты для всех частот I, для которых с, 0. Такой вектор может быть выбран многими способами. Один‘из возможных выборов основывается на многочлене локаторов Л (х): Л(х) = П(] — ла"**) = Avxv | AviJt*-1 ’ --- | Atx I A<>. fc=i Вектор Л представляет собой частотный спектр, разумное опре- деление которого сводится к тому, что его обратное преобразова- ние X = {Xf| равно нулю для каждого момента времени i, для которого Cf 0. Выписанное выше произведение во временной области равно нулю = 0 для i -= 0, .... п— 1); следова- тельно, в частотной области циклическая свертка равна нулю: Л * С = 0. Так как = 1 и Ак — 0 при k > d — 1, то свертка может быть записана в виде 4 1 С, = — S AxQjy—fc)). fe=i Но на блоке длины d — 1 вектор С равен нулю. Следовательно, по рекурсии вектор С всюду равен нулю, так что и с должен быть нулевым вектором. □ Если п — I] — 1 (или п делит q — 1), то код БЧХ является кодом Рида —Соломона; кодовое слово и его спектр лежат в одном и том же поле. Используя для вычисления спектральных компо- нент информационные символы, можно осуществлять кодирование непосредственно в частотной области. Каждый спектр, у которого 2/ последовательных компонент равны нулю, является кодовым словом. Кодирование осуществляется следующим образом. Какие- либо 2t последовательных частот (например, первые 21} выби- раются для обеспечения необходимого ограничения: символы в этих частотах полагаются равными нулю. Остальные п — 2t координат спектра заполняются информационными символами из GF (q). Тогда обратное преобразование Фурье дает (несистема- тическое) кодовое слово, как показано на рис. 8.2. Поскольку имеется п — 2t частот, в которых записываются информационные символы, то получается (п, п — 2/)-код Рида - Соломона. Для более общего случая кодов БЧХ кодирование является более сложным. Теперь мы имеем два поля: поле символов GF (q) и поле локаторов GF (qm), используемое для спектра. Опять 2t последовательных компонент спектра выбираются для того, чтобы
2Б0 СЛ. в- КОДЫ; СПЕКТРАЛЬНЫЕ [МЕТОДЫ 2t ровных нулю проверочных компонент Символы ноля GF(Q) т-7 м - ш~тт к информационных компонент п компонент Преобразование ф Символы поля GFiq} КоЗсесе слово Рис. 8.2. Кодирование кодом Рида—Соломона с помощью преобразования Фурье. в них записывались нули. Остальные компоненты представляют собой k информационных символов, которые должны выбираться из GF (дтУ такими способами, чтобы обратное преобразование Фурье принимало значение в GF (q). В качестве иллюстрации на рис. 8.3 приводится соответствующая процедура для двоич- ного кода длины 63. Каждая компонента спектра здесь задается как 6-битовое двоичное число, а вектор спектра представлен как список 63 6-битовых чисел. Кодовое слово также представлено списком 63 6-битовых двоичных чисел, но с тем ограничением, что в каждом 6-битовом числе только бит наименьшего порядка может быть отличен от нуля. Таким образом, в действительности кодовое слово является 63-битовым двоичным словом. Мы хотим задать спектральный вектор так, чтобы сигнальный вектор был двоичным кодовым словом подобного вида. Теорема 8.2.1 дает нам ограни- чения, необходимые для построения подходящего спектрального вектора. Хотя построение кода длины 63 можно выполнить сразу, мы предварительно рассмотрим более простой пример, а именно построим в частотной области (7,4) -код Хэмминга, используя теорему 8 2.1. Такое построение показано на рис. 8.4. В качестве проверочных частот выбраны компоненты и Сг, так что одиноч- ная ошибка может быть исправлена. Информация заключена в частотных компонентах Со и Са. Остальные частоты заполняются согласно ограничениям, даваемым теоремой: С{ = С| = С4 - О и С* = = С6. Согласно теореме 8.2.1, С- = Со, и, следова- тельно, Со может иметь только значения 0 или 1. Эквивалентное «битовое содержание» компоненты Со равно одному биту, а экви- валентное битовое содержание координаты С3 равно трем битам. Таким образом, для однозначного задания спектра надо ислоль-
В.З, СПЕКТРАЛЬНОЕ ОПИСАНИЕ 2Б1 Рис. 8.3. Ко.щрование кодом БЧХ с помощью преобразования Фурье. зовать четыре информационных бита кода Хэмминга. Эти инфор- мационные биты связаны с частотной, а не с временной областью. В общем случае числа по модулю п разбиваются на классы сопряженных элементов: Aj = I/, /?> №..ftf7-1!- Если спектральная компонента Cj задана, то каждая другая спектральная компонента, индекс которой принадлежит классу сопряженных с j элементов, является степенью Cj и, следова- тельно, не может выбираться произвольно. Далее, если мощность этого класса сопряженных элементов равна г, то С’Г=С„ т. е. С’г_* = 1.
2Б2 гл. В. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Кодовые слова в частотной области Кодовые слова во временной области Рис. 8.4. (7,4)-коч Хэмминга. Следовательно, мы не можем произвольно выбирать элемент из GF (qm) в качестве возможного значения для Cf. допустимы или только те элементы поля, порядок которых делит qr — 1, или нулевой элемент. Порядок каждого элемента поля GF (qm) делит qm — I; следовательно, qr — 1 делит qm — 1, и ясно, что мощность каждого класса сопряженных элементов делит т. Для описания кодера разобьем множество qm — 1 чисел на классы сопряженных элементов и выберем по одному числу из каждого класса в качестве представителя. Эти представители единственным образом определяют значимые символы. Для фор- мирования кода БЧХ в качестве проверочных частот выбираются 21 спектральных компонент, которые полагаются равными нулю. Остальные значимые символы являются информационными и могут принимать произвольные значения с учетом огра- ничений на порядок. Все остальные символы, индексы которых принадлежат тому же классу сопряженных элемен- тов, не являются свободными; они образуют связанные ча- стоты. На рис. 8 5 изображена ситуация для поля GF (64). В первый столбец вносятся компоненты свободных частот. Если выбрать С2, С3, Cit Сь и Се в качестве проверочных частот, то получится
8.3. СПЕКТРАЛЬНОЕ ОПИСАНИЕ 263 исправляющий три ошибки код БЧХ. Тогда Ci, С7, Св, С11г С(3, С15, Сп, С23, Сг7 и Са1 являются информационными символами. Св и С87 должны равняться или нулю, или элементу порядка 7 (так как С% — С8 и С’7 = Ся); эти элементы принадлежат под- полю GF (8). С21 должно равняться или нулю, или элементу порядка 3 (так как Clsi = С.л\, эти элементы принадлежат под- полю GF (4). Со должно быть или нулем, или элементом порядка 1; эти элементы образуют подполе GF (2). Все остальные элементы являются произвольными элементами поля GF (64). Для опре- деления этих символов требуется всего 45 битов информации. Таким образом, получается (63,45)-код БЧХ, исправляющий три ошибки. После выбора компоненты свободной частоты компоненты связанных частот определяются как ее соответствующие степени. Затем полный спектр преобразуется в кодовое слово. Формиру- емые таким образом 2а5 кодовых слов являются в точности теми же 295 кодовыми словами, которые получаются кодированием во временной области. Вплоть до момента, пока не понадобится выделение информации, декодеру не приходится заботиться о том, каким способом осуществлялось кодирование. Однако на послед- нем шаге, когда из исправленного кодового слова извлекается информация, декодеру необходимо знать, как эта информация была закодирована. Если кодирование осуществлялось в частот- ной области, то информационные символы должны вычисляться в частотной области. СеоСойные частоты Связанные частоты Битовое содержание (Со) 1 {С, сг сл св c.oC.i! б <6 17 С УЛ 4 АН С 6 !Сч 4 10 <- 20 4.40 4 17 4 34) 6 4- 14 4- 28 4- 56 4 49 4.351 б {С, с„с„) з 1 4- 22 4-44 С 25 4 50 С37. 6 * f. 1 ^2Ь 4?4| < 19 4 381 {С.5 4 зо 4<,о C st С 5| С39) о • Ся 4*421 9 446 4 29 (. 5В <-53 <-431 6 С 54 С45) 3 «См 4 62 4?б| С59 С 55 447} 6 Рис. 8.5. Структура спектра над полем CF (64).
264 ГЛ, 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ 8.4. РАСШИРЕННЫЕ КОДЫ РИДА - СОЛОМОНА К коду Рида—Соломона в общем случае можно добавить две дополнительные компоненты; мы будем всегда помещать одну из них в начале, а другую в конце кодового слова. Коды, получа- емые путем добавления одной или обеих дополнительных компо- нент, называются расширенными кодами Рида—Соломона. Каж- дый из добавленных символов может использоваться и как ин- формационный, и как проверочный, т. е. либо для увеличения скорости передачи, либо для увеличения минимального рассто- яния кода. Мы используем этот менее конкретный термин — расширенные коды Рида—Соломона, хотя эти же коды можно построить увеличением числа слов в кодах Рида—Соломона с ми- нимальным расстоянием d* или удлинением кодов Рида—Соло- мона с минимальным расстоянием d* — 2. В любом случае полу- чится один и тот же расширенный код Рида—Соломона. Надо определить два новых локатора и соответственно ввести некоторые новые обозначения. Если исходные компоненты нуме- руются элементами поля, то для одной новой компоненты можно использовать нулевой элемент поля, так что остается определить еще один дополнительный символ для другой. Обычно исполь- зуется символ оо ’). Если исходные компоненты нумеруются показателями степени примитивного элемента, то для обозначения нового локатора нельзя использовать нуль и необходимо ввести два новых символа. В качестве этих двух символов мы будем пользоваться знаками — и 4-. Таким образом, слово расширен- ного кода записывается в виде (с—• Со, Cl, С2,-, Св-Я_3, с+)> и п = -г 1. Вектор, получающийся исключением символов с_ и с+, будем называть внутренним. Мы будем изучать расширенные коды с помощью свойств преобразований Фурье внутренних векторов, дополняя их свойствами расширенного векторного пространства. Когда мы будем говорить о спектре кодового слева, то будем иметь в виду спектр внутреннего вектора. Сначала дадим определение расширенного циклического кода, а затем — в качестве частного случая — определение расширен- ного кода Рида—Соломона. Определение 8 А !< Расширенным циклическим (п, /?)-кодом над GF (у) называется линейный код длины п = qm 4- 1, каждое ') Для расширения ноля вещественных чисел общепринятым и удобным соглашением является использование символов 4 сю н —оо с доопределением на них арифметических операций Такое расширение не образует поля. То же самое можно сделать с полем Галуа, добавив символ оо и определив опе- рации равенствами с 4- со ~ оо. а со = со. Такое множество не является полем.
РАСШИРЕННЫЕ КОДЫ РНДА-СОЛОМОНА 2ВВ слово которого удовлетворяет следующим условиям: спектр (Со, Си ..., С„_ч) кодового слова (с_, с0, clt сп_а, с+) содержит нули в заданном множестве п — k — 2 позиций с индексами А» /п-л-s» а ДВе оставшиеся спектральные компоненты удо- влетворяют равенствам = с_ Cj^ t — с.[- Расширенный циклический код в общем случае не является циклическим Определение 8.4.2. Расширенным кодом Рида—Соломона на- зывается линейный код длины п ~ q -j- 1 над GF (q), спектр кодо- вых слов (с_, cD, ct, еп_8, с+) которого при любых целых /0 и t удовлетворяет следующим условиям: 1) Су = 0, / = /0 + 1, .... /0 +2Г-2; 2) С/о = с_; 3) С/.+И-1 С-н Число 2t + 1 называется конструктивным расстоянием рас- ширенного кода Рида—Соломона. Определение содержит огра- ничения, состоящие в том, что 2t — 2 соответствующих спектраль- ных компонент должны равняться нулю, а компоненты, окаймля- ющие эти 2^—2 компонент, должны равняться с_ и с+ соответственно. Эти две специальные частоты называются гранич- ными частотами. По сравнению с кодом Рида—Соломона, который получается удалением с_ и с+ и приравниванием нулю спектрвльных компо- нент С/с и С/н-а-ь расширенный код Рида -Соломона всегда содержит два дополнительных информационных символа при неизменном минимальном расстоянии. Впоследствии мы выясним, что это означает в частотной области, а сначала приведем основан- ное на свойствах матрицы Вандермонда доказательство этого факта. Теорема 8.4.3. Расширенный код Рида- Соломона над GF (q) является (q -j- 1, k)-кодом с минимальным расстоянием 2t -|- 1 = п — k 1 ’ q — k -]- 2. Доказательство. Сначала предположим для простоты, что /о — 0. Проверочная матрица кода равна 0 0 н = а а2 1 а2 а1 1 а’- а«7-2)2 0 " о 0 1 а?-1 а(<7-1)2 о о а?-Л+1 0
266 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Если любые d — 1 столбцов этой проверочной матрицы линейно независимы, то минимальное расстояние кода равно по меньшей мере d. После исключения первого и последнего столбцов любое множество из q — k 4- ] столбцов образует матрицу Вандермонда, которая невырождена, и, следовательно, любые d — I внутрен- них столбцов линейно независимы. В случае же когда выбранное множество из q — k 4- 1 столбцов содержит первый и последний столбцы, соответствующий определитель можно вычислить, раз- лагая его по элементам сначала первого, а потом последнего столбцов. Это приведет к выбрасыванию сначала первой, а потом последней строки, и оставшаяся часть снова приводит к матрице Вандермонда, определитель которой отличен от нуля. Следова- тельно, любые q — k -J- 1 столбцов линейно независимы, и по- этому минимальное расстояние кода равно по меньшей мере q — k 4-2. Далее, если /0 =/= 0, то изменения в проверочной матрице при неизменных первом и последнем столбцах состоят в том, что все ее элементы умножаются на а/». Это, однако, никак не влияет на проведенные выше рассуждения. □ На рис. 8.6 изображен кодер в частотной области для рас- ширенного кода Рида Соломона. Мы сможем лучше попять эти коды, если будем представлять их кодер как модификацию кодера в частотной области для обычного кода Рида -Соломона с мини- мальным расстоянием d*. Последний кодер определяется блоком
8.4. РАСШИРЕННЫЕ КОДЫ РИДА-СОЛОМОНА 2Б7 из d* — 1 последовательных частот, в которых стоят нулевые компоненты спектра. Остальные компоненты спектра принимают произвольные значения информационных символов из GF (//). Для расширения этого кода за счет увеличения числа информа- ционных символов используются две граничные частоты спектра в блоке проверочных частот спектра, которым придаются произ- вольные значения двух информационных символов, причем во временной области кодовое слово тоже дополняется этими двумя символами. В результате получается расширенный код Рида — Соломона с тем же минимальным расстоянием d*, но с двумя дополнительными информационными симво- лами. Если же мы хотим расширить исходный код так, чтобы увели- чить его минимальное расстояние, то два дополнительных символа, присоединяемых к блоку проверочных частот, объявляются но- выми проверочными частотами. Значения компонент этих частот не меняются, но во временной области те же два символа допи- сываются к кодовому слову. Это приводит к коду с таким же числом информационных символов, как и у исходного кода, но с минимальным расстоянием d* 2. Конечно, мы получим тот же самый расширенный код, если будем исходить из кода Рида— Соломона с минимальным расстоянием d* 2 и увеличивать в нем число информационных символов. Кодер расширенного (п, k}-кода Рида—Соломона во временной области показан на рис. 8.7. В этом случае расширение рассматри- вается как удлинение (п — 2, А)-кода Рида—Соломона с мини- мальным расстоянием d* — 2 до кода с расстоянием d*. Для кодирования ft информационных символов внутреннего вектора кодового слова используется порождающий многочлен с корнями ВвоО /с информационных символов Рис. 8.7. Систематический кодер для расширелного кода Рида—Соломона. 9 р. Елейху»
268 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ а2, ..., а2*-1. Граничные символы определяются при этом соот- ветственно равенствами с_ — £ с ft! и с+ = c£a2Zi и присоединяются к внутреннему вектору для формирования кодового слова. 8.5. РАСШИРЕННЫЕ КОДЫ БЧХ Теперь рассмотрим коды с канальным алфавитом GF (q), для построения которых используется поле локаторов GF (q"‘). Ис- пользуя конструкцию подкода над подполем, можно из расши- ренного кода Рида—Соломона над GF (qm) построить расширение кода Рида Соломона над меныним подполем GF (q). В силу ограничений на подполе GF (q) иногда дополнительные компо- ненты расширения нельзя использовать в качестве информацион- ных. А именно они, могут содержать только одни и те же значения символов для всех кодовых слов и, следовательно, вообще могут быть выкинуты. В данном параграфе рассматривается несколько иной подход к построению кода над GF (q) из расширения кода над GF (q'"). Этот подход состоит в том, чтобы выбирать из расширения кода Рида—Соломона только те слова, у которых qm — 1 компонент внутреннего вектора принимают значения из подполя GF (q). Для двух символов расширения допускаются произвольные зна- чения из поля GF (if”), но в кодовом слове они записываются в виде начального и конечного «хвостов», содержащих т GF(q)-wi- ных символов каждый. Как мы увидим, такое кодирование не требует особого труда, но допускает декодирование с помощью преобразований и при- водит ко многим хорошим кодам. Мы назовем эти коды расширен- ными кодами БЧХ. Для получения из расширенного кода БЧХ исходного кода достаточно выбрать те кодовые слова, хвосты которых равны нулю. Вектор С размерности qm — 1 над GF (qm) задает допустимый спектр для внутреннего вектора GF (<?)-зпачного кодового слова, если он удовлетворяет условиям сопряженности = С«»л)- При построении расширенного кода БЧХ с конструктив- ным расстоянием d мы поступим так же, как и при по- строении расширенного кода Рида—Соломона. Выберем в ка-
8.5 РАСШИРЕННЫЕ КОДЫ 6ЧХ 269 честве проверочных d — 1 смежных частот, начиная с /0, и поло- жим с,. = Ci - о, / = /, + 1, .... /, + d — 3. = с., где с_ и с+ - произвольные элементы поля GF (qm), не наруша- ющие ограничения сопряженности. Остальные спектральные координаты выбираются произвольно, но удовлетворяют этим ограничениям. Тогда внутренний вектор кодового слова получается обратным преобразованием Фурье этого спектра. Внутреннему вектору в кодовом слове предшествует хвост, со- стоящий не более чем из tn GF (0-ичных символов и представля- ющий с_, а за внутренним вектором следует аналогичный хвост, представляющий с+. Ограничения сопряженности на или С/,+а-2 могут привести к тому, что порядок элементов с_ или с+ будет меньше, чем <7™ — 1, так что г_ или с+ будут записываться числом GF (^)-ичных символов, меньшим т. В этом случае длина хвоста будет делителем т. При рассмотрении кодов БЧХ мы обычно полагали — 1, что, как правило, приводило к лучшим кодам В данном параграфе мы увидим, что, как правило, выбор /0 = 0 или —1 приводит к хорошим расширенным кодам БЧХ, хотя другой выбор /0 иногда будет давать некоторое улучшение. Сначала будем считать /0 — 0 и d нечетным (d = 2/ 1). На рис. 8.8 приведены все расширенные коды, получающиеся из примитивного кода БЧХ длины п < 255. Проверочными часто- тами расширенного кода БЧХ являются Со, хотя в приводимых для сравнения примитивных кодах БЧХ провероч- ными частотами являются С,......Сц. В качестве примера по- строим некоторые коды длины п = 63, используя приведенные на рис. 8.1 классы сопряженных элементов. Так как Со = Со, то этот элемент должен равняться пулю или единице, так что с_ является двоичным символом. С2(_, (а следовательно, и с+) является произвольным символом поля GF (64), за исключением случаев 2t - 1 -- 9 и 2t - 1 = 21, когда / = 9, 18, 36, 27, 54, 45 и / = 42, а с+ содержит три и два бита информации соот- ветственно. Далее, 2t - 1 должно являться наименьшим целым числом в своем классе сопряженных Эгтементов, так как в противном случае соответствующая компонента спектра равна нулю и, следовательно, С21_! также должна равняться нулю. Пусть t — 4. Тогда 2t — 1 = 7 и Со, С,, .... С» являются проверочными частотами, причем Со — с_ — произвольный эле- мент из GF (2), а С, = с+ — произвольный элемент из GF (64). Далее, Св соответствует одному проверочному биту, а каждая из 8*
260 ГЛ. «. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ ‘'baSKSSS 33 ~s II ggggS&gg S.g h as S sgsg^SS s's S •®.=s^ s 7 h eS?;s = h ШйЯй^ШЁа? ё£8В £ и HJiJs?«8ijy ig Р sh Й sgsaSsSSssEsss gggggggggaaaas «*>= «aaassss sfss ~ ig Is S§=Sfass SSb s h i1 s^gggsg §S£ i fc III F BSSaSSs ?JS s.s gggg-ggs ggg gg J .«*1<'л-д*>йа?5якка J "‘"'-® = ^2Е^ЯЯЯКЯ Рис. 8.8. Таблица pai
Л.5. РАСШИРЕННЫЕ КОДЫ БЧХ 261 частот С,, Ся, Сй и С7 соответствует шести проверочным битам. Следовательно, п = 63 I + 6, и мы получаем (70,45)- код с минимальным расстоянием, равным но меньшей мерс 9. Пусть t - 8. Тогда 2/1 = 15 и проверочными частотами являются Со, С|....С1Й, причем Со - с_ — произвольный эле- мент поля GF (2), а С1Й с+ произвольный элемент ноля GF (64). Далее, Со соответствует одному проверочному биту, каждая из проверочных частот С1э Са, С{„ С7, Си, С13 и С15 соот- ветствует шести проверочным битам, а Св соответствует трем проверочным битам. Следовательно, получаем (70,24)- код, минимальное расстояние которого равно по меньшей мере 17. Второй пример иллюстрирует случай, koi да конструктивное расстояние расширенного кода БЧХ меньше минимального рас- стояния исходного кода БЧХ. На рис. 8.8 имеется несколько таких случаев, и это происходит всегда, когда код БЧХ с кон- структивным расстоянием d совпадает с кодом БЧХ с конструк- тивным расстоянием d 4- 2 Положим теперь /0 -- —1. При таком выборе /0 и с+=/=0 минимальное расстояние кода четно, так как правая проверочная частота должна иметь нечетный индекс Чтобы сделать минималь- ное расстояние нечетным, добавим проверку на четность для битов одного из хвостов. Дополнительный проверочный символ позволит декодеру обнаружить ошибку в таком хвосте. Этого достаточно, чтобы увеличить на единицу минимальное расстояние кода. Мы не будем здесь доказывать этот факт, а отложим его доказатель- ство до § 9.3, где будет описана процедура декодирования d/2 ошибок. Существование такого декодера является доказательством возможности увеличения на единицу минимального расстоя- ния Все расширенные коды с /0 =- —1, получающиеся из примитив- ных кодов БЧХ длины п < 255, приведены на рис. 8.9. Были рассмотрены также другие значения для /0, но в диапазоне п с 500 при d с 29 не было найдено других интересных случаев. Единственным исключением является GF (64). При /0 = —9 можно построить (70, 20, 21)-код, который является расшире- нием кода БЧХ и лучше всех известных кодов с такими же п и k. На рис. 8.10 изображен кодер для расширенного (n, k, ф-кода БЧХ. В этом кодере используется порождающий многочлен (я', k, d — 2)-кода БЧХ, корни которого расположены в точках а/»*', ..., В хвост кодового слова дописываются зна- чения спектра в граничных частотах. В случае необходимости к одному из хвостов можно дописать его проверку на чет- ность.
262 ГЛ. 8. КОДЫ; СПЕКТРА. МЕТОДЫ ЗЯКЗЯЯЯЙ 1 ssggrsss E?g 8 f^’SSS “S s ==Sg==S Sa s SERR Й 2S3S^8S^S82 I ran h sjsgSssggsgS® бЙЁбЁВББЙёЁВ 8 ss— = г Is §gsa=£Sggggs§s II Л S55 5 S ggffigggggggggg 7 22 F!₽:gs I 1 22 b a?SfifSSs RSSS gggg 1 а -- ~ h SsSasss ?Ss S3 I - = = S «*-behSBaE.a-si|£3RR EE§Eggg gEg gg E- s £
8.в. АЛЬТЕРНА НТНЫЕ КОДЫ 263 кодовое слово из п битов Рис. 8-10- Систематический кодер для расширенного кола БЧХ. 8.6. АЛЫЕРНАНТНЫЕ КОДЫ Код БЧХ длины п — i]m — I над GF (у) представляет собой огра- ничение на подполе GF (у) кода Рида- Соломона над полем GF (ут). Иными словами, код БЧХ состоит из всех СГ(?)<значпых слов кода Рида—Соломона. Поэтому минимальное расстояние кода БЧХ по меньшей мере равно минимальному расстоянию исход- ного кода Рида—Соломона. К^сожалению, коды БЧХ большой длины с большим минимальным расстоянием не содержат нужного нам числа кодовых слов. Точнее говоря, в любой последователь- ности кодов БЧХ растущей длины с ограниченной скоростью (все коды последовательности удовлетворяют условию kin » R' для некоторого фиксированного /?') нормированное минимальное расстояние d*/n стремится к нулю с ростом п. Исходный код
2б4 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Рида—Соломона содержит достаточно кодовых слов, но его огра- ничение па подполе либо содержит мало кодовых слов, либо характеризуется плохой дистанционной структурой. В данном параграфе рассматриваются иные пути увеличения минимального расстояния при другом способе ограничения кода Рида—Соломона на подпале. Альтернантные коды представляют собой класс линейных кодов, которые строятся из кодов БЧХ таким образом, чтобы при фиксированной скорости получить (хотя бы в принципе) большее минимальное расстояние. Пусть п = qm — 1. Выберем и зафикси- руем над GF(qm) n-мерный вектор h с ненулевыми компонентами и назовем его шаблоном (во временной области). Выберем также код Рида—Соломона над GF (qm) с конструктивным расстоянием 2/4-1. Альтернативный код состоит из всех CF (ф)-значных векторов с, таких, что вектор с компонентами ci — hiCi, i = 0, ...» п — 1, является словом кода Рида—Соломона. Чтобы определить этот же код иначе, допустим, что все й,- отличны от нуля, и положим gi -- Щ1. Для каждого кодового слова с' кода Рида—Соломона образуем вектор с компонентами ci — giC'i, i = 0. л — 1- Если вектор с является ОГ(0-знач- ным, то он принадлежит альтернантному коду. Альтернантный код определяется как множество всех бР(0-значных слов, кото- рые могут быть получены таким способом Обычно выбирается шаблон h, все компоненты которого от- личны от нуля; но если какие-то компоненты шаблона равны нулю, то и кодовое слово содержит нуль в этих компонентах. Нулевые компоненты кодового слова не содержат никакой ин- формации и просто не передаются Если алгоритм декодирования основан на полном слове, то в случае необходимости декодер может восстановить эти пропущенные нулевые компоненты. При надлежащем выборе шаблона альтернантные коды обла- дают очень большим истинным минимальным расстоянием; при больших длинах они по существу так же хороши, как и любые известные хорошие коды. К сожалению, для больших п не изве- стны правила выбора хороших шаблонов, хотя, как будет показано в следующем параграфе, хороших шаблонов достаточно много. Определение альтернантных кодов легко переносится в частот- ную область. Предположим, что все компоненты вектора h отличны от нуля. Обозначим через Н преобразование вектора h и назовем его шаблоном е частотной области Поскольку hjCt при i = — О, .... и— 1 являются компонентами слова кода Рида—Соло- мона, то циклическая свертка Н*С дает спектр слова кода Рида—Соломона. Таким образом, = 0» j = jo» • • •• jo [ 2/ — 1.
8.6. АЛЬТЕРНАНТНЫЕ КОДЫ 266 Так как все компоненты h отличны от нуля, то вектор Н обратим, т. е. существует вектор G (преобразование вектора \g( = hl', i — 0....п — 1}), такой, что Н «G представляет собой дельта- функцию. (Если / = 0, то (H*G)j= 1; в противном случае (H.G), =0.) Через многочлены эта свертка записывается так: Н (х) G (х) = 1 (mod х" — 1). Если 11 (х)— многочлен над малым полем GF (ц), то и G (х) — многочлен над этим же полем. Для примитивных п это доказы- вается следующим образом. Многочлен Н (х) не имеет корней в поле GF (</т), так как Н (а~‘) = nhi=£ 0. Следовательно, Н (х) взаимно прост с хп — I = x’m_1 — 1, и, согласно алгоритму Евклида, над GF (</) существуют такие G (х) и F (х), что Н (х) G (х) + (х” — 1) F (х) = 1. Следователь но, Н (х) G (х) = 1 (mod х» — 1). Альтернантные коды в частотной области можно определить следующим образом. Определение 8.6.1. Пусть Н — фиксированный л-мерный век- тор в частотной области, и пусть /(| и t — фиксированные целые числа. Альтернантный код С (в частотной области) определяется как множество, содержащее каждый вектор с, преобразование С которого удовлетворяет следующим даум условиям: О Е »«м»с, = о. i-i,..........h+zt--i, и 2) Cf = C((<Sj). Первое из этих условий накладывает ограничение на свертку, которая в обычном определении во временной области задается в виде произведения многочленов; второе условие гарантирует GF (д)-значность кодового слова во временной области. Вектор с компонентами: Тj = Е / = 0,..., п — 1, *=о называется профильтрованным спектром. Из тесной взаимосвязи альтернантных кодов с кодами Рида— Соломона, очевидно, следует, что их минимальное расстояние не меньше конструктивного расстояния 2/ 1. Следующая тео- рема показывает, что их размерность также удовлетворяет усло- вию k п — 2tm.
266 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Теорема 8.6.2. Пусть G представляет собой линейный (п, К, Dy-код над GF (tf1), а в' является его ограничением на подполе GF (0 с параметрами (п, k, d). Тогда D*g.d«g.n и (п—К)<(п - k) т(п - - К). Доказательство. Нетривиальным является только последнее неравенство. Произвольное проверочное уравнение над GF (д”1), которому удовлетворяет код, приводит не более чем к т линейно независимым проверочным уравнениям над GF (0. Отсюда и вы- текает последнее неравенство. □ Следствие 8.6.3. Размерность k алыпернантного кода с кон- структивным расстоянием 2t -f- 1 удовлетворяет неравенству k> п — 2tm. Доказательство. Использовать теорему 8.6.2 и равенство п К -= 2t. □ В следующем параграфе мы покажем, что минимальное рассто- яние некоторых альтернантных кодов намного больше конструк- тивного расстояния, но приведенное там доказательство не яв- ляется конструктивным. Поучительно вывести границу БЧХ в частотной области для дистанционной структуры альтернантных кодов, наследуемой из кодов Рида—Соломона. Теорема 8.6.4. Если вектор с содержит не более d — 1 не- нулевых компонент и если профильтрованный спектр равен нулю в некоторых d — 1 последовательных компонентах (7\ = О, k = = k0, .... k0 + d — 2), mo Ci — 0 для всех i, где Т =Н *С, а Н — обратимый фильтр. Доказательство. Многочлен локаторов Л (л) был определен таким образом, что компоненты Лг его преобразования равны нулю, если Ct 0. Тогда — 0 и отсюда следует, что Л * С = = 0 Следовательно, Л* (Н *С) = Н * (Л * С) = 0. Но Л отличен от нуля только на блоке, длина которого не превышает d — 1, а Н » С равно нулю на блоке длины d— 1. Поэтому Н * С - 0, и, таким образом, С = 0. Следовательно, с — нуле- вой вектор. 8.7. ХАРАКТЕРИСТИКИ АЛЬТЕРНАНТНЫХ КОДОВ Привлекательность альтернантных кодов объясняется тем, что в этом классе имеются хорошие коды большой длины. Под этим подразумевается, что существует последовательность кодов воз- растающей длины, для которых скорость k/n и нормированное минимальное расстояние d*/n отделены от нуля при бесконечном
fc.f. ХАРАКТЕРИСТИКИ АЛЬТЕРНАНТНЫХ КОДОВ 2Й? бозрйстании п. Докажем это. Метод доказательства сводится к демонстрации того, что число слов малого веса над GF (</) не- велико и что каждое из них не может принадлежать слишком большому числу альтернантных кодов. А так как альтернантных кодов достаточно много, то какой-то из них не может содерж-ать слов малого веса. Следовательно, этот код должен обладать боль- шим минимальным расстоянием. В доказательстве теоремы не указываются значения пара- метров k и d* для кода, а только даются их нижние границы. Для удобства доказательства данной теоремы под (n, k, d)-кодом пони- мается код длины п, размерность которого не меньше k и мини- мальное расстояние которого не меньше d*. Теорема 8.7.1. Пусть п = цт — 1 для некоторых GF (у) и т, и пусть dur — некоторые целые числа, удовлетворяющие не- равенству Тогда существует алътернантный (п, п — mr, d)-Kod. Доказательство. Идея приводимого ниже доказательства со- стоит в подсчете числа альтернантных кодов некоторого опре- деленного вида и последующем нахождении доли тех кодов, которые содержат заданный вектор v веса / < d. Оказывается, что векторов такого веса меньше, чем кодов рассматриваемого вида, так что некоторые из этих кодов не содержат векторов v веса / <d. (i) Пусть G — код Рида—Соломона над GF (qm) с конструк- тивным расстоянием г -|- 1 и К = и — г информационными симво- лами, и пусть G (h) — альтернантный код над GF (ф, порожда- емый из G шаблоном h, где h — вектор над GF (ут), все компо- ненты которого отличны от нуля. Тогда е (h) = {с eoFn (0: he е с], где he— вектор с компонентами I - 0, п — 1]. По- скольку то всего существует (ут— 1)" таких кодов. Каждый из них представляет собой ограничение линейного кода fc £ GFn (^ni):hc £(?} на подполе GF (у), и, следовательно, согласно теореме 8.6.2, для каждого такого кода k п — тг (ii) Выберем над GF (у) вектор v веса / < d Всего имеется о' векторов веса / и S (") (<? -1)' векторов веса меньше d.
266 м. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ (iii) Так как любые п — г компонент кода Рида—Соломойа полностью определяют кодовый вектор, то вектор v веса / может принадлежать не более чем (^т — 1)"'г определенным в п. (i) альтернантным кодам. Действительно, при фиксированном v в векторе h можно независимо выбрать только п — г компонент так, чтобы вектор hv принадлежал G. (iv) Теперь скомбинируем п. (i), (ii) и (iii). Согласно (i), число альтернантных кодов равно (ут — 1)в. Максимальное число ко* дов, которые могут содержать вектор веса меньше d, равно (</т — 1)п-г у (»)(? — 1)Л Предположим, что /=| fo”-1)"ХГ-!)”-'§(")(« 1)'. Тогда некоторый код с числом информационных символов п — тг имеет минимальное расстояние не меньше d. Это эквивалентно утверждению теоремы. □ Отметим, что, как уже было указано в доказательстве теоремы, альтернантные коды образуют очень большой класс. Для произ- вольного k и примитивной длины кода число альтернантных (n, k) -кодов над СР (</) равно — 1)" = п”. Доказанная тео- рема только гласит, что некоторые из этих кодов хороши, но не указывает, как их найти. Пусть с/ равно 2. Тогда теорема 8.7.1 утверждает существование двоичных альтернантных кодов, удовлетворяющих условию ЁС)<2- Граница для левой части этого неравенства, но в противополож- ную сторону уже была получена в лемме 7.9.2. Ниже (в гл. 14) мы рассмотрим оценки биномиальных коэффициентов по фор- муле Стирлинга. Применяя оценку из теоремы 14.4.1, имеем где член о (1) стремится к нулю с ростом п. Если пренебречь этим членом, то доказанная теорема утверждает, что да я доста- точно больших п существуют двоичные коды со скоростью R и нормированным минимальным расстоянием din, удовлетворя- ющим условию — (d]n) log(d/n) — (1 — d/п) log (1 — d/п) < 1 — /?. Очень важно, что это неравенство связывает только величины R и din и что оно пмеет ненулевые решения. Следовательно, нами
«.в. коды ГОППЫ 260 получено сильное утверждение о существовании асимптотически хороших альтернантных кодов. Полученная форма границы эквивалентна границе, известной под названием границы Гилберта, которая была выведена на много лет раньше, чем были построены альтернантные коды. Гранина Гилберта утверждает существование хороших (в данном пони- мании) кодов, и, таким образом, альтернантные коды образуют класс кодов, реализующих это утверждение. Ситуация такова, что в настоящее время нет каких-либо определенных свидетельств существования двоичных кодов, асимптотически лучших, чем предписывает граница Гилберта. Следовательно, очень правдо- подобно, что асимптотически оптимальные коды принадлежат классу альтернантных кодов. Однако класс альтернантных кодов весьма обширен, и, чтобы реализовать приведенную в теореме 8.7.1 границу, необходимо разработать конструктивные методы выделения хороших кодов. Хотя, согласно указанной в теореме 8.7.1 границе, альтернантные коды лучше введенных в § 7.9 кодов Юстесена, тем не менее коды Юстесена задаются точной конструкцией, а как точно указать хороший альтернантный код большой длины, пока еще неизвестно. 8.8. КОДЫ ГОППЫ Коды Гопиы представляют собой частный подкласс альтернантных кодов, открытый раньше, чем класс альтернантных кодов, но все еще заслуживающий отдельного внимания. Определение 8.8.1. Кодом Гоппы с конструктивным рассто- янием d называется альтернантный код с конструктивным рассто- янием d, у которого обращение частотного шаблона G имеет ши- рину d. Иначе говоря, обращение частотного шаблона задается многочленом G (х) степени d—1, который называется много- членом Гоппы. Кодом Гоппы в узком смысле называется код Гоп- пы с 2t проверочными частотами с локаторами an"2w, а«-2'+2.а0. Теорема 8.8.2. Вектор с является кодовым для кода Гоппы с многочленом Гоппы G (х) тогда и только тогда, когда п— I Е с, [а'ЧП (а-<)] _ 0, / = О..........2t - 1. Доказательство вытекает непосредственно из теоремы о свертке. □ Теорема 8.8.3. Минимальное расстояние d* и размерность^ кода Гоппы с многочленом Гоппы степени 2t удовлетворяют не- равенствам d* > 2/ 1, А л — 2tm.
2?0 ГЛ, 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Доказательство вытекает непосредственно из следствия 8.6,3. □ Как следует из определения 8.8.1, длинами кодов Гоппы могут быть только те числа, которые являются делителями цт— 1. Однако все укорочения и удлинения кодов Гоппы также принято называть кодами Гоппы. Для построения кодов Гоппы с длинами, равными (f1 и if1 4- 1» можно использовать описанную в § 8.4 процедуру удлинения кода, согласно которой с каждой стороны кодового слова дописывается по одному «у-ичному символу. В прин- ципе можно строить и более длинные коды Гоппы, приписывая с каждой стороны кодового слова </т-ичные представления симво- лов так, как это делалось в § 8.5 при расширении кодов БЧХ. Будучи подклассом класса альтернантных кодов, класс кодов Гоппы сохраняет то свойство, что он содержит много кодов, мини- мальное расстояние которых много больше d х). Однако так же, как и в общем случае альтернантных кодов, мало что известно о построении хороших кодов Гоппы. Аналогично в случае общих кодов Гоппы не известны ни хорошие алгоритмы кодирования, ни хорошие алгоритмы декодирования, реализующие минималь- ное расстояние кода. Известные коды Гоппы интересны прежде всего тем, что позволяют дополнить код БЧХ в узком смысле </. = !) еще одним информационным символом, а другие коды расширить даже на большее число символов. Иначе говоря, изве- стные хорошие коды Гоппы хороши не в смысле описываемых теоремой 8.7.1 возможностей, а в некотором ином смысле. В частотной области коды Гоппы допускают описание с по- мощью изображенного на рис. 8.11 устройства с регистром сдвига. Вместо стандартного введения информации во временную область информация вводится в частотную область — или в спектр или в профильтрованный спектр, как показано на рис. 8.11, причем в обоих случаях необходимо обеспечить выполнение ограничений сопряженности. Какие-либо общие методы практической реализа- ции таких ограничений не известны, но для кодов умеренной мощности можно составить и решить систему алгебраических уравнений, описывающих эти ограничения. Ниже приводится пример такого решения. Содержащий информацию профильтро- ванный спектр пропускается через фильтр с конечным импульсным откликом, веса в отводах которого задаются многочленом Гоппы. Фильтр работает циклически: обращение ко входу является пери- *) Это утверждение, конечно, не следует из того, что коды Гоппы являются подклассом класса альтернантных кодов, а нуждается в отдельном доказатель- стве; такое доказательство можно найти, например, в статье: Голла В. Д. На неприводимых кодах достигается пропускная способность ДСК — Проблемы передачи информации, 1974, выл 1. с. III—] 12 и в монографии: Мак- Вильямс Ф. Дж., Сяоэн Н Дж Л. Теория кодов, исправляющих ошибки.— М : Связь, 1979, с. 111—112. — Прим, перся
8.8. КОДЫ ГОППЫ 27! Рис. 8.11. Частотный колер тля ко-;а Гоппы. одическим. После этого кодовое слово получается обратным пре- образованием Фурье спектра. Другое описание кодов Гоппы дается следующей теоремой. Теорема 8.8.4. Код Гоппы в узком смысле над GF (у) длины п — ут — 1, задаваемый многочленом Гоппы G (х), состоит из всех векторов с — (с0, .... Сп_д) над GF (0, удовлетворяющих условию п—I £ Ct П (х сН ) = 0(modG(x)). Доказательство. Перепишем условие теоремы в виде Я—I £ с, П (х — а-1') — А (х) G (х). I-О i'+l Так как степень многочлена G (х) равна 2t, а степень многочлена в левой части этого равенства не превосходит п— 1, то степень многочлена А (х) не превосходит п — 21—1. Таким образом, Aj — 0 при / = п — 2t, .... п — 1. Рассмотрим это неравенство в точке х — а-*': Cf П (аг£ ar1') = A (cr‘) G (а'*), » =#=» или Ci [(а-*)"*1 П (1 - = A (or1) G (аг*),
272 ГЛ. b. КОДЫ; СПЕКТРАЛЬНЫЕ Г МЕТОДЫ или с,а‘ П (1 — а*) = А (а-*) G(а~*). Определим теперь Т (х) = П (I — а*)-' хА (х) (mod хп — 1) так, что 7’(а') = П (1 — а*)-' [а~1А (а-1)) ь+о и Ci = Т (а-1) G (а-1). Наконец, заметим, что так как Aj = 0 при j = п — 2t.п — 1, то Т} = 0 по модулю п при t — п — 2t + 1, .... п, и, таким образом, условие теоремы эквивалентно условию, определяющему код Гоппы в узком смысле: С (х) — Т (х) G (х) (mod хп — 1), что и завершает доказательство теоремы» □ Описываемая теоремой 8.8.4 форма задания кода Гоппы до- пускает удлинение кода на один символ — до кода длины if1. Надо просто добавить одну компоненту, приписывая ей локатор, равный нулевому элементу поля. Таким образом мы получаем следующее альтернативное определение. Определение 8.8.5. Код Гоппы над GF (q) длины п = qm, задаваемый многочленом Гоппы G (х), является множеством всех векторов с = (с0, .... cn-1) над GF (</), удовлетворяющих условию У ct П (х — р,--) = 0 (mod G(x)), где р,- пробегает все элементы поля GF (^т). Вернемся теперь к частному случаю двоичных кодов Гоппы, ограничиваясь только случаем, когда многочлен Гоппы не имеет кратных корней ни в одном расширении. Такие коды Гоппы на- зываются сепарабельными. Как мы увидим, минимальное рассто- яние сепарабельных двоичных кодов Гоппы равнс 2г 4- 1, где г ~ степень многочлена Гоппы. Это намного лучше, чем граница для произвольных кодов Гоппы, согласно которой d* ^г 4-1. Ключом к доказательству*этого утверждения является следующая теорема, накладывающая ограничения на многочлен, взаимный
8.8 коды гоппы 273 к локаторному многочлену. Многочлен, взаимный к локаторному, определяется равенством Лс(х) = (х — рг), где Р, — локатор Z-й единицы в кодовом слове с, a v — число еди- ниц в кодовом слове. Теорема 8.8.6. Если определяющий двоичный код Гоппы в узком смысле многочлен Гоппы G (х) не. имеет корней в поле GF (2т), то вектор с является кодовым сливом тогда и только тогда, когда формальная производная Л.'е (х) многочлена, взаимного к локатор- ному, делится на G (х). Доказательство. Формальная производная многочлена, вза- имного к локаторному, равна л;(х)^£П(а р,.). •=( i' i-i Поскольку код является двоичным, то с, равны нулю или единице, так что это выражение для Л'с (х) следует из формулы, приведен- ной в теореме 8.8.4. □ Заметим, что в любом расширении поля GF (2) формальная производная произвольного многочлена является полным квадра- том, так как нечетные степени в ней пропадают. Предположим, что имеется сепарабельный код Гоппы с многочленом G (х). Тогда не только G (х) делит (х), но и G2 (х) должен делить Л'с (х), так как (х) является полным квадратом. В самом деле, мы получим тот же самый код, если в качестве многочлена Гоппы выберем G (х) = G2 (х) вместо G (х). Но степень этого многочлена равна 2г, и, таким образом, d* 5s 2г -f- 1- Хотя минимальное расстояние сепарабельного кода Гоппы не меньше 2г +1, определение 8.8.1 вводит только г, а не 2г синдромов, и обычные методы декодирования непосредственно не применимы. Для данного случая можно было бы предложить специальный вариант алгоритма декодирования, использующего только г синдромов. Вместо этого мы модифицируем описание кода так, чтобы были непосредственно пригодны описанные в гл .7 и 9 алгоритмы декодирования. Это можно сделать, не меняя са- мого кода, а только описывая его другим образом: вместо G (х) в качестве многочлена Гоппы надо выбрать G2 (х). Получится тот же самый код, но границы для характеристик преобразуются к следующему виду: d* г + 1 = 2г -Ь 1
274 ГЛ- 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ И k п — tnf/2 ~ п — тг, где г — степень многочлена G1 (к). Теперь для того же кода и тех же характеристик мы имеем 2г проверочных частот, и можно непосредственно использовать все известные алгоритмы декоди- рования. Наименьшим кодом Гоппы является двоичный (8, 2, 5)-код Гоппы. Выберем G (х) = х2 -|- х 4- 1. Корни этого многочлена различны и лежат в GF (4) или в некотором расширении GF (4) и, следовательно, не могут лежать в GF (8). Таким образом, G (х) может быть выбран для построения кода Гоппы длины 8 по мень- шей мере с двумя информационными символами и с минимальным расстоянием, равным но меньшей мере 5. Ниже мы увидим, что число информационных символов равно в точности двум. Для описания этого кода сначала воспользуемся определением 8.8.1, а затем дадим его описание в частотной области, основанное на теореме 8.8.2. Так как Н (х) G (х) 4- х (х7 — 1)1 и G (х) - х2 4- х 4- 1, то II (х) = х" -f- х5 + х3 -f- х3 -|- 1. Далее, G (х) х4 4-х5_4- 1 и И (х) = х5 4-х5 4-х4 4- х8 4- 1. Многочлены Н (х) и Я(х) можно вычислить по многочленам G (х) и G (х) при помощи алго- ритма Евклида. Проверочными частотами являются а-*, а-2, а.-1 и а®, и выпол- няются равенства То — с+> = 0, Т_й = 0 и Т_3 — 0. Вместе с уравнением F k — X это дает с+ — Со 4~ Ci 4- Cs “Ь Са 4~ С4, о = Сс 4- Со + Ct 4~ Ct 4~ Сд, 0 — С$ 4- Со 4- Со 4- С, 4- Сг, 0 = Ct 4- С$ 4- Со 4- Со 4- Ci. Кроме того, имеются ограничения сопряженности Cj = C(itJn- Любой спектр, удовлетворяющий этим проверочным уравнениям и ограничениям сопряженности, является спектром кодового слова. Воспользуемся ограничениями сопряженности для того, чтобы исключить С2, С4, Со и Св: с+ =- Со 4~ {Ci 4~ С^ 4* С,) 4~ Сд, 0 “ С„ 4~ (Ci 4- W 4" [Сд 4- Сд)» О = Со 4- (^1 4- С2) 4- (Сз 4- Сд)» О = Со 4~ (Cj 4- С|) 4- (Сз 4~ CQ.
8.8. КОДЫ roriftbi 2У6 Информационные биты 1°1 III I II 7-точечное прссСрагоесньг- Фурье Рмс. 8.12. Кодер для (8, 2, 5)-кода Гоппы. Если положить Со = О, в качестве Ci и Са выбрать произвольные элементы поля GF (2). а символ удлинения с+ взять равным сумме Ci и С9, то все уравнения будут удовлетворяться. Таким образом, имеются в точности два информационных символа. Кодер для такого кода в частотной области показан на рис. 8.12. Согласно теореме 8.8.2, тот же самый код можно получить кодированием во временной области. Проверочная матрица Н кода задается элементами a'i/G (а_‘)> так что где первый столбец дописан для построения расширенного (8.2)-кода. Заменяя каждый элемент поля его 3-битовым пред- ставлением, получаем "1 1 0 0 00 0 0" 0 0 0 1 0 1 1 1 00111001 0 1111111 0 0 10 1 10 1 .0 0 0 1 1 1 1 0_ Так как строки этой матрицы линейно независимы то она задает (8,2)-код. Более сложный пример двоичного кода Гоппы получается при выборе многочлена Гоппы равным многочлену С (х) = Xs |-х -|- 1, который имеет три различных корня в GF (8) или в некотором его расширении и. следовательно, не имеет корней в GF (32).
2^6 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Согласно теореме 8.8.2, выбор в качестве многочлена Гоппы G (х) или G2 (х) приводит к (31.16, 7)-коду Гоппы или расширенному (32, 17, 7)-коду Гоппы. (31, 16, 7)-код Гоппы ничем не лучше (31, 16, 7)-кода БЧХ, за исключением того, что его можно рас- ширить до (32. 17, 7)-кода, тогда как код БЧХ расширить нельзя Квадрат многочлена G (х) равен G (х) х* 7 1, и обра- щения многочленов Тонны соответственно равны В рассматриваемом примере введем информацию непосредственно в спектр. Тогда профильтрованный спектр дается равенствами 7'fc -— k = G, .. , n — 1, а проверочными частотами являются частоты с индексами k — -5, —4, ... 0. Выписывая эти равенства совместное граничными син- дромами с+ и с_. получаем с+ С2 4~ Сд — Ся -j- С8 4 Сп 4 С]» 4~ С„ 4~ С44 4~ Сщ I- 4“ Сщ 4“ Cog 4- Cgg 4“ -4- С-2В -j- С-27 4“ С28 Ь C-jfl, 0 = С± 4- С4 -f- С7 4- Cs Сщ 4- Си f- С12 I- Сад |- С|6 4 * 4- Cis 4- С21 4~ Соо 4~ С24 •(- Сгй {- (-2с |- Cgi 4~ С28, 0 ~ Со 4* С3 -|- Ск 4 С7 -|- С8 4 Сю т C[i 4- C,s 4~ Ci4 4~ 4~ Ci? 4~ Сао 4~ С21 4~ С33 С24 4~ С25 4~ С2с 4- C2g. 0 — С30 4- С2 4- С5 4- Cfi 4- С8 4- Св С10 Си |- Сщ Ь 4~ С1в 4~ Cie 4~ С20 4~ C8S 4~ CS8 4- C2.i 4~ С2в 4~ C»7, 0 = C2a 4- C± 4- C4 4- Cr, J- Ci |- Св 4~ С» 4~ Сю 4~ С]2 4- C15 4~ 4~ Cjb 4" Cie 4~ Cgj 4 C22 4~ С2з 4~ C24 4- Cob, c_ — Сгв 4- Co 4- C3 4- C4 4- Ce 4- C7 4- C8 4- C84~ Cu 4- C14 4- 4- Ci? 4" Cis l~ Сщ 4- C2l 4- C22 4- С2з 4- C24. Любые c+, c_ и Cj над GF (32), удовлетворяющие условиям сопря- женности Cj = C<(2/„. / - 0, .... 30, 11 выписанным уравнениям.
8.8 Коды ГоПЙЫ 2?? Определяю! КоДовоё слойо. Используя условия сопряженности, приведем систему проверочных уравнений к следующему виду: С, = (с? + с; + сг) + с: + (с5 + с1) + (с1 + с; + с| I <?) !- + (с„ | ci, | <??, г_ с;,) + (cis + cis+c|t), о (с, I с; | С?) I (d I ci) + (cl + ci’) J- (С, + С?) + + (Си -f- Cii 4 Cil -f- Cii 4- Cl") |- (Cis 4- Cis 4- Cis), 0-c„ + (c3+cl4-cl4-Ct I Cf) , (Cl |-Cb|-Cl) I- -f (c, (. C? 4- Ci 4- c?) + (C„ + ci, 4- c‘,t) 4- C|t, 0 = (C? 4-ci + C|e) 4-(Cl 4-CD 4-(Cs 4-cl 4-Ct 4-Cl) 4- 4- (C? + Ci") + (Cn 4- Ci, 4- di) 4- (C?s + <?„ + Clt). 0_(C, 4-Ci + Ci) (-(С1 + СЭ + (С8+Й4-Й + С?) + + (C7 I ci") 4 (Ci, + Ci, 4-cii) 4-(c,s 4-Cis + Cii), C- - Co -4 (ci 4- ci) 4- (Cs 4- cl 4- Cl") 4- (d 4- d 4- Cl") 4- 4- (C7 + C? 4- Ci 4- C'l) 4- (C„ 4- C?, 4. Clt) 4- C|t. Рассмотрим решение этой системы во всех подробностях. Сначала возведем в квадрат третье уравнение и разрешим его относительно С15‘ C,„ = Co + (C, + Cl + Ct I CS I-CJ6) 1 (С! I-Cl I C?G) 1 4- (C? 4- ci 4- C? 4- d‘) + (Cl, 4- ci, 4- Cii). Воспользуемся этим равенством, чтобы исключить Cis из осталь- ных пяти уравнений: с1 = С04-(С)4-С?4-С|в)+(Сз + С14-С14-С!в) + (С54-С1 Н 4- Cl") 4- (С, + С? 4- С? 4- Ci") | (Сц | С|, | С),), о = с0 |- (с, 4- ci 4- с)) 4- (с3 4- ci 4- с)6) 4- (cl 4- d+cl") 4- + (C7 4- С; + С? 4- ci") 4- (Cil 4- Ci, 4- Cii 4- clt), 0 - C„ 4- (ci 4- Ci 4- ci") + (Cs 4- Ct 4. C?) p 4- (c6 4- d 4- d 4 Ct+Cl") 4- (C7 + d + C? 4- ci") 4- (C„ 4- CiJ, 0 = Co + (C, 4- Cl 4- ci) 4- (C3 4- Cl 4- Cl") 4- (Cl 4- Ct 4- Cl") 4- 4- (C, 4- C? 4- c? 4- ci") 4- (ci, 4- cl, + ci, 4- Cii), c. - (ci 4- c?) 4 (d 4- c!) 4- (ci 4- cl") 4- (ci, 4- ci,).
25’8 М. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Четвертое уравнение совпадает со вторым и может быть отбро- шено. Сложим второе уравнение! третье уравнение и возведен- ное в квадрат третье уравнение. Это дает С, = С„ , (Сз | С3 I Cs) |-(Й + Й4-С?) + + (с,н с?) ; Подставляя это значение для Clt получаем следующие четыре уравнения: c,-cl |-(с,+й + й + йе) + (с, I й -|-й rri‘) и + (Cu + Cli+CS). о - (cs+сэ 4- (Cs I- Cj") н (с, + сГ) + + (С,,+d, | Й, I сК), 0_(Сз + Й+Й + Й) 4-(Cs |-Й + Й + Й")+- 4 (С-,4-С1')4 (С., 4-Й, I Й, 1-СЭ, с. = (са -Й | Cl |-Cje) 4-(С«-С? ] Cl | d) Tton Й I й I- Й) 4- (Cj, 4- C®. Возведем последнее уравнение в четвертую степень и сравним результат со вторым уравнением. Это показывает, что с_ — О и что четвертое уравнение можно отбросить. Прибавим восьмую степень третьего уравнения к третьему уравнению. Это дает в точности второе уравнение, так что его можно отбросить. Итак, остались два уравнения: с, (t, '(С, -Й4-й 1 с?) | (С, i-d+d-rCr) 4- ,(С.,4Й. C|f), О = (CS < С?) l- (Cs 4- Cj‘) - (C, 4- c“) -I (Ci, 1-ЙЦ-Й.4-Й?). Возводя первое уравнение в шестнадцатую степень, получаем С3= fJN-(Cs-CHC£-t-C?) + (C7i С?^С?тСР) + |- (Cii 4- Си + Сп)- Подстановка этого выражения в последнее уравнение дает 0-4
«.9. КОДЫ ПРЕПАРАТЫ 276 Возведение этого равенства в шестнадцатую степень приводит к уравнению 0 = с+(1 из которого следует, что с+ равно нулю или единице. Итак, мы пришли к следующему правилу: Со и с+ являются произвольными элементами поля GF (2); Съ, С? и Си являются произвольными элементами поля GF (32); Сь Са и С1:, определяются следующими уравнениями: й = ч 4 С» ! С| + (С7 i С= |-С? | Йе) (С„ |-Й 1-Й), С3-с+4-(С5 | Й | f.s | Й') + (С, | С? |-С?4Й") | : (Й| । Й,+Й?), С|5 г+ I С„ (Cl I- С| | С?) (Й + Й | С? |- й“) 4 + (Си 4 Си). Все остальные Cj находятся из условий сопряженности. Обратное преобразование Фурье дает 31-компонентное кодовое слово во временной области, к которому в виде хвоста дописывается сим- вол с+. Построенный код является расширенным (32, 17, 7)-кодом Гоппы. Так как ограничения сопряженности привели к равенству с_ = 0, то второго символа при расширении добавить не удается. 8.9. КОДЫ ПРЕПАРАТЫ Хороших классов нелинейных кодов известно мало, и среди них находится класс кодов Препараты. Начнем изучение этих кодов с построения в частотной области одного примера, а именно (15, 8)-кода Препараты. Но прежде чем изучать коды Препараты, вернемся к рас- смотренной в § 5.6 процедуре декодирования даоичных кодов БЧХ, исправляющих две ошибки; в этом случае взаимный много- член локаторов ошибок выписывается явно; за исключением слу- чая Si = 0, он равен л (х> - ? 4- Six 4- sr1 (s? + sj — о. Частный случай S1 = 0 соответствует случаю отсутствия ошибок и легко проверяегся. Если положить 0/0 = 0, то многочлен ло- каторов ошибок будет включать и случай отсутствия ошибок, и в этом случае уравнение вырождается в уравнение х2 = 0 и имеет корни Xi = 0 и Хг — 0. В случае одной ошибки уравнение при- нимает вид xv -f- Six = 0 и имеет корни Х| = 0 и Л2 = Si.
280 ГЛ. «• КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Сделаем замену переменных, полагая х = SiZ. Тогда новый многочлен, который мы также обозначим через Л, будет иметь вид Л (z) = 4- z -}- (1 -f- S, S3). Этот многочлен имеет корни в поле GF(2m) тогда и только тогда, когда tr (1 -f- 5Г35з) равен нулю. В четных расширениях GF (4) всегда tr (1) — 0, и это условие преобразуется так: 1г(5Г!3„)=0. Далее, в полях характеристики 2, согласно теореме 8.2.3, ровно половина элементов имеет равный нулю след. При каждом значении Si элемент S8 может принимать только 2т_’ значений, которые образуют в GF (2т) подпространство размерности т — 1. Один бит в Ss «не используется». На первый взгляд может пока- заться, что на частоте С8 кодового слова можно ввести дополни- тельный бнт информации. Эго невозможно, так как неиспользуе- мый бнт элемента Ss зависит от St. Но коды Препараты позволяют лучше распорядиться этим обстоятельством: если спектр лежит в расширении поля GF (4), то можно переупорядочить другие информационные биты так, чтобы ввести дополнительный информа- ционный бнт. (2™—1, 2т—2т, 5)-код Препараты над GF (2) существует для каждого четного т, большего 2. По сравнению с соответ- ствующим кодом БЧХ, исправляющим две ошибки, код Препараты всегда содержит один дополнительный информационный бнт. Мы рассмотрим только (15, 8, 5)-код Препараты. Определение 8.9.1. Двоичный (15,8)-код Препараты опреде- ляется1) как множество двоичных слов длины 15, спектр которых удовлетворяет следующим ограничениям: Ci = 0, С3 — А, С6 = = В, где либо 1) А Е {1, а8, а6, а”, и В = 0, либо 2) В £ {1, а5, а10| и А = 0, и, кроме того, выполняются условия сопряженности. Отметим, что, согласно условиям сопряженности, Cs — С5, так что С6 может быть только элементом поля GF (4). Так как Со представляет собой произвольный элемент поля GF (2), а С7 произвольный элемент воля GF (16), то Со и С? вместе содержат *) При гаком определении нулевое слово не является кодовым. В других определениях используется такой сдвиг кода, при котором нулевое слово вклю- чаетеяв код.
8.в. КОДЫ ПРЕПАРАТЫ 281 пять битов информации. Остальные три бита описываются во- семью выборами А к В, так что код является (15, 8)-кодом. Покажем теперь, как исправляются двойные ошибки, и тем самым докажем, что минимальное расстояние этого кода равно по меньшей мере 5. Пусть Vj, j = 0, .... п — 1, представляют собой спектральные компоненты принятого слова. Определим синдромы Si = £i = V», Sjj : £2 ~ Vj, S, = £з + А = V,, S4 = £, = Vit $6 = £# + В = V6. Выбор А и В приемнику не известен, но ограничен условиями определения 8.9.1. Далее, Si = X» + Х8, S3 = X? + Х| + А, ss = х5 + xt + в. Сначала разрешим эти уравнения относительно А и В; затем вы- читание А из Ss сведет задачу к декодированию исправляющего две ошибки кода БЧХ. Простые вычисления дают S? + (S3 -f- А) = XjXsSi, (Ss + Л)2 + S, (Ss + В) = X.XsSi. Исключая XiX2, получаем квадратное уравнение Л2 + + (S?Ss + Sj + s? + S,S5 + S,B) _ 0. Оно'может быть разрешено относительно А и В следующим обра- зом. Сначала положим В = 0 и решим получающееся при этом квадратное уравнение относительно А. Затем положим А =0 и решим получающееся линейное уравнение относительно В. Это даст нам три решения для пары (А, В). Из доказательства приведенной ниже теоремы следует, что только одно из них удо- влетворяет ограничениям определения 8.9.1. Теорема 8.9,2. Минимальное расстояние (15,8)-кода Пре- параты равно 5. Доказательство. Докажем, что минимальное расстояние кода равно по меньшей мере пяти, построив процедуру декодирования, исправляющую две ошибки. Для этого достаточно дать правило нахождения по принятому слову величии А и В, так как после
282 ГЛ. 8. КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ этого задача сводится к декодированию исправляющего две ошибки кода БЧХ. Предположим, что произошло не более двух ошибок. Если Sx = 0, то ошибок не произошло. Мы предполагаем, что Si было вычислено и оказалось отличным от нуля. Сначала положим В = 0 и найдем корни квадратного относи- тельно А уравнения л’ I s;/ I (.sis, । s? |-s!+s,s,) = o- Удовлетворяющие нашим ограничениям возможные решения для А исчерпываются ненулевыми кубами. Затем положим А = 0 и найдем решение линейного относительно В уравнения (S?& + si h Sf 4- S.Ss) - S,B - 0. Шаг 1. Сначала покажем, что рассматриваемое квадратное уравнение не может иметь двух решений, которые оба являются ненулевыми кубами. Если Аг и 712 — корни данного квадратного уравнения, то At -[- А& = Sf, так что сумма двух корней также является ненулевым кубом. Необходимо только доказать, что в поле GF (16) сумма двух ненулевых кубов не может быть равна ненулевому кубу. Выпишем множество ненулевых кубов Us = {1, а3, а", а\ а18). Тогда прямое вычисление всех возможных сумм дает множество 4- U3 {0, а, а8, а4, а5, а7, а8, а10, а11, а*3, а14}, которое не содержит ненулевых кубов. Таким образом, в поле GF (16) сумма двух ненулевых кубов не может быть ненулевым кубом, и поэтому At и As не могут одновременно удовлетворять ограничениям определения 8.9.1. Шаг 2. Предположим теперь, что (71, 0) и (0, В) — два реше- ния исходного уравнения. Покажем,что оба они не могут удовлет- ворять накладываемым ограничениям. Разность двух уравнений дает А‘ + S>1 + S,B - 0. Пусть А — SM Тогда (4 )2 + А" + ST'B - 0. Но как Si, так и В являются ненулевыми элементами поля GF (4). Следовательно, элемент Л’ должен удовлетворять одному из сле- дующих уравнений: ИТ + Л’ +1 = о, (Д')8 + А' 4-а» = 0, (А")2 + А' + а10 = 0.
задачи 283 Перебирая все корни этих уравнений, получаем, что А' С {<хБ, а10, а, а2, а4, а*}. Но в этом множестве не содержится ни одного куба. Таким обра- зом, (/1,0) и (0, В) не могут одновременно удовлетворять нашим ограничениям. Это завершает' доказательство теоремы. □ ЗАДАЧИ 8.1. Исходя ич определении пары преобразования Фурье доказать следующие стандартные свойства дискретного преобразования Фурье а. Линейность: + bc{} «-> {аСб + i’Cj-). 6. Свойство циклического сдвига; в. .Модульность {А,.| • • |с,(/ч.,„|. 8.2, Доказать, что преобразование Фурье сигнального вектора с, = аг‘ содержит единственную ненулевую спектральную компоненту. Что происходит, если г — 0? Доказать, что спектр вектора с единственной ненулевой компонен- той всюду отличен от нуля. 8.3. Доказать, что Ej = FjGj тегда к только тогда, когда = (1/n) J] и^о 8.4. Сколько идемпотентов содержится в кольце многочленов по модулю многочлена х18 — I? Перечислить их. 8.5. Основная теорема алгебры гласит, что многочлен степени d имеет не более d корней. Используя эту теорему, доказать границу БЧХ для кода Рида—Соломона, спектр {Су} кодовых слов которого удовлетворяет условию Cj — 0 для всех j > п — k. В.б. а. Найти порождающий многочлен для двоичного расширенного (42, 25, 7)-кода БЧХ. Построить кодер. б. Найти порождающий многочлен расширенного (17, 9. 7)-кода БЧХ над GF (4). Построить кодер. 8.7. Пусть С (х) = ха 4- х 1 — многочлен Гоппы для (32, 22, 5)-кода Гоппы. Разработать правило кодирования и процедуру декодирования. 8.8. Пусть G (х) — ха -|- х-|- а? —многочлен Гоппы для (16,8.5)~кода Гоппы, где а — примитивный элемент поля GF (16). Найти проверочную матрицу кода. 8.9. Модифицируя несистематический кодер для (15, 7)~кода БЧХ, по- строить кодер для (15,8)-кола Препараты. 8.10. Код Препараты можно декодаровать с помощью алгоритма Берле- кэмпа—Месси для двоичных кодов, используя три итерации (г = 1, 3, 5) «вы- бирая А и В так, чтобы — О. Выписать уравнения дли А н В, которые Должны быть разрешены при таком алгоритме декодирования. 8.11. Двоичный (63, 52>код Препараты может быть определен при помощи своего спектра следующим образом: Cj = 0, Ся = А, Св = В, где либо 1) А £ {1, ссм. а21. а”, а3*. а‘2, а18, а’6) и В = 0, либо 2) В £ {I, а», а1’, а«®, «*», а«‘) и А = 0,
284 ГЛ- «• КОДЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ а остальные спектральные компоненты удовлетворяют только условиям со- пряженности. а. Доказать, что этим кодом можно закодировать 52 информационных бита. 6. Исследуя уравнение А4 + 5® А2 -р S? А -р [S?S9 -|- Sf + 4S3 + srs.<l -I- — О н изучая его корни, доказать, что минимальное расстояние рассматриваемого кода не меньше 5. ЗАМЕЧАНИЯ Спектральное описание кодов, контролирующих ошибки, можно найти в очень ранних работах, хотя связь с преобразованием Фурье не была сразу осознана. Спектральный декодер использовался в основополагающей работе Рида и Со- ломона [I960) для нахождения минимального расстояния предлагаемых кодов, но, так как описанный в этой работе декодер не имел практического значения, спектральные методы не изучались еще долгие годы. Мэттсон и Соломон [1961) ввели спектральный многочлен, сыгравший большую роль в теоретических иссле- дованиях, но смысл спектрального многочлена как преобразования Фурье вновь не был осознал, и тесная связь теории корректирующих кодов с обработкой сигналов опять осталась скрытой. Близкие идеи разрабатывал Мандельбаум [19791, но на языке интерполяции. Преобразование Фурье над конечными полями рассматривал Поллард [ 1971 1. а использовать его в теории кодов, контролирующих ошибки, предложил Гор [1973], работа которого получила дальнейшее развитие в работах Ченя и Чоя [19751 и Лемпеля и Винограда [1977]. Приведенное в данной главе доказатель- ство границы БЧХ частично использует перенесенное в частотную область дока- зательство Ченя [19721. Идея расширения кода широко известна. Расширенные коды Рида—Соло- мона рассматривал Вулф [1969]. Конструкции расширения кодов БЧХ были предложены Андриановым и Сасковцом [1966], Слоэном, Редди и Чннем [1972]; Касахарой, Сугиямой, Хирасавой и Намекавой [1975]. Описание кон- струкций в виде преобразований дал Блейхут [1980). Альтернантные коды были введены Хельгертом [1974], который дал им такое название потому, что проверочная матрица этих кодов может быть за- писана в виде так называемой (в математической литературе) альтернантпай матрицы К альтерна ктным кодам относятся открытые ранее коды Гоппы [1970) Дельсарт [1975) предложил определять альтернантные коды как ограничения на подполе модифицированных кодов Рида—Соломона, так что его определение значительно отличается от исходного. Коды Превараты имеют интересную историю. Препарата (1968) открыл этот каасс кодов в процессе исследования свойств наименьшего кода в классе, а именно (15, 8, 5)-кода, известною под названием кода Нордстрома—Робинсона [1967]. Два последних автора построили этот нелинейный (15, 8, 5)-код с помощью ЭВМ как расширение ранее построенного Нейдлером нелинейного (12,5,5)-кода [1962} или нелинейного (13, 6,5)-кода Грина [1966]. В свою очередь коды Препараты стимулировали открытие еще более сложных нелинейных кодов, а именно низкоскоростных кодов Кердока [1972) и исправляющих три ошибки кодов Геталса [19761.
ГЛАВА 9 АЛГОРИТМЫ, ОСНОВАННЫЕ НА СПЕКТРАЛЬНЫХ МЕТОДАХ Оценивать код, контролирующий ошибки, надо не только по его скорости и минимальному расстоянию, но и по возможности по- строения для пего экономного декодера. Обычно имеется много способов декодирования заданного кода. Конструктору прихо- дится выбирать между несколькими различными алгоритмами декодирования или вариантами одного алгоритма, и он должен быть знаком со всеми возможностями, чтобы выбрать наилучшую для данного конкретного приложения. Выбор зависит не только от параметров кода, таких, как длина и минимальное расстояние, но и от того, какая часть алгоритма реализована аппаратурно, а какая программно, от требуемой скорости декодирования и даже от стоимости имеющихся блоков схемы. В данной главе изучаются методы декодирования, позволяю- щие работать в частотной области. Сюда включены методы деко- дирования с исправлением ошибок и стираний и методы декоди- рования за пределами конструктивного расстояния кода *). 9.1. СПЕКТРАЛЬНЫЕ МЕТОДЫ ДЕКОДИРОВАНИЯ Вернемся к задаче декодирования кодов БЧХ и будем интерпре- тировать с частотной точки зрения уже рассмотренные вопросы. Используя преобразование Фурье, разработаем новые процедуры декодирования. Принятое слово v с компонентами vt = с, -ъ et, I = 0. п — 1, представляет собой сумму кодового слова с и вектора ошибок е. Декодер должен так обработать слово V, чтобы удалить из него вектор ошибок е; после этого из с выделяется информа- *) Имеется в виду исправление векторов ошибок, вес которых превышает половину конструктивного расстояния кода. — Прим, перев.
286 Гл. 9. АЛГОРИТМЫ! СПЕКТРАЛЬНЫЕ МЕТОДЫ ция. Координаты синдрома для зашумленного слова v кода БЧХ задаются следующими равенствами: S, - Е а‘от*-1Ч =е(о'+"~‘). / - 1.......И Очевидно, что компоненты синдрома вычисляются как 2/ компо- нент преобразования Фурье принятого вектора. Компоненты преобразования Фурье зашумленного кодового слова v = = с -р е равны Vj Cj + Ejt j — 0.......я — 1, а компоненты синдрома представляют собой 2t компонент этого спектра от /0-й до (/о 4-2/ — 1)-й. Но, согласно построению кодов БЧХ, спектральные компоненты, расположенные в проверочных ча- стотах (при / -= /0, .... /о + 2/— 1), равны нулю: Q = 0 для j — /0..../0 4- 2/ — 1. Следовательно, /=1.....2,'. Блок компонент синдрома как бы образует окно, через которое можно наблюдать 2/ из п компонент спектра конфигурации оши- бок. Но если вес конфигурации ошибок не превышает /, то, со- гласно границе БЧХ, этих 2/ компонент синдрома достаточно, чтобы однозначно восстановить вектор ошибок. Предположим, что произошло v < t ошибок с локаторами аь при k = 1, .... v. Многочлен локаторов ошибок равен \(х)= П (I ЛсЛ). Обратное преобразование Фурье вектора Л вычисляется как зна- чения Л (а-') многочлена Л (х) в точках а-Ясно, что Л (а—*) равно нулю тогда и только тогда, когда i представляет собой по- зицию ошибки. Таким образом, Л (х) определяется как такой многочлен, для которого во временной области X, = 0 при всех е» =/= 0. Следовательно, Л.с,- = 0 для всех i, и, таким образом, по теореме о свертке свертка в частотной области равна нулю: п—I S KfEk.j =0, k = 0, .... п — 1. 7—0 Так как степень многочлена Л (х) не превосходит /, то Л# = 0 для j > t. Следовательно, У, = 0, k = 0...........п — 1. 7=0 Поскольку Ло = 1, эти уравнения можно переписать в виде = UC........п-1.
9.1. СПЕКТРАЛЬНЫЕ МЕТОДЫ ДЕКОДИРОВАНИЯ 287 Эта система содержит п уравнений, связывающих п — t неизвест- ных (t коэффициентов многочлена Л (х) и п — 21 компонент век- тора Е) и 21 известных компонент вектора Е, заданных компо- нентами синдрома,. Таким образом, t уравнений S, — — X k = t т-1.............21. i=i содержит только известные компоненты синдрома и t неизвест- ных компонент вектора Е. Как мы видели в гл. 7, такую систему всегда можно разрешить относительно Л, например с помощью алгоритма Берлекэмпа—Месси. Остальные компоненты спектра S можно получить рекуррент- ным продолжением, а именно используя выписанное выше урав- нение для свертки, вычислить S2/41 по уже известным компонен- там S и Л, затем найти 5г/тг и т. д. Это вычисление может быть выполнено с помощью регистра сдвига с линейной обратной связью, весовые множители в отводах которого совпадают с компонентами вектора Л, а начальное состояние задается компонентами син- дрома £ь .... St. Это позволяет вычислить Sj для всех /; £/ равны S,-_j0Ti, a Q = V} — £,. Обратное преобразование Фурье завершает декодирование. На рис. 9.1 приведена блок-схема реализации описанной про- цедуры декодирования (за исключением преобразований Фурье). Такой декодер может быть использован независимо от того, в ка- кой области реализован кодер: в частотной или во временной. Если кодер реализован во временной области, то для вычисления кодового слова во временной области надо воспользоваться обрат- ным преобразованием Фурье применительно к исправленному спектру, а затем уже выделить из этого кодового слова передан- ную информацию. Если же кодирование производилось в частот- ной области, то информационные символы определяются непо- средственно по исправленному спектру. В этом случае обратного преобразования в декодере делать не надо. Вычисления можно организовать многими способами. На рис. 9.2 приведены четыре различные схемы декодеров. Первая схема относится к рассмотренному в гл. 7 варианту декодера. Во второй схеме кодирование осуществляется в частотной области, так что как только вычислен исправленный спектр, декодирова- ние закончено. Третья и четвертая схемы иллюстрируют тот факт, что, хотя в частотной области с помощью рекуррентного продол- жения вычислена конфигурация ошибок, окончательное исправле- ние ошибок можно производить как во временной, так и в частот- ной областях. Четвертая схема похожа на первую, хотя их реализации сильно отличаются. Вычисление синдрома аналогично прямому
286 ГЛ. 9- АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Рис. 9.1. Частотный декодер. преобразованию Фурье. Процедура Ченя аналогична обратному преобразованию Фурье. Первая является «-точечным преобразо- ванием вектора с v ненулевыми компонентами и GF (<7т)-значным выходным вектором, а вторая представляет собой «-точечное преоб- разование вектора с п ненулевыми компонентами и GF ($)-знач- ным выходом. Алгоритм Форни заменяется рекуррентным про- должением. Четвертая схема представляется более^простой из-за простоты реализации отдельных блоков декодера. Конструктивный выбор одной из этих схем частично опреде- ляется возможными методами вычисления преобразования Фурье, и поэтому в последнем параграфе главы рассматриваются различ-
9.1. СПЕКТРАЛЬНЫЕ МЕТОДЫ ДЕКОДИРОВАНИЯ 289 ные алгоритмы вычисления преобразования Фурье. Помимо вы- бора алгоритма вычисления преобразования Фурье и способа реа- лизации декодера конструктор может так модернизировать де- кодер, чтобы вычислять только часть спектральных компонент. Например, в четвертом варианте схемы декодера на рис. 9.2 тре: буется вычислить только 2/ компонент спектра. Возможно Рис. 9.2. Некоторые схемы кодера/декодсра для кодов БЧХ. 10 р. Блейхут
290 rJI- »• АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ также следующее упрощение: запишем принятый многочлен в виде » (а) = <2 (X) g (А) + S (.<), где g (х) — порождающий многочлен кода БЧХ, a а (х) — син- дромный многочлен. Синдромный многочлен можно вычислить с помощью цени деления па g (х). Тогда Sj - v (a1) Q (a1) g (а1) | s (а1) = ь (сс;), / /о.1......./о I 2/, так как для этих значений индекса / выполняется равенство g (а') — 0. Теперь компоненты синдрома могут быть вычислены как преобразование Фурье многочлена s (х), который имеет не п, а только п — k ненулевых коэффициентов. Этот метод оказывается полезным только тогда, когда легче осуществить деление на g (х), чем вычислять преобразование Фурье в п входных точках. При малых значениях п это иногда имеет место. Существует и другой алгоритм декодирования, основанный на алгоритме Евклида и совершенно отличный от описанного в § 7.7. Этот метод, ориентированный па частотную область, будет описан в данном параграфе. В поле GF (</”) имеет место разложение хп- 1=Д(х- а’). Определим истинно-локаторный многочлен А0 (х) — (х" 1)/А(х). Он действительно является многочленом, так как Л (х) пред- ставляет собой произведение различных линейных множителей, каждый из которых делит х" — 1. Корни многочлена Л° (л) определяют правильные компоненты принятого вектора. Теорема 9.1.1. Многочлен ошибок Е (х) и многочлен локато- ров Л (л) удовлетворяют равенству НОД [х" — 1, Е (х)] = (л" - 1)/Л (х) = А® (л). Доказательство. Многочлены Е (х) и Л (х) не имеют общих корней, так как по определению Л (с?) = 0 тогда и только тогда, когда Е («') =/= 0. Каждый элемент а1 должен быть корнем либо Е (х), либо Л (х). Следовательно, Л (л) £ (л) = Р (х) (*" — I)
9.1. СПЕКТРАЛЬНЫЕ МЕТОДЫ ДЕКОДИРОВАНИЯ 291 для некоторого многочлена Р (х), взаимно простого с А (х). Тогда НОД (/' -!,£(»)]- (/' - 1)/Л и - л° м, что и требовалось доказать. □ Применим описанный в теореме 7.7.1 алгоритм Евклида с s (х) = хп — 1 и t (х) = Е (х). временно игнорируя тот факт, что в общем случае известны только 2t старших коэффициентов многочлена Е (х) Поскольку Л (х) НОД [хп — 1, Е (х)] = х" — 1. то, согласно следствию 7.7.2, Л(х) = (- 1)М?’(х) определяет многочлен (х), вычисляемый в процессе выпол- нения алгоритма Евклида. Если многочлен Е (х) известен, то с помощью алгоритма Евклида мы таким образом можем вычислить Л (х). Но нам известны только те коэффициенты многочлена Е (х), для которых соответствующие коэффициенты многочлена С (х) равны нулю, и, таким образом, на первый взгляд эта формула для Л (х) ка- жется бесполезной. На самом деле ее можно использовать и в том случае, когда известны лишь 2t коэффициентов многочлена Е (х), если только они правильны. Рассмотрим код БЧХ, корнями порождающего многочлена ко- торого являются элементы а”-2*, .... а"-1, (Если использовать в качестве примитивного элемента поля а-1, то это обычные корни с показателями от 1 до 2/.) Построим алгоритм декодирования для такого кода БЧХ. Нам надо показать, что если произошло не более t ошибок, то итерации алгоритма Евклида зависят только от 21 старших коэффициентов многочлена Е (х). Остальные коэф- фициенты могут выбираться произвольно. Теорема 9.1.2. Пусть заданы Е; для j — п— 2t, .... п — 1. Тогда имеется не более одного способа задания Ei, / = 0, ... п -~2t — 1, такого, что уравнение Л (х) НОД [х° — 1, Е (x)J = х" — 1 разрешимо относительно Л (х) степени t или меньше. Доказательство. Доказательство теоремы показывает, что она является одной из форм границы БЧХ. Предположим, что сте- пень многочлена Л (х) не больше t и что он удовлетворяет усло- 10*
292 гл. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ вмям теоремы. Выпишем последний шаг алгоритма Евклида в форме, приведенной в доказательстве следствия 7.7.2: У- 11 ,.яГ ЛЙ’(Х) — Л|?,(х)1ГнОД[л” .... 1, £(х)Г .£(>) L-A1PW-л'Г'мЦ о Отсюда видно, что (—(>) = А (х). Вместе с тем в прямой форме последнее равенство имеет вид полк - i, f<«) Oil p!”w К-П J L4f'w «'(di j' что приводит к требованию О = (-1)"А” (ж) К - 1) + А («) Е (х). Следовательно, многочлен Л (х) Е (х) кратен многочлену х" —- 1. Таким образом, многочлен Е (х) имеет корни в тех точках поля GF (</"), в которых не имеет корней многочлен Л (х), Поскольку степень многочлена Л (х) не превосходит /, то он имеет не более t нулей. Тогда компоненты е, обратного преобразования Фурье обращаются в нуль по меньшей мере п — t раз. Согласно границе БЧХ, должен найтись такой вектор е, преобразование Фурье которого совпадает с известными коэффициентами многочлена Е (к) в позициях j = п — 21, .... п — 1. Это завершает доказа- тельство теоремы. □ Одним из непосредственных способов применения доказанной теоремы является попытка перебрать всеми возможными спосо- бами неизвестные коэффициенты многочлена Е (х) и воспользо- ваться алгоритмом Евклида для вычисления Л (х). Только один многочлен Л (х) будет иметь степень не больше t. Он-то и будет правильным многочленом локаторов ошибок, а соответствующий многочлен Е (х) — правильным спектром вектора ошибок. Однако так как Л (х) однозначно определяется но известным компонентам Е (х), то более целесообразной представляется воз- можность избежать перебора неизвестных коэффициентов много- члена Е (х). Такой алгоритм представлен на рис. 9.3. Рассмотрим алгоритм деления S W = <? и IW + Г W, где deg t (х)'= а и deg s (х) = b. В этом алгоритме степень част- ного <2 (х) равна b — а и сам многочлен-частное Q (х) зависит от t (х) только через коэффициенты ta, ta_i, ..., 4_а. Для вычисле-
9.1. СПЕКТРАЛЬНЫЕ МЕТОДЫ ДЕКОДИРОВАНИЯ 293 Рис. 9.3. Декодер для колой БЧХ, основанный па алгоритме Бвклида. ния Q (х) воспользуемся следующей итеративной процедурой при г — 0, .... b — а: Данный алгоритм является слабой модификацией обычного алго- ритма деления многочленов. Используем эту процедуру вычисления частного на каждом шаге алгоритма Евклида. В r-й итерации теоремы 7.7 1 вычислим только коэффициенты s/+I) и для значений j от п — 2/ +
294 гл. 6. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ 4- Sf=i deg <2<О(Х) Д° п — 1- Эти старшие фрагменты многочленов s(r+1) (х) и i(r+l) (х) являются именно теми многочленами, кото- рые необходимы для выполнения итерационных шагов алгоритма Евклида при построении рассматриваемого ряда многочленов- частных. Так как то можно записать Поскольку степень НОД [х" — 1, Е (х)] равна по меньшей мере n—~t, отсюда следует, что степень многочлена (х) равна по меньшей мере п — t 4. Sibj-i deg Q(Z)(x). Таким обра- зом известны для всех / от j = п — 2t + £ i-i deg Q<0 (x) до n — i -|- 2j?--h i deg (x) при ненулевом верхнем индексе. Этого диапазона достаточно для вычисления (х) и продол- жения итерации. 9.2. ИСПРАВЛЕНИЕ СТИРАНИЙ И ОШИБОК Контролирующие ошибки кода могут быть использованы в кана- лах, в которых кроме ошибок происходят и стирания. Принятое по такому каналу слово состоит из входных символов канала (часть из них может быть ошибочными) н пробелов (или экви- валентных символов), обозначающих стирания. Декодер должен исправить ошибки и восстановить стертые символы. Код с мини- мальным расстоянием d* позволяет декодировать любую конфи- гурацию, содержащую v ошибок р стираний, при условии, что d* 2г 2v 1 4- р. Наибольшее v, удовлетворяющее этому неравенству, обозначим через Чтобы декодировать принятое слово с р стираниями, необхо- димо найти кодовое слово, которое в нестертых позициях отли- чается от принятого слова не более чем в символах. Поскольку
8.2. ИСПРАВЛЕНИЕ СТИРАНИЙ И ОШИБОК 295 по определению параметра tp такое слово единственно, разыски- вается любое подходящее слово. Нам нужно только найти какое- либо решение, так как мы знаем, что оно лишь одно. Один из возможных способов декодирования состоит в угады- вании стертых позиций с последующим применением любой про- цедурьГисправления ошибок. Если процедура приводит к исправ- лению не более ошибок в нестертых позициях (и, возможно, некоторых угаданных символах в стертых позициях), то кодовое слово восстанавливается. Если необходимо исправлять слишком много ошибок, то делается новая попытка угадать стертые сим- волы. При этом любая подходящая для данного кода процедура исправления ошибок может быть модифицирована в процедуру исправления ошибок и стираний. Практически она подходит в тех случаях, когда число комбинаций угадываемых стертых сим- волов мало. В противном случае такая процедура проб и ошибок становится практически неприемлемой. В таких случаях восста- новление стертых символов должно осуществляться некоторым регулярным способом, входящим в алгоритм декодирования. Как мы видели, частный класс кодов БЧХ допускает многие сильные алгоритмы декодирования. Все они могут быть обобщены на случай декодирования ошибок и стираний. Для простоты будем полагать /0 = 1. Пусть vit i = 0, ..., п — 1, обозначают символы принятого вектора. Предположим, что стирания произошли в позициях ......ip. Во всех этих позициях принятое слово содержит про- белы, которые мы сначала заполним нулями. Определим «-мер- ный вектор стираний, положив символы в стертых позициях рав- ными fip i — 1, ..., р, а в остальных позициях равными нулю. -Тогда Vi = I- et -| fi, ........n — 1. Пусть ф — произвольный вектор, символы которого равны нулю в каждой позиции стирания и только в них. Тогда Ш = 'rA) = 4;iQ 1-фл. Определим модифицированное принятое слово равенством v'i = = модифицированный вектор ошибок равенством c'i = = и модифицированное кодовое слово равенством cj- = (Модифицированный вектор ошибок содержит ошибки в тех же позициях, что и исходный вектор ошибок е.) Тогда последнее ра- венство приводится к виду Ч = -Ь е{. Теперь задача состоит в декодировании вектора v' и сводится к задаче вычисления вектора е', которую мы умеем решать при достаточном числе компонент синдрома.
296 ГЛ. 9- АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Следующий шаг построения алгоритма состоит в выборе век- тора V, основанном на некоторых проводимых в частотной области рассуждениях. Пусть Ut = а1 для i = 1, р обозначают ло- каторы стираний. Определим многочлен локаторов стираний ра- венством ч'« = "£ч'^‘ - По м,). Этот многочлен специально определен так, чтобы компоненты ф,- обратного преобразования вектора У были равны нулю, как только ft =/= 0. Следовательно, = 0. В частотной области это дает V' - (У * С) I Е'. Но вектор У отличен от нуля только на блоке длины р -J-1, а по построению^ кода БЧХвектор С имеет нулевые компоненты в блоке длины 2/. Следовательно, свертка У * С равна нулю в блоке длины 2/ — р. Полагая S’ = Vf, определим на этом блоке модифицированный синдром. Тогда S] » (У* V), = Ej, что задает достаточное число компонент синдрома для исправле- ния модифицированного вектора ошибок. Итак, точно так же, как в случае наличия только ошибок (при условии, что их не более (21 — р)/2), по этим 2t •— р извест- ным компонентам вектора Е' можно найти многочлен локаторов ошибок А (х). Коль скоро многочлен локаторов ошибок известен, можно скомбинировать его с многочленом локаторов стираний и дальнейшее декодирование проводить так же, как и в случае на- личия только ошибок. Чтобы проделать это, определим сначала многочлен локаторов ошибок и стираний.’ А (х) = У (х) А (х). Обратное преобразование Фурье вектора Л содержит нуль в по- зиции каждой ошибки и каждого стирания. Таким образом, Xi = 0, если ег =/= 0 или 0. Следовательно, Л,- (ef -р /,-) = 0, Л * (Е + F) = 0, и многочлен Л отличеп от пуля в блоке длины, не превышающей v -р р 1. Следовательно, используя известные компо- ненты вектора Л и 21 известных компонент вектора Е ф- F, можно воспользоваться этим содержащим свертку уравнением для того,
0.2. ИСПРАВЛЕНИЕ СТИРАНИЙ И ОШИБОК 297 чтобы рекуррентио продолжить вектор Е | F до всех п компонент. Затем вычисляются с, -V,- (Е, I F,). Обратное преобразование Фурье завершает декодирование. Вычисление многочлена локаторов ошибок но модифицирован- ному значению синдрома можно выполнить с помощью алгоритма Берлекэмпа—Месси. Можно, однако, сделать это гораздо лучше, если скомбинировать несколько шагов. Идея алгоритма Бер- лекэмпа—Месси состоит в рекуррентной процедуре вычисления многочлена Л (л) за 2/ итераций, начиная с оценок Л“” (х) — 1 и В1"1 <х) = I. В случае наличия стираний в уравнении для невязки Аг ком- поненты синдрома заменяются компонентами модифицирован- ного синдрома: в, = Ъ Многочлен локаторов ошибок вычисляется с помощью п итераций при начальных условиях Л(0’(х) = В<0)(л) — 1. Но что произойдет, если заменить начальные условия на Л,0) (х) = Вт(х) = Т(х)? Заметим, что в этом случае Лм (х)'1'(х) Лм(х) V(x) - AxB,-l,(x)V(x), Blr,(x) Т(х)- (I -S,)xB,'-,1(x)4'(x) |- + W‘A‘—”(х)Ч(х). Если мы временно определим Л(И (х) = Л*'1 (х) Qr (х) И будем вычислять невязку Л г По формуле д, = Е =EXt/’S/. TO л,- е'(’em-0s, = E (=D \ft=0 } ft=Q
298 rJI- s- АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Итак, если в качестве начальной точки в алгоритме Берлекэмпа— Месси вместо 1 выбрать многочлен Т (х), то модифицированный синдром вычисляется неявно и нет необходимости вводить его в явном виде. Отбросим теперь обозначение Л (х), заменив его на Л (х) и назвав многочленом локаторов ошибок и стираний. При начальных условиях, даваемых многочленом У (х), алго- ритм Берлекэмпа—Месси рекур рентою порождает многочлен ло- каторов ошибок и стираний в соответствии с уравнениями Л1'1 (х) = Л1''° (х) Д-хВ1'-11 (х). В1'1 (х) - (1 - 6,) хВ|г“" (х) + бгДГ’Л''-1’ (X), Аг Дополненный правилами восстановления стираний алгоритм Бер- лекэмпа—Месси приведен на рис. 9.4. Сопоставим его с алго- ритмом на рис. 9.1. Единственное изменение по сравнению с алго- ритмом для исправления только ошибок состоит в вычислении многочлена локаторов стираний; сравнительно с остальными вы- числениями алгоритма оно является тривиальным. Это вычисле- ние производится с помощью показанной на рис. 9.4 специальной вспомогательной цепи, содержащей первые'р итераций. Индекс г используется в качестве счетчика для первых р итераций, а после вычисления многочлена стираний в качестве счетчика последую- щих итераций алгоритма Берлекэмпа—Месси до тех пор» пока г не превзойдет 2/. При каждом стирании длина L регистра сдвига возрастает на единицу, а затем изменяется в соответствии с обыч- ными правилами процедуры алгоритма Берлекэмпа—Месси. По- скольку, однако, этот алгоритм не учитывал стираний, то в конце приходится добавитьЗисправления стираний и заменить г и L на г — р и L — р соответственно. Прежде чем закончить данный параграф, заметим, что вместо пробела, обозначающего стирание, можно оставить лучше всего угаданный символ, пометив факт'наличия в данной компоненте стирания некоторым^специальным образом. Такие стирания на- зовем помеченными. Эти позиции не влияют на алгоритм декоди- рования, так как стоящие в них символьГ’замеияются"'нулями. Иногда вне основного декодера удается использовать дополнитель- ные блоки, извлекающие пользу из этой слабой информации. Например, можно отказаться от полученного на выходе декодера слова, если слишком многие из помеченных стираний не совпа- дают с результатом декодирования.
9.3. РАСШИРЕННЫЕ КОДЫ РИДА-СОЛОМОНА 299 Рис, 9.4. Исправляющий ошибки и стирания декодер %чя кодов БЧХ. 9.3. ДЕКОДИРОВАНИЕ РАСШИРЕННЫХ КОДОВ РИДА—СОЛОМОНА Незначительная модификация любого декодера для кода Рида— Соломона позволяет получить декодер для расширенного кода Рида—Соломона. Один из возможных способов состоит просто
300 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ в переборе всех q2 возможных значений ошибок в двух символах расширения и последующих попытках декодирования для каждой пары. Если такая попытка приводит к кодовому слову при / или менее исправлениях, то результат правилен, так как только одно кодовое слово находится на расстоянии /от принятого слова. Лучше, однако, отдельно рассматривать два случая возмож- ных конфигураций ошибок: в первом случае искажен хотя бы один из символов расширения, а во втором ошибок в символах расширения пет. Сообщение при этом декодируется дважды (для каждого из случаев по отдельности). Пусть х) S/= V/j./, при / = 1, .... 2/— 2, и пусть So Efo v_ и S^—i У/я-я—i — если v_ и не искажены. В первом случае во внутреннем векторе происходит не более t— 1 ошибок и поэтому 2/—2 компонент синдрома S), ..., S2»_2 достаточно для того, чтобы правильно восстановить внутренний спектр конфигурации ошибок. Эти 2t 2 компонент синдрома можно рекурреитпо продолжить до п— 2 компонент спектра конфигурации ошибок, так как S, = Ef-±-ic. Во втором случае все ошибки лежат во внутреннем векторе, но их не более t, и поэтому для восстановления спектра конфигурации ошибок компонент достаточно 2/ компонент Sc, .... S2f..i- Вообще говоря, одной попытки декодирования недостаточно и приходится делать обе попытки но так как ми нимальнсе расстояние кода равно 2t-f- 1, может быть найдена только одпа конфигурация не более чем из / ошибок. Чтобы не удваивать сложность декодера дублированием деко- деров, опишем вариант разделения вычислений, который дает лишь незначительное увеличение сложности. В этом параграфе мы опишем модификацию алгоритма Берлскэмпа—Месси для де- кодирования расширенных кодов Рида—Соломона, а в следую- щем сделаем то же самое для расширенных кодов БЧХ. Ограни- чимся вычислением многочлена локаторов ошибок, так как осталь- ные шаги алгоритма паи уже известны. 11аиболее важными расширениями кодов Рида—Соломона являются расширения на один символ, так как среди них содер- жатся коды длины 2”, а во многих приложениях в качестве длины кода используется именно степень двойки. Мы начнем с этого случая, так как оп претставляет практический интерес из-за простоты декодера и так как его лщко объяснить. В рассматриваемом коде спектральные компоненты С;,, ... .. ,С/с^21—2 равны нулю и единственную проверку на четность дает символ Г| = Равенство нулю 21— 1 компонент га- рантирует, что минимальное расстояние в коде равно 2 /, и поэтому код позволяет исправлять I — I и обнаруживать I ошибок. Блок *) В случае расширения кода на два символа удобно изменить нашу обыч- ную индексацию и обозначить компоненты синдрома через So, .... Ssf-i
9.3. РАСШИРЕННЫЕ КОДЫ РИДА-СОЛОМОНА 3Q1 из 2 /компонент синдрома начинается с компоненты равной V,, и заканчивается компонентой S2Z, равной V/04-2/_i - t»|. Пред- положим, что произошло не более / ошибок, и проведем итера- ции алгоритма Берлекэмпа—Месси от Sj до Sa<_i. Если L2t_2 с С /— I и невязка Д8и равна нулю, то, согласно теореме 7.5.3, во внутреннем векторе произошло не более t - 1 ошибок и вы- численное значение многочлена локаторов ошибок правильно. В противном случае во внутреннем векторе произошло /ошибок, и, следовательно, символ у+ правилен. Дополнительная компо- нента синдрома S2t позволяет продолжить алгоритм Берлекэмпа— Месс» еще на один шаг, так что полное число итераций равно 2/, и поэтому найден многочлен локаторов / ошибок. Декодер для расширенного на одну позицию кода Рида—Соломона показан па рис. 9.5. Декодер для расширенного на два символа кода Рида—Соло- мона более сложен и описать его труднее. Предположим, что произошло не более / ошибок. В пашем распоряжении имеются 2/— 2 компонент внутреннего синдрома, начиная с компоненты St, равной V/e Согласно теореме 7.5.3, воспользуемся ими для исправления 21—2 ошибок во внутреннем векторе и обнаруже- ния /ошибок. Иначе говоря, начиная с S, и выполняя 21—4 итераций алгоритма Берлекэмпа—Месси, найдем многочлен ло- каторов ошибок. Если £st_4 с t— 2, то сделаем еще две итера- ции и остановимся, если хотя бы одна из невязок A2t_s или A8t_8 отлична от нуля. Если обе невязки равны нулю, то во внутрен- нем векторе произошло не более 2/ -2 ошибок. В этом случае многочлен локаторов ошибок вычислен правильно и может быть использован для дальнейшею исправления ошибок во внутрен- нем векторе. Так как полезная информация может быть полностью выделена из внутреннего вектора, то декодирование закончено. В противном случае внутренний вектор содержит /— 1 или / ошибок, и поэтому искажено не более одного граничного сим- вола. Следовательно, хотя бы одна из компонент So и S2«_i син- дрома правильна, а если все ошибки произошли во внутреннем векторе, то они правильны обе. Присоединяя сначала одну, а затем вторую из них к остальным компонентам синдрома, полу- чим два блока по 2/— 1 символов, хотя бы один из которых со- держит 2/— 1 правильных компонент синдрома. Теперь дважды применим алгоритм Берлекэмпа—Месси, сна- чала к одному из этих блоков (от &'о до S2f_2). а затем к другому (от Sj до S2t_i)- Каждый раз будем исправлять / - 1 и обнару- живать / ошибок. Если все /ошибок расположены во внутреннем векторе, то обе попытки позволят обнаружить / ошибок во вну- треннем векторе, и, следовательно, оба символа расширения являются правильными. Если при одной пли при обеих попытках не обнаруживается / ошибок, то во внутреннем векторе произошло
302 ГЛ. U. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Рис. S.5. Декодер для расширенного на один символ кода Рида—Соломона. только I — 1 ошибок, и, следовательно, многочлен локаторов оши- бок вычислен правильно и может быть использован для исправ- ления внутреннего вектора. Так как информация может быть пол- ностью извлечена из внутреннего вектора, декодирование закон- чено.
0.4. ДЕКОДИРОВАНИЕ РАСШИРЕННЫХ КОДОВ БЧХ 303 Наконец, если во внутреннем векторе обнаружено t ошибок, то оба граничных символа правильны. Следовательно, и обе гра- ничные компоненты синдрома также правильны, и в нашем рас- поряжении имеется 21 правильных компонент синдрома, позво- ляющих исправить t ошибок во внутреннем векторе. Описанная процедура декодирования все же дважды обра- щается к алгоритму Берлекэмпа—Месси. Такое описание выбрано из соображений простоты объяснения; процедуру можно сделать более компактной. 9.4. ДЕКОДИРОВАНИЕ РАСШИРЕННЫХ КОДОВ БЧХ Теперь мы можем описать декодирование расширенных на два символа кодов БЧХ, определенных в § 8.5. Если конструктивное расстояние d кода является нечетным числом, то представлен- ный в расширении поля код со своими хвостами образует подкод кода Рида —Соломона, и можно использовать уже описанный декодер для расширенного на две позиции кода Рида—Соломона. Если конструктивное расстояние кода четно, то к одному из хвостов добавим проверку на четность. Пока еще без доказатель- ства мы утверждаем, что эта процедура приводит к коду, мини- мальное расстояние которого не меньше d 4- 1. Докажем этот факт, выписав соответствующий алгоритм декодирования. Деко- дер аналогичен декодеру для расширенного на два символа кода Рида—Соломона. Теорема 9.4.1. Расширение на два символа двоичного кода БЧХ с четным конструктивным расстоянием d при использовании дополнительной проверки на четность на одном из хвостов приво- дит к коду, минимальное расстояние которого равно по меньшей мере d + 1. Доказательство. Пусть t — d/2. Построим декодер, исправ- ляющий /ошибок. В нашем распоряжении имеются 2/ — 3 ком- понент внутреннего синдрома и две граничные компоненты син- дрома Su = Vic — п_ и Szt- 2 = Vj. 12t -2 ~ v±. которые правильны, если граничные символы и_ и вс содержат ошибки. По предпо- ложению конструктивное расстояние d является четпым числом, а в силу ограничений сопряженности числа Jo п jt, -|- 21—2 должны быть нечетными. Эти требования выполняются только в том случае, когда /в<0 и /0 -|-2/— 2 > 0. Следовательно, ограничения сопряженности гарантируют также, что Cjt_t — 0 и С/о(.г/_| = 0, так как частоты (/0 - 1)/2 и (/„ }-2/—1)/2 являются четными. Следовательно, мы имеем еще две компо- ненты синдрома, а именно S_i - V/.—i и Sa_j = V/B|s/—i- Так как v* дополнительно содержит проверку на четность, то можно определить, четно или нечетно число произошедших
304 ГЛ. 9. АЛГОРИТМЫ: СПЕКТРАЛЬНЫЕ МЕТОДЫ в этом хвосте ошибок. Предположим, что эта проверка на четность указывает на ошибку. Тогда во внутреннем векторе содержится не более t— 1 ошибок. У нас имеется 2t— 3 внутренних компо- нент синдрома. Это позволяет исправить t — 2 и обнаружить t 1 ошибок во внутреннем векторе. Если во внутреннем век- торе обнаружено t — 1 ошибок, то символ v_ ошибок не содержит, величина So является правильной и может быть использована для еще одной итерации при вычислении многочлена локаторов t — 1 ошибок. Это завершает декодирование в случае, когда проверка на четность в символе указывает ошибку. В противном случае, когда проверка на четность в символе и, не указывает ошибки, в этом хвосте имеется четное число ошибок. Тогда для исправления t— 3 ошибок во внутреннем векторе вы- полним, начиная с Slt 2t— 6 итераций алгоритма Берлекэмпа— Месси (используя тем самым 2t— 3 компонент внутреннего син- дрома) и зарезервируем остальные три итерации для обнаруже- ния t или меньше ошибок во внутреннем векторе. Если t — 3 ошибки не исправились, то внутренний вектор содержит t—2, или t— 1, или t ошибок, и, следовательно, граничные символы содержат не более двух ошибок. Следовательно, либо п+ прави- лен, либо v+ содержит две ошибки, a и_ правилен. Хотя бы одна из граничных компонент синдрома правильна. Присоединим S_x или So к одному концу внутреннего синдрома и 52._( или Ssl к другому концу. Эго даст пам два синдрома с 2t— 1 компонентами, хотя бы один из которых правилен. Для каждого из синдромов воспользуемся алгоритмом Берлекэмпа— Месси для исправления I— 1 и обнаружения t ошибок во внутрен- нем векторе. Если во внутреннем векторе содержится t ошибок, то оба синдрома должны указать на это, и в таком случае гранич- ные символы не искажены. Если одна или обе попытки декоди- рования не обнаруживают во внутреннем векторе t ошибок, то в нем содержится не более t— 1 ошибок п тогда вычисленный многочлен локаторов ошибок является правильным и позволяет завершить декодирование. Наконец, если во внутреннем векторе обнаружено t ошибок, то в граничных символах ошибок нет и в нашем распоряжении имеются 2t + 1 компонент синдрома, позволяющих исправить t ошибок. 9.5. ДЕКОДИРОВАНИЕ ВО ВРЕМЕННОЙ ОБЛАСТИ В § 9.1 было показано, что задача декодирования кодов БЧХ может быть сформулирована как задача спектрального оцени- вания. Декодер состоит из преобразователя Фурье (вычислителя синдрома), авторегрессионного спектрального анализатора (алгр-
е.5. ДЕКОДИРОВАНИЕ ВО ВРЕМЕННОЙ ОБЛАСТИ 3Q5 ритма Берлекэмпа Месси) и обратного преобразователя Фурье. Задание декодера такими блоками облегчает его исследование, однако практическая реализация декодера может существенно отличаться от этой схемы. В настоящем параграфе мы покажем, как преобразовать вы- числительный алгоритм, чтобы избежать преобразования потока данных. Это позволит исключить из декодера оба преобразова- ния Фурье. Главная идея такого преобразования основывается на том, что рекурсия в алгоритме Берлекэмпа—Месси линейна по обоим входным мноючлепам (хотя нелинейна но невязке). Во временной области рекуррентные уравнения имеют свои ана- логи, которые можно найти аналитически с помощью преобразова- ния Фурье. Это дает систему уравнений декодирования, связы- вающих непосредственно поступающие данные, и исправление ошибок производится без преобразований Фурье. Чтобы исключить из вычислений преобразование Фурье, применим это преобразование ко всем величинам, входящим в фор- мулировку теоремы 7.4.1. Преобразование вектора Л, обозначаю- щее вектор локаторов ошибок во временной области, обозначим через X = = 0, ...» п- 1}. Преобразование вектора В обозначим соответственно через b -- {&i|i = 0, ..., п— 1}. Алгоритм Берлекэмпа—Месси превращается во временной области в рекуррентный процесс, который описывается следующей тео- ремой. Теорема 9.5.1. Пусть v— принятое зашумленное слово кода БЧХ, и пусть величины i = 0, .... п — 1, вычисляются с помощью рекуррентных уравнений Лг = X а*' Lr = б, (г - £г_,) бг£г_1. Г1 | 1 -М‘]ГГ’] lf>J " |а"Ч W J М ’ где г = 1, ..., 2/, начальные условия имеют вид — 1, bl0> = 1 для всех i, а б, — (1 —fy) = 1, если одновременно Дг =/= О и %LT_X г — 1, и 6,--Об противном случае. Тогда = О тогда и только тогда, когда et у= 0. Доказательство. Применим преобразование Фурье ко всем входящим в формулировку теоремы векторным величинам. Тогда все рекуррентные уравнения запишутся в виде, указанном в фор-
306 СЛ. »• АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Принятое КоЙовое слово слово Рис. 9.6. Временной декодер для двоичного кода БЧХ. мулировке теоремы 7.4.1, за исключением уравнения для не- вязки дг - г'лг-" К-,-, в котором вместо вектора S стоит вектор V. Но Лу,—'* - 0 дли />2/ и Vj = Sj для / = 1, .... 2t. Следовательно, Az-’lAf ’’S^p и алгоритм во временной области формулируется аналогично теореме 7.4.1. □ Так как в двоичном случае i-я координата принятого слова содержит ошибку тогда и только тогда, когда — 0, то с вычис- лением вектора X, исправление ошибок почти заканчивается. Декодер для двоичного кода с декодированием во временной области показан на рис. 9.6. Для недвоичных кодов во временной области нельзя отрани- читься вычислением локаторов ошибок; надо вычислить еще ве- личины ошибок. В частотной области величины ошибок можно вычислить с помощью следующих рекуррентных уравнений’ - — Il А^,, А '21 1..........п 1. j-l Как только многочлен локаторов ошибок вычислен, можно со- гласно этой рекурсии по известным 2t компонентам вектора Е вычислить все остальные его компоненты, проведя п—2/ите- раций. Следующая теорема описывает соответствующий этому процесс во временной области. В этом случае вельзя просто воспользо-
9.5. ДЕКОДИРОВАНИЕ ВО ВРЕМЕНнЬй ОБЛАСТИ 307 ваться преобразованием Фурье, а нужна некоторая пере- стройка. Теорема 9.5.2. Пусть v — с + е — принятое зашумленное слово кода БЧХ. При заданном во временной области векторе ло- каторов ошибок X решением множества рекуррентных уравнений п—1 Дг L of* of"1’ - Ага-"" является г*"1 - е,-, t — 0.п — 1. Доказательство. Разобьем шаг рекурсии в частотной области на два шага, начиная с принятого спектра V и покомпонентно преобразуя его в Е; А, V, - ( — Е Л,К_;) = £л,К_,. Так как V}-2<1 = Е,- для / = 1, .... 2t н А/ -= О для j > t, то вы- писанные выше уравнения эквивалентны следующим: Е,— ХЛА-/ /=* Эта эквивалентность и доказывает теорему. □ На рис. 9.7 изображен временной декодер для полей характе- ристики 2. Левая часть блок-схемы соответствует теореме 9.5.1, а правая — теореме 9.5.2. В процессе проведения итераций в ле- вой части формируется преобразование Фурье многочлена лока- торов ошибок. При каждой итерации в правой части принятое слово преобразуется таким образом, что одна компонента спектра принятого слова переходит в компоненту спектра вектора оши- бок. Таким образом, после выполнения последней итерации при- нятое слово преобразуется в вектор ошибок. Привлекательность декодера во временной области объяс- няется двумя причинами. 1. Вычисления проводятся в один этап, а процедура Ченя и рроцедура вычисления синдрома отсутствуют. Это приводит п более экономной конструкции, особенно при аппаратурной кеализации отдельных блоков декодера. 2. Такой декодер при умеренных значениях п должен вы- полнять намного меньше вычислений, чем декодер, использую-
308 гл- в- АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ] МЕТОДЫ щий прямое преобразование Фурье и общепринятый алгоритм Берлекэмпа—Месси. Независимо от числа исправляемых ошибок работа декодера занимает п тактов. Так как за каждый такт обрабатывается век- тор размерности п, то сложность декодера является величиной
».е. ДЕКОДИРОВАНИЕ ЗА ГРАНИЦЕЙ БЧХ 3Q9 О (п2). При больших п можно построить декодер с меньшим чис- лом вычислений. Однако для малых п, включающих интервал практически используемых длин кода, временной декодер более привлекателен и обладает простой структурой. В эпоху больших интегральных схем структурная простота по меньшей мере столь же важна, сколь и число арифметических операций. 9.6. ДЕКОДИРОВАНИЕ ЗА ГРАНИЦЕЙ БЧХ Часто случается, что конфигурации ошибок, вес которых мало отличается от радиуса упаковки кода, не попадают ни в одну сферу декодирования. Такие лежащие между сферами декоди- рования ошибки це совсем обоснованно называют направляемыми конфигурациями ошибок. Они обычно обнаруживаются, но не исправляются. Иногда удается исправить некоторые из этих ошибок, расширив множество исправляемых конфигураций оши- бок. Укажем некоторые методы, позволяющие выполнить такое декодирование. Распознать неиспрявляемые кодом БЧХ конфигурации оши- бок можно либо по тому, что число корней многочлена локаторов ошибок, лежащих в поле локаторов, не равно его степени, либо по тому, что компоненты вектора ошибок выходят за пределы поля символов GF (</). Чтобы обнаружить такие ситуации, нет необхо- димости полностью выполнять все вычисления алгоритма деко- дирования: они могут быть распознаны по свойствам рекурреитно вычисляемого спектра ошибок’ Е, = - Е Ai'-H t=l Согласно теореме 8.2.1, принадлежность всех компонентов кон- фигурации ошибок полю GF (д) можно распознать, проверив вы- полнение условия EJ =^((/в)) для всех индексов / в спектре этой конфигурации. Если такая проверка указывает на пеисправ- ляемую конфигурацию, то вычисления прерываются. Требование, состоящее в том, что степень многочлена Л (л) равна числу кор- ней многочлена Л (х) в поле GF (qm), можно проверить с помощью условия периодичности последовательности коэффициентов IE/I : Е«„_()1 = Ej для всех /. Таким образом получается вто- рое правило проверки для обнаружения неисправляемой конфи- гурации ошибок и прекращения декодирования. Это правило основывается на следующей теореме. Теорема 9.6.1- Предположим, что Л(х) является ненулевым многочленом наименьшей степени, удовлетворяющим условию «tea А (*) Е,---X ^hEj^k
310 ГЛ. S. АЛГОРИТМЫ: СПЕКТРАЛЬНЫЕ МЕТОДЫ для I = 21 1, .. , п + 21, где п = qm — 1. Число различных корней многочлена А (х) и поле GF{qm) равно степени этого много- члена тогда и только тогда, когда = Е. для всех i — = 1, ...» 2t. Доказательство. Предположим, что число различных корней многочлена Л (х) в поле GF (qm) равно его степени. Тогда Л (х) делит х" — 1 и существует многочлен Л° (х), такой, что Л° (л) Л (х) = х" 1. Следовательно, так как -О, то выполняется равенство Л (х) Е (х) = 0, и, таким образом, Л° (х) Л (х) Е (х) = (х" — 1) £ (х) = 0. Отсюда вытекает, что Ej -= Ецп+т Для всех /. Обратно, предположим, что Е- = Ецп+т для всех /. Тогда (х” — 1) Е (х) = 0. Но по условию Л (х) представляет собой такой ненулевой многочлен наименьшей степени, что Л (х) Е (х) = = 0 (mod х” — 1). Согласно алгоритму деления (Z- 1) = Л(х)<2(х)-| г (л), так что (Z 1) / (л) л (л) / (А) <2 (л) + г (л') £ (л). Следовательно, г (х) Е (х) = 0 (шо<1 х" — 1). Но степень г (х) меньше степени Л (х), так что многочлен г (х) должен быть ра- вен нулю. Следовательно, многочлен Л (х) делит х" — 1 и все его корни являются корнями многочлена х" — 1. □ Если нарушается хотя бы одно из двух условий, т. е. если Еч/ =/= £((W-)) для некоторого / или £цп+/)) У= Е,- для некоторого /, то обнаруживается конфигурация более чем из t ошибок. Иногда желательно декодировать за пределами конструктив- ного расстояния. Небольшое продвижение за конструктивное рас- стояние дает продолжение алгоритма Берлекэмпа -.Месси после 21 итераций. Основная идея состоит во введении дополнительных неизвестных синдромов (или дополнительных невязок) и анали- тическом продолжении алгоритма декодирования, при котором многочлен ошибок вычисляется как функция от этих неизвест- ных. Затем, придавая этим неизвестным различные возможные значения, методом проб и ошибок в поле символов кода разыски- вается вектор ошибок минимального веса. К сожалению, слож- ность этого метода очень быстро растет с отходом от конструк- тивного расстояния, так что его можно использовать не всегда.
®.«. ДЕКОДИРОВАНИЕ ЗА ГРАНИЦЕЙ БЧХ 31 1 Тем не менее описанный выше метод применим во многих слу- чаях; укажем некоторые из них. 1. Двоичные коды БЧХ, у которых проверочные частоты обра- зуют блок длины 2/, по истинное минимальное расстояние пре- восходит 21 + 1. (Одним из примеров такого кода является код Голея. Другой пример дается (127, 43, 31)-кодом БЧХ, конструк- тивное расстояние которого равно только 29.) 2. Циклический код, проверочные частоты которого не обра- зуют непрерывного блока. 3. Декодирование некоторых ошибок веса t -|- 1 в коде Рида— Соломона или коде БЧХ, исправляющем t ошибок. 4. Декодер для альтернантных кодов. Такое продолжение алгоритма можно строить как во времен- ной, так и в частотной области, а также некоторым смешанным способом. Можно строить одновременно и многочлен локаторов ошибок А (х) (или £ (х)), и многочлен ошибок е (х). Сложность этого процесса зависит от подхода. Если символы кода лежат в подполе поля локаторов ошибок, то схема, в которой сначала вычисляется многочлен локаторов ошибок, приводит к неопре- деленностям, разрешить которые можно только вычислением со- ответствующих многочленов ошибок и проверкой принадлежности их компонент полю символов кода. В этом случае разумно ввести в вычисления дополнительные проверки, позволяющие сразу ликвидировать неопределенные ситуации при построении А (х). Начнем с рассмотрения кода Рида—Соломона над GF (q) с конструктивным расстоянием 2i+ 1. Произвольный много- член А (х) степени t + v с t + v различными корнями в GF (</) представляет собой допустимый многочлен локаторов ошибок, если n—1 gA/Sr_/ = 0, r= 1-M + v, ..., 2t. Такой многочлен наименьшей степени с А„ = 1 (если он является единственным) соответствует кодовому слову, находящемуся на наименьшем расстоянии от принятого слова. Если степень этого многочлена не выше t, то он будет вычислен алгоритмом Бер- лекэмпа—Месси. Но даже если произошло больше, чем tошибок, а многочлен наименьшей степени с указанными свойствами яв- ляется единственным, то принятое слово может быть однозначно декодировано, коль скоро этот многочлен найден. Для кода Рида— Соломона нет необходимости вычислять величины ошибок, так как ошибки всегда лежат в поле СГ (q). Если многочлен наимень- шей степени не является единственным, то имеется несколько возможных конфигураций ошибок одного и того же веса, и все они согласуются с принятым словом.
312 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Предположим, что произошло I Ц- 1 ошибок; тогда, чтобы вычислить Л (х), достаточно найти две неизвестные компоненты синдрома S2/4-1 и §2/+2Или две невязки Д2/4-1 и Д 2/4-2. Итак, про- должим аналитически алгоритм Берлекэмпа—Месси на две ите- рации с двумя неизвестными значениями невязки. Имеем Гл»«=>(х)1 Lb®H4(x)J - Г 1 Лм*1Г 1 -Диц*]Глю,Ю1 Й2/+В х] W?; J [в<2/| (X) J ’ где неизвестные удовлетворяют условиям А2/4-1, Д2/4-2 G GF (//); 62/4-1, 62/4-2 € {0, 1|. Все остальные величины в правой части известны по 2/ синдромам. Преобразование частотной области во временную дает Ь (2,+2П _ [fc<2/+2lj = Г 1 -д2/+2<х-П Г 1 -Д2/41сгЧГлГ,'| 1^2/4-262/4.2 62/450“Z J 1.ДЙ4162/4 1 62/4-i«-/ где мы воспользовались тем фактом, что если Е,- — Е^, то обрат- ное преобразование удовлетворяет равенству е, = а~‘ef. Теперь, если возможно, мы должны выбрать неизвестные так, чтобы век- тор ошибок содержал не более 14- 1 ненулевых компонент. Рассмотрим два возможных случая *): (1 ) хр+я = гГ> - Л.а-'б/’1 - (2 ) = zj"> - 4И-'ь'-2'> - где в первом случае Д1 и Д2 — константы, не равные одновременно нулю, а во втором случае At отлично от нуля. При л'2<+2) = О каждое из этих уравнений надо разрешить относительно Л, и Д8 для ровно t + 1 значения индекса i. Это даст локатсры t + 1 ошибок, и дальнейшее декодирование можег быть завершено как декодирование стираний. Хотя такой поиск представляется весьма трудоемким, он очень прост по структуре и хорошо упорядочен, так что не составляет труда сконструировать для его выполнения блок, содержащий регистр сдвига. Поиск решения можно организовать различным *) Имеются в виду дпе возможности, задаваемые уравнением для нерпой компоненты предыдущего векп>рного равенства при 62/*1________0 11 = । соответственно Прим, черев.
е.в. декодирование за Границей бчх 313 образом. Одним из возможных подходов является построение гистограммы. Например, для уравнения (2) при каждом значе- нии А, построим гистограмму величины (ЭДЯ> — Аи-*^2**)-* х X а“иХ{я>. Любая составляющая гистограммы, принимающая значение <4* I, соответствует возможной конфигурации из t |- 1 ошибок. Декодер можно модифицировать далее так, чтобы он исправ- лял t 4- v ошибок. Хотя уравнения при этом удлиняются, такой подход представляется практически вполне возможным для t , 3 и / 4~ 4 в зависимости от длины кода. Теперь рассмотрим двоичные коды. Оли отличаются от кодов Рида—Соломона тем, что для них декодер может быть упрощен в силу теоремы 7.6.1, по одновременно усложняется за счет того, что многие из находимых конфигураций ошибок веса 14- V не являются двоичными и поэтому должны быть отброшены. Предположим, что у нас имеется двоичный код БЧХ с кон- структивным расстоянием 2t + 1, и мы хотим исправлять все однозначно декодируемые конфигурация веса <4-1. Единствен- ными величинами, которые может измерять декодер, являются 2< компонент синдрома Si, .... S2t. Во всех остальных частотах стоят либо произвольные значения, либо значения, определяемые условиями сопряженности. Итеративный алгоритм в двоичном случае дает Л<г'+2» (х) =,- Л<2° (х) - Да+1 (х). Во временной области он переписывается в виде ^+2>=ф)_Д2/+1а-^О и предполагается, что конфигурация ошибок веса t или менее не была найдена алгоритмом. Построим гистограмму величины но всем ненуле- вым элементам поля GF (д). Каждая равная t 1 компонента этой гистограммы соответствует кандидату на роль конфигурации ошибок. Зная локаторы ошибок, вычислим эту конфигурацию. Если она двоична и единственна, то декодирование завершено успешно- Рассмотрим далее двоичный код, у которого проверочные частоты не являются последовательными. Например, провероч- ными частотами двоичного циклического (63, 28, 15)-кода яв- ляются С,, С3, С8, С7, Св, Сц и С81. Как можно проверить на ЭВМ, минимальное расстояние кода равно 15. По сравнению с (63, 24, 15)-кодом БЧХ этот код обладает тем преимуществом, что обеспечивает большую скорость, но зато для кода БЧХ изве- стен алгоритм декодирования. Однако ценой незначительного- усложнения частотный декодер для кода БЧХ удается преобра-
314 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ зовать в декодер для (63,28, 15)-кода. Используя описанную выше процедуру, можно найти все конфигурации ошибок веса не более 7, которые согласуются с 12 последовательными прове' речными частотами, а затем вычислить S2i для каждой из них Только одна из них будет соответствовать измеренному значе- нию Sai. 9.7. ДЕКОДИРОВАНИЕ АЛЬТЕРНАНТНЫХ КОДОВ Альтернантные кода яаляются ограничением на подполе простей- шей модификации кодов Рида—Соломона, .Минимальное рас- стояние d* альтернантного кода не меньше конструктивного рас- стояния d исходного кода Рида—Соломона. Любая процедура декодирования кода Рида—Соломона может быть использована для декодирования альтернантных кодов. Необходимо лишь мо- дифицировать синдром либо с помощью обратного преобразова- ния шаблона, либо путем умножения на нею во временной области, либо путем вычисления свертки в частотной области; никаких других изменений не требуется. Таким образом, для декодирования альтернантных кодов в пре- делах конструктивного расстояния можно применять любой вре- менной или частотный декодер для кодов БЧХ. Привлекатель- ность альтернантных кодов, однако, состоит в том, что их мини- мальное расстояние много больше их конструктивного расстоя- ния, В то же время использование альтернантных кодов с БЧХ-де- кодером дает мало преимуществ по сравнению с использованием кодов БЧХ с БЧХ-декодером. Конечно, есть резон в том, чтобы использовать альтернантные коды с БЧХ-декодером при исправ- лении ошибок в пределах конструктивного расстояния и обнару- жении ошибок вплоть до минимального расстояния. Можно также применить описанные в § 9.6 метода декодирования за конструктивным расстоянием, хотя и в ограниченных пределах. Полные возможности альтернантных кодов не будут реализо- ваны до тех пор, пока не будут найдены конструктивная про- цедура построения дающих хорошие коды шаблонов и алгоритм декодирования, реализующий их минимальное расстояние. Профильтрованный спектр принятого слова дается равенством л-О Для кода Гоппы спектр в свою очередь вычисляется из Т по формуле п— I 21
9.7. ДЕКОДИРОВАНИЕ АЛЬТЕРНАНТНЫХ КОДОВ 316 где степень многочлена Гоппы G (х) равна 2t и G (х) Н (х) = = 1 (mod х’ — 1) Поскольку = 0, j — п — 2/ Ц- 1, .. , n, то компоненты синдрома даются равенствами Sj-in—2/) =- rt))Vk, j = n- 2t-'-l, .... n, k=0 или Sj — 2 ^((/4-n—2/—i ~ 1» ••-> 2t. fe—0 По этим компонентам синдрома вычислим мноючлен локаторов ошибок и продолжим его рекурреитно для получения всех ком- понент Sj, j — 1, .... п. Спектр вектора ошибок находится из равенств л—i Ej = S^GfeS((j_fc-n+2n)« / = 0. J--> n—1. На рис. 9.8 построен частотный декодер для альтернантных кодов. Синдром модифицируется в частотной области с помощью свертки со спектром шаблона. В принципе если эта операция реализуется до преобразования Фурье с помощью покомпонент- ного умножения во временной области, то число необходимых умножений будет меньше. Принятое слово, однако, состоит из символов малого алфавита, скажем GF (2). Поэтому могут ока- заться предпочтительнее преобразование Фурье в малом поле и модификация синдрома с помощью свертки в частотной области. За исключением шага, связанного с шаблоном, декодирование альтернантных кодов происходит точно так же, как декодирова- ние кодов Рида -Соломона. Так же, как и коды Рида—Соломона, альтернантные коды можно декодировать за пределами конструк- тивного расстояния. В пределах минимального расстояния кодо- вое слово единственно. Декодер для кода Рида Соломона, при- меняемый для декодирования альтернантных кодов, может ука- зать и другие слова, но они будут содержать компоненты, не при- надлежащие полю символов кода, и такие слова должны быть отброшены При декодировании кодов Гоппы в узком смысле такого от- брасывания ложных кодовых слов можно заранее избежать, если добавлять только компоненты синдрома, согласующиеся с огра- ничениями сопряженности ESi = Ё/. Две дополнительные ком-
316 ГЛ. 8. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ поненты синдрома Sj/j-i и Sa|2. необходимые для исправления t + 1 ошибок, неизвестны. Но а fe=O следовательно а 2г Ei —GuSzt+x -f- G*S<(2/-f-i-*))’ £2 = G>Sa-i-2+2j G*S((a+2-*)),
9. Я ПРЕОБРАЗОВАНИЯ В КОНЕЧНЫХ ПОЛЯХ 317 и так как Е2 — £?, то S21+2 — Gif' GkSit+2—k I GoSif-H + S 1—л j . Таким образом, в качестве неизвестного надо ввести только Shz-j-i- В общем случае неизвестными являются компоненты с нечетными индексами, а компоненты синдрома с четными индексами вычи- сляются. Необходима только половина новых компонент син- дрома, а конфигурация ошибок всегда двоична. Если результи- рующий многочлен локаторов ошибок допустим, то декодиро- вание закончено. К сожалению, для декодирования s ошибок за пределами конструктивного расстояния необходимо просмо- треть qs возможностей для неизвестных компонент синдрома. 9.8. ВЫЧИСЛЕНИЕ ПРЕОБРАЗОВАНИЙ \ В КОНЕЧНЫХ ПОЛЯХ Рассмотрим преобразование Фурье Vj — Xj *—О где a — элемент порядка п в поле GF (у™)- Для малых значений п его можно вычислять в том виде, в каком оно записано, но так как вычисление содержит л2 умножений, то оно становится прак- тически неприемлемым при больших длинах. Необходимы эф- фективные методы вычисления преобразования Фурье, и мы располагаем некоторыми такими методами Одним из наиболее мощных методов, пригодных для многих значений длин, является переход от одномерного преобразования к многомерному пре- образованию Фурье. Все такие методы известны под общим на- званием быстрого преобразования Фурье. Изучение этих методов мы отложим до гл. И; в этом же параграфе мы рассмотрим дру- гие методы вычисления преобразования Фурье, а именно chirp-ал- горитм Блюстейна, алгоритм Рейдера для простых значений длин преобразования и алгоритм Герцеля. Представленные на рис. 9.9 алгоритмы Блюстейна и Рейдера являются различными способами перехода от преобразования Фурье к свертке; первый из них переводит «-точечное преобразо- вание Фурье в «-точечную свертку, а второй (который приме- няется в случае, когда п — простое число) переаодит «-точечное преобразование Фурье в (п - 1)-точечную свертку. Во всех случаях, когда элемент а имеет квадратный корень, может использоваться chirp-алгоритм Блюстейна. Согласно тео- реме 4.6 15, каждый элемент поля Галуа имеет квадратный ко- рень. Для полей характеристики 2 /а = «("+>>/2, так как
318 гл- в- АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Chirp-алгоритм Блюстейна: V;= f a'lv, Е Iff-CPj КИО-фильтр с п omeoCO.Mii chirp chirp Алгоритм Рейдера: Длина п должна быть простым числом В качестве примитивного элемента поля GF (л) исполь- зуется л. 1, 2, 3, ..., п — 1 = л1, л2, л8,..., л"—’(mod п) я—I Vi ~ У, af’Vi, i — д—1«—j =. nr O’) »^o n-l n—I Vo — S vt, Vt^v0 -j- У aO'tij = = V.-|-”e (a-'<"4'w-l)r,, 7 = 0, .., n 1 Vi = Vo -Г 5j (a"Z 11 - О vit, / = 0, .... л - 1 Перитовкч ЛЕрес'П°НТОЦ ------------J Сумма. 1---- 1 — - * Vo Рис. 9.8. Переход от преобразования Фурье к свертке.
9.8. ПРЕОБРАЗОВАНИЯ В КОНЕЧНЫХ ПОЛЯХ 319 п |-1 всегда четно. Если характеристика поля отлична от 2, то квадратный корень из а лежит либо в GF (qm), либо в GF Chirp-алгоритм Блюстейна определяется выражением где р — квадратный корень из а. В этом варианте преобразования Фурье производятся следу- ющие вычисления: п— 1 И- I «—I g (₽''!’,) = ff'lv, = g a'lv, - V,. Заметим, что chirp-преобразование состоит из поточечного ум- ножения V, на 0*’ (п умножений) с последующей циклической сверткой (КИО-фильтр с п отводами), за которой снова следует поточечное умножение на 0/' (п умножений). Поэтому полное число операций по-прежнему имеет порядок п2, так что chirp-ал- горитм асимптотически не эффективнее прямого преобразования Фурье. Однако в некоторых приложениях он допускает более простую аппаратурную реализацию. Кроме того, как будет показано в § 11J, прямое вычисление свертки можно заменить алгоритмом быстрой свертки. Алгоритм Рейдера можно использовать для вычисления пре- образования Фурье в произвольном поле GF (q), если только длина п является простым числом. Так как г — простое число, можно использовать структуру поля GF (п). Это простое поле не следует путать ни с полем GF (q), ни с любым ограничением или расширением этого поля. Выберем примитивный элемент л простого поля GF (п). Тогда каждое не превосходящее п целое число можно записать как сте- пень элемента эт. Перепишем преобразование Фурье в поле GF (q)t выделив пулевую частотную и нулевую временную ком- поненты: «—i Vo=,S°'’’ Vj == t-’o + X ai,'vi = V<> + X - l)ff, / = 1, - n- 1. i=i j=i Пусть r (i) обозначает единственное для каждого i от 1 до п — 1 целое число, такое, что в поле GF (п) выполняется равенство лг(‘) _ i функция г (i) яаляется перестановкой на множестве
320 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ {1, 2,..., п — 1}. Тогда Vj может быть записано в следующем виде: Так как г (i) задает перестановку, можно положить I — г (/) и k = п — 1 - г (i) и выбрать k в качестве индекса суммирования; это дает v,< = v„4 "£(«' к О ИЛИ К - (a”'-1- l)ri. fe—I где V't — V^t и v"k = ря„_*_1 — переставленные компоненты входных и выходных последовательностей данных соответственно. Теперь мы получили уравнения для вычисления циклической свертки последовательностей (f*! и {а31* — 1]. Таким образом, переставляя индексы входных и выходных данных, мы записали преобразование Фурье в виде свертки- Как видно из формул, необходимое для вычисления число операций опять имеет поря- док л2. Однако, так же, как и для алгоритма Блюстейна, свертка может быть вычислена при помощи алгоритма быстрой свертки, который будет описан в § 1J.1. Используя алгоритм Рейдера и равенство о = <х8, построим двоичное пятиточечное преобразование Фурье; задача состоит в вычислении величин V, = X tfw,, /= 0, ..., 4. i=0 Это преобразование нужно вычислить в поле GF (16), так как наименьшее т, для которого 5 делит 2т — 1, равно 4. Элемент 2 является примитивным в поле GF (5), и в этом поле имеем ра- венства 2® = 1, 2° - 1, 2* = 2, 2~> -= 3, 22 - 4, 2"2 — 4, 2й = 3, 2~9 = 2, задающие перестановку индексов. Таким образом, v\ v« - i, - о о;.
9.8. ПРЕОБРАЗОВАНИЯ В КОНЕЧНЫХ ПОЛЯХ 321 ВхоВ Выхсй Рис. 9.10. Вычисление пятиточечного преобразования Фурье с помощью алго- ритма Рейдера. Здесь суммирование является четырехточечной циклической сверт- кой. Полагая коэффициенты gi, равными ы2* — 1, фильтр Рей- дера можно описать многочленом g(x) над GF(16); тогда при со - а3 g (х) = (<о3 — 1) Xs + (<о4 — 1) х3 -|- (со8 — 1) х + (со — 1) = = а’х3 4~ а*1*8 4-а13х + а14. Вход и выход фильтра также можно описать многочленами, ко- эффициенты которых задаются соответственно переставленными компонентами векторов v и V : а (х) -= v3x* + vtx2 |- v2x + nlt b (x) = (Va - Vo) x3 4- (V4 - Vo) x3 + (V, - Vo) x + (V, - Vo), b (x) = g (x) a (x) (mod x* — 1)-
322 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ Многочлен g (t) фиксирован. Многочлен а (х) получается из многочлена v (.г) отбрасыванием первого коэффициента и пере- становкой остальных. Коэффициенты многочлена V (х) получаются из коэффициентов многочлена b (х) в естественном порядке. Алго- ритм приведен на рис. 9.10. Для выполнения циклической свертки можно выбрать любой удобный метод. В заключение данного параграфа приведен алгоритм вычисле- ния преобразования Фурье в поле Галуа, основанный на том, что элемент конечного поля содержит в этом поле много сопряженных элементов. Выполнение этого алгоритма требует около п log п умножений в GF (q‘"), но также около п2 сложений; поэтому он называется полубыстрым алгоритмом. Он представляет собой аналог в конечном поле алгоритма вычисления комплексного пре- образования Фурье, известного в теории обработки дискретных сигналов под названием алгоритма Герцеля. Этот алгоритм тре- бует не более log п умножений и п log п сложений символов поля для вычисления одной спектральной компоненты. При вычислении всех компонент спектра это приводит не более чем к п log п умно- жениям и п2 log п сложениям элементов поля. Величина Vj = EioHvt, j-я компонента преобразования Фурье, представляет собой значение многочлена v (х) в точке ai. Пусть f} (х) обозначает минимальный многочлен элемента ai. Степень этого многочлена не превосходит т. Можно записать ц (х) = fj (х) Q (х) 4- г (х), и, следовательно, »(«')=&(«оем 'М'Н Таким образом, для вычисления Vj надо разделить v (х) на fj (х) п вычислить значение полученного‘остатка г (х) в точке а<. По- скольку f} (х) — многочлен степени т} над полем GF (<?}, деление па fj (х) требует (п — т}) т} умножений элементов поля GF (qm) на элементы ноля GF (<д) и (п — т5) т} сложений в поле GF (q"‘)- Степень многочлена-остатка г (х) не превосходит гп} — 1, так что вычисление величины г (ai) требует tti} - - 1 умножений и столько же сложений в GF (qm). Следовательно, одну компоненту Vj можно вычислить по v (х) с помощью trij — 1 умножений в ноле GF (д,п), (п — nij) nij умножений элементов поля GF (qm) па эле- менты поля GF (д) и (п — tns -|- 1) т} - 1 сложений в поле GF (q,n). Поскольку преобразованный вектор содержит п компонент, такие вычисления нужно проделать п = qm — I раз, что дает не более т (qm — 1} умножений в поле GF (qm). Если два элемента сопряжены, то они имеют общий минимальный многочлен и, сле- довательно, общий остаток г (х). Поэтому нет необходимости каждый раз вычислять промежуточный многочлен г (х), а можно вычислить его один раз для всего класса сопряженных элементов.
ЗАДАЧ И 323 В частности, если q — 2. то необходимое число умножений в ноле GF (2Г') не превосходит п logs (п 1“ О- В отличие от алгоритма быстрого преобразования Фурье это остается верным даже тогда, когда 2т — I является простым числом. С другой стороны, число сложении не превосходит величины (и — 1} я-j-m (п }). -= л2 -|- пт 2п, так что необходимое число сложений является величиной О (п~). Если входной вектор принадлежит малому полю GF (q), то его преобразование (хотя оно является вектором в поле GF (дт)) может быть вычислено без умножений в поле GF (qm). Это проис- ходит потому, что в таком случае v (х) является многочленом нал GF (q) в вычисление величины Vj сводится к умножению элемен- тов из GF (q) на элементы из GF (qm}- Например, если q --- 2, то это означает сложение элементов пз GF (2"1), выбираемых в соот- ветствии с ненулевыми компонентами многочлена г (х). Таким обра- зом, для двоичного кода синдром вычисляется без всяких умно- жений в поле GF (2т) не более чем с п log п сложениями в GF (2) и не более чем с log п сложениями в GF ЗАДАЧИ 9.1. а. Построить декодер для (15, 8)-кода Препараты, дополняя алгоритм Берлекэмпа—Месси для двоичного случая еще одной итерацией. 6. Используя результат, подученный в и. а, построить декодер для кода Препараты во временной области. 9.2. Описать, как исправлять стирания в принятом слове с 2/ стираниями, дважды используя декодер для исправления только ошибок в двоичном коде. Как использовать такой декодер для одновременного исправления ошибок и сти- раний? 9.3. Заново решить задачу 7.3.6 из гл. 7, используя описанный в § 9.1 алгоритм Евклида. 9.4. Построить блок-схему декодера ошибок и стираний во временнбй области- 9.5. Построить блок-схему декодера во временной области для расширен- ного на одну позицию кода Рида—Соломона. 9.6. Если допустить возможность выполнения обратного преобразования Фурье для й (х) и Л* («), то во временной области можно построить декодер с 21 тактами работы, использующий алгоритм Фортт. Выписать итеративные уравнения для вычисления многочленов й (х) и Л' (х), аналогичные итератив- ному алгоритму Берлекэмпа—Месси Использовать обратное преобразование Фурье этих уравнений для построения декодера с 2t тактами работы во вре- менной области. 9.7. Построить алгоритм Форни для произвольного /0, комбинируя решение задачи 8.1 и утверждение теоремы 7.5 2. 9.8. Выписать полностью уравнения пятиточечпого преобразования Фурье в поле GF (16), вычисляемого по алгоритму Рейдера. Построить диаграмму перестановки компонент векторов и блок-схему KWO-фильтра с указанием ве- совых множителей. 9.9. Использовать алгоритм Гернеля для вычисления в поле GF (8) преоб- разования Фурье вектора, задаваемого многочленом V (ж) = а8*» 4- а6*6 + Xе ах3 4-а8*3 «4-1. И’
324 ГЛ. 9. АЛГОРИТМЫ; СПЕКТРАЛЬНЫЕ МЕТОДЫ ЗАМЕЧАНИЯ Предложенный Ридом и Соломоном [19601 метод декодирования аналогичен описанному в данной главе методу декодирования в частотной области, но перво- начально он разрабатывался для временной области. Для частотной области декодер впервые предложил Мандельбаум [1971], хотя он использовал терми- нологию китайской теоремы об остатках Программная реализация такого де- кодера была сделана Пашбургом [1974]. Первое обсуждение декодирования со спектральной точки зрения можно найти у Гора [1973]. Он заметил, что информация может быть закодирована в частотной области и что спектр вектора оишбок можно вычислять с помощью рекуррентного продолжения. Реализация декодеров с преобразованиями обла- стей рассматривалась также Михельсоном [1976] Общее обсуждение спектраль- ных методов декодирования можно найти у Блейхута [1979] Отображение этих декодеров обратно во временною область было проведено в работах Блейхута J1979, 1980]. Основанный на алгоритме Евклида метод декодирования предложен Мапдельбаумом [1977]. Замечания о канале со стираниями принадлежат Элайсу [1954]. Раппие работы по обобщению алгоритмов декодирования кодов БЧХ на случай не только ошибок, но и стираний выполнены Блюмом и Вейсом [I960], а также Форни [1965]. Описанный в настоящей главе подход принадлежит Блейхуту [1979]. Декодирование расширенных кодов было впервые описано в работах Вулфа [1969] и Касахары с соавторами [1975]. Описанный в настоящей главе вариант принадлежит Блей хуту [1980]. Декодирование альтернантных кодов и кодон Гоппы разработано Паттерсоном [19751 и Хельгертом [1977]. Дельсарт [1975] указал, что эти коды можно декодировать с помощью декодера для кодов Рида— Соломона. Декодирование за пределами границы БЧХ предложили Берлекэмп [1968], Хартман [1972] и Блейхут [1979]. Алгоритм полного алгебраического декоди- рования кодов БЧХ с исправлением двух ошибок описан Берлекэмпом 11968], а алгоритм полного алгебраического декодирования некоторых кодов БЧХ с исправлением трех ошибок—Вандерхорстом и Бергером 11976]. Алгоритмы Блюстейна [1970], Рейдера [19681 и Герце.чя [1958] были пред- ложены этими ватерами в связи с задачами дискретной обработки комплексно- значных сигналов. Дополнительные сведения об этих алгоритмах можно найти в монографиях Оппенгейма и Шафера [1975] или Рабииера и Голда [1975]. Сервсйт J1978] предложил свой вариант полубыстрого алгоритма.
ГЛАВА 10 МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ Подобно тому как было введено одномерное преобразование Фурье над конечным полем, можно определить многомерное преобразо- вание Фурье над конечным полем. Оло представляет собой преоб- разование, определяемое на многомерных таблицах данных, и полезно во многих отношениях. Многомерные спектральные ме- тоды дают возможность построить новые коды, которые допускают более эффективные схемы декодирования или обладают новыми свойствами. Многомерные спектральные методы являются также полезным инструментом исследования структуры циклических кодов, в частности кодов БЧХ. Многомерные коды тесно связаны с современными методами теории обработки дискретных сигналов, основанными на китайских теоремах об остатках. Наилучшими известными многомерными кодами являются кода-произведения, и наше изложение мы начнем с описания этих кодов. Корректирующая способность построенных с помощью много- мерных методов кодов в общем случае ниже корректирующей спо- собности уже рассмотренных кодов. Мы останавливаемся па изуче- нии этих кодов потому, что они дают более глубокое проникнове- ние в существо методов, потому, что кодовые слова иногда удобнее обрабатывать в виде многомерных таблиц и потому, что таким образом можно построить хорошие коды, одновременно исправ- ляющие н случайные ошибки, и пакеты ошибок. 10.1. КОДЫ-ПРОИЗВЕДЕНИЯ Если длина линейного кода п п,^, то компоненты кодового слова можно расположить в виде (п, х л2)-таблицы. В некоторых случаях такая таблица, элементы которой мы обозначим через или Сц, является более удобной, так как позволяет при описании и обработке рассматривать строки и столбцы по отдельности. В этом случае код называется многомерным кодом. Размерность кода как векторного пространства, конечно, остается равной числу k ин-
326 ГЛ 10 МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ формационных символов; лишь таблица индексов является много- мерной. Мы будем рассматривать только двумерный случай, хотя все идеи применимы и при размерности, большей двух. Начнем с простейшего случая многомерных кодов — с кодов- произведепий. Определение 10.1.1. Кодом-произведением ЧЯ = X двух кодов и называется код, словами которого являются все двумерные таблицы со строками, являющимися словами кода и столбцами, являющимися словами кода ^2. Систематическое представление кода получается из система- тических представлений кодов и соответственно первые fej и символов которых являются информационными символами. Слово такого кода приведено на рис. 10,1, где виден и способ кодирования: сначала кодом кодируется каждая из первых строк таблицы, а затем кодом кодируются все столбцы таблицы. Легко проверить, что то же слово можно получить, кодируя сна- чала первые fej столбцов, а потом все строки. Для последователь- ной передачи по каналу кодовое слово разбивается на части, на- пример считывается по строкам или по столбцам. Слово кода-произведения может быть записано в виде много- члена от двух переменных. А именно если компоненты кодового слова обозначить Сцг, i == 0, ..., Hj — I, t’ = 0, .... n2 — 1, то имеем следующее представление: ‘(х. Л- Ё Ё Cn-X'lf-. i=0 i'=0 Группируя слагаемые, это выражение можно переписать любым из двух способов: или Согласно определению кода-пронзведепия, в первом выражении заключенная в скобки сумма (для каждого I) является словом кода ^2, а во втором выражении заключенная в скобки сумма (для каж- дого Г) является словом кода Коды-сомножители и могут^быть циклическими, однако это'пе означает, что код-произведение также является цикличе- ским. В § 10-2 будут выписаны достаточные для цикличности условия.
10.1. КОДЫ-ПРОИЗВЕДЕНИЯ 327 Л, я,-А, Информация Проверки Проверки Проверки Рис. 10.1. Структура кодового слова систематического (п^, А^-кода. Теорема 10.1.2. Если минимальные расстояния кодов и равны d’i и d-j соответственно, то минимальное расстояние кода & равно djds. Доказательство. Код является линейным, и кодовое слово минимального веса в каждом ненулевом столбце содержит не менее d*2 непулевых символов, а число ненулевых столбцов в таком слове равно по меньшей мере dj, так что минимальный вес равен но меныпей мере d’d^- Кроме того, существует хотя бы одно такое слово. □ Из этой теоремы следует, что если составляющие коды могут исправлять tt и t2 ошибок соответственно, то код-произведение может исправлять 2^а -J- + ts ошибок. Если на рис. 10.1 положить п2 — ks равным нулю п считывать кодовое слово по столбцам, то получим перемежение ka слов строч- ного («1, А1)-кода. Таким образом, код-произведение является обобщением кода-перемежения. Он подобен коду-пере.межению, но некоторые его строки содержат только проверки. Отсюда ста- новится ясным, что код-произведение можно использовать как код, исправляющий пакеты ошибок. Он позволяет исправлять пакеты ошибок длины nabt, если строчный код исправляет пакеты длины bt. При считывании слов того же самого кода-произведения но строкам он исправляет пакеты ошибок длины п^, если столб- цовый код исправляет пакеты длины Ь2. При надлежащем выборе правила линейного считывания слов кода-произведения этот код можно использовать для исправления пакетов ошибок длины max (riib2, Мы видели, что этот же код может исправлять (did? - 1)/2 случайных ошибок. Следующая теорема утверж- дает, что такой код можно использовать для одновременного ис- правления п случайных ошибок, н их пакетов. Теорема 10.1.3. Ни один смежный класс кода, построенного как произведение линейного (pi, d])-Koda и линейного (n?,k?t
328 ГЛ IO- МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ dty-Koda, не содержит, одновременно слова веса нс больше t при t = (d’idy 1 )/ 2 и слова, представляющего собой пакет ошибок длины не больше max при с (di 1)/2 и (dj — 1)/2. Доказательство. Для определенности предположим, что n2ti > что код считывается по столбцам. Если пакет ошибок длины не более н отличная от него конфигурация ошибок веса не более /лежат в одном смежном классе, то их разность предста- вляет собой кодовое слово. Вес каждой ненулевой строки такого кода равен не меньше Так как длина пакета не превосходит п»/,, то каждая ненулевая строка может содержать не более /т оши- бок из этого пакета п, следовательно, должна содержать по мень- шей мере di — /| других случайных ошибок. Таким образом, t случайных ошибок разбросаны самое большое по L^(di — С)1 строкам. Следовательно, кодовое слово содержит не более этого количества ненулевых строк, в каждой из которых имеется ве более /, ошибок, принадлежащих пакету. Полное число ошибок не превосходит й + ни, поскольку d, — ti больше /н это число меньше 2/. Это противоречиг тому, что минимальный вес кода равен по меньшей мере 21~г ] и поэтому такое кодовое слово не может существовать, и, следовательно, рассматриваемые пакет ошибок и конфигурация случайных ошибок не могут при- надлежать одному и тому же смежному классу. □ Код-произведение можно использовать в соответствии с дока- занной теоремой. Декодер для такого кода можно строить в виде составного декодера, содержащего декодер для исправления паке- тов ошибок и декодер для исправления случайных ошибок, каж- дый из которых исправляет требуемое число ошибок и обнаружи- вает неисправляемые конфигурации ошибок. При этом либо оба декодера укажут одну и ту же конфигурацию ошибок, либо ус- пешно декодирует только один из них; в последнем случае второй декодер укажет неиспр являемую конфигурацию ошибок. Иногда декодер для исправления случайных ошибок может указать все пакеты ошибок. В § 10.3 будет описал декодер для произведения двух кодов БЧХ, исправляющий все случайные ошибки в преде- лах конструктивного расстояния. 10.2. КИТАЙСКИЕ ТЕОРЕМЫ ОБ ОСТАТКАХ Когда можно однозначно определить целое число, если заданы только его вычеты по модулям нескольких целых чисел? Ответ на этот вопрос был известен еще в древнем Китае. Мы сейчас рассмо- трим эту теорему, а также ее современные аналоги, относящиеся к множеству полиномиальных модулей. Китайская теорема об остатках будет доказана в два этапа. Сначала мы докажем един- ственность решения, а затем его существование.
10.8 КИТАЙСКИЕ ТЕОРЕМЫ ОБ ОСТАТКАХ 329 Теорема 10.2.1. Для заданного множества целых положи- тельных попарно взаимно простых чисел пц, т,..nik и множе- ства неотрицательных целых чисел clt с2, ..., ch при c-t < пц система сравнений (mod /пг), I — 1.............k. имеет не более одного решения с в интервале 0 с с < П*=|/п/. Доказательство. Предположим, что с и с' являются двумя лежащими в рассматриваемом интервале решениями. Тогда с = + Ci и с' = Qinii [- Ci, и, следовательно, с — с’ кратно для каждого i, а так как mf по- парно взаимно просты, то с — с кратно П*, itni. Но число с — с лежит между — (П*=!/п,- — 1) и П*=1»г/ — 1. Единственным по- ложительным числом, удовлетворяющим этим условиям, является с —с’ =0. Следовательно, с = с’. □ Для того чтобы практически найти решение выписанной в тео- реме 10.2.1 системы сравнений, воспользуемся следствием 4.1.4 из алгоритма Евклида, согласно которому в кольце целых чисел НОД (г, s) = аг -|- bs для некоторых целых а и Ь. Для заданного .множества попарно взаимно простых положи- тельных целых чисел ли, Пг...... mk положим М = и Mt — М!пц. Тогда НОД (Mf, mf) = 1, и, следовательно, суще- ствуют такие целые N, и лг, что NtMi -f-ntmi = 1. Теперь можно доказать следующую теорему. Теорема 10.2.2. Пусть М = Пх-=1т,- — произведение попарно взаимно простых положительных целых чисел, пусть Mt — Mim.;, и пусть Nt удовлетворяют равенству NfMi 4- п^т. = ]. Тогда единственным решением системы сравнений Ci = с (mod mi), i — 1, ... k. будет с = J CfNiMt (mod Al). Доказательство. Поскольку мы уже знаем, что решение рас- сматриваемой системы сравнений единственно, надо только дока- зать, что выписанное выше с действительно является решением. Но с=- S c,.NrMr (mod/Hj) = c,N,Mf ’(mod zn;), /=1
330 ГЛ. 10- МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ ибо mt делит Afr при г =/= I. Наконец, так как NgMi 4- п,гиг = I, то Nf Mi = I (mod и с = cs (mod пгг), что и завершает доказа- тельство. □ Теперь мы перейдем к кольцу многочленов над некоторым полем. В случае любого такого кольца справедлива китайская теорема об остатках для многочленов, которая доказывается точно так же, как и в случае кольца целых чисел. Теорема 10.2.3. Для заданного множества попарно взаимно простых многочленов т} (х), т2(х)...mlt (х) и множества мно- гочленов Ci (х),с2 (х), . ., с/( (х), таких, что йе% cs (х) < deg mt (х), система сравнений Ct (х) = с(х) (mod т, (х)), i = I, .... k, имеет не более одного решения с (х), удовлетворяющего условию degr(x)<Sdegm,(x). Г=1 Доказательство. По существу доказательство совпадает с до- казательством теоремы 10.2.1. Предположим, что имеются два решения, а именно с(х) = (Ъ(х)тДх) + ьЮ и с (X) = Q'i (х) т,- (х) -{- а (х), так что разность с (х) — с’ (х) крвтна многочлену tnt (х) для каж- дого I. Тогда многочлен с (х) — с’ (х) кратен и многочлену Пг=1/?г£ (х), причем deg [с (х) - с' (х)] < deg [ Д m{ (х) J. Следовательно, с (х) — с’ (х) = 0, и доказательство закончено. □ Так же как и в кольце целых чисел, в кольце многочленов над произвольным полем выполняется равенство НОД lr (х), s (х) 1 = а (х) г (х) + b (х) s (х) для некоторых а (х) и b (х). Для заданного множества попарно взаимно простых ги/ (х) положим М (х) = П^тг (х) и Aff (х) — *= М~(^!т, (х) и допустим, что Hi (х) и И; (х) удовлетворяют ра- венствам 'JVf (х) Mj (х)’-|- nf (х) (х) ~ If согласно следствию 4.3.7, такие многочлены Nt (х) и л, (х) всегда существуют. Теорема 10.2.4. Пусть М (х) = П*=1т{ (х) — произведение по- парно взаимно простых многочленов, и пусть М[{х) — М (х)/т, (х)
IO.S. КИТАЙСКИЕ ТЕОРЕМЫ ОБ ОСТАТКАХ 331 и Nj (х) удовлетворяют равенствам N-t (х) М , (х) + п{ (х) (х) = = I. Тогда единственным решением системы сравнений с, (х) — с (х) (mod m; (х)), « 1, k, является с(х) = £ Ct (х) Ni (х) (X) (mod M (x)). Доказательство. Гак как мы уже знаем, что рассматриваемая система сравнений имеет не более одною решения, то нам надо только доказать, что выписанное выше с (х) действительно яв- ляется решением. Но с (х) = Ci (х) Nt (х) Mt (х) (mod m, (х)), ибо m-i (х) делит МТ (х), если г =f= I. Наконец, так как Nt (х) Mi (х) -F nt (x) mt (x) = I, to Nt (x) Afj (x) = I (mod mt (x)) и c (x) = cs (x) (mod (x)), что и завершает доказательство. □ Китайская теорема об остатках позволяет установить условия, при которых произведение циклических кодов является цикли- ческим кодом. Теорема 10.2.5. Если длины щ и п2 циклических кодов и “ё2 взаимно просты, то при соответствующем расположении компо- нент в кодовом слове код-произведение также является цикличе- ским. Доказательство. Если 0 I с — 1 и 0 <£ Г «£ п2 — 1, то, согласно китайской теореме об остатках, имеется единственное целое число I (i, Г), лежащее в интервале 0 I (i, i') с «хп8 — 1 и удовлетворяющее сравнениям I (i, i') = i (mod щ), I (i, I') = V (mod n2). Перепишем кодовое слово с (х, у) в следующем порядке: л, и,—I О (^) — S Q/ mod п,) (/ mod . 1=0 Чтобы увидеть, что такое множество слов с (г) образует цикличе- ский код, достаточно заметить, что в указанной записи гс (г) (mod г”1'1» — I) соответствует многочлену хус (х, У) (mod х"> — 1) (mod уп‘ — 1). Так как этот многочлен является кодовым словом, то и zc (г) (mod — 1) является кодовым словом. □
332 гл. 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ Взаимосвязь между с (z) и с (.V, у) можно лучше пояснить с по- мощью следующей двумерной таблицы. <02 <12 _Г(и«—ПО ('(п.—1)1 Qn.—I)2 Коэффициенты многочлена с (z) получаются при считывании эле- ментов этой таблицы вдоль диагонали, начиная с ст и возвращаясь после каждого достижения края таблицы, так, как если бы таб- лица была продолжена периодически в обоих направлениях. Так как Пу и п2 взаимно просты, такая расширенная диагональ не прой- дет дважды через один и тот же элемент до тех пор, пока все элементов не будут пройдены. 10.3. ДЕКОДИРОВАНИЕ КОДА-ПРОИЗВЕДЕНИЯ Если * < (rfidl — 1) 2, то код-пропзведение способен исправ- лять vошибок. Такая теоретическая корректирующая способность кода, однако, мало что дает без практических алгоритмов декоди- рования. В данном параграфе описывается такой алгоритм деко- дирования, основанный на исправляющем только ошибки под- алгоритме для одного кода-сомножителя и на исправляющем ошибки и стирания подал гор итме для другого кода-сомножителя. Такие декодеры были описаны только для кодов БЧХ, и, следова- тельно, мы будем говорить только о произведениях кодов БЧХ. Рассмотрим случай, когда d]d? нечетно, и без ограничения общности предположим, что d2 ^d\. Задача декодера, исправля- ющего в произведении кодов БЧХ только случайные ошибки, со- стоит в вычислении некоторого кодового слова, находящегося от принятого слова не далее радиуса упаковки t = (djdz - - 1)/2, так как такое слово единственно. Декодер состоит из внутреннего декодера для кода БЧХ и внешней цени обработки, содержащей произвольный подходящий декодер для кода БЧХ, исправляющий ошибки и стирания. Сначала опишем упрощенный вариант деко- дера, потом улучшим его, а затем докажем, что он выполняет нуж- ные исправления. Сначала декодер должен «исправлять» каждый столбец. Для алгоритма декодирования безразлично, передается ли кодовое слово по строкам или по столбцам, но при обсуждении этого алго- ритма удобнее предполагать, что кодовое слово передается по столбцам, и воспринимать столбец как отдельно декодируемый
10.3. ДЕКОДИРОВАНИЕ КОДА-ПРОИЗВЕДЕН И Я 333 подблок. Позже, прп декодировании строк, неправильные под- блоки будут выявлены и исправлены. Пусть в j'-м столбце принятого слова произошло Vj ошибок; тогда V= £ V/. /=о Первый шаг состоит в использовании БЧХ-декодера для исправ- ления каждого столбца. Для каждого /-го исправленного столбца указывается число сделанных исправлений. Это число предста- вляет собой вес оценки ё1 (j) вектора-столбца ошибки и равпо Vj, если декодирование произведено правильно. Если обнаружена неисправляемая ошибка, то столбец стирается. Цестертые столбцы с наибольшими значениями чисел рассматриваются строчным декодером как наименее надежные. Затем исправляющий ошибки и стирания ЬЧХ-декодер при- меняется для исправления каждой строки. Теперь, однако, имеется сторонняя информация, которую можно использовать для пра- вомерного стирания дополнительных столбцов. Сначала, игно- рируя эту стороннюю информацию, декодируем, как удастся, все строки, начиная с первой. Строчный декодер может потерпеть неудачу и может внести ненулевую конфигурацию ошибок. Лю- бой из этих случаев означает, что некоторые столбцы были деко- дированы неправильно. Требуется какое-то правило, указываю- щее, что нужно делать: принять декодированную строку или стереть наименее надежный столбец и попытаться декодировать строку сначала. Основную теорему’ мы докажем сначала в предположении, что столбцовый декодер не производит никаких стираний. Впоследст- вии эта теорема будет использована и при наличии стираний с по- мощью простого уменьшения числа df на число стертых столбцов. Рассматриваемые методы доказательства будут использованы в гл. 15, когда мы будем изучать декодирование с мягким реше- нием. Что можно сказать о строчном декодере, если дано, что под- произведение может исправлять t = (did? — 1)/2 ошибок в что столбцовый декодер уже исправил ошибок в /-м столбце? Пред- положим, что t-я строка декодирована и для нее вычислена оценка \ё} (*Н вектора-строки ошибки. Обозначим через L/t множество индексов /, для которых ё} (i) отлично от нуля. Если j принадле- жит множеству Uit то j-й столбец продекодирован неправильно; в j-м столбце имеется по меньшей мере d£ ошибок, среди которых aij могли быть внесены столбцовым декодером, причем ®>7 меньше d$. Следовательно, еелп строчному декодеру удастся правильно найти конфигурацию ошибок, то в исходном принятом слове в j-м
334 гл. 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ столбце содержалось по мепыпей мере d| — bii ошибок для каж- дого j из множества U-, п, как уже известно, а, ошибок для каж- дого /, не принадлежащего множеству £/г. Таким образом, разум- ное условие принятия результага декодирования i-й строки дается следующим неравенством: S {d*2 - USj) -L 2 ©/ с В приведенной ниже теореме доказывается, что это неравенство является необходимым н достаточным условием правильности декодирования t-и строки. Сначала перепишем это неравенство в форме скалярного произведения, удобной для использования в доказательстве теоремы. Для этою представим его в вице 2 I (1 — o/ZdS) —2 Г (co//d5)<dl. Тогда £1| 2 1-22 (l-a//d5)-2 S (wy/d^ >n,-dj. i^ul h&h >eui i^ui Пусть E; равно —1, если /принадлежит U.. n 1 в противном слу- чае. Тогда У Е/(1 2<йд^2)>П1 — d’. /=о Если, наконец, с,- 1 — 2 W//dS, то неравенство приводится к виду L — di /=о Теперь все готово для доказательства теоремы. Теорема 10.3.1. Пусть <f>j— число позиций, в которых j-й столбец исправленной столбцовым декодером таблицы отличается от принятого слова. Для каждого I существует в точности одно слово строчного кода, удовлетворяющее неравенству £ (ds - о.) -J- £ ю. < t. iQut i&ui Здесь Ui — множество номеров j позиций, в которых компоненты i-й строки кодового слова отличаются от компонент этой строки в исправленной столбцовым декодером таблице. Доказательство. На первом шаге мы докажем, что правиль' ное слово строчного кода в i-й строке удовлетворяет выписанному неравенству. На втором шаю мы докажем единственность такого слова.
[0.3. ЛЕ КОДИРОВАНИЕ КОДА-ПРОИЗВЕДЕНИЯ ЗЗБ Шаг 1. Пусть <р —число неправильно декодированных столб- цов, п пусть U4 - множество индексов этих столбцов. Тогда nt — — <р столбцов декодированы правильно. Но . 2 ъ +. 2 v, < г, и число v} произошедших в /-м столбце при ит ого слова ошибок удовлетворяет равенству v} rty, если j-й столбец декодирован правильно, и неравенству v,- di — > tty, если j-й столбец декодирован неправильно. Множество U, декодированных столб- цов, содержащих в i-й строке ошибку, удовлетворяет включению Uj с Uv; следовательно, S (di — atj) 4- J < I, ieui а это и доказывает, что для каждой строки кодовое слово удовле- творяет данному неравенству. Шаг 2. Рассмотрим i-ю строку. Предположим, что сг и с,- яв- ляются словами строчного кода, и обозначим i-ю строку после «исправления» столбцов через р. Пусть равно 1, если сг совпа- дает с р в /-й компоненте, и - —1 в противном случае. Пусть обозначает аналогичную величину для кодового слова сг.. Определим множества V = 11 = I/ I Cri C, i И Сг/ |1,|- Каждый индекс j принадлежит одному из этих трех множеств; тогда = S %jaj г S ai - S aj = Ar I Av — Aw, /- -0 j £7 j f-V / £ где величины /1/, Av и Aw определены очевидным образом. Число элементов в Т не превосходит гц —dp Если сг удовлетворяет ус- ловиям теоремы, то У? — Ат |- А\; — Лцг>т —dj, /-о и, следовательно, Av — Aw > 0. Теперь рассмотрим кодовое слово Q. Мы имеем Ё Ей -= S ь<1, I У! Яь-1 S = Ат - I В„., 7 о iff if!' /Ск'
336 гл- |П* МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ где величина Bw определена очевидным образом и на множестве V выполняется равенство сг-} =f= р/. Но Вр< Л|₽, и, как мы ви- дели, Aw - AV<ZO. Следовательно, У < Аг — Av — A w<Z Aj- си, — di, так что сг. не удовлетворяет неравенству. □ Опишем теперь практический способ вычисления такого кодо- вого слова. Мы уже знаем, как строить декодеры для исправления ошибок и стираний с жестким решением. К любому из таких де- кодеров присоединим внешнюю цепь обработки. По имеющейся таблице декодированных столбцов для i-й строки построим проб- ную цепочку векторов, полученных при жестком декодировании ошибок и стираний. Индексы упорядочим следующим образом: wi2 Зв ... <о>п или a}l i aj2 < ... « ain . Для каждого I из интервала от 0 до d^ — 1 будем стирать / компонент с наи- большими значениями со,. Такое построение принедет к вектору со стираниями. Декодируем этот вектор декодером для испра- вления ошибок и стираний и проверим результат декодирования сг на соответствие условию, даваемому теоремой 10.3.1. Если он удовлетворяет этому условию, то с, будет кодовым словом для данной строки; в противном случае увеличим / и повторим про- цедуру. Следующая теорема доказывает, что описанная процедура всегда приводит к кодовому слову. Теорема 10.3.2. Если кодовое слово сг удовлетворяет неравен- ству П,~ I S — elt, то хотя бы для одного ! выполняется условие s gxn>«> i о где = ь\1> = ... = &}[’ = о, - ь£2 - ... = Щ = 1, и, следовательно, сг представляет собой единственное кодовое слово, вычисляемое исправляющим ошибки и стирания декодером. Доказательство. Доказательство достаточно провести для всех / от 0 до пь так как при / d*i утверждение теоремы, оче- видно, не может выполняться
ВхоЙ рис. 10.2. Декодер для кода-произведения кодов БЧХ.
338 ГЛ. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ Идея доказательства состоит в том, что р принадлежит выпук- лой оболочке множества векторов Пусть = aii> fa = а//+1 — а!{, 1 с Itii 1. — 1 — о, откуда следует, что 0 < X, < I и X /=оМ - 1. Кроме того, /=0 J=0 Предположим теперь, что для всех ! ьь?‘«л, л. Тогда X == X fa X « X fa («1 — rff) с «I — d’, j=O [=< j=V 1-0 что противоречит предположению теоремы. Следовательно, тео- рема доказана. О Изображенный на рис. 10.2 декодер основан на двух предыду- щих теоремах. Если при декодировании i-й строки некоторые столбцы уже стерты, то используется та же самая процедура деко- дирования, но без учета стертых столбцов и при уменьшении d| на число стертых столбцов. Далее, если при декодировании i-й строки некоторые столбцы были стерты или отмечены как содер- жащие ошибку, то при декодировании всех последующих строк они остаются стертыми. В случае когда необходимо стереть только один столбец, декодер всегда стирает два, так что число стертых столбцов всегда четно. Это не уменьшает корректирующих спо- собностей процедуры, по сводит число необходимых итераций не более чем к nz + (d| — 1)/2. 10.4. МНОГОМЕРНЫЕ СПЕКТРЫ Двумерные таблицы, размеры которых согласуются с длиной преобразования, можно исследовать с помощью двумерного пре- образования Фурье. Пусть — двумерная (п X пргаблица над GF (q), которую назовем двумерным сигналом, пусть для не- которого т длила п делит qm — 1, и пусть сх — элемент порядка п из поля GF (qm). Таблицу с элементами К/д=Х X af/’a'7'n, i-
1О.«. МНОГОМЕРНЫЕ СПЕКТРЫ 339 назовем двумерным спектром, а индексы /и j' —частотными пере- менными. Используя одномерное обратное преобразование, оче- видно, получаем и— I п— 1 Vf г = (1/«)(!/«) £ £ a-‘Va-f'r'V, j-0 /'=0 На рис. 10.3 приведены два двумерных спектра над GF (8). В каж- дом квадрате сетки записан восьмеричный символ Чтобы задать контролирующий ошибки код, выберем множе- ство из Л' — К компонент в качестве (двумерных) проверочных частот и положим их равными пулю, как па рис. 10.3. Остальные К компонент будут информационными символами, принимающими значения в поле GF а в качестве кодового слова, соответству- ющего данным информационным символам, выберем результат обратного двумерного преобразования Фурье. Построенный так код, очевидно, является линейным, но, вообще говоря, не цикли- ческим. Если искомый код лежит в подполе поля GF (qm) (в рассматри- ваемом примере единственным подполем поля GF (8) является поле GF (2)), то необходимо взять ограничение кода, выбирая только те кодовые слова, все компоненты которых принадлежат этому под- полю, и тем самым получая двумерный подход пад подполем. Можно также построить двумерные альтернантные коды, если перед ограничением на подполе умножить кодовое слово на дву- мерный шаблон. Двумерные спектры не обязательно должны быть квадрат- ными, по если это так и если n -| 1 — qm, то наибольшим рассма- триваемым полем является GF (л |- 1). В случае когда спектр задается («, х «Таблицей (ггг =£= п2}, приходится работать в наи- меньшем поле GF (qm) при некотором т, таком, что и«, и п2 делят Рис. 10.3. Дпумсрпын спектр пад GF (8). а— спектр без ограничений; б — спектр с О1раяичепмямн
340 ГЛ 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ 1 2 3 4 5 6 0 1 2 3 4 5 6 0 2 3 4 5 6 0 0 2 3 4 5 6 0 С 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0'0 0 0 0 0 0 0 0 0 0 а 1 2 3 4 5 6 0 в 1 2 3 4 5 6 0 1 2 3 4 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 2 3 4 5 Б 0 0 0 0 0 ооооо ооооо 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ооооо 0 0 0 Б г Рис. 10.4. Спектры некоторых кодон над GF (8). а — произведение цикличе- ских кодов, б — произведение кодов Рида—Соломона; в — дуаль- ный код-произведение; г — произведение (7, 4)-кодов БЧХ. пусть fJ и у — элементы поля GF (?т) порядков п, и п2 соответ- ственно; тогда i=f> Г=О Используя одномерное обратное преобразование, очевидно, снова получаем f.<- = CM) (i/">) S' S /=0 /'—О Для примера выберем в качестве проверочных частот двумер- ного кода все элементы некоторых вертикальных и горизонтвль- ных полос, как показано на рис. 10.4, а. Кодовыми словами яв- ляются все временные функции, в спектре которых в этих частотах стоят нули, т. е. для всех проверочных частот (/, /’) "S'"S' о. i=O x’=-0
10.4. МНОГОМЕРНЫЕ СПЕКТРЫ 341 Это позволяет по-иному интерпретировать определение двумер- ного кода, задавая его как множество многочленов от двух пере- менных 11^-1 п,—| С(Х, ff) = S S Qi-х'У', i=0 Г-0 удовлетворяющих равенствам ' (₽' . т' ) = о для всех проверочных частот / и Так как проверочные частоты были выбраны только по вертикальным и горизонтальным поло- сам, то t-fp', ®) = 0 и с(«, vO = 0 для каждой проверочной частоты / и /'. Это показывает, что {(/?«•)} является кодом-произведением. Если полосы проверочных частот идут подряд, то получится произведение двух кодов Рида—Соломона. На рис. 10.4, б при- ведено спектральное задание (49, 25, 9)-кода над GF (8). Каждый из 25 информационных символов принимает одно из восьми воз- можных значений. Для формирования кодового слова надо пере- вести результирующую таблицу во временную область при по- мощи преобразования Фурье. Аналогичную процедуру можно использовать и для построе- ния кода над GF (2), выбирая только двоичные кодовые слова. Для этого надо в частотной области определить спектр так, чтобы он задавал только двоичное кодовое слово. Двумерные ограниче- ния сопряженности задаются равенствами Cff' — С(2/ :гс<! л) (2/' tnod л)- Пример такого построения показан на рис. 10.5. Каждое подмно- жество в этой таблице является подмножеством сопряженных частот. Любой из членов подмножества можно выбрать произ- вольно, а остальные символы в частотах подмножества определятся этим однозначно. Символ СО0 может принимать только значения 0 или I, так как он является квадратом самого себя. Остальные ин- формационные символы являются восьмеричными. Весь спектр целиком определяется 49 битами, но, конечно, некоторые из них являются проверочными и не несут никакой информации. Ограничение кода па рис. 10.4, б с помощью этой таблицы на двоичное подполе показано на рис. 10.4, г. В таблице па этом ри- сунке имеется только 16 незаполненных частот, которые с учетом ограничений сопряженности можно загрузить 16 битами инфор- мации. Это является следствием того, что все проверочные сим- волы, частоты которых расположены в нервом столбце и первой
342 гл. 1С. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ Битовое Битовое соЙержание содержанье {С,|С»С44 з Оз Сы, Css ;с,, с,Л с*. См С(.3 С 56 3 !с ,. ( ., t... (',, ( { ., С’г. С ( ... < w Gm 3 < |<> < М> < 4.1 :<(s< 4,. ( „, < .... ( ;cs, <зг < <4 3 СгаС-хГл! j Cn.il 1 ;< ... g. Рис. 10.5. Множества сопряженных элементов для двумерного случая. строке, попадают в различные подмножества сопряженных эле- ментов. Построенный (49, 16, 9)-код мало привлекателен. Как следует из самого построения, в силу ограничений сопряженности коды-произведения часто обладают плохими характеристиками. Для построения хороших кодов-произведений надо выбирать взаимно простые длины. Но тогда основное поле становится боль- шим, и обычно дело завершается выбором циклического кода, корни порождающего многочлена которого лежат в этом большом поле. Второй случай, иллюстрируемый 10.4, в, называется дуальным кодом-произведением. Это код. дуальный к коду-произведению. Дуальный код-произведение мало пригоден для исправления неза- висимых ошибок, так как его минимальное расстояние невелико. Как будет показано в § 10.7, он хорош для исправления кратных низкоплотностных пакетов ошибок. Код задается выбором прямо- угольника самых старших проверочных частот высотой а и шири- ной Ь. Легко видеть, что минимальное расстояние этого кода удов- летворяет неравенству d 2s 1 + min (о, b). В качестве примера укажем (49, 45, 3)-код над CF (8). Ограниче- нием этого кода на двоичное подполе является (49, 39, d 3)-код. 10.5. БЫСТРЫЕ КОДЫ БЧХ Как мы видели в гл. 9, кодер и декодер для кодов БЧХ обычно содержат два преобразования Фурье. В следующей главе будет показано, что в случае составного п использование алгоритмов быстрого преобразования Фурье (Б11Ф) позволяет существенно уменьшить объем вычислений. Но БПФ-алгорнтм Кули—Тьюки
10.5. БЫСТРЫЕ КОДЫ БЧХ 343 требует введения некоторых регулирующих вычисление членов, а БПФ-алгоритм Гуда—Томаса — некоторой перестановки адре- сов Во избежание этого мы сейчас несколько изменим определе- ние кода БЧХ (что приведет к эквивалентному коду) и назовем полученный вариант кода БЧХ быстрым кодом БЧХ, так как он уменьшает работу декодера. Он приспособлен к алгоритму Гуда— Томаса (который будет рассматриваться в § 11.2), причем во вре- менной области сохраняется порядок символов, полученный после перестановки. Пусть п — — 1, где и л2 взаимно просты, и пусть код состоит из всех двумерных GF (^-злачных временных функций \сц-, i = 0, .... «1— 1, i = 0, ...» п2— 1), таких, что их дву- мерные преобразования удовлетворяют проверочным соотноше- ниям Сц = С22 = С83 = ... = C2t,2j = о, где индексы вычисляются по модулям и п2 соответственно. Это определение задает линейный исправляющий t ошибок код, три- виальным образом отличающийся от кода БЧХ. Скорость и ми- нимальное расстояние остаются без изменений. Неизменяемость скорости вытекает из следующей теоремы. Теорема 10.5.1. В двумерном случае класс сопряженных эле- ментов для / (mod nJ и j (mod п2) содержит такое же число эле- ментов, как, и класс / (mod nxn2). Доказательство. Пусть г — наименьшее целое положительное число, такое, что fff = ] (mod n-i) и g'j = / (mod л2). Пусть s представляет собой наименьшее целое положительное число, такое, что q*j — } (mod пгп^. Тогда <П — ап^ + / п q3j — Ьпгп* + j для некоторых а и Ь. Очевидно, что такие наименьшие г и s равны. □ Доказательство того, что минимальное расстояние не меньше 2/ 4- 1, дается следующей процедурой декодирования t ошибок. Для принятого слова с двумерным преобразованием Уц- опреде- лим компоненты синдрома равенствами Sj = У (j mad n,. j mod n,)» j = li - 2Z. Если одиночная ошибка величины с, f располагается в строке с номером i'i и столбце с номером i'i, то 3,, = 4ll; (W = Y,х'„
344 ГЛ. 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ где X, равно некоторой степени примитивного элемента а, кото- рая однозначно определяется для каждой строки и каждого столб- ца. При v ошибках компоненты синдрома имеют вид S, = Е YM Л-1 и задают единственное решение, если произошло не более t оши- бок. Воспользуемся алгоритмом Берлекэмпа—Месси и его ре- куррентным продолжением для вычисления всех Sj, j = 1, .... п, и положим mod и,, j mod nz) = S/, j -— 1, - - ., fl. Так как nt и n3 взаимно просты, положение каждой компоненты синдрома в двумерной таблице определяется однозначно. Наконец, полагая с„. =v„.-r„. и выполняя двумерное обратное преобразование Фурье, завер- шаем декодирование. В графической интерпретации вся эта процедура выполняется вдогть продолженной диагонали (л, х nJ-таблицы, показанной на рис. 10.6. На этой продолженной диагонали определяются 2/ проверочных частот. Алгоритм Берлекэмпа—Месси работает вдоль продолженной диагонали, и так как П1 и па взаимно просты то рекуррентное продолжение восстанавливает все элементы таб- лицы, двумерное преобразование Фурье которой дает таблицу ошибок. д # Рис. 10.6. Спектр быстрого кода БЧХ. а —спектр (63, 33, 31)-кода Рида— Соломона; б — двумерный спектр быстрого (63. 33, 31) кода Рида—- Соломона.
10.6. ДЕКОДИРОВАНИЕ МНОГОМЕРНЫХ КОДОВ 346 10.6. ДЕКОДИРОВАНИЕ МНОГОМЕРНЫХ КОДОВ Двумерное кодовое слово задается двумерным спектром, у ко- торого некоторые спектральные компоненты равны нулю. Одип такой пример был рассмотрен в предыдущем параграфе. Пред- положим, что код определен так, что для некоторых пар индексов (Д. Л), помеченных индексом k, выполняются условия S S c<t-P4,’Y* ih -- 0. i—О i'--0 Тогда соответствующая компонента двумерного синдрома для конфигурации ошибок {е1Г} веса t определяется равенством и может быть вычислена по принятому слову Опишем теперь конфигурацию ошибок, используя строчные локаторы, столбцовые локаторы и величины ошибок. Локаторы в строке it и столбце Ц определяются соответственно равенствами X/ — 0 1 и Y[ = у4. Величину ошибки обозначим Zt. Компо- ненты синдрома при этом принимают вид Двумерные коды естественно определять так, чтобы система выписанных выше уравнений была разрешима относительно Xi, Yt и при I = 1, ... t. Например, проверочные частоты можно выбрать так, чтобы получилась следующая система уравнений: $u == Z^Yу Z2XJ\ -I- ... + ZvA\Xv = Еи. Sa - Z, Х,И I Z,X,VM ... j- ZVXV^. - E„, S1.a=ZlX,y?+Z2X2V? I ... Ji,.X,Y” = которая уже встречалась в описании алгоритма декодирования кода Рида—Соломона. Имеется только одно отличие: Yr не обя- зательно различны, так как в одном и том же столбце может про- изойти несколько ошибок. Можно, однако, сгруппировать ошибки с одинаковыми Ylf и это приведет к аналогичной системе с мень- шим V, которое также удовлетворяет условию v < I. Тогда опять можно воспользоваться алгоритмом Берлекэмпа—Месси и рекур- рентным продолжением для вычисления Е’п, Е1г.Е1п, хотя
346 СЛ. 10- МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ такая процедура не дает однозначного решения для пар (Х{, Yi) при I =1, 2... v, так как некоторые ошибки попадают в один и тот же столбец. В общем случае для пг = п2 = п справедли- ва следующая теорема, которую можно обобщить, заменив п на НОК (Пь nJ. Теорема 10.6.1. Предположим/ что произошло ошибок и что для любых целых j0, j'o и а, а' известны компоненты синдрома •S/t+ofc,пРи & — Ь •• -,2/. Тогда компоненты синдрома Sj0^ak. j^-a-k при k— 1, ..., п определяются однозначно. Доказательство. Нам даны 2/ уравнений для k = 1, ..., 2<: S,,H Л ,;+•» = Г Z,x(o+“*V?+" - = S4(x|yH(W- Обозначим через v' число различных величин Х?Х1 при всех /, через Yr, /' = 1, ..., v', различные значения в этом наборе, а че- рез Xt- сумму всех множителей при фиксированном Y^ в данном уравнении (она имеет одно и то же значение для всех k). Тогда Х/р+оЛ. = £ ХГТ% k = 1.......2/. где теперь все Y^ различны и v' < t. Алгоритм Берлекэмпа— Месси с последующим рекуррентным продолжением позволяет вычислить остальные компоненты синдрома 4+" ';+"= 2 t-i.................п. □ Согласно доказанной теореме, любые 2/ компонент синдрома, расположенных в таблице на произвольной прямой (горизон- тальной, вертикальной или идущей под любым углом) можно продолжать до всех компонент синдрома па этой прямой. Далее, в силу ограничений сопряженности каждая из этих новых компо- нент синдрома определяет все сопряженные с ней компоненты. Конечно, не обязательно, чтобы вычисленные так компоненты синдрома давали остальные его компоненты. Размеры таблицы не всегда задаются взаимно простыми числами, так что продол- жение прямой не обязательно включает все компоненты. Посмотрим теперь, как граница БЧХ обобщается на случай двух (или более) размерностей. Предположим, что где-то в первой строке имеются 2/ подряд идущих компонент синдрома. Тогда их продолжение даст все компоненты синдрома в первой строке.
10.7. ДЛИННЫЕ КОДЫ НАД МАЛЫМИ ПОЛЯМИ 347 Аналогично расположенные где-то во второй строке подряд иду- щие 2Z компонент синдрома могут быть использованы для вычис- ления всех компонент синдрома во второй строке. Далее, любые расположенные подряд 2< компонент синдрома в первых 2/ строках могут быть продолжены до всех компонент синдрома в каждой ms этих 2/ строк и, следовательно, 21 непрерывно расположенных компонент синдрома по столбцам. Последние в свою очередь могут быть продолжены до всех компонент синдрома в своем столбце, а этого уже достаточно для однозначного вычисления конфигурации ошибок. Простейший пример дается (2/ X 2/)-таблицей извест- ных компонент синдрома. Общая ситуация описывается следую- щим образом. Теорема 10.6.2 (двумерная граница БЧХ). Если а взаимно просто спи число ошибок v не превосходит t, то множество компо- нент синдрома S°{mk+k')- + где а, а' и mk — некоторые целые числа, А' — 1, ..., 2t, k ~ I, .... 2t, однозначно определяет конфигурацию ошибок. Доказательство. Для каждого k воспользуемся предыдущей теоремой для вычисления компонент синдрома Sa °' + к9 ~ ® ‘ = 1, . . . , 2t. Переопределим индекс k' так, чтобы отбросить в индексах числа mh и записать известные компоненты синдрома в виде Sak'. = 1,. . -,П, k = i,. .., 2t. Вновь воспользуемся предыдущей теоремой для вычисления для каждого k' компонент синдрома Sak', a’k'-i-k» k ~ 1, • •, П, k ~ 1,. . ., И. Поскольку k пробегает все значения от 1 до л, его можно пере- определить так, чтобы избавиться от ak'\ таким образом, вычис- ляются все компоненты синдрома SOk’.k, при k' — 1, .... п и k = 1.....п. Поскольку аил взаимно просты, то индекс ak' про- бегает все л значений. Следовательно, синдром вычислен полностью и конфигурация ошибок определена. □ 10.7. ДЛИННЫЕ КОДЫ НАД МАЛЫМИ полями Для кодов с очень большой длиной и высокой скоростью слож- ность декодера может являться более важным фактором, чем скорость кода. С практической точки зрения разница между скоростями 0,98 и 0,99 может быть не столь уж существенной,
348 ГЛ. |С- МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ если декодеры для этих двух кодов сильно отличаются в цене. В настоящем параграфе рассматриваются коды очень большого объема, декодеры для которых имеют ограниченную сложность. Все рассматриваемые коды являются многомерными; характери- стики этих кодов в общем случае лучше, чем у кодов-пронзведе- ний, а декодиронание реализуется с помощью вычислений в поле Галуа, мощность которого намного меньше длины кода. Такие коды могут быть противопоставлены кодам БЧХ. Для кода БЧ X длины п = qm - - 1 декодер производит вы- числения в поле GF (qm). При больших п мощность такого поля Галуа очень велика. Коды, которые будут сейчас описаны, можно декодировать с помощью вычислений в малом поле Галуа. Одним из этих примеров будет двоичный код, слова которого задаются двумерной таблицей с п — 2т — 1 строк и таким же числом столб- цов. Следовательно, длина кода равна м®, по мы надеемся все вычисления провести в поле GF (2п). Хотя скорость такого кода ниже скорости кода БЧХ с теми же п и d, в некоторых приложе- ниях он может оказаться предпочтительнее из-за малой длины, па которой производит вычисления декодер. Первым примером является произведение двух кодов БЧХ, а именно (nlt klt dj-кода н (пг, kz, й^-кода, и, следовательно, является кодом с параметрами (П]Л2, О2, Например, про- изведение расширенного (256, 232, 25)-кода Рида—Соломона па самого себя дает (65 536, 53 824, 625)-код над GF (256), который позволяет исправлять 312 8-битовых байтов, пакеты длины 3072 8-битовых байтов, а также многие конфигурации ошибок более чем из 312 байтов. Вместо этого можно воспользоваться (65 536, 64 289, 625)-кодом БЧХ, который позволяет также исправлять 312 случайных байтов и обеспечивает при этом существенно большую скорость, но его декодирование требует вычислений в 16-битовой арифметике поля GF (21в). Код-произведение компен- сирует это другим преимуществом, позволяя помимо 312 случай- ных байтов исправлять многие другие конфигурации ошибок, чего не может код БЧХ. Декодировать код-произведение можно описанным в § 10.3 способом. Второй пример дается кодом, дуальным к коду-произведению двух кодов Рида Соломона или их подкодов над подполями. Дуальный код исправляет случайные ошибки, а также кон- фигурации многократных пизкоплотпостных пакетов, определяе- мых как конфигурации, состоящие из сегментов ошибок, вес которых больше типичного. Исправляющие многократные низко- плотностные пакеты ошибок коды полезны для тех каналов, в которых происходит ритмичное изменение вероятности ошибки, например для каналов с замиранием. В частности, дуальный к квадрату (255, 239, 25)-кода Рида—Соломона код представляет собой (65 025, 64 769, 17)-код
10.7. ДЛИННЫЕ КОДЫ НАД МАЛЫМИ ПОЛЯМИ 349 над GF (256) и исправляет все случайные конфигурации ошибок из восьми 8-битовых байтов, а также все конфигурации ошибок из 64 8-битовых байтов, образующие низкоплотностные пакеты из восьми искаженных столбцов, каждый из которых содержит восемь искаженных байтов. Двумерные проверочные частоты этого кода задаются парами (/, f) для / = 16 и /' = 1, ..., 16. Основанная на теореме 10.6.1 процедура декодирования сводится к следующему. По дан- ному принятому слову jvn } вычисляются компоненты син- дрома Sj,-’ по формулам 255 255 S/j- XX vir, j, Г = 1..............16. /*-0 i'—о Алгоритм Берлекэмпа—Месси с последующим рекуррентным про- должением используется для вычисления всех компонент син- дрома в /-й строке. После такой обработки в декодере каждой из 16 строк оказы- ваются вычисленными компоненты S/f-. синдрома для / — 1, ...,255 и /' = 1, .... 16. Обратное преобразование Фурье каждой из этих 16 строк содержит ненулевые символы только в тех восьми (или менее) столбцах, которые содержат ошибки. Пометим эти восемь столбцов. Преобразование Фурье этих 16 строк в каждом из помеченных восьми столбцов дает 16 элементов поля / = 1, .... 255, /' = 1, .... 16. Стоящие в <-м столбце эле- менты этого поля можно выразить через величины ошибок и строчные локаторы для этого столбца: тТ^'Чх,''1)1 | й'ЧхП1- -+Д"оМ'<,>),> rp=zf>(x!'l)! I 4'lW,)s+...+z<';,-1(xtl,l)!, rfj’-zl'Txl'1)16 । й>(х}‘>)|в+... । z",'„(х<'|„)'". где v (t) — число ошибок в i-м столбце. Если v (i) с 8 для каж- дого I, то эта система уравнений может быть решена с помощью алгоритма Берлекэмпа—Месси, что и завершает декодирование. Можно также построить код, дуальный к коду-произведению для кодов БЧХ. Но такие коды содержатся в более мощных кодах с тем же минимальным расстоянием и той же способностью ис- правлять низкоплотностпые пакеты ошибок. В общем случае предпочтительнее эти последние коды; опишем их. Для иллюстрации этой идеи рассмотрим частный случай дво- ичного кода с t ~ 8, п = 255 и длиной п3 = 65 025. Как показано на рис. 10.7, а, выберем проверочные частоты так, чтобы в блоке
350 гл. 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ методы Рис. 10.7. Двумерные проверочные частоты, а — расположение проверочных СИМВОЛОВ по строкам; б— другой выбор проверочных символов.
10.?. ДЛИННЫЕ КОДЫ НАД МАЛЫМИ ПОЛЯМИ 351 с j = 1, ...» 2t и j' = 1, ..., 2t можно было бы вычислить все компоненты синдрома. Тогда, согласно теореме 10.4.2, можно будет вычислить и остальные компоненты синдрома. Для построения кода, исправляющего восемь ошибок, надо соответствующим образом выбрать 128 проверочных частот. Сначала выберем в качестве проверочных частот пары (1, 1), (1, 2), .... (1, 21), так что Си = С,2 = ... = Clt9l = 0. Все вы- бранные так проверочные частоты лежат в разных классах со- пряженных элементов, и каждый класс содержит восемь элемен- тов, так что каждая из этих частот эквивалентна восьми прове- рочным битам. Если произошло нс более t — 8 ошибок, то вычи- сленные в этих частотах компоненты синдрома могут быть про- должены до компонент Sjp, /' = Далее, используя ограничения сопряженности для этой верхней строки, заполняем строки с номерами 2, 4, 8 и 16. Выберем теперь в качестве про- верочных частот пары (3, 1), (3, 2), .... (3, 2t). Это дает еще 16 X 8 проверочных битов. Вычисление компонент синдрома в третьей строке дает также значения компонент синдрома в стро- ках 6 и 12. Продолжая таким образом, выберем все приведенные на рис. 10.7 проверочные частоты. Это дает возможность вычислить все компоненты синдрома для частот, заполняющих угловой квадрат 21 х 2/, а тем самым и все компоненты синдрома (напом- ним, что произошло не более I ошибок). Каждый проверочный символ эквивалентен восьми проверочным битам, так что всего получаем 1024 проверочных битов. Таким образом построен (65 025, 64 001, 17)-код, характеристики которого лучше, чем у (65 535, 65 407, 17)-кода БЧХ. Достоинство этого кода состоит в том, что, несмотря на его большую длину, для него существует сравнительно простой алгоритм декодирования, позволяющий исправлять большое число пакетов ошибок (такой алгоритм будет сейчас описан). Декодер для этого кода аналогичен описанному ранее. По принятому двумерному слову вычисляется двумерное преобразо- вание Фурье в 128 проверочных частотах. Это дает спектральные компоненты Е,,- вектора ошибок в проверочных частотах. Пока- жем, как по этим известным компонентам вычислять остальные компоненты спектра ошибок. Результат применения алгоритма Берлекэмпа—Месси к первой строке рекуррентно продолжим на все 255 компонент этой строки и, используя ограничения сопряженности, заполним строки с номерами 2, 4, 8 и 16. То же самое проделаем с третьей строкой, заполняя строки с номерами 3, 6 и 12. Повторим вычисления для пятой строки и т. д. до тех пор, пока не будут заполнены 2t строк. После заполнения 2t строк начинается декодирование столб- цов. Один из способов состоит в использовании алгоритма Бер-
ЗВ2 гл 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ лекэмпа—Месси для заполнения всех входов таблицы Е/,-. Об- ратное двумерное преобразование Фурье завершает декодиро- вание. Более простой процедурой является следующая. Вычи- слим одномерное обратное преобразование Фурье для 21 извест- ных строк символов Ец’. Это дает множество из 2t компонент синдрома для каждого столбца; ненулевые компоненты могут иметь не более 2t столбцов и только к ним необходимо применить алгоритм Берлекэмпа—Месси. На рис. 10. 7, б показан другой возможный способ выбора проверочных частот, который приводит к двумерному коду с боль- шей скоростью, но с более сложным декодером. В этом случае алгоритм Берлекэмпа—Месси должен применяться для декоди- рования попеременно строк и столбцов. При необходимости для вычисления новых компонент Е]Г используются ограничения сопряженности. ЗАДАЧИ 10.1. Множество всех (7 X 7)-матриц пад GF (2) образует векторное про- странство. Выписать базис этого пространства Сколько векторов содержит это пространство? Является ли подпространством множество всех таких матриц с нулевой главной диагональю? Если да, то сколько векторов содержит это под- пространство? 10.2. Пусть р (х) = хг + I и q(x) — х*-[- * + I — многочлены над GF (2). Найти «китайские многочлены» а (х) н b (х), удовлетворяющие равен- ству а (х) р (х) + Ь (х) q (к) = 1. 10.3. Пусть в" — простой (п, п — 1)-код с проверкой на четность, и пусть есть (и®, (п — 1)3)-код, представляющий собой трехмерное произведение трех одномерных копий *8. а. Сколько ошибок может исправить код t?3? б. Привести пример двух конфигураций ошибок одинакового веса, об- наруживаемых кодом, по имеющих один и тот же синдром и, следовательпо, неисправляемых. 10.4. а. С помощью перемежения расширенного кода Рида—Соломо- на над GF (64) построить (3840. 3360)-код, исправляющий пакеты из 240 6-битояых байтов. Чему равно минимальное расстояние кода-перемежс- ния? б. Перевести этот код в (4096. 3360)-код-произведеиие. который также исправляет пакеты из 240 байтов, по. кроме тою, исправляет и случайные кон- фигурации ошибок из 22 бантов в. Описать декодеры для кодов из предыдущих пупктоя задачи. 10.5. Сколько ошибок может исправлять произведение (7, 4)-кода Хэм- минга на самого себя? Используя в качестве готового блока декодер для (7, 4)- кода Хэмминга, построить простой декодер, исправляющий ошибки в пределах радиуса упаковки кода-произведения. 10.6. Пусть а и b удовлетворяют равенству сц -|- bn% = 1 для взаимно простых nt ч и2- При заданном циклическом (nlt /г^-коде с порождающим много- членом gt(x) к заданном циклическом (и2. й^)-коде с порождающим многочле- ном ft (х) доказать, что порождающий многочлен циклического кода-произве- дения длины п = nift равен еи_НОД(й(**"). »(«"'). «"-II-
ЗАМЕЧАНИЯ 353 ЗАМЕЧАНИЯ Произведение кодов ввеч Элане 11954]. доказавший, что минимальное расстоя- ние кода-произведения равно произведению минимальных расстояний исходных кодов. Бартон и Уэлдон [1965] доказали, что при взаимно простых длинах произведение двух циклических кодов является циклическим кодом. В этой.же работе изучалось исправление пакетов ошибок н независимых ошибок кодами- произведениями Методы декодирования кода-произввдения описали Редан и Робинсон [19721, а также Уэлдоп [1971 [ В§ 10.4—10 6 развиваются идеи автора (Блейхут [1979]). Использовать дуальный код-произведепис для исправ- ления кратных пизколлотпостпых пакетов предложили Чень и Нг [1973]. 12 1> Блейхут
ГЛАВА 11 БЫСТРЫЕ АЛГОРИТМЫ Хорошие коды с большой длиной и большим объемом алфавита, такие, как коды Рида Соломона, находят все более широкое применение. В будущем потребуются еще более длинные коды, контролирующие ошибки, и поэтому задача уменьшения слож- ности алгоритмов декодирования становится важной. Мы уже рассмотрели некоторые эффективные алгоритмы декодирования кодов Рида—Соломона и связанных с ними кодов и знаем, как строить декодеры, содержащие порядка па вычислений. В данной главе проводится исследование сложности декоде- ров. Мы начнем с уже рассмотренных декодеров и опишем для них способы более эффективного выполнения вычислений. В качестве меры сложности вычислений выбирается число умножений (а иногда и число сложений) в проводимых вычислениях. Будут строиться методы, уменьшающие сложность вычислений именно в этом отношении. За это приходится платить усложнением струк- туры: для уменьшения числа сложений и умножений приходится увеличивать структурную сложность, привлекая алгоритмы с более сложными индексацией и разветвлением. Безусловно, во многих приложениях регулярность алгоритма оказывается важнее, чем число умножений и сложений. Такой аспект сложности трудно определять численно, и поэтому мы его не рассматриваем. 11.1. ЛИНЕЙНАЯ СВЕРТКА И ЦИКЛИЧЕСКАЯ СВЕРТКА Линейная свертка с, = S gi-*dk k=0 может быть также записана в виде произведения многочленов С М = g W d W- Стандартный способ вычисления произведения двух многочленов требует примерно (deg d (х)) X (deg g (х)) умножений и ело-
II I. ЛИНЕЙНАЯ И ЦИКЛИЧЕСКАЯ СВЕРТКИ ЗВб жений, по, возможно, существуют другие способы его вычисле- ния, для которых это число можно уменьшить. Так как свертка является элементом многих вычислительных операций, то имеет смысл построить эффективные способы ее вычисления. Более того, циклическую свертку с (х) = g (х) d (х) (mod х" — 1) можно сначала вычислить как линейную, а затем привести по модулю х" — 1. Следовательно, эффективные способы вычисле- ния линейной свертки дают также эффективные способы вычи- сления циклической свертки, и, обратно, эффективные способы вычисления циклической свертки можно легко превратить в эф- фективные способы вычисления линейной свертки. Циклическая свертка может быть записана в виде Ci = X i = 0,.... И — 1, /-0 где двойные скобки обозначают вычисление индексов по модулю п- Согласно теореме о свертке, в частотной области имеем С} - GjDj, и, таким образом, циклическую свертку можно вычислить, после- довательно применяя преобразование Фурье, покомпонентное умножение и обратное преобразование Фурье. Если п представ- ляется произведением большого числа сомножителей, то быстрое преобразование Фурье (БПФ), которое будет описано в следу- ющем параграфе, позволяет снизить число вычислений. Преоб- разование Фурье в поле GF (fl") существует только для целых п, делящих число fl" — 1, и некоторые из этих п не допускают алго- ритмов БПФ. Но в теории обработки дискретных сигналов хо- рошо известны методы удлинения векторов d, g и с до такой длины л', что компоненты с индексами i = 0, ..., п — 1, сохра- няют нужные значения, а вектор с связан с векторами d и g со- отношением циклической свертки, вычисляемой, однако, на длине п', удобной для применения алгоритмов БПФ. Возьмем, например, удовлетворяющую условию п' 2п длину п', на которой легко вычислить преобразование Фурье, и положим c‘i — 12*
356 ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ где двойные скобки в индексе обозначают вычисление по модулю п'. Тогда с, — ci, i = 0, .... п — 1. Остальные значения с\ не пред- ставляют интереса и могут быть отброшены. Разработаны методы сведения длинной линейной свертки к множеству коротких циклических сверток. Опишем метод, оказавшийся чрезвычайно полезным в обработке дискретных сигналов и известный под названием метода перекрытия с нако- плением. Он применим также к длинным сверткам в полях Галуа. Предположим, что имеется устройство, вычисляющее цикли- ческую свертку длины п, и что мы хотим воспользоваться этим устройством для умножения многочлена а (х), степень А кото- рого меньше п, на многочлен Ь (х), степень В которого больше п, чтобы получить произведение с (х) = а (х) b (х). По имеющемуся многочлену b (х) сформируем множество многочленов {№ (х), (л), ..., № (х)|, степень каждого из которых не превосхо- дит п — 1, по следующему правилу: ( Ь{, 1 = 0, .... п — 1, I О, в остальных случаях, i = 0.... ' I 0, в остальных случаях, •=»..... ' I 0, в остальных случаях, b(s) _ | (л-Л), i = 0, .... п — 1, ‘ I 0, в остальных случаях, где s выбрано достаточно большим для того, чтобы были нред- стаалены все коэффициенты многочлена Ь (х). Отметим, что коэф- фициенты построенных многочленов перекрываются. Пусть с(1> (х) = а (х) Ь1'1 (х) (mod х" — 1), / = 1,..., s. Коэффициенты многочлена с (х), за исключением первых А коэф- фициентов, содержатся среди коэффициентов многочленов (х), а именно Ci=Cin, С<+(Л-Л> = 4®’, СЦ-2 (л—Л) = С;”, i = А,..., п 1, 1 = А,...,п — 1, L — A, ..,п 1 и т. д. Л младших коэффициентов многочлена с (х) теряются. Во многих приложениях при вычислении линейной свертки нужны не все коэффициенты выходного многочлена, и тогда описанная
Jt.2. БЫСТРЫЕ АЛГОРИТМЫ СВЕРТКИ ЗБ7 процедура может быть удовлетворительной. Если же нужны все коэффициенты выходного многочлена с (х), то в проделанных выкладках следует просто заменить многочлен b (х) многочле- ном хлЬ (х). Это позволят вычислить все необходимые коэф- фициенты, по все индексы будут сдвинуты на число А. Каждая циклическая свертка, за исключением последней, дает п — А коэффициентов линейной свертки и А бесполезных коэффициентов, которые отбрасываются. Так как степень много- члена bls> (х) может быть меньше, чем п — 1, то последняя свертка может давать больше, чем п — А, значимых коэффициентов. 11.2. БЫСТРЫЕ АЛГОРИТМЫ СВЕРТКИ Известно много алгоритмов вычисления циклической свертки, и многие из них более эффективны, чем использование быстрого преобразования Фурье и теоремы о свертке. В данном параграфе будет описан быстрый алгоритм Винограда вычисления свертки. Этот метод пригоден для любого поля, но мы интересуемся только конечными полями GF (q). Он сводится к разбиению свертки на легко вычисляемые короткие свертки, которые формируются в со- ответствии с китайской теоремой об остатках для многочленов. Алгоритм Винограда находит вычет С (х) = g (х) d (х) (mod b (х)) для некоторого фиксированного многочлена b (х) над GF (q). Для построения алгоритма вычисления линейной свертки С (X) = g (X) d (х) выберем любое целое число N, большее степени с(х), и любой многочлен b (х) степени /V. Тогда имеем тривиальное утверждение с (х) = с (х) (mod b (х)), так что алгоритм Винограда применим и для вычисления линей- ных сверток. Чтобы разбить вычисление свертки по модулю многочлена на отдельные части, разложим b (х) на взаимно простые множи- тели над некоторым подполем поля GF (q): b (х) = br (х) bs (х) ... Ь3 (х). Обычно в качестве поля разложения выбирается простое подполе GF (р), и будем рассматривать этот случай; теория, однако, столь же пригодна и для любого подполя. Процедура миними- зирует число умножений в GF (д) и не делает попыток такой ми- нимизации в GF (р). В большинстве практических приложений простое поле является полем GF (2), умножение в котором три- виально.
358 ГЛ. II. БЫСТРЫЕ АЛГОРИТМЫ Алгоритм Винограда для свертки основан на вычетах (х) = Rt> k (х) ], k = 1, .... s. Вычисление циклической свертки разбивается на два шага. Сначала вычисляются вычеты для k= 1, СА (х) = g(x)d (х) (mod bh (х)) = gfi (х) dh (х) (mod Ьк (х)). Вычисление вычетов gk (х) и dk (х) не требует умножений ’). Согласно китайской теореме для многочленов, выражение для многочлена с (х) через эти вычеты дается формулой с (х) — at (х) q (х) + ... 4- ая (х) c„ (х) (mod b (х)), причем все многочлены (х), ..., о8 (х) являются многочленами над GF (р). Так как коэффициенты многочленов ак (х) принад- лежат простому полю GF (р), этот последний шаг также не тре- бует умножений. Только для вычисления коротких сверток, задаваемых произведениями многочленов gk (х) dk (х), требуется производить умножения в поле GF (у); так как оба многочлена gk (х) и dk (х) имеют deg Ьк (х) коэффициентов, то обычный метод умножения многочленов приводит к оценке необходимого числа умножений в виде суммы S IdegM*)]'- А=1 Это может существенно уменьшить число умножений. Иногда удается дополнительно уменьшить число умножений, разбивая одну или несколько коротких сверток на еще более короткие и повторяя описанную процедуру. Одна из модификаций алгоритма Винограда вычисления свертки состоит в выборе многочлена b (х) степени несколько меньше нужной. Тогда описанная процедура приводит к непра- вильному значению свертки, но се можно подправить несколькими дополнительными вычислениями. Это делается следующим обра- зом. Согласно алгоритму деления, с (х) = Q (х) b (х) + Rb UJ к (х) ]. Если deg b (х) > deg с (х), то мноючлеп-частпое Q (х) тождест- венно равен нулю, и ситуация аналогична рассмотренной выше. Если deg b (х) с deg с (х), то алгоритм Винограда приводит к вычислению только остатка /?ь к (х) ]. Член Q (х) b (х) ') Это утверждение (и аналогичные ему утверждения ниже) основывается на том, что, как уже было указано, при оценке числа операций алгоритма Вино- града не учитываются операции в базовом поле CF (р); если GF (р) — GF (2), то умножений по существу нет. — Прим, перев.
11.2. БЫСТРЫЕ АЛГОРИТМЫ СВЕРТКИ ЗбЭ можно вычислить с помощью дополнительных операций. В про- стейшем случае deg b (х) = deg с (х) и степень Q (х) должна равняться нулю. Если b (х) представляет собой приведенный многочлен степени N, то, очевидно, коэффициент при xN в много- члене с (х) равен Q (х) = cN. Следовательно, с (к) — си b (х) 4- Ль (*> [С (х) ], где c4v легко вычисляется как произведение старших ьезф^ипк- ентов многочленов g (х) и d (*). Для вычисления циклической свертки длины п можно сначала вычислить линейную свертку, а затем выполнить приведение по модулю л" — 1. Однако, как правило, лучше сразу выбрать b (х) равным хп — 1, и приведение по модулю хп — 1 [произво- дить в процессе применения китайской теоремы об остатках. В случае линейной свертки степень многочлена b (х) должна быть больше суммы степеней многочленов g (х) и d (х), в то время как степень многочлена х" — 1 может быть намного меньше. В этом случае либо многочлены, по модулям которых производятся вычисления, имеют меньшие степени, либо число таких многочле- нов меньше. С другой стороны, простые делители многочлена хп —• 1 заранее фиксированы, а делители многочлена b (х), хотя степень его и выше, могут быть выбраны так, как нам удобно; взаимно простые делители многочлена b (х) даже не обязаны быть простыми. На рис. 11.1 приведены некоторые алгоритмы циклической свертки в полях характеристики 2, построенные с помощью рас- смотренных методов. В компактной матричной форме эти алго- ритмы записываются равенством с = В [(Cg) - (Ad)J, где Cg и Ad — векторы одинаковой размерности, a [(Cg). (Ad) ] — их покомпонентное произведение. Матричное представление этих алгоритмов однозначно, но последовательность выполнения сло- жений не регламентирована. При разумном упорядочении сло- жений и использовании частичных сумм можно также миними- зировать число сложений. Если многочлен g (х) фиксирован, то вектор Cg может быть вычислен заранее. Тогда алгоритм вычи- сления свертки можно записать в виде с — ВС Ad, где С предста- вляет собой диагональную матрицу, на диагонали которой вы- писаны компоненты вектора Cg. В качестве примера такой формы алгоритма циклической свертки на рис. 11.2 выписан алгоритм четырехточечной циклической свертки. Данный параграф мы завершаем простым примером построе- ния кодера для (7, 3)-кода Рида—Соломона. Эта простенькая задача не позволяет в полной мере продемонстрировать мощь рассматриваемого метода, но зато дает возможность легко про-
360 ГЛ. И. БЫСТРЫЕ АЛГОРИТМЫ Двухточечная циклическая свертка, 3 умножения Трехточечная циклическая свертка, 4 умножения Четырехточечная циклическая свертка, 9 умножении Пятиточечная циклическая свертка, Ю умножений Рис. 11.1. Алгоритмы коротких сверток следить работу алгоритма. Более того, мы не будем пытаться построить наиболее эффективный алгоритм, а опишем такой путь построения алгоритма, который даст возможность проиллюстри- ровать многие идеи. Для (7,3)-кода Рида—Соломона с порождающим много- членом g (х) — х4 + а3х8 | х8 4- ах + а3 степень многочлена d (х) не превосходит двух. Для непосредственного вычисления g (х) d (х)
11.2. БЫСТРЫЕ АЛГОРИТМЫ СББРТКИ 361 Девятиточечная циклическая свертка, 19 умножений Го Т во <1 I I 0 I I 0 I I 0 1 0. I 1 0 1 10 1 I 0 I I 0 I 1 0 1 г. 1 0 I 1 0 1 I 0 1 I 1 0 1 I 0 I I 0 41 110110110 <. 0 I I 0 1 I 0 1 I 0 1 I 0 I I 0 I I 9з 0 I 1 0 I I 0 1 I = <1 I 10 1 10 0 0 100100000 Si 100100000 Гз 011000011 0 0 0 10 0 10 0 9s 000100100 Го 0 0 0 0 1 1 0 1 I 100000100 0* 100000100 < I I 0 0 0 I 1 I I 1 | I 1 0 1 0 1 0 в! I I I I 0 I 0 1 0 Г«_ 001111110 0 I 0 1 1 I I 0 I S* и I 0 1 1 1 1 0 1 1 I 1 I 1 0 0 0 I 1 0 I 0 I 0 1 11 1 0 1 0 1 0 I I I I I 0 0 I I 1 0 I I 1 0 1 0 0 0 1 0 I ! 0 I 0 0 0 1 0 0 I 1 1 0 1 1 1 0 010110100 0 10 1 10 10 0 I 0 1 I I 0 0 I 1 I 0 0 0 I 0 I 10 I 0 0 0 I 0 1 10 I I 1 0 0 1 I I 0 10 1 1 0 I 0 0 0 I 0 I 10 10 0 0 001110111 0 0 0 1 0 1 I 0 I 0 0 0 1 0 1 1 0'1 1 1 0 1 1 1 0 0 1 I 0 I 0 0 0 1 0 1 I 0 I 0 0 0 1 0 I 0 1 0 0 0 1 0 1 I 0 0 0 0 1 I 0 I I 0 0 0 0 1 10 1 1 0 0 I 0 I I 0 1 0 0 1 I 0 0 0 0 I I 0 1 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 0 1 10 1 10 0 0 0 1 I 0 I 10 0 0 Семиточечная циклическая свертка, 13 умножений О I О О I I I IOOI I 10 I 1 О I О <1 I I 1 I О I о о О О I I I О I О I I I О I о О I I I 0 О ) О I О I I I о О О I О I I I I I О О I О I 1 О О I О I I 1 I I О О I о in полей характеристики О I I I 00 I I О I I I о о I 10 0 10 1 10 0 10 1 I О I О I I I о О О I О I I I О I I I о I О I I О I О О 1 I О I О О I I I О О I I I (I О I (I О I I I О (I I I I (I I 2. необходимо 15 умножений- Однако поскольку данный частный многочлен g (х) имеет только два отличных от единицы значения коэффициентов, то тривиально просто так ор1апизовать вычи- сление, что понадобится только шесть умножений. Быстрый алгоритм, который будет приведен Ниже, превосходит алгоритмы как с 15, так и с шестью умножениями. Заметим также, что можно воспользоваться приведенным на рис. 11.1 алгоритмом
362 ГЛ. II. БЫСТРЫЕ АЛГОРИТМЫ семиточечной свертки, который, однако, содержит 13 умноже- ний. Согласно изложенной выше теории, можно выбрать любой многочлен Ь (х), степень которого не меньше 7. Выберем b (х) = = х1 + 1; тогда (х> + 1) = (х + I) (л8 + х + 1) (л8 + х* + I) = = bi (х) Ьй (х) bs (х). Можно было бы выбрать также многочлен b (х) = л2 (х + I)2 (У* + х + 1). у которого степени взаимно простых делителей несколько ниже, но наш выбор приводит к лучшим результатам. (Прежде всего найдем все необходимые для алгоритма фикси- рованные многочлены: g"1 (х) - /4, (1> [J (х) I - о. к'а W = а.» IsWI - I. g*3> до = UJ [g (х) ] = с^З^З авх j
*1.8. БЫСТРЫЕ АЛГОРИТМЫ СВЕРТКИ 363 Согласно китайской теореме об остатках для многочленов, а<’> (х) = х® |- х® + х4 + х» + х8 4 х | 1, а(2> (х) = х4 + х4 + х -г- 1, а‘я» (х) = х® + х® + х® 4- 1. Теперь нам надо вычислить три короткие свертки: с<*> (х) = £(|) (х) d(l) (х) = ad<0 (х), с<2> (х) = (х) d<2> (х) = d<2> (х), c<’> (X) = g<3> (х) d‘3’(х) = (а3х* | а’х , l)d<3>(x). По заданному многочлену d (х) вычисляем вычеты d<*> (х) = ds 4- dt 4- da, d<2> (x) = dgX2 4- d1X 4- d0, d<a> (x) = dax2 4- djX 4- d0. Таким образом, для вычисления d1* (х) требуется одно умноже- ние, для вычисления (х) умножений делать не надо, а для вычисления с(3> (х) требуется три умножения. Собирая вместе все эти вычисления, получаем следующее выражение для свертки: с (х) = (At 4- А2 4“ А4 4“ Ав 4- А8) х4 + (Аг 4- Аз 4- Ал 4- А?) х5 4- 4 (Ai 4- Аа 4- А4 4- Ле 4- А8) х4 4* (А2 4- А& 4- А5 4- 4- Ал 4- Аь 4- А6) х® + 4- (А, 4- Аз Аз + At + Аъ +Аг, + А7) х® 4 4- (At 4 Аз I- А4 4- Ае 4- А, 4- А8) х 4 (А! -| А6 4 4- А, -Ь Ав), Ai = a (ds 4- d, 4- d0), А2 = d2, As = dIt А9 = dfl, As = a3dz, A e — asds 4- ct3dlt A7 — a3dt 4- asda, Ae = aFdi 4- d^ Выполняемое в таком виде вычисление свертки с (х) требует четырех умножений я 35 сложений в поле GF (8). Несомненно,
364 ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ однако, что промежуточные частичные суммы можно вычислять так, чтобы уменьшить число сложений. Если продолжать процесс, то можно попытаться уменьшить число умножений при вычислении с*3* (х): с(3) (х) = £<3) (х) d<3) (х) = (а3х* | a3x-J- 1) {djp | dpr-p dj). Выберем &' (х) ~ х (х 4- 1) (xs 4- х + 1); тогда c<4(x) = (aU)fc'(x) Rb- (х) [с<’» (л)1- Для вычисления asd2 необходимо только одно умножение. Вычеты даются равенствами g<3) (О (х) = 1, gU) (2) де „ |, ^^(х) = а и d‘3> (I) де = dot d®> (2) де = di di d(3> (3> де = (di _|_ х I- (dg 4- dj. Тогда с(3) <1) де = d<3> (» (х), «Я (2) де -= d<3) <2> де, С(3) (3) де = ad(3> (3) де. Для вычисления с!3>(3) (х) необходимо два умножения. Мы уже использовали одно умножение для вычисления asdg, так что всего для вычисления с'3’ (х) с помощью выписанной выше про- цедуры требуются три умножения. Так как непосредственное вычисление с<3> (х) также включает три умножения, то предпочте- ние надо отдать ему. 11.3. БЫСТРЫЕ ПРЕОБРАЗОВАНИЯ ФУРЬЕ Дискретное преобразование Фурье (ДПФ) в той форме, как оно задается: Vi = Ё требует порядка пг умножений и п2 сложений. Для составного п имеется несколько способов превратить такое преобразование
U.S. БЫСТРЫЕ ПРЕОБРАЗОВАНИЯ ФУРЬЕ 36В ДПФ V, = £ a^Vi i*-0 Число умножений « ns БГГФ-алгоритм Кули -Тыоки 119651 п — п'п", i == i' + п'Г, i' - 0,..., п' — 1, /” = 0, ..., л" — 1 / — «7 I Г» Г = 0,.... п' — 1, j” = 0,.... п" - I. Vp. /• = .Е, Р' г iLoTf'rt’.'. *"] Число умножений т п (п' и") + п БПФ-алгоритм Гуда—Томаса (11960], 119631) п = п'п", п' и п“ взаимно просты Перестановка входных символов i =.t,N"n'’ | i"W'n'(modn), причем прич Перестановка выходных символов /' =. N”j (mod п') | .„ = | л'/" (mod л) / = ^7 (mod n ) J 1 • 1 ‘ ' Число умножений « n (n' — n") Рис. 11.3. Некоторые алгоритмы БПФ. Фурье в двумерное преобразование или в нечто ему подобное. С вычислительной точки зрения это приводит к существенно более эффективной форме, хотя понять ее структуру труднее. Алгоритмы подобного рода известны под общим названием бы- строго преобразования Фурье (БПФ). Некоторые рассматриваемые в этом параграфе алгоритмы, а именно алгоритм Кули—Тыоки и алгоритм Гуда—Томаса, приведены на рис. 11.3.
366 ГЛ. II. БЫСТРЫЕ АЛГОРИТМЫ Начнем с БПФ-алгоритма Кули- Тьюки. Предположим, что п =- п'п". В выражении для преобразования Фурье сделаем сле- дующую перестановку входных и выходных символов: i = £ + t££ / = n’f + Г, Тогда £ = 0, ..., ri — 1, I" = 0, .... п" — 1 /' =- 0, .... п’ — 1, /" = 0..........п" — 1, = X £ <" ь" • 1 _ г—о «• о Раскроем скобки в показателе степени и положим а'1' = у и а1'" — Р Так как порядок элемента а равен п'п’, то член an'n"*V = = 1 можно опустить. Определим теперь двумерные переменные, которые также обозначим через v и V, задавая их равенствами Vi-, i- = vt- j „ч", £ = 0,...»л' — 1, i” = 0,. 1. у... r = va.r+r, f = 0,..., n' - 1, f = 0,...,n"- 1. Это задает отображение входного и выходного векторов данных в двумерные таблицы, причем = £ Р'’ a'”'" S V"'V- i'—O L i"=0 Хотя эта формула сложнее исходной, число сложений и умноже- ний при вычислении по ней гораздо меньше, а именно требуется не более п (п' + п" -|- 1) умножений по сравнению с л2, необ- ходимых в исходном варианте. Заметим, что при каждом значе- нии £ внутренняя сумма представляет собой л "-точечное преоб- разование Фурье и при каждом значении Г' внешняя сумма пред- ставляет собой «'-точечное преобразование Фурье. Если соот- ветствующая длина является составным числом, то каждое из этих преобразований в свою очередь можно упростить с помощью быстрого преобразования Фурье. Преобразование длины « с де- лителями л{ таким образом представляется в форме, требующей около п Yiini умножений. БПФ-алгоритм Кули—Тыокп можно наглядно представить в виде отображения двумерной таблицы в двумерную таблицу, пример которого для п = 15 и п -- 21 приведен на рис. 11.4. Преобразование Фурье сначала применяется к каждой строке, а затем к каждому столбцу. Перед применением преобразования Фурье к столбцам производится поэлементное умножение. Отме- тим, что компоненты спектра упорядочены иначе, чем компоненты
11.3. БЫСТРЫЕ ПРЕОБРАЗОВАНИЯ ФУРЬЕ 367 сигнала. Такое упорядочение называется перестановкой адресов. Поля Галуа, в которых преобразование Фурье вычисляется наи- более просто, имеют вид GF (2т +1), где число 2m -|- 1 является простым. Известно, что если т не является степенью двойки, то 2m + 1 не является простым числом. Обратное утверждение Истинный вхойной файл Переинйекси-ция Кули-Тувки 5-точечный exofl 2.1-точечный ВХОЗ 0 1 2 3 4 0 1 2 3 4 5 Б 5 6 7 В 9 8 9 10 11 12 13 10 и 12 13 14 14 15 1Б 17 1В 19 20 5-точечный выхоЙ 21-точечный выхой 0 3 6 9 12 0 3 6 9 12 15 1В 4 7 10 13 1 4 10 13 18 19 г 5 8 И 14 2 5 8 11 14 17 20 Переинйексацио ГуЙа-Томаса. 15-точечный вхоЙ 2(-точечный вхоЙ 0 6 12 3 9 0 15 9 3 18 1? Б 10 13 4 18 10 4 19 13 5 11 2 8 14 14 8 2; 17 И 5 20 5-гпсчечный выхов 21-точечный выхой 0 3 6 9 12 0 3 Б 9 12 15 18 5 8 И 14 2 10 13 1Б 19 4 10 13 1 4 7 14 17 20 2 5 8 11 Рис. 11.4. Примеры переиидексации.
368 гл. II. БЫСТРЫЕ АЛГОРИТМЫ неверно, так как известно, что число 2®2 -}- 1 является составным. Но для т — 2, 4, 8 и 16 числа 2га -|- 1 =- 5, 17, 257 и 65 537 являются простыми и известны под названием простых чисел Ферма. В поле Галуа GF (q), где q — простое число Ферма, все делители числа q — 1, включая и само это число, являются сте- пенью двойки. Преобразование Фурье V, = 2 а‘‘»г= существует для всех л, делящих 2"‘, ц всех элементов а, порядок которых равен п. Таким образом, в поле GF 1) существуют преобразования Фурье длин, равных 2*с, 215, 2м; 2а, 2. Постро- енный в таком поле систематический код Рида—Соломона может быть превращен в двоичный код, исправляющий пакеты ошибок. Этот код можно использовать для систематического кодирования r-битовых байтов; одно из 2Г значений запрещается использовать в качестве информационных символов. Проверочные символы принимают 2r -j- 1 значений, так что для их двоичною представле- ния требуется г -|- 1 битов. Так как в поле GF (2,е 4- 1) порядок элемента 2 равен 32, то преобразование Фурье длины не более 32 является чрезвы- чайно простым. Чтобы показать это, заметим, что в поле GF(2ю — 1) справедливо равенство 216 +1 — 0, так что 216 = —I и 232 - 1. Преобразование Фурье имеет вид 31 Ki = 2 2% так что умножение происходит только на степени двойки и опе- рация умножения по существу представляет собой циклический сдвиг в двоичной арифметической системе. Такое преобразование Фурье очень легко вычисляется с помощью двоичного БПФ-алго- ритма Кули—Тьюки, но длина преобразования, равная 32, слишком мала, чтобы иметь много приложений. Более длинные преобразования Фурье должны включать нетривиальные умно- жения. Однако использование 32-ичпого БПФ-алгоритма Кулп— Тыоки позволяет уменьшить число таких умножений. Напри- мер, рассмотрим 1024-точечное преобразование в поле GF (216 4 1): 1053 V] = 2 a.c!Vi, 1=0 где а—элемент порядка 1024. БПФ-алгоритм Кули—Тыоки приводит эту формулу к виду
НЯ. БЫСТРЫЕ ПРЕОБРАЗОВАНИЯ ФУРЬЕ 369 Внутренняя сумма при каждом Г является 32-точечным пре- образованием Фурье, а внешняя сумма является 32-точечным преобразованием Фурье при каждом i". Только со степенью элемента а связаны нетривиальные умножения, но их число равно 1024. В общем случае для вычисления преобразования Фурье в поле GF (21в 1) требуется около n (riogS2/Г|— 1) умножений в этом поле, (1/2) п log2 п сложений и (1/2) п log8 п сдвигов. Другим алгоритмом БПФ является алгоритм Гуда—Томаса для взаимно простых делителей. По сравнению с алгоритмом Кули—Тьюки он немного сложнее в принципе, но и немного проще в вычислительном отношении. В алгоритме Гуда—Томаса форма переиндексации линейного массива в двумерную («' X п")-таб- лицу, позволяющая вычислять одномерное преобразование Фурье с помощью двумерного преобразования Фурье, отличается от формы переиндексации в алгоритме Кули—Тьюки. Алгоритм Гуда—Томаса по идее существенно отличается от алгоритма Кули—Тьюки. В нем п' и п" предполагаются взаимно простыми, и в основе отображения лежит китайская теорема об остатках. Способ упорядочения данных иллюстрируется рис. 11.4. Упоря- дочение начинается с левого верхнего угла таблицы, и компо- ненты записываются вдоль продолжения диагонали. Так как число строк и число столбцов взаимно просты, то продолженная диагональ пройдет через все элементы таблицы. После выпол- нения двумерного преобразования Фурье компоненты спектра выписываются в двумерной таблице в другом порядке. БПФ-алгоритм Гуда—Томаса основан на китайской теореме об остатках для целых чисел. Входные индексы определяются саоими вычетами по правилу ? — i (mod п1), i” = i (mod n"), задающему отображение входного индекса i в пару индексов (F, i"), лежащих на продолженной диагонали двумерной таблицы. Согласно китайской теореме об остатках, существуют целые числа N' и N", такие, что N'n' | №л“ = 1. Это позволяет следующим образом однозначно вычислить исход- ный индекс i по паре (F, i"): I — i'N’n” | i"N'n (mod n). Выходные индексы упорядочиваются несколько иным способом. Определим j' = N"j (mod л')» Г ~ N’j (mod п”).
370 ГЛ- к. БЫСТРЫЕ АЛГОРИТМЫ В эквивалентном виде это можно записать так: Г = ((W' mod п") 1 mod п"), Г = ((N" mod п') / mod п'). Тогда выходной индекс / можно вычислить следующим образом: j = n"f -f- n’j" (mod n). Чтобы проверить это, запишем / = п" (N“j + Qin’) +- п' (N'j -I Qtri’) (mod n'n") = j (n”N" -r n’N') (mod n) При такой переиндексации формула Г; = Х"=о«‘'Vi прини- мает вид Выполним умножение в показателе степени. Так как порядок элемента а равен п'п’, то члены, содержащие п'п", можно отбро- сить. Используя выписанные соответствия для индексов, будем рассматривать входной и выходной векторы как двумерные таблицы. Тогда Vf.i- = Е Е а""a1'" = Е Е f'Vn-.i-. i'=0 i"=0 где р = —элемент порядка а у = аА" —эле- мент порядка и". Полученная формула представляет собой дву- мерное (п’ X поточечное преобразование Фурье, для вычисле- ния которого требуется примерно п (п’ + п") умножений и при- мерно столько же сложений. Если длина преобразования по столб- цам или по строкам является составным числом, то можно про- вести дальнейшее упрощение, снова применяя быстрое преобра- зование Фурье. Поступая таким образом, можно преобразование длины п, распадающейся на взаимно простые множители п», привести к форме, для вычисления которой требуется порядка n Stnj умножений и сложений. Для выполнения преобразования Фурье можно выбрать как алгоритм Кули—-Тыоки, так и алгоритм Гуда -Томаса. Иногда возможно даже использование обоих алюритмов одновременно. Например, используя БПФ-алгоритм Гуда—Томаса, можно раз-
11.4. АЛГОРИТМЫ АГАРВАЛА—КУЛИ 371 бить 63-точечное преобразование на 7-точечное и 9-точечное, а затем, используя БПФ-алгоритм Кули—Тьюки, свести 9-точеч- ное преобразование к двум 3-точечным. Организованное так вычи- сление будет аналогично (3 X 3 х 7)-точечному трехмерному преобразованию Фурье. П.4. АЛГОРИТМЫ АГАРВАЛА—КУЛИ ВЫЧИСЛЕНИЯ СВЕРТОК Ту же схему индексации, которая была использована в алгоритме Гуда—Томаса для превращения одномерного преобразования Фурье в многомерное преобразование Фурье, можно использо- вать для превращения одномерной свертки в многомерную. Этот метод разбиения свертки известен под названием алгоритма Агарвала—Кули вычисления свертки. Он не дает такого же уменьшения числа умножений, как алгоритм Винограда вычи- сления свертки, но зато и не имеет такой, как у алгоритма Вино- града, тенденции роста числа сложений для больших п. Далее этот метод более структурирован и, следовательно, для больших п более обозрим, так как допускает разбиения на подалгебры. Используя алгоритм Агарвала—Кули разбиения длинной свертки на короткие и алгоритм Винограда вычисления коротких свер- ток, можно получить хорошие алгоритмы для вычисления свертки. В отличие от алгоритма Винограда для свертки, использую- щего китайскую теорему об остатках для многочленов, алгоритм Агарвала—Кули основан на китайской теореме об остатках для целых чисел и может быть использован только в тех случаях, когда длина п имеет взаимно простые делители. Для заданных векторов с компонентами gi и d* itpil i = 0, .... n — 1 требуется вычислить циклическую свертку Q = i = о.....« - I, где двойные скобки у индексов обозначают вычисления по мо- дулю п. Превратим эту одномерную свертку в двумерную. В предыду- щем параграфе мы уже видели, как с помощью китайской теоремы об остатках отобразить одномерные входные данные в двумерную таблицу и как двумерную таблицу выходных данных отобразить обратно в одномерный вектор. Заменим индексы i и k парами индексов (i't I”) и (fe', k") так, что I — n"i' |- н'Г', Г = 0....п' — 1, I" = 0, .... п" — 1, k — n”k' + n’k", k' —0, ..., п — I, k" = 0, ..., п" — 1.
372 ГЛ- 11- БЫСТРЫЕ АЛГОРИТМЫ При рассмотрении алгоритма Гуда—Томаса мы уже видели, как определить новые индексы, чтобы они выполняли свое предна- значение: f (mod п'), Г = N'i (mod п”). k' = N"k (mod n'), k" = N’k (mod n”), где N' л N" представляют собой целые числа, удовлетворяющие условию N’n' 4 N"n" - 1. Тогда свертка записывается равенством «•—I п"—I Are-1 n'i” = S («' /,-=0 fe"=C Двойное суммирование по паре (k't k") эквивалентно суммирова- нию по А, так как перебираются те же самые члены суммы- Опре- делим теперь двумерные переменные g, d и с: gk-.ir = k' = 0.......п' 1, fe" = О.....п” - 1, dk-.tr = dn-k-^n-k-, fe' = 0, .... п - 1, ku = 0......п” 1, Cfc-.fc" Ai-ft’+n-fer fe' = О......п' — 1, fe" = 0, .. , л" 1. так что свертка задается выражением С1-.Г = 2j dk-,k"gi’—k‘. f—k", где первые и вторые индексы берутся соответственно по модулю п' и л". Мы получили настоящую двумерную циклическую свертку. Для того чтобы описанный алюритм был полезен, ладо рас- полагать эффективным способом вычисления двумерной цикличе- ской свертки. Применим вдоль каждою из двух измерений алго- ритм Винограда вычисления свертки. Этот метод легче просле- дить, представив двумерную таблицу в виде одномерной таблицы многочленов. Определим множество п" многочленов равенствами <!».(>) = I W -О...........п - 1. к’- о
J 1.4. АЛГОРИТМЫ АГАРВАЛА-КУЛИ 373 Аналогично определим §*-(*) = Jj gk-.k'*k , k" = 0...п” - 1, и ra-(A) =.***', k" --=0, , п" 1 При этом двумерная свертка превращается в одномерную свертку многочленов: = Ё вцк--1П) (*) <hr(x) (mod А"' - 1), »" =г 0,..п" - 1. й"=С Для каждого i” в этой сумме производится сложение п" произве- дений многочленов. Всего имеется (л")2 произведений многочле- нов. Каждое из произведений многочленов является сверткой и может быть вычислено с помощью подходящего алгоритма. Одним из таких алгоритмов является алгоритм Винограда вычисления свертки. Для полного вычисления свертки алгоритмом Агарвала— Кули надо применить также алгоритм Винограда вычисления свертки по второму измерению. Но сначала остановимся и оце- ним сложность этих промежуточных вычислений. Пусть М (/) и А (/) обозначают соответственно число сложений и число умно- жений, необходимых для вычисления саертки с помощью име- ющихся в некоторой доступной библиотеке алгоритмов вычисле- ния циклической свертки. Тогда для вычисления двумерной свертки необходимо (п”)2 М (п') умножений и (п")2 А (п') + 4- (л" — 1) л"п' сложений. Эти вычисления можно выполнить даже еще лучше, воспользовавшись алгоритмом Винограда вычи- сления свертки и вдоль второй оси. Так как алгоритм Винограда вычисления свертки представляет собой тождество, содержащее сложения и умножения, то можно заменить в нем арифметические элементы многочленами. Следо- вательно, С;- (х) можно вычислить за Л1 (и") умножений много- членов и А (п") сложений многочленов, а для выполнения каж- дого умножения двух многочленов потребуется М (п') арифме- тических умножений и A (п') арифметических сложений, так что всего получится М (п") М (п') арифметических умножений и М (п”) А (п') + А (п”) М («') арифметических сложений. Число сложений не является симметричной функцией относительно параметров п' и п", чем можно воспользоваться для минимизации числа сложений. Аналогично если длина п циклической свертки является произведением трех или более взаимно простых множителей,
374 ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ Длина. Число преобразования умножении 2 3 5 6 7 9 10 14 15 21 35 45 63 105 315 630 1260 3 9 10 12 13 19 30 39 40 76 130 190 247 520 2470 7410 22230 Рис. 11.5. Характеристики некоторых алгоритмов Агарвала—Кули вычисления циклических сверток. (Используются алгоритмы коротких сверток, приведенные па рис. 11.1.) то алгоритм Агарвала—Кули позволяет преобразовать эту свертку в трехмерную или многомерную циклическую свертку и вычи- слять по каждому отдельному измерению циклическую свертку с помощью алгоритма Винограда. Структуру многомерной циклической свертки можно описать через одномерные циклические свертки также с помощью кроне- керовского произведения (кронекеровское произведение будет описано в § 11.5). На рис. 11.5 приведена таблица мультиплика- тивной сложности некоторых алгоритмов Агарвала—Кули вычи- сления циклической свертки в полях характеристики 2. 11.5. АЛГОРИТМ ВИНОГРАДА БЫСТРОГО ПРЕОБРАЗОВАНИЯ ФУРЬЕ Отличный от рассмотренного ранее метод вычисления быстрого преобразования Фурье дается БПФ-алгоритмом Винограда. Этот алгоритм основывается на четырех отдельных идеях: алгоритме Рейдера, описанном в § 11.2 алгоритме Винограда вычисления коротких сверток, схеме индексации алгоритма Гуда—Томаса для простых множителей, гнездовом алгоритме Винограда (см.
11.5. АЛГОРИТМ ВИНОГРАДА 37Б ниже). БПФ-алгоритм Винограда лучше БПф-алгоритмов Кули— Тьюки и Гуда—Томаса по числу умножений, по сложнее по структуре. За уменьшение числа умножений приходится платить усложнением индексации и использованием операций отобра- жения. БПФ-алгоритм Винограда подразделяется на малый БПФ- алгоритм Винограда и большой БПФ-алгоритм Винограда. К ма- лому алгоритму относятся преобразования, длина которых равна малому простому числу или степени малого простого числа. Боль- шой БПФ-алгоритм Винограда объединяет малые БПФ-алгоритмы Винограда, чтобы получить преобразование на большой длине х). Первым шагом является построение малого БПФ-алгоритма Винограда. Если п — малое простое число, то воспользуемся алгоритмом Рейдера, сводя вычисление преобразования Фурье к вычислению циклической свертки, которую в свою очередь вычислим с помощью алгоритма Винограда вычисления коротких сверток. В общем случае уравнения выписываются непосред- ственно, так что выбирать слишком большие п непрактично. В алгоритме Рейдера сведения дискретного преобразования Фурье к свертке используется только переиндексация; на этом шаге не требуется никаких сложений и- умножений. Структура алго- ритма вычисления свертки включает сначала сложения, потом умножения и затем опять сложения. Если п представляет собой степень малого простого числа, то можно использовать ту же самую процедуру, заменив алгоритм Рейдера некоторым более общим алгоритмом, который мы рассматривать не будем. Построим алгоритм Винограда вычисления пятиточечного БПФ в поле GF (16), находящий величины Vj = S co'/tfj, j = 0, .. - , 4, и = а®. Воспользуемся рассмотренным ранее (см. § 9.8) алгоритмом Рей- дера, сводящим пятиточечное преобразование Фурье к свертке Ь (х) = g (х) а (х) (mod X* — 1), где g (х) = а7х9 + сс11х® + к13х + ам, а (х) = о3х® 4- + v2x + vlt Ъ (х) = (V3 - Vo) * I- (V4 - Vo) xa + (V2 - Vo) x + (Vx - Vo). ') Такое сведение преобразования Фурье на болииой длине к совокупности преобразований Фурье на меньших дайнах получше название гнездового алго- ритма Винограда. — Прим, перев.
376 ГЛ. II. БЫСТРЫЕ АЛГОРИТМЫ Здесь многочлен g (х) фиксирован, многочлен а (л) получается из многочлена v (х) перестановкой коэффициентов с отбрасыва- нием, а многочлен V (л) получается из многочлена b (х) без от- брасывания коэффициента. Малый пятиточечиый алгоритм Винограда вычисления БПФ получится, если для вычисления произведения g (х) а (х) восполь- зоваться алгоритмом Винограда вычисления короткой свертки. Обращаясь к таблице на рис. 11.2, находим алгоритм Винограда вычисления четырехточечной циклической свертки, содержащий девять умножений. Воспользуемся этим алгоритмом для построе- ния алгоритма преобразования Фурье. Соединим операции пере- индексации алгоритма Рейдера с матричными операциями алго- ритма свертки, выполняя соответствующие перестановки строк и столбцов. Далее, так как коэффициенты многочлена g (х) яв- ляются фиксированными константами поля GF (16), то произ- ведение g на соответствующую матрицу можно вычислить заранее. Внеся все эти изменения в алгоритм четырехточечной свертки и присоединяя к нему компоненты и vv, получаем малый пяти- точечный алгоритм Винограда БПФ. На рис. 11.6 приведена запись этого алгоритма в матричном виде: V = BDAv. Отметим, что матрица А предварительных сложений и матрица В последующих сложений нс являются квадратными. Пятиточеч- ный входной вектор перед выполнением покомпонентного умно- жения вытягивается в десятиточечный, задаваемый матрицей D. Первая строка матричного равенства связана с вычислением ком- поненты Vo и не содержит умножений. Остальные девять строк определяются алгоритмом четырехточечной циклической свертки. Одна из констант, па которую происходит умножение, равна еди- Рис. 11.6. Малый пятиточечиый алгоритм Винограда вычисления Б11Ф.
U.S. АЛГОРИТМ ВИНОГРАДА 377 ницс, так что на самом деле приходится выполнять только восемь умножений *). Рассмотренный способ реализации малого БПФ-алгоритма Винограда можно использовать в случае, когда п является про- стым числом. Можно также построить малый БПФ-алгоритм Ви- нограда, когда п является степенью малого простого числа. Вообще говоря, пользоваться малыми БПФ-алгорнтмами Влно- Заметим, что дли построения 5-точечного ДПФ с девятью умножениями достаточно воспользоваться только тем. uio ядро а. ДПФ длины 5 удовлетво- ряет тождеству 1 + а -р а2 4- а3 + а4 — 0 Это позволяет организовать вы- числение величины V- = У с полях характеристики 2 (последнее, впрочем, несущественно) следуЕОЩим образом: Уо = «о т "1 + «а + vo + v4. Vs = (t»o -г »i) + (fi 4- t>4) a2 + (va 4-1>4) a4 4- (ц, 4- V4)«. Vi = (% 4- t>4) 4- (Ci 4- »4) a 4- (vs 4- f4) a® 4- (4o 4- «а) «3, Vs = (Ve 4- fa) 4- («1 4- »4) a2 4- (Vs 4- f4) a 4- (ve 4- »4) a4, Vi = Ve 4- Vo 4- V> 4- VB4- V2. На свмом же деле исиользоалиие алгоритма Рейдера сведения ДПФ простой длины к циклической свертке позволяет’построить алгоритм 5-точечного БПФ, содержащий всего пять умножений А именно для произвольных многочленов а (х) — Со 4“ atx 4- а^2 ~Г «а*2 и Ь (х) = Ьо 4- Ь,х 4- Ь%>? 4" бд-*8 алгоритм 4- точечной циклической свертки с (к) = с0 — с,х -|- сгх2 4- с^х3 = а (х) Ь (х) (mod (х4 — 1)) перепишем в виде з «о = (а0 4- °1) (6о 4- 4- Ь1 и °< 4- 3 4- (а« + йз) (bi 4- ь2) 4- °i У bit з з Со Б с2 = (be 4- bs) J] Oi 4- (°i 4-°а) У bi, 1-0 1=0 со 4- ci I Са = (6в 4~6г) («о 4 ei) F bi У 4- з 4- (Й1 ! °з) (^e-J-^s) 4-®з У bi. i=V Co4-Q I Csj4-C3 = В рассматриваемом случае b (х) — a -J- а3х 4- л4*12 и, следовательно, з в силу тождества для ядра, У bt — I, так что по существу эти умножения от- сутствуют, и приходится выполнять только пять умножений — Прим, перев.
378 ГЛ. It. БЫСТРЫЕ АЛГОРИТМЫ града можно только при малых длинах. При больших длинах преобразований предпочтительнее алгоритмы с менее четкой структурой, хотя бы и за счет некоторого увеличения числа умно- жений. Этим требованиям удовлетворяет большой БПф-алго- ритм Винограда. В общем случае БПФ-алгоритм Винограда строится для дли- ны п, равной произведению простых чисел или степеней простых чисел. Рассмотрим случай двух множителей, когда п = п'п". Воспользуемся алгоритмом Гуда—Томаса для преобразования «-точечного преобразования Фурье в двумерное («' х 1г")-точеч- ное преобразование Фурье. Отдельные компоненты этого дву- мерного преобразования Фурье могут быть вычислены с помощью соответственно «'-точечного и «"-точечного алгоритмов Винограда. Сначала выполняется «'-точечное преобразование Фурье каждой строки, а затем «"-точечное преобразование Фурье каждого столбца. Перед БПФ-алгоритмом Винограда выполняется, однако, еще один шаг. Так как не существенно, применяется ли преобразова- ние Фурье сначала к строкам или сначала к столбцам двумерного блока, то представляется возможным как-то их совместить. Именно это и делает БПФ-алгоритм Винограда. Он совмещает вычисления преобразований строк и столбцов, уменьшая при этом число умножений. Этот метод использует кронекеровское произведение матриц. Сделаем перерыв в изложении, чтобы вве- сти определение кронекеровского произведения матриц и дока- зать одну важную теорему. После этого мы сможем завершить построение БПФ-алгоритма Винограда. Определение 11.5.1. Пусть А = и В = (Ьц) —матрицы соответственно размеров / X А и J х L. Тогда кронекеровским произведением матриц А л В, обозначаемым А X В, называется матрица, содержащая IJ строк и KL столбцов, у которой на пересечении строки с номером (i — 1) J *- / и столбца с номе- ром (k — 1) L + I стоит элемент fjj.ht = Чтобы проще понять структуру кронекеровского произведе- ния матриц, следует представить матрицу А х В в виде (/ X К)- таблицы, состоящей из (J X £)-блоков, (I, /е)-й из которых ра- вен GifeB. Непосредственно из определения вытекает, что кропе- керовское произведение матриц некоммутативно, но ассоциативно: А х В В х А, (А х В) х С -- А (В х С). Элементы матриц А X В п В X А одни и те же, но упорядо- чены по-разному. Очевидно также, что кронекеровское произ- ведение дистрибутивно относительно обычного сложения матриц.
U.S. АЛГОРИТМ ВИНОГРАДА 379 Следующая теорема утверждает, что кронекеровское произ- ведение двух произведений матриц равно матричному произве- дению кронекеровских произведений соответствующих матриц. Теорема 11.5.2. Если все матричные произведения определены, то кронекеровское произведение удовлетворяет равенству (А х В) (С х D) = (АС) х (BD). Доказательство. Пусть матрицы А, В, С и D имеют соответ- ственно размеры / X К, J X L, К X М и L X А. Так как ма- трица А х В содержит столбцов, а матрица С X D содер- жит К£ строк, то матричное произведение (А х В) (С X D) определено. Оно содержит JJ строк, которые мы занумеруем парами (г, j), и MN столбцов, которые мы занумеруем парами (т, п). Элемент, стоящий на пересечении строки (i, j) и столбца (т, п), равен Так как матрица АС содержит / строк и М столбцов, а матрица BD содержит J строк и L столб- цов, то матрица (AC) х (BD) также является (fJ X Л£)‘Матри- цей. Стоящий на пересечении (i, /)-строки и (т, л)-столбца эле- мент этой матрицы равен L X b}idin =•£ k i k. i что и завершает доказательство. □ Кронекеровское произведение матриц применяется в теории преобразования Фурье. Пусть W' и W" — матрицы преобразова- ния Фурье соответственно длин п* и п”. Тогда V' = WV и V" = W"v" являются соответственно матричными записями преобразований Фурье л'—I п"—1 V/ = S р4»/ И Vf» 2 Y4°i- Двумерное («' х «^-преобразование Фурье двумерного сигнала i'Pj't"} получается применением преобразования W' к каждой строке с последующим применением преобразования W" к каж- дому столбцу. Считывая двумерный (п' X п")-сигпал по строкам, можно преобразовать его в одномерный. (Возможно, что двумер- ный сигнал был предварительно сформирован из одномерного с помощью китайской теоремы об остатках. Считывание такого сигнала по строкам дает новое одномерное представление этого сигнала, которое получается из исходного одномерного сигнала перестановкой его компонент.) Если предполагать, что одномерные «'«"-точечные векторы {fi-i»} и {V/'г} упорядочены описанным выше способом, то
380 гл. II БЫСТРЫЕ АЛГОРИТМЫ двумерное преобразование записывается через кронекеровское произведение в виде V-(W' х W")v. Для алгоритма Винограда преобразований длин п' и п' имеет место матричное разложение W' B'D’A' и W" = B"D”A", где А', А", В' и В" — матрицы целых чисел рассматриваемого поля, a D' и D'' — диаюнальные матрицы над GF (q). Умножения на D' и D" описывают все умножения, которые приходится вы- полнять в алгоритме Винограда. Положим W W' х W" и дважды применим теорему 11.7.2: W = (B'D'A') х (B”D"A") = = (В' X В") (D' х D ) (А' X А") = BDA, где кронекеровскис произведения В = В' х В'' и А = А' X А" содержат только элементы из поля GF (р), а кронекеровское про- изведение D = D' х D" опять яаляется диагональной матрицей над GF (q). Следовательно, мы опять получили «'«"-точечное преобразование Фурье в форме алгоритма Винограда БПФ. Это дает способ построения большого алгоритма Винограда БПФ из малых. Из приведенного описания матрицы W видно, что такое пре- образование предполагает предварительную запись (с помощью алгоритма Гуда—Томаса для взаимно простых множителей) «'«“-точечного одномерного преобразования в виде двумерного преобразования с последующим считыванием преобразуемого двумерного вектора по строкам в виде одномерного «'«"-точеч- ного вектора V. Следовательно, описанный способ вычисления «'«’-точечного преобразования V = (BDA)v предполагает пред- варительную перестановку компонент вектора v и вычисление компонент вектора V также в переставленном порядке. Но по- скольку вид матриц А и В известен, то тривиальная переста- новка столбцов матрицы А и строк матрицы В позволяет выписы- вать компоненты векторов v и V в их естественном порядке. Пусть М (пг) и М («") означают соответственное число умно- жений, необходимых для выполнения «'- и «"-точечного БПФ по алгоритму Винограда. Тогда число М (п) умножений, необ- ходимых для вычисления «'«"-точечного преобразования по алгоритму Винограда, равно примерно М («') Л/ («"). Более точно. dim D = (dim D') (dim D"),
U.S. УСКОРЕННЫЙ АЛГОРИТМ БЕРЛЕКЭМПА—МЕССИ 381 и величины М (п), -М (п”) и М (п) не превосходят размеров ма- триц D', D" и D соответственно, так как один или более эле- ментов диагональных матриц могут оказаться равными еди- нице. Если учитывать все умножения диагональных матриц, включая н умножения на единицу, то получаем простую фор- мулу М (п) - М (и') М (п). 11.6. УСКОРЕННЫЙ АЛГОРИТМ БЕРЛЕКЭМПА— МЕССИ В описанном в § 7.4 алгоритме Берлекэмпа—Месси требуемое число умножений на r-й итерации примерно равно удвоенной степени многочлена А<г> (х). Так как степень многочлена А<г> (х) имеет порядок г и в типичном случае равна г/2, а алгоритм содер- жит 21 итераций, то для его выполнения необходимо 2Z2 умноже- ний и примерно столько же сложений. Это квадратичная функ- ция t. Кратко говорят, что алгоритм Берлекэмпа—Месси содер- жит число умножений порядка ?, или, формально, О (Z2) умно- жений. Для очень длинных кодов и большого t число умножений в алгоритме может стать обременительным. В настоящем пара- графе рассматривается метод уменьшения вычислительной слож- ности алгоритма для длинных кодов при большом числе t исправ- ляемых ошибок. Ускоренный алгоритм обосновывается следующим образом. На начальных итерациях алгоритм Берлекэмпа—Месси в частот- ной области содержит умеренное число умножений порядка сте- пени миоючлена А (х). Но степень многочлена А (х) возрастает до существенной доли длины п, и, таким образом, среднее число умножений на итерацию имеет поридок п. Преимущества уско- ренного алгоритма связаны попросту с тем, что на ранних шагах несколько итераций в частотной области выполняются одновре- менно. После такого пакетного выполнения нескольких итера- ций полученный промежуточный результат используется для мо- дификации синдрома путем ввода в него вычисленных в этом пакете многочленов А (х) и В (х). Следующий пакет итераций начинает выполнение алгоритма Берлекэмпа —Месси, сначала используя в качестве синдрома вычисленный модифицированный синдром и полагая в начальный момент А (х) равным 1. Ускорен- ный декодер эффективен для декодирования длинных, но все еще практически применяемых кодов. В следующем пара- графе будут рассмотрены другие, даже более эффективные де- кодеры.
382 ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ Построение начнем с более компактной организации алгоритма Берлекэмпа —Месси. Заменим многочлены A<r> (х) и В<г> (х) (2 X 2)-матрицей из многочленов 'АДМ А<р(х)1 Л1р (л) Л<г) (х) J ’ Для обозначения элементов матрицы А(г) (х) нам понадобится несколько индексов; символ Ag> будет означать /-й коэффициент многочлена, стоящего на пересечении строки а и столбца Ь в г-й итерации. Напомним, что вычисления алгоритма Берлекэмпа—Месси основываются на двух равенствах: ГЛИИ] Г I Л,г L Вт (X) J [ Л;'6, (1-М«ИВ*-» (») J • Второе равенство можно записать в виде тачнилии:]- Определим матрицу А<г) (х) равенством л,'-«=й[йд, Л>х]- Через эту матрицу можно выразить многочлены Л(г> (х) и (х): [b<o(x)J л |А,| I Грлии I лк>0) |- Полученное равенство может быть использовано как для вычисле- ния А<г> (х), так и для вычисления многочленов А<г) (х) и B<r~> (х). Непосредственное вычисление матрицы Л(г> (х) содержит вдвое больше умножений, так как вместо двух элементов в вычисле- ниях участвуют четыре. Поэтому замена итераций многочленов Aw (х) и В'г> (х) итерациями матрицы AfrJ (х) удваивает необ- ходимое число умножений. Это ухудшение будет затем устранено реорганизацией вычислений. В перестроенном виде алгоритм Берлекэмпа—Месси основы- вается на двух уравнениях, а именно на уравнениях Ал = Ё ЛЙГ/’S,-/ + £ Agr/’Sr-/
II .в. УСКОРЕННЫЙ АЛГОРИТМ БЕРЛЕКЭМПА—МЕССИ 383 И л,'’И = [Л Теперь мы хотим уменьшить число вычислений, группируя ите- рации в пакеты. Определим матрицу Г I ~Д,х I адх]- так что Л<п (л) М« (х) М<г-*> (х) ... М<” (х). Это произведение должно вычисляться последовательно по одному члену, начиная справа, так как М(г) (х) нельзя вычислить до тех пор, пока не вычислена А<г—> (х). Определим следующие частичные произведения рассматри- ваемых матриц: да. го = М(г) щ М(г-1) ^ ... м(- Ч ’) (х); тогда А« (х) = АС-0» (л) и А<г» (х) = А‘'- г> (х) А<г •> (х). Определим также вектор модифицированных синдромных много- членов S(r) (х): S« (х) = Л« (х) - Л1'- '•> (л) S<r'1 (х). Невязка л, у: aKJ’s,_, - S л|' J'.s, , ,=0 i-0 становится равной r-му члену свертки и может быть записана через многочлены: Д (х) = Л|;~” (х) S (х) + ЛЁ " (х) S (х) = [Ли ',г'’(х)Л(;'’(х) |-A‘;-I-fl(x)Mf'(x)]S(x)-l- I- [л К-1 (х) л’ (х) г л!г' (х> лй’> (х) | s (х). Группируя члены, получаем д (х) = Л<; '•> (х) [л!;-> м а (х) л(г’ w ,s (х)1 + - Afr1' (X) (x)S(x) Ag ' (х) .S (х||.
384 гл. 11. БЫСТРЫЕ АЛГОРИТМЫ Стоящие в квадратных скобках многочлены являются компонен- тами вектора Str'> (х) модифицированных синдромных мною- членов. Следовательно, выражение для невязки можно перепи- сать в виде , i-'г лк.; '’s!:?-,. /-U f-0 где Sl’ и S/1 обозначают соответственно /-е коэффициенты многочленов в первой и второй компонентах вектора S('') (х). Для ускорения алгоритма Берлекэмпа -Месси сформируем па- кеты по т итераций в каждом. Если т делит 2t, то обращение к каждому из 2t/x пакетов одинаково В противном случае послед- ний пакет содержит меньше т итераций, но мы полагаем его та- ким же. Индекс г теперь пробегает значения г = 1, 2, .... 1, т 4-1...,2т, 2т-|-1....Зт, Зт + 1..... На г-й итерации k-ro пакета модифицированный алгоритм Бер- лекэмпа—Месси вычисляет А<г- г’> (х) согласно равенству ....’ю=[лА, (Г-б,)х]л................ где f = kx, а Дг вычисляется по формуле л,.- Aftt-'X?-,- /£ Ai;.-;-'®:? /-0 /=0 В конце fe-ro пакета, когда г равно (k 4- 1) т, матрица локаторов ошибок и вектор модифицированных синдромных многочленов даются соответственно равенствами М'> (х) = Мг- (х) (х) и S<'> (х) = Л('- '•> (л) S<' > (л), где г* = kx и г = (k |- 1) т. Теперь ускоренный алгоритм готов начать (k 4- 1)-й пакет. На рис. 11.7 приведена блок-схема ускоренного алгоритма Берлекэмпа—Месси с некоторыми очевидными сокращениями. В левой части рисунка приведен стандартный алгоритм, расписан- ный для т итераций, а в правой показаны блоки, осуществля- ющие связку пакетов по т итераций каждый. Если правая часть алгоритма выполняется так, как она выписана, то мы не получаем никакой экономии вычислений. Однако умножения многочленов в блоках правой части эквивалентны сверткам, которые могут быть эффективно вычислены с помощью описан- ных в § 11.1 и 11.3 методов или с помощью быстрого преобразо- вания Фурье и теоремы о свертке. Некоторые возможности ил- люстрируются следующим примером.
11.6. УСКОРЕННЫЙ АЛГОРИТМ БЕРЛЕКЭМПА—МЕССИ 386 13 р БлеЛхут
386 ГЛ- Ч БЫСТРЫЕ АЛГОРИТМЫ Расширенный (4096. 2048)-код Рида—Соломона над GF (212) имеет скорость, равную 1/2, п позволяет исправлять все конфи- гурации ошибок из 1024 12-битсвых байтов. В типичных случаях алгоритм Берлекэмпа Месси содержит 21? (или 2 097 152) умно- жений 12-битовых чисел поля GF (212), а для наихудших конфи- гураций ошибок это число может возрасти в 1,5 раза. Ускоренный алгоритм позволяет провести вычисления лучше. Подсчитаем число операций для несколько видоизмененного варианта ускоренного алгоритма Берлекэмпа Месси. Вместо того чтобы формировать пакеты одинакового объема, делая раз- ветвления алгоритма через каждые т итераций, будем строить разветвления в те моменты, когда степень многочлена А (х) достигнет предписанного предела. А именно будем формировать новую ветвь алгоритма тогда, когда степень одного из много- членов, входящих в матрицу А (х), станет равной 128, и закончим процесс формирования ветвей после 2048 итераций. В случае когда происходит точно 1024 ошибки, алгоритм будет содержать восемь разветвлений, каждое из которых будет выполнять 128 ите- раций. Именно этот случай мы сейчас проанализируем. В течение каждой итерации требующееся для выполнения вычислений, показанных слева на рис. 11.7, число умножений примерно вчетверо больше степени многочлена Л' (х), вычисляе- мого при этой итерации. Это вдвое больше числа умножений, необходимых в исходном варианте алгоритма Берлекэмпа—Месси. Следовательно, в каждом ответвлении алгоритма имеется при- мерно т2 итераций, выполняющих вычисления, указанные па ле- вой части рис. 11.7. Всего имеется восемь ветвей, и т равно 128; таким образом, выполнение всех ветвей алгоритма содержит 524 228 умножений. К этому надо прибавить число умножений, необходимых для вычисления указанных в правой части рис. 11.7 сверток, объединяющих вычисленные пакеты. Для вычисления этих линейных сверток воспользуемся алгоритмом 315-точечпой циклической свертки, содержащим 2470 умножений. Этот алго- ритм представляет собой алгоритм Агарвала -Кули вычисления свертки, построенной из трех алгоритмов вычисления коротких сверток, длины которых соответственно равны пяти, семи и де- вяти. После каждою ответвления надо вычислять член вида Л (x)S(x), где степень многочлена 5 (х) равна 2048 Ат, а степень много- члена Л (х) равна 128. Воспользуемся методом перекрытия с ла- компленцем и алгоритмом 315-точечпой циклической свертки. Это даст нам 315 — deg А (х) =• 187 правильных выходных точек линейной свертки Л (х) S (х). Для вычисления 2048— 256 точек алгоритм циклической свертки придется применить 10 раз. Так как Л' (х) S (х) содержит четыре линейные свертки, всего потребуется 40 обращений к алгоритму циклической свертки.
II.?. РЕКУРРЕНТНЫЙ АЛГОРИТМ БЕРЛЕКЭМПА — МЕССИ 387 Продолжая таким образом, всего получим 168 обращений к алгоритму циклической свертки, что в итоге дает 480 480 умно- жений. После выполнения каждого пакета из 128 итераций необходимо также вычислить матричное произведение Аг (л) А (х). Разбивая в матричном произведении длинные свертки на короткие и про- водя вычисления, аналогичные проделанным, приходим к 216-крат- ному обращению к алгоритму 315-точечной циклической свертки. Полное число умножений, необходимых для рассматриваемого декодирования (4096, 2048)-кода Рида—Соломона, получается сложением этих трех величин. Всего получаем 1 462 768 умноже- ний против 2 097 152 необходимых при непосредственном исполь- зовании алгоритма Берлекэмпа—Месси. 11.7« РЕКУРРЕНТНЫЙ АЛГОРИТМ БЕРЛЕКЭМПА-МЕССИ Можно построить декодер, еще более эффективный, чем рассмо- тренный в предыдущем параграфе. Такой улучшенный декодер представляет не только практический,но и теоретический интерес, так как позволяет доказать, что асимптотическая сложность де- кодирования кодов Рида —Соломона не превосходит величины О (п log2 п) (и очень близка к величине О (п log п)). Этот алгоритм не только обладает хорошими асимптотическими свойствами, но и практически пригоден для кодов с умеренной длиной. Для простоты в основном будем рассматривать случай, когда 2/ равно степени двух. Пусть длина 2t = 2р. Рекуррентный алго- ритм сводит задачу длины 2₽ к двум задачам длины 2Р“‘, которые сочленяются с помощью алгоритма 2Р"‘-точечной свертки. Каж- двя из этих двух подзадач в свою очередь расщепляется на две подзадачи. Это продолжается до тех пор, пока не получается задача, состоящая из одной итерации. Если каждая подзадача аналогична исходной задаче, то алгоритм допускает рекуррентную реализацию. В случае, когда 21 не является степенью двух, имеется не- сколько способов модификации процедуры. Один из них состоит в представлении числа 2t в виде произведения простых множите- лей. Если р/ представляет собой l-й множитель, то на l-м уровне задача подразделяется на pt подзадач вместо двух. В остальном алгоритм не меняется. Второй способ состоит в замене числа итераций наименьшей степенью двух, превосходящей число 2t, и разбиении задачи на каждом уровне пополам. В каждый момент обращения к проце- дуре проверяется, превысил ли счетчик общего числа операций величину 21. Если превысил, то итерация не выполняется и ал го- 13»
388 ГЛ. БЫСТРЫЕ АЛГОРИТМЫ ритм декодирования переходит к своему следующему шагу. В остальном алгоритм не изменяется. Формулировка шага рекуррентной процедуры становится оче- видной, если заметить, что описанные в предыдущем параграфе вычисления величин Дг и по величине S<fet> (х) в точно- сти совпадают с процедурой теоремы 7.4.1 с заменой 2/ на т, Л(г> (х) на Л(г- Лт> (х) и вектора синдромных многочленов S (х) на S,fcT) (х). Следовательно, для вычисления А(г- (х) можно воспользоваться тем же алгоритмом, что п для вычисле- ния Л<2'> (х). Этот рекуррентный алгоритм, названный процедурой БерМес, приведен на рис. 11.8. Процедура использует самое себя. Она содержит стековую память 1), в которой при переходе с одного уровня на другой временно запоминаются данные одного уровня. Поведение алгоритма на следующем уровне ничем не отличается от его поведения на предыдущем уровне, по в стеке записываются другие данные. В конце концов задача сводится только к одной итерации, и ее уже нельзя разделить пополам. Тогда процедура БерМес состоит просто в выполнении этой итерации и алгоритм возвращается в надлежащую точку. Каждый раз при обращении процедуры БерМес к самой себе необходимо запоминание локальных переменных в стеке. Если в начале алгоритма решение задвчи требует 2р итераций, то глу- бина рекурсии равна р: имеется р уровней рекуррентного алго- ритма. Объем стека должен быть достаточно велик для того, чтобы содержать все временные множества переменных. Алгоритм проходит /-й уровень 2р раз: нулевой уровень — один раз, первый уровень — два раза и т. д.; последний уровень проходится 2р раз. Выполняемое на l-м уровне вычисление S(x)*— *- Л' (х) S (х) содержит четыре умножения многочленов. Степень многочленов Л' (х) равна примерно 2р~/_1 — 1, и они умно- жаются на многочлены степени 2₽-2+1 — 1. Необходимо пра- вильно вычислить только 2р~1 коэффициентов произведения многочленов, а именно коэффициенты, стоящие при степенях переменной от xsP-1 до xsP~z+l_,( так как только эти коэффи- циенты входят в вектор S (х), используемый при втором обраще- нии к процедуре БерМес. На l-м уровне вычисляется также ма- тричное произведение Л' (х) Л (х), которое содержит произведе- ния многочленов степени 2p~z_I каждый. Число умножений в процедуре БерМес почти полностью опре- деляется свертками, так как итерации алгоритма Берлекэмпа — *) Стековая память (push-down slack)—устройство памяти, считывание данных из которой начинается с вершины и производится в порядке, обрат- ном порядку записи («пришел последним—обслуживается первым»).—Прим.
Стоп ВхоЭ 8 процедуру БерМес Выхой из процедуры БерМес Рис. 11.8. Процедура БерМес.
390 ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ уровень Чисм обращений degftfo degSfij Ln Олина свергши вычислений Свертки A'ffjSW) •Число вычислений свертки умножений ) । 511 2041 1260 8 8 355 680 1 ? 255 1023 630 2x8 2x8 25? 120 4 511 315 4x8 4x8 15808(1 4 Я 63 255 140 8x8 8x8 149 76(1 5 16 31 127 70 16x8 16x8 99 840 6 1з 63 35 32x8 32x8 66 560 7 64 31 21 64x8 64x8 77 824 8 128 ) ts 9 128x8 128x8 38912 9 356 I 4 256x8 256x8 36 864 10 512 0 » 512x8 12288 и 1024 0 I 1 232928 Рис. 11.9. Подсчет числа умножений в процедуре БерМес. Месси фактически выполняются только на конечном шаге, на ко- тором все подалгоритмы алгоритма содержат по одной итерации и только по одному умножению (на Ай1), которым при подсчете общего числа умножений можно пренебречь. Вычислительная сложность процедуры БерМес определяется непосредственно вы- числительной сложностью алгоритмов свертки. Успех ее исполь- зования предполагает наличие хорошего набора алгоритмов свертки. На рис. 11.9 приведены результаты подсчета числа умножений в рекуррентном алгоритме декодирования применительно к тому же (4096, 2048)-коду Рида—Соломона, который был рассмотрен в предыдущем параграфе. Для вычисления циклических сверток в обеих половинах использовались метод перекрытия с накоп- лением и одна из коротких сверток, приведенных на рис. 11.5. Выписанные на рис. 11.9 детали расчетов являются убедитель- ным свидетельством сложности структуры рассматриваемого алгоритма. Эта структура, однако, позволяет разумно исполь- зовать вычислительные ресурсы при программной и аппаратур- ной реализации отдельных фрагментов. По мере необходимости она вызывает алгоритмы свертки из библиотеки таких алгоритмов. В общем случае алгоритм: Берлекэмпа—Месси, содержащий 21 итераций, имеет измеряемую числом умножений вычислитель- ную сложность порядка (log.2 2t) С (I), где С (t) — число умноже- ний, необходимое для вычисления свертки двух многочленов степени t. Это объясняется тем, что к Z-му уровню алгоритм обра- щается 2' раз, причем длина выполняемой на l-м уровне свертки равна 2~Ч. Сложность вычисления 2' сверток длины 2~Ч каждая
и.8. Ускоренное декодирование кодов бЧх з<И Принимает наибольшее значение при I, равном нулю для всех log2 2t значений. Граница асимптотической сложности алгоритма зависит от асимптотической сложности вычисления свертки в полях Галуа. Напомним, что в алгоритме Винограда вычисления свертки тре* буется по возможности наличие простых делителей над полем GF (р). Для минимизации числа умножений показатели степени этих делителей надо выбирать малыми. Но если п велико, то мо- жет не оказаться достаточного числа многочленов малой степени и будет необходимо воспользоваться многочленами степени по- рядка log п. Это приведет к замене свертки длины п некоторым количеством сверток, наибольшая длина которых имеет порядок log п. Этот же процесс приведет к замене свертки длины log п некоторым количеством сверток меньшей длины, самая длинная из которых имеет порядок длины, равный log (2 log п). Формали- зуя это рассуждение, можно сказать, что асимптотическая слож- ность вычисления свертки в поле Галуа равна величине О (n2log*n), где log* п — число, показывающее, сколько раз надо последова- тельно проинтегрировать логарифм по основанию 2, начиная с п, для того, чтобы получить число, не превосходящее единицы. Таким образом loga (log2 (... (log2 п))) с 1, и число шагов в этом итеративном процессе равно log* п. Вели- чина 2,О£*'‘ стремится к бесконечности медленнее, чем итериро- ванный любое число раз логарифм. Лучшая известная граница числа С (п) имеет вид О (я2|О£*"), и, следовательно, сложность рекуррентного алгоритма Берле- кэмпа—Месси оценивается величиной О (п2,О£*" log п). Таким образом, сложность рекуррентного алгоритма Берлекэмпа—Месси больше, чем О (n log п), но очень близка к этой границе. 11.8. УСКОРЕННОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ Сейчас мы рассмотрим применение разработанных в предыдущих параграфах методов для построения ускоренного декодера. До- статочно рассмотреть только примитивные ’) коды Рида—Соло- мона. Коды БЧХ и иепримитивные коды Рида —Соломона деко- дируются таким же образом. Исправляющий t ошибок примитив- ный код Рида—Соломона длины п - (] — 1 представляет собой *) Напомним, что автор называет примитивными кодами Рида—Соломона коды над GF(</") длины « — —I, а нснримитивными -коды, длина ко- торых делит это п. — Прим, перев.
302 ГЛ. II. БЫСТРЫЕ АЛГОРИТМЫ множество всех кодовых слов длины п изд GF (<?), для которых 21 последовательных компонент спектра равны нулю. Работа декодера основывается на преобразовании Фурье при- нятого слова V. В типичных случаях сложность преобразования Фурье имеет порядок п log2 п. Равенство нулю 21 последовательных компонент спектра С определяет 21 компонент синдрома S, = Е, = V/, j — 1, .... 21. Многочлен локаторов ошибок А (х) = П(1 где v с I — число действительно произошедших ошибок, удовлет- воряет равенствам 2л,£ы-0. /-о Эта свертка задает систему из п уравнений относительно п — t неизвестных, из которых t составляют коэффициенты многочлена Л (х), а п — 2t являются компонентами вектора Е. Из этих п уравнений t уравнений связывают только известные компоненты вектора Е с неизвестными коэффициентами многочлена Л (х). Используя алгоритмы свертки сложности п log2 и и описанный в предыдущем параграфе рекуррентный алгоритм Берлекэмпа— Месси, можно разрешить эти уравнения относительно неизвестных компонент Л со сложностью, не превосходящей О (п logs п). Остальные компоненты вектора Е можно рекуррентно вычислить по полученному Л и известным компонентам вектора Е в соотает- ствии с равенстаом El = -i k=l Вычислив таким образом Е, для всех /, находим компоненты С, спектра кодового слова согласно равенствам Cj — V, — Е,. Обрат- ное преобразование Фурье завершает декодирование. Для вычисления Е,, j — 2t + 1, п, требуется п (п— 2/) умножений, так что сложность этих вычислений имеет порядок па. В оставшейся части этого параграфа мы покажем, как свести вычислительную сложность этого шага к величине, не превосходя- щей О (n log2 п)- В варианте Месси алгоритма Берлекэмпа—Месси спектр Е вектора ошибок рассматривается не только на интервале длины п, но и периодически продолжается вне этого интервала. Соотноше- ние между многочленами Е (х) и Л (х) имеет вид Е (х) Л (х) = 0 (mod *• — 1).
II.8. УСКОРЕННОЕ ДЕКОДИРОВАНИЕ КОДОВ БЧХ 393 Преобразование Фурье этой циклической свертки приводит к ра- венствам = 0, i — 0, ...» п — 1. Во временной области эти равенства приводят к неопределен- ностям, так как решения записываются в виде е,- = 0/?.£ и Хг = О, когда е,- =/= 0. В таком виде эти равенства решать нельзя. Берлекэмп подходит к алгоритму декодирования несколько иначе. С точки зрения Берлекэмпа, выход регистра сдвига яв- ляется периодическим только после начального перехода. В на- чальный момент времени регистр пуст и в него вводится известный многочлен Й (х). Уравнения записываются в виде Ej = — Л-kEj.л -|- Й,» и возмущения равные нулю при j > t, переводят регистр сдвига из начального состояния в описанное выше периодическое состояние. Спектральный многочлен Е (х) для вектора ошибок удовлетво- ряет уравнению Е (х) А (х) = 52 (х). Многочлен Й (х) можно вычислить с помощью рекуррентного алгоритма без увеличения асимптотической сложности, после чего Е (х) можно вычислить с помощью деления многочленов. Но сложность последнего шага также растет как п2. Так как выписанное выражение не является ни конечным, ни периоди- ческим, то непосредственное применение метода преобразований невозможно. Можно, однако, воспользоваться для решения задачи алгоритмом Форни. По имеющемуся Л (х) вычислим 52 (х) = Е (х) Л (х) (mod х7/) и формальную производную Л' (х) многочлена Л (х). Затем, применив к многочленам Л (х), Й (х) и Л' (х) обратное преобра- зование Фурье, вычислим векторы с компонентами Хг, и 7J. Тогда, если А, равны нулю, решение дается (см. задачу 11.5) равенствами et — Так как алгоритм Форни можно реализовать с помощью трех алгоритмов преобразования Фурье и алгоритма свертки, то полу- чаем сложность О (п logj л).
384 ГЛ. 11. БЫСТРЫЕ АЛГОРИТМЫ 11.9. СВЕРТКА В СУРРОГАТНЫХ ПОЛЯХ Вычисления в некотором поле можно производить, используя другое ноле. Бывают случаи, когда необходимые при обработке сигналов задачи существенно отличаются от имеющегося набора стандартных вычислительных модулей и появляется необходи- мость подгонки данного вида вычислений к структуре другого вида. Например, может возникнуть необходимость проведения вычислений в поле Галуа с помощью поля комплексных чисел в качестве суррогатного поля. В простом поле GF (р) циклическую свертку п-1 Q = Е arf>w_k», 1 = 0, .... п - 1, можно заменить сверткой в кольце целых чисел; необходимо только позаботиться о выполнении вычислений по модулю р. Вид уравнения свертки при этом сохраняется, но арифметические операции выполняются в обычной целочисленной арифметике. Затем для получения свертки в поле GF (р) найденные при вычис- лении целочисленной свертки компоненты с, надо привести по модулю р- это сводит задачу к вычислению только целочисленных сверток. Кольцо целых чисел можно далее вложить в подходящее поле, например комплексное. После этого целочисленная свертка может быть вычислена с помощью любого алгоритма свертки в поле комплексных чисел, например с помощью дискретного преобразования Фурье и теоремы о свертке. Практическое вы- числение преобразования Фурье в поле комплексных чисел реали- зуется на словах конечной длины, что вносит в вычисления ошибку округления. Однако нетрудно подобрать такую длину преобра- зования, чтобы ошибка округления в компонентах сг всегда была меньше 0,5. Тогда округление каждой вычисленной компоненты в ближайшее целое число даст правильное значение целочислен- ной свертки. Переход в каждом целом числе к вычету по модулю р даст затем правильное значение свертки в GF (р). Может оказаться невозможным оправдать выбор поля ком- плексных чисел в качестве суррогатного поля простым подсчетом числа умножений. Однако для поля комплексных чисел имеется доступный набор устройств вычисления свертки, и выбор поля комплексных чисел в качестве суррогатного поля можно оправ- дать возможностью выполнения данной вычислительной задачи на имеющемся устройстве. Предположим, далее, что надо вычислять свертку сигналов над нолем GF (q), где q уже не является простым числом. Тогда каждое отдельное произведение элементов поля можно рассматри- вать как свертку многочленов по модулю некоторого неприводи- мого многочлена р (х). Вычисление остатка по модулю этого не-
11.9. СВЕРТКА В СУРРОГАТНЫХ ПОЛЯХ 396 приводимого многочлена производится тогда, когда все свертки вычислены. Исходная свертка при этом превращается в двумер- ную свертку. Пусть а и b — векторы над GF (с/). Компоненты этих векто- ров задаются многочленами аг = У ацх1 и = У, Ьи21 1=0 1=0 лад простым полем GF (/?), где q - рт, a ait и Ьи представляют собой неотрицательные целые числа, меньшие р. Линейная свертка векторов а и b записывается в виде Ci = S akbt_k = Е L S анЬн-ъ i-zw' (mod р) (mod р (х)), k-й k=o 1=0 с=о где р — характеристика поля, а р (х) — некоторый простой много- член степени т. Введем величины V V1 , ‘ = °...... с“' = А А *' Г = 0, .... 2m- 1. и будем рассматривать их как дв’умерные свертки целых чисел; каждое число в этой двумерной таблице лежит в интерввле (О, р— 1J. Эта свертка может быть вычислена в любом подходя- ще суррогатном поле, например в поле вещественных чисел или в поле комплексных чисел; тогдв 2m—I ct (2) — Xj cu-z' (mod p) (mod p (x)). Вычисление этого остатка производится в последнюю очередь; сначала находится вычет каждого целого числа по модулю р, а затем вычет многочлена Cj (2) по модулю р (х). Сложность вычисления вычетов пренебрежимо мала по сравнению со слож- ностью вычисления двумерной свертки. Вместо поля комплексных чисел можно воспользоваться в ка- честве суррогатного поля любым конечным полем, даже с харак- теристикой, отличной от характеристики исходного поля. Для вычисления свертки двоичных последовательностей, длина п которых не превосходит половины простого числа Ферма 2гп -|- 1 при т = 2, 4, 8 или 16, можно использовать поле GF (2"1.1). Последовательность над GF (2) можно рассматривать как после- довательность целых чисел, принимающих значения, равные только нулю и единице. Длина линейной свертки двух целочис- ленных последовательностей длины п может быть больше п, по всегдв меньше 2m -|- 1. Следовательно, линейная свертка в GF (2) может быть вычислена как циклическая свертка в поле GF (2т -f-
396 ГЛ. II. БЫСТРЫЕ АЛГОРИТМЫ + 1) с последующим приведением по модулю 2. Циклическая свертка в GF (2"‘ -|- 1) может быть вычислена с помощью любого алгоритма быстрой свертки; один из методов состоит в применении быстрого преобразования Фурье и теоремы о свертке. Например, для непосредственного вычисления свертки в поле GF (2) двух последовательностей длины 2|Г> требуется примерно 2я’ битовых операций. Вместо этого можно воспользоваться сверткой в поле GF (210 + 1). В этом поле для вычисления пре- образования Фурье надо примерно 218 умножений и 2го сложений; для каждого умножения необходимо примерно (17)2 битовых операций, а для каждого сложения — пример- но 17 битовых операций. Таким образом, свертка может быть вычислена примерно за 3 X (17® X 214) «3 X 2й битовых операций. Теперь предположим, что нам надо свернуть две последователь- ности в GF (2Г). Как и ранее, можно представить элементы поля многочленами над GF (2). Если отложить операцию вычисления остатка по модулю р (х) до завершения всех других вычислений, то исходная свертка превратится в двумерную свертку. Эта задача может быть вложена в суррогатное поле GF (2т' -|- D.если только длина свертки целых чисел не превышает 2"1' -|- 1, т. е. если tn • п < 2"г т 1 - Например, пусть надо вычислить линейную свертку двух последовательностей длины 8192 над GF (2я). Так как 8 (8192) меньше, чем 21в 1, то в качестве суррогатного поля можно воспользоваться полем GF (21С |- 1). Двумерную (8 X 8192)-точеч- ную линейную свертку можно вычислить через двумерную (16 х X 16 384)-точечную циклическую свертку без потери членов. Эта (16 X 16 384)-точечная циклическая свертка может быть вычислена с помощью методов быстрого преобразования Фурье. 16-точечпое преобразование вообще не содержит умножений, а содержит только циклические сдвиги. 16 384-точечное преобра- зование, как уже обсуждалось выше, может быть разбито с по- мощью алгоритма Кули—Тьюки БПФ на более короткие свертки. Для того чтобы воспользоваться теоремой о свертке, необходимо выполнить три преобразования, каждое из которых содержит 2048 умножений. В частотной области также необходимо выпол- нить 16 х 16 384 умножений. Таким образом, для вычисления 8192-точечной свертки над GF (2й) необходимо выполнить 268 288 умножений в поле GF (21в -|- 1). ЗАДАЧИ 11.1. Построить алгоритм быстрой свертки для кодирования (7, 3)-нода Рида—Соломона, корнями порождающего многочлена которого служат а®, а1, а2 и а?.
ЗАМЕЧАНИЯ 397 11.2. Построить алгоритм быстрой свертки для кодирования (15, 11)-кода Рида—Соломона с порождающим многочленом g (х) = X4 + а13х9 4- а®х9 4- -|- а3 х + а10. 11.3. а. Построить алгоритм Винограда трехточечного БПФ в поле GF (16). б. Используя гнездовой метод Винограда, построить 15-точечный БПФ-алгоритм Винограда над GF (16) на основе трехточечного и пятиточечного БПФ-алгоритмов Винограда. 11.4. Выписать уравнения перепндекевкии для 35-гочечпого БПф-алго- ритма Кули—Тыоки. 11.5. Алгоритм Форни, согласно которому аналогичен равенству F (х) Л (х) - li (х) Однако последнее выражение нс является перио- дическим, и, следовательно, метод преобразования Фурье нельзя непосредственно использовать для вывода из него алгоритма Форни Для вывода алгоритма Форни на основе преобразования Фурье надо рассуждать следующим образом. Выбрать такое я', чтобы в некотором расширении поля содержался элемент порядка п'п. Показать, что выражение/: (л) Л (xj = — (х" — 1) О (х) можно рассматривать как периодическое с периодом п'п. Использовать преобразование Фурье длины п'п для завершения доказательства. 11.6. Для полей характеристики 2 описать процедуру построения 8-точечкой циклической свертки, содержащей не более 28 умножений. Описание должно быть полным, но нс содержать непосредственных вычислений. 11.7. Пусть требуется написать программу вычисления 31-точечной цикли- ческой свертки в поле GF (32) или в некотором его расширении. а. Оценить сложность программы, использующей 3Точечное ДПФ и теорему о свертке. б. Написать программу, пспоЯЪзутощую 75-точечное быстрое преобра- зование Фурье в поле GF (230) Построить БПФ из трехточечпого и пититочечного алгоритмов Винограда быстрого преобразования Фурье. Оценить сложность подпрограммы, вычисляющей свертку. 11.8. Для систематического кодирования 8-битовых байтов используется (256, 256 2/)-код Рида—Соломона над GF (2е 4- 1). Когда проверочный символ принимает значение 28, он не может быть представлеп восемью битами и заме- няется на нуль, так что в момент кодирования кодовое слово уже содержит ошибку, которая может быть данным кодом исправлена. Чему равна скорость кода в двоичном представлении? Описать ухудшение кодовых характеристик при использовании в проверочных символах только восьми битов. ЗАМЕЧАНИЯ Материал данной главы основан па методах, разработанных в теории построе- ния эффективных алгоритмов. В большинстве сиучаев эти методы развивались вне связи с теорией кодов, контролирующих ошибки. При этом рассматри- вались только вычисления в полях вещественных и комплексных чисел, но не представляет труда перенести эти же идеи в поле Галуа, что и было сделало в данной главе. Алгоритмы быстрою преобразования Фурье широко используются в обра- ботке дискретных сигналов, начиная с известной работы Кули и Тыоки [19651. Однано другой подход к БПФ был предложен в более ранних статьях Гуда [19601 и Томаса [1963J. Взаимосвязь между БПФ и сложностью декодиро- вания обсуждалась Юстессном |197б] и Ссрвейтом [1977]1). *) Аналогичную задачу рассматривал В. Б. Афанасьев; см. Афанасьев В. Б. Быстрое кодирование и обнаружение ошибок кодом Рида—Соломона — В кн.. Третий международный симпозиум по теории информации. Тезисы докладов. Часть II. —М Таллин. URS1 АН СССР и АН ЭССР, 1973, с. 13-17. — Прим, rupee.
398 гл. II. БЫСТРЫЕ АЛГОРИТМЫ Основанные на прямых и грубых методах быстрые алгоритмы свертки впер- вые были построены Агарвалом и Кули [19771. Виноград [1978] предложил описанный в данной главе общий метод построения, а также доказал. что в по- лях вещественных и комплексных чисел не существует лучших алгоритмов свертки. Он почти не обращался к полям Галуа, так как в’этих полях умно- жения легко маскируются под сложения. Использование китайской теоремы об остатках дли целых чисел для разбиения длинных сверток на короткие пред- ложили Агарвал и Кули [1977]. Алгоритм Винограда БПФ был опубликован в 1978 г. Наше описание нс следует оригиналу и связывает его с другими мето- дами обработки сигналов Алгоритм БПФ Вин >града и другие эффективные алгоритмы обсуждал также Нуссбаумер [1981| Применение БПФ-алгорятма Вини рада для декодирования кодов Рида— Соломона рассматривали Миллер. Труонг и Рил JI98O|. Ускоренный п рекуррентный алгоритмы Берлекэмпа—Месси публикуются впервые, они были анонсированы в работе Блейхута [1981]. Использование в алгоритмах свертки суррогатных полей предложили Препарата и Сервейт
ГЛАВА 12 СВЕРТОЧНЫЕ КОДЫ В современных системах связи довольно часто приходится пред- усматривать передачу данных с очень большими скоростями — иногда много миллионов битов в секунду. Для защиты таких систем от ошибок нередко используются блоковые коды. Поток данных делится на блоки по k информационных символов, и каж- дый блок кодируется п символами кодового слова. Кодовые слова для последовательных ^-символьных блоков никоим образом не связываются кодером. При другой схеме кодирования поток данных разбивается на гораздо меньшие блоки длины k0, которые мы будем называть кадрами информационных символов. Эти кадры информационных символов обычно включают лишь несколько символов. Кадры информационных символов кодируются кадрами кодового слова длины л0 каждый. Однако вместо того, чтобы независимо кодиро- вать отдельные кадры информационных символов в отдельные кадры кодового слова, кодирование каждого кадра информа- ционных символов в отдельный кадр кодового слова производится с учетом предыдущих т кадров информационных символов. Поэтому процедура кодирования связывает между собой после- довательные кадры кодовых слов. Коды, получаемые таким образом, называются древовидными кодами. Наиболее важными древовидными кодами являются коды, известные под названием сверточных кодов. Сверточными кодами являются древовидные коды, которые обладают дополни- тельными свойствами линейности п постоянства во времени. Вначале мы рассмотрим общий класс древовидных кодов, в основ- ном концентрируя свое внимание на изучении сверточных кодов как частного случая древовидных кодов. 12.1. ДРЕВОВИДНЫЕ И РЕШЕТЧАТЫЕ КОДЫ Изучение древовидных кодов начнем с рассмотрения кодера, представленного на рис. 12.1 в виде регистра сдвига. Многие основные определения могут быть введены с использованием этой
400 гл. 12. СВЕРТОЧНЫЕ КОДЫ схемы. Информационная последовательность вводится в кодер, начиная с нулевого момента временя и до бесконечности. Поток входящих информационных символов разбивается на сегменты, которые содержат по k0 символов и называются кадрами информа- ционных символов. Кадр информационных символов может, в ча- стности, состоять пз единственного символа, что нередко имеет место на практике. В кодере может храниться т кадров. В течение каждого временного кадра в регистр сдвига вводится новый кадр информационных символов, а кадр информационных символов, дольше остальных хранившийся в нем, выводится из него и сбра- сывается. В конце каждого временного кадра в кодере хранятся последние т из поступивших в него кадров (всего mkD информа- ционных символов). В начале каждого временного кадра кодер по введенному кадру информационных символов и т хранящимся в нем кадрам вычисляет один кадр кодового слова, имеющий длину я0 символов. Этот кадр кодового слова выводится из кодера, как только следующий кадр информационных символов выводится в него. Следовательно, каждым ke информационным символам соответствует передача по каналу п0 кодовых символов. Бесконечное множество всех бесконечно длинных кодовых слов, получаемых при поступлении в этот кодер всех возможных входных последовательностей, называется древовидным (п0, kJ-кодом. Скорость R этого древовидного кода определяется отношением R — kolno. Важной характеристикой сверточного кода является величина v=mfe0. Chia называется длиной кодового ограничения. Эго не- строгое определение длины кодового ограничения достаточно для Рис. 12 1. Кодер в виде репклра сдвиг а.
12 I. ДРЕВОВИДНЫЕ И РЕШЕТЧАТЫЕ КОДЫ 401 многих целей (хотя в некоторых случаях необходимо более строгое определение). Формальное определение будет дано в следующем параграфе. На рис. 12.1 изображен кодер, у которого k0 = 3, п0 - 5 и v — 21. В древовидном коде используются и несколько других мер длины. Положим k — (hi -|- 1) kf,. Это k непосредственно связано с длиной кодового ограничения. Назовем ее информационной длиной слова сверточного кода. Соответствующая ей мера кодовых последовательностей называется кодовой длиной блока п. Она дается формулой п = (т 1) п0 = kn0/k0. Кодовая длина блока кодера на рис. 12.1 равна 40. Кодовая длина блока — это длина кодового слова, на которой сохраняется влияние одного кадра информационных символов. Из соображе- ний удобства реализации на практике значения п0 и ka для древо- видных кодов выбираются равными небольшим целым числам; в типичном случае k0 равно единице. Это означает, что выбор скорости кода ограничен. Невозможно построить практический древовидный код со скоростью, очень близкой к единице, как это обычно делается для блоковых кодов (таких, как коды Рида— Соломона). Дадим формальное определение древовидного кода. Определение 12.1.1. Древовидный (я0, ko)-Kod —это отобра- жение на себя множества полубесконечных последовательностей элементов из GF (<?), такое, что если для любого М первые Mk0 компонент двух полубесконечных последовательностей совпадают, то первые Мп0 компонент отображений этих последовательностей тоже совпадают. Древовидный код лучше всего можно представить себе, обра- тившись к кодеру, изображенному на рис. 12.1. Древовидный код характеризуется длиной кодового ограничения (быть может, бесконечной) и скоростью. Частные случаи древовидных кодов получаются различными комбинациями следующих четырех свойств. Эти свойства полезно проследить на показанном на рис. 12.1 кодере. Конечность длины кодового ограничения. Длина кодового огра- ничения может быть конечной или бесконечной. Практически древовидные коды всегда имеют конечную длину кодового огра- ничения. Однако в теоретических исследованиях иногда полезны коды с бесконечной длиной кодового ограничения. Древовидный (я0, й0)-код с конечной длиной кодового ограничения v, длиной слова k = v |- k0 и кодовой длиной блока п называется также решетчатым (л, к)-кодам.
402 ГЛ. 12. СВЕРТОЧНЫЕ коды Постоянство во времени. Если две различные входные после- довательности совпадают во всем, но с временным сдвигом на целое число кадров, то соответствующие им кодовые последова- тельности также совпадают во всем, но с временным сдвигом на то же самое целое число кадров. Линейность. Кодовая последовательность любой линейной комбинации двух информационных последовательностей совпадает с такой же линейной комбинацией кодовых последовательностей этих двух информационных последовательностей. Иначе говоря, если и d2 являются двумя информационными последователь- ностями с кодовыми последовательностями G (d^ и G (<f2), то adi + bd2 соответствует кодовая последовательность 6 (adj_ -J- bdj = aG + bG (d^. Систематичность. Систематическим древовидным кодом называется код, в котором каждый кадр информационных симво- лов составляет первые k0 символов первого из тех кадров кодовой последовательности, на которые влияет данный кадр информа- ционных символов. • Определение 12.1.2. Линейный постоянный во времени древо- видный (п0, £0)-код, имеющий конечную длину слова k =(т |-1) k0, называется сверточным (п, к)-кодом. Сверточный (гг, А)-код, удо- влетворяющий условию систематичности, называется система- тическим сверточным (п, к)-кодом. Заметим, что мы можем называть один и тот же код древо- видным (п0, /г0)-кодом или сверточным (л, £)-кодом. На практике k значительно больше k0, и поэтому недоразумений не возникает. Определение 12.1.3. Постоянный во времени древовидный (пв, /г0)-код, имеющий конечную информационную длину слова k, называется скользящим блоковым (п, к)-кодом. Следовательно, линейный скользящий блоковый код является сверточным кодом. На рис. 12.2 графически иллюстрируются связи между раз- личными классами древовидных кодов. Существуют и другие возможности, но наиболее интересными являются эти случаи. Примеры кодеров для двух различных сверточных кодов показаны на рис. 12.3; в обоих случаях п0 = 2, к0 - 1. Первый из них служит кодером для систематического двоичного сверточного (12,6)-кода с длиной кодового ограничения, равной 5. Он обладает всеми указанными выше свойствами. Второй является кодером для несистематического двоичного сверточного (6,3)-кода с длиной кодового ограничения 2. В обоих случаях входные символы пре- образуются двумя фильтрами, один из которых образуется верх- ними отводами, а другой — нижними. Символы с выходов этих двух фильтров попеременно во времени считываются и подаются
12.1. ДРЕВОВИДНЫЕ И РЕШЕТЧАТЫЕ КОДЫ 403 Рис. 12.2. Классификация древовидных кодов. в буфер по одному символу в единицу времени с каждого выхода; их считывание из буфера производится вдвое чаще, чем поступают входные символы. Сверточные и другие решетчатые коды удобно описывать спе- циальным графом, называемым решеткой; отсюда название — решетчатые коды. Решеткой называется граф, узлы которого находятся в прямоугольной координатной сетке, полубесконечной справа; число узлов в каждом столбце конечно. Конфигурация ребер, соединяющих узлы каждого столбца с узлами столбца справа, одинакова для всех столбцов. Узлы, которые не могут быть достигнуты при движении вправо из верхнего левого узла, обычно не указываются.
404 гл. 12. СВЕРТОЧНЫЕ КОДЫ Типичная решетка для двоичного кодового алфавита пред- ставлена па рис- 12.4. Эту решетку можно использовать для описания второго кодера, изображенного на рис. 12.3. Ее марки- ровка на рис. 12.5 соответствует этому кодеру. Узлы в каждом столбце решетки представляют состояний, в которых может находиться регистр сдвига. Каждый последующий столбец пред- ставляет собой набор состояний в следующий момент времени. Поступление на вход нового кадра приводит к изменению состояния регистра сдвига, соответствующему ребру, которое ведет к следующему узлу. В нашем примере каждое ребро по- мечено двумя двоичными символами, передаваемыми в канал при переходе в следующее состояние регистра сдвига. В том простом примере, который мы рассматриваем, ведущая из произвольного узла верхняя прямая соответствует нулевому входному двоичному символу, а нижняя — единичному. В общем же случае каждое ребро помечается k0 входными символами, которые ему соответ- ствуют. Маркированная решетка описывает сверточный код в том смысле, что все пути слева направо по решетке обозначают кодо- вые слова. Маркировка ребер одинакова для каждого сегмента и линейна в том смысле, что линейная комбинация маркировок любого множества ребер является маркировкой некоторого ребра. Решетка может быть маркирована и при более слабых ограни- чениях. Если маркировка не обладает свойством линейности, то, как мы уже указывали, код называется скользящим блоковым Ксйовые биты Рис. 12.3. Примеры сверточных кодеров, а — кодер для двоичного сверточного (12, в)-кода, б — кодер для двоичного сверточного (6. 3)-кода.
12.1 ДРЕВОВИДНЫЕ И РЕШЕТЧАТЫЕ КОДЫ 4QB Рис. 12.4. Решетка сверточного кода Время ПослеВнии поступивший Еит Рис. 12.5. Решетчатая диаграмма сверточного (6. 3)-кода. кодом Если маркировка меняется от кадра к кадру, то такой код известен под общим названием решетчатого кода. Наконец, если число состояний в следующих друг за другом временных кадрах продолжает неограниченно расти, то такой код называется общим древовидным кодом. Рис. 12.6. Дерево для двоичного древовидного кода со скоростью 1/2.
406 ГЛ. 12. СВЕРТОЧНЫЕ КОДЫ Решетчатый код может быть также представлен особым гра- фом, показанным на рис. 12.6 и называемым деревом. В этом графе число узлов и ветвей неограниченно увеличивается при росте дерева вправо; этим и объясняется название древовидных кодов. Каждый узел дерева — это состояние, соответствующее всем по- ступившим в него информационным символам, начиная с нулевого момента времени. Для кодов с бесконечной длиной кодового ограничения или даже умеренно большой длиной кодового огра- ничения дерево — это именно тот граф, который их описывает. Кодовые слова соответствуют путям по дереву. Для кодов с малой длиной кодового ограничения, однако, удобнее использовать решетку. Как мы уже видели, код полностью описывается послед- ними v поступившими в кодер символами, и их достаточно для определения состояния. 12.2. ОПИСАНИЕ СВЕРТОЧНЫХ КОДОВ С ПОМОЩЬЮ МНОГОЧЛЕНОВ Сверточный ((т + 1) п0, (m-|- 1) Ао)-код над GF (q) с длиной кодо- вого ограничения v = mk0 можно генерировать с помощью набо- ров фильтров с конечным импульсным откликом (КИО-фильтров); каждый набор состоит из k0 КИО-фильтров над GF (q). В кодер поступает поток символов со скоростью символов в единицу времени, а из него выходит в канал поток символов со скоростью п0 символов в единицу времени. На рис. 12.7 показан кодер для двоичного сиерточного кода с п0 = 5 и k0 — 1. Такой кодер со- стоит из серии фильтров и выходного регулирующего буфера, который необходим для согласования выходной скорости со ско- ростью фильтров. На рис. 12.8 приведен аналогичный кодер для двоичного сверточного кода с п0 = 5, 1г0 — 3. Для согласования входной скорости со скоростью фильтров добавлен входной буфер. Каждый КИО-фильтр может быть представлен многочленом степени не выше т. Если входной поток записать как многочлен (быть может, бесконечной длины), то работа фильтра может быть описана как умножение многочленов. В этом случае кодер свер- точного кода может быть представлен множеством многочленов; поэтому и сам код может быть представлен посредством того же множества многочленов. Иначе говоря, код является множеством кодовых слов, которое порождается данным множеством много- членов. Эти многочлены называются порождающими многочленами кода. Наибольшая степень порождающих многочленов равна т. В отличие от блоковых кодов, которые описываются един- ственным порождающим многочленом, сверточный код требует для своего описания нескольких порождающих многочленов — в общем случае многочленов. Пусть £«(*), i = 1, •••, k0, j — 1, ..., п0 — множество порождающих многочленов. Они могут
12.2. ОПИСАНИЕ С ПОМОЩЬЮ МНОГОЧЛЕНОВ 4Q7 кис | —Н гио 1—I »| КИО —Н кио 1— *4 КИО 1 Набор КИО-фильтров Рис. 12.7. Сверточный кодер. *4 КИО |—Н КИО | ' Збигпа *Н Н за единицу J КИ0 1 f времени 1 F / — КИО Н ' - »| КИО | ' Входной регулирующий —— буфер 1 КИО — *j кио И »| КИО | ' »[ КИО Н ки° |—*( »| КИО I ' Набор КИО-фильтров Рис. 12.8. Сверточный кодер (лв =5, k0 — 3). Ширина ^-1 биг _|_ 5 битов за единицу времени Выходной регулирующий буфер 7) ' —У / 5 битов +) ' за единицу времени +/ / Выхсднсй г регулирующий -У буфер
408 ГЛ. 12. СВЕРТОЧНЫЕ коды быть объединены в матрицу размера k0 X п0, называемую поро- ждающей матрицей из многочленов *): с И = teu (*)1- При k0, большем единицы, некоторые порождающие многочлены могут равняться нулю. Например, порождающие матрицы из многочленов кодеров на рис. 12.3 записываются в виде G (х) = [1 х5 + Xs + 1 I и G (х) = [х® |- х + 1 х® + 1 ]. Дадим формальное определение длины кодового ограничения сверточного кода, основываясь на порождающей матрице из многочленов G (х). Определение 12.2.1. Длиной кодового ограничения сверточ- ного кода, задаваемого порождающей матрицей из многочленов 1^7 (х)], называется величина 2) v = Е max [deggjj (х)1. i=i i Информационной длиной кодового слова называется k-ko max [deg gif (x) + 1 ], *’• i а кодовой длиной блока называется я = пь max [deg gi} (х) + 11. Например, у сверточных кодов, кодеры которых показаны на рис. 12.9, v = 3, k = 6, п = 9 и v — 4, k = 6, п =- 9 соответ- ственно. Будем рассматривать входной кадр как k0 параллельно посту- пающих символов, а последовательность входных кадров как k0 параллельных последовательностей символов. Они могут быть ’) В дальнейшем, следуя автору, мы иногда будем для краткости называть эту матрицу порождающей матрицей. — Прим ред. г) На практике используется несколько различных определений термина длина кодового ограничения. Неопровержимый довод в пользу нашего выбора состоит в следующем: код с меньшей решеткой имеет меньшую длину кодо- вого ограничения, решетка всегда имеет qv узлов, и любой минимальный ко- дер — будь он кодером с обратной или прямой связью — всегда имеет v элемен- тов памяти. Следовательно, v измеряет сложность сверточного кода Иногда полезны также данные нами определения k и л, в литерзтуре они также на- зываются длиной кодового ограничения.
12.2. ОПИСАНИЕ С ПОМОЩЬЮ МНОГОЧЛЕНОВ 409 Рис. 12.9. Кодеры дли двух сверточных кодов со скоростью 2/3. представлены k0 информационными многочленами d, (х), I — — I, .... 1г0, или вектором-строкой таких многочленов: d (х) = [di (х), d2 (х), ..., d*„ (х)1. Аналогично выходное кодовое слово может быть представлено л0 многочленами кодового слова С/ (х), / = 1, ..., п0, или вектором этих многочленов с (х) = [су <х) ] = ki (х), с2 (х).с„„ (х)]. Коэффициенты многочленов кодового слова перемежаются в по- рядке их прохождения по каналу. Теперь операцию кодирования можно компактно описать с по- мощью векторно-матричного произведения c(x) = d(x)C(x), или, что то же самое, Проверочная матрица Н (х) из многочленов является [(л0 — — koi х «о 1-матрицей, элементами которой являются многочлены и которая удовлетворяет условию 6(х)Н’(*)=0. Вектор синдромных многочленов дается уравнением s(x) = v(x)tF(x). Он является (п0 — /г0)-мерным вектором-строкой из многочленов. Систематический кодер для сверточного кода имеет порожда- ющую матрицу из многочленов вида С(Х) = Ц:Р(Л)!, где I — единичная матрица размера k0 X k0, а Р (х) — матрица многочленов размера k0 х (п0 — k0). Для систематических одер-
410 гл. 12. СВЕРТОЧНЫЕ ^КОДЫ точных кодов проверочную матрицу из многочленовjkojkho сразу записать в виде Н(х) = [-Тг(х)1], где 1 — единичная матрица размера (п0 — k0) X (п0 — k0). Можно непосредственно проверить, что G(x)H'(*) = 0„ Как и в случае блоковых- кодов, более корректно было бы говорить о систематических кодерах сверточных кодов, а не о систематических сверточных кодах. Систематические кодеры сверточных кодов, по-видимому, предпочтительнее, так как при их использовании информация не преобразуется и при отсутствии ошибок может считываться непосредственно. Однако в отличие от блоковых кодов не каждый сверточный код эквивалентен (в бо- лее узком смысле) систематическому сверточному коду, и некото- рые несистематические сверточные коды имеют лучшие дистан- ционные свойства, чем систематические. Так как в кодовых словах, не принадлежащих систематиче- скому коду, информация непосредственно не содержится, они должны строиться так, чтобы при отсутствии ошибок ее можно было бы легко восстановить. Упомянутое выше сужение понятия эквивалентности состоит в том, что все кодеры должны констру- ироваться на базе КИО-фильтров без обратной связи. Если же использовать обратную связь в цепях, выполняющих деление многочленов, то можно построить систематический кодер для любого сверточного кода. На рис. 12.10 дается систематический кодер с обратной связью, соответствующий решетке, изображен- ной на рис. 12.5. Перейдем к обсуждению важного частного случая k0 = 1. Упростим обозначения, положив 6 (х) == [g! (х) g2 (х) ... g„t (х)1 И о W = <1 W & W. / = 1......... Регулирующий буфер Серии ВХПЙНЫХ битое Рис512.10. Систематический кодер с обратной связью для сверточного (6. 31- кода.
12.2. ОПИСАНИЕ С ПОМОЩЬЮ МНОГОЧЛЕНОВ 41Л Для систематического кода gt (х) — 1 Определение 12.2.2. Сверточный код, порождающие много- члены gi (х)...gn„ (х) которого удовлетворяют условию НОД^,(х).......g„, (х)] = х“ при некотором а, называется некатастрофическим сверточным кодом. В противном случае он называется катастрофическим сверточным кодом. Без ограничения общности мы можем считать х°= 1, так как невыполнение этого равенства просто эквивалентно введению во все фильтры задержки, что, очевидно, бессмысленно. Некатастрофический сверточный код при отсутствии ошибок можно декодировать, используя алгоритм Евклида для много- членов, согласно которому существуют многочлены at (х), .... аЛ1„ (х), такие, что W a W + ... + n.,g„, и = 1. Поэтому если многочлен поступающих данных d (х) кодируется по формуле 9 (х) d (х) gs (х), / = 1, .... п0, то d (х) можно восстановить, используя соотношение d (х) = fij (х) а (х) {- ... -|- (х) сПе (х), что легко проверить подстановкой. На рис. 12.11 приведен пример. Многочлен поступающих данных вводится слева, а выводится в неизменном виде справа. Комбинированная посимвольная скорость в точках а и b равна удвоенной входной скорости, однако можно так скомбинировать символы, проходящие эти две точки, чтобы они образовывали передаваемое по каналу кодовое слово сверточного кода со ско- ростью 1/2. Вводимая избыточность используется для нахождения и исправления ошибок; чем больше ошибок, которые могут быть исправлены, тем лучше код. Задача нахождения хорошею сверточного кода является зада- чей поиска хорошего множества взаимно простых порождающих многочленов. Найти произвольное множество взаимно простых многочленов нетрудно, а вот найти множество, которое хорошо исправляет ошибки, действительно трудно. В общем случае k0 больше единицы. Некатастрофическнй код определяется через ('£) различных (k0 X л^-подматриц матрицы G (х). Пусть для нумерации подматриц этого множества используется индекс I, и пусть ДДх)—определитель Z-й (k0 X X л0)-подматрицы.
412 ГЛ. It. CBLPTO4HWE КОДЫ 1 = fX3+X2 + 1)(X6+X2+X) + (I<'+Xi + 1)(X5+XZ+X + 1) Рис. 12.11. Подробная схема регистра сдвига. Определение 12.2.3. Сверточный код с матрицей порождающих многочленов G (х), определители Дг (х), I = 1..... (*’), под- матриц которой удовлетворяют условию НОД [A, w, 1 = I........(й)1 = х" при некотором а, называется некатастрофическим сверточным кодом. В противном случае он называется катастрофическим сверточным кодом. Как и в предыдущем случае, некатастрофический код может быть обращен. Иначе говоря, существует (n0 X Лс)-матрица много- членов G* (х), такая, что G*(x)G(x) =х°1, где I — единичная матрица размера k0 X а х° определяет некоторую фиксированную задержку. Найти G* (х) в общем слу- чае затруднительно, и мы не будем этим заниматься. В случае систематических кодов сформулированные в определении 12.2.3 условия всегда выполняются. Систематические коды всегда яв- ляются некатастрофическими. 12.3. ИСПРАВЛЕНИЕ ОШИБОК И ПОНЯТИЯ РАССТОЯНИЯ Когда кодовое слово сверточного кода передается по каналу, время от времени в его символах возникают ошибки. Декодер, при- нимая кодовое слово, должен исправить эти ошибки. Однако длина кодового слова сверточного кода столь велика, что в фикси- рованный момент времени декодер может хранить в памяти только
12.3. ИСПРАВЛЕНИЕ ОШИБОК; ПОНЯТИЯ РАССТОЯНИЯ 413 его часть. Хотя длина кодового слова бесконечна, все решения принимаются декодером на сегментах кодовых слов. конечной длины. Безотносительно к шагу, на котором обрывается слово, принятое декодером для обработки, в силу структуры кода суще- ствует некоторая зависимость этого отрезка с теми частями елцва, которые декодер еще не наблюдал. Таким образом, возможно, существует полезная информация, которую декодер не исполь- зует. Изучение процедур декодирования сверточных кодов в боль- шинстве случаев ограничивается вопросом исправления ошибок в первом кадре. Если этот кадр может быть исправлен и декоди- рован, то первый информационный кадр известен. Влияние ин- формационных символов этого кадра на последующие кадры кодовых слов может быть учтено и исключено из них. Следова- тельно, задача декодирования второго кадра кодового слова аналогична задаче декодирования первого кадра кодового слова. Продолжая эти рассуждения, приходим к выводу, что при успешном исправлении первых / кадров проблема декодирования (/ + 1)"го кадра аналогична проблеме декодирования первого кадра. Известно много подобных процедур декодирования. Про- цедура, использующая информационные символы исправленного кадра для явного исключения их влияния на последующие кадры, называется процедурой с обратной связью. Другие декодеры опери- руют таким образом, чтобы соответствующим образом декодиро- ванные предшествующие кадры не оказывали никакого влияния на текущий кадр. В любом декодере может случиться так, что в связи со слишком большим количеством ошибок первый кадр кодового слова не будет исправлен должным образом. В некоторых декодерах это при- водит к введению ошибок в последующие кадры, вызывая их неправильное кодирование. Если ошибка в декодировании одного кадра приводит к появлению в кодовом слове бесконечного числа дополнительных ошибок, то говорят, что в декодере происходит распространение ошибок. Если распространение ошибок может быть устранено выбором алгоритма декодирования, это явление называют обычным распространением ошибок-, если же распро- странение ошибок вызывается выбором катастрофического по- рождающего многочлена сверточного кода, то говорят о катастро- фическом распространении ошибок. Выбор надлежащей конструк- ции системы позволяет избежать обеих этих возможностей. Число символов, которые декодер может хранить в памяти, называется шириной окна декодирования. Если ставить своей целью обнаружить как можно больше конфигураций ошибок, то в общем случае увеличение ширины окна декодирования всегда приводит к улучшению характеристик, однако в конце концов происходит насыщение Ширина окна декодирования должна
414 гл. 12. СВЕРТОЧНЫЕ КОДЫ быть не меньше длины блока п и зачастую в несколько раз пре- вышает последнюю. Сверточный код характеризуется многими минимальными рас- стояниями, определяемыми длинами начальных сегментов кодовых слов, между которыми берется минимальное расстояние. Мера расстояния определяется таким образом, что если при декодиро- вании двух кодовых слов получается один и тот же первый инфор- мационный кадр, то эти слова считаются эквивалентными. Определение 12.3.1. Минимальное расстояние Хэмминга для любых начальных сегментов длины I кадров всех пар кодовых слов, отличающихся начальным кадром, называется l-м мини- мальным расстоянием сверточного кода и обозначается через d*. Если I равно т -f- 1, то оно называется просто минимальным расстоянием и обозначается через d‘. Последовательность d[, d', di, ... называется дистанционным профилем сверточного кода. Так как сверточный код линеен, одно из двух кодовых слов может целиком состоять из нулей. В этом случае l-е минимальное расстояние равно минимальному из всех весов сегментов длины I кадров кодовых слов с ненулевым первым кадром. Оно может быть вычислено по маркированной решетке. Из рис. 12.5 следует, что для сверточного (6, 3)-кода di = 2, d* = 3 и di = 5 при всех Предположим, что сверточный код имеет l-е минимальное расстояние dl. Если в первых I кадрах произошло не более I оши- бок, причем t удовлетворяет неравенству 2/ 4- 1 « di, то ошибки, которые появились в первом кадре кодового слова, могут быть исправлены. В частности, выберем I = т 1; мини- мальное расстояние кода d* равно dm+i- Тогда при I, удовлег- воряющем неравенству 2/ + 1 с d*. код исправит первый кадр кодового слова, если на длине первого блока появилось не более t ошибок. Такой код называется свер- точным кодом, исправляющим i ошибок. Более точное, хотя и более громоздкое название: сверточный код, исправляющий t ошибок на длине блока. Определение 12.3.2. Свободным расстоянием сверточного кода С называется d„, — max d;. Очевидно, что dm^-l dm-f-2 doo- Определение 12.3.3. Сзободной длиной сверточного кода называзгея дчина имгодэго наименьший вес ненулевого цачаль-
12.4 МАТРИЧНОЕ ОПИСАНИЕ СВЕРТОЧНЫХ КОДОВ -41Б кого сегмента кодовой последовательности сверточного кода. Таким образом, dt = dx, если I — па, и dt < dx, если I < пет. В примере, приведенном на рис. 12.5, свободное расстояние равно 5, а свободная длина 6. В этом случае свободная длина равна длине блока сверточного кода. В общем случае она может быть больше длины блока. 12.4. МАТРИЧНОЕ ОПИСАНИЕ СВЕРТОЧНЫХ КОДОВ Сверточный код состоит из бесконечного числа кодовых слов бес- конечной длины. Он линеен и может быть описан бесконечной порождающей матрицей. Для описания каждого кода может быть использовано огромное количество порождающих матриц, но удобно оперировать только некоторыми из них. Даже в лучшем случае порождающая матрица сверточного кода более громоздка, чем порождающая матрица блокового кода. Порождающие многочлены, имеющие индексы i и j, могут быть записаны в виде Ви W = I Для построения порождающей матрицы коэффициенты gi}l упоря- дочиваются в виде матрицы. Пусть при каждом I G, является (ft0 X По)-матрицей: G( - teb-d- Тогда порождающая матрица сверточного кода, усеченного до блокового кода длины п, записывается в виде Go Gl G2 ... Gra ‘ 0 Go Gt ... Gm_x 0 0 Go... Gm^ _ 0 0 0 Go _ где символом 0 обозначена (k0 X п0)-матрица, целиком состоящая из нулей. Порождающей матрицей сверточного кода является матрица “Go Gt С2 ... G„, 0 0 0 0 ... “ 0 Go G, ... G^ G„t 0 0 0 ... G = 0 0 Go ... Gm_2 Gro_i Gm 0 0 ... ,
416 ГЛ. 12. СВЕРТОЧНЫЕ КОДЫ бесконечно продолжающаяся вниз и вправо. За исключением диагональной полосы, состоящей из т ненулевых подматриц, все ее подматрицы являются нулевыми. В случае систематического сверточного кода эти две матрицы могут также быть записаны в виде G'">= ОС ;00 ; I Ро; - ;0 2 где каждая строка получается сдвигом предыдущей строки вправо, а необозначенные матричные элементы справа и слева от нее равны нулю. Через 1 обозначена единичная^ (k0 X й^-матрица, через 0 — матрица того же размера, состоящая из одних нулей, а через Рс, .... Р,„— матрицы размера k0 X (л0—k0). Первая строка описывает кодирование первого информационного кадра в первые т кадров кодового слова. Структура этого матричного выражения соответствует работе регистра сдвига кодера. Первый информационный кадр кодируется в первый кадр кодового слова элементом, находящимся в левом верхнем углу матрицы G, а именно элементом Ро]. Аналогично два первых информационных кадра кодируются в два первых кадра кодового слова по правилу Проверочной матрицей является любая матрица Н, удовлетворя- ющая условиям GO-.) )т = 0, / = 0,1,2,. .,
12.4. МАТРИЧНОЕ ОПИСАНИЕ СВЕРТОЧНЫХ КОДОВ 417 где и Н ('"<>> —стоящие в левых верхних углах матриц G и Н подматрицы, соответствующие I кадрам. Бесконечномерная проверочная матрица Н может быть построена по G. В качестве проверочной выберем матрицу О Pm—2 0... PJ — 1... 0 Pm -I 0 . . Pm 0 ... где, как и ранее, все необозначенныс элементы являются нуле- выми. Пример. Систематический двоичный сверточный (4,2)-код с k0 = — 1 и т = 1 описывается матрицами Ро = 1 и Pj — 1 размера 1X1. Следовательно, г! 1 0 1 110 1 °- 110 1 Пример. Систематический двоичный сверточный (12,4)-код с k0 = 1 и т = 3 задается матрицами Ро — fl 1 ], = [0 11, Ра = (1 0] и Рэ — [1 11. Следовательно, “111001010011 111001010011 G = 111001010011 111001010011 14 р. Бжевхут
418 гл. 12. СВЕРТОЧНЫЕ коды ”1 1 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 0 0 1 н-= 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 12.5. НЕКОТОРЫЕ ПРОСТЫЕ СВЕРТОЧНЫЕ КОДЫ Известно всего несколько конструктивных классов сверточных кодов. В настоящее время не известен ни один такой класс с алгеб- раической структурой, сравнимой со структурой кодов БЧХ, исправляющих I ошибок; таким образом, не существует конструк- тивных методов поиска сверточных кодов с большой длиной кодового ограничения. Большинство известных и используемых в настоящее время лучших сверточных кодов было найдено по- иском на ЭВМ. В этом параграфе будет описан общий класс сверточных кодов, исправляющих одну ошибку. Параграф завершается таблицей некоторых хороших сверточных кодов, известных в текущей литературе. Класс двоичных сверточных кодов, исправляющих одну ошибку и называемых кодами Вайнера—Эта, аналогичен классу кодов Хэмминга. Для каждого положительного целого т суще- ствует ((m-r l)2m, (п г 1) (2га — 1))-код Вайнера—Эша. Такой код определяется проверочной матрицей Н' (2'" —1,2m 1 —т)- кода Хэмминга. Это проверочная [т X (2т — 1) J-матрица, в ко- торой все 2т — 1 столбцов различны и ненулевые. Выберем такую матрицу, используем ее строки для определения множества 11 X X (2”‘ — 1)]-матриц Pl,..., Pm и обозначим через Ро вектор-
1г S. НЕКОТОРЫЕ ПРОСТЫЕ СВЕРТОЧНЫЕ КОДЫ 419 строку, псе 2'" — I элементов которой равны единице. Тогда проверочная матрица кода Вайнера—Эта запишется в виде ~Р; 1 Р[ о Р’ о ооооо Р; 1 о о о р; о р^ 1 о р; р[({«4-1)2т) __ Pm О Pm О О О -PS I рт О PJ о рт о 1 о о о о о 1 Рт О Р^_I О ... PS 1 где I — матрица размера 1x1, состоящая из одной единицы, и 0 — матрица размера 1x1, состоящая из одного нуля. Теорема 12.5.1. Минимальное расстояние d* кода Вайнера— Эта равно 3; таким образом, он является сверточным кодом, исправляющим одну ошибку. Доказательство. Для вычисления минимального расстояния выбираются два кодовых слова, отличающихся в первом кадре. Так как код линеен, в качестве одного слова можно взять нулевое кодовое слово, а в качестве другого — кодовое слово с единицей в первом кадре. Поскольку для кодовых слов ctiT = 0, сумма тех столбцов Н, в которых с отлично от нуля, равна нулю. Верх- няя строка И не равна нулю только в первом кадре, поэтому первый кадр содержит по меньшей мере две единицы. Наконец, так как любые два столбца Н в первом кадре линейно независимы, кодовое слово должно содержать еще одну единицу, поэтому минимальное расстояние равно по меньшей мере 3. Для того чтобы показать, что оно равно точно 3, достаточно показать, что существуют три столбца, сумма которых равна нулю. Возьмем столбец, где Ро, .... Р™ равны единице. Сумма И*
420 ГЛ. 12. СВЕРТОЧНЫЕ коды этого столбца в первом кадре с тем же столбцом во втором кадре равна (1, 0, 0...0)г, и этот столбец содержится в первом кадре. Следовательно, существуют три столбца, сумма которых равна нулю. □ Например, (12,9)-код Вайнера—Эша соответствует т = 2. Его проверочная матрица равна 1111 110 0 10 10 0 0 0 0 0 0 0 0 1111 110 0 10 10 0 0 0 0 1111 110 0 10 10 1111 1 10 0... При таком усечении кода, чтобы его проверочная матрица соответ- ствовала длине блока 12, получается следующая проверочная матрица: [1111 0000 00001 1100 1111 0000 . 10 10 1 1 0,0 1 1 1 1J
12.5. НЕКОТОРЫЕ ПРОСТЫЕ СВЕРТОЧНЫЕ КОДЫ 421 Порождающая матрица равна “10 0 1 000 1000 1 010 1 000 1000 О 001 ] 0000000 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 10 0 0 1 0 0 0 0 0 0 1 10 0 0 0 0 0 0 1 1 0 0 1 0 00 1 000 1 0 1 0 1 0 0 0 1 0 0 0 0 ... 0 0 1 1 0 00 0000 1 а порождающая ма представляется JB вг трица Де кода, усеченного ДО дли блока 12, 1 0 0 10 0 0 1 0 0 0 1 G(i2> - 0 1 0 10 0 0 1 0 0 0 0 0 0 110 0 0 0 0 0 0 1 Непосредственным рассмотрением G<l2) убеждаемся, что в пределах блока длины 12 каждое ненулевое слово имеет вес не менее трех. Следовательно, в блоке длины 12 код может исправлять одну ошибку. Кодер для (12,9)-кода Вайнера—Эша представлен на рис. 12.12. Каждому порождающему многочлену на схеме соответствует отдельный КИО-фильтр. Большинство известных наиболее употребительных сверточ- ных кодов было получено поиском на ЭВМ. На рис. 12.13 приве- дена таблица таких кодов.
422 ГЛ. 12. СВЕРТОЧНЫЕ коды Порождающая матрица из многочленов (л, |<.<М (выражена через коэффициенты многочлена} (6.3.5) (х: + (| 101 (х2Нх+1) III (8.4,6) 0?4х«-1) 10(1 (X4 4 х2 4 х + I) 1111 (10,5.7) 11001 (01II (12.6.8) 110101 101111 (14. 7. 10) 1101101 100(111 (1'6,8, 10) II100(01 1001 III! (18.9.12) 100011101 1I010U11 (20. 10.12) 1110111001 1010011011 (22. II (4) 10111011001 l(XX)llOIIl) (24. 12.15) 101110110001 IIOOIOIIIIOI (26. 13.161 110111)101(8X11 [0(>0l 10111111 (28. [4. 16) ЮН 11011(0001 1100(010011101 (9,3.8) 101 111 111 (12,4, 10) 1101 1011 (III 115.5. 12) 10101 HOU Hill (18.6. 13) 111001 1IOIOI 101 HI (21,7,15) KOI 101 10(0011 (01II II (24. 8, 16) (OIOIOOl tool10!1 июни (27,9, 18) II1(01101 IIOOI ion 100(001(1 (30, 10.20) 1111001001 lOIOllHOI 11011001II (33, 11,22) IIOIOIHOOl (00(1(01 101 lOIIHIOOII (36. 12,24) 1110111IIOOI 110010(11)01 10)01)0100(1 (39. 13,24) I(0(1010(0001 ioiнtoiloooi loooitoiiiiii (42, 14.26) 101001011(0001 10001101110(11 1101(010011111 (12. 3,101 101 1(1 HI in (16,4.13) 1101 icjll 1011 11(1 (20,5, (6) 10(01 uoii loin Hill (24,6, 18) 110101 11(011 100111 ЮПИ (28.7.20) 1011101 10(1101 I noon 1100111 (32.8.22) 10111001 10111101 11010011 HllOUI (36.9.24) 11001100! 101110101 KOI 10111 1010011 It (40. 10, 27) 11)1001001 (0101Ш01 1101100111 HOIOIOIU (44. 11.29) 11(01011001 IIOIOIHOOl 10011101101 101111(0011 (48. 12,32) 111011111001 1(0010(11(01 101011010011 101101001111 (52.13,33) 1010011001001 Hl 1110010101 IlOlIlIOHOlI 11101011(Oil I (56. 14.36) 110100100(000) ion 1110011001 111010(0(1011L 111 110101(Oil Г Рис. 12.13. Некатастрофические двоичные сверточные коды с максимальным свободным расстоянием.
t2.fl. АЛГОРИТМЫ СИНДРОМНОГО ДЕКОДИРОВАНИЯ 423 12.6. АЛГОРИТМЫ СИНДРОМНОГО ДЕКОДИРОВАНИЯ Предположим, что принята бесконечная последовательность v, состоящая из слова сверточного кода и шума: v = с — е. Точно так же, как и в случае блоковых кодов, можно вычислить синдром: s=vHT = eHT, однако в этом случае синдром имеет бесконечную длину. Декодер не просматривает весь синдром однократно. Он работает с конца, вычисляя компоненты s по мере их поступления, исправляя ошибки, и сбрасывая те компоненты в, которые вычислены давно. Декодер содержит таблицу сегментов синдромов и сегментов кон- фигураций шума, которые приводят к данным cei ментам син- дрома. Когда декодер находит в таблице полученный сегмент синдрома, он исправляет начальный сегмент кодовою слова. Приведем примеры различных синдромных декодеров. Начнем с декодера для (12,9)-кода Вайнера—Эша. Он показан на рис. 12.14. Входящий поток битов поступает на п0 параллельных линий; синдром вычисляется путем нахождения проверочного бита по принятым информационным битам и его сравнения с при- нятым проверочным битом. Необходимо вычислить лишь столько синдромных битов, сколько их требуется для исправления оди- ночной ошибки в первом кадре. Возможные конфигурации оди- ночных ошибок в первых трех кадрах и соответствующие первые три бита синдрома приведены в виде таблицы на рис. 12.15. За- метим, что правый бит равен единице тогда и только тогда, когда в первом кадре имеется ошибка. В этом случае два других бита синдрома точно определяют местонахождение ошибки в первом кадре. Элементы, изображенные на рис. 12.14 штриховыми линиями, могут быть включены в декодер для восстановления кодовых слов, содержащих проверочные биты. Если такой необходимости нет, то эти элементы могут быть исключены. Необходимо рассмотреть еще одну задачу. После исправления первого кадра нужно изменить синдром таким образом, чтобы он не вызывал ошибочного исправления в следующем кадре. Это можно сделать несколькими способами, и хотя все они пригодны для данного кода, в случае более мощного кода они ведут себя совершенно по-разному. Возможны два варианта: 1) после каждого испрааления ошибки устанавливается нуле- вое состояние регистра синдрома;
424 ГЛ. 12. СВЕРТОЧНЫЕ КОДЫ Ряс. 12.14. Декодер для (12, 9;-кода Вайнера—Эша. Конфигурация ошибок Синйроы Четвертый Третий Второй Первый кайр KO.Jp KO.jp кайр 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 (1 0 0 0 0 0 0 0 0 0 10 0 1 1 0 0 0 О 0 0 0 0 0 1 0 0 1 |> 0 О О 0 0 0 0 0 10 0 0 0 0 1 О О 0 0 0 0 0 1 1) 0 0 0 1 1 0 0 0 0 0 0 0 10 0 0 0 0 1 1 0 0 0 0 0 0 10 0 0 0 0 0 0 1 0 0 0 0 0 10 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 10 0 0 0 0 0 0 0 0 1 0 0 0 10 0 0 0 0 0 0 0 0 0 1 0 0 10 0 0 0 0 0 0 0 0 0 0 1 0 0 Рис. 12.15. Таблица декодирования для (12,9)-кода Вайнера—Эша. 2) из регистра синдрома вычитается корректирующий синдром. Первый вариант характерен для кодов, исправляющих одну ошибку. Изучим второй вариант на более сложном примере.
12.6. АЛГОРИТМЫ СИНДРОМНОГО ДЕКОДИРОВАНИЯ 425 На рис. 12.3 был представлен кодер для (6,3)-кода, исправля- ющего двойные ошибки. Соответствующий декодер изображен на рис. 12.16. Он использует таблицу синдромов, приведенную на рис. 12.17. Кодер исправляет две ошибки в шести первых битах. С помощью обратной связи вклад каждой исправленной ошибки удаляется из регистра синдрома; так как код несистематический, информационные символы восстанавливаются по исправленному Конфигурация ошибок Синбром Четвертый Третий Второй Первый кийр кайр кайр кайр о 0 0 0 0 1 -- 0 0 111 0 0 1» 0 1 0 0 0 10 1 0 0 0 0 । । 0 0 0 10 0 0 и 1 0 1 0 10 0 1 0 0 1 0 0 1 0 110 1 Г) 1 о о <> 1 1 10 11 I 0 0 о <1 1 0 0 1 1 II 1 1 0 0 10 11 0 0 1 0 1 0 0 1111 0 0 [ 0 1 10 0 1 I 0 0 0 I 0 1 0 0 0 1 Рис. 12.17. Таблица декодирования для сверточного (6,3)-ко_ца.
426 ГЛ 12. СВЕРТОЧНЫЕ КОДЫ Конфигурация ошибок Синйром • • О 0 0 0 0 0 0 0 0 0 0-1 1110 0 1 0 0 0 0 0 0 0 0 0 0 1 1 I 1 10 0 0 0 0 0 (1 0 0 0 0 0 10 1 0 0 10 1 1 0 0 0 0 0 0 0 0 10 0 1 I 1 1 0 1 I 0 0 0 I) 0 0 0 10001 о । । 1 о 1 0 00 0 0 0 1 0 0 0 0 1 I 1 I 1 0 1 0 0 0 0 0 1 0 0 0 0 0 I 110001 000010000001 110001 0 0 0 1 0 0 0 0 0 0 0 I 101001 0 0 1 0 0 0 0 0 0 0 0 I । loool 0 I 0 0 0 0 0 0 0 0 0 I 0 1 looi 1 0 0 0 0 0 0 0 0 0 0 I 0 1 I 0 !! 1 >0 0 0 0 0 00 00 1 0 <1 0 0 И 1) 1 0 0 0 0 0 00 0 0 11 0 1 1 0 о 1 1 0 0 0 0 0 0 0 0 I 0 I 0 0 0 0 И 1 1 0 0 0 0 0 0 0 10 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 I 0 о Г) [ о 0 0 0 1 0 1 00000100ГЮ10 0 0 1 Н 0 1 0 0 0 0 1 о о о о о I 0 (1 0 1«()1 ООО 10000 0 0 I 0 0 f 0 0 0 1 0 0 10 0 0 0 0 0 0 I 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 о о 10 1 (1 0 0 о 1 1 0 0 0 0 0 0 0 0 0 10 1 0 0 0 0 1 Рис. 12-18- Таблица декодирования для сверточного (12, 6)-кода. Рис. 12.19. Декодер для сверточного (12. (5)-кода.
12.6. Алгоритмы синдромного декодирования 42? Рис. 12.20. Другой декодер для сверточного (12, 6)-кода. кодовому слову. Для восстановления информации используется следующее соотношение: I = НОД [х8 Ч- X -I 1, х8 Ч - 11 = = х (х8 Ч- х Ч- I) + (х 1- 1) (х8 Ч- О- Декодер на рис. 12.16 не является полным, так как существуют синдромы, не вошедшие в таблицу декодирования. В принципе можно исправлять некоторые другие конфигурации ошибок, включив в таблицу дополнительные синдромы и увеличив длину синдромной памяти. Практически, однако, лучшим способом улучшения характеристик системы является, по-видимому, выбор кода с большей длиной блока. Прежде чем пытаться преобразовать синдромный декодер в полный, следует познакомиться с декодером Витерби, который будет описан в § 12.8. В заключение параграфа рассмотрим пример систематического сверточного (12,6)-кода. Этот код может исправлять две ошибки в блоке длины 12. В § 13.4 мы вернемся к изучению этого кода, рассматривая его как мажоритарно декодируемый код. Однако в настоящем параграфе используется синдромное его декодирова- ние, таблица декодирования приведена на рис. 12.18. Синдромы,
428 ГЛ. 12. СВЕРТОЧНЫЕ КОДЫ расположенные выше пробела, соответствуют конфигурациям ошибок, содержащим, ошибку в правом информационном бите, а синдромы, расположенные ниже пробела, соответствуют конфи- гурациям ошибок, содержащим ошибку в правом проверочном бите, но не содержащем ошибок в правом информационном бите. Декодер, представленный на рис. 12.19, проверяет лишь син- дромы, расположенные выше пробела, и поэтому позволяет испра- влять информационные биты лишь при условии, что конфигурация ошибок лежит в пределах конструктивных возможностей деко- дера. Однако такой декодер не находит неисправлясмых, по обна- руживаемых конфигураций ошибок. Чтобы найти такие кон- фигурации, в конструкции декодера надо предусмотреть проверку синдромов, расположенных ниже пробела. Такой декодер, обес- печивающий обнаружение ошибок, представлен на рис. 12.20. 12.7, СВЕРТОЧНЫЕ КОДЫ ДЛЯ ИСПРАВЛЕНИЯ ПАКЕТОВ ОШИБОК Пакетом ошибок длины t называется любая последовательность t символов, первый и последний символы которой не равны нулю. В бесконечно длинном слове, принятом декодером сверточного кода, может появиться много ошибок, и мы можем считать, что эти ошибки собраны в пакеты различной длины. Если отдельные пакеты ошибок приходят не часто, то декодер в каждый момент времени содержит лишь один пакет ошибок. Сверточный код, для которого декодер может исправлять любой изолированный пакет ошибок длины t (при условии, что другие пакеты ошибок находятся достаточно далеко), называется сверточным кодом, способным исправлять пакеты ошибок длины t. Очевидно, что любой сверточный (п, fej-код, исправляющий t ошибок, будет исправлять любой пакет ошибок длины t. Свер- точный код для испрааления более длинных пакетов может быть получен перемежением. Чтобы получить сверточный (jn, /&}-код из (п, fej-кода, возьмем / одинаковых (п, ^-кодеров и построим кодовые слова, чередуя их выходные символы. Если исходный код может исправлять любой пакет ошибок длины t, то, очевидно, код-перемежение может исправлять пакет ошибок длины jt. Например, систематический сверточный (14,7)-код с длиной кодо- вого ограничения 6 и порождающими многочленами й И = 1. е,И - / + >" + 14 1 может исправлять два любых ошибочных символа в любом интер- вале длины 14. Взяв четыре одинаковых (14,7)-кода и перемежая символы, можно получить (56,28)-код, который будет исправлять все пакеты ошибок длины 8.
12.7- КОДЫ ДЛЯ ИСПРАВЛЕНИЯ ПАКЕТОВ ОШИБОК 420 Методом перемежения можно получить сверточный код из сверточного кода. Если g (х) — порождающий многочлен исход- ного кода, то g (х‘) — порождающий многочлен кода-перемеже- ния. В приведенном выше примере порождающие многочлены после перемежения принимают вид & (х) = I. & (х) = Xм F X20 + X8 + I. Мы уже видели, что коды-перемежения для циклических блоковых кодов ведут себя аналогично. Перемежая приведенные на рис. 12.13 короткие сверточные коды, исправляющие случайные ошибки, можно построить боль- шое число сверточных кодов, исправляющих пакеты ошибок. Эти коды-перемежения будут исправлять не только пакеты оши- бок, но и многие конфигурации случайных ошибок. Однако если требуется исправлять только пакеты ошибок, то можно получить лучшие характеристики, используя коды, предложенные специ- вльно для исправления пакетов ошибок. Классом таких кодов, способных исправлять любые пакеты ошибок длины не более Хп0, где X — конструктивный параметр, являются коды Ивадаре. Определение 12.7.1. Пусть X и п0 — любые положительные целые числа. Кодом Ивадаре называется исправляющий пакеты ошибок двоичный систематический сверточный код со следующей порождающей ((nfl — 1) х пв)-матрицей из многочленов: I < 0lKu-l)(x) где для матричных элементов (х) использовалось сокращенное обозначение g, (л) и gi (л) = (2Л.-О-Н-3 + лО-4-l) О'п-О-1, I = 1, .... Яд 1. Наибольшую степень, равную (X -|- 1) (2л0 — 1) 2, имеет порождающий многочлен gx (х). Поэтому коды Ивадаре являются сверточными ((m + 1) п0, (т Ч- 1) (пп — 1))-код£ми с числом кад- ров т, равным m = (X + 1) (2п„ 1) — 2. Как мы увидим, этот код исправляет любые пакеты ошибок длины не более Xfy. Проверочная матрица из многочленов такого кода равна н W - tgi W a W (*) 11 •
430 гл- *2- СВЕРТОЧНЫЕ КОДЫ Так как п0 — k0 = I, имеется лишь один синдромный многочлен «о—l s (х) = S gi (*) Ь (х) + е„о (х) = еПе (х) —( £ [х<> И) ) * |- л-о- 'j a-о п. < --з] et (Л) Декодер использует этот многочлен дня обнаружения пакетов ошибок. Предположим, что пакет начинается в первом кадре и содержит 7.п,| битов. Если о л начинается не в нервом бите пер- вого кадра, то он может захватывать (X |- ])-й кадр. Чтобы дока- зать, что этот код может исправлять такой пакет ошибок, необходимо показать, что декодер может восстановить по синдрому пакет ошибок, а также что пакет ошибок, начинаю- щийся в более позднем кадре, не вызовет сбоя в работе деко- дера. Декодирование кодов Ивадаре лучше всего пояснить на при- мере, поскольку структура всех этих кодов одинакова. В качестве примера рассмотрим (72,48)-код Ивадаре с = 3, Z = 4 и, сле- довательно, с m-j- I = 24. Кодер представлен на рис. 12.21. Обозначим через с3 (х) многочлен проверочных битов, а через ci (%) и с2 (А) многочлены информационных битов. Соответствую- щими мноючленами ошибок будут (х). е, (') и е;< (*)• Синдром- ный многочлен равен s (х) Ъ (х) + (х* -V х'9) (х) 4- (х8 4- х**) е, (х). где для пакета ошибок, начинающегося в нервом кадре, e-t (х) - еяп |- е3|х + е3,х2 + е33л«. е2 (х) = — е21х 4" ^2-zX~ — e2Sx' | га4х , Ci (-«) = еИ1 4- е„х 4- е12х2 4 е13х8 -> е|4х*. Заметим, что если пакет начинается в первом кадре, то е34 равняется нулю. Если, далее, е21 отличен от пуля, то е20 и е1в равны нулю; если е14 отличен от пуля, то е10 равен нулю. Это следует из того, что длина пакета не превосходит 12 Па рис. 12.22 представлены коэффициенты s (х) для трех случаев, в которых пакет ошибок начинается в е10, его или е30 соответственно. Порождающие много- члены были выбраны так, чтобы на каждый бит синдрома влиял лишь один ошибочный бит. Кроме того, заметим, что, хотя в на- чвле многочлены перемежены и располагаются при формировании синдрома в порядке в, (х), в2 (х). е3 (х), над их образами затем производится обратное перемежепие и они появляются в обратном порядке, т. е. в порядке еа (х), ег (х), et (х).
IS .7 КОДЫ ДЛЯ ИСПРАВЛЕНИЯ ПАКЕТОВ ОШИБОК 431 СикЗромный многочлен — |s01 Равен: если пакет начинается в если пакет начинается в рго если пакет начинается 6 <?30 Отклик Отклик Отклик ек(х> ег(х) еъ(х) ег(х) еъ(х) Рис. 12.22. Структура синдрома для (72, 48)-кода Ивадаре. Каждый бит многочлена е8 (л) воздействует на синдром дважды: за его первым появлением следует отклик с задержкой на 15 би- тов. Диалогично каждый бит многочлена е( (л) воздействует на синдром дважды, за его первым появлением следует отклик с за-
432 ГЛ- 12- СВЕРТОЧНЫЕ коды держкой на 14 битов. Так как е24 и eJ0 не «могут одновременно быть ненулевыми, эти пары ошибок никогда не перекрываются. Каж- дый бит многочлена еа (х) воздействует на синдром один раз: за его первым появлением следуют только нули — один с задерж- кой на 14 битов, а другой с задержкой на 15 битов. Эти нули опре- деляют es (х). Если в действительности пакет ошибок начинается в l-м кадре, то синдром сдвигается вправо на I битов и перед ним вставляется I нулей. Процедура декодирования построена таким образом, что эта конфигурация не будет восприниматься как пакет ошибок, начинающийся в первом кадре. Перейдем к описанию декодера, изображенного на рис. 12.23. После того как в него поступили первые 20 кадров, в регистре синдрома хранятся первые 20 битов синдрома, причем s0 распо- лагается справа. Аналогично первый принятый бит многочлена v2 (х) находится в крайнем правом разряде (х)-регистра. В тече- ние еще четырех последующих тактов первый принятый бит (х) не достигнет крайнего правого разряда (х)-регистра. Описание работы декодера начнем с этого момента времени. Первые четыре бита синдрома зависит лишь от ошибок в привитых проверочных битах и пас не интересуют.дСледователыю, та’часть рис. 12.23, Синвромкый региолэ -регистр -регистр
12.8- АЛГОРИТМ ДЕКОДИРОВАНИЯ ВИТЕРБИ 433 которая нанесена штриховыми линиями, может быть опущена. Заштрихованные разряды регистра сдвига также могут быть опу- щены, a sJS может вводиться непосредственно из предшествующего сумматора по модулю 2. Сначвла декодер исправляет второй бит каждого кадра пакета ошибок, а затем возвращается к началу пакета и исправляет пер- вый бит каждого'кадра. Поэтому декодер имеет четырехразрядный регистр сдвига, в котором он хранит (х) после завершения испра- вления. Третий бит каждого кадра является проверочным; он не исправляется. Для исправления ошибки в vt (х) декодер проверяет компо- ненты s4 и sl9 синдрома. Если обе компоненты равны единице, то правый бит v2 (х) является ошибочным и в потоке данных, а также в регистре синдрома делаются соответствующие исправле- ния. Пакет ошибок es (х), начинающийся в более позднем кадре, не может вызвать сбоя, так как отклик еа (х) равен нулю. Парал- лельно с этим для нахождения ошибки в v, (х) декодер четырьмя кадрами позднее проверяет компоненты s5 и sI9 синдрома. Если они обе равны единице, a s0 равна нулю, то правый бит ft (х)-регистра ошибочен. Такая проверка (х) не приводит к нахождению оши- бок в течение первых четырех тактов, но затем начинает испра- влять ошибки в (х). Пакет е3 (х), начинающийся в более позднем кадре, не может вызвать сбоя, так как отклик es (х) равен нулю. В силу выбора способа проверки еще не исправленный бит'е2(х) также не может вызвать сбоя, и поэтому s4 равна нулю. После появления пакета ошибок длины 12 принятое слово не должно содержать больше ошибок, чтобы синдрому ничто не мешало во время исправления этого пакета. Для этого необхо- димо, чтобы до 29-го кадра не происходило ошибок.гСледовательно, между пакетами ошибок должно быть свободно от ошибок не менее 24 кадров (72 хороших бита). При выполнении этого пра- вила декодер будет успешно исправлять следующие друг за дру- гом пакеты ошибок длины не больше 12 каждый. 12.8. АЛГОРИТМ ДЕКОДИРОВАНИЯ ВИТЕРБИ Алгоритм декодирования Витерби является полным алгоритмом декодирования сверточных кодов. Так как он является полным, вероитность отказа от декодирования равна нулю; однако при фиксированном коде вероятность ошибки декодирования будет больше, чем у неполного декодера. Этот алгоритм практически употребляется для двоичных кодов с малой длиной кодового ограничения — в настоящее время пределом являются длины кодового ограничения от 7 до'10 Недвоичные коды декодировать декодером Виберби труднее, и это возможно лишь при очень малых длинах кодового ограничения.
434 гл. 12. СВЕРТОЧНЫЕ коды Ниже будет описана процедура, которая называется декоди- рованием по минимуму расстояния и приводит к неплохому (в прин- ципе) декодеру для сверточных кодов. Этот декодер является деко- дером по максимуму правдоподобия в случае двоичного шума без памяти. Выберем окно декодирования ширины Ь, превышающей длину блока п, вычислим все кодовые слова длины Ь, сравним принятое слово с каждым из них и выберем кодовое слово, бли- жайшее к прилитому слову. Первый информационный кадр вы- бранного кодового слова берем в качестве первого информацион- но! о кадра декодированно! о кодового слова. Декодированный пер- вый информационный кадр затем кодируется вновь н вычитается из принятого слова. После этою в декодер вводится новых сим- волов, а первые пп символов сбрасываются, и процесс повторяется для нахождения следующего информационного кадра. Конечно, для сверточных кодов даже весьма умеренной слож- ности эта процедура совершенно непрактична, однако знакомство с процедурой декодирования по минимуму расстояния полезно с теоретической точки зрения В дальнейшем мы опишем практи- ческую реализацию декодера по минимуму расстояния для корот- ких сверточных кодов. Непосредственно реализовать декодер по минимум} расстоя- ния трудно. Однако существует эффективный метод реализации такого декодера (в какой-то мере аналогичный использованию БПФ-алгоритма Кули—Тьюки для оценки дискретного преобра- зования Фурье и использованию алгоритма Берлекэмпа Месси для синтеза авторегрессионного фильтра). Он называется алго- ритмом Витерби и основывается на методах теории динамического программирования. Как и в других случаях, практически полез- ными оказываются трудные для понимания, но эффективные в вычислительном смысле алгоритмы. Поэтому теоретически лучше изучать декодер по минимуму расстояния, а в реальном декодере, если это возможно, использовать алгоритм Витерби. Декодер Витерби итеративно обрабатывает кадр за кадром, двигаясь по решетке, аналогичной используемой кодером, и пы- таясь повторить путь кодера. В любой момент времени декодер не знает, в каком узле находится кодер и поэтому не пытается декодировать этот узел. Вместо этого декодер по привитой после- товательпости определяет наиболее правдоподобный путь к каж- дому узлу и определяет расстояние между каждым таким путем > принятой последовательностью. Это расстояние называется мерой расходимости пути. Если все пути в множестве наиболее правдоподобных путей начинаются одинаково, то декодер, как правило, знает начало пути, пройденного кодером. R следующем кадре декодер определяет наиболее правдопо- добный путь к каждому из новых узлов этого кадра. Но путь в каждый новый узел должен пройти через один из старых 'узлов.
12.8. АЛГОРИТМ ДЕКОДИРОВАНИЯ ВИТЕРБИ 43Б Возможные пути к новому узлу можно получить, продолжая к этому узлу те старые пути, которые можно к нему продолжить. Наиболее правдоподобный путь находится прибавлением прираще- ния меры расходимости на продолжениях старых путей к мере расходимости путей, ведущих в старый узел. В каждый новый узел ведет q' таких путей, и путь с наименьшей мерой расходи- мости является наиболее правдоподобным путем к новому узлу. Этот процесс повторяется для каждого из новых узлов. В конце итерации декодер знает наиболее правдоподобный путь к каждому из узлов в новом кадре. Рассмотрим множество выживших путей, ведущих в множество узлов в r-й временной кадр. Эти пути проходят через один или более узлов в первом временном кадре. Если все пути проходят через один и тот же узел в первом временном кадре, то вне зависимости от того, в каком узле кодер находится в r-й временной кадр, мы знаем наиболее правдоподобный среди посещенных им в первый временной кадр узлов. Иначе говоря, мы знаем первый информа- ционный кадр, хотя еще не приняли решение об r-м кадре. Для построения декодера Витерби требуется выбрать ширину окна декодирования Ь, которая обычно в несколько раз превосхо- дит длину блока, и оценить работу декодера путем моделирования на ЭВМ. В n-й временной кадр декодер проверяет, все ли выжив- шие пути имеют одинаковое первое ребро. Если первое ребро одинаково, то оно определяет первый декодированный информа- ционный кадр, который подается на выход декодера. Затем декодер отбрасывает первое ребро и использует новый кадр принятого слова для следующей итерации. Если вновь все выжившие пути проходят через тот же узел самого старого среди оставшихся кадров, этот информационный кадр декодируется. Такой процесс декодирования кадров продолжается беско- нечно. Если b выбрано достаточно большим, то во временном кадре почти всегда может быть принято однозначное решение. Если для данного канала код построен надлежащим образом, то это решение с большой вероятностью будет правильным. Этому, однако, может помешать несколько обстоятельств. Не все выжив- шие пути могут проходить через один н тот же узел. В этом слу- чае процесс декодирования нарушается. Декодер может разрешить неопределенность, используя любое произвольное правило. Дру- гая возможность состоит в том, что декодер не принимает решения, а отмечает этот участок как сегмент кодового слова, который не- возможно исправить. В этом случае декодер становится неполным декодером. Лучше всего это понять па примере, который будет приведен ниже. Иногда декодер принимает однозначное, но ошибочное реше- ние. Оно обязательно сопровождается дополнительными ошибоч-
436 гл. «2. СВЕРТОЧНЫЕ КОДЫ Рис. 12.24. Наглядное представление работы декодера Витерби. ними решениями декодера, но в случае пекатастрофического кода декодер через короткое время обнаружит это. Полезно представлять себе декодер Витерби как окно, через которое можно наблюдать часть решетки. Это иллюстрируется рис. 12.24. На рисунке можно видеть только часть решетки конеч- ной длины, на которой отмечены выжившие пути. С течением времени решетка скользит влево — на практике довольно быстро. При появлении справа новых узлов некоторые пути продол- жаются до них, а другие исчезают; самый старый столбец выходит из-под наблюдения налево. Со временем левый столбец узлов исчезает, и (при нормальной работе) лишь для одного из узлов этого столбца будет существовать проходящий через него путь. Па рис 12.25 приведен пример работы алгоритма Витерби в случае сверточного (6,3)-кода с порождающими многочленами g1 (х) = х2 -|- х + 1 и g2 (х) — х2 + ]. Кодер для этого кода пока- зан на рис. 12.3. Для простоты выберем в качестве информацион- ной последовательности нулевую и (тоже для простоты) декодер с окном декодирования Ь, равным 15. Предположим, что v - 10100000100000000000...; это соответствует передаче нулевого кодового слова с тремя ошибками. Диаграмма состояний декодера представлена на рис. 12.25. На третьей итерации декодер находит кратчайший путь к каждому узлу третьего кадра. Затем на r-й итерации декодер находит кратчайший путь к каждому узлу г-го кадра, продолжая пути, ведущие к узлам (г — 1)-го кадра и сохраняя кратчайший путь к каждому узлу. Иногда может возникать неопределенность. В пашем примере имеются две неопределенности в пятой итерации. Декодер может либо разрешить неопределенность случайным образом, либо
10 10 1(1 1(1----------------------------------------;' c=in io оо on io о» on (io оо он Итерация 9 Итерация 3 Итерация 10 Итерация 4 Итерация II Итерация 5 Итерация 12 Итерация 6 Итерация 13 итерация 14 Итерация 7 Итерация 15 Итерация в Рис. 12.2Б. Пример работы алгоритма Витерби.
438 СЛ. 12- СВЕРТОЧНЫЕ КОДЫ сохранять оба пути, относительно которых Существует неопре- деленность. В нашем примере неопределенности сохраняются до тех пор, пока не выявляется более правдоподобный путь или сомнительный участок не исчезает из поля зрения декодера. По мере продвижения декодера к последующим кадрам из его памяти выводятся более ранние кадры. Если в самом старом кадре существует лишь один узел, через который проходит путь, то декодирование является полным. Если таких путей несколько, то принимается решение об обнаружении неиенравляемой конфигу- рации ошибок. Она либо отмечается в качестве таковой, либо производится случайный выбор. В нашем примере информационная последовательность может быть декодирована либо как 1=00000 0 0..., либо как 1 = 1 0 1 0 0 0 0 .... Если сделать ширину окна декодирования более 15, то ошибка по-нрежнему останется неиспрявляемой. Для исправления этой коЕ|фигурации ошибок требуется код с большим свободным рас- стоянием. Декодер, символически изображенный на рис. 12.25, при прак- тической реализации выглядит совершенно иначе. Например, выжившие пути через решетку представляются таблицей 15-бито- вых чисел. На каждой итерации некоторые 15-битовые числа сдвигаются влево, причем левый бит сбрасывается, а справа до- бавляется новый бит. Другие 15-битовые числа не наращиваются, а сбрасываются из таблицы. По мере продвижения декодера накопленная мера расходи- мости увеличивается. Для того чтобы избежать проблемы пере- полнения, необходимо время от времени уменьшать эту меру. Простая процедура состоит в периодическом вычитании из всех мер расходимости наименьшей такой меры. Очевидно, что это не повлияет на выбор максимвлыюго расхождения. В случае когда длина кодового ограничения мала, декодеры Витерби могут работать очень быстро. Например, практически возможно построить декодер со 128 узлами на каждом уровне, который производит 10 миллионов итераций в секунду. 12.9. АЛГОРИТМЫ ПОИСКА ПО РЕШЕТКЕ Можно улучшить характеристики сверточного кода, увеличив длину кодового ограничения. Декодер Витерби, однако, быстро становится непрактичным: при длине кодового ограничения 10 де- кодер двоичного кода уже должен помнить 1024 выживших путей.
12.9. АЛГОРИТМЫ ПОИСКА ПО РЕШЕТКЕ 439 Для того чтобы ослабить влияние больших длин кодовою огра- ничения, была разработана стратегия, игнорирующая маловероят- ные пути по решетке как только они становятся маловероятными. При такой стратегии не принимается решений о том, чтобы окон- чательно оставить данный путь. Время от времени декодер решает вернуться назад и продолжить оставленный ранее путь. Все такие стратегии поиска наиболее вероятного пути на решетке известны под общим названием последовательного деко- дирования. Последовательное декодирование носит довольно общий характер и может использоваться как в каналах, в которых при- нимаются жесткие решения (мы рассмотрим их в этом napai рафе), так и в каналах, допускающих стирание или даже мягкие решения (мы изучим их в гл. 15). Представим себе решетку сверточного кода с большой длиной кодового ограничения, скажем равной 40. Для того чтобы найти решение, эту решетку нужно исследовать па нескольких сотнях уровней. Еще больше будет число узлов па каждом уровне. Всего таких узлов будет 210, или приблизительно I013. Декодер должен найти ио этой решетке путь, наиболее близкий к принятому слову в смысле расстояния Хэммиша по крайней мере ом должен сделать это с очень высокой вероятностью, хотя время от времени ему дозволено отказываться от декодирования. Такой отказ яв- ляется дополнительным видом ошибки, не существовавшим в де- кодере Витерби; декодер может отказаться от декодирования лаже в том случае, когда декодирование по минимуму расстояния было бы верным. В отличие от оптимальной процедуры алгоритма Витерби декодер, описание которого мы начинаем, просматривает только первый кадр, принимает решение и переходит в узел решетки на первом уровне. Затем он продолжает эту процедуру. На каж- дом уровне он находится в одном узле; он смотрит на следующий кадр, выбирая ребро, ближайшее к принятому кадру, и переходит в узел на следующем уровне. Если ошибок нет, то эта процедура работает превосходно, одиако при наличии ошибок декодер может случайно выбрать неправильную ветвь. Если декодер продолжает следовать по ложному пути, он внезапно обнаружит, что происходит слишком много ошибок. Но это ошибка декодера, а не канала. Последова- тельный декодер вернется назад па несколько кадров и начнет исследовать альтернативные пути до тех пор, пока не найдется правдоподобный путь; затем он будет следовать вдоль этого аль- тернативного пути. Ниже будут кратко описаны правила, кото- рыми он руководствуется при этом поиске. Характеристики деко- дера зависят от ширины Ь окна декодирования, измеряемой числом кадров кодового слова. Если декодер нашел путь, проходящий через Ь кадров решетки, он принимает окончательное решение
440 гл. te. сверточные коды относительно самого старого кадра, выводит соответствующие биты из окна и вдвигает в окно новый кадр. Мы можем считать, что последовательный декодер движется вдоль слова сверточного кода с переменной скоростью. Обычно он двигается равномерно, подавая на выход исправленные выход- ные биты. Иногда возникает небольшое затруднение, и движение на некоторое время замедляется. Реже возникают серьезные труд- ности, и продвижение декодера прекращается до тех пор, пока он не преодолеет этот сложны й участок Разработаны подробные алгоритмы реализации такой процедуры. Наиболее популярным является алгоритм Фано, к описанию которого мы переходим. В этом алгоритме требуется знать вероятность р появления ошибочного символа в канале или хотя бы верхнюю границу для р. Пока декодер следует по правильному пути, вероитное число ошибок в первых / кадрах приблизительно равно рп01. Декодер допускает несколько большее число ошибок, но если оно намного больше, то декодер сделает вывод, что он находится на ложном пути. Выберем (быть может, моделированием) некоторый пара- метр //, больший р, но меньший 1/2, и определим перекошенное расстояние формулой х) «(/) = р'п0 I — где d (Z) — расстояние Хэмминга между принятым словом и текущим путем по решетке. Для правильного пути d (/) прибли- зительно равно рп01, а £(/) положительно и возрастает. До тех пор пока t(l) возрастает, декодер продолжает следовать по пути на решетке. Если вдруг /(/) станет уменьшаться, то декодер за- ключает, что в некотором узле он выбрал ошибочное ребро, и воз- вращается по решетке, проверяя другие пути. Он может найти лучший путь и проследовать по нему или может возвратиться к тому же самому узлу, но уже более уверенно и продолжить путь через него. Для того чтобы решить, когда Ц1) начинает умень- шаться, декодер пользуется текущим порогом Т, который всегда кратен приращению Д порога. Пока декодер движется вперед, порог, оставаясь меньшим /(/) и кратным приращению Д, при- нимает максимально возможное при этих ограничениях значение. Благодаря тому что Т квантуется, допускается небольшое убы- вание t([) без пересечения порога. В алгоритме Фано требуется, чтобы qkc ребер, выходящих из каждого узла, были перенумерованы согласно некоторому правилу упорядочения. Это правило ставит в соответствие каж- дому ребру индекс j, /= 0, ..., <7*” — 1. Нет необходимости за- помнить эти индексы в каждом ребре, достаточно знать правило, ’) В этом выражении знак выбран так, чтобы правильной работе декодера соответствовало положительное значение расстояния.
12.9. АЛГОРИТМЫ ПОИСКА ПО РЕШЕТКЕ 441 по которому при возвращении декодера в узел по ребру с извест- ным индексом j он мог переупорядочить ребра, найти ребро j и, зная его, найти ребро / + 1. Наиболее общим правилом является правило минимума расстояния. Ребра упорядочиваются в соответ- ствий с их расстояниями Хэмминга до соответствующего кадра принятого слова, а неопределенность разрешается по любому удобному подправилу. Алгоритм Фано будет нормально функцио- нировать и в том случае, когда ребрам приписан любой фикси- рованный порядок; например, ребра могут быть упорядочены лексикографически в соответствии с их информационными сим- волами. Это последнее правило упорядочения приводит к более длительному поиску назад — вперед, но освобождает от необхо- димости вычисления и перевычисления порядка при достижении каждого узла. Какоечправило упорядочения более просто в реали- зации, зависит от конструкции декодера. Для простоты понима- ния структуры алгоритма правило упорядочения лучше оставить несколько неопределенным; предположим лишь, что в каждом узле ребро, ближайшее к принятому ребру по расстоянию Хэм- минга, считается первым. Декодер будет искать ребра из каждого узла в соответствии с этим правилом. Реализация декодера в виде регистра сдвига, основанная па алгоритме Фано, приведена на рис. 12.26. Основой декодера является копия кодера с несколькими вспомогательными запоми- нающими регистрами. Декодер пытается подать символы в копию кодера таким образом, чтобы на его выходе появилось кодовое слово, достаточно близкое к принятому слову. После каждой ите- рации он может обратиться к^последнему кадру, поданному в ко- пию кодера. Он может изменить информацию в этом кадре, вер- нуться к более раннему кадру или ввести новый кадр. Декодер решает, что делать, основываясь на сравнении величины переко- шенного расстояния t(l) и текущего значения порога Т. Алгоритм Фано, который контролирует декодер, упрощенно представлен на рис. 12.27. Практические детали, связанные с ко- нечностью размеров буфера, временно игнорируются. Если шум в канвле мал и ошибки редки, то декодер будет цирку- лировать по правой петле рис. 12.27, каждый раз сдвигая все регистры рис. 12.26 на один кадр вправо. До тех пор пока t(l) остается выше порога, декодер продолжает сдвигаться вправо и повышать порог так, чтобы тот оставался близким к t(/). Если t(l) опускается ниже порога, то декодер проверяет альтерна- тивные ребра этого кадра, пытаясь найти то ребро, которое нахо- дится выше порога. Если он не может сделать этого, то возвра- щается назвд. Как мы увидим в дальнейшем, если декодер начал возвра щаться, то алгоритм заставит его двигаться назад до тех пор, пока он не найдет альтернативный путь, который находится над теку-
442 ГЛ. is. свеМОчные Коды Копия кодера : тя -|,>с. ционвого кайра. Команда | на возрастание ванного П информационного кобра ₽*°-ичный регистр I Первая | ffy-iwHtnu регистр сЭб!йа регистра w грот Указатель начала файла Выходные символы бековера (к пользователю) Команвы на свеиг и возраст олив | Пробное ивовое слово ~*Zr\ . I Ноколитепь 1 г /Т\ т-1 Блок ]-»• I \2У ” расстояния | ~ ^лрдвления |_^. ( > Порог к—' Кпмпнйп 1------------1 буфер схссшх ванных канала на возрастание I | || Добавленный 6^фцГ| ------------------b наврав Рис. 12.26. Реализация алгоритма Фаио в виде регистра сдвига. щим значением порога, или узел, в котором был установлен теку- щий порог Затем декодер снова двигается вперед уже с понижен- ным порогом; по теперь, как мы убедимся позднее, порог не повы- шается до тех пор, пока декодер не придет в новый узел, ранее не исследованный. Каждый раз, когда декодер, даигаясь вперед, посещает ранее исследованный узел, он имеет меньший порог. Декодер никогда не посетит один и тот же узел дважды с одинаковыми значениями порога. (Следовательно, он может посещать любой узел только конечное число раз. Это поведение гарантирует нас от зацикли- вания декодера. Декодер продолжает обработку данных, проводя правильное или неправильное декодирование. Теперь необходимо доказать два сделанных ранее утвержде- ния: 1) если декодер не может найти альтернативный путь, то он двигается назад к узлу, в котором было установлено текущее значение порога, и понижает его; 2) декодер не будет повышать порог до тех пор, пока не достигнет ранее не исследованного узла. Что касается первого утверждения, очевидно, что если декодер не может найти новое ребро, от которого он должен двигаться
12.Я. АЛГОРИТМЫ ПОИСКА ПО РЕШЕТКЕ 443 вперед, то он должен в конце концов возвратиться к указанному узлу. Но если в предшествующем некоторому узлу кадре переко- шенное расстояние 1(1 — I) меньше текущего значения порога Т, то порог был увеличен в l-м кадре. В блок-схему на рис 12.27 включен этот тест на нахождение узла, в котором был установлен текущий порог; теперь в этом узле порог уменьшается. Для того чтобы доказать второе утверждение, заметим, чго после того, как порог понижен на А, декодер ищет следующие ребра в том же порядке, что и до этого, до тех пор, пока не найдет то место, в котором перекошенное расстояние, ранее бывшее меньше порога, становится больше него. До этого момента порог Т не Да-проверить, бью ли последний кавр выше порога Нет-в этом ковре был установлен J текущий порог ^-7 Понизить порта и бвигаться оперев Индикатор предыдущего беижения f I если вперев м=< D,если вбок [-l.ecnu назад Да-ПР0д0ПЖОЛ1Ь опробование нет- посмотреть, превышает пи кайр пор0г Был ли превыбущий итеративный сдвиг сдвигом назад ? Иет-опробовалц другой путь путей ' | Если возможно <т.е. если то увеличить последний информационный кадр Положить- - . В противном случае ввиваться назад Положить, ; । М-----1 Заново вычислить j Возможно, Да-посмотреть, находится ли этот узеленеисследованной чести дерева (тогВа. движение правильное) Да-поеысить порог во макси- мальной кратной й величины, меньшей Замечания Кавры маркируются указателем кадра £ Итерации не маркируются Ребра, выходящие из. текущего узла, маркируются j Сдвинуть вправо па eta кайр НачО/ПЬ новый информа- ционный кавр с первого Значения у=0) Рис. 12.27. Развернутый алгоритм Фано.
444 гл. 12. СВЕРТОЧНЫЕ коды может изменяться. Это происходит из-за того, что после пониже- ния порога на Д перекошенное расстояние в тех узлах, где оно превышало первоначальный порог, никогда не будет меньше Т + -| Д. Когда декодер продвигается в новую часть дерева, он в конце концов достигает состояния, в котором t(l — 1) < Т |- Д и t(l) Т. В этой точке порог повышается. Это и является тестом для определения того, новый ли узел был посещен, и нет необхо- димости помнить все посещенные ранее узлы. Такой тест включен в схему на рис. 12.27. Алгоритм Фано зависит от двух параметров р' и Д, которые могут быть выбраны при помощи моделирования на ЭВМ. На практике необходимо время от времени уменьшать t (Z) п Т так. чтобы эти числа не становились слишком большими- Вычитание из обеих функций некоторого числа, кратного Д, не влияет на последующие вычисления. При практическом применении следует так же выбирать ши- рину b окна декодирования в несколько раз больше длины блока. На рис. 12.28 приведена более полная блок-схема алгоритма Фано, отражающая важную роль Ь. Каждый раз, когда самый старый информационный кадр достигает конца буфера, что отме- чается указателем кадра, он выходит из декодера, а указатель кадра уменьшается таким образом, чтобы всегда указывать на самый старый имеющийся кадр. В противном случае декодер может попытаться возвратиться к кадру, уже вышедшему из декодера. Иногда последовательный декодер делает так много вычисле- ний, что величина входного буфера становится недостаточной. Это явление называется переполнением буфера и является суще- ственным ограничением для применения алгоритма Фано. Вероят- ность переполнения буфера с ростом размера буфера уменьшается очень медленно, и поэтому вне зависимости от того, насколько большим выбрав буфер, эта проблема полностью не снимается. Существуют два способа управления переполнением буфера. Наиболее надежным является периодическая подача в кодер известной последовательности информационных символов (обычно последовательности нулей) с длиной, равной длине кодового ограничения сверточного кода. Если буфер переполнится, то декодер считает декодирование неудавшимся, ждет известного ему момента начала следующей последовательности и снова начинает декодирование. Все данные, поступившие между моментом пере- полнения буфера и следующим включением, теряются. Такой подход несколько уменьшает скорость кода и ставит при конструи- ровании декодеров задачу синхронизации по времени. В случае когда длина кодового ограничения не слишком ве- лика, вльтернативный путь состоит в движении указателя вперед. Если декодеру удастся найти правильный узел, то он может
«2.9. АЛГОРИТМЫ ПОИСКА ПО РЕШЕТКЕ 445 перенастроиться. Если вероятность того, что на длине блока не произойдет ошибок, не слишком мала, то декодер, предполагая, что ошибок нет, преобразует кодовое слово в информационное слово. Если код систематический, то это делается непосредственно; в противном случае необходимо применить китайскую теорему об остатках для многочленов. Если длина свободного от ошибок сегмента принятого слова равна длине кодового ограничения, то
446 ГЛ. 12. СВЕРТОЧНЫЕ КОДЫ декодер находит правильный узел и продолжает декодирование. Если в противоречии с нашим предположением появилась ошибка, то узел неправилен, п буфер скоро снова переполнится. Этот процесс продвижения декодера вперед продолжается до тех пор, пока не будет получено правильное декодирование. ЗАДАЧИ 12.1. а. Построить кодер для систематического нскатастрсфи ческою льсяч- ного сверточного (16,4)-кода с минимальным расстоянием d* = 9 и длиной кодового ограничения v — 3. б. Чему равно свободное расстояние этого кода? 12.2. Каждый код Хэмминга над GF (<;! может быть использован для по- строенья сверточного кода над GF (<,), исправляющего одну сшибку а. Построить проверочную матрицу систематического восьмеричного (9. 7)-кода Хэмминга б. Основываясь па этом коде Хэмминга, найти проверочную матрицу (30, 27)~кода Вайнера Эта над GF (8). в. Построить кодер и синдромный декодер. г. Чему равна скорость этого кода? Чему равна скорость июстна- Шатеричного кода Вайнера—Эша, основанного на (97. 15)-коде Хэммпша над GF (16)? 12.3. Построить кодер (12, ©-кода Вайнера—Эша, использующий один двоичный регистр сдвига длины 3. 12.4. Построить кодер и синдромный декодер для (32, 28)-иода Вайнера— 12.5. Снова рассмотреть пример, приведенный на рис. 12.25, используя в качестве принятого слова v - 10001000001000000000.... 12.6. Определить, какие из перечисленных ниже сверточных кодов со ско- ростью 1/2 являются катастрофическими* а- ft(4 — 4, ft (4 = 4 + х + 1. б- ft(4 = 4+4 + 1, ft(4= 4 + 4+* +1. в- ft<4 = 4 J-4+х + 1, &(4 = 4+4+1. г. ft(4 = 4 I-*5 1-4 + 1, &(4=4+4+*+1. 12.7. Сверточный код co скоростью 1/3 и длиной кодового ограничения 2 имеет порождающие многочлены ft(4= 4+*+ ], 8s (4 = 4 + х + 1. ft (4 =4+1 и doo, равное 8. а. Чему равно минимальное расстояние этого кода7 б. Чему должна быть равна ширина окна декодирования для исправ- ления всех тройных ошибок? в. Построить исправляющий все двойные ошибки декодер для этого кода с шириной окна декодирования, равной 9. 12.8. Сверточный код над GF (4) со скоростью 1/2 имеет порождающие многочлены g, (4 = 24 + 24 + I и ft (4 = 4 + х + 1- а. Показать, что этот код не является катастрофическим. б. Показать, что его минимальное расстояние раиио 5. в. Сколько конфигураций из двух сшибок располагаются ив длине ограничения декодирования, равной 8?
ЗАМЕЧАНИЯ 447 г. Построить синдромный декодер для исправления всех двойных ошибок 12.9. Найти систематический кодер с регистром сдвига и с обратной связью для двоичного сверточного кода с порождающей матрицей “w-Kf У- замечания Понятие сверточного кода было введено Элайсом [1954] и развито Возепкрафтом [19571 Вайнер и Эш [19631 предложили для семейства сверточных кодов, исправ- ляющих одну ошибку, общую конструкцию, родственную конструкции кодов Хэмминга. Класс сверточных кодов, исправляющих многократные ошибки, нашел Месси [1963]. Коды Месси просты в декодировании, но в то же время имеют не слишком хорошие характеристики. Общего правила построения семей- ства быстродействующих высококачественных сверточных кодов, исправляющих многократные ошибки, ие известно. Костелло [1969J предложил некоторые пути нахождения хороших сверточных колов с умеренной длиной блока. Основ- ные используемые в настоящее время коды были найдены поиском на ЭВМ Бусаангом 11965], Оденвальдером [1970], Болом н Джелинеком [1971], Лар- сеном [19731, ГТааске [1974] и Йоханнессоном [19751. Эти коды приведены на рис 12 13. Общее исследование алгебраической структуры сверточных кодов было проведено Месси и Сайпом [1968], а также Форпи [1970|, который впервые использовал решетки. Наше описание таких кодов с помощью многочленов основывается ня этих статьях. Костелло [1969] показал, что е’ли в кодере введена обратная снизь, то каждый сверточный код можно свести к система!и- ческому Дополнительное обсуждение абстрактных структур может бьпь най- дено у Линднера п Штаигера [1977]. Создание декодеров для сверточных кодов начали со сложных декодеров с хорошими характеристиками, а затем постепенно перешли к простым декодерам с посредственными характеристиками, которые так популярны теперь. Алго- ритм поиска на решетке принадлежит Фано [1963]. Наша формулировка алго- ритма Фани следует Галлагеру [1968] и сильно отличается от первоначальной. Витерби 11967) предложил свой алгоритм скорее в учебных целях, чем в ка- честве серьезного алгоритма Вскоре после этого Хеллер [1968] указал, что алгоритм Витерби при не слишком больших длинах кодового ограничения вполне практичен. Общее обсуждение сверточных кодов можно найти в книге Витерби и Омуры [1970]. а также в обзорных статьях Форни 11974] и Месси [1975].
ГЛАВА 13 КОДЫ И АЛГОРИТМЫ ДЛЯ ДЕКОДИРОВАНИЯ МАЖОРИТАРНЫМ МЕТОДОМ Мажоритарное декодирование — это метод декодирования, кото- рый сравнительно прост в реализации. Если желательно иметь чрезвычайно быстрые декодеры, то нужно обратиться к мажоритар- ным декодерам. К сожалению, они могут декодировать чрезвы- чайно малый класс кодов, и эти коды, как правило, слабее других. Следовательно, для практики мажоритарное декодирование имеет второстепенное значение. Несмотря на это, некоторые практиче- ские требования могут быть удовлетворены только в его рамках. Кроме того, эти коды интересны с теоретической точки зрения и открывают новые возможности теории кодов, контролирующих ошибки. Большинство известных кодов, которые могут быть декодиро- ваны мажоритарным методом, — это циклические коды или рас- ширенные циклические коды. Для этих кодов мажоритарные декодеры всегда могут быть реализованы как декодеры Меггитта и отличаются особенно простой древовидной логикой для проверки синдрома. Поэтому с прагматической точки зрения мажоритарно декодируемые коды можно определить как те циклические коды, для которых декодер Меггитта может рассматриваться как стан- дартный. Однако путь нахождения этих кодов весьма сложен и запутан. 13.L ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ В кодах Рида—Маллера, изучавшихся в § 3.6, декодирование каж- дого информационного символа производилось путем нахождения большинства голосов в множестве проверочных равенств-. Суще- ствуют и другие коды, которые могут быть декодированы мажо- ритарно. В ретроспективе история таких кодов обычн просле- живается до кодов Рида—Маллера. Напомним, что любой линейный (л, kj-код. над GF (q) имеет проверочную матрицу Н, а кодовые слова удовлетворяют равен-
[13.1. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ 44Q ству сНт = 0. Если ограничиться рассмотрением /-Й строки матрицы Н, то получается проверочное равенство g/Л# = о. Взяв любую линейную комбинацию строк Н, можно образовать новое проверочное равенство. Всего таким путем можно образо- вать проверочных равенств. Искусство мажоритарного деко- дирования и состоит в выборе хорошего подмножества этих про- верок (при условии, что оно существует). В этом и следующем параграфе мы займемся построением мажоритарных декодеров. В дальнейших параграфах мы изучим построение кодов, допускающих мажоритарное декодирование. Определение 13.1.1. Множество проверочных равенств назы- вается согласующимся *’ в /?-й координате, если компонента ch входит в каждое проверочное равенство этого множества и каждая компонента q (j k) входит не более чем в одно проверочное ра- венство этого множества. Как будет показано в приведенной ниже теореме, мажоритар- ный декодер оценивает по большинству голосов в проверочных равенствах. Априори не известно, произошла или нет ошибка в k-a принятом бите, и равная нулю величина ошибки —это один из кандидатов при таком голосовании. Если число J прове- рочных равенств четно, то при одинаковом числе голосов пред- почтение отдается решению об отсутствии ошибок. Если J нечетко и число ошибок меньше (J — 1)/2, то правильное решение всегда принимается большинством голосов. Теорема 13-1.2. Если множество J проверочных равенств со- гласуется e'k-ti координате и если в принятом слове произошло не более J/2 ошибок, то компонента Сь оценивается правильно. Доказательство состоит в описании процедуры исправления. Так как компонента с* входит в каждое проверочное равенство этой совокупности, Hkj не равно нулю. Положим S,- = Hi'i S fhfli - К} S А, А- Деление на Нщ гарантирует, что коэффициент при в сумме равен единице. Поскольку существует J равенств, то Sj — eh по меньшей мере для половины значений /; не более J/2 других е, отличны от нуля, и каждое из этих е, входит в множество прове- рочных равенств не более одного раза. Следовательно, не менее J/2 ’) Здесь часто используется термин ортогональный. Мы избегаем этого термина, так как он широко используется в теории векторных пространств. 15 Р. Клёйхут
450 ГЛ. 13- ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ всех Sj равны ед, если е>ь равно нулю, н более J/2 всех Sj равны eft, если е* отлично от пуля. Поэтому ед находится мажоритарным решением по Sj. □ Следствие 13.1.3. Если для каждой координаты существует J проверочных равенств, которые согласуются в этой координате, то код может исправлять ошибок. Доказательство следует непосредственно. □ Если J четно, то J/2 является целым числом и код можег исправлять J72 ошибок. Отсюда следует, что минимальное рас- стояние кода не меньше J 4- 1. Прямое доказательство этого факта, включая случай нечетных ^, дается в приведенной ниже теореме. Естественно назвать J |- 1 расстоянием, реализуемым при мажоритарном декодировании-, оно иногда обозначается через г^д. Истинное минимальное расстояние может быть больше. Теорема 13.1.4. Если для каждой координаты линейного кода существует J проверочных равенств, которые согласуются в этой координате, то минимальное расстояние кода не меньше J + 1. Доказательство. Выберем любое ненулевое кодовое слово и любую координату k, в которой находится ненулевой символ. В координате k согласуются J проверочных равенств. Каждое из них включает ненулевую компоненту с* и поэтому должно включать хотя бы одну другую ненулевую компоненту, поскольку в правых частях всех проверочных равенств стоят нули. Следова- тельно, существует не менее J других ненулевых компонент. □ Следствие 13.1.5. Если для некопорол координаты циклического кода существует J проверочных равенств, которые согласуются в этой координате, то минимальное расстояние кода не меньше J -J- 1. Доказательство. Каждый циклический сдвиг кодового слова в циклическом коде образует другое кодовое слово того же кода; поэтому множество J проверочных равенств для одной коорди- наты можно использовать для того, чтобы выписать множество проверочных равенств для любой другой координаты. □ Теорема 13.1.6. Пусть d — минимальное расстояние кода, дуального коду 'ft над GF (q). Тогда мажоритарный декодер для может исправить не более (п — 1) (d — 1)~’/2 ошибок. Доказательство. Линейные комбинации строк матрицы Н обра- зуют кодовые слова в дуальном коде'®’-1-. Рассмотрим множество J проверочных равенств, согласующихся в первой координате. Каждое равенство содержит не менее d — 1 ненулевых компонент среди оставшихся п — 1 координат и каждая из оставшихся п — 1 координат не равна нулю по крайней мере в одном из J равенств.
18.1. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ 451 Следовательно, J (d — I) < п — 1, и мажоритарный декодер может исправлять Л2 ошибок. □ Итак, при мажоритарном декодировании нельзя декодировать на радиусе упаковки кода, если не выполняется неравенство rf* < (n — l)/(d — 1) + 1. Это условие необходимо, но не достаточно. Для большинства представляющих практический интерес кодов это условие не выполняется. Мажоритарный декодер довольно прост, но, вообще говоря, применим лишь к кодам с плохими характеристиками. Поэтому мы введем нечто более сложное, а именно /.-шаговый мажоритар- ный декодер. Двухшаговый мажоритарный декодер использует мажоритар- ное решение для локализации ошибки в множестве компонент, а не в конкретной компоненте. Затем для нахождения ошибки уже в этом множестве вновь используется мажоритарное решение, /.-шаговый мажоритарный декодер использует мажоритарную логику на L уровнях. На каждом уровне декодер исходит из того, что ошибка уже локализована в некотором множестве компо- нент, и, используя мажоритарное решение, локализует ошибку в подмножестве этих компонент. Определение 13.1.7. Множество проверочных соотношений называется согласующимся в множестве координат ilt i2, 4, если существует множество коэффициентов Az, .... Лг, такое, что сумма AtCf + Л2Сгг + • • + Ааг входит в каждое провероч- ное равенство данного множества и каждая компонента сг при I =/= it, 4.входит не более чем в одно проверочное равен- ство множества. Естественпо, /-шаговый мажоритарный декодер может испра- влять больше ошибок, чем одношаговый мажоритарный декодер, но, вообще говоря, все еще не позволяет достичь радиуса упаковки кода, как показывает следующая теорема. Теорема 13.1.8. Пусть d — минимальное расстояние кода, дуального коду над GF (q). Тогда L-шагссый мажоритарный де- кодер для W может исправлять не более n/d — 1/2 ошибок. Доказательство. Чтобы исправлять t ошибок, прежде всего необходимо составить J — 21 проверочных равенств, согласую- щихся в некотором множестве В, содержащем b координат. Каж- дое такое равенство соответствует линейной комбинации строк матрицы Н, и эти линейные комбинации представляют собой кодовые слова дуального кода Пусть число'ненулевых компо- нент в i-м проверочном равенстве, не считая компонент, коорди- 15*
452 ГЛ. 13- ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ наты которых принадлежат В, равно а{, I — 1, J. Эти равен- ства соответствуют кодовым словам дуального кода, и поэтому b -[ at d. Суммируя эти J соотношений, получаем Jb -}- У at Jd. /“I Так как каждая компонента, координата которой не принадлежит множеству В, может быть ненулевой не более чем в одном провероч- ном равенстве, то У а, < п — Ь. Исключая Ь, получаем Лг -f- У. at J {d -|- £ . Теперь необходимо вывести второе условие. Разность двух кодовых слов дуального кода также представляет собой кодовое слово, у которого в b позициях стоят нули. Отсюда следует, что При t =/= 1" fit -|- Ср ia d. Существует J (J — 1) таких равенств, и каждое с, входит в 2(J-1) из них. Складывая все такие равенства, имеем 2 (J - 1) S о, J (J - 1) <1. Наконец, исключим используя это равенство и получен- ное ранее. Это дает 2J (п — d) =а J (J — 1) d. Так как мажоритарный декодер может исправлять J/2 ошибок, отсюда следует утверждение теоремы. □ Из этой теоремы, в частности, следует, что (23,12)-код Голея не может быть декодирован мажоритарным методом. 13.2. СХЕМЫ МАЖОРИТАРНОГО ДЕКОДИРОВАНИЯ Интерес к мажоритарно декодируемым кодам объясняется тем, что декодеры для них просты и быстры. Поэтому важной частью изложения должно быть описание декодеров. Изучим работу де- кодеров на примерах.
13.2. СХЕМЫ МАЖОРИТАРНОГО ДЕКОДИРОВАНИЯ 453 В качестве первого примера рассмотрим (7,3)-код, дуальный (7,4)-коду Хэмминга. Этот код, известный под названием симплекс- ного, имеет минимальное расстояние 4 и может исправлять одну ошибку. Так как 1 < (7—1) (3—1)-1/2 = 3/2, теорема 13.1.6 не исключает возможности мажоритарного декодирования. Один из способов нахождения проверочной матрицы для этого кода основан на том, что в циклическом коде а0 и а® являются корнями порождающего многочлена, лежащими в GF (8). Следовательно, Г а® а® а® а® а® а® а® I Н “ а* а а5 а2 а® а3 а® J' Над GF (2) эта матрица принимает вид 1111111" 1011100 Н = 1110 0 10’ _0 0 1 О 1 1 1_ В тех проверочных равенствах, которые включают с0, правая компонента равна единице. Существует восемь таких равенств, коэффициенты которых определяются следующим образом: 1111111 0010111 0 10 0 0 1 1 0 0 0 1 1 0 1 1001011 1 10 0 10 1 1010001 0111001 Выбрав третью, четвертую и седьмую строки, получим равен- ства to -I- с, + съ = 0, с0 4- с2 + с3 = 0, с0 + с4 I- с, = 0, образующие искомое множество трех равенств, которые согла- суются в первой координате, содержащей с0. Основываясь на них, получим декодер, изображенный на рис. 13.1. Если перво- начально регистр сдвига содержит принятый вектор, то в случае, когда произошла одна ошибка, после семи сдвигов он будет со- держать исправленное кодовое слово.
454 ГЛ. 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ Рис. 13.1. Мажоритарный декодер для симплексного (7, 3)-кода. Конечно, для исправления одной ошибки необходимо исполь- зовать лишь два из приведенных выше проверочных равенств. Добавление третьего равенства приводит к декодеру, основанному на правиле решения «два из трех», а не на правиле «два из двух». До тех пор пока происходят одиночные ошибки, оба декодера ведут себя одинаково, но, если произошло две ошибки, поведение декодеров становится различным. Декодер «два из трех» испра- вляет несколько большую долю конфигураций из двух ошибок, хотя оба декодера не исправляют или неправильно исправляют большинство конфигураций из двух ошибок. При желании можно потребовать, чтобы удовлетворялись все три проверочных ра- венства. Тогда декодер будет исправлять все одиночные и обнару- живать все двойные ошибки. Можно превратить мажоритарный декодер в декодер Меггитта. Напомним, что синдромный многочлен определялся или как «W - или как sW = RtM Через проверочную матрицу синдромный многочлен линейно связан с принятым многочленом г (х). Запишем каждый коэффи- циент в виде Sj = £ j — 0, ..., n — k—1. Любое другое проверочное равенство получается как некоторая линейная комбчнация сгрок Н, т. е. как линейная комбинация компонент синдрома. Поэтому все проверочные соотношения,
1S.S. СХЕМЫ МАЖОРИТАРНОГО ДЕКОДИРОВАНИЯ 4бб используемые мажоритарным декодером, могут быть получены как линейная комбинация коэффициентов синдрома декодера Меггитта. Таким образом, любой мажоритарный декодер для циклического кода может быть реализован как декодер Меггитта. Симплексный (7,3)-код является циклическим, и его порождаю- щий многочлен равен g (х) = л* |- № -J- х hl- Пусть ' («) = Rs № [Л W1 = = I I х-1-1) I Г, (X3 — х‘ , х)- -I X I I)- Это соотношение можно переписать в виде [So St s2 S3] == [Г'о V, t>2 vs vt vb q,] "1 1 1 О" 0 111 110 1 10 0 0 0 10 0 0 0 10 0 0 0 1 Для мажоритарного декодирования будем использовать сле- дующие проверочные равенства: с0 + Q -|- съ = 0, + с® + Q = 0, Со 4- са + св = 0. Выражение в левой части первого из них совпадает с % второе — с $), а третье — с % 4- s3. На рис. 13.2 показан мажоритарный декодер, реализованный как декодер Меггитта. Мажоритарные декодеры даже без каких-либо дополнительных модификаций декодируют много ошибочных конфигураций и вне радиуса упаковки кода. Это может показаться заманчивым пре- имуществом мажоритарных декодеров. Однако, как правило, мажо- ритарное декодирование применяется для кодов, у которых ра- диус упаковки мал по сравнению с другими кодами с сопостави- мыми скоростью и длиной. Способность декодера декодировать вне радиуса упаковки можно рассматривать лишь как частичную компенсацию за выбор кода с худшими характеристиками. Для того чтобы мажоритарный декодер, реализованный как декодер Меггитта, исправлял большое число конфигураций оши- бок вне радиуса упаковки, необходимо добавить цепь обратной
466 ГЛ. I Я. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫ Al МЕТОДОМ Рис. 13.2. Декодер Меггитта для симплексного (7,3)-кода. связи; такая цепь показана на рис. 13.2. Если декодирование вне радиуса^ упаковки не играет особой роли, то цепь обратной связи можно опустить. 13.3. АФФИННЫЕ ПЕРЕСТАНОВКИ ДЛЯ ЦИКЛИЧЕСКИХ КОДОВ Циклический сдвиг любого кодового слова в циклическом коде дает другое кодовое слово. Следовательно, весь код инвариантен относительно циклического сдвига. Циклический сдвиг является простым примером перестановки. Циклический код может быть инвариантен и относительно других перестановок. В этом пара- графе мы покажем, что многие циклические коды, будучи расши- ренными, становятся инвариантными относительно большой группы перестановок, называемых аффинными. Аффинные пере- становки могут использоваться для построения кодов, для их иссле- дования или для построения декодеров, в частности мажоритар- ных. Пусть — циклический код длины п — д'” — 1, порождае- мый многочленом g (х), и пусть — код длины дт, получаемый из добавлением к каждому кодовому слову 4F символа проверки на четность. Иначе говоря, если (сп_,, .... clf с0) — кодовое слово в то (cn_lt ...» clt с0, с»,) — кодовое слово в ‘ё’; здесь с» — символ проверки на четность, определяемый как с« — —(Gi-e + + ... + Q + Со). Чтобы перенумеровать компоненты кодового слова, будем использовать GF (дт) как множество локаторов. Ненулевые эле- менты GF (дт) суть а*, где а — примитивный элемент. Нулевой
1S.3. АФФИННЫЕ ПЕРЕСТАНОВКИ 467 элемент 0 в GF (qm) будем обозначать как а~. Перенумеруем следующим образом компоненты вектора » <i» G» сте) из элементами GF (</’"): компонента нумеруется локатором а°°, а компоненты ct при 0 < I < qm — 1 — локаторами of. Группа перестановок называется транзитивной, если для любой пары локаторов (X, У) в кодовом слове существует пере- становка в группе, меняющая их местами; при этом возможно также изменение порядка других локаторов. Группа перестановок называется дважды транзитивной, если для любых двух пар локаторов ((Хп У,), (Хг, Уа)), где Хх =/= Х2, Ух=/=У2, суще- ствует такая перестановка в группе, которая меняет местами локаторы как в первой, так и во второй паре. При этом также возможно изменение порядка других локаторов. Аффинная перестановка — это перестановка, которая пере- водит компоненту с локатором X в компоненту с локатором: аХ + + Ь, где а и Ь — любые фиксированные элементы из GF (q"1) и а =/= 0. Множество всех аффинных перестановок образует группу относительно композиции, так как: 1) если локатор X переходит в локатор У = аХ -|- Ь и локатор У переходит в локатор Z = — a'Y -|- то X переходит в Z — а’аХ + а’Ь 4- Ь' и 2) пере- становка йГ*Х — а~*Ь обратна перестановке аХ + Ь. Группа аффинных перестановок дважды транзитивна, так как при задан- ных парах (Х±, Ух) и (Х2, У2) система уравнений У, = йХх 4- Ь, У2 = аХ2 4- Ь решается относительно а и b единственным образом. Теорема 13.3.1- Любой код длины п = qm, инвариантный относительно группы аффинных перестановок, можно преобразо- вать в циклический код, отбросив позицию с локатором а“. Доказательство. Пусть а — примитивный элемент, используе- мый для задания локаторов. Перестановка У = аХ аффинна. Но опа представляет собой циклический сдвиг всех локаторов, кроме а00. Следовательно, код является циклическим. □ Несколько труднее сформулировать обратные условия, т. е. условия, при которых можно расширить циклический код и полу- чить код, инвариантный относительно группы аффинных пере- становок. Такие циклические коды, о которых пойдет речь в тео- реме 13.3.4, называются циклическими кодами, обладающими свойством дважды транзитивной инвариантности. Этой теореме будет предшествовать небольшое общематематическое отступление. Определение 13.3.2. Пусть / — целое число в ц-ичном раз- ложении: ! h‘-'м ' h<f l /m-i?"’1. О </,<?.
468 гл. 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ Отличное от j целое число k в g-ичпом разложении: k = kQ — ktq - kzq- ‘ ktn_lq'n—', 0 C kt < q, называется q-ичным потомком числа j, если kt < ji, I = 0, ..., m - 1. Выяснить, является ли данное целое k ф-ичным потомком це- лого /, может оказаться затруднительным. В случае когда q равно простому числу р, для нахождения простого эквивалентного условия, записанного через сочетания будет использоваться приведенная ниже теорема (напомним, что при т > п принято считать ( ” ) = 0). Теорема 13.3.3 (теорема Лукаса). Пусть р — простое число, и пусть i = /о '-ЙРЧ-----Hm-lP"-1 и k = ----1-ЙтлР’'-1 — р-ичные разложения двух произвольных целых чисел j и k. Тогда справедливо следующее соотношение’. Кроме того, (') равно нулю по модулю р тогда и только тогда, когда k не является р-ичным потомком числа j. Доказательство. Второе утверждение следует из первого, так как ( £ ) при всех i не равно нулю по модулю р тогда и только тогда, когда k является р-ичным потомком /. Необходимо дока- зать лишь первое утверждение теоремы. Доказательство состоит в разложении многочлена (1 + ЛИ двумя различными способами и последующем приравнивании коэффициентов при одинаковых степенях х. Используя теорему 4.6.10, можно записать следующее тождество над GF (р): (1 _|_х)р*’ = 14-x₽f. Тогда для произвольного j имеем (| |- х)/ = (1 L л)/о+/«,’+^Р’1 = = (I л).-. (I Л')Ь (I Ь ЛУ- ... (I |
t3.S. АФФИННЫЕ ПЕРЕСТАНОВКИ 459 Используя биномиальное разложение обеих частей этого равен- ства, перепишем его в следующем виде: =[ МИ [ МИ- где каждое kt не больше и поэтому меньше р. Далее приравняем коэффициенты при к* и получим w р). где суммирование ведется по всем m-совокупностям (k0, klt ... A»n_i). в которых каждая компонента меньше р и k = k0 + kjp I Аар2 |-1- Выражение в правой части этого равенства представляет собой р-ичное разложение k, являющееся единственным. Поэтому сумма сосгоит лишь из одного члена и вырождается в равенство (mod₽)- Эго завершает доказательство теоремы. □ Теперь мы можем охарактеризовать те циклические коды, кото- рые инвариантны относительно группы аффинных перестановок. В формулировку приведенной ниже теоремы входят условия, которым должны удовлетворять корни порождающего многочлена. Порождающие многочлены g(x) с корнем а0 из рассмотрения исключ ются, так как в противном случае выражения становятся неопределенными. Те рема 13.3.4. Пусть а. — примитивный элемент поля GF (cf”) характеристики р, пусть Ч? — циклический код длины q" — 1, порождаемый многочленом g(x), у которого а” не является корнем, и пусть Ч? — расширенный код, получаемый из него доба- влением символа проверки на четность. Расширенный код инва- риантен относительно группы аффинных перестановок тогда и только тогда, когда из того, что ak — корень g (х), a k’ — ненулевой р-ичный потомок k, следует, что a.k' также является корнем g (х). Доказательство. Пусть X’ = аХ + Ь означает аффинную пере- становку. Пусть Xi, Xit ..., Xv—локаторы ненулевых компо- нент кодового слова с, и пусть значения этих компонент обозна- чены через У,, У2, , Уу- Пусть, далее, Х7, Х2, .... X'v озна-
460 ГЛ. 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ чают локаторы ненулевых компонент кодового слова при аффинной перестановке, т. е. X't == сХ< 4- Ь. Вначале предположим, что если а* корень g(x), то при лю- бом /г', являющемся ненулевым р-ичным потомком k, ак' будет корнем g(x). Необходимо доказать, что перестановка кодового слова порождает другое кодовое слово. Кодовый многочлен удовлетворяет соотношению с (х) = = g (х) d (х), а добавленный символ равен с<х = —(cn-i ]- г 4-с0). Пусть С} = с (а‘) — Тогда С,- = L «ч»" — £ YtX{ = О при всех /, для которых о.' является корнем g (к). Заметим, что в локаторе а“ может быть ненулевой символ. Но ато есть пред- ставление нулевого элемента; поэтому соответствующий Xi яв- ляется нулем. Даже в тех случаях, когда слагаемое YtX{ при равном нулю Xt не входит в определение Q, можно считать его входящим, так как оно равно нулю. Переставленное слово с' является кодовым, если выполняется соотношение с» -|- с„ । — • -*г со = О, остающееся, очевидно, справедливым и после перестановки, и если, кроме того, с; - в г,х',' = о при всех j, для которых а! является корнем g(x). Рассмотрим такое /: С/ = I'l (ах, | Ц' = = S У, t (I) “"A - i (i) />'-Vct. По теореме 13.3.3 равно пулю по модулю р, если k не яв- ляется р-ичным потомком /; для тех же k, которые являются р-ич- ными потомками /, по предположению Q равно нулю. Следова- тельно, в каждом слагаемом суммы или равно нулю, или Ch равно нулю. Поэтому С/ равно нулю и переставленное кодовое слово снова является кодовым словом. Теперь докажем обратное. Предположим, что расширенный код инвариантен относительно группы аффинных перестановок. Тогда каждое кодовое слово удовлетворяет равенству с: = £ У/ (аХ/ ; ну = о
tS-4. КОДЫ, ОСНОВАННЫЕ НА ПЕРЕСТАНОВКАХ 461 для всех а и b и всех /, для которых al является корнем g (х). Как н ранее, имеем с,= S ('liZ-Vc, = о. *=0 ' ' Пусть К — число р-ичных потомков /; перенумеруем их числами th при / — 1, К- Запишем сумму по ним в виде С,= £(/,)»' *'а*'С,,-0. 1^0' *' ' Пусть теперь а и b произвольны. Полагая b равным 1, а о пооче- редно равным первым К последовательным степеням «“получаем Эта матрица — матрица Вандермонда. Она обратима, так как все ее столбцы различны. Поэтому Ckl = 0 при i = 1, ..., К. Следовательно, а?1 — корень g (х) при всех kt, являющихся потомками / в р-ичном представлении. Эго завершает доказатель- ство теоремы. □ 13.4. ЦИКЛИЧЕСКИЕ КОДЫ, ОСНОВАННЫЕ НА ПЕРЕСТАНОВКАХ Теперь опишем метод построения некоторых допускающих одно- шаговое мажоритарное декодирование кодов, основанный на группе аффинных перестановок (см. § 13.3). Этот метод может применяться для нахождения циклических кодов над GF (q) длины п при условии, что п — составное число, а именно что п = = L- J. Кроме того, необходимо предположить, что L не сравнимо с нулем по модулю р, где р — характеристика GF (q). Это условие всегда удовлетворяется для тех л, которые являются примитив- ной длиной или ее делителем. Выберем длину кода л примитивной и составной; л - qm — 1 и л = L- J. Тогда *" 1 = (х7)' - 1 - -= (xJ , Хм».-Ч+... ; х’ |. 1)1.
462 ГЛ. 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ Обозначим второй член этого разложения через а (х), так что х” — 1 = (xJ — 1) а (х). Ненулевые элементы GF (qm) являются корнями или х' — 1, или а (х). Если а — примитивный элемент GF (д’"), то al J ~ 1 и aL^~2i, а........... aL, 1 являются J корнями xJ— —1. Поэтому при каждом /, не кратном L, а.’ является корнем а (х). Определим многочлен Я (х), такой, что взаимный ему много- член является проверочным многочленом рассматриваемого кода. При всех j, которые не кратны L и g-ичный потомок которых не кратен L, а’ является корнем Я (х). Так как каждый корень Я (х) является корнем а (х), многочлен а (х) кратен Я (х). Пусть Я (х) — многочлен, взаимный к Я (х), и пусть g (х) определяется соотношением g(x)h(x) =*"- 1. Мы получили два циклических кода, являющихся дуальными. Пусть — циклический код с порождающим многочленом g (х), а — циклический код с порождающим многочленом Я (х). По определению Я (х) и по теореме 13.3.4 — циклический код, обладающий свойством дважды транзитивной инвариантности. Поэтому можно расширить #-*- до кода , который_является инвариантным относительно группы аффинных перестановок. Составим J проверочных равенств для циклического кода ®', согласующихся в одной координате. Так как код циклический, он мажоритарно декодируем и его минимальное расстояние не меньше J 4- 1. Найдем указанные проверочные равенства для кода оперируя с дуальным кодом Как мы видели ранее, а,' является корнем многочлена а (х) = xJ <£-ч 4- xj <г-2) 4-4- х14-1 тогда и только тогда, когда / не кратно L. Следовательно, а (х) кратно Я (х) и является кодовым словом дуального кода. Поэтому все элементы множества многочленов (а (х), ха (х), х*а (х), .... л7 1 a (x)J являются кодовыми словами Вес Хэмминга каждого^ из указанных кодовых слов равен L, и из рассмотрения а (х) следует, что никакие два из них не имеют общей ненулевой ком- поненты. Теперь найдем другое множество кодовых слов из®>±, которое может использоваться для задания проверок кода t?. Временно припишем в добавочный_символ. Впоследствии этот символ будет служить своеобразной точкой опоры при выписывании J согласующихся проверочных равенств. Чтобы этот добавленный символ можно было передвигать внутрь кодового слова, допустим
13.4. КОДЫ, ОСНОВАННЫЕ НА ПЕРЕСТАНОВКАХ 463 возможность выбрасывания компонент кода, включая и вновь добавленный символ. К каждому из кодовых слов этого множества добавим символ проверки па четность Это дает J кодовых слов в расширенном коде®1-1- длины it = п + 1 - Если L не сравнимо с нулем по моду- лю р, то добавленный символ отличен от пуля и одинаков для каж- дого из J построенных кодовых слов. Разделим кодовые слова на этот добавленный символ и получим новое множество кодовых слов. Таким образом мы установили существование в ®>х мно- жества 1 кодовых слов со следующими свойствами: 1) каждое кодовое слово из множества J кодовых слов имеет единицу в локаторе а00; 2) одно и только одно кодовое слово из множества J кодовых слов имеет ненулевую компоненту в локаторе а' при / — 0, 1, ... ...» п — 1. Теперь мы можем использовать теорему 13.3.4. В самом деле, предыдущие определения были выбраны таким образом, чтобы можно было применить эту теорему. Так как код ®>| обладает свойством дважды транзитивной инвариантности, он инвариантен относительно любой аффинной перестановки. В частности, выберем У = аХ 4- а”-’. Эта перестановка переводит множество кодовых слов в дру- гое множество кодовых слов обладающее следующими свой- ствами: 1) каждое кодовое слово из вновь построенного множества J кодовых слов имеет единицу в локаторе а"-1; 2) одно и только одно кодовое слово из вновь построенного множества J кодовых слов имеет ненулевую компоненту в лока- торе а> при j = оо, 0, 1, ..., п —2. Теперь можно опустить локатор и получить множество кодовых слов в которое согласуется в координате п — 1. В самом деле, эти J кодовых слов ортогональны кодовым словам кода # и поэтому образуют проверочные равенства. Полученные J проверочные равенства согласуются в координате п — 1, и код является циклическим. Теперь мы можем доказать следующую теорему. Теорема 13.4.1. Пусть п = у" — 1 может быть представлено в виде п = J- L. Предположим, что порождающий многочлен циклического кода Ч? над GF (у) строится по следующему правилу. Для каждого целого числа j элемент ai является корнем много- члена g (х) тогда и только тогда, когда j или любой его ц-ичный потомок кратны числу L Тогда Ъ является мажоритарно
464 ГЛ- 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ декодируемым кодом над GF (q) с минимальным расстоянием не меньше J. Доказательство. По определению Н (х) a~f не является кор- нем g (х) тогда и только тогда, когда а1' является корнем Й (х). Поэтому Й (х) имеет корень а' тогда и только тогда, когда ни /, ни любой его д-ичный потомок не являются ненулевыми кратны- ми L. Следовательно, как мы видели при рассмотрении дуального кода, для каждой координаты имеется J согласующихся в ней проверочных равенств. Код является кодом над GF (q), если каждый сопряженный с корнем многочлена g (х) элемент также является корнем этого многочлена. Если а является корнем g (х), то, поскольку / кратно L, qj кратно q- L (по модулю £J), и, следовательно, аг также корень g (х). Если же аг> является корнем g (х) вследствие того, что некоторый ф-ичный потомок /’ числа / кратен L, то <?-ич- ный потомок qj' (mod LJ) числа qj (mod £J) кратен qL (mod LJ). □ Проиллюстрируем теорему простым примером над GF (2). Так как х15 — 1 = (х® — 1) (х,а 4- X® -I- X® |- X® I- 1) = = (х® — 1) (Х,С -I X® I 1), мы можем выбрать или J = 3 и L == 5, или J = 5 u L ~ 3, со- ответственно получив код, исправляющий одиночные ошибки, или код, исправляющий двойные ошибки. Построим код, исправляю- щий одиночные ошибки. Ненулевые кратные 5 равны 5 и 10; число 5 является двоичным потомком чисел 7 и 13; число 10 является двоичным потомком чисел 11 и 14. Следовательно, корнями й (х) являются а, а2, а8, а4, а®, а8, а® и а’2, где а — примитивный элемент поля GF (16), а корнями g (х) являются а, а®, а4, а5, а8, а10 и а°. Следовательно, g (-*-') = (х — 1) (х — а) (х — а2) (х — а4) (х — а®) (х — а8) х X (х — а10) = х7 h х® — х + 1, и код имеет восемь информационных битов. В табл. 13.1 приведены параметры некоторых из рассмотрен- ных выше кодов, а также соответствующих кодов БЧХ. В каждом случае приведено минимальное расстояние, полученное из соот- ветствующих границ. Действительное минимальное расстояние может быть больше. Из таблицы видно, что в нескольких случаях выбор мажори- тарно декодируемого кода но приводит к ощутимому уменьшению k, хотя в большинстве случаев оно значительно. Важно, однако, понять, что мажоритарный декодер прост и быстр и, как правило,
13.5. СВЕРТОЧНЫЕ КОДЫ 46Б Таблица 13.1 Сравнение параметров некоторых двоичных кодов, декодируемых в один шаг, с параметрами кодов БЧХ Мажоритарно йекойирцемые БЧХ к к ^БЧХ 15 8 1 It 61 48 3 16 39 <1 12 18 -45 547 206 5 7.19 5 174 17 191 17 16 91 51 20 47 85 5| | 4X4 7 118 71 241 7 1 11123 960 1 1011 812 971 | | 78(1 11 861 11 НО 91 598 91 К) 123 141 может исправлять большое число конфигураций более чем из J ошибок. Поэтому перед окончательным выбором применяемого кода полезно провести моделирование. 13.5. СВЕРТОЧНЫЕ КОДЫ С МАЖОРИТАРНЫМ ДЕКОДИРОВАНИЕМ Некоторые сверточные коды могут декодироваться мажоритарным декодером. Точно так же, как и в случае блоковых кодов, эти декодеры просты и чрезвычайно быстры, но применяемые коды не так мощны, как другие. Предпочтительнее использовать коды с лучшими характеристиками. Мажоритарно декодируемые коды декодируются путем нахо- ждения большинства голосов в некоторой совокупности синдро- мов или в некоторой совокупности линейных комбинаций синдро- мов. Несколько мажоритарно декодируемых сверточных кодов найдено путем поиска на ЭВМ. Некоторые из них затабулировапы ниже. Сверточный (12,6)-код, порождаемый кодером, представленным на рис. 12.3, и декодируемый декодером, представленным на рис. 12.20, может декодироваться и мажоритарно. Чтобы проде- монстлровать природу мажоритарных декодеров, мы опишем два
466 ГЛ. 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ различных мажоритарных декодера для этого кода. На рис. 13.3 приведены синдромы для всех конфигураций одиночных ошибок. Таблица содержит модифицированные синдромы, вычисленные по двум различным правилам. Заметим, что для обеих правил модифицированные синдромы согласуются в первой позиции. Кснфигурации Синдромы Модифицированные синдромы Правило t Модифицированные . синдромы Правило a .ч s4 % sj s1 sD si sj sj sj S3 S, s] sj) одиночных ошибок 00000000000 1 1 1 0 0 < ! 1 I 1 1 I 000000000010 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 I 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 00000000 1000 0 0 0 0 1 0 0 0 I 0 0 1 0 0 000000010000 I 0 0 1 0 0 0 0 0 0 I 0 0 0 000000100000 0 0 0 1 0 0 0 1 0 0 0 0 0 0 000001000000 0 0 I 0 0 0 I 0 0 0 0 0 I 0 000010000000 0 0 T 0 0 0 1 0 0 0 0 0 1 0 000100000000 0 I 0 0 0 0 0 0 1 0 0 1 0 (1 001000000000 0 0 0 0 0 0 0 1 0 0 1 0 0 010000000000 0 0 0 0 0 0 1 0 0 1 0 0 1) 100000000000 1 0 0 0 0 0 0 1 0 0 1 0 0 0 Правили 1 Правило Z sj, =$<, So=Sb Sj=S| tS4 si -s. S’2=32+S3 si=s,+J« S3 = Sj sj 'Ji Рис. 13.3. Модифицированные синдромы для сверточного (12, 6)-кода. Рис. 13.4. Мажоритарный декодер для свсртрциого (12,6)-кода.
I3.s. свЁРгочНЫе Коды 467 Информационные символы Синдромы Дбршпная связь Пороговая яогика- 3 или 4 входных, символа, равны «Винице? Рис. 13.5. Другой мажоритарвый декодер. Так как в обоих случаях используются четыре модифицирован- ных синдрома, ошибка в первой позиции может быть исправлена даже в том случае, когда произошла вторая ошибка. На рис. 13.4 изображен мажоритарный декодер, основанный на первой сово- купности модифицированных синдромов. Этот декодер исправляет все конфигурации из двух ошибок и проще декодера на рис. 12.20. Однако он обладает существенным недостатком, присущим мно- гим мажоритарным декодерам сверточных кодов и состоящим в следующем. Некоторые конфигурации более чем из двух ошибок будут удовлетворять проверке по большинству и приводить к не- правильному исправлению. Для части из них сигнал обратной связи будет изменять синдром таким образом, что даже при от- сутствии дальнейших ошибок он будет воспроизводить некоторый синдром. Например, при отсутствии последующих ошибок син- дром 011010 не приводит к исправлению ошибок, следующий за ним синдром 001101 приводит к исправлению одной ошибки, а следующий за ним синдром 011010 возобновляет цикл. Такое явление называется обычным распространением ошибок. Оно при- суще мажоритарному декодеру и может наступать даже для не- катастрофического кода. В нормальном синдромном декодере обычное распространение ошибок не может иметь места. На рис. 13.5 изображен другой мажоритарный декодер того же кода, но уже основанный на второй из представленных на рис. 13.3 совокупностей модифицированных синдромов. В таком декодере не происходит обычного распространения ошибок. Этот пример показывает, что в некоторых мажоритарных декодерах сверточных кодов происходит обычное распространение ошибок, которого, впрочем, можно избежать путем тщательного выбора
468 ’Л. 13- ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ
IB.6. ОБОБЩЕННЫЕ КОДЫ РИДА—МАЛЛЕВЛ 469 модифицированных синдромов. Если для выбранного кода это невозможно, то следует использовать нормальный синдромный декодер. Краткий список сверточных кодов, которые могут быть деко- дированы мажоритарно, приведен на рис. 13.6. Эти коды получены поиском на ЭВМ. 13.6. ОБОБЩЕННЫЕ КОДЫ РИДА—МАЛЛЕРА Коды Рида — Маллера первоначально были введены нами как двоичные; теперь же мы перейдем к изучению кодов Рида—Маллера над произвольным полем Галуа GF (</). Хотя класс обобщенных кодов Рида—Маллера (ОРМ) содержит подклассы мажоритарно декодируемых кодов, он также содержит большое число кодов, которые не имеют практического интереса. Бее они описываются одной и той же общей теорией. ОРМ-коды, включая двоичные, будут введены расширением циклического кода, называемого циклическим ОРМ-кодом. В на- стоящем параграфе мы ограничимся обсуждением циклических ОРМ-кодов с примитивной длиной — 1 и ОРМ-кодами, полу- чаемыми из них добавлением символа проверки на четность. Корни кодовых слов определяются довольно сложным и даже несколько загадочным образом. Определим вес целого числа в /у-ичном разложении. Определение 13.6.1. Пусть / — целое число, (/-ичное разложе- ние которого имеет вид /=Л ГМ + ft?2 ' I h-ilf-’ Весом j в q-ичном разложении называется сумма (в смысле суммы целых чисел) (/) = /о + /1 + / Т - + /и-1 Определение 13.6.2. Циклическим ОРМ-кодом г) порядка г и длины п = (f1 — 1 над полем GF (q) называется циклический код, порождающий многочлен g (х) которого имеет корни а' при всех / = 1, .... (Г1 — 1, таких, что О < wq (j) « (q — 1) tn — г — 1. Расширение этого циклического кода до кода длины п = </г- путем добавления символа простой проверки на четность называет- ся ОРМ-кодом порядка г. ’) Альтернативное определение заключается в выборе д (х) с корнями а1, где j удовлетворяют соотношению 0 (/) ^ (д • I) m — г- 1. по сравне- нию с принятым нами определением первое строгое неравенство заменено не- строгим. Тогда ОРМ-код получается удлинением циклического ОРМ-кода путем добавления вектора, состоящего из одних единиц, к С, а ле к Н При нашем определении коды Хэмминга являются циклическими ОР.М-кодами.
470 ГЛ. 13. ДЕКОДИРОВАНИЕ МЛЖОРИТАрНь1м МЕТОДОМ Из определения 13.6.1 следует, что j и jq (по модулю qm — I) имеют одинаковый вес в g-ичном разложении. Поэтому если 0 является корнем g (х), то и все сопряженные с 0 элементы явля- ются корнями g(x), и определение 13.6.2 в самом деле приводит к коду над GF (q). При q = 2 ОРМ-код сводится к коду, эквивалентному коду Рида—Маллера; это тот же код, но с перестановкой компонент (поэтому он и называется обобщенным кодом Рида—Маллера). Этот код при мажоритарном декодировании может исправлять 2m-r i — ] ошибок. Циклические коды Рида—Маллера порядка т — 2 являются кодами Хэмминга, так как в них все j, для кото- рых w2 (j) — 1, являются корнями g (х); это /, равное 1 или числам, сопряженным с 1. Коды Хэмминга служат простейшим примером ОРМ-кодов. Поучительно построить некоторые двоичные ОРМ-коды. Выбе- рем т = 5 и г — 2. Длина этого кода равна 31, и при мажоритар- ном декодировании он может исправлять три ошибки. Провероч- ные частоты кода маркированы всеми отличными от пуля j, для которых (/) с 2, т. е. теми /, двоичное представление которых содержит не более двух единиц. Это двоичные числа 0 0 0 0 1 0 0 0 1 1 0 0 10 1 и все их циклические сдвиги. Поэтому проверочные частоты по- являются при / = 1, 3 и 5 и при всех сопряженных с ними числах. Этот циклический ОРМ-код второго порядка идентичен (31,16,7)- коду БЧХ над GF (2). Расширение этого циклического кода пред- ставляет собой (32,16,8)-код ОРМ. Далее выберем т = 5 и г = 1. Этот код может исправлять мажоритарным способом семь ошибок. Индексы проверочных частот теперь удовлетворяют соотношению (У) < 3. Эти индексы записываются двоичными числами 0 0 0 0 1 0 0 0 11 0 0 10 1 0 0 111 0 10 11
13.В. ОБОБЩЕННЫЕ КОЛЫ РИДА-МАЛЛ ЕРА 471 и всеми их циклическими сдвигами. Поэтому проверочные частоты появляются при / — 1, 3, 5, 7 и II и при всех сопряженных с ними числах. Получаемый циклический ОРМ-код первого поряд- ка является (31,6,15)-кодом, а его расширение представляет собой (32,6,16)-код ОРМ. Так как 9 принадлежит тому же классу со- пряженных элементов, что и 5, а 13 сопряжено с 11, циклический код идентичен (31,6.15)-коду БЧХ. Отсюда следует, что как к (31,16)-коду БЧX, так и к (31,6)-коду БЧХ применимо мажоритарное декодирование. Иная ситуация возникает при т -- 6 и г = 2. Этот код Рида—Маллера при ма- жоритарном декодировании может исправлять семь ошибок. Ин- дексы проверочных частот удовлетворяют соотношению Ч, (j) < 3. Эти индексы записываются двоичными числами 000001 0 0 0 0 1 1 000101 0 0 0 1 1 1 001001 0 0 10 1 1 0 0 1 10 1 0 10 10 1 и всеми их циклическими сдвигами. Поэтому проверочные частоты появляются при / = 1,3, 5, 7, 9, 11, 13 и 21 и при всех сопряжен- ных с ними числах. Этот циклический ОРМ-код второго порядка является (63,22,15)-кодом. Существует также (63,24)-код БЧХ, исправляющий семь ошибок. Указанный двоичный ОРМ-код имеет меньшую скорость, но зато может быть декодирован мажо- ритарно. Расширением этого циклического ОР.М-кода является (64. 22, 16)-код ОРМ. Определим циклический ОРМ-код через спектр кодовых слов. Циклический ОРМ-код порядка г и длины п = q" — 1 над полем GF (q) представляет собой множество слов, спектральные компо- ненты С] которых равны нулю при всех /, удовлетворяющих не- равенству 0 < а», (/) с (q — I) т — г — 1. Кодирование в частотной области производится следующим обра- зом: спектр во всех указанных частотах полагается равным нулю, оставшиеся частоты заполняются информацией в соответствии с ограничениями сопряженности, а затем производится обратное
472 гл. 13 ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ методом преобразование Фурье. Однако конструкция кодера во временной области обычно проще. Минимально? расстояние циклических ОРМ-кодов должно удов- летворять границе БЧХ. Эту границу устанавливает следующая теорема. Теорема 13.6.3. Циклический ОРМ-код над GF (2) порядка г и длины п = qm — 1 представляет собой подкод кода БЧХ с кон- структивным расстоянием d = 2т~г — 1; его минимальное рас- стояние не меньше указанного конструктивного. Доказательство. В двоичном представлении 2т ~г — 1 запи- сывается (т — г)-разрядпым двоичным числом, состоящим из од- них единиц. Числа, менылие 2"'-г — 1, имеют менее т — г единиц. Поэтому w2 (j) < т — г — 1 при / = 1, 2, .... 2т~' — 2 и ад яв- ляются корнями g(x) при j = I, 2, .... 2т~г —2. Следовательно, этот код является подкодом кода БЧХ с конструктивным расстоя- нием d — 2т ~Т — 1. □ Недвоичиый циклический ОРМ-код порядка г также пред- ставляет собой подкод кода БЧХ, конструктивное расстояние ко- торого равно q'n~Т — I, если г меньше q — 1. Если последнее условие не выполняется, то выражение для конструктивного расстояния несколько сложнее, что отражено в следующей тео- реме. F Теорема 13.6.4. Пусть г — (q — 1) Q -|- R, где 0 с R <Zq — — 1. Циклический ОРМ-код над GF (q) порядка г и длины п = — cf" — 1 представляет собой подкод кода БЧХ над GF (q) с кон- структивным расстоянием его минимальное расстояние не меньше указанного конструктив- ного. Доказательство. Рассмотрим «у-ичнос разложение числа (q — R)q'n-''i-i _ i Максимальный значащий символ этого чис- ла равен q — R — 1; остальные т — Q — 1 символов равны q — 1. Следовательно, ((<7-Я)Ч'"-0 = (? I) \-q-R 1 = -(q- \)m-r. Но тогда ф-ичные веса всех /, меньших (q — R) — 1, меньше (q — 1) т — г. Следовательно, при всех /, удовлетворяю- щих неравенству 0 < j < (q — R)‘fn~Q—*— 2, а' являются кор- нями порождающего многочлена, а циклический ОРМ-код яв- ляется подкодом кода БЧХ с теми же корнями порождающего многочлена. Это завершает доказательство. □
13.6. ОБОБЩЕННЫЕ КОДЫ РИДА—МАЛЛ ЕРА 473 ч ' Ч 4 Ч I1 т г <л. м 46ЧХ т г (и. К) <1БЧХ »и । 1л Ы 4ЬЧХ 4 1 (15 s 7 2 1 115. 3) Н 1 I ((,» )) ss" 4 2 (is |П 1 2 2 |15.6) 7 ’ ’ (63.6) 47 S 1 (31.61 IS 2 3 <15. 11» ? 2 3 ((.3. |<» 19 s 2 (3| (6) 7 2 4 (Г. 13) 2 2 4 (63 IS) 3| S 3 (31.26) 3 3 1 (63.4) 47 2 S (63 21) 23 6 1 (63.7) 31 3 2 (63. К» 3| 2 6 (63.28) |5 6 2 (63.22) IS 3 3 (63.20) IS 2 7 (61. 16) 7 6 3 (63.4.2) 7 з 4 (63 12) II 2 8 (63.43) 6 6 4 (63 57) 3 3 5 (63.44) 7 2 9 (63.49) 5 7 1 (127. К) 63 3 6 (63,54) 3 2 10 (63. S4) 4 7 2 (127.29) 31 3 7 (63.60) 2 2 11 (63.58) 3 7 3 (127.64) 15 4 1 (255,5) 191 2 12 (63.61) 2 7 4 (127,99) 7 4 2 (255.15) 127 3 1 (511.4) 447 7 5 (127,120) 3 4 3 (255,35) 6.3 3 2 (511.10) 383 Б 1 (255.9) 127 4 4 1255,66) 47 3 3 (511.20) 319 8 2 (255,37) 63 4 5 (255, 106) 31 3 4 (511.35) 255 8 3 (255.93) 31 4 6 (255. 150) 15 3 5 (511,56) 191 8 4 (255. 163) 15 4 7 (255.190) 11 3 6 (511.84) 127 8 5 (255,219) 7 4 8 (255,221) 7 3 7 (511 120) 63 8 6 (255,247) 3 4 9 (255.241) 3 3 8 (511.162) 55 9 1 (511.10) 255 4 10 (255,251) 2 3 9 (511.208) 47 9 2 (511.46) 127 3 10 (511.256) 39 9 3 (511, 130) 63 3 Ц (511. 304) 31 9 4 (511.256) 3| 3 12 (511. 350) 23 9 5 (511.382) 15 3 13 (511.392) 15 9 6 (511,466) 7 3 14 (511.428) 7 9 7 (511,502) 3 3 15 (511.456) 6 3 16 (511,477) 5 3 17 (511.492) 4 3 18 (511,502) 3 3 |9 (511.508) ’ 2 Рис. 13.7. Параметры некоторых обобщенных кодов Рида—Маллсра. Характеристики некоторых обобщенных кодов Рида—Маллера представлены на рис. 13.7. При q = 2 коды эквивалентны кодам Рида—Маллера. Приведенные на рисунке минимальные расстоя- ния в действительности являются определяемыми теоремой 13.6.4 нижними границами минимальных расстояний. Число информа- ционных символов получается подсчетом: так как код опреде- ляется через корни g (х), число проверочных символов находится подсчетом положительных целых чисел, меньших п, для которых (/) « (? — 1) m — г — 1.
474 ГЛ. >3- дькодиРО6АНИЕ мажоритарным Методом Теорема 13.6.5. Код, дуальный ОРМ-коду над GF (q) порядка f и длины п = у"1, эквивалентен ОРМ-коду порядка (q — 1) т — г — 1 и длины п = </”. Доказательство. Пусть # — ОРМ-код, и пусть — цикли- ческий ОРМ-код, получаемый укорочением Ч?. Доказательство теоремы распадается на три шага. На шаге 1 находится порожда- ющий многочлен fi (х) кода 'ё’-1, дуального циклическому ОРМ-> оду На шаге 2 показывается, что проверочные многоч/ены как так и 'ё’1 имеют множителем х — 1. На шаге 3 производится расши- рение кодов и до ОРМ-кодов и ‘ё’1 и показывается, что расширенные коды дуальны. Шаг 1. х? является множеством слов с проверочными часто- тами, которые при всех j удовлетворяют неравенствам О < / < — 1 и 4>Q(j) г —I. При всех указанных j величины ед являются корнями порождаю- щего многочлена g (х). Для удобства мы заменили 0 на — 1 в интервале изменения / (см. примечание на с. 469), так что wq (j) > 2> 0 при всех /. Из теории циклических кодов следует, что для определения проверочных частот дуального кода нужно заменить / на qm — 1 — / и обратить нестрогое неравенство для g-ичного веса, заменив его строгим неравенством. Поэтому индексами провероч- ных частот служат те /, для которых u-9 (<r - I - /) > (<7 - 1) т - г - 1. Но если / = /о 4- М -г /г?® + • I- /m-lfl”-'. то fl" — I — J = (ff — 1 - /о) |- -|_ _ 1 - у;) q -I--Ц- (g - I - jm л) q”~l, что может быть проверено сложением равенств. Следовательно, щ, (qm — 1 — /) = (q — 1) tn — tq, (j). Поэтому дуальный код име- ет проверочные частоты при /, удовлетворяющих неравенству 0 < < / < и w4 (1) = (V — О т — w4 (‘Г ' 1 — /X Г 4- 1 - Соответствующие этим j числа од являются корнями порождаю- щего многочлена R (х) дуального кода <ё’1. Шаг 2. Число а® не является корнем ни g(x), ни Н (х). Следо- вательно, проверочные многочлены как так и содержат множители х — 1.
13.7. ЕВКЛИДОВО-ГЕОМЕТРИЧЕСКИЕ КОДЫ 476 Шаг 3. Теперь расширим и и получим два ОРМ-кода. Проверочные матрицы этих расширенных кодов равны "11... 1 ~ F " I 1 ... 1 " О О и . , Н Н' О о где Н и Н' — проверочные матрицы кодов ‘Й’и Если временно исключить из рассмотрения первые строки каждой из матриц, полу- чим, что все строки левой матрицы ортогональны всем строкам правой матрицы; это вытекает из справедливости этого утвержде- ния для Н и Н'. Далее, строка, целиком состоящая из единиц, орто- гонвльна самой себе, поскольку длина кода кратна q. И наконец, строка, целиком состоящая из единиц, ортогональна любой дру- гой строке обеих матриц, так как х — 1 является делителем обоих проверочных многочленов. Поэтому левая и правая матрицы орто- гональны, а размерности расширенных циклических кодов в сумме равны q"1. Доказательство закончено. □ Непримитивные ОРМ-коды могут быть также определены оче- видным образом. Этим определением мы завершаем параграф. Определение 13.6.6. Пусть b делит (f1— 1. Циклическим не- примитивным ОРМ-кодом порядка г и длины п = (д’” — \)!Ь над полем GF (q) является циклический"код, порождающий много- член которого имеет корни аУ. при всех j = 1, ..., (<jm — 1)/&, таких, что 0 < wQ (bj) < (q - I) m — r — 1. 13.7. ЕВКЛИДОВО-ГЕОМЕТРИЧЕСКИЕ КОДЫ Конечная геометрия — это конечное множество, в котором опре- делены некоторые подмножества, называемые линиями, плоско- стями или аффинными подпространствами и удовлетворяющие некоторому набору аксиом. Конечная геометрия заимствовала свою терминологию у обычной элементарной геометрии. Послед- няя оперирует с множеством, содержащим бесконечное число то- чек, и с подмножествами, известными как линии и плоскости. Каждая конечная геометрия определяется собственным набором аксиом, и в ее рамках можно построить систему теорем. Наиболее важными конечными геометриями являются евклидовы геометрии и проективные геометрии. Эти конечные геометрии могут исполь- зоваться для построения кодов.
476 ГЛ. ,s- ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ Несколько классов кодов, описываемых на языке конечных геометрий, являются мажоритарно декодируемыми — это евкли- дово-геометрические кода и проективно-геометрические коды. Мы введем эти классы кодов, используя терминологию кодов Ряда—Маллера. Первоначально они были введены иначе, а именно на основе теории конечных геометрий; этим и объясняются их на- звания. В этом параграфе мы рассмотрим евклидово-геометриче- ские коды, а в следующем — проективно-геометрические коды. Ограничимся изучением лишь кодов над простым полем GF (р). Существенную роль играют три поля Галуа: GF (р) — поле сим- волов евклидово-геометрического кода, GF (у) — поле символов ОРМ-кода» представляющее собой расширение GF (р) для q = р\ и поле локаторов GF (q'n). Определение 13.7.1. Пусть г, s и т— любые положительные целые числа, и пусть q = ps, где р — простое число. Евклидово- геометрическим кодом над GF (р) порядка г и длины п = q"1 на- зывается код, дуальный подкоду над подполем ОРМ-кода над GF (q) порядка (q — 1) (т — г — 1) и длины cf". Эквивалентное определение: евклидово-геометрическим кодом называется расширение циклического кода над GF (р) (также на- зываемого евклидово-геометрическим кодом) длины (f1 — I; он определяется следующей теоремой. Теорема 13.7.2. Пусть а — примитивный элемент GF (/рт). Евклидово-геометрисческий код над GF (/’) с параметрами г и s и длиной qm — это расширенный циклический код, порождаемый много/леном, корнями которого являются ai при всех j, удозлетво- ряющик неравенствам 0 < / с </" — 1 и О < max щ. (ip1) < — 1) (m — г 1). DC«s Доказательство. Подкод над подполем GF (р) циклического ОРМ кода порядка (q — 1) (т — г — I) обладает порождающим многочленом с корнями а! при 0 < j С q"1 — 1, если / удовлетво- ряет неравенству ».(/) «(»—!) <п —(«—О (т—г—1) —I =(«—!) (г + 1)— I или если этому неравенству удовлетворяет любое /?-сопряженное с / число. Обратно, а.1 является корнем проверочного многочлена h (х), если 0 (г + о — I для всех j', которые являются /J-сопряженными с j числами. Но, согласно теории циклических кодов, порождающий многочлен дуального кода является взаимным к многочлену Л (х). Поэтому а<’
13.7. евклидово-гвометрические коды 477 t Евклийоев- геометрический (л,Л)-ков (n.h- коЗ БЧХ 4 (63.37) (63,39) 10 (63. 131 (63.18) 2 (255. 231) (255,239) 8 (255. 175) (255,191) ю (255. 127) (255,179) 42 (255. 19) (255,47) Рис. 13.8. Параметры некоторых евклидово-геометрических кодов и некоторых кодов БЧХ. является корнем этого взаимного многочлена, если an~i' является корнем h (х), т. е. если М"-/') >(<?-!) (' + 1)-1 при всех j', которые являются р-сопряженными с /числами. Но, как было установлено при доказательстве теоремы 13.6.5, t£>q (п — j‘) --- (q — 1) tn — wq (j"). Следовательно, №,(/') <(«—!) 1 Г- 1) при всех /', которые являются р-соиряженными с / числами. От- сюда следует утверждение теоремы. □ Простейшим примером евклидово-геометрического кода слу- жит код С5 = 1ир = 2. В этом случае (О С m — г — 1» если а/ является корнем g (х). Это как раз код Рида—Маллера порядка г. Евклидово-геометрические коды представляют собой обобщение кодов Рида—Маллера. Параметры других евклидово- геометрических кодов приведены на рис. 13.8. Наша цель — доказать, что евклидово-геометрические коды могут декодироваться мажоритарно в г -f- 1 шагов и что d/лд = — — \)/(q — ]). Мы опишем декодер на геометрическом языке, языке евклидовой геометрии, который мы сейчас введем. Евклидова геометрия размерности m над полем CF (q) (она обо- значается через EG (m, q)) состоит из (f1 точек (векторное про- странство GF™ (q)) вместе с некоторыми подмножествами, называе- мыми плоскостями (или аффинными подпространствами 1))> ре- куррентное определение которых следует ниже. О-плоскостью (нульмерным аффинным подпространством) называются точки EG (гг,<7).Пми являются cf" векторов m-мерного векторного про- ') Векторное подпространство должно содержать начало координат векторного пространства. Аффинное подпространство получается сдвигом векторного под- пространства (г. е. является его смежным классом).
478 ГЛ. 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ страиства. Из /-плоскости получается (t -f- 1)-плоскость как мини- мальное векторное подпространство, каждый сдвиг которого содержит /-плоскость. Иначе говоря, если Et является /пло- скостью, то множество {ytu | £ GF (<?), u £ Etj—этоминимвль- ное векторное подпространство, содержащее £t. Если vr+1 — любая конкретная точка в GFm (q), не принадлежащая Et, то (/+ 1)- плоскость £г+1 определяется как множество £t+i = (vt+i Ь Ti« I Vf €GF (<?). u € Et}- Приведем более формальное определение. Определение 13.7.3. Евклидовой геометрией EG (т, q) назы- вается векторное пространство GF'7' (д) вместе со всеми подпро- странствами и сдвигами подпространств GFm (q). Из этого определения непосредственно вытекает следующая теорема. Теорема 13.7.4. t-плоскость содержит ровно ql точек и сама имеет структуру евклидовой геометрии EG (/,<?). Можно пред- ставить t-плоскость как множество ql точек V, 4 T^.jVr-i 4- 4------Г Y..vu, где Yj пробегает множество всех элементов GF (q), включал нулевой, а векторы v0, v(, .... ve над GFm (q) оЗразуют фиксированное мно- жество линейно независимых элементов t-плоскости. Можно называть 1-плоскость и 2-плоскость линиями и плоско- стями. Эти названия связаны с тем, что определение евклидовой геометрии по идее соответствует обычному евклидову простран- ству с той разницей, что оно строится над конечным, а не над ве- щественным полем. Можно также считать, что EG (т, q), GF и GF'n (q) состоит из одних и тех же элементов. Однако когда мы обозначаем поле через GF (qm), то имеем в виду его алгебраиче- скую структуру, правила умножения и т. д. Когда мы обозначаем его через EG (т, q), то интересуемся его геометрической структу- рой, введенной определением 13.7.3. Если мы обозначаем его через GFm (q), то мы интересуемся его структурой как структурой вектор- ного пространства. Евклидова геометрия EG (3, 2) представлена на рис. 13-9. Этот пример показывает, что число /-плоскостей в евклидовой геометрии может быть довольно большим. Подсчитаем число /- плоскостей в EG (т, q). Подсчет опирается на величины, известные под названием <?-ичных гауссовских коэффициентов и .определяе- мые соотнршениями [7]-ift'c «w - </)
13.7. ЕВКЛИДОВО-ГЕОМЕТРИЧЕСКИЕ КОДЫ 479 Л-пжкость 1-пгоскзсть 2 плоскость ООО 001 010 он 100 101 но 000.001 .000.001,010,011 000,010 000,001.100,101 000,011 000.001.110,111 000,100 000.010.100.110 (ХЮ.101 000.010.101.1 н 000.110 000.011.100,111 000,111 (ХЮ/) 11.101,110 001.010 001.011.101,111 001,011 001,011,100.110 001,100 001,010,101,110 001.101 001,010.100,111 001.110 010,011.110.111 001,111 010,011,100,101 010,011 100,101,110,111 010,100 010,101 010.110 ою.п'1 011.100 011,101 011,110 011,111 100,101 100.110 100.111 101 .но 101,111 ноли Рис. 13.9. Евклидова геометрия EG(3,2). при i= |,2,...,т и ["]=!. Теорема 13.7.5. (i) EG (tn, q) содержит if1—1 [”j различных t-плоскостей, где t = 0, 1. ..., m. (ii) При любых s и t, таких, что 0 < s с t с m, каждая s- плоскость содержит точно [^_/] различных t-плоскостей из EG (т, q). Доказательство, (i) Можно построить /-мерное подпростран- ство, выбирая упорядоченное множество t линейно независимых точек в EG (т, q). Это можно сделать («Г - 1) (‘Г - 0 - - (<?'" q‘~l) различными способами. Однако многие из этих множеств незави- симых точек приводят к одному и тому же /-мерному подпростран-
480 ГЛ. IS. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ ству. В самом деле, число множеств, приводящих к одному и тому же {-мерному подпространству, равно (?' -1) («* -1) т. е. равно числу способов, которыми можно выбрать упорядочен- ную последовательность независимых точек в t-мерцом подпро- странстве. Следовательно, существует -1) _ Г”1 (ч‘ — 0 (/ ~Ч) - - («Л 9,_|) L * различных {-мерных подпространств. Каждое подпространство имеет (f”-1 смежных классов, и поэтому существует cf1—* [ j {-плоскостей. (ii) Заданная s-плоскость может быть расширена до {-плоскости выбором последовательности t — s независимых точек, не при- надлежащих s-плоскости. Это можно сделать («” «•) fc” «’") • • • «• - ‘Z' ') способами. Однако многие из этих последовательностей незави- симых точек расширяют s-плоскость до той же самой {-плоскости. В самом деле, число последовательностей, приводящих к одной и той же {-плоскости, равно й «) («' ?’+‘) -• (?' т. е. равно числу способов, которыми можно выбрать упорядочен- ную последовательность независимых точек на {-плоскости, не используя точки из s-плоскости. Отношение этих двух произведе- ний равно числу различных {-плоскостей, в которых содержится s-плоскость. Эго эквивалентно утверждению, которое требовалось доказать. □ Определение 13.7.6. Вектором инцидентности подмножества множества qm элементов, маркированных индексом {, называется вектор размерности qm, i-я компонента которого равна единице, если элемент, маркированный индексом /, принадлежит этому подмножеству, и нулю в противном случае. В пашем определении ОРМ-кода элементы GF (ср71) исполь- зуются для нумерации компонент векторного пространства раз- мерности п = qm (которое само содержит q""1 векторов). Иначе говоря, элементы векторного пространства GF™ (</) используются для индексации п компонент векторного пространства GF'1"1 (q). Вектор инцидентности подмножества Glm (?) — это вектор в Qp4m Если GP" (q) определяет структуру евклидовой геоме- трии EG (т, q), то вектор инцидентности плоскости в EG (т, q) является вектором в GF'F1 (q). Как мы увидим, вектор инцидент-
13.7. ЕВКЛИДОВО-ГЕОМЕТРИЧЕСКИЕ КОДЫ 481 иости плоскости в EG (ffi, q) является кодовым словом ОРМ- кода, содержащимся в GF^1 (q). Теперь мы можем предложить альтернативное определенно ев- клидово-геометрических кодов. Теорема 13.7.7. Евклидово-геометрическим кодом r-го порядка и длины п над GF (р) является наибольший линейный код над GF (р), содержащий в своем нуль-пространстве векторы инци- дентности всех (г + 1)-плоскостей в EG (яг, q). Доказательство. Достаточно доказать, что ОРМ-код, который содержит код, дуальный евклидово-геометрическому коду, яв- ляется наименьшим линейным кодом над GF (q), содержащим все векторы инцидентности. Это следует из того, что компоненты вектора инцидентности могут принимать лишь значения нуль или единица, и поэтому все его компоненты всегда лежат в подполе GF (р). Следовательно, вектор инцидентности принадлежит коду, дуальному евклидово-геометрическому коду, если он принадле- жит ОРМ-коду, содержащему этот дуальный код. Вектор инцидентности принадлежит ОРМ-коду, если он при- надлежит циклическому ОРМ-коду и его символ расширения пра- вилен. Но вектор инцидентности (г 4~ 1)-плоскости содержит 9Г+1 ненулевых компонент, которые прибавляются к нулю по модулю р\ поэтому его символ расширения всегда правилен. Необходимо лишь доказать, что вектор инцидентности, у которого последняя компонента опущена, принадлежит циклическому ОРМ- коду. Иначе говоря, нужно доказать, что преобразование Фурье каждого вектора инцидентности f имеет компоненту F}, равную нулю, если “«(/> < (» — 1) Я —(? — 1)(М—г — О —1, или, что то же самое, “>«(Л <(« — I) (r + 1). Для доказательства достаточно вычислить Е^и показать, что при всех таких / оно равно нулю, хотя при других / может быть отлич- ным от нуля. Шаг 1. Используя введенное в теореме 13.7.4 определение, представим (г 4- 1)- плоскость как множество {v^i 4- -у,- уг 4- 4- +• • • 4- где индексы /о = О, 1...9 — 1, Zj =0, 1, ...,? — 1, 16 р БлеАхут if - 0, 1, .... <7 — 1
4В2 ГЛ- 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ маркируют q элементов поля GF (q), a v0, vr+1 — фиксирован- ное множество независимых точек на (г + 1)-плоскости. Если элемент поля ct* принадлежит указанному множеству, то i-я компонента вектора инцидентности f равна единице; в противном случае она равна нулю. Поэтому спектральная компонента о =£«''?. может быть записана как сумма тех слагаемых, у которых Д равно единице; слагаемые, в которых Д равно нулю, можно опу- стить: О = ,£ Д • X (»-+ +?<,_,«-> + —I здесь г>0, ..., vr¥i можно считать элементами GF (qr+')- Необходимо определить те значения /, при которых F} равны нулю. Используя полиномиальное разложение, получим Fl' = 2 2 2 IW-.M *&*fr'1 (ii) (iii)'')*' • £о=0 'г^ h где под суммированием по h понимается суммирование по всем наборам (h0, ht, .... таким, что h0 Н- hr +-----г hr„ = j. Затем переменим порядок суммирования и рассмотрим слагаемое вида (у/^)А, где h фиксировано. Шаг 2. Суммирование S’Zoy? проводится по всем элементам поля GF (q), и поэтому сумма может быть выражена через примитив- ный элемент а. При h, отличных от нуля, ’Гт? = о+’|>. Величина в правой части равна ft-й компоненте преобразования Фурье вектора, состоящего только из единиц. Эта компонента равна нулю во всех случаях, кроме случая, когда ft кратно q — ]. В этом последнем случае она равна q — ] (mod р), или —1. Для ft, равного нулю, Л у? = S 1 = 0 (mod р); по определению считалось, что у” = 1 при всех у, принадлежа- щих GF (q). Ненулевые слагаемые в сумме, определяющей F}, — это слагае- мые, соответствующие тем hi, 1 = 0, г, которые являются не- 13.7. ЕВКЛИДОВО-ГЕОМЕТРИЧЕСКИЕ КОДЫ 483 нулевыми кратными q — I; остальные слагаемые равны нулю и могут быть опущены. Сумма принимает вид где суммирование производится no (ft0, .... ftr+J), таким, что hi, I = 0, ..., г, суть ненулевые кратные q — 1, hr+i ^0 и Шаг 3. По теореме Лукаса (теорема 13.3.3) в равенстве для F} полиномиальные коэффициенты равны нулю в тех слагаемых, в которых hi, I = 0, ..., г + 1, не является g-ичным потомком /; поэтому если ft, входит в сумму, то hi, I = 0, ..., г + 1, является р-ичным потомком / и, следовательно, <?-ичным потомком j. Это долучится из теоремы Лукаса, если записать /8_____________Л ОЛ)1 Ад! hi! . hr+il hal (j —ha)1- hti ... Аг+1! _______Л__________(i—haV- (j -Ад — Ал)! _ ha'-(i — ha)i Ад! (/—Ад—At)! he'-• • • hrtl\ Кроме того, любая сумма hi, входящих в сумму, равна р-ичному потомку / и, следовательно, g-ичному потомку j. Резюмируем условия, которым удовлетворяют слагаемые, вно- сящие вклзд в величину Fj. (>) S/ioft* = /; (ii) hi, I = 0, ..., г, должны быть ненулевыми кратными q — 1 и ftrti > 0; (iii) каждая позиция в д-ичном разложении j равна сумме со- ответствующих позиций д-ичных разложений Аг. Для завершения доказательства необходимо показать, что при /, удовлетворяющем неравенству таких слагаемых нет. Шаг 4. Рассмотрим g-ичное разложение некоторого целого k: k = k0 -| ktq k2q^ + ' ‘ + *• Тогда k (mod q — 1) можно вычислить следующим образом: k=k0^-kiq k = ko -j- ftj J-femj = (mod <7 — 1) = Wg (k). 16»
484 гл. 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ так как по модулю q — 1 число q можно заменить единицей. Следовательно, ft = (k) (mod d — 1). Если k равно ненулевому кратному q — 1, то и w4(k) равно не- нулевому кратному q — ]. Рассмотрим g-ичные разложения j ah,. Каждая позиция в q- ичном разложении j равна сумме соответствующих позиций в q- ичных разложениях h,. Поэтому »»«(/)= причем при I — 0.....г Wq (h,) являются непулевыми кратными q — 1. Следовательно, если Fj отлично от нуля, то М/) S* (? — 1)(г + 1)- Теорема доказана. □ Доказательство следующей теоремы включает алгоритм мажо- ритарного декодирования. Теорема 13.7.8. Пусть q = р*. Евклидово-геометрический код r-го порядка и длины п = tf" над GF (р) может быть декодирован мажоритарно в г 4- ] шагов при числе ошибок, не превышающем (Г^ —1)/[2 (<? — !)]. Доказательство. Доказательство проводится рекуррентно; по- казывается, что из множества проверочных равенств, основанных на векторах инцидентности /-плоскостей, можно получить прове- рочные равенства, основанные на векторах инцидентности (t — ])- плоскостей. Отсюда следует, что проверочные равенства, основан- ные на векторах инцидентности (г -|- 1)-плоскостей, как установ- лено теоремой ]3.7.7, в г + 1 шагов сводятся к проверочным ра- венствам для отдельных символов. При этом надо рассуждать следующим образом. Из определения /-плоскости в конечной геометрии следует, что векторы инцидентности всех /-плоскостей, которые содержат дан- ную (/—1)-плоскость, определяют множество r = (t-ol проверок, которые согласуются в сумме ошибочных символов, связанных с точками этой (/—1)-плоскости. Через любую точку, не принадлежащую заданной (/ — ])-плоскости Е, проходит ровно одна /-плоскость, содержащая Е. Следовательно, используя ма- жоритарное решение, можно получить новую проверку, которая соответствует вектору инцидентности (/ — 1)-плоскости Е. Эго же может быть сделано для всех (/ — 1)-плоскостей, содержащих заданную (/ — 2)-плоскость, которая в свою очередь определяет множество проверок, согласующихся в данной (/ — 2)-плоскости.
13.8. ПРОЕКТИВНО-ГЕОМЕТРИЧЕСКИЕ КОДЫ 48g Таким образом, после t шагов по индукции мы получим множество проверочных равенств, согласующихся в 0-плоскости, т. е. в од- ном ошибочном символе. Число согласующихся проверок, кото- рые могут быть использованы на х-м шаге, равно [т /+' [. Следо- вательно, на каждом шаге проводится не менее ] проверок, и корректирующая способность алгоритма равна _1_г/н-Г4-11 -1 2 L 1 J “ 2(9-1) ’ Этим доказательство теоремы завершается. □ 13.8. ПРОЕКТИВНО-ГЕОМЕТРИЧЕСКИЕ КОДЫ Проективно-геометрические коды образуют класс кодов, похо- жий на класс евклидово-геометрических кодов. Отличие состоит лишь в том, что они строятся из непримитивных циклических ОРМ-кодов длины (tf” — })l(q — ]), а не из ОРМ-кодов длины Построение проводится так же, как и ранее. Существенную роль играют три поля: GF (р) — поле символов кода с простым р, GF (q) с q = ps — поле символов непримитивного ОРМ-кода и GF (9") — поле локаторов. Определение 13.8.1. Пусть г, s и т— любые положительные целые числа, и пусть q = р®, где р — простое число. Проективно- геометрическим, кодом над GF (р) порядка г и длины п •- (q"‘ — 1)/ Kq — 1) называется код, дуальный подкоду нзд подполем непри- митнвного циклического ОРМ-кода над GF (q) порядка (q — I) X X (т — г — ]) и той же длины. Этому определению эквивалентно определение проективно-гео- метрического кода как непримитивного циклического кода, по- рождающий многочлен которого описывается следующей теоре- мой. Теорема 13.8.2. Проективно-геометрический код над GF (р) с параметрами г us и длиной (q’" — ])/(q — ]) является цикличе- ским кодом, порождаемым многочленом, корни которого располо- жены в точках р, причем j таковы, что 0 </ с (q"1 — ])(<? — ]) и О < max wq (j (q — 1) pf) < (q — 1) (m — r — 1), 0Ci<s где q = p\ 0 = a’-1 и a — примитивный элемент поля GF (q). Доказательство аналогично доказательству теоремы 13.7.2. □ На рис. 13.10 приведены параметры некоторых проективно- геометрических кодов. Проективно-хеометричсские коды мажори-
486 ГЛ. 13. ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ Проективно- геометрический t (л,л;-кй Укороченный примитивный (л,А,-ков БЧХ (21,11) (21, II) 4 173.45) (73.45) (85 68) (85.711 10 (85. 24) (85. 22) к (273. 191) (27\ 2011 (Ml. 315» (341 323) 10 (341.’195) 1341,251) 4’ 1341.45) (341. 32) 4 1585 520) (585. 545) 36 (585.184| (565. 250) 16 (1057,813) (В65, 1328) 10 11365. 1063) (1365.483) 170 (1365.78) Рис. 13.10. Параметры некоторых проективно-геометрических кодов и некото- рых кодов БЧХ. тарно декодируемы в г шагов. Осталось построить мажоритарный декодер и доказать, что Дцд = 1 + (?ш"’г+1 — 1)/(? — 1). Процедуру декодирования можно описать на геометрическом языке проективных геометрий. Проективная геометрия близко связана с евклидовой геометрией. Коротко говоря, проективная геометрия — это евклидова геометрия, дополненная некоторыми новыми точками, которые можно назвать бесконечно удаленными точками, и некоторыми новыми плоскостями, проходящими через эти точки. Формальное определение — дело техники. Проективная геометрия PG (т, q) содержит (</"+* — 1)/(? — 1) точек и определяется ненулевыми точками из GF"’+1 (q). Таких ненулевых точек — ], и они разбиваются на (</"+’ — 1)/(? — 1) множеств, каждое из которых включает одну точку PG (tn, q). В каждую точку PG (т, q) проектируется q — 1 точек GF"*1 (?) (этим и объясняется название проективной геометрии). Правило образования этих множеств следующее: для любого ненулевого вектора v в GFm+l (?) и любого ненулевого элемента к поля GF (?) v и Z-v принадлежат одному множеству V', иначе говоря, они отображаются в одну и ту же точку PG (tn, q)- Число таких ненулевых X равно ? — 1, и поэтому в множестве содержится ? — 1 векторов. Следовательно, точки проективной геометрии отожде- ствляются с (?т+| — 1)/(? — 1) различными одномерными подпро- странствами из GF"4'1 (?). Проективная геометрия PG (т, ?) размерности т над полем GF(?)—это множество таких (tf1*1 — ])/(? — 1) точек вместе
is.8. ПРОЕКТИВНО-ГЕОМЕТРИЧЕСКИЕ КОДЫ 467 С наборами подмножеств, называемых /-плоскостями (I = О, 1, .... т). Содержащая 14 и V, 1-плоскость определяется следующим об- разом. Пусть v0 £ Vo и Vj £ Vj; не имеет значения, какие именно элементы выбираются (см. зздачу 13.9). Тогда 1-плоскость (или линия), содержащая Ко и У1з образуется точками PG (т, q), яв- ляющимися образами точек 0ovo + 0jVj в GF"+' (q), где 0О и — произвольные элементы поля, не равные одновременно нулю. Вы- брать р() и 0, можно q2 — 1 способами, поэтому отображение состоит из (<7® l)i(q — ]) точек PG (т, д). Отсюда следует, что число точек 1-плоскости в PG (т, q) равно q -j- J. Аналогично /-плоскость, содержащая Vi, i — 0, 1, .... /, опре- деляется следующим образом. Пусть vf £ Vt при / — О, ..., /. Точки множества v4 должны быть линейно независимыми над GF"’+* (q), так как множество 14 образуется различными точками из PG (т, q). Тогда /-плоскость, содержащая Уо, ..., Vi, —это множество точек PG (т, q), которые являются образами точек ₽Л> |- ₽.». т • + ₽|V| в GFm‘L| (q), где 0О, .... 0, — произвольные элементы поля, не равные одновременно нулю. Величины 0С, ..., 0t можно выбрать 9f+I — 1 способами, поэтому образ состоит из (</+* — l)/(q — 1) точек из PG (т, q). Отсюда следует, что (/ -f 1)-плоскость содер- жит q‘ + q'~l ] • +q 4- 1 точек. Теорема 13.8.3. t-плоскость в PG (tn, q) содержит [*/] точек и сама имеет структуру проективной геометрии PG (t, q). Доказательство. Утверждение о числе точек немедленно сле- дует из равенства [ * ' | — (</+' — V)!(q — 1). Утверждение о структуре /-плоскости вытекает из описания структуры PG (/, q). П Теорема 13.8.4. (i) PG (т, д) содержит [ ] различных t-плоскостей при / = 0, 1, ..., т. (ii) При любых s и t, таких, что 0 < я < / < т, каждая s-плоскость содержится точно в | * ] различных 1-плоскостях b PG (т, q). Доказательство по существу совпадает с доказательством теоремы 13.7.5. П В приведенной ниже теореме проективно-геомегрические коды определяются альтернативным способом. Эта теорема аналогична теореме 13.7.7 и доказывается точно так же Опа будет использо- вана при доказательстве того, что проективно-геометрические ко- ды мажоритарно декодируемы, точно так же как теорема 13.7.7
488 ГЛ. 13 ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ использовалась при доказательстве того, что евклидово-геометри- ческие коды мажоритарно декодируемы. Теорема 13.8.5. Проективно-геометрический код порядка г и длины п — (qm - \)!(q — 1) над GF (р) —это наибольший ли- нейный код над GF (р), содержащий в^своем нуль-пространстве векторы инцидентности всех г-плоскостей в PG (т, q). Доказательство. Достаточно доказать, что непрпмитивный циклический ОРМ-код, который содержит код, дуальный проектив- но-геометрическому коду, является наименьшим линейным ко- дом над GF (q), который содержит все векторы инцидентности г-плоскостей. Эго вытекает из того, что компоненты вектора инцидентности могут принимать лишь нулевые и единичные зна- чения и поэтому всегда принадлежат подполю GF (р). Следова- тельно, вектор инцидентности принадлежит коду, дуальному про- ективно-геометрическому коду, если он принадлежит ОРМ-коду, содержащему этот дувльный код. Вектор инцидентности i принадлежит непримнтивному цик- лическому ОРМ-коду, если компонента Fj преобразования Фурье равна нулю при ((« — !) Й < (« — О т — (« — 1) (т — г — 1) — I, ИЛИ ((? — О (г И О- Для доказательства достаточно вычислить Fj и показать, что при таких / оно равно нулю. Шаг 1. Представим г-плоскость как образ множества (Vi v, ( Vlrj»r-, I---(-ViAl, где индексы 4, 4, ..., ir маркируют q элемептов^поля GF (q), a v0, ...» vr — фиксированное множество независимых точек в г-плоскости. Точку, в которой все коэффициенты у равны нулю, исключать не обязательно, так как она не дает вклада в Fj. Век- тор инцидентности f содержит в i-й компоненте единицу, если эле- мент поля а* принадлежит этому множеству, и нуль в противном случае. Положим /' = (q — 1) j при / = 0, ..., (<?'" — l)/(q — — 1) — 1 и вычислим спектральные компоненты Fp: F;.= "f'aO-y, _ i=0 -(S (Via I V|,_A-I I "• I V.ft)'', 13.8. ПРОЕКТИВНО-ГЕОМЕТРИЧЕСКИЕ КОДЫ 489 где v0, .... считаются элементами GF («з’’)- Нужно определить те значения при которых эти компоненты равны нулю. Полино- миальное разложение дает о- = s • • - S S (V')*' <W-- - 1о=0 г,=п h где суммирование производится по всем h, удовлетворяющим раз- ложению h0 4- Л1 + -\~hr = j'. Переменим порядок суммиро- вания и рассмотрим сумму S?=o - Шаг 2. В £ суммирование проводится по всем элементам поля, и поэтому сумма может быть выражена через примитивный элемент а. Отсюда так же, как и при доказательстве теоремы 13.7.7, заключаем, что вклад в Fp вносят лишь те слагаемые, в которых /гг является ненулевым кратным q — 1. Поэтому о- - (-i)'S S • • • S MW2.АГ"М1 где суммирование проводится по (h0, ..., ftr), таким, что hi, I = = 0, ..., г, являются ненулевыми кратными q — 1 и S й = /' 1=0 Шаги 3 и 4. Как и при доказательстве теоремы 13.7.7, из тео- ремы Лукаса вытекает, что при всех I величина hi является <?-ич- ным потомком следовательно, ™ч (Г) = Ё ™ч (Ы 1=0 Но, как показано при доказательстве теоремы 13.7.7, (h{) являются ненулевыми кратными q — 1 тогда и только тогда, когда hi есть ненулевое кратное q — 1. Следовательно, если Fp отлично от нуля, то 1). Это доказывает теорему. П Доказательство следующей теоремы включает в себя алгоритм мажоритарного декодирования. Теорема 13.8.6. Пусть q ps. Проективно-геометрический код r-го порядка длины п = (qm - 1)/(? — 1) над GF (р) может быть мажоритарно декодирован в г шагов при числе ошибок, не превышающем (qm ~г+1 — 1)/Г2 (q — 1)1.
490 гл- >8 ДЕКОДИРОВАНИЕ МАЖОРИТАРНЫМ МЕТОДОМ ЗАМЕЧАНИЯ 491 Доказательство. Доказательство проводится рекуррентно; по- казывается, что из множества проверочных равенств, основанных на векторах инцидентности /-плоскостей, можно получить про- верочные равенства, основанные на векторах инцидентности (t — 1)-плоскостей. Отсюда следует, что проверочные равенства, основанные на векторах инцидентности г-плоскостей, в г шагов могут быть сведены к проверочным соотношениям для отдельных символов. Рассуждения аналогичны доказательству теоремы 13.7.8. ' О ЗАДАЧИ 13.1. Показать, что двоичный (15,7)-код БЧХ, исправляющей двойные ошибки, мажоритарно декодируем при использовании декодера Метл га в качестве мажоритарного декодера 13-2- Построить двухшаговый мажоритарный декодер для двоичного (7, 4)- кода Хэмминга. 13.3. Построить мажоритарный декодер для двоичпого проективно-геоме- трического (21,12)-кода. исправляющего две ошибки. 13.4. Найти порождающий многочлен для (15,6)-кода над GF (4), исправ- ляющего тройные ошибки и являющегося мажоритарно декодируемым. По- строить декодер. Найти порождающий многочлен для кода БЧХ над GF (4), исправляющего три ошибки. 13.5. Если GF (q) является полем характеристики 2, то некоторые мажо- ритарно декодируемые коды над GF (q) с посредственными характеристиками могут быть получены методом перестановок При выборе J — (if1 — l)/(q — I). Проверить существование следующих кодов- (255, 156). I 8, над GF (16); (4095, 2800). I 32, над GF (64); (65 535. 47 040). I - 128, над GF (256). При проверке вручную для облегчения работы нужно использовать своего рода четырехмерную таблицу, описывающую fl-ичные разложения степеней. 13.в. Доказать, что ни один код Рада—Соломова нс может быть декоди- рован мажоритарно в пределах ею радиуса упаковки. 13.7. Построить мажоритарный декодер для представленного на рис. 13.6 сверточного (42. 28)-кода 13.8. Показать, что cc.ni с-плоскость из EG (т, q) содержит начало коорди- нат, то как векторное пространство она является линейным подпространством в EG (m, fl). Для заданной r-плоскости в EG (т, fl) указать число г-плоско- стей, не пересекающихся с ней 13.В. Показать, что при определении 1-плоскости в проективной геометрии не имеет значения, как выбирать в GFm (fl) представляющие Vo и V( точки. 13.10. Доказать, что в проективной геометрии нс существует двух парал- лельных линий, т е. что любая пара 1-плоскостей имеет ненулевое пересечение 13.П. Построить высокоскоростной декодер для двоичного (63, 24, 15)-кода БЧХ, одноврсмелно используя четыре мажоритарных декодера для ОРМ (63, 22. 15)-кода ЗАМЕЧАНИЯ Четкая формулировка того, что класс мажоритарно декодируемых кодов обра- зует специальный подкласс кодов, исправляющих ошибки, принадлежит Месси 11963]. Он установил общие принципы обращения с такими кодами, до этого мажоритарное декодирование использовалось лишь в некоторых частных слу- чаях Первым, кто использовал мажоритарное декодирование, был Рид 11954 J, применивший его для декодирования кодов Рада—Маллсра. В своей работе Месси специально интересовался сверточными кодами и 0П|)еделил класс мажо- ритарно декодируемых сверточных кодов Дальнейшее развитие теории свер- точных кодов принадлежит Робинсону и Бернстайну [1967], а также By [1976]. Нахождение конструктивных классов мажоритарно декодируемых блоко- вых кодов оказалось более трудным, и здесь работа продвигалась медленно Решающим вкладом явилось применение конечных геометрий при построении кодов, первоначально предложенное Рудолфом [1964. 196711) н реализованное Колесником н Миропчиковым Il968], а также Касамн, Лином и Питерсоном Il968], установившими, что коды Рада—Маллера являются циклическими (если исключить проверочный символ) и мшу г быть обобщены на произвольные алфавиты Обобщенные коды Рида—Маллера были введены в работе Касамн, Лина и Питерсона |1968| и разрабатывались Уэлдоном [1967, 1968 [, Касамн, Лином и Питерсоном в их второй статье [1968], 1еталсом и Дельсартом [1968] и Дельсартом, Геталсом и Мак-Вильямс [1970]. Простой метод построения, описанный в § 13 4, принадлежит Лину и Марковскому |1980]. Конечно-ге.о- метрпческис коды подробно обсуждались в обзорной статье Гсталса [1975] •) Независимо oi Рудолфа это было сделано В Д Колесником л Е Т. Ми- рончиковым, см Колесников В Д , Мирончиков Е. Т Некоторые циклические коды и схема декодирования по большинству ирове|юк — Проблемы передачи информации, 1965, т 1. вып 2, с. 3—17 —Прим, ред
ГЛАВА 14 КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОНТРОЛИРУЮЩИХ ОШИБКИ КОДОВ Любая инженерная дисциплина начинается обзором методов ре- шения определенного класса задач. После того как эти методы изучены, переходят к вопросу об оптимальности. Являются ли эти метода наилучшими? Если нет, то в чем и насколько они усту- пают наилучшим методам? Чтобы ответить на такие вопросы, необходимо знать, насколь- ко хороши известные коды и насколько хороши наилучшие воз- можные коды. Вообще говоря, мы не можем ответить удовлетво- рительно ни на один из этих вопросов. Хотя наилучшие возмож- ные контролирующие ошибки коды для конкретных скоростей и длин неизвестны, известны некоторые границы, а именно гра- ницы, за которыми ни одного кода не существует', и границы, в пределах которых они заведомо существуют. Знание этих гра- ниц позволяет глубже понять предмет. В этой главе мы изучим композиционную структуру блоковых кодов, а также вероятности ошибочного декодирования и неудач- ного декодирования. Затем перейдем к границам для наилучших возможных кодов. 14.1. РАСПРЕДЕЛЕНИЯ ВЕСОВ Мы знаем, что если линейный блоковый код имеет минимальное расстояние d *, то существует хотя бы одно кодовое слово веса d *- Иногда нас не удовлетворяет столь малая информация; мы хотим знать, сколько кодовых слов имеют вес d * и каковы веса других кодовых слов. Например, в табл. 5.3 были приведены веса слов двоичного (23,12)-кода Голея. Если код мал, то такую таблицу весов можно построить про- стым перебором. Для кода большой мощности это сделать невоз- можно, и необходимо разработать, если удастся, аналитические методы. Так как для многих кодов неизвестно даже минимальное расстояние, то очевидно, что такие методы, вообще говоря, найти трудно.
14.1. РАСПРЕДЕЛЕНИЯ ВЕСОВ 493 Пусть At — число кодовых слов веса I линейного (п, Л)-кода. Распределением весов кода называется (л + 1)-мсрный вектор с компонентами A,, t = 0, л. Очевидно, что если минимальное расстояние кода равно d *, то Ло = ], At.Ad*—t равны пулю, a Ad* отлично от нуля. Более глубокая характеристика кода тре- бует дополнительного анализа. Аналитическое описание распределения весов кода — трудная задача, но для важного случая кодов Рида —Соломона (или лю- бого кода с максимальным расстоянием) аналитическое решение известно. Настоящий параграф служит введением в эту зздачу. В нем получена формула числа кодовых слов каждого веса для кода с максимальным расстоянием. В случае произвольного ли- нейного кода такую формулу мы дать не сможем, но некоторые об- щие соображения приведем. Будет выведено тождество Мак- Вильямс, связывающее распределение весов кода с распределе- нием весов дуального кода. Тождество Мак-Вильямс полезно в тех случаях, когда дуальный код достаточно мал, так что его распре- деление весов можно найти на ЭВМ. Начнем с точного решения задачи для кодов с максимальным расстоянием. Теорема 14.1.1. В коде с максимальным расстоянием любое множество k позиций может быть выбрано как множество инфор- мационных позиций; значения символов в них выбираются произ- вольным образом в GF (q). В оставшихся п—k позициях выбор символов определяется правилом кодирования. Доказательство. Код с минимальным расстоянием d * может восстанавливать любые d * — 1 стертых символов. Так как для кодов с максимальным расстоянием d * = п - k + 1, то теорема доказана. □ Из доказательства теоремы ясно, что если код не является ко- дом с максимальным расстоянием, то утверждение о том, что любое множество k позиций может использоваться как множество информационных позиций, неверно. Это обратное утверждение справедливо для всех двоичных кодов, так как ни один двоичный код не является кодом с максимальным расстоянием. Для кодов с максимальным расстоянием легко вычислить число кодовых слов веса d*. Разобьем множество целых чисел от 0 до п — ] на два непересекающихся подмножества Тл* и 7rf., где Те- состоит из d* целых чисел. Существует- ( ) способов такого разбиения. Рассмотрим все кодовые слова, имеющие нули в тех позициях, которые принадлежат Т^. Любое множество k = п —d* -|- ] позиций в слове кода с максимальным расстоянием однозначно определяет это кодовое слово. Выберем в качестве п — d* -|- 1 информационных позиций п — d* позиций, принад-
494 ГЛ. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ лежащих 7^,, плюс одну дополнительную позицию. В этой до- полнительной позиции символ может принимать одно из q значе- ний, и тогда символы в оставшихся d* — 1 позициях определены. Следовательно, существует точно q кодовых слов, у которых в заданных п — d* позициях стоят нули. Одно из них — нулевое кодовое слово, a q — 1 слов имеют вес, равный d*. Так как п — d* нулевых позиций, принадлежащих Tfc, могут быть выбраны (rf" ) способами, то получим Ал- = (.”) («- !)• Чтобы найти А, при используем сходные, но гораздо более сложные рассуждения. Это будет сделано по ходу доказа- тельства следующей теоремы. Теорема 14.1.2. Распределение весов (п, к)-кода над GF (q) с максимальным расстоянием определяется формулами Ао = 1, Ai = 0 при I = ], .... d* — 1 и а, =(;)(«-) при I d*. Доказательство. При I < d* теорема очевидна. Дальнейшее доказательство распадается на три шага. Шаг 1. Разобьем совокупность целых чисел от 0 до п — 1 на два непересскающихся подмножества Tt и Тс{, где 1\ состоит из I целых чисел, и будем рассматривать лишь те кодовые слова, ко- торые содержат нулевые компоненты в позициях с номерами из Tj и ненулевые компоненты во всех других позициях. Пусть Mi — число таких кодовых слов веса I. Для произвольного кода А, = (”)«,; поэтому необходимо лишь доказать, что м.=<« - i)’x /=0 ' ' ' Чтобы доказать это равенство, установим одно неявное соот- ношение, связывающее .41, и Ми при меньших I, и /, боль- ших d*.
14.1. РАСПРЕДЕЛЕНИЯ ВЕСОВ 496 Выберем совокупность и — d* + 1 информационных компо- нент следующим образом: будем считать информационными все п — I компонент, расположенных в принадлежащих Tct позициях, а также любые I — d* + 1 компонент, расположенных в принад- лежащих Tt позициях. Напомним, что компоненты, расположен- ные в позициях, принадлежащих Тср равны нулю. Произвольным образом приписывая значения оставшимся I — d* (- 1 компонен- там, получим (f~d*+l — I ненулевых кодовых слов, вес которых не превышает I. В множестве I позиций, принадлежащих Т,, можно выбрать любое подмножество /' позиций. Число кодовых слов веса V с ненулевыми компонентами в этих Г позициях равно Сле- довательно, Это неявное соотношение рекуррентно связывает Ма» и с Md-+2 с Ма- и Ma»+i и т. д. Разрешив это рекуррентное соотно- шение, мы получим явную формулу для М[- Шаг 2. Запишем равенства в формулировке теоремы в более удобном для доказательства виде. Чтобы с суммой, входящей в последнее из этих равенств, можно было бы обращаться как с многочленом, будем рассматривать q как неопределенную пере- менную. Введем оператор [ ]: I „ °'’’' I=А0"’"' сохраняющий в сумме коэффициенты лишь при неотрицательных степенях п. Заметим, что он определяет линейную операцию. В этих обозначениях соотношение, которое должно быть доказано, можно переписать в виде м, = (?- i)[rM*-'> Е(—’>»(', Дополнительные слагаемые, включенные в эту сумму, соответ- ствуют отрицательным степеням q и не вносят вклад в A4j. Свернем ее, используя формулу бинома Ньютона: М. “(« 1> I)'-1!-
496 ГЛ. 14. КОМПОЗИЦИЯ и ХАРАКТЕРИСТИКИ КОДОВ Шаг 3. Покажем, что полученное на втором шаге выражение для М, позволяет разрешить рекуррентное соотношение, выведен- ное на первом шаге: (,‘.)м,.= Д (,'•) Mr = = й о Д (,'.)|«-и-'>й - D'-ч - -(« 0 fe-D~',£(,'.)(? i)' ]- = («-•) (i - 1/«г‘ «ч - = to-?»-*•+*-1. ch-o и завершает доказательство. П Следствие 14.1.3. Распределение весов (п, к)-кода над GF (q) с максимальным расстоянием дается соотношениями Ло = 1, Л, = 0 при 1 = 1, d* — 1 и при I d*. Доказательство. Воспользуемся тождеством и перепишем доказываемое равенство в виде А = (?) *£'<-1НК'7‘) I - D = -(’)[& (-’)< (7') w-’-' - о - - ‘"If (-О'- (£)(«'— - I>] = =(;)*£(-iyi';'i<4 и?1-1— Последнее равенство вытекает из теоремы 14 1.2. □
14.1. РАСПРЕДЕЛЕНИЯ ВЕСОВ 497 / Л, О 1 1 О 2 О 3 О 4 О 5 О 6 О 7 О 8 О 9 О 10 О 11 О 12 О 13 О 14 О 15 О 16 О 17 8,22 х 10’ 18 9,59 х |О’0 19 2.62 х |0*2 20 4,67 х 10* •’ 21 7,64 х 1014 22 1,07 х Ю'* 23 130 х10'7 24 1,34 х 10’ “ 25 1,17 х К)” 26 8.37 х 10' * 27 4,81 х 1О20 28 2,13 х 102’ 29 6,83 х 102‘ 30 1,41 х 102Л 31 1.41 х 10»» Рис. 14.1. Распределение весов (31, 15)-кода Рида—Соломона. Следствие 14.1.3 полезно при нахождении распределения ве- сов кодов Рида — Соломона, например распределения весов (31, 15)-кода Рида—Соломона, приведенного на рис. 14.1. Даже для таких кодов, Рид а —Соломона небольшой мощности число кодовых слов веса I может быть очень большим. Вот почему, вооб- ще говоря, практически невозможно найти распределение весов ко- да простым перебором кодовых слов. В случае кодов, не являющихся кодами с максимальным рас- стоянием, не существует правила, аналогичною теореме 14 1.2.
498 ГЛ. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ кодов При небольших п распределение весов может быть найдено по- иском на ЭВМ, по с ростом п этот метод быстро становится не- практичным. В настоящее время наиболее сильным инструментом являются выражения, устанавливающие связь между распределением весов линейного кода и распределением весов его дуального кода — так называемые тождества Мак-Вильямс. Тождества Мак-Виль- ямс справедливы для любого линейного кода; они вытекают из векторной структуры линейного кода и из того факта, что дуаль- ный коду й’ код является ортогональным дополнением <ё>. Прежде чем переходить к выводу тождеств Мак-Вильямс, мы должны вер- нуться к изучению абстрактных конечномерных векторных про- странств, начатому в § 2.6. Необходимо ввести понятия пересече- ния и прямой суммы двух подпространств и доказать их некоторые свойства. Пусть U и V — подпространства пространства F". Тогда U П V называется пересечением (J и V и означает множество векторов, принадлежащих и U, и V; UQ>V называется'прямой суммой U и V и означает множество всех линейных комбинаций аи + bv, где и и v принадлежат соответственно 67 и V, aanb — скаляры. Как U Л V> так и U&V являются подпространствами в Fn. Теорема 14.1.4. dim [67 р V] dim [U © V] = dim [£/l -| dim [V]. Доказательство. Базис подпространства I/ П V состоит из dim [U Л V] векторов. Этот базис может быть расширен до ба- зиса U добавлением dim [67] — dim [67 Л VI базисных векторов и до базиса V добавлением dim [V] —dim \U р VI базисных векторов. Все эти базисные векторы в совокупности образуют ба- зис подпространства U ф V- Таким образом, dim IU ® V] = dim [U Л Vl + I- dim [6/1 - dim [U p V] |- dim [VI — dim [U p VI. откуда следует теорема. П Теорема 14.1.5. 67х р Vх = (67 ф V)1. Доказательство. Подпространство U содержится в U © V, и поэтому (67 Ф V)1 содержится в U1. Аналогично (U Ф V)- содержится в Vх. Следовательно, (U © V)1 содержится в (Л р П V1. С другой стороны, запишем элемент из 67 ® V как аи bv и обозначим через w любой элемент и.з 67х Л Vх. Тогда w-(ou-|- bv) — 0, и, следовательно, 6/1 Л V1 содержится в (67 © V)1 - Отсюда следует, что эти два множества совпадают. □ 14.1. РАСПРЕДЕЛЕНИЯ ВЕСОВ 4QQ Пусть А,, / = 0, .... «, и В,, I = 0, ..., п, представляют со- бой распределения весов линейного кода и его дуального кода соответственно. Определим нумераторы весов кода равенствами А (х) = £ Atx1 и В (х) = £ Вгх1. Следующая теорема связывает эти два многочлена и позволяет вычислить один из них, если известен другой. Теорема 14.1.6. Нумератор весов А (х) линейного (п, ty-кода над GF (q) и нумератор весов В (х) дуального ему кода связаны соот- ношением q' B (*) = [1 + (, - 1) XI" Л ( , )- Доказательство. Рассмотрим код Й’ и дувльный ему код Й’1. Доказательство состоит из двух частей. В первой части мы дока- жем, что Дв,(-и-)=^”Дл,(^) для т — 0....п. Во второй части мы докажем, что это равенство эквивалентно утверждению теоремы. Часть /. Для заданного tn разобьем целые числа от 0 до п — 1 на два непересскающихся подмножества Тт и Tjn, где подмно- жество T„i состоит из т элементов. Пусть V образует т- мер ное подпространство векторного пространства GF" (q), состоящее из всех векторов с нулевыми компонентами в позициях с номерами из Тт. Тогда Vх является (п — ст)-мерным подпространством, состоящим из всех векторов с пулевыми компонентами в позициях с номерами из Тт. В силу теоремы 14.1.5 (й> р V)x=^x© Vх; поэтому dim [‘й’х © Vх] = п — dim [Й’ Р V]. С другой стороны, по теореме 14.1.4 dim [й*х © Vх] = (« — £) 1 (п — /и) — dim [<&L [] Vх]. Из этих равенств следует, что dim [й3 L Р Vх] = dim [й’ p V] -|- n — k — m. Теперь заметим, что при каждом выборе Тт существует векторов в й’ р V и ^d,rnI®’L П1/Х1 векторов в й’1 р V1.
00 гл. 14. КОМПОЗИЦИЯ II ХАРАКТЕРИСТИКИ КОДОВ ассмотрим {7,,,} — совокупность всех таких Тт. Пересчитаем екторы в каждом ‘й’ |~| V, которые могут быть получены из не- которого подмножества Тт, принадлежащего совокупности {7^}. Число пересчитанных векторов равно S(rm}‘7dim^ причем многие из них входят в подсчет несколько раз. Аналогично пере- считав все векторы в каждом П V1, которое получается из Тт, принадлежащего {^„l, имеем Pm| IM Чтобы завершить первую часть доказательства, необходимо оценить две суммы, входящие в это равенство. Для этого сосчи- таем, сколько раз вектор веса /, принадлежащий <ё‘, появится в множестве V? р V. Указанный вектор принадлежит & V тогда ц только тогда, когда эти его / позиций входят в число тех т позиций принадлежащих V векторов, в которых допускаются ненулевые компоненты, или, что эквивалентно, если п — т пози- ций, в которых принадлежащие V векторы должны содержать нулевые компоненты, попадают вл — j позиций кодового слова, содержащие нулевые компоненты. Выбрать п — т позиций, (п~! 1 которые содержат нулевые компоненты, можно спосо- бами; поэтому данное кодовое слово веса / входит в мно- жеств. Существует Aj кодовых слов веса /. Поэтому Аналогично можно сосчитать векторы в ‘й’1 р V’x. Тогда предыду- щее равенство переходит в равенство Так как т произвольно, первая часть доказательства завершена. Часть 2. Исходя из выводов первой части, запишем тождество для многочленов д г г (“»')= s 1 л О- т—О /—О 4 ' т—О /-Ф * 7 Переменим порядок суммирования £ «-so-^- s«-s (^(f)"(fr - т_______0 /О 14.1. РАСПРЕДЕЛЕНИЯ ВЕСОВ 501 вспомнив, что ) — 0, если tn > я — i. Используя формулу бинома Ньютона, имеем S Bt (1 4 УУ~1 = <Г~к S А, (У1ЯГ(\ | q/yy-i. i=o j о Наконец, сделав подстановку у — 1/х -- 1, получим i=0 j=t> или «*£ в.х'» (1 -|- (, W £ л, (,+},. I--0 1=0 что завершает доказательство теоремы. □ В заключение параграфа укажем на простое применение этой теоремы. Из табл. ].] следует, что распределение весов (7,4)-кода Хэмминга равно (А„, А,...А7) =- (1, 0, 0, 7, 7, 0, 0, 1), так что нумератор весов имеет вид А (х) -л? -J- 7х’ I-7*3 + 1. Соответствующий дуальный код — это двоичный циклический код, известный под названием симплексного. Кориями его поро- ждающего многочлена g (х) - - х4 4- Xs + л3 + ] являются о.° и а’. Согласно теореме 14.1.6, нумератор весов В (х) симплексного кода удовлетворяет равенству 24В (х) = {1 -| х)7 А [(] — ху(1 + х) 1 = = (1 -х)7 + 7 (] + х)я (1 -х)1 + 7 (1 + х)< (1 -хУ + + (1 1-х)’. откуда следует, что В (х) — 7х‘ |- 1. Симплексный (7,3)-код имеет одно кодовое слово веса 0 и семь кодовых слов веса 4.
602 Гл 14 КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ кодов 14.2. ВЕРОЯТНОСТИ ОШИБОЧНОГО ДЕКОДИРОВАНИЯ И НЕУДАЧНОГО ДЕКОДИРОВАНИЯ Неполный декодер для корректирующего t ошибок кода исправ- ляет в пределах радиуса упаковки все конфигурации ошибок веса, не превышающего t, и не исправляет ни одной конфигура- ции ошибок веса больше t. Если происходит более /ошибок, то декодер иногда заявляет, что сообщение не подлежит исправле- нию, а иногда делает ошибку при декодировании. Следовательно, на выходе декодера может появляться правильное сообщение, неправильное сообщение или декодирование объявляется не- удачным (сообщение стирается). В общем случае неизвестно, как вычислить вероятности этих событий, но в некоторых част- ных случаях, представляющих практический интерес, получены удовлетворительные выражения. Рассмотрим случай использования линейных кодов в каналах, вносящих в символы ошибки независимо и симметрично. Выра- жения для указанных вероятностей зависят от распределения весов {ЛД кода и поэтому полезны лишь в случае, когда оно известно. В предыдущем параграфе получено распределение весов для кодов Рида—Соломона, так что для этих кодов мы можем вычислить вероятности ошибочного декодирования и не- удачного декодирования. Рассматриваемые каналы представляют собой g-ичные каналы, вносящие ошибки в передаваемые символы независимо с вероят- ностью Р и передающие символы правильно с вероятностью 1 — Р. Каждое из q — 1 ошибочных значений принимается с вероятностью P'(q—I). Каждая конфшурация k ошибок наблюдается с вероятностью ''('Ч (/’тУ*1 pr~t- Мы рассмотрим лишь неполный декодер, который не принимает решения о декодировании вне радиуса упаковки кода. Каждое принятое слово, лежащее от ближайшего кодового слова на рас- стоянии, не превышающем t, декодируется в это кодовое слово; здесь t —фиксированное число, удовлетворяющее неравенству 2t+ 1 с d*. Исследуем условные вероятности ошибочного и неудачного декоди- рования в случае линейного кода при условии, что передано слово, целиком состоящее из нулей. Каждое другое переданное слово приводит к тем же самым условным вероятностям, так что они являются также безусловными вероятностями. Па рис. 14.2 изображены три области, в которые может попасть принятое слово.
14.2. ВЕРОЯТНОСТИ ОШИБОЧНОГО ДЕКОДИРОВАНИЯ БОЗ Рис. 14.2. Области декодирования. ( ( ( Вероятность правильного декодирования — это вероятность того, что принятое слово попадает в область, покрытую редкой штри- ховкой. Вероятность неправильного декодирования — этоУвероят- пость того, что принятое слово попадет в область, покрытую частой штриховкой. Вероятность неудачного декодирования - это вероятность того, что принятое слово попадет в незаштрихо- ваппую область. Сумма этих трех вероятностей равна I, поэтому достаточно найти формулы лишь для двух из них. • Начнем с самого простого. Теорема 14.2.1. Вероятность правильного декодирования де- кодера, исправляющего ошибки в пределах радиуса упаковки кода, равна р. = ]^РЧ'- 'Г ' Доказательство. Число способов, которыми можно разместить (п\ конфигурации из * ошибок, равно |v); каждая из них имеет место с вероятностью Р* (1 — Р)"-*. Отсюда следует утверждение теоремы. □ Хотя теорема справедлива для любых объемов алфавита, в формулу входит лишь вероятность появления ошибочного сим- вола. Не имеет значения, как она распадается на вероятности конкретных ошибочных значений. В следующей теореме, каса- ющейся неудачного декодирования, необходимо подсчитать число способов, которыми могут быть сделаны ошибки. Некоторые кон-
604 ГЛ- <4- КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ фигурации ошибок, вероятности которых нужно просуммировать, приведены на рис. 14.3. Пусть Лг (I, h; s) означает число конфигураций ошибок веса h, находящихся на расстоянии s от кодового слова веса I. Ясно, что N {I, h; s) пе зависит от выбора кодового слова веса I. Заметим’ что если N (I, h; s) 0, то I — s h с I 4- s. В приведенной ниже теореме это условие выполняется автоматически, так как мы условились считать Q) = 0 при т < 0 или т > п. Теорема 14.2.2. Число конфигураций ошибок веса h. нахо- дящихся на расстоянии s от конкретного кодового слова веса I, равно Е (X)C)('7‘)ta .+2/4- Л=з ] I Доказательство. Равенству, которое требуется доказать, экви- валентно равенство i+Йа что может быть проверено подстановкой k = j h — /. В нем фигурируют три индекса суммирования и два ограничения Сум- мируется число кодовых слов, которые могут быть получены заменой любых k из п — I нулевых компонент кодового слова на любой из q — I ненулевых символов, любых I из I ненулевых Рис. 14.3. Некоторые слова, вызывающие ошибку декодирования. t4.3. РАСПРЕДЕЛЕНИЕ ВЕСОВ СВЕРТОЧНЫХ КОДОВ ВОб компонент на любой из оставшихся q — 2 ненулевых символов и любых j из оставшихся непулевых компонент на нули. Огра- ничение i + / + k = s гарантирует, что результирующее слово находится на расстоянии s от кодового слова. Ограничение / -|- -f- k — i — h. гарантирует, что результирующее слово имеет вес h. □ Теорема 14.2.3. Если 2f-b 1 с d* и декодер исправляет все конфигурации ошибок, вес которых не превышает t, то вероятность ошибочного декодирования равна Р. - Ё (Р/(1 - ?)l* (1 - Р)'-* Ё Ё АЛ(/, Л; s). /1 StZ-l Доказательство. Число конфигураций ошибок веса h, кото- рые приводят к ошибке декодирования, равно Jjs=dX”—О» h\ s); в силу условия 2t + 1 « d* ни одна из конфигураций оши- бок не сосчитана дважды. Вероятность каждой из них равна lP/(q — 1) j* (1 — P),l-h, что доказывает теорему. □ Теоремы 14.2.2, 14.2.3 и 14.1.2 содержат все необходимое для нахождения вероятности ошибки кода Рида—Соломона. Эта вероятность может быть вычислена непосредственно на ЭВМ. Приведенные соотношения легко модифицировать применительно к декодеру, исправляющему ошибки и стирания. Если число стираний равно р, то нужно просто заменить п на п — р, а ре на условную вероятность ошибки рс\р. Тогда если распределение вероятностей Q (р) числа стираний р известно, то рс может быть вычислено по формуле рс — Ep/MpQ (р)- 14.3. РАСПРЕДЕЛЕНИЕ ВЕСОВ СВЕРТОЧНЫХ кодов Вес бесконечно длинного кодового слова сверточного кода равен числу его ненулевых компонент. Свободное расстояние — это вес кодового слова минимального веса. Свободная длина — это длина сегмента кодового слова минимального веса до ею послед- него ненулевого кадра включительно. Если код настолько прост, что его решетку можно построить непосредственно, то все эти параметры можно найти по решетке. Например, на рис. 14.4 перерисована^ решетка сверточного (6,3)-кода, исследованного в гл. 12. Один'из путей имеет вес 5, и этот вес является минималь ным расстоянием кода. Длина этого пути равна трем кадрам, поэтому свободная длина кода равна 6. Информационная последо- вательность пути, определяющего свободное расстояние, содержит одну единицу. Изучая далее решетку, увидим, что вес 6 имеют два пути, вес 8 — один путь и вес 10 — один путь. Таким образом
606 Гл. 14 КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ Время Состояние 0 1 2 3 4 5 6 7 6 Последний поступивший бит Рис. 14.4. Представление сверточного (6, 3)-кодл с помощью решетки. можно пересчитать число путей каждого веса, но это занятие быстро становится утомительным. В этом параграфе мы опишем более эффективную процедуру. На рис. 14.5, а решетка после исключения временной оси све- дена к диаграмме состояний. Для удобства эта диаграмма со- стояний перерисована на рис. 14.5, б с маркировкой путей. Так как мы интересуемся только путями, которые начинаются и заканчиваются 00, узел, маркированный символами 00, представ- лен дважды: один раз как вход, второй раз как выход. На этой диаграмме состояний легко проследить путь веса 5. Вес пути можно найти проще, связав вклад каждого пути со степенью некоторой формальной переменной D и воспользовав- шись методом, предложенным для анализа диаграмм состояний. Модифицированная диаграмма состояний приведена на рис. 14.6, где вес ребра представлен степенью D. Вес пути получается умножением вкладов всех ребер вдоль этого пути. Вычислим общий вклад Т (D) совокупности всех путей между входом и выходом, решив следующую систему уравнений, най- денных по рис. 14.6: b - De 4~ Db, с = D2a f- b, d = De Dd, e = D2b. Решение этих уравнений дает 1 -2Р
U.S. РАСПРЕДЕЛЕНИЕ ВЕСОВ СВЕРТОЧНЫХ КОДОВ В07 Рис. 14.6. Мздифицчрованяая диаграмма состояний для сверточного (6, 3)-кода. а — с переменной D, подсчитывающей задержку; б — с перемен- ными D, Ln I, подсчитывающими соответственно задержку, число кадров и число единиц на входе. и поэтому передаточная функция равна T(D) = T^s- = Dt 1 2D‘+4o’+ •--U2‘°i+SJ--------------- Следовательно, вес А + 5 имеют 2к путей. Тот же метод можно использовать для изучения других свойств кода. Введем две новые формальные переменные, а именно L для подсчета кадров и / для подсчета числа единиц на входе. Вклад любого ребра равен одному L; если ребро соответствует поступлению единичного входного символа, то его вклад равен
508 ГЛ. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ одному /, а вклады остальных ребер не содержат /. Поэтому, как и ранее, получим 7’(D L 1) =----------------- = D44+ D4*(\+L)li + D’L5(l -\LfI4 ... 4-D5PL»+*(l Мы видим, что путь веса 5 имеет длину 3 и соответствует инфор- мационной последовательности с одним единичным символом. Вес 6 имеют два пути, каждому из которых соответствует инфор- мационная последовательность с двумя единицами; длина одного из этих путей равна 5, а другого 6. Таким образом мы полностью определим свойства сверточного кода. Эти свойства полезно знать при сравнении структур двух сверточных кодов; кроме того, знание дистанционной структуры кода необходимо при оценке вероятности ошибки кода, исполь- зуемого в конкретном канале. 14.4. ГРАНИЦЫ МИНИМАЛЬНОГО РАССТОЯНИЯ ДЛЯ БЛОКОВЫХ кодов О контролирующем ошибки коде с длиной п и скоростью R судят по его минимальному расстоянию d*. Если имеются два кода с одинаковыми п и R, то в общем случае следует предпочесть код с большим d*. Для данного кода 'ё хотелось бы знать, яв- ляется ли его d* максимально большим среди минимальных рас- стояний кодов с данными п и R. Вообще говоря, не считая слу- чаев, когда п довольно мало, ответ на этот вопрос неизвестен, и можно указать лишь некоторые грубые границы для d*. В част- ности, мы уже встречались с границей Синглтона, которая при п, много больших q, становится весьма грубой. Мы проведем лишь асимптотический анализ. При фиксиро- ванном объеме алфавита q введем обозначение d («, R) == max d* ^ё), ё где максимум берется по всем кодам с длиной ц и скоростью R, a d* (^) равно d*(®) = min d(x,y) x*y и представляет собой минимальное расстояние кода 'ё. Функция d(n, R) определяет наибольшее минимальное расстояние среди всех кодов над GF (q) со скоростью R и длиной п. Если не считать
14.4. ГРАНИЦЫ ДЛЯ БЛОКОВЫХ КОДОВ 5Q9 области малых значений п, функция d (п, R) неизвестна. Опре- делим, далее, Л (R) = Iim[d{n, R)/n] при условии, что этот предел существует. Если функция d (R) известна, то мы можем сказать, что при достаточно больших п наилучший блоковый код со скоростью R имеет минимальное рас- стояние d*, приблизительно равное nd(R). Поэтому функция d(R), если она известна, дает нам критерий, по которому можно судить о существующих классах контролирующих ошибки кодов. Кроме того, знание d(R) может дать нам некоторый ключ к изуче- нию структуры хороших кодов и указать путь их построения. Хотя знать функции d(n, R) и d(R) было бы весьма жела- тельно, в настоящее время они не известны. Все что мы знаем — это их нижние и верхние границы; некоторые из них выводятся в данном параграфе. Остановимся лишь на тех границах, которые можно получить, не прилагая больших усилий; в частности, мы получим границы, известные как нижняя граница Гилбертаи верхняя граница Элайса. Чтобы получить эти границы, воспользуемся методом исчерпы- вания и оценим композиции типичных кодовых слов. Композицией <?-ичного кодового слова назовем q-мерный вектор (п0, ..., nQ_j), — п, l-я компонента которого определяет, сколько раз в кодовом слове встречается l-я буква. Относительной частотой <?-ичного кодового слова называется «/-мерный вектор (р0, ... ...,pg_i), где pi — njn. Выразим границы минимального расстояния через полиномиальные коэффициенты n!/nzn(!, где означает произведение П?2о (nJ). Функция энтропии Н (р) определяется как Я (Р) = — S Pl log Pl. I Мы хотим доказать асимптотически справедливое при больших п равенство и сделать это как можно короче. Этому условию удовлетворяет доказательство, использующее формулу Стирлинга + iST=t)' *) Эта граница известна также под названием границы Варшамова—Гил- берта. — Прим. pel).
Б10 гл. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ Теорема 14.4.1. еп [Н |р) -с, (I)J [Н (р) -и, (1 >1 («!«) где <l)=!,'-fa l)lGK(2n'') | -i- logp, -i-log(l + |2п-1 ) «1(1)=^-(в1)1'«(М biX'oSftT +1Е|'>41+1е^Ьт)- Доказательство. . п1 . ^2^(n/ey'(l + l/(I2n~l)] _ (nl!) П1 [К2л 1 л {ni/e'f'l} 1М. w,ygSH + W»—D) ь flrfi Т Ht К2щл Замена nl = npt доказывает правую часть неравенства. Левая часть доказывается тем же способом. □ Теперь можно приступить к доказательству границы Гил- берта. Мы проведем его, подсчитав число кодовых слов внутри сферы с центром в произвольной точке пространства (не обяза- тельно представляющей кодовое слово) и затем усреднив это число. Число точек внутри сферы радиуса d назовем объемом сферы; оно равно v-O+fe-oO+.+w-ir'C). Теорема 14.4,2. Пусть V — число точек внутри сферы ра- диуса d с центром, в некоторой точке векторного пространства GF" (q). Для заданного кода мощности qk среднее число кодовых слов внутри сферы радиуса d с центром в произвольной точке пространства равно Т = qkVlqn. Доказательстве. Опишем сферы радиуса d вокруг каждой точки пространства. Подсчитаем число кодовых слов внутри каж- дой сферы и затем просуммируем по всем сферам. Так как на расстоянии, не превышающем d, вокруг кодового слова нахо- дится V точек, это слово лежит внутри V таких сфер. Поэтому сумма числа кодовых слов внутри всех сфер равна qkV, и, сле- довательно, в среднем на сферу приходится qkVlqn кодовых СЛОВ. □
14.4. Границы для блоковых КОДОВ S11 Теорема 14.4.3. Над GF (<?) существуют коды со скоростью R и минимальным расстоянием d, для которых /? > I - (1/л) log, V, где V — объем сферы радиуса d. Доказательство. Воспользуемся теоремой 14.4.2 и будем счи- тать, что Т 1. Если это не так, то можно взять любую точку, у которой на расстоянии, не превышающем d, нет кодовых слов, и объявить ее кодовым словом, тем самым расширив код. Следо- вательно, q*~nV^ 1, или я - й < log, V, откуда следует утверждение теоремы. Теорема 14.4.4 (граница Гилберта). Функция Я(7?)^б для всех значений б, которые удовлетворяют неравенству R —& log, (q — 1) -J- 6 log, б + + (l-«)Io&, (•-«) Доказательство. Объем V представляет сумму d слагаемых, из которых последнее является наибольшим *) Поэтому V<d(? 1/С). Используя теорему 14.4.1 и сделав подстановку 6 — din, получим V < d (q - iy>V |ОК96 - ° " с> logc - 6» -° <41, где о (1) стремится к нулю при п, стремящемся к бесконечности. Далее, -L log, V < 6 log, (q - 1) б log, б - (1 - б) log, (1 - б) - o' (I). Подставив это неравенство в неравенство, доказанное в теореме 14.4.3 и опустив в асимптотике член o' (1), завершим доказа- тельство. □ Для двоичных кодов граница Гилберта принимает вид R > 1 - Нь (d), где Нь (<?) = — d log» d — (I — d) log» (1 — d). Графически эта граница изображена на рис. 14.7. *) При d п’2. — Прим. ред.
Б12 Гл. 14. композиций и характеристики кодой Скорость R Рис. 14,7. Некотор^г известные границы функции й (/?) при q — 2. Теперь выведем верхнюю границу для d(R)> называемую границей Элайса. Предположим, что код имеет М = enR кодовых слов длины п. Совместной композицией кодовых слов с и с' на- зывается таблица {«“*) размера q X q, где элемент пц- опреде- ляет число позиций, в которых кодовое слово с содержит символ I, а кодовое слово с' —символ Г; следовательно, d(c, с') - S 1Ф1’ На расстоянии t от каждого кодового слова находится всего и, -(?-!)'(?) слов; это число равно количеству слов, расположенных на"сфере радиуса I. Теорема 14.4.5. Путь At — число кодовых слов на сфере радиуса t с центром в любой точке векторного пространства QFn (q). Для заданного кода ’S мощности qk среднее число кодовых слов на сфере с центром в произвольной точке пространства равно T, = q*At/qn. Доказательство. Так как на расстоянии t от кодового слова располагается At точек, оно лежит на таких сферах. Поэтому сумма числа кодовых слов, расположенных на всех таких сферах, равна qkAt, и среднее число кодовых слов на сфере равно qkAflqn. □
14.4. ГРАНИЦЫ ДЛЯ БЛОКОВЫХ КОДОВ 613 Выберем сферу так, чтобы на ней число кодовых слов было бы не меньше среднего. Удобно представить себе, что центром такой сферы является слово, целиком состоящее из нулей. Для этого достаточно так отобразить на себя исходное пространство, вклю- чая кодовые слова, чтобы центр выбранной сферы совпал со словом, целиком состоящим из нулей. Это не повлияет на мини- мальное расстояние кода. Таким образом получим сферу радиуса / с центром в начале координат, на которой лежит Т кодовых слов, где Т не меньше ”At. В дальнейшем величина I будет выбрана так, чтобы Т было достаточно большим и удовлетворяло нашим целям. Следу- ющий шаг — оценка расстояния между двумя кодовыми словами, находящимися на сфере. Чтобы получить ее, оценим среднее расстояние между такими кодовыми словами ^av = Т [Т_I) ^|о1’ где dtoi — общее расстояние, получаемое суммированием рас- стояний между неупорядоченными парами кодовых слов (не обя- зательно различных) на сфере: d(ot =» с’) = «ш- Напомним, что {л«'| — это совместная композиция кодовых слов с п с. Упростим суммирование по с и с. Пусть пц'ц равно единице, если в i-й позиции с стоит I, а с' имеет в этой позиции I'; в противном случае оно равно нулю. Пусть Тщ — число кодовых слов па сфере, имеющих I в i-й позиции. Тогда = X X X пн-1 i = = Ъ \ ЪиSтЦ1тП1. Введем теперь величину Ац/ = Тщ/Т, равную доле кодовых слов на сфере, имеющих I в i-й позиция. Общее расстояние между такими кодовыми словами равно ^tot — Тг £ Xi А/ j /Du', 17 Р. БлеЯхут
14.4. ГРАНИЦЫ ДЛЯ БЛОКОВЫХ КОДОВ 5J5 Bl4 ГЛ. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ где ©н- равно единице, если I =f= I', и нулю в противном случае. Значения Х( । , нам неизвестны, но мы знаем, что они удовлетворяют двум следующим ограничениям: 7=0 Z-li-0 Так как X/g неизвестны, рассмотрим наихудший случай, выбрав их значения так, чтобы при одновременном выполнении указан- ных ограничений величина в правой части формулы для dlvi была бы как можно больше. Если предварительно доказано, что максимальная функция является выпуклой функцией вероятност- ного вектора X, то один из методов решения задачи состоит в ис- пользовании множителей Лагранжа. Чтобы упростить доказатель- ство, воспользуемся вместо этого элементарным приемом: сначала укажем, какие значения X/ j ,• являются максимизирующими, а за- тем докажем, что они в самом деле таковы. Лемма 14.4-6- Пусть F (1.) -= £]< £z. z<Xz j 7^г ।/©zr» где Du- равно единице, если I =/= Г, и нулю в противном случае. Если для X имеют место ограничения Q I <7—1 п— 1 И SS>-1U = '. 7—0 I -I 7—0 то Доказательство. Прежде всего заметим, что из указанных ограничений вытекает соотношение Д Хо,. - п—1. I о Пусть 1 -t/n, 1^0, (</«)/(»-1), 1-1.....q 1 при всех I. Убедимся, что эти значения максимизируют F (X). Заметим, что _ Р/«> Г=0’ Ь „Du- - 11 |(//пМ? _ |)( 0 Xj|i — Поэтому при всех ?, которые удовлетворяют нашим ограничениям, включая X X*, л- 1 9 ‘ «I ЕМ- “'(‘-Д)г(» <>4- Раскрыв скобки п проведя упрощения в левой части этого равен- ства, получим 2- fS (X/1t X* 11) (Xj J, Xr I z) Da- = = L z XI (Xr । ,Xz-1 z - x;,,v-1,-) Du- Достаточно показать, что величина в левой части этого равенства неположительна. Введем обозначение С/ | 7 = (X/) 7- Х| | z) и заметим, что ।« ~ 0. Необходимо доказать, что при любом I Jj (с/1 tCi-1,-) Du- с 0. I. г Но при любом i X С/ I icf\ 1^11- = 2j Cl I 401 i — £ cl 11 = 0 — £ C? I 7 C 0. Il- I. I- I I Доказательство леммы завершается вычислением значения F (X*). □ Теорема 14.4.7 (граница Элайса). Пусть Г = ,- где I произвольно. Если 7” > 1, то любой код над GF (у) со ско- ростью R и длиной п содержит пару кодовых слов, расстояние d между которыми удовлетворяет неравенству Доказательство. Выберем величину t в теореме 14.4.5 так, чтобы Т, было больше единицы. Тогда существует сфера, на 17*
616 гл. 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОДОВ которой число кодовых слов Т больше единицы. Среднее расстоя- ние между этими кодовыми словами удовлетворяет неравенству <1„<ГГ/(7 1)] Для завершения доказательства необходимо применить лемму 14.4.6 и воспользоваться тем, что хотя бы два кодовых слова должны располагаться друг от друга на расстоянии, не меньшем среднего. □ Следствие 14.4.8 (граница Элайса). В двоичных кодах со ско- ростью R относительное минимальное расстояние асимптоти- чески удовлетворяет неравенству d (R) < 2р (1 - р) при любых р, для которых 1 — Нь (р) > R. Доказательство. Положим в теореме 14.4.7 q = 2, tin — р и перепишем неравенство теоремыт14.4.7 в'виде р), где 7’ = 2"в+оО) и в = Яь(р)~ H R- По условиям следствия величина 6 положительна; поэтому ТЦТ — 1) стремится к единице, когда п стремится к бесконеч- ности. Следствие доказано. □ 14.5. ГРАНИЦЫ МИНИМАЛЬНОГО РАССТОЯНИЯ ДЛЯ] СВЕРТОЧНЫХ КОДОВ Минимальное l-е расстояние dj для сверточного кода с длиной блока л = (л; |1) л0 определяется как минимальное расстояние Хэмминга среди всех пар начальных сегментов кодовых слов длины m + 1 кадров, у которых первые кадры различны. Ми- нимальное расстояние d* сверточного кода равно 4т+ь а свобод- ное расстояние определяется соотношением d,*, — maxd'. i В этом параграфе мы найдем границы типа границ Гилберта и Элайса для d* и d^. Очевидно, что любой сверточный код можно усечь до длины W и получить блоковый код длины N; этот блоковый код не может быть лучше наилучшего блокового кода длины Целью настоя- щего параграфа является изучение поведения расстояния в за- висимости от других мер длины кода, таких, как длина блока и
14-5, ГРАНИЦЫ ДЛЯ СВЕРТОЧНЫХ КОДОВ 517 свободная длина. Конечно, если несколькими способами опреде- лять и кодовое расстояние, и длину кода, то, комбинируя эти опре- деления, можно получить различные границы. Границы, которые будут получены в настоящем параграфе, можно сравнивать с границами для блоковых кодов. Однако делать какие-либо заключения опасно, так как не ясно, какой параметр сверточного кода соответствует длине блокового кода. Пусть объем алфавита q фиксирован; определим d (п, /?) _ max d* f?’), У где максимум берется по всем сверточным кодам с длиной блока п и скоростью /?, a d* (&) означает минимальное расстояние для кода "й7. Функция d (п, R) определяет наибольшее минимальное расстояние по всем сверточным кодам над Gb (q) со скоростью 7? и длиной блока п. Обозначим, далее, d (7?) — lim Id (л, R)!n] при условии, что этот предел существует. Если функция d {/?) известна, то мы можем сказать, что при достаточно больших п наилучший сверточный код со скоростью R имеет минимальное расстояние d*, приблизительно равное nd (R)- Поэтому функция d (/?), если она известна, дает нам критерий, по которому можно оценивать сверточные коды. Аналогичные определения можно дать и для свободного рас- стояния. В зависимости от того, что рассматривается: отношение свободного расстояния к длине блока или к свободной длине, можно получить различные функции. Определим doo (n, R) = max dTC С®’), где максимум берется по всем сверточным кодам с длиной блока п и скоростью R, a doo (1F) означает свободное расстояние кода Ч?. Функция doo (п, R) определяет наибольшее свободное расстояние по всем сверточным кодам над GF (q) со скоростью R и длиной блока п. Обозначим, далее, doo (7?) = lira id.» (п, R)/n] при условии, что этот предел существует. Как и ранее, если функция doo (R) известив, то мы можем сказать, что при доста- точно больших п наилучший сверточный код со скоростью R и длиной блока п имеет свободное расстояние doo, приблизительно равное ndoo (R).
Б18 ГЛ. Н- композиция и характеристики кодов Так как обычно dm ('&') больше d* (^), можно ожидать, что и doo (R) больше, d (7?). В некоторых случаях полезно использо- вать также следующее альтернативное определение. Пусть do, (п, R) означает свободную длину кода, на котором достигается de (п, R). Свободная длина более тесно связана со свободным расстоянием и сложностью декодера, чем длина кода. Обозначим doo(V?) = lim [dTO(n, 7?)/fl«, («, Я)] при условии, что этот предел существует. Тогда если функция doo (Л) известна, то можно сказать, что при достаточно большой свободной длине п наилучший сверточный код со скоростью R имеет свободное расстояние, приблизительно равное ndoo (/?). Мы ограничимся построением границы лишь для функции d (R). Границу типа границы Элайса легко получить, воспользо- вавшись ранее выведенной границей для блокового кода. Эта граница будет приведена лишь для двоичных сверточных кодов. Теорема 14.5.1 (граница Элайса). Для двоичного сверточного кода со скоростью R функция d (7?) удовлетворяет условию d(R) 2р (| -р) при любом р, таком, что I — Нь (р) > R. Доказательство. Усечением сверточного кода с длиной блока п = тп0, где т произвольно, получим блоковый код длины п. Скорость этого блокового кода также равна R. так как каждые k0 информационных символов кодируются п0 символами кодового слова. Минимальное расстояние этого усеченного кода не больше минимального расстояния наилучшего блокового кода. Следова- тельно, любая верхняя граница минимального расстояния блоко- вого кода является также верхней границей минимального рас- стояния сверточного кода*). Такой границей является граница Элайса. □ Граница Гилберта не может быть получена использованием границы Гилберта для блоковых кодов; ее нужно доказывать не- посредственно. Заметим также, что поскольку сверточные коды линейны, приведенная ниже граница Гилберта сильнее, чем гра- ница Гилберта, ранее доказанная для блоковых кодов, которая лишь утверждала существование некоторого кодв, не обязательно линейного. Прежде чем доказывать границу Гилберта, необходимо дока- зать лемму. Лемма касается начального сегмента кодового слова 1) Это утверждение неточно. — Прим. ред.
14.6. Границы для сверточных кодов ыд сверточного кода, т. е. сегмента кодового слова, состоящего из первых п символов. Лемма 14.5.2. Начальный сегмент кодового слова, начинаю- щийся с ненулевого кодра, входит точно в ’Мп.-*,) (*--•) различных систематических сверточных (п0, k^-кодсв с длиной слова (т 4- I) kD. Доказательство. Так как код систематический, задание пер- вых п символов кодового слова определяет первые (т J 1) kD информационных символов. Первые (т ~Т 1) п0 символов кодо- вого слова связаны с первыми (т 4- 1) ka информационными символами через порождающую матрицу. Эта матрица описы- вается т 4- 1 матрицами Ро, ..., Рт, каждая из которых имеет размер kD X (л0—ku\ Проверочные кадры (р0, pj, ..., р,п), число которых равно т 4- 1, определяются следующим матричным равенством: (Ро. Р., -.Р„.) = («о. Ро Р1 Р, О Ро -Р^ О О Ро Поэтому 1ОРС р0; это равенство задает и0 — k0 ограничений па («о — *о) элементов Ро; отсюда следует, что (kg — 1) (п0 — k0) элементов могут быть выбраны независимо. Следовательно, при фиксированном первом кадре кодового слова матрица Рп может быть выбрана q (ko — 1) (л0 — k0) способами. Аналогично 10Р, Pi - и матрица Рх может быть выбрана q (kg - — О (ло — k<) способами. Продолжая процесс, убеждаемся, что каждая матрица ₽i может быть выбрана столькпмя же способами, и поэтому существует ("•-*»> J«-M сверточных кодов, у которых начальное кодовое слово фиксировано. □ Теорема 14.5.3. Пусть при заданной скорости 7? = k0!n0 и длине блока л =(т 4- I) л, величина р удовлетворяет условию Тогда существует хотя бы один систематический сверточный код над GF (q), минимальное расстояние d* которого больше р. Доказательство. Минимальное расстояние сверточного кода больше р, если код не содержит начального сегмента кодового слова длины п и веса не больше р, у которого некоторый информа- ционный символ первого кадра отличен от нуля. В множестве
620 ГЛ. 14- КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ кодов ЗАМЕЧАНИЯ 621 всех сверточных кодов с длиной блока п можно сосчитать общее число начальных кодовых слов, вес которых не больше р и которые имеют ненулевой символ в первом кадре. Если их число меньше числа систематических сверточных кодов, то существует хотя бы один код, у которого минимальное расстояние больше р. Так как систематический сверточный (п0, fej-код описывается (п0 — k0) k0 порождающими многочленами степени не выше т и каждый такой многочлен может быть выбран д'“+{ различными способами, то число таких кодов равно -Н )<««—*<>) *«. Ненулевые «-последовательности веса, не превышающего р, можно выбрать О' способами. Согласно лемме 14.5.2, каждый начальный сегмент кодового слова, имеющий ненулевой символ в первом кадре, может войти не более чем в («о—ад (£»—i) различных система- тических сверточных («0, fej-кодов. Следовательно, если У (') <7 — 1)'Г j («.-ад ь», то должен существовать хотя бы один код с минимальным рас- стоянием, большим р. Теорема доказана. □ Следствие 14.5.4 (граница Гилберта). Для двоичных сверточ- ных кодов Доказательство. При q = 2 теорема утверждает, что л (я. щ Ё (;)^2п(| -*>. Следовательно, dfn. R) (l/n)log S (J),-, 1 R. Отсюда, используя теорему 14.4.1 и переходя к пределу, полу- чаем утверждение следствия. □ ЗАДАЧИ 14.1. Рассмотреть (31, 27)-код Рида—Соломова. а. Сколько кодовых слов имеет вес 5? 6. Сколько конфигураций ошибок имеют вес 3? в. Какав часть конфигураций ошибок веса 3 не обнаруживается? г. Пусть слово выбрано случайно (с одинаковыми вероятностями для всех его значений). Какова вероятность того, что оно будет декодировано? 14.2. Используя тождество Мак-Вильямс и табл. 5.3, найти распределе- ние весов кода, дуального расширенному (24, 12)-коду Голея. (В действительности расширенный (24,12)-код Голея является дуальным самому себе; такие коды называются самодуальными.) 14.3. Доказать, что в линейном блоковом коде над GF (2) либо не суще- ствует слов с нечетным весом, либо половина слов имеет нечетный вес. 14.4. Простейшим двумерным двоичным кодом с N строками и М столб- цами является код, исправляющий одну ошибку. В каждой строке и в каждом столбце он имеет по одному проверочному символу. Минимальное расстояние кода равно 4. Предположим, что этот код используется для обнаружения ошибок в двоичном симметричном канеле с переходной вероятностью q. Какова вероят- ность необнаруженной ошибки? При вычислениях необходимо учитывать лишь члея с минимальной степенью q. 14.5. Исправляющий t ошибок (п, £)-код Рида—Соломона имеет мини- мальное расстояние k 4- 1 = 2/4- 1 и число слов веса d* равно Аа. = -G.) <’-') а. Сколько существует конфигураций ошибок веса t т 1? ~ 6. Непосредственным подсчетом найти число конфигураций ошибок веса <4-1, которые декодер» декодирующий в пределах радиуса упаковки, декодирует неправильно. в. Какая доля конфигураций ошибок веса /4-1 декодируется непра- вильно? _ г. Дать численный ответ на вопрос и. в в случаях q — 32. t — и q — 64, 1 = 6. 14.6. Оценить сумму компонент распределения весов 14.7. Исправляющий i ошибок (п, £)-код Рида—Соломона имеет минималь- ное расстояние d* = п—£4-1=2/ 4- 1 и число слов веса d* равно Adt = X Х ^а. Сколько существует конфигураций пакетов ошибок веса /4- I и длины /4-1? . б. Найти число конфигураций пакетов ошибок веса 1 + I и длины /4-1, которые декодер, декодирующий в пределах радиуса упаковки, деко- дирует неправильно. , в. Какая доля конфигураций пакетов ошибок веса / т 1 и длины /4-1 декодируется ненравильно? г. Дать численный ответ на вопрос п. в в случаях q = 32, / = 5 и q = 64, t = 6. 14.8. Пусть код Рада—Соломона над GF (2т) используется как код, исправ- ляющий многократные пакеты ошибок над GF (2). Рассмотреть декодирование принятых слов, которые находятся вне радиуса упаковки кода. 14-8. Порождающие многочлены двоичного сверточного (8, 4)-кс>да равны g,(*) = *»4-Х4- i, g2(x) = *®4-*®4-х4-1- Найти его свободное расстояние, свободную длину и число единиц но входной последовательности, соответствующей пути с длиной, равной свободной. ЗАМЕЧАНИЯ Распределение весов кода с максимальным расстоянием было найдено незави- симо Ассмусом, Мэттсоном и Турином 119651, Форни 119661, Касами, Лином и Питерсоном 119661 Тождество Мак-Ввльямс было выведено ею в 1963 г. В этой же статье она дала свою трактовку связи между распределением весов и вероят-
622 ГЛ. 14. композиция и характеристики кодой костью ошибки декодирования. Иная трактовка принадлежит Форни 11966] и Хунтуну п Михельсону [1977]. Использование диаграммы состояний дли нахождения распределеоия весов сверточного кода предложил Витерби [1971] Нижняя граница минимального расстояния блоковых кодов опублико- вана Гилбертом [1952]. Э.чайс никогда не публиковал свою верхнюю границу; впервые она появилась в его лекциях в 1960 г. Известны и лучшие верхние границы, но они доказываются гораздо сложнее Наилучшая известная верхняя граница найдена Мак-Элисом, Родемичем, Рамсеем н Велчем [1977 J. В недавно выполненной в СССР работе1) показано, что в СР (49) граница Гилберта может быть улучшена. ') См. работу: Tsfasman М A., Vladuts S G., Zink Th. Modular curves. Shimnra curves and Coppa codes, belter than Varshamov—Gilbert bound. — Math. Nadir, 1982, Bd 104, S. 13—28. Она существенно опирается на работу Гоппа В Д Коды на алгебраических кривых — ДАН СССР, 1981, т. 259, №6, с. 1289—1290 —Прим. ред.
ГЛАВА 1S ЭФФЕКТИВНАЯ ПЕРЕДАЧА СИГНАЛОВ ПО ЗАШУМЛЕННЫМ КАНАЛАМ Сердцем любой цифровой системы связи обычно является анало- говый канал—канал непрерывный как по амплитуде, так и по времени. На вход канала подается аналоговый сигнал, пред- ставляющий собой непрерывную функцию времени с веществен- ными или комплексными значениями. Цифровая система связи для такого канала включает модулятор/демодулятор (модем), преобразующий аналоговый канал в дискретный, так, чтобы можно было использовать кодер/декодер (кодек). Использование контролирующих ошибки кодов приносит наи- лучшие результаты при разумном согласовании устройства модема с устройством кодека. На этом уровне проектирования совместно используются теория информации, теория связи и теория кон- тролирующих ошибки кодов. Чтобы представить контролирующие ошибки коды в более широком контексте, мы вкратце коснемся в этой главе некоторых разделов теории информации и теории связи. В таком контексте станет более ясной роль контроли- рующих ошибки кодов как одного из средств проектирования эффективных систем передачи сигналов по непрерывным зашум- ленным каналам В настоящей главе описаны алгоритмы декодирования, исполь- зующие дополнительную информацию, получаемую от демоду- лятора. При одном и том же коде эти декодеры с мягким решением, вообще говоря, имеют лучшие характеристики, чем декодеры с жестким решением, но в силу их большей сложности они полезны лишь для коротких кодов Исключением является класс после- довательных декодеров; эти декодеры могут без труда исполь- зовать информацию мягкого решения даже для кодов с большой длиной кодового ограничения, однако при этом возникает проблема переполнения буфера.
Й24 frfl- >8- ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ |щ 15.1. ОГРАНИЧЕННЫЙ ПО ПОЛОСЕ ГАУССОВСКИЙ КАНАЛ Пусть на вход общего сигнального канала в течение некоторого длительного интервала Т можно подавать любую непрерывную функцию s (I), где t пробегает значения от 0 до Т, и выполняется условие конечности интеграла £„=j s’(/)<#. Этот интеграл от s8 (/) называется энергией сообщения Ет для сигнала s (/). Если Т стремится к бесконечности, то средняя мощ- ность S определяется как предел S = lim [£га(7)/7] Т—о> при условии, что он существует; здесь Em (Т) — энергия сооб- щения на интервале длины Т. Если сигнал выбирается случайно из ансамбля сигналов, то используются другие определения мощности, такие, как предел математического ожидания отноше- ния Ет (Т)!Т по ансамблю сигналов. Каналы обычно накладывают ограничения на вид допустимых сигналов. Канал, ограниченный по полосе, —это канал, который пропускает лишь те сигналы с модулированной несущей, которые известны под названием ограниченных по полосе сигналов. Сигнал с модулированной несущей определяется выражением se (/) = a (t) cos (2afot + 0 (/)) = = sB (f) cos 2л/с/ -|- s/sin 2nfot, где a (t) и 0 (/) — вещественные функции, задающие так назы- ваемые амплитудную модуляцию и фазовую модуляцию соответ- ственно, a sR (0 и s{ (t) называются вещественной и мнимой компонентами модуляции соответственно. Последние два термина объясняются зачастую более удобным альтернативным комплекс- ным описанием модуляции где з (/) -= sR (t) + jst (t). Комплексный сигнал s (i), ограничен- ный по полосе, представляет собой лишь математическую фикцию; наблюдаемый сигнал (f) определен ранее. Величина f0, называе- мая несущей частотой, постоянна и не играет существенной роли в изучаемых нами задачах, хотя и имеет главенствующее значение в передаваемом сигнале.
IB.i. ОГРАНИЧЕННЫЙ ПО ПОЛОСЕ КАНАЛ 62 6 Спектр сигнала s(f) определяется преобразованием Фурье $(/) = Ограниченный по полосе сигнал — это сигнал, спектр которого сосредоточен в малом интервале частотной оси около несущей частоты /е. Длина этого интервала называется шириной полосы и обозначается W, причем W меньше 2/0. В идеале S (f) = 0 при | / — /0 | > W/2, но на практике приемлемо более слабое условие, такое, как | S (f) | < е при [ f — /01 > W/2. После кодирования кодовое слово или последовательность кодовых слов должны быть отображены в модулированные сигналы (a (!), 0 (/)) или (sR (t), Sj (0). Эта операция отображения назы- вается модуляцией, а обратная ей операция называется демоду- ляцией. Изучение этих операций составляет главный предмет теории цифровой связи. Исторически исследование контролиру- ющих ошибки кодов велось независимо от исследования цифровой модуляции. В этой главе, однако, мы будем придерживаться такого подхода к системам модуляции и демодуляции, при кото- ром вопросы, относящиеся к контролирующим ошибки кодам и к цифровой модуляции, излагаются совместно. Выходной сигнал v (t) ограниченного по полосе гауссовского канала с входным сигналом s (I) определяется сверткой о(0 = fe(/)*(s(0 + n(0), где h(f) — ограниченная по полосе функция, называемая им- пульсным откликом канала, а шумовой сигнал п (t) — выборочная функция гауссовского случайного процесса. Гауссовский шум является стандартом, который обычно ис- пользуется для суждения о качестве схемы модуляции даже в том случае, когда допускается использование модема при другом шумовом процессе. Более того, в качестве стандартного гаус- совского шумового процесса выбирается белый шум. Односторон- няя спектральная плотность сигнала в виде белого шума равна No Вт/Г'.. Теория цифровой связи утверждает, что если 2 ЖДУ < 1, то можно рассматривать входной и выходной сигналы изучаемого нами канала лишь в дискретные равноотстоящие моменты вре- мени kAT. Поэтому дискретный во времени входной сигнал будем представлять как совокупность отсчетов s (fe ДУ) = sR (k AT) + + jsj (fe AT), или, короче, sA = sbr + js/r при» fe = 0, ±1, ±2, ..., где впь и Sir вещественны. Хорошо известная теорема отсчетов позволяет восстановить s (f) по отсчетам. Обычно удобно выбирать h (t) (быть может, путем добавления к модулятору и демодулятору специальных выравнивающих
В26 ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ 1 , • • • • • 1 • 2-ичныи • • 1-ичная ФТ В-ичная ФТ •—-н—• 4-ичцый • • • • • • • • - _ . . 1 . . . . • • • • • • 8-ичмьш 1 В-ичная 16-ичная :::: • • • • 16-ичньш • • • • • 32,-ичноя 64-очная а в Рис. 15.1. Некоторые наборы сш налов а — иеществсицые модуляционные алфавиты, б — комплексные модуляционные алфавиты (фалгвая теле- графия). фильтров) так, чтобы h (k АТ) равнялось нулю при k, отличных от нуля, и равнялось единице при k, равном нулю. Тогда принятый сигнал v (t) представляется дискретными отсчетами vh = «а n* = (s«fe + «их) F / (Sih ntk), k = 0, ± 1. ±2..... где |nft} — отсчет вносимого аналоговым каналом шума в моменты k АТ. В случае когда /?-й выходной отсчет зависит лишь от fe-ro входного отсчета, говорят, что межсимвольная интерференция отсутствует. Если п (t) — гауссовский процесс, то nfc — комплекс- ные гауссовские величины с нулевым средним. Более того, можно так организовать передачу по каналу, чтобы гауссовские случай- ные величины пк можно было рассматривать как независимые Этот случай изучается в первую очередь. Очень часто при построении цифровой системы связи для представления /n-битовых байтов выбирают совокупность 2Г- вещественных или комплексных чисел, называемую набором сигналов (или модуляционным алфавитом) На рис. 15.1 приведены некоторые типичные наборы сш налов. Представлены четыре мо дуляционных алфавита с вещественными значениями, объеди-
15.2. ЭНЕРГИЯ Н ЧАСТОТА ОШИБОК НА БИТ 527 няемые названием Л4-ичная амплитудная модуляция, и шесть мо- дуляционных алфавитов с комплексными значениями, для обозна- чения которых используется несколько названий, а именно фа- зовая теле|рафия (сокращенно ФТ), квадратурная амплитудная модуляция, амплитудно-фазовая модуляция (сокращенно АФМ). Не обсуждая выбор наборов сигналов, рассмотрим лишь их ис- пользование применительно к кодированию. Как правило, кодовое слово длины п над GF (q) отображается в последовательность элементов модуляционного алфавита длины п. (Возможны и другие варианты: например, модуляцион- ный алфавит объема 2F'2 может использоваться с кодом над GF (2'") путем отображения символов кодового слова в пары букв алфавита.) Демодулятор, принимающий жесткое решение, вновь отображает множество вещественных или комплексных чисел, представляющее собой последовательность в множество символов модуляционного алфавита, а затем и в символы кодо- вого слова. 15.2. ЭНЕРГИЯ НА БИТ И ЧАСТОТА ОШИБОК НА БИТ Цифровая система связи включает кодер и модулятор па переда- ющем конце и демодулятор и декодер на приемном конце. Ка- чество такой системы частично характеризуется вероятностью ошибки на бит, которая также называется частотой ошибок на бит (ЧОБ) В фиксированной цифровой системе связи, переда- ющей дискретные данные по каналу с аддитивным гауссовским шумом, частота ошибок па бит всегда может быть уменьшена путем увеличения мощности передатчика, которая также является одной из характеристик качества цифровой системы связи. Луч- шей из двух цифровых систем связи считается та система, которая достигает желаемой частоты ошибок на бит при меньшей переда- ваемой мощности передатчика. Для сообщений конечной длины, состоящих из К информацион- ных битов и имеющих энергию сообщения Ет, энергия Еь, при- ходящаяся на бит, определяется отношением Е, = Вообще говоря, энергия на бит Ei — это не та энергия, которая может быть найдена по отдельной части сообщения, и не та энер- гия, которая может быть измерена. Она вычисляется по энергии всего сообщения. Определение Еь включает также число битов на входе блока кодер/модулятор. Если же рассматривать вход канала, то можно обнаружить сигналы, построенные так, что число символов в них, воспринимаемых как символы канала, будет больше. Эти дополнительные символы могут быть провероч-
528 ГЛ. 15. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ ными символами, служащими для исправления ошибок, символами кадровой синхронизации или символами канального протокола. Эти символы не несут передаваемой информации. Для вычисле- ния Еь используются лишь информационные биты. Для сообщений бесконечной длины, передаваемых с постоян- ной скоростью 7? информационных бит/с, величина Еь опреде- ляется отношением Eb = SIR, где S — средняя мощность сообщения. Кроме сообщения в приемник поступает и белый шум с одно- сторонней спектральной плотностью No Вт/Гц (Дж). Ясно, что условия приема сигнала не изменятся, если удвоить и сигнал, и шум: на частоту ошибок на бит влияют только отношения Ет1Мп или Eb!Na. Для сравнения двух различных схем передачи сигна- лов исследуются графики зависимостей их ЧОБ от требуемых отношений EblN0. Как это ни удивительно, можно точно сформулировать утвер- ждение относительно значений EblNo, при которых существуют хорошие сигналы. Исходным понятием для вывода границ Eb!NB является шенноновская пропускная способность канала. Нам необходима лишь формула пропускной способности канала с ад- дитивным гауссовским шумом. Она утверждает, что, каков бы ни был сигнал s (t) мощности S = EbR со спектром S (f), обра- щающимся в нуль при | f | > W/2, передача по каналу с аддитив- ным белым гауссовским шумом с произвольно малой частотой ошибок на бит возможна лишь в том случае, когда в секунду передается не более С « W lofe [I + S/(NBW)] битов. Обратно, всегда существует сигнал s (I), который позво- ляет сколь угодно близко приблизиться к этой скорости передачи и к этому ограничению по полосе, как мала ни была бы требуемая частота ошибок на бит. Эта знаменитая формула, которая вы- водится в любом учебнике по теории информации, дает критерий для оценки цифровой системы связи. Теорема 15.2.1. В любой цифровой системе связи, передающей информацию на фоне белого гауссовского шума спектральной плот- ности No, необходимо, чтобы энергия на бит удовлетворяла не- равенству Еь > Na logs 2 = 0,69М>, где Еь измеряется в джоулях, a Nq — в ваттах на герц.
1Б.2. ЭНЕРГИЯ И ЧАСТОТА ОШИБОК НА БИТ 529 Доказательство. Ширина полосы U7 в теореме не ограничена. Заменим в формуле Шеннона для пропускной способности S па REb и устремим W к бесконечности. Тогда А с (REblN0) log2 е, откуда непосредственно следует утверждение теоремы. □ Если отношение EblN0 измеряется в децибелах, то наше неравенство переписывается в виде EblNo —1,6 дБ, так что значение Eb!Nb = —1,6 дБ устанавливает нижний пре- дел для допустимого отношения Еь/No. Экспериментально уста- новлено, что при отношении EbINc, приблизительно равном или большем 12 дБ, выбор сигнала, обеспечивающего малую частоту ошибки на бит, не представляет труда. Следовательно, проблема выбора сигнала возникает лишь в том случае, когда отношение EblN0 лежит между этими двумя числами и ширина области составляет примерно 14 дБ. Для этой области и производится сравнение структур сигналов, выбираемых для канала с гауссов- ским шумом. В случае когда предоставляется лишь ограниченная ширина полосы, требования на энергию становится жестче. Определим спектральную скорость г в битах (измеряемую в битах в секунду на герц) как г = RIW. Спектральная скорость г в битах и Eb/No представляют со- бой две важнейшие характеристики цифровой системы связи. Теорема 15.2.2. Пусть г — спектральная скорость в битах для некоторой цифровой системы связи. Тогда Еъ 2Г— 1 W® г * Более того, можно так сконструировать систему передачи, чтобы она обеспечивала надежную передачу при любом положитель- ном £ U Доказательство. Из формулы Шеннона для пропускной спо- собности вытекает, что при любом положительном е' может быть
530 ГЛ. IB. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ В этой области не существует ни обной цифровой системы связи S& <5С । Для любой точки этой области может быть построена цифровая система связи 2 3 4 5 Энергия Еь/Л/п, Дж/СВт/Гц) Рис. 15.2. достигнута скорость передачи информации Я, удовлетворяющая неравенству Отсюда непосредственно следует утверждение теоремы. Г~ Последняя теорема утверждает, что возрастание скорости передачи в битах на единицу полосы увеличивает требуемую энергию на один бит. Она является основой соотношений между энергией и шириной полосы в цифровой теории связи, где воз- растание ширины полосы при фиксированной скорости передачи информации может ослабить энергетические требования. Утверждение теоремы 15 2.2 иллюстрируется рис 15 2. Любая система связи может быть описана точкой, лежащей ниже при- веденной кривой, и для любой точки ниже этой кривой можно сконструировать систему связи, у которой частота ошибки на бит может быть сделана настолько малой, насколько это желательно. История цифровой связи в какой-то степени представляет собой серию попыток приблизить системы к этой предельной кривой, сохраняя очень низкую частоту ошибок На бит. Такие системы используют как модемную технику, так и методы исправления ошибок. В некоторых цифровых системах связи водораздел между модемом и кодеком четко не обозначен. Демодулятор передает дополнительную информацию, которая помогает декодеру улуч- шить его характеристики. Это можно сделать многими способами. Например, в двоичном канале можно использовать приемник, у которого каждому принятому биту соответствует выходной
18.3. МЯГКОЕ ДЕКОДИРОВАНИЕ БЛОКОВЫХ КОДОВ б91 сигнал из трех бит. Он называется обнаружителем с мягким ре- шением. Комбинация, состоящая из трех нулей, соответствует тому, что «уверенно» был принят нуль, а комбинация, состоящая из трех единиц, соответствует «уверенному» приему единицы. Другие комбинации трех двоичных символов соответствуют раз- личным степеням неопределенности в приемнике. Для улучшения декодирования декодер может использовать эти мягкие решения. Мы уже знакомы с простейшим вариантом мягких решений — двоичным стирающим каналом. Три значения выходного сигнала приемника могут быть обозначены через 10 (жесткий нуль), 01 (жесткая единица) и 00 (стирание). Другим примером мягкого решения является списочное де- кодирование в g-ичном канале. Вместо одного наиболее вероят- ного значения каждого символа демодулятор выдает два или три наиболее вероятных значения, иногда приписывая каждому из них некоторую вероятностную меру. Конечно, если код фиксирован, то декодеры, использующие информацию мягкого решения, имеют, вообще говоря, лучшие характеристики; поэтому можно выбирать декодер, исходя из этих соображений. Однако такой подход не является бесспорным. Прежде всего системы с мягким решением достигают своих по- тенциальных возможностей только в том случае, когда статистика шума в канале достаточно стационарна и достаточно хорошо под- дается .моделированию. Если же шум прерывистый и переменный во времени или недостаточно хорошо известен, то следует пред- почесть жесткое решение или жесткое решение со стиранием. Кроме того, декодер с мягким решением дороже. Еслп стоимость системы фиксирована, то длина кода, используемого с декодером с мягким решением, меньше» чем кода, используемого с декодером с жестким решением. Следовательно, декодер с мягким решением не обязательно является лучшим. Декодер с жестким решением может иметь лучшие характеристики, чем декодер с мягким решением, использующий код, у которого длина меньше. Иногда система с мягким решением лучше удовлетворяет практическим требованиям. В других случаях лучше использовать систему с жестким решением, так как она позволяет использовать более мощный код. Выбор той или иной возможности является трудной инженерной задачей, которую нельзя правильно решить, исходя лишь из теоретических соображений- 15.3. МЯГКОЕ ДЕКОДИРОВАНИЕ БЛОКОВЫХ КОДОВ Вероятность ошибки декодирования минимизируется одновре- менным выбором демодуляции и декодирования. Модулятор ото- бражает qk кодовых слов в qh сигналов sr (t), где г 1, ..., qk.
832 М. is. ПЕРЕДАЧА ЙО ЗАШУМЛЕННЫМ КАНАЛАМ Выходной сигнал канала о (t) — sr (t) + n(t), где sr (t) — пере- даваемый сигнал, a n (f) — реализация шума, представляется своими отсчетами vt “ v (I AT) при I = 1, N. По этим отсче- там демодулятор и декодер должны восстановить кодовое слово, а затем и информационные символы. Плотность распределения вероятностей вектора v при условии, что передан сигнал sr (t), дается выражением <2 (V | г) - П [1/(/2Йа)] 1==1 причем предполагается, что отсчеты шума представляют собой независимые одинаково распределенные гауссовские случайные величины с дисперсией о3. По принятому сигналу v приемник максимального правдоподобия определяет значение г, при котором Q (у \ г) максимально, и объявляет, что было передано r-е сооб- щение. Однако поскольку шум предполагается гауссовским, прием- ник максимального правдоподобия идентичен приемнику мини- мального евклидова расстояния. Этот приемник находит значе- ние г, при котором евклидово расстояние (v, s,) = £ (о, srt)s, г = 1,..., qk, минимально, и объявляет, что было передано r-е сообщение. Далее, если энергия sr (t) одинакова для всех г, то приемник минимального евклидова расстояния может быть заменен корре- ляционным приемником. Он вычисляет совокупность qb коэф- фициентов корреляции р, г = 1....qb, i=-t и затем принимает решение в пользу того кодовою слова сг, у которого рг > рг- при всех г’ =/= г. После этого по сг восстанав- ливаются информационные символы. Поскольку q'1 очепь велике» обычно даже этот приемник довольно непрактичен и поэтому переходят к более компактным схемам, схемам меньшей слож- ности. На рис. 15.3 предлагается несколько вариантов приемника. Если модулятор и кодер фиксированы, то выбор самого верхнего варианта приводит к наименьшей частоте ошибок па символ, а самого нижнего — к наибольшей. Может создаться впечатление, что по мере возможности всегда желательпо реализовать приемник максимального правдоподобия. Но это, вообще говоря, не так Часто целесообразнее затратить имеющиеся ресурсы па более
ib.i. Мягков дбкОдирОклниЬ IsjibKosbik кодЬй В93 Поток f-ичных символов Л символ/с Поток f-ичных символов, рмБитый hl кЛовыа Вариант____________________ 1 Оценка _____» послеЭоватвльности по максимуму правВопойобия Поток {-ичных символов R Символ/с Вероятность < ошибки на Блок Рек Оцененный Вариант символ Степень правЗопойобия символа Поток {’-очных символов R символ/с Вероятность ошибки на Блок Вариант Оцененный 1 символ [ Демодулятор--------*1 Декойер Поток {-очных символов Рис. 15.3. Возможные варианты приемника. R символ/с Вероятность ошибки на Блок Рп мощный код и более мощный модулируемый сигнал, а для деко- дирования использовать подоптимальную процедуру. В общем случае возможность использования в декодере мяг- кого решения приводит к необходимости выбора между передачей большего количества информации от демодулятора к декодеру при одновременном использовании более простого кода и переда- чей меньшего количества информации от демодулятора к декодеру при одновременном использовании более сильного кода. Первый экстремальный случай —демодулятор принимает жесткое реше- ние; при этом последовательность вещественных чисел превра- щается демодулятором в последовательность <у-ичных символов, к которой можно успешно применить мощную технику алгебраиче- ского декодирования. Не представляет трудностей использование той же техники в случае, когда демодулятор может производить стирания. Второй экстремальный случай — демодулятор вообще не принимает решения; при этом вся информация в принятом сиг- нале сохраняется и передается декодеру. В хорошо сконструированной системе связи сложность демо- дулятора и сложность декодера сбалансированы. С другой сто- роны, демодулятор принимает окончательное решение по возмож-
В34 tit. IB. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ носги па уровне символов; с другой стороны, он передает деко- деру достаточно информации, чтобы качественные характеристики системы оставались достаточно высокими. Сохраняется также возможность использования каскадных кодов. Тогда соотношения между сложностью и качеством можно рассматривать на трех уровнях обработки в демодуляторе и на двух уровнях декодера. Используя мягкое решение в сочетании с малой длиной кода во внутреннем декодере и жесткое решение с исправлением ошибок и стираний во внешнем декодере, корректирующем оставшиеся ошибки и отказы внутреннего декодера, можно получить отличное соотношение между сложностью и качеством декодирования. Изучим частный случай декодера мягкого решения, исполь- зующий алгоритм обобщенного минимального расстояния (ОМР- алгоритм). Этот алгоритм мы опишем дважды: сначала для двоич- ных кодов, используя некоторые геометрические построения, а затем для кодов над произвольным полем Галуа. В первом случае в демодулятор поступает последовательность двоичных чисел на фоне шумов. Принимаемый демодулятором t-й двоичный бит опи- сывается вещественным числом vt £ [—1, 1 ], представляющим оценку принятого символа в сочетании с доверительным уровнем. Если V/ равно —1, то г-н принятый бит равен 0 с максимальным доверительным уровнем; если vt = | -1, то i-й принятый бит равен единице с максимальным доверительным уровнем. Если щ пред- ставлено в виде числа, характеризуемого знаком и величиной, то можно считать, что его знак представляет оценку' i-ro бита на выходе демодулятора, а абсолютная величина й, - доверительный уровень оценки. Мы уже рассмотрели два частных случая. Если величины й, на выходе демодулятора принимают значения ±1, то демодулятор является демодулятором жесткого решения, а декодер исправляет лишь ошибки. Если на выходе демодулятора величины й, прини- мают лишь значения ±1 или 0, то демодулятор является демоду- лятором жесткого решения со стиранием, а декодер исправляет ошибки и стирания. В данном параграфе мы рассмотрим ОМР- алгоритм, который оперирует с величинами t>f, принимающими любое значение между —1 и +1. Этот алгоритм декодирования может использоваться с любым демодулятором, выходные сим- волы которого лежат в интервале (—1, 1J. После обработки принятого сигнала демодулятором на его выход поступает принятый вектор v = (и0,..., »„_!). Если в канале не произошло ошибок и демодулятор приписал максимальный доверительный уровень каждому биту, то сим- волы принятого вектора равны - 1 в тех позициях, в которых сим-
15.3. МЯГКОЕ ДЕКОДИРОВАНИЕ БЛОКОВЫХ КОДОВ 53В волы переданного кодового слова сг равны нулю, и равны ! 1 в тех позициях, в которых символы сг равны единице. Пусть сг — вектор в n-мерном евклидовом пространстве, такой, что его компоненты определяются выражением —1, если cri — О, 4-1, если cri — 1. Это выражение описывает отображение кодовых слов из GF" (q) в R". Сохраним за сг название кодового слова. Евклидово рас- стояние между принятым словом v и кодовым словом с, равно tfb (v, сг) -1 v — cz Г2 = _£ (Vi— СН- ЕСЛИ v состоит лишь из символов жесткого решения = ±1, то евклидово расстояние связано с хэмминговым расстоянием соотношением tPE (V, с,) = 4(1Н (V, сг), где компоненты v£ вектора v равны 0, если vt = —1, и равны 1, если Vi — 1. В частности, для любых двух кодовых слов dZE (Сг, с,.) = 4dH (с„ с,-): Минимальное евклидово расстояние кода Йе и минимальное хэм- мингово расстояние d* связаны соотношением dtf - 4dJ,. Опишем ОМР-декодер с помощью скалярного произведения v-cz, предварительно выразив евклидово расстояние кода через скалярное произведение. Мы можем переписать его в виде Йе (V, с,) -= | v I* 2v сг I-1 с, |Е. Для фиксированного v минимизация йс (у, cj по г эквивалентна максимизации скалярного произведения v-cz по г, поскольку | v |2 не зависит от г и | с, |2 равно п для любого кодового слова. Минимизация евклидова расстояния интуитивно понятнее, но при вычислениях лучше максимизировать скалярное произведение. Декодеру, исправляющему только ошибки, предшествует де- модулятор. который принимает лишь жесткие решения. При этом v = ±1 и йе (v, с,) —4dit(x, сг) Следовательно, нахождение с, на минимальном евклидовом расстоянии от v эквивалентно на- хождению сг на минимальном хэмминговом расстоянии от v. Неравенству d„(v. C,)<(<f-ly2
636 ГЛ- 15. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ удовлетворяет не более одного кодового слова сг. Следовательно, не более чем одно кодовое слово с, удовлетворяет неравенству de (V, Сг) С 2 (d* — 1). Наконец, так как | v|2 равно п в случае демодулятора с жестким решением, то di (v, сг) = 2 (п — v-c,) и не более чем одно кодовое слово удовлетворяет неравенству v.c,sa/i-(d*- 1), где d* — минимальное хэммингово расстояние кода. Декодирова- ние с исправлением только ошибок эквивалентно нахождению того единственного кодового слова с„ для которого v-c, >п — d*, если такое кодовое слово существует. Возможно, что решения не существует и декодер не в состоянии найти кодовое слово. Таком декодер неполон, но он будет указывать, что соответствующие конфигурации ошибок являются неисправляемыми. Если действия демодулятора сводятся к жесткому решению или стиранию, то = ±1 или 0. По тем же причинам, что и выше, декодирование с исправлением ошибок и стираний эквивалентно нахождению того единственного кодового слова с„ для которого v-c, > п —d*, если такое кодовое слово существует. Как и ранее, соответству- ющий декодер полон. Следующая теорема утверждает, что те же условия существо- вания справедливы и при мягком решении. Теорема 15.3.1. Каков бы ни был вектор v с компонентами, лежащими в интервале [—1, 11, в двоичном коде с длиной п и ми- нимальным хэмминговым расстоянием d* существует не более одного кодового слова с,, для которого v-c, > п — d*. Доказательство. Пусть с, — некоторое кодовое слово, удовле- творяющее приведенному выше неравенству, и пусть с,----любое другое кодовое слово. Тогда с,- отличается от сг по меньшей мере в d* позициях. Пусть
15.S. МЯГКОЕ ДЕКОДИРОВАНИЕ БЛОКОВЫХ КОДОВ Д37 тогда V-C, = S VtCrl 4- S VjCfi = A 4Z, i<£s its v-cr- — У ViCr-i S ViCr-i = Ai - A2. l&S i€s Но величина 4j удовлетворяет неравенству At = У vfiri *g.n — d*, &s так как она равна сумме не более п — d* слагаемых, ни одно из которых не превышает единицу. Поэтому в силу неравенства v-c, >n— d* 43>0, и, следовательно, At — Аг с п—d*, что завершает доказательство теоремы. □ В качестве примера рассмотрим двоичный (3,2)-код = {ООО, 011, НО, 1011, у которого d* равно 2. Этот пример достаточно прост для графической иллюстрации теоремы 15.3.1. На рис. 15.4 изображен куб в трехмерном евклидовом пространстве, содер- жащий возможные принятые векторы v. В том же пространстве показаны четыре кодовых слова. Штриховкой в одном из углов выделена совокупность v, удовлетворяющая условию v0cr0 4~ 4- бясг1 4- б3с,2 > 1, которая декодируется в кодовое слово, лежащее в этом углу. Теорема утверждает, что если построить аналогичные области для каждого из четырех кодовых слов, то эти области не будут пересекаться. Используя эти четыре области декодирования, можно построить ОМР-декодер. Заме- тим, что указанные четыре области не заполняют куб полностью. Остающаяся в центре область является тетраэдром, и если v Койоеые слова, Кодовое слово Койовое слово Область йекоОирования Рис. 15.4. Область декодирования по ОМР-алгоритму для двоичного (3, 2)-кода.
638 Г-Л. 15. ПЕРЕДАЧА nOJ ЗАШУМЛЕННЫМ КАНАЛАМ попадает в этот тетраэдр, то декодирование объявляется неудач- ным. Декодер является неполным, и его области декодирования лежат в евклидовом пространстве. ОМР-декодер находит единственное кодовое слово, удовлетво- ряющее теореме 15.3.1, если опо существует; в противном случае декодирование объявляется неудачным. Конечно, находить это кодовое слово, вычисляя все 2к скалярных произведений, не- практично. Опишем практический способ нахождения этого ко- дового слова. Идея состоит в следующем. Мы уже знаем, как построить декодеры, исправляющие ошибки и стирания, полученные в результате жестких решений. Любой декодер, исправляющий ошибки и стирания, можно дополнить внешней петлей обработки данных. Основываясь на информации мягкого решения, этот модернизированный декодер вычисляет последовательность пробных векторов жесткого решения со сти- ранием. Для каждого I от 0 до d* — 1 он стирает I компонент, для которых | t>t | минимальны. (Если для некоторых I в силу равенства нескольких компонент выбор этих I компонент неодно- значен, то соответствующее I опускается.) Совокупность нестер- тых компонент отображается в нули или единицы в зависимости от знака При этом над GF (2) формируется вектор vl,) со стира- ниями. Декодируем v(z>, используя декодер, исправляющий ошибки я стирания. Если декодирование дало кодовое слово сг, то про- верим выполнение неравенства v-c, > п—d*. Если это нера- венство выполняется, то сг объявляется ОМР-декодированным кодовым словом. В противном случае I увеличивается и про- цедура повторяется до тех пор, пока I не превзойдет d* — 1; в последнем случае декодирование объявляется неудачным. На рис. 15.5 представлен ОМР-алгоритм в недвоичном случае. Теоремы 15.3.2 и 15.3 4 утверждают, что ОМР-алгоритм, пред- ставленный на рис. 15.5, в самом деле декодирует в единственное ОМР-кодовое слово. Заметим, что алгоритм, изображенный на рисупке, проверяет неравенство лишь при четных I. Этого до- статочно, так как при изменении числа стираний на два число ошибок, которые можно исправить, изменяется на единицу. Теорема 15.3.2. Если v-cr > п —d*, то хотя бы одно слово vU), Z — 0. .... d' — 1, удовлетворяет неравенству уЧ>-сг>п— d". Доказательство следует из доказательства теоремы 15.3.4, являющейся более общей формой нашей теоремы. □ Теперь обобщим ОМР-декодеры на недвоичные коды. Слож- ность ОМР-декодера приблизительно в (d* — 1)/2 раз выше, чем декодера для кода, исправляющего ошибки и стирания. Поня-
15.3. МЯГКОЕ ДЕКОДИРОВАНИЕ БЛОКОВЫХ КОДОВ 530 Сгпоп- нецйочное !М>оироеание Рис. 15.5. ОМР-алгордтМ. тие обобщенного расстояния естественным образом распростра- няется на недвоичные сигналы точно так же, как распространяется хэммингово расстояние. Как при определении хэммингова рас- стояния, так и при определении обобщенного расстояния не- двоичная природа символов игнорируется и задача сводится
640 ГЛ. f6. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ к двоичной, при которой лишь учитывается, совпадают или нет два символа, а их величины не принимаются во внимание. ОМР- декодер в недвоичном случае почти не меняется. На выход демодулятора поступают ф-ичные символы, каждый из которых характеризуется своей оценкой vf, элементом GF (д) и доверительным уровнем сч, 0 «ё а, с 1, измеряющим надежность оценки. Если а/ равно единице, то принятый символ равен сг с максимальным доверительным уровнем; если cq равно 0, приня- тый символ равен vf с минимальным доверительным уровнем. Как и в двоичном случае, для алгоритма декодирования не важно, какое правило демодулятор использует для нахождения аг. Он даже может всегда полагать af равным единице — в этом случае он является демодулятором с жестким решением; он может- полагать а{ равным 0 или 1 — в этом случае он является демодулятором с жестким решением и со стиранием. Возможно также использование для нахождения более сложной довери- тельной меры. В двоичном случае мы смогли дать геометрическую интер- претацию декодирования, используя знак ctf для обозначения оценки переданного двоичного символа. В GF (д)-ичном случае такой геометрической интерпретации не существует. Для опреде- ления скалярного произведения введем обозначение для любого о': (4-1, v = v, «(‘’•’И-!, Затем определим произведение V-C, = У (ff, cri), использование которого позволяет доказать GF (у)-тньт вариант теоремы 15.3.1. Эго определение v-c, удобно, но неточно, по- скольку v-c, зависит и от а. Теорема 15.3.3. В коде над GF(q) с длиной п и минимальным расстоянием d* существует хотя бы одно кодовое слово с„ для которого v.c,> n~d*. Доказательство аналогично доказательству теоремы 15.3.1. □ Алгоритм декодирования в недвоичном случае таков же, как и в двоичном. Для любого I из интервала [0, d* — 1 ] сотрем компоненты, для которых cq минимальны. При этом получим над GF (у) слово v(zl со стираниями. Начиная с I, равного 0, декоди- руем vt'*, используя декодер, исправляющий ошибки и стирания. Для декодирования vW в с, проверяется неравенство v-c, > ^>n — d*. Если оно удовлетворяется, то с, объявляется ОМР-
15.4. МЯГКОЕ ДЕКОДИРОВАНИЕ СВЕРТОЧНЫХ КОДОВ 641 декодированным кодовым словом. Если оно не удовлетворяется, т. е. если l-с декодирование оказывается неудачным, то увеличим I; будем повторять процедуру до тех пор, пока I не превысит d* - 1 — в этом последнем случае декодирование объявляется неудачным. Следующая теорема обосновывает эту процедуру. Теорема 15.3.4. Если для кодового слова сг выполняется не- равенство v-cr > п —d*, то хотя бы одно слово I — О,-.- ..., d* — 1, удовлетворяет неравенству v£,) -сг > л — d*. Доказательство. Достаточно доказать теорему для I, пробе- гающих значения от 0 до п, поскольку ясно, что утверждение теоремы не может выполняться при d*. Упорядочим at по их величине. Пусть аг <g а,- «g ... с а,- , '1 2 >1’ Хо = atf, X, = a,-J+l — 1 eg I <g n — 1, и Хя = 1 — a,-n. Тогда 0 < X/ < 1 и £"=оХг = 1, так что вектор X ведет себя как вероятностное распределение. Более того, iJj’X/ = ац-, [1=0 и поэтому V = s Хгу(О. 1=0 Допустим, что v<z,-cr« п—d' при всех I. Тогда v-c, = £ Xzv('» .c, «g (я - d*) £ = п - d*. (=0 /=0 что противоречит предположению теоремы. Поэтому теорема доказана. □ 15.4. МЯГКОЕ’ ДЕКОДИРОВАНИЕ СВЕРТОЧНЫХ КОДОВ Использование информации мягкого решения может облегчить декодирование и сверточных кодов. В нашем распоряжении имеются вариант мягкого решения алгоритма Витерби и варианты
642 ГЛ. IS. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ мягкого решения алгоритмов последовательною декодирования. Отложим изучение последовательного декодирования до следу- ющего параграфа, а в настоящем параграфе займемся алгоритмом Витерби с демодулятором с мягким решением. Затем изучим свер- точные коды Унгерб?ка, имеющие большое евклидово свободное расстояние: поэтому опи полезны для каналов, ограниченных по полосе. Коды Унгерб^ка больше подходят для каналов, огра- ниченных по полосе, чем коды, построенные из соображений воз- можно большего хэммингова свободного расстояния. Алгоритм Витерби отыскивает на решетке путь, ближайший к принятому слову. Расстояние принятого слова от пути на ре- шетке определяется как сумма расстояний вдоль последователь- ных ребер. Мера расстояний выбирается произвольно, за исключе- нием того, что она должна удовлетворять требованию аддитив- ности. Поэтому, хотя алгоритм Витерби, введенный в § 12.8, ис- пользует хэммингово расстояние, тот же алгоритм применим и при любом другом определении расстояния. Не является даже необходимым, чтобы расстояние было метрикой. ' Алгоритм Витерби хорошо использовать в тех случаях, когда шум в канале стационарен и легко моделируется. Пусть Q (v | с) — условная вероятность того, что на’выходе'демодулятора наблю- дается символ v при условии, что на вход канала поступил сим- вол с. Даже если с выбран из дискретного алфавита малого объема, демодулятор мягкого решения может иметь для v больший алфа- вит — быть 'может, непрерывный алфавит или алфавит двоичных чисел из т битов. Возьмем некоторый кадр принятого слова. Он состоит из л0 компонент, обозначаемых через i — 1, .... ti0. Выберем некоторое ребро решетки. Оно состоит из п0 компонент кодового слова, обозначаемых через clt i = 1, ..., п0. Расстояние кадра кодового слова с от соответствующего кадра принятого слова v определяется логарифмической функцией правдоподобия <I(V, с) = Slog <2 (о, !<,). Эта функция, называемая метрикой ребра (или метрикой пути), обладает свойствами расстояния, хотя и не является истин- ной метрикой. Декодер Витерби с мягким решением аналогичен декодеру Витерби с жестким решением, но только вместо хэммингова расстояния он использует новую метрику пути. При каждой итерации каждый выживший путь, ведущий в каждый узел, продолжается всеми возможными способами в узлы следующего уровня с прибавлением метрик ребер к общей накопленной ме- трике пути- Выживший в каждом новом узле путь сохраняется, а остальные пути отбрасываются. Поэтому сложность декодера
15.4. МЯГКОЕ ДЕКОДИРОВАНИЕ СВЕРТОЧНЫХ КОДОВ 643 Витерби возрастает очень мало при ею перестройке на мяжое решение. Если входные символы канала - вещественные или комплекс- ные числа, а шум в канале — аддитивный гауссовский незави- симый, то Q <v'с) - П «ч> [- ! Для гауссовского канала максимизация логарифмической функции правдоподобия эквивалентна минимизации евклидова расстояния. В качестве метрик ребер используем евклидово расстояние с)’= S (с, На практике во многих каналах с мягким решением, не являю- щихся гаусс твскими, Q (у | с) неизвестно, но евклидово расстояние по-прежнему используется для вычисления метрик ребер. Соот- ветствующий декодер является декодером по минимуму евклидова расстояния. Он не является декодером максимального правдопо- добия, но практичен. Алгоритм Витерби с мягким решением выгля- дит совершенно аналогично алгоритму Витерби с жестким реше- нием, по хэммингово расстояние заменено в нем евклидовым. Рассмотрим сверточные коды, использующие вещественные или комплексные алфавиты из 2"" символов, где п0 - некоторое целое число. Типичные сигнальные алфавиты представлены на рис. 15.1. Каждый алфавит —это дискретное множество симво- лов, выбираемых или из поля вещественных чисел, или из поля комплексных чисел. Сигнал представляет собой последователь- ность этих вещественных или комплексных чисел. Каждый сигнал из набора сигналов будет использоваться для представления одного из 2"“ ребер двоичного сверточного (тпй, т/г0)-кода. Наборы сигналов на рис. I5.I обеспечивают кодирование байтов, в которые входят от 2 до 6 битов. Информа- ционный байт меньше кодового байта. На протяжении кадра информационные байты поступают в кодер. Один из байтов кодо- вого слова (какой именно — это зависит от текущего состояния кодера) передается по каналу в виде комплексного числа, а кодер переходит в новое состояние. Пусть Ч? — сверточный (тп$, т£0)-код над комплексным по- лем С. Евклидово расстояние между двумя кодовыми словами сг и сг- (с комплексными компонентами и c,i, i == О, .... соответственно) определяется формулой
644 гл. IE. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ Рве. 15.6. Простой пример кодирования, а — четверичный набор ФТ-модулиро- ианных сигналов при отсутствии кодирования; б — восьмеричный набор ФТ-модулированных сигналов; в — решетка для сверточного (6, 4)-кода. Евклидово свободное расстояние обозначаемое через d<», определяется как минимум евклидовых расстояний всех возмож- ных пар кодовых слов из &. Евклидово свободное расстояние яв- ляется подходящим расстоянием для измерения кодовых характе- ристик в гауссовском канале. Это следует из того, что в гауссов- ском канале вероятность ошибки асимптотически *) удовлетво- ряет неравенству где о — среднеквадратичное отклонение шума, Q — интеграл гауссовского распределения, a Nd — число кодовых слов на При о -» О. — Прим. ред.
16.4. МЯГКОЕ ДЕКОДИРОВАНИЕ СВЕРТОЧНЫХ КОДОВ 64 В расстоянии d№ от слова, целиком состоящего из нулей. Следова- тельно, увеличение d™, грубо говоря, эквивалентно уменьше- нию о. Вот почему увеличение свободного расстояния мы назы- ваем выигрышем сверточного кода. Евклидово свободное расстояние часто измеряется в деци- белах; эта мера определяется соотношением doc. (дБ) = 20 logic d«. Асимптотический. выигрыш кодирования определяется фор- мулой G = 20 logic (doo/dref)» где dref — минимальное евклидово расстояние между незакоди- рованными соответствующими сигналами той же мощности. На рис. 15.6 представлен простой пример. Сверточный код определяется восьмеричным набором ФТ-модулированных сигна- лов и решеткой в кодере. Он представляет собой (6,4)-код со скоростью 2/3. Пример несистематического кодера представлен на рис. 15.7, а. Соответствующий код может также использоваться как систематический, если рассматривать второй и третий биты в каждом кадре как информационные Однако для реализации кода в систематической форме надо ввести в кодере обратную Регулирующий I тг~| г А _г|—1 . буфер Информационные биты Рис. 15.7. Кодеры для сверточного (6, 4)-кода. а — кодер с регистром сдвига, не использующий обратную связь; б —кодер с регистром сдвига, использующий обратную связь. 18 Р. Блейхут
646 ГЛ. IB. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМЕКАНАЛАМ связь, как показано иа рис. 15.7, б. Символ кодового слова со- держит лишь два бита информации, а может принимать восемь различных значений. На рис. 15.6, е легко видеть, что минималь- ный вес имеет путь 001 ОН ООО; ему соответствует кодовое слово, находящееся на минимальном расстоянии от кодового слова, Запись ° о о о о о с о со о о • о о • вШХМЮЯ (0001 ЦОС) (010) (ПО) (001) (Ю1) 1011) <1Ц) (ад сг) восьмеричная о I 2 3 й S 6 7 Рис. 15.8. Некоторые коды для восьмеричного канала с ФТ-модуляцией.
16Л. МЯГКОЕ ДЕКОДИРОВАНИЕ СВЕРТОЧНЫХ КОДОВ 647 Кобы блл В-ичного набора ФТ- сигналов Выигрыш Длина. кодового ограничения по сравнению с 4-ичной ОТ без коЙиро- AjW М-») вания (05) !+1 х О ~,ТО ’+1 л х2 3 6 4 х 6 X1 7 х' 8 х1 9 х' 4x11 X2 Х3КХ2+Х 4 1 4х2 И .х’ + х2 + х ЛЛ+ЛЛ-ГХ2 46 4x2+l x^x’iV + x х5 + .х4+х’+х2 48 г + х+1 x’tx2 x’ + x2l.x 5.0 » + х2 + х+1 х*+х5+х4 + х2 х7 + х‘ + хл +А Х 57 Койы йля 8-ичного набора АФМ-сигналов Длина кодового ограничения />,(х) /ь(х) h/x) Выигрыш по сравнению с 4-ичной <РТ без кодиро- вания (0Б) 2 х2 । 1 х 0 -2.0 3 №+1 X X2 3.0 4 Х-+Х+1 X х3+х2 +х 3.8 5 .v + 1 х2+х X' 3.8 6 х6 + 1 х»+х2+х 4.5 7 х2+х+1 X3 +х2 х~ 4-х 5.1 8 х’+1 х’+х3+х2+х х' +х®+х1+х3 + х2 5.1 9 х’+1 ХТ + Х6+Х5 + Хг+Х х8+х’+хэ 5.6 У Рис. 15.9. Таблица кодов Унгербёка целиком состоящего из нулей. Минимальное расстояние кода равно dg + d’’. На рис. 15.6, а представлен 4-ичный ФТ-модулиро- ванный набор для соответствующих незакодированных сигналов той же мощности. Выигрыш кодирования равен G — Ю logl0 [(dj; + + или 1,1 дБ, так как dt определяет евклидово свободное расстояние для незакодированных сигналов, изображенных на рис. 15.6, а. Как показывает выигрыш, кодирование приводит к небольшому улучшению, что является неожиданным для такого простого кода. Однако первый из изображенных на рис. 15.8 кодов, (9,6)-код, приводящий к выигрышу уже в 3 дБ, лишь немного сложнее, и поэтому следует отдать предпочтение ему. 18*
Б48 ГЛ. IS. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ Для нахождения более сложных кодов в общем случае тре- буется использовать ЭВМ, но даже при этом поиск должен быть разумно организован, иначе он станет практически невозможным. На рис. 15.8 приведены примеры трех кодов. Изображены решетки этих кодов, и в каждом случае выделен путь, на котором дости- гается евклидово свободное расстояние. На рис. 15.9 представлена таблица кодов Унгербёка со ско- ростью 2/3 для восьмеричных наборов ФТ-сигналов и для восьме- ричных наборов АФМ-сигналов. Сверточные коды описываются своими матрицами проверочных многочленов. Здесь удобнее использовать проверочные многочлены вместо порождающих, поскольку скорость кода больше 1/2 и систематический кодер с обратной связью легче строить, исходя из проверочных много- членов. Любой из представленных на рис. 15.9 кодов Унгербёка может быть использован для замены обычно используемого четырех- уровпевого ФТ-модулятора. Информационная скорость по-преж- нему остается равной 2 бита на символ. Посимвольная скорость не изменяется, и поэтому кодовая система использует ту же полосу, что и система без кодирования, и передает то же число битов на символ. Поэтому пользователь системы даже не знает о наличии кодирования. Однако система может использоваться при меньшем отношении сигнал/шум — код при длине кодового ограничения 9 дает выигрыш 6,7 дБ. 15.5. ПОСЛЕДОВАТЕЛЬНОЕ ДЕКОДИРОВАНИЕ Используются два типа алгоритмов последовательного декодиро- вания — алгоритм Фано, который уже изучался применительно к каналам с жестким решением, и стек-алгоритм. Они достаточно отличаются по структуре и аппаратурной реализации. Оба могут использоваться и в каналах с жестким решением, и в каналах с мягким решением. Относительные преимущества каждого из этих алгоритмов до сих пор обсуждаются. Начнем с обсуждения стек-алгоритма. Класс алгоритмов последовательного декодирования, носящий общее название стек-алгоритма, был предложен для уменьшения вычислительной работы по сравнению с алгоритмом Фано. Стек- алгоритм сохраняет информацию о всех путях, которые уже были исследованы. В этом состоит его отличие от алгоритма Фано, который может продвинуться из данного узла, а затем вернуться на то же расстояние назад лишь для того, чтобы по- вторить обследование из того же узла. Стек-алгоритм хранит информацию лучше, так что не нужно повторять ненужную ра- боту. С другой стороны, стек-алгоритм требует значительно боль- шей памяти.
• 5.5 ПОСЛЕДОВАТЕЛЬНОЕ ДЕКОДИРОВАНИЕ Б49 говать на выхов путь на вершине стека Рис. 15.10. Упрощенный стек-алгоритм Стек-алгоритм легок для понимания; его упрощенная блок- схема приведена на рис. 15.10. Декодер содержит стек *) ранее исследованных путей различных длин. Стек может быть органи- зован в виде списка в памяти случайного доступа. Каждая запись в стеке соответствует некоторому пути и со- держит три части: длину пути, последовательность информацион- ных символов переменной длины, определяющую путь, и метрику пути. До начала декодирования стек содержит лишь тривиальный путь нулевой длины. Метрика пути измеряет расхождение между соответствующим путем и начальным сегментом принятого слова той же длины. Ока определяется как логарифмическая функция правдоподобия этого пути. Коротко объясним, как вычисляется эта метрика. Первые N + 1 кадров принятого слова можно записать в виде VlN> = (vl,. . ., Wfl°, Cj.-Vj",.... ...» tfr). *1 В данном случае стеком называется упорядоченная память — Прим.
ббО ГЛ. 16. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ Первые т + 1 кадров кодового слова с имеют вид с|.............................ср.....4, Мы хотим найти сегмент кодового слова, для которою log [Рг (с(т) | v<w>) I максимален. По определению последова- тельного декодера выбор начального сет мента кодового слова длины т -Ь I должен производиться без учета последующей структуры кодового дерева. Но по правилу Бейеса Pr (е«> I v«) =Pr(v 1 . По предположению кодовые слова используются с одинаковой вероятностью; поэтому РГ ,,„л Множитель Рг (v,W) | с<т>) можно переписать в виде т N рг(у«‘)|с‘">)=ППрг(р!1^) П П ₽(»!)- Г=«/=1 «-т-М /=| Правая часть распадается на две части: произведение условных вероятностей по т -Ь 1 кадрам кодового слова и произведение безусловных вероятностей по тем кадрам, в которых кодовое слово еще не определено. Разбиение вероятности на две части, которое мы провели, приводит естественным образом к вероят- ностному опиевнию последовательного декодирования. Задача сводится к нахождению пути, для которого величина Pr(v<«|c<«)Pr(c‘”>) НЙРГ^''^ 1 ППР'Н) «=0 f=l максимальна. Используемая нами в последовательном декодиро- вании метрика пути, которая называется метрикой Фано, пред- ставляет собой логарифмическую функцию 1=0 /=1 ' ' J В квадратную скобку заключен вклад в метрику Фано, вносимый /-м кадром. В каждом кадре каждого кодового слова необходимо
16.5. ПОСЛЕДОВАТЕЛЬНОЕ ДЕКОДИРОВАНИЕ 6S1 Вычислять лишь этот член. Метрика пути р (с{т)) получается прибавлением соответствующего приращения к метрике Фано кодового слова, находившегося на вершине стека на предыдущей итерации- Последовательное декодирование для жесткого решения, осно- ванное на алгоритме Фано, уже обсуждалось в § 12.9; аналогичное обсуждение может быть проведено и для каналов с мягким реше- нием. Единственно реальная разница между декодером для ка- налов с жестким решением и каналов с мягким решением состоит в используемой метрике пути. Соответствующая мягкому решению метрика пути — это метрика Фано. Единственное, что необходимо изменить в алгоритме Фано, описанном в § 12.9, — это ввести новую метрику. После такого изменения декодер Фано, описанный в § 12.9, станет пригодным и для каналов с мягким решением. Любой алгоритм последовательного декодирования обладает следующими свойствами: этот декодер производит по меньшей мере одно вычисление в каждом посещаемом им узле; ребра иссле- дуются последовательно, так что в любом узле выбор декодером ребра среди ранее не исследованных ребер не зависит от тех при- нятых ребер, которые расположены глубже на дереве. Это второе условие — критическое; оно приводит к характерным особенно- стям поведения последовательного декодирования. Декодеры бло- ковых кодов и синдромные декодеры сверточных кодов могут использовать последующую информацию, чтобы принять более раннее решение, и поэтому ведут себя иначе. Число вычислений, производимых любым последовательным декодером для продвижения на один узел в глубь кодового дерева, является случайной величиной. Это обстоятельство в основном и влияет па сложность, требуемую для' достижения заданного качественного уровня. Когда шум слаб, декодер обычно продви- гается по правильному пути, используя лишь одно вычисление для продвижения в глубь кодового дерева на одно ребро. Однако когда шум становится сильным, декодер может проследовать вдоль неправильного пути, и прежде чем декодер найдет правиль- ный путь, ему, возможно, потребуется произвести большое число вычислений. Непостоянство числа вычислений означает, что бу- феру входных данных может потребоваться большая память. Использование любого конечного буфера при последовательном декодировании приводит к ненулевой вероятности переполнения; это обстоятельство должно приниматься во внимание при вычисле- ниях характеристик декодера. ЗАДАЧИ 15.1. Привести простое выражение для метрики Фано в случаях fl-ичного симметричного канкаа и гауссовского канала. 15.2. Построить блок-схему ОМР-алгоритма для недвоичных кодов.
662 ГЛ. 15. ПЕРЕДАЧА ПО ЗАШУМЛЕННЫМ КАНАЛАМ 1S.3. Для сверточного кода с порождающей матрицей |х & 1] построить систематический кодер, использующий в регистре сдвига обратную связь. 15.4. Разобрать случай декодирования, представленный на рис. 12 25, используя стек-алгоритм. ЗАМЕЧАНИЯ Возможность использования декодирования с мягким решением для улучшения качества декодирования стала ясной почти с того момента, когда были по- строены первые коды, однако хорошие декодеры дая них тогда не были най- дены. По существу первая попытка построить алгоритмический декодер мягкого решения для блоковых кодов была сделана Форни 119661, который ввел поня- тие обобщенного минимального расстояния. Несколько отличающийся алгоритм был предложен Чейзом [19721, который дополнил внешней петлей декодер двоичных кодов с жестким решением, всправляющий только ошибки. В работе Хартмана и Рудолфа [1976] предложен декодер мягкого решения совершенно иного типа Для сверточпых кодов декодеры с мягким решением были введены легче и получили более широкое практическое распространение, чем для блоковых. Это произошло из-за того, что декодеры минимального расстояния, исполь- зуемые для сверточных кодов, менее сложны, чем алгебраические декодеры, используемые для блоковых кодов, таких, как коды БЧХ. Хэммингово расстоя- ние может быть заменено другими мерами разделения кодовых слов при весьма малом изменении структуры вычислений. Упгербёк [1977. 1952 [ построил специально предназначенные для прием- ника мягкого решения коды, комбинируя выбор модуляции и выбор кода. Использование решетки для модуляции исследовали также Андерсон и Тейлор [1978], но вне связи с кодированием. Последовательное декодирование было предложено Возепкрафтом [1957] и опиевно Возенкрафтом и Рейффеном [1961]. Оно было развито далее в ра- ботах Фано [1963], Зигаигирова [1966] и Джелинека [1969]. Прогрессу в данной области способстзовкаи также обзорные работы Джелинена [1968] и Форни |1974] и последующие разработки Шевийя и Костелло [1978] и Хаккоуна и Фергюсона Ц975|. Нижпие границы распределения числа вычислений последовательного декодирования получили Джекобс и Берлекэмп [1967], рассмотревшие также иллюстративный пример. Соответствующая верхняя граница была пайдсиа Севиджем [1966].
ЛИТЕРАТУРА Монографии [11 Peterson W. W. Error-correcting codes. — Cambridge (Mass.): MIT Press, 1961. (Имеется перевод: Питерсон У. Коды, исправляющие ошибки. — М.: Мир. 1964.1 [2] Peterson W. W., Weldon Е. J., Jr. Error correcting codes. — 2nd ed. — Cambridge (Mass.): MIT Press, 1971. [Имеется перевод: Питерсон У., Уэлдон Э. Коды, исправляющие ошибки. — М.: Мир, 1976. ] 13] Berlekamp Е. R. Algebraic coding theory. — New York: McGraw-Hill, 1968. [Имеется перевод: Берлекэмп Э. Алгебраическая теория кодирова- ния. — М.: Мир, 1971.1 [41 Forney G. D. Concatenated codes. — Cambridge (Mass.): MIT Press, 1967. [Имеется перевод: Форни Д. Каскадные коды.—М.: Мир, 1970.] [5] Gal lager 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. [71 Lucky R. W.. Saiz J., Weldon E. J., Jr. Principles of data communi- cation. — New York: McGraw-Hill, 1968, Ch. 11 and 12. [8] Blake I. F., Mullin R. C. The mathematical theory of coding. — New York: Academic Press, 1975. [91 Van Lint J. H. Coding theory. — New York: Springer, 1973. [|01 MacWilliams F. J.. Sloane N. J. A. The theory of error-correcting codes. — New York: North-Holland. 1977. [Имеется перевод: Мак-Вильямс Ф. Дж., Слоэи Н. Дж. А. Теория кодов, исправляющих ошибки. — М.: Связь, 1979.1 [11] McEliece R. J. The theory of information and coding. — Reading: Addi- son-Wesley, 1977. [121 Sloane N. J. A. A short course on error-correcting codes. — New York: Springer, 1975. 113] Wiggert D. Error-control coding and applications. — Dedham: Artech House, 1979. 1141 Clark G. C., Bibb Cain J. Error-correction coding for digital communi- cations.— New York: Plenum Press, 1981. Ц51 Pless V. Introduction to the theory of error-correcting codes. — New York: Wiley-Interscience, 1982. Обзоры [11 Blake I. F. Algebraic coding theory. — Stroudsburg: Dowden, Hutchinson and Ross, 1972. [21 Berlekamp E. R. Key papers in the development of coding theory. — New York: IEEE Press, 1974.
БВ4 ЛИТЕРАТУРА Глава I (11 Shannon С. Е. A mathematical theory of communication. — Bell Syst. Tech. J., 1948, v. 27, p. 379—423 (Part I), p. 623—65C (Part II), reprinted in book form with postscript by W. Weaver. — Urbana: Univ, of Illinois Press, 1949. (Имеется перевод: Шеннон К. Работы по теории информации и кибернетике. — М.: ИЛ. 1963, с. 243—332. ] (21 Hamming R. W. Error detecting and error correcting codes. — Bel! Syst. Tech. J„ 1950, v. 29, p. 147—160. [Имеется перевод- Хэмминг P. В. Коды с обнаружением и исправлением ошибок. — В кп. • Коды с обна- ружением и исправлением ошибок. — М.: ИЛ, 1956, с. 7—22.1 [31 Bose R. С., Ray-Chaudhuri D. К. On a class of error-correcting binary group codes. — Inf. Contr.. 1960, v. 3, p. 68—79. [Имеется перевод- Боуз P. К., Рой-Чоудхури Д. К- Об одном классе двоичных групповых кодов с исправлением ошибок. — В кн.-. Кибернетический сборник. Вып. 2. — М.: ИЛ, 1962, 83—94.1 [4( Hocquenghem A. Codes correcteurs d'erreurs. — Chiffres. 1959, t. 2, p. 147— 156. [51 Reed I. S., Solomon G. Polynomial codes over certain finite fields. — J. Soc, Indust. Appl. Math., 1960, v. 8. p. 300—304. [Имеется перевод- Рид И. С., Соломон Г. Полиномиальные коды над некоторыми конечными полями. — В кн.: Кибернетический сборник. Вып. 7. — М.: ИЛ, 1963, с. 74—79.1 Глава 2 [1[ Birkhoff G., Mac Lane S. A survey of modern algebra. — Rev. cd — New York: Macmillan, 1953. [21 Van der Waerden B. L. Modern algebra. — 2 vols. — New York: Frederick Ungar, 1950, 1953. [Имеется перевод нем. изд. 1967 г.: Ван дер Вар- ден Б. Л. Алгебра. — М.: Наука, 1976,2-е изд. 1979.] [3[ Thrall R. М., Tornhejm L. Vector spaces and matrices. — New York Wi- ley, 1957. (4[ Fraleigh J. B. A first course in abstract algebra. — 2nd ed. — Reading: Addison-Wesley, 1976. (51 Strang G. Linear algebra and ils applications. — 2nd cd. — New York: Academic Press, 1980. (Имеется перевод изд. 1976 г.: Стренг Г. Линей- ная алгебра и ее применения.—М.. Мир, 1980.1 [61 BaumslagB., Chandler В. Theory and problems of group theory. — Schaum’s Outline Series. — New York: McGraw-Hill, 1968. Глава 3 [11 Hamming R. S. Error detecting and error correcting codes. — Bell Syst. Tech. J., 1950, v. 29, p. 147—160 [Имеется перевод: см. гл. 1, [21. ( [21 Goiay М. J. Е. Notes on digital coding.—Proc. IRE, 1949, v. 37, p. 657. [31 Slepian D. A class of binary signalling alphabets. — Bel] Syst. Tech. J.. 1956, v. 35, p. 203—234. (Имеется перевод: Слепян Д. Класс двоичных сигнальных алфавитов. — В кн.: Теория передачи сообщений. — М.: ИЛ. 1967, с. 82—113.1 [4[ Slepian D. Some further study of group codes. — Be]l Sysl. Tech. J I960, v. 39, p. 1219—1252. [51 Kiyasu Z. Research and development data no. 4. — Electrical Communi- cations Laboratory, Nippon Tele. Corp., Tokyo, 1953. [6[ Singleton R. C., Maximum distanceo-nary code’s. — IEEE Trans, Inf. Theor., 1964. v. IT-10, p. 116—118.
Ли1гё₽А1ура egg [7] Golay М. J. Е. Notes on the perirty-Weighlng problem, lossless symbol coding with nonprimes, etc. — IRE Trans. Inf. Theor., 1958, v. IT-4, p, ЮЗ- 109. [8] Cocke J. Lossless symbol coding with nonprimes. — IRE Trans. Inf. Thecr., 1959. v. IT-5, p. 33—34. [9J Tietavajnen A. A short proof for the nonexistence of unknown perfect codes over GF (<?), q > 2.—Annaies Acad. Scient. Fennicae, Ser. A., 1974, No. 580, p. 1—6. [1O[ Van Lint J. H. A survey d perfect codes. — Rocky Mountain J. Math., 1975, v. 5, p. 199—224. [Ill Васильев Ю. Л. О негрупповых плотно упакованных кодах.—В кн.: Проблемы кибернетики. Вып. 8. - М.: Физматгиз, 1962, с. 337—339. [121 Schonheim J. On linear and nonlinear single-error-correcting q-nary perfect codes. — Inf. and Contr., 1968, v. 12, p. 23—26. [13[ Muller D. E. Application of Boolean algebra to switching circuit desing and to error detection. — IRE Trans. Electr. Comp., 1954, v. EC-3, p. 6—12. [14 J Reed I. S. A class of multiple-error-correcting codes and the decoding scheme.— IRE Trans. Inf. Theor., 1954, v. IT-4, p. 38—49. [Имеется перевод: Рид И. С. Класс кодов с исправлением нескольких ошибок и схема деко- дирования. — В кн.: Кибернетический сборник, Вып. 1. — М.: ИЛ, I960, с. 189—205.1 Глава 4 [Ц Birkhoff G., Mac Lane S. A survey of modern algebra. — Rev. ed. — New York. Macmillan, 1953. [2[ Van der Waerden B. L. Modem algebra.—2 vols. — New York: Frede- rick Unger, 1950, 1953. [Имеется перевод: см. гл. 2, [21. J [3J Berlekamp E. R. Algebraic coding theory. — New York: McGraw-Hill, 1968. [Имеется перевод: см. монографии, [31.1 [4[ Fralejgh J. В. A first course in abstract algebra. — 2nd cd. — Reading Addiso.n-Wesley, 1976. Глава 5 [11 Prangc E. Cyclic error-correcting codes in two symbols. — AFCRC-TN-57-103, Air Force Cambridge Research Center, Cambridge (Mass.), Sept. 1957. [2[ Prange E. Some cyclic error-correcting codes with simple decoding algo- rithms.— AFCRC-TN-58-156, Air Force Cambridge Resesrch Center, Bed- ford (Mass.), April 1958. [3[ Peterson W. W. Encoding and error-correction procedures for the Bose— Cliaudhuri codes.—-IRE Trans. Inf. Theor., I960, v. IT-6, p. 459—470. [Имеется перевод: Питерсон У. Кодирование и исправление ошибок для кодов Боуза—Чоудхури.—В кн.: Кибернетический сборник. Вып. 6.— М.: ИЛ, 1963, с. 25—54.1 [41 Kassmi Т. Systematic codes using binary shift register sequences. — J. Inf. Process. Soc.' Japan, 1960, v. 1, p. 198—200. [51 Abramson N. A note on single error-correcting binary codes. — IRE Trans. Inf. Theor.. 1960, v. IT-6, p. 502—503. [61 Elspas B. A note on P-nsry adjacent-error-correcting codes. — IRE Trans. Inf. Theor., 1960. v. IT-6, p. 13—15. [71 Abramson N. A. Class of systematic codes for non-independent errors. — IRE Trans. Inf. Theor., 1959, v. IT-5, p. 150-157. [81 Kassmi T. Optimum shortened cyclic codes for burst-error correction. — IEEE Trans. Inf. Theor., 1963, v. IT-9, p. 105—109. [9] Peterson W. W., Weldon E. J. Jr. Error correcting codes. — 2nd ed.— Cambridge (Mass.): MIT Press, 1971. [Имеется перевод: см. монографии.
656 ЛИТЕРАТУРА [10] Fire Р, A class of multiple-error correcting binary codes for non-indepeh- dent errors. — Sylvania Report RSL-E-2, Sylvania Reconnaissance Systems Lab., Mountain View, Calif., 1959. [111 Golay M. J. E. Notes on digital coding. — Proc. IRE, 1949, v. 37, p. 657. [12] McEliece R. J. The theory of information and coding. — Reading: Addi- son-Wesley, 1977. [13] Assmils E. F., Jr., Mattson H. F.. Jr. Coding and combinatorics —SIAM Rev., 1974, v. 16, p. 349—388. Глава 6 [1] Peterson W. W. Encoding and error-correction procedures for the Bose— Chaudhuri codes.— IRE Trans. Inf. Theor., 1960, v. IT-6, p. 459—470. I Имеется перевод- см. гл. 5. [3].] [2] Chien R. T. Cyclic decoding procedures for Bose—Chaudhuri—Hocqucnghem codes. —IEEE Trans. Inf. Theor.. 1964, v. IT 10, p. 357-363. [3] Peterson W. W. Error-correcting codes.—Cambridge (Mass.): MIT Press; New York. Wiley. 1961. [Имеется перевод: см. монографии, [ 1 ]. I [4] Meggitt J. E. — Error-correcting codes for correcting bursta of errors. — IBM J. Res. Develop., 1960, v. 4, p. 329—334. [5] Meggitt J. E. Error-correcting codes and their implementation. — IRE Trans. Inf. Theor., 1961, v. IT-7, p. 232—244. [6] Kasami T. A decoding procedure for multiple-error-correcting cyclic codes.— IEEE Trans. Inf. Theor., 1964, v. IT-10, p. 134—139. [71 MacWilliams F. J. Permutation decoding of systematic codes. — Bell Syst. Tech. J., 1964, v. 43. p. 485—505. [Имеется перевод: Мак-Виль- ямс Ф. Дж. Перестановочное декодирование систематических кодов. — В кн.: Кибернетический сборник. Новая серия. Вып. I. — М.: Мир, 1966, с. 35—57.] [8] Mitchell М. Е. Error-trap decoding of cyclic codes. — G. E. Report No. 62MCD3, General Electric Military Communications Department, Oklahoma City, 1962. [9] Rudolph L., Mitchell M. E. Implementation of decoders for cyclic codes. — IEEE Trans. Inf. Theor., 1964. v. IT-10, p. 259—260. Глава 7 [1 ] Hochqnenghem A. Codes correcteurs d’erreurs. — Chjffres, 1969, t. 2. p. 147— 156. [2] Bose R. C., Ray-Chaudhuri D. K. On a class of error correcting binary group codes. — Inf. and Contr., 1960, v. 3, p. 68—79. [Имеется перевод: см. гл. 1, [3].] [31 Reed I. S„ Solomon G. Polynomial codes over certain finite fields. — J. Sot. Indust. Appl. Math., 1960, v. 8. p. 300—304. (Имеется перевод: ем. гл. I, [4] Kasami T., Tokura N. Some remarks on BCH bounds and minimum weights of binary primitive BCH codes. — IEEE Trans. Inf. Theor., 1969, v. IT-15, p. 408—412. [5] Chen C. L. Computer results on the minimum distance of some binary cyclic codes.— IEEE Trans. Inf. Theor., 1970, v. IT-f6, p. 359—360. [61 Peterson W. W. Encoding and error-correction procedures for the Bose-Chaud- huri codes. — IEEE Trans. Inf. Theor., 1960, v. IT-6, p. 459—470. [Имеется перевод: см. гл. 5, [3].] [71 Gorenstein D. C., Zierler N. A class of error-correcting codes in pm sym- bols.— J. Soc. Indust. Appl. Math., 1961, v. 9, p. 207—214. [Имеется перевод: Горенстейн Д., Цирлер Н. Класс кодов из р71 символов с неправ-
ЛИТЕРАТУРА 687 Лёнием ошибок. — В Ки.: Кибернетический сборник. Вып. 7. —М.: ИЛ. 1963, с. 80—89.1 [81 Chien R. Т. Cyclic decoding procedures for Bose—Chaudhuri—Hocquenghem codes. — IEEE Trans. Inf. Theor.. 1964, v. IT-10, p. 357—363. [91 Forney C. D., Jr. On decoding BCH codes. — IEEE Trans, inf. Theor., 1965, v. IT-11, p. 549—557. [10[ Berlekainp E. R. Algebraic coding theory. - New York. McGraw-Hill, 1968. [Имеется перевод: см. монографии, |3].J [111 Massey J. L. Shift-register syntesis and BCH decoding —IEEE Trails. Inf. Theor., 1969, v. 1T-I5, p. 122-127. [121 Burton H. 0. Inversion less decoding of binary BCH codes.— IEEE Trans. Inf. Theor., 1971, v. IT-17, p. 464—466. [131 Sugiyama Y., Kasahara M., Hirasawa S„ Namekawa T. A method for sol- ving key equation for decoding Goppa codes — Inf and Contr., 1975, v. 27, p. 87-99. [14] Welch L. R.. Scholtz R. A. Continued fractions and Berlekamp’s algo- rithm. — IEEE Trans. Inf. Theor., 1979, v. IT-25, p. 19—27. [151 Mandelbaum D. M. Decoding beyond the designed distance for certain algeb- raic codes. — Inf. and Contr., 1977, p. 209—228. Глава 8 [I] Reed I. S„ Solomon G. Polynomial codes over certain finite fields. — J* SIAM, 1960, v. 8, p. 300—304. [Имеется перевод: см. гл. I, [51-1 [2] Mattson Н. F.. Solomon G. A new treatment of Bose—Chaudhuri codes. — J. Soe. Indust. Appl. Math., 1961, v. 9, p. 654—699. [Имеется перевод: Мэттсон X., Соломон Г. Новая трактовка колов Boyss —Чоудхури. — В кв.. Теория кодирования. — М.: Мир, 1964, с. 7—29.1 [3[ Mandelbaum D. М.. Construction of error-correcting codes by interpolation.— IEEE Trans. Inf. Theor., 1979, v. IT-25, p. 27-35. [4[ Pollard J. M. The fast Fourier transform in a finite field. — Math. Com- putat., 1971, v. 25, p. 365—374. [Имеется перевод: Поллард Дж. М. Быстрое преобразование Фурье в конечном поле. — В кн. Макклел- лан Дж. X.. Рейдер Ч. М. Применение теории чисел в цифровой об- работке сигналов.—М.: Радио и связь, 1983, с. 147—155. [ [51 Gore W. С. Transmitting binary symbols with Reed—Solomon codes. — Proc. Princeton Conf. Inf. Sci. Syst., Princeton, 1973, p. 495—497. [6[ Chien R. T., Choy D. M. Algebraic generalization of BCH—Goppa—Hel- gert codes. — IEEE Trans. Inf. Theor., 1975. v. IT-21, p. 70—79. [71 Lempel A., Winograd S. A new approach to error-correcting codes. — IEEE Trans. Inf. Theor., 1977, v. IT-23. p. 503—508. [8[ Chien R. T. A new proof of the BCH bound. — IEEE Tians. Inf. Theor., 1972, v. IT-18, p. 541. [9[ Wolf J. K. Adding two information symbols to certain nonbinary BCH codes and some applications. — Bell Syst. Tech. J., 1969, v 48, p. 2405— 2424. [101 Андрианов В. И., Сасковец В. Н Дециклнческие коды. — Кибернетика, 1966, № 1, с. 1—6. [11] Sloane N.J. A., Reddy S. М., Chen С. L. New biliary codes.— IEEE Trans. Inf. Theor., 1972, v. IT-18, p. 503—510. [I2[ Kasahara M.. Sugiyama Y_, Hirasswa S., Namekawa T. A new class of binary codes coustrucfed on the basis of BCH codes. — IEEE Trans. Inf. Theor.. 1975, v. IT-21, p. 582—585. [|3[ Blahut R. E. On extended BCH codes. — Proc. 18th Allerton Conf. Com- mun. Contr. Comput., Univ, of Illinois, Monticello, 1980, p. 50—59. [141 Helgert H. H. Alternant codes. — tnf. and Contr., 1974, v. 26, p. 369— 381.
6В8 Литература 115) Гоппа В. Д. Новый класс Линейных корректирующих кодоЬ. —Проблемы передачи информации, 1970, вып. 3, с. 24—30. [16j Delsarte Р. On subfield subcodes of modified Reed—Solomon codes. — IEEE Trans. Inf. Thcor., 1975, v. IT-21, p. 575—576. [17] Preparata F. P. A class of optimum ncntineer double-error-correcting co- des. — Inf. and Contr., 1968, v. 13, p. 378—400. [Имеется перевод: Пре- парата Ф. П. Класс оптимальных нелинейных кодов с исправлением двой- ных ошибок. — В кн.: Кибернетический сборник. Новая серия. Вып. 7. — М.: 1970, с. 18—42.] [18] Nordstrom A. W., Robinson J. Р. An optimum linear code. — Jnf. and Contr., 1967, v. II, p. 613—616. [19[ Nadler M. A 32-point n equals 12, d equals 5 code. — IRE Trans. Inf. Theor., 1962, v. IT-8, p. 58. [20] Green M. W. Two heuristic techniques for block code construction. — IEEE Trans. Inf. Theor., 1966, v. IT-12, p. 273. [21] Rerdock A. M. A class of low-rate noulinear codes. — Inf. and Contr.. 1972, [ v. 20, p. 182—187. [Имеется перевод: Кердок A. M. Класс нелинейных двоичных кодов с низкой скоростью передачи — В кв.: Кибернетический сборник. Новая серия. Вып. 10.—М.: Мир, 1973, с. 33—38.] [22] Goethals J.-M. Nonlinear codes defined by quadratic forms over GF (2). — Inf. and Contr., 1976, v. 10, p. 43—74. Глава 9 [Ц Reed I. S., Solomon G. Polynomial codes over certain finite fields. — J. Soc. Indust. Appl. Math., I960, v. 8, p. 300—304. [Имеется перевод: см. гл. 1, |51.1 [2] Mandelbaum D. On decoding of Reed-Solomon codes. — IEEE Trans. Inf. Theor., 1971, v. IT-17, p. 707—712. [3] Paschburg R. H. Software implementation of error-correcting codes. — MS thesis. — Univ, of Illinois, Urbana, 1974. [4] Gore W. C. Transmitting binary symbols with Reed—Solomon codes. — Proc. Princeion Conf. Inf. Sci. Syst.. Princeton, 1973, p. 495—497. [51 Michelson A. A fast transform in some Galois fields and an application to decoding Reed—Solomon codes. — IEEE Abstr. of Papers — IEEE Internal. Symp. Inf. Theor., Ronneby (Sweden), 1976. [6[ Blahut R. E. Transform techniques for error-control codes. — IBM J. Res. Develop., 1979, v. 23, p. 299—315. [71 Blahut R. E. Algebraic decoding in the frequency domain. — In: Algebraic coding theory and practice. Ed. by G. Longo. — New York: Springer, 1979. [81 Blahut R. E. On extended BCH codes. — Proc. 18th Allerton Conf. Clrc. Syst. Theor., Univ, of Illinois, Monticello, 1980, p. 50—59. [9] Mandelbaum D. Decoding beyond the designed distance for certain algebraic codes. — Inf. and Contr., 1977. v. 35, p. 209—228. [10][Elias P. Error-free coding. — IRE Trans. Inf. Theor., 1954, v. IT-4, p. 29— 37. [II] Blum R. A.. Weiss A. D. Further results in error-correcting codes. — SM thes. — MIT, Cambridge, I960. [12] Forney G. D., Jr. On decoding BCH codes. — IEEE Trans. Inf. Theor., 1965, v. IT-11, p. 549—557. [131 Wolf J. K. Adding two information symbols to certain nonbinary BCH codes and soma applicalions. — Ball Syst. Tech. J., 1969, v. 48, p. 2405—2424. [141 Kasahara M., Sugiyarna Y„ Hirasawa S., Namakawa T., A new class of binary codes constructed on the basis of BCH codes. — IEEE Trans. Inf. Theor., 1975, v. IT-21, p. 582—585. [15] Patterson N. J. The algebraic decoding of Goppa codes. — IEEE Trans. Inf. Theor., 1975, v. IT-21, p. 203-207.
ЛИТЕРАТУРА ВВ9 1161 Helgert Н. J. Decoding of alternant codes. — IEEE Trans. Inf. Theor., 1977, v. IT-23, p. 513—514. [17] Delssrte P. On subfield-subcodes of modified Reed—Solomon codes. — IEEE Trans. Inf. Theor., 1975, v. IT-21, p. 575—576. [18J Berlekamp E. R. Algebraic coding theory. — New York: McGraw-Hill, 1968. [Имеется перевод: см. монографии, 13].] [19] Hartmann С. R. Р. Decoding beyond the BCH bound.—’IEEE£Trans. Inf. Theor., 1972, v. IT-18, p. 441—444. [20] Vanderhorst J., Berger T. Complete decoding of triple-error-correcting binary BCH codes. — IEEE Trans. Inf. Theor.. 1976, v. IT-22, p. 138—147. [21] Bluestein L. I. Linear liltering approach to the computation of discrete Fourier transforms. — IEEE Trans. Audio Electroacoust., 1970, v. AU-18, p. 451—455. [22 [ Rader С. M. Discrete Fourier transforms when the number of data ssmples is prime. — Proc. IEEE, 1968. v. 56, p. 1107—1108. [Имеется перевод: Рейдер Ч. М. Дискретное преобразование Фурье, когда число отсчетов простое. — В кн.: Макклеллан Дж. X., Рейдер Ч. М. Применение теории чисел в цифровой обработке сигналов. —М.: Радио и связь, 1983, с. 89— 91.] ]23] Goertzel G. — An algorilhm for the evaluation of finite trigonometric sc ries. — Amer. Math. Mon., 1968, v. 65, p. 34—35. [24] Oppenheim A. V., Schafer R. W. Digital signal processing. Englewood Cliffs: Prentice-Hall, 1975. [25[ Rabiner L. R„ Gold B. Theory and application ofjdigital signal processing.— Englewood Cliffs: Prentice-Hall, 1975. [Имеется перевод- Рабииер P. Л., Гоулд Б. Теория и применение цифровой обработки сигналов. —М.: Мир, [26] Sarwate D. V. Semi-fast Fourier transforms over GF (2m). — IEEE Trans. Comput., 1978, v. C-27, p. 283—284. Глава 10 [1 ] Elias P. Error-free coding. — IRE Trans. Inf. Theor., 1954. v. IT-4, p. 29— 37. [2[ Burton H.O., Weldon E. J., Jr. Cyclic product codes. — IEEE Trans. Inf. Theor., 1965, v. IT-11, p. 433-439. [3[ Lin S.. Weldon E. J., Jr. Further results on cyclic productjcodes. — IEEE Trans. Inf. Theor., 1970. v. IT-16, p. 452—459. [4] Reddy S. M„ Robinson J. P. Random-error and burst correction by iterated codes. — IEEE Trans. Inf. Theor., 1972. v. IT-18, p. 182—185. [5] Weldou E. J.. Jr. Decoding binary block codes on Q-ary output channels. — IEEE Trans. Inf. Theor., 1971, v. IT-17, p. 713-718. [6[ Blahut R. E. Transform techniques for error-control codes. — IBM J. Res. Develop., t979, v. 23, p. 299-315. [71 Chien R, T., Ng S. W. Dual product codes for correction of multiple low- density burst errors. — IEEE Trans. Inf. Theor., 1973, v. IT-19, p. 672— 678. Глава 11 [1] Cooky J. W., Tukey J. W. An algorithm for the machine’computation of complex Fourier series. — Math. Comp., 1965, v. 19, p. 297—301. [2] Good I. J. The interaction algorithm and practical Fourier analysis. — J. Roy. Statist. Soc., 1958, v. 20. p. 361—375; addendum, 1960, v. 22, p. 372— 375. [3] Thomas L. H. Using a computer to solve problems in physics.— In; Appli- cations of digital computers. — Boston: Ginn, 1963.
660 ЛИТЕРАТУРА 141 Justesen J. On the complexity of decoding Reed—Solomon codes. — IEEE Trans. Inf. Theor., 1976, v. IT-22, p. 237-238. 15] SarwaLe D. V. On the complexity of decoding Goppa codes. — IEEE Trans. Inf. Theor.. 1977, v. IT-23, p. 515—516. [61 Agarwal R., Cooley J. W. Algorithms for digital convolution. — IEEE Trans. Acoust. Speech Signal Process, 1977, v. ASSP-25, p. 392—410. [Имеется перевод: Агарвал P. К., Кули Дж. У. Новые алгоритмы для цифровой свертки. — В кн.: Макклеллан Дж. X., Рейдер Ч. М. Применение теории чисел в цифровой обработке сигналов, — М.: Радио и связь, 1983, с. 91— 117.] [7] Winograd S. On computing the discrete Fourier transform. — Malh. Comp., 1978, v. 32, p. 175—199. [Имеется перевод" Виноград С. О вычислении дискретного преобразования Фурье. — В кн.: Макклеллан Дж. X., Рей- дер Ч. М. Применение теории чисел в цифровой обработке сигналов. — М_: Радио и связь, 1983. с. 117—136.1 [8] Nussbaumer Н. J. Fast Fourier transform and convolution algorithms. — Berlin: Springer, 1981. [Имеется перевод: Нуссбаумер Г. Быстрое преобра- зование Фурье и алгоритмы вычисления свертки. — М.: Радио и связь, 1985.] [91 Miller R. L.. Truong Т. К-, Reed I. S. Efficient program for decoding the (255, 223) Reed—Solomon code over GF (2s) milh both errors and erasures, using transform decoding. — IEEE Proc., 1980, v. 127, p. 136—142. 110] Blahut R. E. Efficient decoder algorithms based on spectral techniques. — IEEE Abstr. of Papers—IEEE Internat. Sympos. ]nf. Theor.—Santa Monies, 1981. |ll 1 Preparata F. P., Sarwate D. V. Compulational complexity of Fourier trans- forms over finite fields. — Math. Comp., 1977, v. 31, p. 740—751. Глава 12 [1] Elias P. Error-free coding. — IRE Trans. Inf. Theor., 1954, v. IT-4, p. 29— 37. [2] Wozcncraft J. M. Sequential decoding for reliable communiCBtion. — 1957 Nat. IRE Conv. Rec., v. 5, p. 11—25. [3] Wyner A. D., Ash R. B. Analysis of recurrent codes. — IEEE Trans. Inf. Theor., 1963, v. IT-9, p. 143—156. [Имеется перевод: Вайвер А. Д.. Эш Р. Б. Анализ рекуррентных кодов. — В ки.: Кибернетический сбор- ник. Новая серия. Вып. 5.— М." Мир, 1968. с. 5—33.] [4] Massey J. L., Threshold decoding. — Cambridge (Mass.). MIT Press, 1963. [Имеется перевод: Месси Дж. Пороговое декодирование. — М.: Мир, 1966.1 [5] Costello D. J., Jr. A construction technique for random-error-correcting codes.— IEEE Trans. Inf. Theor., 1969, v. IT-15, p. 631—636. (61 Bussgang J. J. Some properties of binary convolutional code generators. — IEEE Trans. Inf. Theor.. 1965, v. IT-11, p. 90—100. [71 Odenwalder J. P. Optimal decoding of convolutional codes. — Ph. D. diss — Univ, of California. Los Angeles, 1970. [8] Bahl L. R., Jelinek F. Rate 1/2 convolutional codes with complemenlary generators. — IEEE Trans. Inf. Theor., 1971, v. IT-17, p. 718—727. [9] Larsen K- J., Short convolutional codes with maxima] free distance for rates 1/2, 1/3 and 1/4. — IEEE Trans. Inf. Theor., 1973, v. IT-19, p. 371-372. [10] Paaske E. Short binary convolutional codes wilh maxima] free distance for rates 2/3 and 3/4. — IEEE Trans. Inf. Theor., 1974, v. IT-20, p. 683—689. [Ill Johannesson R. Robustlv optimal rate one-half binary convolutional codes.— IEEE Trans. Inf. Theor.. 1975. v. IT-21, p. 464—468. [12] Mtssiy J. L., Sain M. K. Inverses of linear sequential circulta, — IEEE Trans. CoTip., 1968, v. C-17, p. 330—337,
ЛИТЕРАТУРА 561 [13] Forney G. D., Jr. Convolutional codes I: Algebraic structure. — IEEE Trans. Inf. Theor., 1970, v. IT-16, p. 720—738. [14[ Lindner R-. Staiger L. Algebraische Codiernngsthcorie. — Berlin: Akade- mie-Verlag, 1977. [I5[ Fano R. M. A heuristic discussion of probabilistic decoding. — IEEE Trans. Inf. Theor., 1963, v. IT-9, p. 64—74. [Имеется перевод: Фано P. M. Эври- стическое обсуждение вероятностного декодирования.—В кн.. Теория кодирования. — М.: Мир, 1964, с. 166—198.] [161 Gallager R. G. Information theory and reliable communication. — New York: Wiley, 1968. [Имеется перевод: см. монографии, [51.1 [171 Viterbi A. J. Error bounds for convolutional codes and an asymptotically optimum decoding algorithm. — IEEE Trans. Inf. Theor., 1967. v. IT-13, p. 260—269. [Имеется перевод. Витерби А. Границы ошибок для сверточ- ных кодов и асимптотически оптимальный алгоритм декодирования. — В кн.: Некоторые вопросы теории кодирования.—М.. Мир, 1970, с. 142— 165.1 [181 Heller J. A. Short constraint length convolutional codes. —Jet Propulsion Labs. Space Prog. Sum. 37-54 III, 1968, p. 171—177. [191 Viterbi A. J., Omura J. K. Principles of digital communication and co- ding. — McGraw-Hill, 1979. [Имеется перевод. Витерби А. Д-, Омура Дж.К Принципы цифровой связи и кодирования.—М-: Радио и связь, 1982.] [201 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. [211 Forney G. D., Jr. Convolutional codes II: Maximum-likelihood decoding and convolutional codes; III: Sequential decoding. — Inf. and Contr., 1974, v. 25, p. 222—297. Глава 13 [11 Massey J. L. Threshold decoding. — Cambridge (Mass.): MIT Press, 1963. (Имеется перевод: см. гл. 14, [4]. 1 [21 Reed I. S. A class of multiple-error-correcting codes and the decoding scheme.— IRE Trans. Inf. Theor., 1954, v. IT-4, p. 38—49. [Имеется перевод: см. гл. 3, [141.1 [31 Robinson J. P., Bernstein A. J. A class of recurrent codes with limited error propagation. — IEEE Trans. Inf. Theor., 1SC7, v. IT-13. p. 106— 113. [4] Wu W. W. New convolutional codes. — IEEE Trans. Communicat. Theor., part I. 1975, v. COM-23, p. 142—156; part II, 1976, v. COM-24, p. 19—33; part III, 1976, v. COM-24, p. 946—955. [5] Rudolph L. D. Geometric configuration and majority-logic decodable co- des.— M. E. E. thesis. — Univ, of Oklahoma, Noman, 1964. [61 Rudolph L D. A class of majority-logic decodable codes. — IEEE Trans. Inf. Theor., 1967, V. IT-14, p. 305—307. [71 Kassmi T_. LinS., Peterson W. W. New generalizations of the Reed—Muller codes. Part Г Primitive codes. — IEEE Trans. Inf. Theor., 1968, v. IT-14, p. 189—199. [81 Колесник В. Д., Мирончиков Е. Т. Циклические коды Рида—Маллера и их декодирование. — Проблемы передичи информации, 1968, вып. 4. с. 15—19. [91 Weldon Е. J., Jr. Euclidean geometry cyclic codes. — Proc. Sympos. Com- binatorial Math., Univ, of North Carolina, Chapel Hill, 1967. | Ю1 Weldou E J., Jr. New generalizations of the Reed—Muller codes. Part II: Non-primitive codes. — IEEE Trans. Inf. Theor., 1968, v. IT-14, p. 199— 206,
В62 ЛИТЕРАТУРА [11 [ Kasami Т., Lin S., Peterson W. W. Polynomial codes. — IEEE Trans. Inf. Theor., 1968, v. IT-14, p. 807—814. [12] Goethals J. M., Delsarte P. On a class of majority-logic decodable cyclic codes. — IEEE Trans. Inf. Theor., 1968, v. IT-14, p. 182—189. [Имеется перевод: Геталс Дж. М., Дейзарт П. Один класс циклических кодов с ма- жоритарным декодированием. — В кн.: Кибернетический сборник. Новая серия. Вып. 6.—М_: Мир, 1969, с. 7—23.] ]13] Delsarte Р. J., Goethals J. М., MacWilliams F. J. On generalized Reed— Muller codes and their relatives. — Inf. and Contr., 1970, v. 16, p. 402— 442. [14] Lin S„ Markowsky G. On a class of one-step majority-logic decodable cyclic codes. — IBM J. Res. Develop., 1980, v. 24, p. 56—63. [15]JGoethals J. M. Threshold decoding—a tentative survey. — In: Coding and complexity. Ed. by G. Longo. — New York: Springer, 1975. Глава 14 [1] Assmus E. F., Jr., Mattson H. F., Jr., Turyn 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. W. Some results on weight distributions of BCH codes. — IEEE Trans. Inf. Theor., 1966, v. IT-12, p. 274. [4] MacWilliama F. J. A theorem on the distribution of weights in a systematic code. — Bell Syst. Tech. J., 1963, p. 79—94. ]5] Huntoon Z. McC., Michelson A. M. On the computation of the probability of post-decoding error events for block codes. — IEEE Trans. Inf. Theor., 1977, v. IT-23, p. 399—403. [6] Viterbi A. J. Convolutional codes and their performance in communication systems. — IEEE Trans. Communicat. Tech., 1971, v. COM-19, p. 751—772. [7] Gilbert E. N. A comparison of signalling alphabets. —Bell Syst. Tech. J.. 1952, v. 31, p. 504—522. [8] McEliece R. J., Rodemich E. R., Rumsey H., Jr., Welch L. R. New upper bounds on the rate of a code via the Delsarte—MacWilliams inequalities.— IEEE Trans. Inf. Theor., 1977, v, IT-23, p. 157—166. [Имеется перевод: Мак-Элис P. Д., Родемич Е. Р., Рамсей Г., мл., Велч Л. Р. Новые верх- ние границы для скорости кода, основанные на неравенствах Дельсарта— Мак-Вильямс. — В кн.: Кибернетический сборник. Новая серия. Вып. 17.— М.: Мир, 1980, с. 6—27.] [9] Costello D. J. Free distance bounds for convolutional codes. — IEEE Trans. Inf. Theor., 1974, v. IT-20, p. 356—365. ]10] Savage J. E. Minimum distance estimates of the performance of sequential decoding. — IEEE Trans. Inf. Theor., 1969, v. IT-15, p. 128—140. Глава 15 ] 1 ] Forney G. D., Jr. Generalized minimum distance decoding. — IEEE Trans. Inf. Theor., 1966, v. IT-12, p. 125—131. [2] Chase D. A class of algorithms for decoding block codes with chaonel measu- rement information. — IEEE Trans. Inf. Theor., 1972, v. IT-18, p. 170— 182. ]3] Hartmann C. R. P., Rudolph L. D. An optimum symbol-by-symbol deco- ding rule for linear codes. — IEEE Trans. Inf. Theor., 1976. v. IT-22, p. 514—517. ]4] Ungerboeck G. Trellis coding with expanded channel signal sets. —Abslr.— 1977 IEEE Internal. Sympos. Inf. Theor., Ithaca, 1977. [5] Ungerboeck G. Channel coding with multilevel phase signals. — IEEE Trans, [nf. Theor., 1982, v. IT-26, p. 55—67,
ЛнТёрАтурА бей (б] Anderson J. Й., Taylor t>. Р. A bandwidth-efficient class of signal-space codes. — IEEE Trans. Inf. Theor., 1978, v. IT-24, p. 703—712. [7] Wozencraft J. M. Sequential decoding (or reliable communication. —1957 Nat. IRE Conv. Rec., v. 5, part 2, 1957, p. 11—25. (8) Wozencraft J. M., Reiifen B. Sequential decoding. — Cambridge (Mass.): MIT Press, 1961. [Имеется перевод: Возенкрафт Дж., Рейффен Б. После- довательное декодирование.—М.: ИЛ, 1963.) ]9] Fano R. М. A heuristic discussion of probabilistic decoding. — IEEE Trans. Inf. Theor., 1963, v. IT-9, p. 64—74. [Имеется перевод: см. гл. 12, [15].] [10] Зигангиров К. Ш. Некоторые процедуры последовательного декодирова- ния. — Проблемы передачи информации, 1966, вып. 2, с. 13—25. ]И ] Jelinek F. A fast sequential decoding algorithm using a stack. — IBM J. Res. Develop., 1969, v. 13, p. 675—685. [12] Forney G. D., Jr. Convolutional codes III: Sequential decoding. — Inform. Contr., 1974, v. 25, p. 267—297. [13] Jelinek F. Probabilistic information theory. — New York: McGraw-Hilt, 1968. 114] Chevillat P. R., Costello D. J., Jr. An analysis of seqoential decoding for specific time-invariant convolutional codes. — IEEE Trans Inf. Theor., 1978, v. IT-24, p. 443—451. [15] Haccoun D., Ferguson M. J. Generalized stack algorithms for decoding con- volutional codes. — IEEE Trans. Inf. Theor., 1975, v. IT-21, p. 638—651. [16] Savage J. E. Sequential decoding — The computation problem. — Bell Syst. Tech. J., (966, v. 45, p. 149—175. [17] Jacobs I. M., Berlekamp E. R. A lower bound to the distribution of compu- tations for sequential decoding. — IEEE Trans. Inf. Theor., 1967, v. IT-13, p. 167—174. [Имеется перевод: Джекобс И., Берлекэмл Е. Нижняя гра- ница количества вычислений для последовательного декодирования. — В кн.: Некоторые вопросы теории кодирования. — М.: Мир, 1970, с. 230— ] 18] Jelinek F. An upper bound on moments of sequential decoding effort. — IEEE Trans. Inf. Theor., 1969, v. IT-15, p. 140—149.
ИМЕННОЙ указатель Абель (Abel N Н ) 60 Агарвал {Agarwal R ) 398 Андерсон (Anderson J В ) 552 Андрианов В Н 284 Ассмус (Assmus Е F) 153, 521 Афанасьев В Б 397 Бартон (Burton Н О ) 238, 353 Бергер (Berger Т) 10, 324 Берлекэмп (Berlecamp Е. R.) 14, 111, 203. 214, 238, 324, 552 Бернстайн (Bernstein A. J.) 491 Бест (Best М R) 10 Биркгоф (Birkhoff A- G.) 60, (К Блейхут Б. (Blahut В.) 10 Блейхут Р. Э. (Blahut R. Е.) 284. 324, 353 398 Блейхут Э. Дж. (Blahut Е. J.) 10 Блечман (Blachman N. М.) 10 Блюм (Blum R. А) 324 Блюстейн (Bluestein L. I ) 324 Бол (Bah| L. R.) 447 Боуз (Bose R. CJ 14, 238 Буссганг (Bussgang J. J ) 447 Вайнер (Wyner A. D) 447 Ван-дер-Варден (VanderWaerden B.L.) 60, 111 Вандеркулк (Vanderkulk W) 10 Ваидерхорст (Vanderhorst J.) 324 Ван Линт (Van Lint J. H ) 83 Васильев Ю. Л. S3 Вейс (Weiss A. D.) 324 Велч (Welch R. L.) 238, 522 Вест (West S. С.) 10 Виноград (Winograd S.) 10, 284, 398 Витерби (Viterbi A. J ) 10, 447, 522 Владус С. Г. (Vladuts S. G.) 522 Возенкрафт (Wozencraft J. М.) 447,552 Вулф (Wolf J. К.) 284, 324 By (wu W. W.) 491 Галлагер (Gallager R. G.) 447 Галуа (Galois Е) 60 Гериель (Goertzel G.) 324 Геталс (GoetbalsJ. М) 284, 491 Гилберт (Gilbert Е N ) 522 Голд (Gold В.) 324 Голей (Golay М. J. Е.) 83, 153 Головина Л. И. 60 Гоппа В. Н. 14. 284, 522 Гор (Gore W. .0) 284, 324 Горенстейн (Gorenstein D. С.) 193, 238 Грин (Green М. W) 284 Гуд (Good I. J) 397 Дельсарт (Delsarte Р.) 284, 324, 491 Джелинек (Jelinek F.) 447, 552 Джекобс (Jacobs I М) 552 Зигангиров К. Ш. 552 Зиновьев В. А 83 Зяблов В. В. 236 Йоханнессон (Johannesson R.) 447 Касамй (Kasami Т ) 153, 186, 238, 491, 521 Касахара (Kasahara М) 238, 284, 324 Кок (Cocke J.) 83 Колесник В. Д. 491 Костелло (Costello D J , Jr) 447 Кердок (Kerdock А. М.) 284 Кинсу (Kiyasu Z.) 83 Кобаяси (Kobajashi К.) 10 Краченфелс (Krachenfels С. А) 10 Кули (Cooley J. W.) 397, 398 Курош А. Г. 60 Ларсен (Larsen К- J-) 447 Лемпель (Lempel А) 284 Лин (Lin S.) 491, 521 Линднер (Lindner R.) 447 Мак Вильямс (MacWilliams F J ) 186, 491, 521 Маклейн (MacLane S) 60, 111 Мак-Элис (McEliece R. J.) 153, 552 Маллер ((Muller D. E.) 83 Мальцев А. И. 60 Мандельбаум (Mandelbaum DJ 238, 284, 324 Марковский (Markowsky GJ 491 Меггитг (Meggitt J. E) 186 Месси (Massey J. L )14, 203, 213. 238, 447, 490, 491 Миллер (Miller R. LJ 398 Мирончиков E. T. 491 Митчелл (Mitchell M E.) 186 Михельсон (Michelson A.) 324, 522 Мэттсон (Mattson H. F., Jr.) 153, 284, 521
Именной указатель 666 Намекавз (Namekawa Т.) 238, 284 Hr (Ng S. W.) 353 Нейдлер (Nadler М) 284 Нордстром (Nordstrom A. W.j 284 Нуссбаумер (Nussbaumer Н. J.) 398 Оденвальдер (Odenwalder J. Р.) 447 Омура (Omura J. К.) 447 Оппенгейм (Oppenheim А. V.) 324 Пааске (Paaske Е.) 447 Паттерсон (Petterson N. J.) 324 Пашбург (Paschburg R. N.) 324 Питерсон (Peterson W. W.) 14, 153, 186, 193, 238, 491, 521 Поллард (Pollard J. М.) 284 Прейцдж (Prange Е.) 153, 186 Препарата (Preparata F. Р.) 284, 398 Поллард (Pollard J. М.) 284 Рабинер (Rabiner L. R.) 324 Рамсей (Rumsey Н., Jr.) 522 Редди (Reddy S. М) 284, 353 Рейдер (Rader С. М.) 324 Рейффен (Reiffen В.) 552 Рид (Reed I. S.) 14, S3, 238, 284, 324, 398, 491 Робинсон (Robinson J Р.) 284,353,491 Родемич (Rodemich Е. R.) 522 Рой-Чоудхури (Ray-Chaudhuri D. К.) 14, 238 Рудолф (Rudolph L D.) 186, 491, 552 Сайн (Sain М К.) 447 Сасковец В. Н. 284 Севидж (Savage J Е.) 552 Семаков Н В. 83 Сервейт (Sarwale D. V.) 10, 324, 397, 398 Симада (Shimada М) 10 Сипглтон (Singleion R. С.) 66, 83 Слепян (Slepian D.) 83 Слоэн (Sloane N. J. А.) 284 Соломон (Solomon G.) 14, 238, 284, 324 Сугияма (Sugiyama Y.) 238, 284 Тейлор (Taylor D Р.) 552 Тиетявяйнен (Tietavainen А) 83 Токура (Tokura N.) 238 Томас (Thomas L. Н 397 Торнгейм (Tornheim L) 60 Трал ль (Thrall R. М.) 60 Труонг (Truong Т- К ) 398 Турин (Turyn R. J) 521 Тьюки (Tukey J. W.) 397 Унгербёк (Ungerboeck G.) 10, 552 Уэадов (Weldon Е. J) 153, 353, 491 Фано (Pano R. М.) 447, 552 Файр (Fire Р.) 153 Фергюсон (Ferguson М. J) 552 Форни (Porney G. D.) 238, 324, 447, 521, 552 Хаккоун (Haccoun D.) 552 Хартман (Hartmann С. R. Р.) 324, 552 Хасимото (Hashimoto Т.) 10 Хеллер (Heller J. А.) 447 Хельгерт (Helgert Н. 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 Цфасман М. A. (Tsfasman М. А.) 522 Чамер (Chamer A. 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 Шёихейм (Schonheim J.) 83 Шольц (Scholtz R. А) 238 Штайгер (Staiger L.) 447 Эйбрамсон (Abramson N.) 153 Элайс (Elias Р.) 324, 353, 447, 522 Элспас (Elspas В.) 153 Эльгамаль (EIGamal А.) 10 Эш (Ash R. В) 447 Юстесен (Justesen J.) 14, 232, 238, 397
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Абелева Группа 32 Авторегрессионный фильтр 168 Алгебраическое дополнение 51 Алгоритм Агарвала—Кули 371—374 — Берлекэмпа 214 -----рекуррентный 389 -----ускоренный 385 — Берлекэмпа—Месси 208—215, 287, 293, 302, 308 — Блюстейна 318 — БПФ 364—371 — быстрый для свертки 357 — Винограда для свертки 357 -----БПФ 370—38! — Витерби 433—438 — Герцеля 322 — Гуда—Томаса 365, 370 — декодирования см. Декодирование — деления для многочленов 90 -----целых чисел 85 — Евклида для многочлегюл 92, 224 -----целых чисел 66 — Кули—Тьюки 366—367 — Месси 213—214 — поиска по решетке 438—446 — Рейдера 318—319 — Рида 79 — синдромного декодирования свер- точного кода 423—428 — стек 549 — Фано 440—446 — Форни 213 Амплитудная модуляция 525 Асимптотический выигрыш кодирова- ния 545 Ассоциативности закон 32, 38 Аффинная перестановка 457 Аффинное подпространство 477 Базис 44 — пополнение 45 Белый шум 525 Бнт 18 — информационный 25 — проверочный 25 — частота ошибки 528 — энергия 528 Берлекэмпа алгоритм см Алгоритм Берлекэмпа—Месси алгоритм см. Ал- горитм Блоковый код 13, 18 Блюстейна алгоритм 318 БПФ-алгоритмы 364—371 Буфера переполнение 444 БЧХ-граница 248 БЧХ-коды см. Коды БЧХ Быстрое преобразование Фурье (ВПФ) 317 Быстрые алгоритмы свертки 357—364 — коды БЧХ 342—344 Вайнера—Эша код 4(8 Варшамова—Гилберта граница см. Граница Гилберта Вектор 42 — внутренний 254 — инцидентности 480 — ортогональный 46 — сигнальный 240 — синдромных многочленов 49 — сложение 42 — умножение на скаляр 42 — частотный 240 Векторное пространство 42 Вероятность декодирования неудачно- го 502 -----ошибочного 502 ----- правильного 502 Вес <?-ичный целого числа 469 — распределение 493 -----в коде Голея 147 -----—— с максимальным расстоя- нием 496 — Хэмминга 62 ----- кодового слова 65 Винограда алгоритм БПФ 370—381 — — для свертки 367 Витерби алгоритм 433—438 Внешний код 229 Внутренний код 229 Выбрасывание 22 Вылавливание ошибок 173—179 Вычет квадратичный 148 — по модулю многочлена 91 ----- целого числа 85 Гауссовский ’inyM’J525 Геометрии евклидова 476 — конечная 474 — проективная 486 Герцеля алгоритм 322 Геталса код 284 Голея код 142—147 ----- распределение весов 147 Гоппы код 269—279
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 667 Гоппы код в узком смысле 269 -----сепарабельный 272 — многочлен 269 Граница БЧХ 248 — Гилберта 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 -----двоичного ОРМ-кода 535—538 -----кода-произведения 332 -----4-ичного ОРМ-кода 538—541 — мажоритарный 449 -----Д-шаговый 451 — Меггитта 165—172 - на регистрах сдвига 162—165 — неполный 22 — несистематический 169 — Питерсона—Горенстейна — Цир- лера 193—201 — полный 22 — с вылавливанием ошибок 173—179 — синдромный 164, 423—428 — систематический 162 — с обратной связью 413 — частотный для кодов БЧХ 287 -----------исправляющий ошибки и стирания 298—299 -----------основанный на алгорит- ме Евклида 293 -----------схемные реализации 289 -----двоичных кодов БЧХ 306 -----расширенных кодов БЧХ 303-304 Декодирование альтернантных кодов 314-317 — быстрое кодов БЧХ 211—221 — во временной области 303—309 — двоичпых кодов БЧХ 221—223 — за границей БЧХ 309—314 - — мажоритарное 449 — мягкое блоковых кодов 531—541 -----сверточных кодов 541—548 — неполное 22 — поиском но решетке 438—446 — полное 22 — по минимуму расстояния 21, 434 -----обобщенному минимальному рас- стоянию 534—537 — последовательное 548—551 — просмотром таблицы 168 — расширенных кодов PC 299—303 — с исправлением t ошибок 285—287 -----ошибок и стираний 294—299 -----помощью алгоритма Евклида 223—227 Делимость 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, 40! ----- свойства 401—402 Дуальное подпространство 63 Дуальный код 63 Закон ассоциативности 32, 38 — дистрибутивности 38, 42 Замкнутости свойство 32, 37
668 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Евклида алгоритм 86, 92, 224 Евклидова геометрия 476 Евклидово-геометрический код 476,481 Единица 32 — кольца 39 Код дуальный 63, 342 — евклидово-геометрический 476, 481 — Ивадаре 429 — каскадный 228—232 — катастрофический 412 — квадратично-вычетный 148—152 Ивадаре код 429 Идеал кольца 117 Идемпотент 246 Изоморфизм полей 104 Интерференция межсимвольная 525 Информационная длина кодового слова 401, 408 Информациовный бит 25 — кадр 400 — символ 25 Информацконное слово 63 Инцидентности вектор 480 — квазисовершенный 74 — Кердока 284 — контролирующий ошибки 13, 18 — линейный 61 нумератор весов 499 — многомерный 325 — Нейдлера 284 — нскатастрофический 412 — несистематический 66, 402 — Нордстрома—Робинсона 284 — основанный на спектральных мето- дах 239-284 — подкод над подполем 77 Кадр информационных символов 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—279 в узком смысле 269, 271 — •— двоичный 273 — — расширенный 270 — — сепарабельный 272 — двоичный 17 — двумерный 339 — древовидный 399. 401 — Препараты 280 — проективно-геометрический 485 — произведение 326—342 — расширенный 75 — решетчатый 401 — Рида—Маллера (РМ) 76 порядка г 76 обобщенный 469 циклический 469 — Рида—Соломона (PC) 201—203 непримитивный 475 расширенный 254 — самодуальный 63, 521 — сверточный 14, 399 исправляющий пакеты ошибок 428-433 t ошибок 414 ивтастрофичесиий 412 некатастрофический 412 — с выбрасыванием 77 повторением 23 — симплексный 453 — систематический ,66, 402 — совершенный 74 — Унгербёка 547 — Файра 139—142 — Хэмминга 23, 83 — — недвончный 71, 83 — циклический 112—163» ясиравляющий две ошибки 134 иепримнтивный 475 примитивный 122 расширенный 254 укороченный 179—183 частотное определение 248 — Юстесена 232—236
предметный указатель 669 Кодер 12 — на регистрах сдвига 162—165 — несистематический 162 — систематический 162 для кодов Гоппы 270 частотный для кодов БЧХ 251— 253 кода PC 249 расширенного кода БЧХ 261 PC 256—257 - циклического кода 247—253 Кодовая длина блока 408 Кодовое слово канала 12. 18 источника 12 Кольцо 29—37 — коммутативное 38 — многочленов 88—95 — отношений 87 — с единицей 38 — целых чисел 84—88 Конструктивное расстояние 188 Контролирующий ошибки код 12 Класс сопряженных элементов 244 Кронекеровское произведение 378 9-ичиый потомок 458 Кули—Тьюки алгоритм 366—367 Матрица порождающая 62 в систематическом виде 65 ив многочленов 409 — пространство столбцов 52 строк 52 — транспонированная 50 — элементарная 50 Меггитта декодер 1CS172 Метрика ребра 544 — Лемминга 27 Минимальное расстояние 20. 414 Минимальный многочлен 104 Минор 51 Многомерная циклическая свертка 371 Многомерное ДПФ 338 Многомерные спектральные методы 325—352 Многомерный код 321 — спектр 339 Многочлен 88 — алгоритм деления 90 — — Евклида 92, 229 — ассоциированный 242 — взаимно простой 89 — взаимный 130 к локаторному 212 — Гоппы 269 — звачений ошибок 212 Левый обратный 30 — смежный класс 38 Ладер смежного класса 36, 68 Линейная зависимость 44 — комбинация 44 — независимость 42 — свертка 354 Линейность сверточного кода 402 Линейный код 61 Логические цепи 154—157 Локатор 134, 457 Локаторный многочлен 249 Лукаса теорема 458 L-шаговое мажоритарное декодирова- ние 451 — информационный 119, 120 — истинно-локаторный 290 — кодовый 113, 120 — кольцо 88 по модулю приведенного много- члена 95 — корень 94 — локаторов 249 ошибок 194 — и стираний 296, 298 — минимальный 104 элемента 122 — неприводимый 89 — НОД 89 — НОК 89 — ошибок 119, 120 — порождающий 117. 406 Мажоритарное декодирование 449 Матрица Вандермонда 144, 195—196 — вырожденная 50 — главнак диагональ 48 — единичная 48 — каноничесияй ступенчатый вид 52 — квадратная 48 — кронекеровское произведение 378 — невырожденная 50 — нулевое подпространство 52 — определитель 62 — приведенный 88 — примитивный 103 — прияятый 119. 120 — проверочный 118 — простой 89 — синдромный 119, 120, 212 — степень 88 Множество ортогональных проверок 449 — согласующихся проверок 449, 451 — сопряженных влементов 125
670 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Модулятор/демодулятор 525 Модуляционный алфавит 526 Мягкое декодирование блоковых кодов 531—541 ----сверточных кодов 541—548 Набор сигналов 526 Невязкл 205 Недвоичный код Хэмминга 71, 83 Неисправляемяя конфигурация оши- бок 309 Нейдлера код 284 Некатастрофический код 412 Неполный декодер 22 Неприводимый многочлен 89 Нерекуррентный фильтр 158 Несистематический код 66. 402 Несистематический кодер 162 НОД многочленов 89 — целых чисел 85 НОК многочленов 90 — целых чисел 84 Нордстрома—Робинсокс^код 284 Нулевое подпространство матрицы 52 Нумератор весов 499 Область целостности 42 Обнаружитель с мягким решением 531 Обобщенный код Рида—Маллера (ОРМ-код) 469—475 Обратный элемент 32 • ----левый 32 Е ----правый 32 Ограничения (условия) сопряженно- сти 243 Ограниченный по полосе сигнал 524 ОРМ-код порядка г 469 ----циклический 469 Ортогональное дополнение 47 Ошибок вылавливание 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—371 —----------GF (р), р — простое число Ферма 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
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ 671 Профиль дистанционный 414 Процедура БерМес 389 — Ченя 199 Радиус покрытия 74 — сферической упаковки 74 Разложение по подгруппе 37 Размерность 45 Ранг матрицы по столбцам 52 --------- строкам 52 Распределение весов 493 -----в коде Голея 147 ---------с максимальным расстоя- нием 496 -----сверточных кодов 505—508 Распространение ошибок 413, 469 -----катастрофическое 413 — обычное 413 Расстояние евклидово 543 — конструктивное 189 — минимальное 20, 414 -----обобщенное 534 — по Хэммингу 20 — свободное 414 Расширение кода 28 — поля 75 Расширенный код БЧХ1258 -----PC 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
672 ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ Теорема, алгоритм Форни 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 — рекуррентный (58 — с конечным импульсным откликом (КИО-фильтр) 158 ----линейной обратной связью 157— 158 — цифровой 157 Форни алгоритм 213 Формальная производная 90 Хорда 244 Хэмминга вес 20 — метрика 27 — расстояние 20 Целые числа поля 99 Цепи логические 154—157 Цепь умножения на многочлен 159 Циклическая свертка 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 Характеристика поля 103 Юст'сена код 232 —236
ОГЛАВЛЕНИЕ От редактора перевода ............................................ 5 Предисловие к русскому изданию . .... . 7 Предисловие....................................................... 8 1. ВВЕДЕНИЕ......................... 1 1. Дискретный канал связи .............. 1. 2. История кодирования, контролирующего ошибки 13. Приложения ... . . ... I 4. Основные понятия................... 1.5 . Простейшие коды ................. Задачи .......... ... 2. ВВЕДЕНИЕ В АЛГЕБРУ.............. 2.1. 2 поле и 6-10-поле ... ... 2.2. Группы.................... ............... 2.3. Кольца .............. ............ 2 4. Поля................ ............ 2 5. Векторные пространства - - 2.6. Линейная алгебра.................. Задачи ................................. Замечания .... ... ........ . - 3. ЛИНЕЙНЫЕ БЛОКОВЫЕ КОДЫ.......................... 3.1. Структура линейных блоковых кодов............ 3 2. Матричное описание линейных блоковых кодов . . . АЗ. Стандартное расположение.................... <-3.4. Коды Хэмминга............................. 3.5. Совершенные ияаэисовершенные коды .... ЗД. Простые преобразования линейного кода . 4*1.7? Коды Рида—Маллера....................... . . . Задачи ............................... . . . . Замечания............................... . . . . 4. АРИФМЕТИКА ПОЛЕЙ ГАЛУА ......................... 4 1. Кольцо целых чисел ........................... Конечные поля, основанные на кольце целых чисел. . Кольца многочленов............................ (t.-i: Конечные поля, основанные иа кольцах многочленов. д.5> Примитивные элементы .............. <4?6?/Структура конечного поля.................. 'Задачи .................................... ... Замечания ...................................... 5. ЦИКЛИЧЕСКИЕ КОДЫ........................ 5 .Ц, Код с точки зрепия расширения поля.... ^21 Полиномиальное описание циклических кодов. KL3-/ Минимальные многочлены и сопряжения . . . 5Д^ Матричное описание циклических кодов . . |бТу Коды Хэмминга ияк циклические коды . 51>. Циклические коды, исправляющие две ошибки . 5 7. Циклические коды, исправляющие пакеты ошибок 5 .8. Двоечный код Голея .................... 5 .9. Квадратнчно-нычетные коды.............. Задачи ................................... Замечания ..................................... 13 15 16 23 26 28 28 31 37 89’ 42 48 57 60 61 61 62 65 71 73 74 76 81 84 84 87 88 95 99 103 ПО Ш 112 112 116 121 128 131 134 136 142 148 152 153
В74 ОГЛАВЛЕНИЕ 6. СХЕМНАЯ РЕАЛИЗАЦИЯ ЦИКЛИЧЕСКОГО КОДИРОВАНИЯ 6. 1. Логические цепи для арифметики конечного поля... 6. 2. Цифровые фильтры ...................... 6 3. Кодеры и декодеры на регистрах сдвига........ 6 4. Декодер Меггитта ... 6 5. Вылавливание ошибок . . . '......... 6. 6. Укороченные циклические коды ......... 67. Декодер Меггитта для кода Голея Задачи . .................... ................. Замечания ............................. ............... 7. КОДЫ БОУЗА — ЧОУДХУРИ — ХОКВИНГЕМА 7.1. Определение кодов БЧХ ................... 7,2. Декодер Питерсона—Горенстейна—Цкрлера (7 3\ Коды Рида—Соломона ................... 7.4. Синтез авторегрессионных фильтров .... 7.5. Быстрое декодирование кодов БЧХ...... Декодирование двоичных кодов БЧХ . . . Декодирование с помощью алгоритма Евклида Каскадные (гнездовые) коды .............. 7.9. Коды Юстесена............ ............... Задачи ................................. . . . Замечания ... 8. КОДЫ, ОСНОВАННЫЕ НА СПЕКТРАЛЬНЫХ МЕТОДАХ 8.1. Преобразования Фурье в поле Галуа................ 8 2. Ограничения сопряженности и идемпотенты......... 8.3. Спектральное описание циклических кодов .......... 8.4. Расширенные коды Рида—Соломона ... 8 5 Расширенные коды БЧХ .......... 8.6. Альтернантные коды.................... 8.7. Характеристики альтернантных кодов............... 8.8. Коды Гоппы....................................... 8.9. Коды Препараты .................................. Задачи ................................................ Замечания ............................................. АЛГОРИТМЫ, ОСНОВАННЫЕ НА СПЕКТРАЛЬНЫХ МЕТО ДАХ.................................................... 9.1. Спектральные методы декодирования................ 92. Исправление стираний и ошибок.................... 9 3. Декодирование расширенных кодов Рида—Соломона . . 9.4 Декодирование расширенных кодов БЧХ............... 9.5. Декодирование во временной области................ 9.6. Декодирование за границей БЧХ.................... 9.7. Декодирование ^альтернантных кодов................ 9.8. Вычисление преобразований в конечных полях .... Задачи ....................................... Замечания.......................................... ... 154 154 157 162 165 173 179 183 184 188 187 187 193 201 203 211 221 223 228 232 236 238 289 239 243 247 231 25'. 263 2'-'1 269 279 283 284 285 285 294 299 303 304 309 314 317 323 324 10. МНОГОМЕРНЫЕ СПЕКТРАЛЬНЫЕ МЕТОДЫ........................ 325 10.1. Коды-произведения ............................ . 325 10 2. Китайские теоремы об остативх .... 328 10.3. Декодирование кода-произведения ................... 332 < 10.4. Многомерные спектры ............................. 338 10.5. Быстрые коды БЧХ................................... 342 10.6. Декодирование многомерных кодов.................... 346
ОГЛАВЛЕНИЕ 67В 10.7. Длинные коды над малыми полями...................... 347 Задачи............. . ...............352 Замечания............. . ... II. БЫСТРЫЕ АЛГОРИТМЫ ... ... 11.1. Линейная свертка и циклическая свертка . . 11.2. Быстрые алгоритмы свертки ................. 113 Быстрые преобразования Фурье ................. 11 4. Алгоритмы Агарвала—Кули вычисления сверток. . , 11.5. Алгоритм Винограда быстрого преобразования Фурье 11.6. Ускоренный алгоритм Берлекэмпа—Месси . . 11.7. Рекуррентный алгоритм Берлекэмпа—Месси . . 11.8. Ускоренное декодирование кодов БЧХ . 11 9. Свертка в суррогатных полях Задачи ............ Замечания............................ ... СВЕРТОЧНЫЕ КОДЫ........................... 12.1 . Древовидные и решетчатые коды............. 12.2 . Описание сверточных кодов с помощью многочленов. 12 3. Исправление ошибок; понятия расстояния . . . 12.4 . Матричное описание сверточных кодов....... 12.5 . Некоторые простые сверточные коды......... 12.6 . Алгоритмы синдромного декодирования....... 12.7 . Сверточные коды для нсиравления пакетов ошибок . 12.8 . Алгоритм декодирования Витерби.... 12.9 . Алгоритмы повска по решетке . Задачи.................... ... Замечания ................................ 13. КОДЫ И АЛГОРИТМЫ ДЛЯ ДЕКОДИРОВАНИЯ МАЖОРИ- ТАРНЫМ МЕТОДОМ................................................. 13.1. Декодирование мажоритарным методом 13.2. Схемы мажоритарного декодирования . . ........... 13.3. Аффинные перестановки для циклических кодов........ 13.4. Циклические коды, основанные на перестановках....... 13.5. Сверточные коды с мажоритарным декодированием. 13.6. Обобщенные коды Рида—Маллера................. 13.7. Евклидово-геометрические коды ..................... 13.8. Проективно-геометрические коды ..................... Задачи.............................. ... ....... Замечания........................................... .... 14. КОМПОЗИЦИЯ И ХАРАКТЕРИСТИКИ КОНТРОЛИРУЮЩИХ ОШИБКИ КОДОВ................................................... 14.1. Распределения весов................................ 14.2. Вероятности ошибочного декодирования и неудачного декоди- рования .................................................. 14.3. Распределение весов сверточных кодов............... 14.4. Границы минимального расстояния для блоковых кодов. . . 14.5. Границы минимального расстояния для саерточных кодов Задачи.............................................. ... Замечания ............................................... ss
676 ОГЛАВЛЕНИЕ 15. ЭФФЕКТИВНАЯ ПЕРЕДАЧА СИГНАЛОВ ПО ЗАШУМЛЕН- НЫМ КАНАЛАМ................................................... 52J 15.1. Ограниченный по полосе гауссовский канал . . 52' 15.2. Энергия кл Сит и частота ошибок на бит.............521 15.3 Мигкое декодирование блоковых кодов . . 531 15.4. Мигкое декодирование сверточных кодов ... . . 541 15.5. Последовательное декодирование . . ..........54! Задачи...................... - ......... 55.' Замечания................................. • 55: Литература ............................................... 551 Именной указатель........................................... 56* Предметный указатель ......................................... 561 УВАЖАЕМЫЙ ЧИТАТЕЛЬ! Ваши замечания о содержании книги, ее оформлении, качестве перевода и другие просим присылать по адресу: 129820. Москва, И-110, ГСП, 1-й Рижский пер., д. 2, издательство «.Мир». Ричард Э. Блейхут ТЕОРИЯ И ПРАКТИКА КОДОВ. КОНТРОЛИРУЮЩИХ ОШИБКИ Ст. научи, редактор Г. М. Ильичева Мл. научи, редакторы: Р. И. Пяткина, Л. А. Королева Художник Л. М. Муратова Художественный редактор В. И. Шаповалов Корректор В С. Соколов ИБ К» 559Б Сдано в набор 3-07 85. Подписано к печати 13.02.86. Формат 60Х во1/,,. Бумага типографская Ki 1.Печать высокая. Гарнитура литературная. Объем бум. л. 18.00. Уел. печ. л. 36.00- Усл. кр.-отт. 36.( Улк. IZZQIC Тим» итп а«. Зак. 247. Пена 2 п 60 к- ИЗДАТЕЛЬСТВО «МИР» 129820, ГСП, Москва, И-110. I-й Рижский лер.» 2. Ленинградская типография К/ 6 ордена Трудового Красного Знамени Ленинградского объедииакия «Техническая книга» им. Евгении Соколовой Союзполиграфпрома при Государственном комитете СССР по делам издательств, полиграфии и каижиой торговли 193144. г. Левингред, ул. Моисеенко. 10.