Текст
                    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 и решим получ