Вы находитесь на странице: 1из 137

Министерство образования и науки Республики Казахстан

НАО «Евразийский национальный университет им. Л.Н. Гумилева»

Кафедра Информационная безопасность


(наименование кафедры)

УТВЕРЖДАЮ
Декан факультета
Информационных
технологий
_______________ Сеилов Ш.Ж.
(подпись)
_______________________ 2022 г.
МП

УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС
ДИСЦИПЛИНЫ
по дисциплине TIK 2215– Теория информации и кодирования
(наименование дисциплины)

для обучающихся по образовательной программе 6В06306 – Системы информационной


безопасности
(шифр и наименование направлении)

Нур-Султан
2022
НАО «Евразийский национальный университет им. Л. Н. Гумилева»
Факультет «Информационных технологий»
Кафедра «Информационная безопасность»

Рабочая (модульная) учебная программа (Syllabus)


MATH 22202 Математика для управления и защиты информации по дисциплине
TIK 2215– Теория информации и кодирования
для обучающихся по образовательной программе
6В06306 – Системы информационной безопасности

Астана
2023
Данный документ согласно пункту 1 статьи 7 ЗРК от 7 января 2003 года «Об
электронном документе и электронной цифровой подписи» равнозначен документу
на бумажном носителе

Документ подписали

№ ФИО Должность
1 Ташатов Нурлан Наркенович Доцент (исполняющий обязанности)
2 Сатыбалдина Дина Жагыпаровна Заведующий кафедры
3 Сагнаева Сауле Кайроллиевна доцент
4 Сеилов Шахмаран Журсинбекович Декан факультета

Разработчик:
Ташатов Нурлан Наркенович, Доцент (исполняющий обязанности)
Рабочая (модульная) учебная программ (Syllabus) по дисциплине TIK 2215 Теория информации и кодирования
разработана на основании каталога элективных дисциплин

Разработчик
или разработчики Ташатов Нурлан Наркенович, к.ф.-м.н., доцент р
(Ф.И.О., занимаемая должность, ученая степень)

Рассмотрено на заседании кафедры «Информационная безопасность»


протокол № 11 от « 09»____06____2022 г.

Заведующий кафедрой ______________ Сатыбалдина Д.Ж.


(подпись) (Ф.И.О.)

Одобрено на заседании Учебно-методической комиссии факультета


«22» _____06_____ 2022 г. Протокол № 10

Председатель УМК факультета ____________ к.ф.-м.н., доцент Сагнаева С.К.

Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое


Евразийский национальный
Рабочая (модульная) учебная программа (Syllabus) Издание: первое
университет им. Л.Н. Гумилева

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

1. Краткое описание дисциплины

Цель дисциплины Результаты обучения (РО) Ожидаемые результаты


по образовательной обучения (РО) по
программе * дисциплине

Изучение и понимание РО6 – Владеть навыкамикорректно


ОПК4 - Способность
количественной меры применять при решении
программировать на современных
профессиональных задач
языках с использованием различных
информации, понятия соответсвующий мематический
парадигм; использования основных
энтропии, скорости аппарат дискретной математики,естественнонаучных законов и
передачи информации и теории вероятности и
математического аппарата в
помехоустойчивого матемаитческой статистики профессиональной деятельности; на
кодирования при РО12 – Владеть основами теориипрофессиональном уровне работать
иныормации и кодирования,
с информационными технологиями
отсутствии и наличии формальным аппаратом в областиПК5 - Способность анализировать,
помех, информационные криптографии и криптоанализа
выбирать методики и методы
пределы избыточности, стандартными криптографическими
оценки и реализации процессов
проблемы передачи алгоритмами и протоколами и управления информационной
информации. применять их в задачах защиты безопасностью охватывающие
данных процессы управления уязвимостей и
угроз, тестирования безопасности,
противодействия угрозам,
управления рисками, активами,
инцидентами, непрерывностью
бизнеса
*Согласно ОП «6В06306 – Системы информационной безопасности» 2021г.

2. Пререквизиты

Для освоения данной дисциплины необходимы знания, умения и навыки


приобретённые при изучении следующих дисциплин: Math 1201 Математика

Постреквизиты
Знания, умения и навыки, полученные при изучении дисциплины необходимы для
освоения следующих дисциплин: при написании дипломных работ

3. Выписка из учебного плана


Курс____2____
Семестр________4____
Количество кредитов_______5______

Виды занятий Общее количество часов

Лекции 15
Практическое занятие
Семинарское занятие
Лабораторное занятие 30
Студийное занятие
СРО 105
Итого 150
4. Тематический план дисциплины по модулям
Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое
Евразийский национальный
Рабочая (модульная) учебная программа (Syllabus) Издание: первое
университет им. Л.Н. Гумилева

(в академических часах)
№ модуля Наименование модуля
1 Количественная оценка информации и каналы связи
2 Изучение принципов, алгоритмов и методов теории помехоустойчивого
кодирования и их реализация

Лекционные занятия
№ № Наименование темы лекции Количество Виды и методы
недели модуля часов обучения
1 1 Основные понятия и определения 1 объяснительно-
дисциплины «Теории информации иллюстративная лекция,
интерактивный метод
и кодирования».
2 Количественная оценка 1 объяснительно-
1 информации. Единицы количества иллюстративная лекция,
интерактивный метод
информации.
3 Понятие энтропии. Энтропия как 1 объяснительно-
1 мера неопределенности. Свойства иллюстративная лекция,
интерактивный метод
энтропии.
4 Условная энтропия и энтропия 1 объяснительно-
1 объединения иллюстративная лекция,
интерактивный метод
5 Информационные характеристики 1 объяснительно-
канала связи. Пропускная иллюстративная лекция,
1 интерактивный метод
способность канала связи.
Избыточность.
6 Основы помехоустойчивого 1 объяснительно-
1 кодирования. Основные иллюстративная лекция,
интерактивный метод
принципы. Типы кодов
7 Линейные блоковые коды. Основы 1 объяснительно-
2 матричного построения кодов иллюстративная лекция,
интерактивный метод
8 Линейные блоковые коды. 1 объяснительно-
2 Синдром и обнаружение ошибок. иллюстративная лекция,
интерактивный метод
Синдромное декодирование
9 Линейные блоковые коды. Вес и 1 объяснительно-
расстояние Хемминга. иллюстративная лекция,
интерактивный метод
2 Корректирующая способность
обнаруживать и исправлять
ошибки
10 Линейные блоковые коды. 1 объяснительно-
Совершенные коды и граница иллюстративная лекция,
2 интерактивный метод
Хемминга. Вероятность ошибки
декодирования
11 Линейные блоковые коды. Коды 1 объяснительно-
2 Хемминга. Расширенные коды иллюстративная лекция,
интерактивный метод
12 Циклические коды. Определение и 1 объяснительно-
свойства двоичных циклических иллюстративная лекция,
2 интерактивный метод
кодов. Систематический
циклический код.
Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое
Евразийский национальный
Рабочая (модульная) учебная программа (Syllabus) Издание: первое
университет им. Л.Н. Гумилева

13 Порождающие и проверочные 1 объяснительно-


2 матрицы циклических кодов иллюстративная лекция,
интерактивный метод
14 Схемная реализация циклического 1 объяснительно-
2 кодирования. иллюстративная лекция,
интерактивный метод
15 Синдром циклических кодов и 1 объяснительно-
контроль ошибок. Пакеты ошибок. иллюстративная лекция,
2 интерактивный метод
Декодер Меггитта. Циклические
коды Хемминга
ИТОГО 15

Лабораторные занятия
№ № Наименование тем Количество Виды и методы
недели модуля практических занятий часов обучения
1 1 Обращение. Код Цезаря, метод 2 Выполнение заданий и
полосок. Алфавитная подстановка, оформление отчетов по
лабораторным работам,
транспозиция. объяснительно-
мотивационный метод
2 Количество информации. Подход 2 Выполнение заданий и
Хартли. Подход Шеннона оформление отчетов по
1 лабораторным работам,
объяснительно-
мотивационный метод
3 Неравномерные коды Шеннона – 2 Выполнение заданий и
Фано и Хаффмана оформление отчетов по
1 лабораторным работам,
объяснительно-
мотивационный метод
4 Условная энтропия 2 Выполнение заданий и
оформление отчетов по
1 лабораторным работам,
объяснительно-
мотивационный метод
5 Энтропия объединения 2 Выполнение заданий и
оформление отчетов по
1 лабораторным работам,
объяснительно-
мотивационный метод
6 Арифметическое кодирование и 2 Выполнение заданий и
декодирование оформление отчетов по
1 лабораторным работам,
объяснительно-
мотивационный метод
7 Кодирование и декодирование 2 Выполнение заданий и
Лемпеля – Зива оформление отчетов по
1 лабораторным работам,
объяснительно-
мотивационный метод
8 Линейные блоковые коды. Код с 2 Выполнение заданий и
одной проверкой на четность оформление отчетов по
2 лабораторным работам,
объяснительно-
мотивационный метод
Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое
Евразийский национальный
Рабочая (модульная) учебная программа (Syllabus) Издание: первое
университет им. Л.Н. Гумилева

9 Код Хемминга 2 Выполнение заданий и


оформление отчетов по
2 лабораторным работам,
объяснительно-
мотивационный метод
10 Корреляционный код. Инверсный 2 Выполнение заданий и
код оформление отчетов по
2 лабораторным работам,
объяснительно-
мотивационный метод
11 Код Рида – Маллера 2 Выполнение заданий и
оформление отчетов по
2 лабораторным работам,
объяснительно-
мотивационный метод
12 Коды с постоянным весом 2 Выполнение заданий и
оформление отчетов по
2 лабораторным работам,
объяснительно-
мотивационный метод
13 Циклические коды Хемминга 2 Выполнение заданий и
оформление отчетов по
2 лабораторным работам,
объяснительно-
мотивационный метод
14 Коды Боуза – Чоудхури - 2 Выполнение заданий и
Хоквингема (БЧХ) оформление отчетов по
2 лабораторным работам,
объяснительно-
мотивационный метод
15 Код Файера (укороченные коды) 2 Выполнение заданий и
оформление отчетов по
2 лабораторным работам,
объяснительно-
мотивационный метод
ИТОГО 30

СРО
№ № Наименование темы СРО. Количество Виды и методы
недели модуля Сроки сдачи СРО часов обучения
1 1 Информация и сообщение 7 эвристические
самостоятельные работы,
реферат-доклад
2 Энтропия и информация. 7 эвристические
1 Информация и алфавит. самостоятельные работы,
реферат-доклад
3 Оптимальное кодирование 7 эвристические
1 самостоятельные работы,
реферат-доклад
4 Свойства симметричного канала 7 эвристические
1 связи самостоятельные работы,
реферат-доклад
5 Вычисление скорости передачи 7 эвристические
1 информации самостоятельные работы,
реферат-доклад
6 1 Код Макдональда 7 эвристические
Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое
Евразийский национальный
Рабочая (модульная) учебная программа (Syllabus) Издание: первое
университет им. Л.Н. Гумилева

самостоятельные работы,
реферат-доклад
7 Код Варшамова 7 эвристические
1 самостоятельные работы,
реферат-доклад
8 Коды с малой плотностью 7 эвристические
2 проверок на че самостоятельные работы,
реферат-доклад
9 Итеративный код 7 эвристические
2 самостоятельные работы,
реферат-доклад
10 Коды Плоткина 7 эвристические
2 самостоятельные работы,
реферат-доклад
11 Код Бергера 7 эвристические
2 самостоятельные работы,
реферат-доклад
12 Генератор Блюма-Шуба 7 эвристические
2 самостоятельные работы,
реферат-доклад
13 Непрерывные коды 7 эвристические
2 самостоятельные работы,
реферат-доклад
14 Компаундные коды 7 эвристические
2 самостоятельные работы,
реферат-доклад
15 Двоичный код Голлея. Код 7 эвристические
2 Абрамсона (CRC коды) самостоятельные работы,
реферат-доклад
ИТОГО 105

5. Краткая организационно-методическая характеристика дисциплины


Виды контроля учебных достижений:
Рубежный контроль 1 коллоквиум
Рубежный контроль 2 коллоквиум
Итоговый контроль: устно

Политика и процедуры курса:

- Обязательное посещение обучающимися всех занятий согласно расписанию;


- Предварительная подготовка к занятиям;
- Своевременное выполнение и сдача СРО;
-Подготовка ко всем видам занятий должна нести самостоятельный, творческий характер;
- Активная работа и проявление креативности во время занятий;
- Участие во всех видах контроля;
- Приверженность Политике академической честности университета.

Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое


Евразийский национальный
Рабочая (модульная) учебная программа (Syllabus) Издание: первое
университет им. Л.Н. Гумилева

6. Учебно-методическая обеспеченность дисциплины

№ Автор, наименование, год издания Носитель Имеется в наличии


информации (шт.)
В На
библиотеке кафедре
Основная литература
1 Березкин Е.Ф. Основы теории информации и Учебник - электронный
кодирования. Изд. Лань, 2019 г. – 320 с.
ISBN: 978-5-8114-3138-0

2 Д.Е. Чикрин Теория информации и кодирования: курс Учебное - электронный


лекций. –Изд-во Казан. ун-та (Казань), 2013. - 116 с. пособие
3 Кельберт, М. Я. Вероятность и статистика в примерах и Учебник - электронный
задачах. Том 3. Теория информации и кодирования /
М.Я. Кельберт, Ю.М. Сухов. – М.: Изд-во МЦНМО,
2014. - 568 c.
4 Шавенько Н.К. Основы теории информации и электронный
кодирования. Учебное пособие. – М,: Изд-во
МИИГАиК, 2012. – 125 с.
5 Ю.М. Штарьков. УНИВЕРСАЛЬНОЕ КОДИРОВАНИЕ Учебник - электронный
ТЕОРИЯ И АЛГОРИТМЫ. М: Изд-во ФИЗМАТЛИТ.
2013. – 266 с.
6 Д.Ж. Сатыбалдина., Н.Н. Ташатов., А.Н. Исайнова. Учебно- 50 1
Алгоритмы и методы помехоустойчивого кодирования: методическое
методические указания к практическим работам. пособие
Алматы: Изд-во ССК, 2019. - 140, ISBN 978-601-327-
981-7.
7 Гошин, Егор Вячеславович. Теория информации и Учебное электронный
кодирования: учеб. пособие. – Самара: Изд-во пособие
Самарского университета, 2018. – 124 с.
Дополнительная литература
1 Ризаев И.С. Теория информации и кодирования. – Учебное электронный
Учебное пособие. Изд-во КГТУ Казань, 2012. – 98 с. пособие
2 Плохов Е.М., Филоненков А.И., Самсонов Н.Ф. электронный
Учебное пособие. — Ростов-на-Дону: Изд-во Феникс, Учебник
2002. — 288 с. — ISBN 5-222-02240-4.
3 Потапов В.Н. Теория информации. Кодирование электронный
Учебное
дискретных вероятностных источников. Изд-во НГУ
пособие
Новосибирск, 2009. – 94 с.
4 Лидовский В.В. Теория информации. –. Изд-во РГТУ Учебное электронный
Москва, 2012. – 104 с. пособие
5 Блинова И.В., Попов И.Ю. Теория информации. электронный
Учебное
Учебное пособие. – СПб: Изд-во Университета ИТМО,
пособие
2018. – 84 с
Электронные и интернет-ресурсы
Ссылка на электронные учебники
1 https://megapro.enu.kz/ProtectedView/Book/ViewBook/17118
2 https://books.ifmo.ru/file/pdf/1576.pdf
3 https://www.mccme.ru/free-books/izdano/2004/it2004p1.pdf
4 http://window.edu.ru/resource/553/72553/files/teoria_informacii.pdf
5 https://www.twirpx.com/file/58194/
6 https://www.twirpx.com/file/78525/
Электронные журналы
1 http://ijitt.ru/index.php/vypuski-zhurnala
Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое
Евразийский национальный
Рабочая (модульная) учебная программа (Syllabus) Издание: первое
университет им. Л.Н. Гумилева

2 https://postnauka.ru/faq/81997
3 http://ijitt.ru/index.php/vypuski-zhurnala
4 https://postnauka.ru/faq/81997

7. Система оценки результатов учебных достижений обучающихся


Знания, умения и навыки студентов оцениваются по следующей системе

Оценка Цифровой %-ное Оценка по Критерии выставления


по эквивален содержа традиционно
буквенно т баллов ние й системе
й системе
А 4,0 95-100 Отлично Оценка А ставится в том случае, когда
дан полный, развернутый ответ на
поставленный вопрос, показана
совокупность осознанных знаний об
объекте, проявляющаяся в свободном
оперировании понятиями, умении
выделить существенные и
несущественные его признаки,
причинно-следственные связи. Знание
об объекте демонстрируется на фоне
понимания его в системе данной науки
и междисциплинарных связей. Ответ
формулируется в терминах науки,
изложен литературным языком,
логичен, доказателен, демонстрирует
авторскую позицию обучающихся.
А- 3,67 90-94 Оценка А- ставится в том случае, когда
дан полный, развернутый ответ на
поставленный вопрос, показана
совокупность осознанных знаний об
объекте, доказательно раскрыты
основные положения темы; в ответе
прослеживается четкая структура,
логическая последовательность,
отражающая сущность раскрываемых
понятий, теорий, явлений. Знание об
объекте демонстрируется на фоне
понимания его в системе данной науки
и междисциплинарных связей. Ответ
изложен литературным языком в
терминах науки. Могут быть допущены
недочеты в определении понятий,
исправленные обучающимся
самостоятельно в процессе ответа.
В+ 3,33 85-89 Хорошо Оценка В+ ставится в том случае, когда
обучающимся дан полный, развернутый
ответ на поставленный вопрос,
доказательно раскрыты основные
положения темы в ответе
Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое
Евразийский национальный
Рабочая (модульная) учебная программа (Syllabus) Издание: первое
университет им. Л.Н. Гумилева

прослеживается четкая структура,


логическая последовательность,
отражающая сущность раскрываемых
понятий, теорий, явлений. Ответ
изложен литературным языком в
терминах науки. В ответе допущены
недочеты, исправленные обучающимся
с помощью преподавателя.
B 3,0 80-84 Оценка В ставится в том случае, когда
дан полный, развернутый ответ на
поставленный вопрос, показано умение
выделить существенные и
несущественные признаки, причинно-
следственные связи. Ответ четко
структурирован, логичен, изложен
литературным языком в терминах
науки. Могут быть допущены недочеты
или незначительные ошибки,
исправленные обучающимся с
помощью преподавателя.
В- 2,67 75-79 Оценка В- ставится в том случае, когда
дан развернутый ответ на поставленный
вопрос, показано умение выделить
существенные и несущественные
признаки, причинно-следственные
связи. Ответ четко структурирован,
логичен, изложен в терминах науки.
Однако допущены незначительные
ошибки или недочеты, исправленные
обучающимся с помощью наводящих
вопросов.
С+ 2,33 70-74 Оценка С+ ставится в том случае, когда
дан полный, но недостаточно
последовательный ответ на
поставленный вопрос, но при этом
показано умение выделить
существенные и несущественные
признаки и причинно-следственные
связи. Ответ логичен и изложен в
терминах науки. Могут быть допущены
1–2 ошибки в определении основных
понятий, которые обучающийся
затруднился исправить самостоятельно.
C 2,0 65-69 Удовлетвори Оценка С ставится в том случае, когда
тельно дан недостаточно полный и
недостаточно развернутый ответ.
Логика и последовательность
изложения имеют нарушения.
Допущены ошибки в раскрытии

Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое


Евразийский национальный
Рабочая (модульная) учебная программа (Syllabus) Издание: первое
университет им. Л.Н. Гумилева

понятий, употреблении терминов.


Обучающийся не способен
самостоятельно выделить существенные
и несущественные признаки и
причинно-следственные связи.
Обучающийся может конкретизировать
обобщенные знания, доказав на
примерах их основные положения
только с помощью преподавателя.
Речевое оформление требует поправок,
коррекции.
С- 1,67 60-64 Оценка С- ставится в том случае, когда
дан неполный ответ, логика, и
последовательность изложения имеют
существенные нарушения. Допущены
грубые ошибки при определении
сущности раскрываемых понятий,
теорий, явлений, вследствие
непонимания обучающимся их
существенных и несущественных
признаков и связей. В ответе
отсутствуют выводы. Умение раскрыть
конкретные проявления обобщенных
знаний не показано. Речевое
оформление требует поправок,
коррекции.
D+ 1,33 55-59 Оценка D+ ставится в том случае, когда
дан неполный ответ. Присутствует
нелогичность изложения. Обучающий
затрудняется с доказательностью. Масса
существенных ошибок в определениях
терминов, понятий, характеристике
фактов, явлений.
В ответе отсутствуют вводы. Речь
неграмотна. При ответе на
дополнительные вопросы Обучающий
начинает осознавать существование
связи между знаниями только после
подсказки преподавателя.
D 1,0 50-54 Оценка D ставится в том случае, когда
дан неполный ответ, представляющий
собой разрозненные знания по теме
вопроса с существенными ошибками в
определениях. Присутствуют
фрагментарность, нелогичность
изложения. Обучающий не осознает
связь данного понятия, теории, явления
с другими объектами модуля
(дисциплины). Отсутствуют выводы,
конкретизация и доказательность
Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое
Евразийский национальный
Рабочая (модульная) учебная программа (Syllabus) Издание: первое
университет им. Л.Н. Гумилева

изложения. Речь неграмотная.


Дополнительные и уточняющие
вопросы преподавателя не приводят к
коррекции ответа обучающегося не
только на поставленный вопрос, но и на
другие вопросы модуля (дисциплины).
FХ 0,5 25-49 Неудовлетво Оценке «неудовлетворительно»
рительно соответствует буква FХ, F, имеющая
цифровой эквивалент 0 и процентное
F 0 0-24 содержание 0-49. Данная оценка
ставится в том случае, если
обучающийся обнаружил пробелы в
знании основного материала,
предусмотренного программой, не
освоил более половины программы
модуля (дисциплины), в ответах
допустил принципиальные ошибки, не
выполнил отдельные задания,
предусмотренные формами текущего,
промежуточного и итогового контроля,
не проработал всю основную
литературу, предусмотренную
программой.

Ф ЕНУ 703-13-17 Рабочая (модульная) учебная программа (Syllabus). Издание первое


Лекция 1. Понятие энтропии. Энтропия как мера неопределенности. Взаимная и
условная энтропия. Энтропия объединения. Энтропия и информация. Кодирование
информации. Основные понятия

Энтропия является мерой неопределенности опыта, в котором проявляются случайные


события, и равна средней неопределенности всех возможных его исходов.
𝐻(𝑋) = −𝑙𝑜𝑔2 𝑝(𝑥),
Чем больше энтропия источника, тем больше степень неопределенности реализуемых им
сообщений в среднем, то есть более неопределенным является ожидание сообщений.
Свойства энтропии
1. H = 0 тогда и только тогда, когда одна из p(xj ) 1. Однако, при этом из
∑𝑖 𝑝𝑖 = 1 следует, что все остальные p(xi) 0, i j т.е. реализуется ситуация, когда один из
𝑁

исходов является достоверным (тогда событие перестает быть случайным). Во всех остальных
случаях, очевидно, что Н > 0.
2. Из аддитивности неопределенностей следует, что и энтропия, как мера
неопределенности, должна обладать аддитивностью, т.е. для двух независимых опытов X и Y
H(X Y) H(X ) H(Y)
т.е. энтропия сложного опыта, состоящего из нескольких независимых, равна сумме
энтропий отдельных опытов.
Взаимная и условная энтропия. При аксиоматическом построении теории информации
использовалось такое понятие, как информация пары событий. Напомним и обобщим эти
рассуждения.
Рассмотрим два дискретных источника X и Y. Объединим их события в пары событий
(хi, yi). Мы получим простейшую модель связанных источников.

Если оба источника каким-то образом связаны между собой, то следует ожидать, что
событие одного источника позволяет делать некоторое предположение о событии другого. В
терминах теории информации это означает, что неопределенность второго источника
снижается, т.е. источники обмениваются взаимной информацией.
Информация пары событий (xi, yi) определяется суммой информации этих событий за
вычетом некоторой неотрицательной величины, которая снижает неопределенность, т.е. сама
в свою очередь является информацией. Поэтому, назовем ее взаимной информацией пары
событий.
Взаимная информация пары событий определяется как
Обратим внимание на то, что взаимная информация I(xi, yi) всегда положительна. Важным
свойством также является симметрия взаимной информации относительно источников, т.к.

Условная информация (апостериорная неопределенность)

то есть информацию нары событий можно определить как сумму информации события yi и
информации события xi при условии, что событие yi уже известно, или, наоборот, как сумму
информации события xi и информации события yi при условии, что событие xi уже известно.
Понятие условной энтропии в теории информации используется при определении
взаимозависимости между символами кодируемого алфавита, для определения потерь при
передаче информации по каналам связи, при вычислении энтропии объединения. Во всех
случаях при вычислении условной энтропии в том или ином виде используются условные
вероятности.

Из формулы следует
p (X Y) = p( X) p(Y / X) = p (Y) p (X / Y).
От классического выражения формула условной энтропии отличается тем,
что в ней вероятности – условные (выражение частные условные энтропии):
где индекс i выбран для характеристики произвольного состоянии источника сообщений X,
индекс j выбран для характеристики произвольного состояния адресата Y.
Общая условная энтропия сообщения Y относительно сообщения X характеризует
количество информации, содержащееся в любом символе алфавита. Она определяется
усреднением по всем символам, т. е. по всем состояниям с учетом вероятности появления
каждого из состояний, и равна сумме вероятностей появления символов алфавита на
неопределенность, которая остается, после того как адресат принял сигнал

Понятие общей и частной условной энтропии широко используется при вычислении


информационных потерь в каналах связи с шумами.
Cо стороны передатчика сообщений.
Чтобы учесть потери при передаче всех сигналов по данном каналу связи, следует
просуммировать все частные условные энтропии, т. е. произвести двойное суммирование по i
и по j. При этом в случае равновероятных появлений сигналов на выходе источника сообщений

(так как энтропия есть неопределенность на один символ, мы делим на m).


В случае неравновероятного появления символов источника сообщений следует учесть
вероятность появления каждого символа, умножив на нее соответствующую частную
условную энтропию, т.е. p(xi)p(yj/ xi)=p(xi,yj). При этом общая условная энтропия вычисляется
по следующей формуле

Cо стороны приемника сообщений. С получением сигнала yj предполагаем, что был послан


какой-то из сигналов x1, x2,.., xi…. xm.
Частная условная энтропия

а общая условная энтропия

Энтропия объединения используется для вычисления энтропии совместного появления


статистически зависимых сообщений. Н(X, Y) – неопределенность того, что будет послано X,
а принято Y. Для ансамблей переданных сообщений X и принятых сообщений Y энтропия
объединения представляет собой сумму вида
Энтропия объединения и условная энтропия связаны между собой следующими
соотношениями:
Н (X, Y) = Н (X) + Н (Y / X) = Н (Y) + Н( X / Y),
Н (Y / X) = Н (X, Y) + Н (X), Н (X / Y) = Н (X, Y) + Н (Y).
Кодирование информации. Предварительные сведения. В технике особую роль
приобрели преобразования дискретной информации, так как многочисленные исследования
показали, что в реальных условиях непрерывный сигнал без потерь для качественных
характеристик функционирования системы может быть заменен дискретным сигналом.
Дискретные представления информации все более широко распространяются при передаче и
обработке информации. Формой представления информации является сообщение.
Процесс преобразования сообщений в комбинации из дискретных сигналов называется
кодированием; совокупность правил, в соответствии с которыми производятся данные
преобразования, – кодом.
Каждая комбинация записывается в виде последовательности, составленной из
некоторых условных символов — элементов кодовой комбинации. В качестве элементов
кодовой комбинации могут использоваться буквы (A, В, С.) и цифры (0, 1,2...).
В технических информационных устройствах элементами могут служить одиночные
импульсы постоянного тока (видеоимпульсы), переменного тока (радиоимпульсы), пауза
между импульсами. Эти элементы различаются по какому-либо одному или нескольким
кодовым (импульсным) признакам. В качестве кодовых признаков применяются такие
параметры, как величина, полярность, время, фаза, частота (рисунок 1).

Рисунок 1 – Характеристики кодов

Каждому сообщению однозначно соответствует определенная кодовая комбинация.


Код позволяет записать все сообщения на некотором общем для данного набора сообщений
языке. С этой точки зрения набор элементов данного кода рассматривают как алфавит, а
кодовые комбинации из этих элементов – как кодовые слова. Каждое сообщение передается
собственным кодовым словом.
Преобразование сообщений в кодовые комбинации (кодовые слова) позволяет
обеспечить:
а) передачу необходимого количества различных сообщений по данному каналу связи
с помощью комбинирования из п элементов, имеющих т кодовых признаков;
б) согласование параметров канала связи и передаваемых сообщений;
в) повышение достоверности передачи сообщений;
г) более экономное использование полосы канала связи;
д) уменьшение стоимости передачи и хранения сообщений;
е) скрытность передаваемых сообщений.
Выбор методов кодирования, обеспечивающих выполнение указанных целей, является
сложной задачей, решение которой зависит от ряда факторов: количества передаваемых
сообщений, числа кодовых признаков, требуемого времени передачи, параметров канала связи,
возможности аппаратурной реализации. Однако в достаточно общем случае качество метода
кодирования оценивается объемом сигнала для достижения требуемой помехоустойчивости
при равной скорости передачи.
Правила составления кодовых комбинаций (коды) и сами кодовые комбинации могут
иметь различные характеристики. К ним относятся: число кодовых (импульсных) признаков,
используемых для комбинирования, количество разрядов кодовой комбинации, способ
комбинирования (закон, согласно которому из единичных элементов образуются кодовые
комбинации), способы формирования элементов кода (импульсные признаки), способ
передачи (разделение) элементарных сигналов. Первые три свойства относятся к структурным
характеристикам самого кода, последние два характеристикам сигналов кода. На рисунке
1приведены основные характеристики кодов.
По числу импульсных признаков (символов) коды подразделяются на единичные,
двоичные, многопозиционные. В единичном коде используется только один символ, и кодовые
комбинации отличаются друг от друга лишь количеством сигналов. Кодовые комбинации
двоичных кодов состоят из двух символов (0 или 1). Многопозиционные коды имеют количество
символов более двух.
По количеству разрядов кодовые комбинации могут иметь либо постоянное число
разрядов, либо не постоянное. Этот признак разделяет коды на равномерные и неравномерные.
В равномерных кодах каждая кодовая комбинация содержит одинаковое число разрядов.
Неравномерные коды это коды, в которых кодовые комбинации могут содержать разное число
разрядов.
По способу комбинирования различают коды, использующие все возможные
комбинации, и коды с частичным использованием комбинаций.
Характер передачи кодовых комбинаций разделяет коды на последовательный,
параллельный и смешанный способы передачи отдельных символов кода. При
последовательной передаче все кодовые комбинации и их единичные элементы передаются
последовательно во времени по общей линии связи. При параллельной передаче кодовых
комбинаций каждому разряду выделяется отдельная линия связи и все символы передаются
одновременно. Смешанный способ передачи объединяет в себе последовательный и
параллельный способы.
Для передачи информации широко используются двоичные и многопозиционные коды.

Основные понятия. Структурная схема процесса цифровой связи приведена на


рисунке 2. Источник выдает сообщение, которое в общем виде представляет собой некоторый
электрический сигнал. Аналоговый сигнал преобразуется в цифровую форму, удобную для
дальнейшей обработки.
Рисунок 2 – Модель передачи информации.

Заметим, что аналого - цифровое преобразование, как правило, ограничивает полосу


сигнала. Далее производится сжатие информации (кодирование источника). Кодирование
источника удаляет несущественную информацию и минимизирует, а иногда и полностью
устраняет избыточность сообщения. Таким образом, кодирование источника снижает затраты
на хранение и передачу информации. Далее сообщение должно быть передано по
зашумленному каналу. Для того, чтобы в дальнейшем сообщение могло быть доведено до
потребителя в неискаженном виде, перед передачей в капал производится помехоустойчивое
кодирование информации (кодирование канала). На приемном конце информация,
поступающая из канала подвергается обратным преобразованиям. Декодер канала исправляет
ошибки в принятом слове, а декодер источника преобразует исправленное слово в форму,
удобную потребителю.
В учебной литературе основное внимание уделяется не методам устранения ошибок в
канале, а оптимальным процедурам помехоустойчивого кодирования и декодирования,
позволяющим обнаруживать и исправлять эти ошибки. При этом, говоря о кодах,
контролирующих ошибки, различают две стратегии их использования: с непосредственным
исправлением ошибок за счет избыточности (Forward Error Correction - FEC) и с
обнаружением ошибок с последующими запросами на повторную передачу ошибочно
принятой информации (Automatic Repeat Request - ARQ).
При проектировании реальных систем связи, обычно, сочетают выбор канала с выбором
конкретных методов помехоустойчивого кодирования. При этом, стремятся оптимизировать
соотношение между затратами и качеством передачи информации. Под качеством, как
правило, понимают среднюю долю ошибочных бит (Bit Error Rate -BER), которая
определяется, как средняя вероятность ошибки одного бита передаваемой информации.
Первым шагом разработки системы связи является выбор конструкций передатчика и
приемника, а также среды, в которой будет осуществляться передача данных. С точки зрения
теории информации, этим самым мы выбираем один из каналов, среди всех реально
существующих. Опыт показывает, что на первом шаге разработчики системы связи очень часто
сталкиваются с, так называемым, «эффектом насыщения», который показан на рисунке 3.
Используя стандартную технику передачи данных, можно получить некоторое
2
гарантированное качество связи, например, для мобильных каналов BER  10 , для
5 12
проводных каналов BER  10 , для волоконнооптических каналов BER  10 . При
дальнейшем улучшении качества связи средствами аналоговой техники, затраты на
реализацию резко возрастают.
Рисунок 3 – Зависимость между затратами и качеством в
системах передачи информации.

Здесь на помощь приходит цифровая техника и помехоустойчивое кодирование. Путем


применения оптимального кодирования, можно обеспечить как угодно малую BER (при
условии R < С). При выборе методов кодирования и декодирования, руководствуются многими
факторами, взаимосвязь которых показана на рисунке 4. В общую сложность входят
аппаратурные и программные затраты на реализацию кодера и декодера, цены
специализированных микросхем и микропроцессоров, стоимость памяти для хранения
информации и т.д. Интенсивность потока данных включает в себя передачу полезной
информации, проверочных разрядов, а также передачу запросов и повторений по этим
запросам отдельных блоков сообщений.

Способность кода обнаруживать и исправлять ошибки

Рисунок 4 – Взаимосвязь между параметрами кодовых конструкций.

Методы помехоустойчивого кодирования довольно многообразны. Мы будем лишь


рассматривать два наиболее важных классов блоковых и сверточных кодов. При этом,
основное внимание уделяется циклическим кодам из-за простоты их реализации. Циклические
коды образуют подмножество линейных блоковых кодов, поэтому, наш курс мы начнем с
описания структуры и общих свойств линейных блоковых кодов.

Вопросы для самоконтроля

1. Какое различие между информацией, сообщением и кодированием?


2. Какое различие между сообщением и сигналом?
3. Предмет изучения теории кодирования?
4. Что такое бит?
5. В каком алфавите больше качественных признаков – первичном или во вторичном?
Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 2. Основы помехоустойчивого кодирования. Основные принципы. Типы


кодов.

2.1 Основы помехоустойчивого кодирования.

Реальные системы передачи данных не совершенны. Применяя информационную


технику, мы должны учитывать возможность возникновения ошибок (вероятность ошибок)
при передаче и хранении информации. Это в первую очередь относится к
1. хранению информации на носителях с высокой плотностью записи (магнитные
носители, CD — ROM, DVD).
2. передаче данных при ограниченной мощности сигнала (спутниковая и мобильная
связь)
3. передаче информации по сильно зашумленным каналам (мобильная связь,
высокоскоростные проводные линии связи)
4. каналам связи с повышенными требованиями к надежности информации
(вычислительные сети, линии передачи со сжатием данных)

Во всех вышеперечисленных случаях используются коды, контролирующие ошибки.


Теория помехоустойчивого кодирования для каждого конкретного канала позволяет выбрать
наиболее эффективный метод обнаружения и исправления ошибок. Существуют два
взаимодополняющих метода борьбы с помехами.
1. Кодирование для исправления ошибок - приемник обнаруживает и исправляет
ошибки;
2. Кодирование для обнаружения ошибок приемник распознает ошибки и, в случае
необходимости, производит запрос на повторную передачу ошибочного блока.

Последний метод предполагает наличие канала обратной связи и находит свое


применение в каналах с достаточно малой вероятностью ошибки в случае, если эту
вероятность ошибки необходимо еще понизить. Такая ситуация часто возникает, в
вычислительных сетях и в Интернете. Типичное значение вероятности ошибки на бит без
6
кодирования в вычислительных сетях составляет 10 . Использование простейших кодов с
9
небольшой избыточностью позволяет достигнуть вероятности 10 и ниже.
9
Замечание. Требование к вероятности ошибки 10 не является чрезмерно
завышенным. В вычислительных сетях, например, может возникнуть обрыв связи в
результате повреждения оптоволокна при производстве земляных работ, небрежного
подключения кабеля к модему и т.д. Такой обрыв должен быть быстро обнаружен
декодером, который в случае резкого возрастания частоты переспросов выдает сигнал
обрыва связи.

В последующих разделах идеи помехоустойчивого кодирования будут подробно


объяснены на примерах линейных блоковых кодов. Здесь же мы рассмотрим простейшую
модель передачи данных с использованием помехоустойчивого кодирования (рисунок 5).

Рисунок 5 – Модель канала связи с кодированием.

Будем исходить из того, что при передаче информации используется блоковый код
Хэмминга, структура которого будет подробно раскрыта в дальнейшем. Сейчас мы
ограничимся его табличным описанием. Пусть кодер источника последовательно выдает
информационные слова фиксированной длины. Кодер канала заменяет каждое
информационное слово u кодовым словом v в соответствии с таблицей 1.

Таблица 1 – Кодовая таблица (7,4)-кода Хэмминга

Передатчик генерирует сигналы, соответствующие кодовому слову v и посылает их в


канал. Приемник производит обратное преобразование, в результате которого на декодер
поступает двоичное принятое слово r.
Декодер сравнивает принятое слово r со всеми кодовыми словами таблицы 1. Если
слово r совпадает с одним из кодовых слов, то соответствующее информационное слово u
выдается потребителю. Если r отличается от всех кодовых слов, то в канале произошла
обнаруживаемая ошибка.
Замечание. Из структуры кода Хэмминга следует одно интересное свойство, которое
может быть проверенно простым перебором:
Для любого произвольного вектора r существует ближайшее кодовое слово, которое
или полностью совпадает с r или отличается от него только в одном двоичном разряде.
Таким образом, если в векторе v при передаче по каналу произошла только одна ошибка, она
всегда может быть исправлена в процессе декодирования.

Из всего вышесказанного уже можно сделать два важных вывода:


1. Если в процессе передачи по зашумленному каналу кодовое слово отобразится в другое
кодовое слово, не совпадающее с переданным, то происходит необнаружимая ошибка.
Назовем ее остаточной ошибкой декодирования.
2. «Хорошие коды» обладают некоторой математической структурой, которая позволяет
эффективно распознать, а в некоторых случаях и исправлять ошибки, возникающие при
передаче информации по каналу связи.

2.2 Основные принципы. Типы кодов.

Коды можно разделить на две самостоятельные группы. К первой относятся коды,


использующие все возможные комбинации – неизбыточные коды. Ко второй группе относятся
коды, использующие лишь определенную часть всех возможных комбинаций. Такие коды
называются избыточными. Оставшаяся часть комбинаций используется для обнаружения или
исправления ошибок, возникающих при передаче сообщений. В этих кодах количество
разрядов кодовых комбинаций можно условно разделить на определенное число разрядов,
предназначенных для информации (информационные разряды), и число разрядов,
предназначенных для коррекции ошибок (проверочные разряды).
Обе группы кодов, в свою очередь, подразделяются на равномерные и неравномерные.
Равномерные коды – это коды, все кодовые комбинации которых содержат постоянное
количество разрядов. Неравномерные коды содержат кодовые комбинации с различным
числом разрядов. Ввиду того что неравномерные избыточные коды не нашли применения на
практике из-за сложности их технической реализации, в дальнейшем их рассматривать не
будем.
Все избыточные коды разделяются на два класса: непрерывные и блочные.
В непрерывных кодах процесс кодирования и декодирования носит непрерывный
характер. В блочных кодах каждому сообщению соответствует кодовая комбинация (блок) из
n символов. Блоки кодируются и декодируются отдельно друг от друга.
Избыточные коды, в которых определенные разряды кодовых комбинаций отводятся для
информационных и проверочных символов, называются разделимыми. Разделимые блочные
коды обозначаются обычно (n, k)-кодами, где n – количество разрядов кодовой комбинации, k
– число разрядов, отводимых для информационных символов. Неразделимые коды не имеют
четкого разделения кодовой комбинации на информационные и проверочные символы. К ним
относятся коды с постоянным весом и коды Плоткина.
Разделимые блочные коды, в свою очередь, делятся на несистематические и
систематические. В несистематических кодах проверочные символы представляют собой
суммы подблоков с l разрядами, на которые разделена последовательность информационных
символов. К этим кодам относятся коды Бергера.
Самый большой класс разделимых блочных кодов составляют систематические коды, у
которых проверочные символы определяются в результате проведения линейных операций над
определенными информационными символами. Для двоичных кодов эти операции сводятся к
выбору каждого проверочного символа таким образом, чтобы его сумма по модулю два с
определенными информационными символами была равной нулю.
К систематическим кодам относятся коды с проверкой на четность, коды с повторением,
корреляционный, инверсный, коды Хэмминга, Голея, Рида–Маллера, Макдональда,
Варшамова, с малой плотностью проверок на четность, итеративный код.
Разновидностью систематических кодов являются циклические коды. Кроме всех
свойств систематического кода, циклические коды имеют следующее свойство: если некоторая
кодовая комбинация принадлежит коду, то получающаяся путем циклической перестановки
символов новая комбинация также принадлежит данному коду. К наиболее известным
циклическим кодам относятся простейшие коды, коды Хэмминга, Боуза – Чоудхури –
Хоквингема, мажоритарные, коды Файра, Абрамсона, Миласа–Абрамсона, Рида – Соломона,
компаундные коды. Классификация рассмотренных кодов приведена на рисунке 6.

Рисунок 6 – Классификация двоичных кодов

Оценка кодов обычно производится по их основным характеристикам, выражающим


различные количественные и качественные показатели. Данные характеристики используются
при выборе кодов, предназначенных для передачи, хранения и обработки информации: длина
кода; основание кода; мощность кода; полное число кодовых комбинаций; число
информационных символов; число проверочных символов; избыточность кода; скорость
передачи; вес кодовой комбинации; кодовое расстояние; весовая характеристика кода;
вероятность необнаруженной ошибки; оптимальность кода; коэффициент ложных переходов.

Длина кода n – число разрядов (символов), составляющих кодовую комбинацию.


Основание кода m – количество отличающихся друг от друга значений импульсных
признаков, используемых в кодовых комбинациях. Для двоичных кодов m = 2. В качестве
значений импульсных признаков используются цифры 0 и 1.
Мощность кода N p – число кодовых комбинаций, используемых для передачи
сообщений.
n
Полное число кодовых комбинаций N – число всех возможных комбинации, равное m (для
двоичных кодов N  2 ).
n

Число информационных символов k – количество символов (разрядов) кодовой


комбинации, предназначенных для передачи собственно сообщения. Очевидно,
N p  2k .
Число проверочных символов r – количество символов (разрядов) кодовой комбинации,
необходимых для коррекции ошибок. Это число характеризует абсолютную избыточность кода.
В теории кодирования под избыточностью_кода R понимают относительную
избыточность, равную отношению числа проверочных символов к длине кода:
r
R .
n
В общем случае эта формула может быть приведена к виду
log m N p
R  1 .
log m N
Скорость передачи кодовых комбинаций – это отношение числа информационных символов
к длине кода:
r
R  .
n
Поскольку n = k + r, то R  1  R

Вес кодовых комбинаций (кода)  – количество единиц в кодовой комбинации.


Например, кодовая комбинация 101100110 характеризуется длиной кода n = 9 и весом   5 .
Кодовое расстояние d между двумя кодовыми комбинациями – это число одноименных
разрядов с различными символами. Практически кодовое расстояние выражается как вес суммы
по модулю два кодовых комбинаций. Например, для определения кодового расстояния между
комбинациями 10010111 и 00100110 необходимо просуммировать их по модулю два:
10010111

00100110
10110001
Полученная в результате суммирования новая кодовая комбинация характеризуется весом
  4 . Следовательно, кодовое расстояние между исходными комбинациями d = 4.
Весовая характеристика кода W ( ) – число кодовых комбинаций веса  .
Вероятность необнаруженной ошибки Рн.о. – это вероятность такого события, при
котором принятая кодовая комбинация отличается от переданной, а свойства данного кода не
позволяют определить факта наличия ошибки.
Оптимальность кода – это свойство такого кода, который обеспечивает наименьшую
вероятность необнаружения ошибки среди всех кодов той же длины n и избыточности r
Коэффициент ложных переходов
1 N N pi (d )
Kл   ,
Np i 1 C nd

где N pi (d ) – число рабочих кодовых комбинаций, отстоящих от i-кодовой комбинации на


расстояние d, C nd – число сочетаний из n по d.
Данный коэффициент показывает, какая доля ошибок кратности d не обнаруживается.

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 3. Линейные блоковые коды. Основы матричного построения кодов

3.1 Основы матричного построения кодов. Порождающая матрица

Важное семейство кодов образуют линейные двоичные блоковые коды. Эти коды
замечательны тем, что, представляя информационные и кодовые слова в форме двоичных
векторов, мы можем описать процессы кодирования и декодирования с помощью аппарата
линейной алгебры, при этом, компонентами вводимых векторов и матриц являются символы 0
и 1. Операции над двоичными компонентами производятся по привычным правилам двоичной
арифметики, так называемой, арифметики по модулю 2.
Таблица 2 – Арифметика по модулю 2.

Сложение Умножение
 0 1  0 1
0 0 1 0 0 0
1 1 0 1 0 1

Замечание. С математической точки зрения, определив операции с двоичными


символами согласно таблице 2, мы построили поле Галуа характеристики 2 первого порядка
GF(2). Общая теория полей Галуа позволяет строить поля характеристики p порядка т
- GF(pm), где p - простое, т - любое конечное целое. Переход к расширенным, полям GF(pm)
дает возможность конструировать коды, обладающие рядом новых свойств, полезных по
сравнению с двоичными кодами.
В частности, коды Рида-Соломона с символами из GF(2m), т > 2 с успехом
применяются для защиты информации в аудио, CD проигрывателях.
Кодер двоичного блокового (n, k)-кода отображает множество 2k возможных двоичных
информационных слов в множество 2k n-мерных кодовых слов. В теории кодирования между
этими множествами всегда существует взаимно однозначное соответствие. (см. рисунок 7).

Рисунок 7 – Кодер блокового (n, k)-кода.


Вместо k бит информационного вектора в канал передается n бит кодового вектора. В
этом случае говорят об избыточном кодировании со скоростью

k
R . (3.1)
m
Чем ниже скорость, тем больше избыточность кода и тем большими возможностями
для защиты от ошибок он обладает (здесь, однако, надо учитывать, что с увеличением
избыточности, затраты на передачу информацию также возрастают).
Кодирование линейного блокового (n, k)-кода задается порождающей матрицей G k n .
В рассмотренном выше (7, 4)-коде Хэмминга порождающая матрица имеет вид

1 1 0 1 0 0 0
 
0 1 1 0 1 0 0
G47 
1 1 0 0 1 0
. (3.2)
1
 
1 0 1 0 0 0 1

Таким образом, кодовое слово v и информационное слово u связаны соотношением

v  u G. (3.3)

Например, информационный вектор u = (1010) отображается в кодовый вектор


1 1 0 1 0 0 0
 
0 1 1 0 1 0 0
v  (1010)    (0011010) .
1 1 0 0 1 0
(3.4)
1
 
1 0 1 0 0 0 1 

Первое, что сразу же бросается в глаза из таблицы 1, это совпадение последних четырех
разрядов кодовых слов с информационными векторами. Такой код относится к семейству
систематических кодов.

Определение. Коды, в которых информационное слово может быть непосредственно


выделено из соответствующего ему кодового вектора, называются систематическими.

Порождающую матрицу любого систематического кода всегда можно путем


перестановки столбцов привести к виду

Gk n  ( Pk ( n k ) I k ) , (3.5)

где нижние индексы обозначают размерность матрицы, a Ik - единичная матрица размерности


k x k.
Замечание. В литературе часто единичная матрица ставится на первое место.
Заметим, что перестановка столбцов матрицы не оказывает никакого влияния на
корректирующую способность кода.

Таким образом, в кодовом векторе систематического кода всегда можно выделить


информационные и проверочные символы

v( v0 , v1 ,, vn k 1 v n k , vn k 1 ,, v n1 ) . (3.6)


    
n  k проверочных символов k информационных символов

Роль проверочных символов и их использование будут подробно разъяснены в


следующих лекциях.

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.
Лекция 4. Линейные блоковые коды. Синдром и обнаружение ошибок. Синдромное
декодирование

Задача декодера заключается в том, чтобы используя структуру кода, по принятому


слову r, восстановить переданный информационный вектор.
Для рассмотренного выше (7, 4)-кода Хэмминга можно предложить следующий
алгоритм обнаружения ошибок. Так как рассматриваемый код является систематическим,
выразим каждый из трех проверочных символов через символы информационного вектора
v0  v3  v5  v6 , v1  v3  v4  v5 , v2  v4  v5  v6 .. Если в канале произошла ошибка,
то в принятом векторе r хотя бы одни из равенств не будет выполняться. Запишем полученные
проверочные соотношения в виде системы уравнений для компонент вектора r:

r0  r3  r5  r6  s0
r1  r3  r4  r5   s1 . (4.1)
r2  r4  r5  r6  s2

Таким образом, из первых трех столбцов порождающей матрицы G (см. формулу 3.2),
мы получили систему трех проверочных уравнений, в которой операция  производится по
правилам арифметики по модулю 2 (см. таблицу 2). Если в полученной системе уравнений хотя
бы одна из компонент {s 0 , s1 , s 2 } не равна нулю, то в канале произошла ошибка. Запишем
систему проверочных уравнений в общем виде. Для любого систематического кода с
порождающей матрицей (3.5), проверочная матрица определяется как
H ( n  k )n  ( I n  k PkT( n  k ) ) , (4.2)

где H k ( n  k ) - транспонированная матрица, т. е. матрица размерности k x (n – k), получаемая


из Pk ( n  k ) путем замены строк матрицы на ее столбцы. Тогда систему проверочных уравнений
можно записать в виде
s  r  HT . (4.3)

Вектор s принято называть синдромом. Таким образом, ошибка будет обнаружена, если
хотя бы одна из компонент s не равна нулю. Равенство (4.3) можно переписать в виде
 I n k 
s  r   .
 (4.4)
P
 k ( n  k ) 

Замечание. В медицине термин синдром используется для обозначения сочетания


признаков, характеризующих определенное болезненное состояние организма.
Пример: Синдромное декодирование (7, 4)-кода Хэмминга.

Используя (3.5) и (4.2), построим проверочную матрицу из порождающей матрицы


кода Хэмминга (3.2). Она имеет вид
 1 0 0 1 0 1 1
 
H 37   0 1 0 1 1 1 0 . (4.5)
 0 0 1 0 1 1 1
 

При передаче информационного слова u = (1010) по каналу без шума r = v = (0011010).


Можем убедиться, что в этом случае синдром равен

1 0 0
 
0 1 0
0 0 1
 
s  (0011010)   1 1 0   (000) . (4.6)
0 1 1
 
1 1 1
 
1 0 1

Если, например, в кодовом слове произошла одиночная ошибка на четвертой позиции r =


(0010010), то синдромом является четвертая строка транспонированной проверочной матрицы

1 0 0
 
0 1 0
0 0 1
 
s  (0010010)   1 1 0   (110) . (4.7)
0 1 1
 
1 1 1
 
1 0 1

Перебрав все возможные позиции одиночной ошибки, получим полную таблицу


синдромов однократных ошибок - таблицу соответствий номера ошибочного разряда
получающемуся при этом синдрому.

Таблица 3 – Таблица синдромов однократной ошибки (7,4)-кода Хэмминга.

Кодовое слово r r0 r1 r2 r3 r4 r5 r6
Синдром s 100 010 001 110 011 111 101

Можно заметить, что ошибке в i-ой позиции кодового слова соответствует синдром,
образованный i -ым столбцом матрицы H. Так как все столбцы матрицы различны, мы можем
с помощью таблицы 3 исправлять одиночную ошибку, вносимую каналом. Обобщим
приведенные выше рассуждения, используя аппарат линейной алгебры. Исходным
материалом для построения кодовых конструкций служит n -мерное двоичное векторное
пространство, в котором заданы операции арифметики по модулю 2.
В него вложено k-мерное линейное пространство, содержащее 2k кодовых слов (рисунок
8).

Рисунок 8 – Структура кодовых векторных пространств

Код C образуется с помощью 2k комбинаций k линейно независимых базисных


векторов {g1 ,, g k }. Иногда говорят, что код C «натянут» на векторы {g1 ,, g k } . Эти
векторы образуют строки порождающей матрицы кода C

 g1   g1,1 g1, 2  g1,n 


   
 g 2   g 2,1 g 2, 2  g 2,n  . (4.8)
Gk n     ( Pk ( n k ) I k )
    
   
  g k ,n 
 g k   g k ,1 g k ,2

Заметим, что порождающая матрица может быть разложена на матрицу P и единичную


матрицу I только в случае систематических кодов.
Для кода C существует дуальный код Cd такой, что скалярное произведение любой
пары векторов, один из которых принадлежит пространству C, а другой пространству Cd,
всегда равно нулю. Это значит, что векторы кода Cd ортогональны векторам кода C. С
другой стороны, если некоторый вектор ортогонален всем векторам кода C, то он
принадлежит коду Cd и наоборот.
Дуальное векторное подпространство «натянуто» на ( n – k) линейно независимые
базисные векторы {h1 ,, hn k } . Эти векторы образуют строки проверочной матрицы

 h1   h1,1 h1, 2  h1,n 


   
 2   h2,1
h h2, 2  h2,n 
H ( n k )n    ( I n k PkT( n k ) ) ,
     (4.9)
  
   
  g n k ,n 
 hn k   hn k ,1 g n k ,2

причем, правая часть равенства справедлива только для систематических кодов.


При синдромном кодировании приемник использует свойство ортогональности кодов
G  HT  0. (4.10)
Таким образом, для каждого кодового слова v  C справедливо

s  v  HT  0. (4.11)

Каждому принятому слову, не принадлежащему коду, соответствует отличный от нуля


синдром

s  r  H T  0 для r  C . (4.12)

Проведем анализ синдромного декодирования на уровне двоичных компонент


(рисунок 9).

Рисунок 9 – Модель передачи информации на двоичном уровне.

В канале производится покомпонентное сложение по модулю 2 кодового вектора v с


двоичным вектором ошибки е. Таким образом, если i-ая компонента вектора i равна «1», то
в i -ой компоненте кодового вектора v возникает ошибка.
В рассмотренном выше примере, единичной ошибке в четвертом разряде
соответствует вектор е = (0001000).

Замечание. Операция сложения по модулю 2 двоичных символов эквивалентна


операции «исключающего или» XOR.

В силу свойств линейности и ортогональности векторов имеем

s  r  H T  (v  e)  H T  e  H T . (4.13)

Последнее равенство является основой синдромного декодирования. В процессе


декодирования могут возникнуть следующие ситуации:
Случай 1: s  0  eC
Случай 1.1: e  0 – безошибочная передача информации;
Случай 1.2: e  0 – передача информации с неиснравляемой ошибкой;
Случай 2: s  0  e  C ошибка будет обнаружена при декодировании.
Ясно, что в первом случае, декодер всегда выдаст принятое слово г потребителю, при
этом существует некоторая вероятность неисправления ошибки. Во втором случае возможны
два режима работы декодера.
1. Распознавание ошибок. Декодер всегда определяет наличие ошибки в принятом векторе
r. В зависимости от требований потребителя, принятое информационное слово или
«стирается», или производится запрос на его повторную передачу.
2. Коррекция ошибок. Корректирующая способность декодера может быть пояснена на
примере (7,4)-кода Хэмминга, рассмотренного выше.

Таблица 3 показывает, что в случае одиночной ошибки, ее позиция однозначно


определяется по синдрому, и, таким образом, однократная ошибка всегда исправляется.
Ошибки же большей кратности декодер всегда исправляет как одиночные, и потребителю
выдается ошибочное информационное слово. Пусть, например, передается кодовое слово v =
(0011010), соответствующее информационному вектору u = (1010), и вектор ошибки равен е
= (1100000), т.е. в канале произошла двукратная ошибка. Тогда для принятого слова r =
(1111010) синдром равен s = (110). Из таблицы 3 следует, что этот синдром соответствует
четвертой ошибочной компоненте вектора r. Таким образом, потребителю будет выдан
вектор u = (0010).
Декодер может выдавать потребителю ошибочное информационное слово тогда и
только тогда, когда в канале произошли необнаружимые ошибки, или кратность канальной
ошибки превышает корректирующую способность кода. Из рассмотренного выше примера
следует, что эффективность конкретного кода зависит от области его применения и, в
особенности, от канала связи. Если мы передаем информацию по каналу с аддитивным белым
гауссовским шумом (АБГШ), то ошибки в кодовом слове независимы. Если при этом
отношение сигнал/шум достаточно велико, то вероятность одиночной ошибки во много раз
превышает вероятность ошибок высших кратностей, поэтому, использование в таком канале
кода Хэмминга с исправлением однократной ошибки может оказаться весьма эффективным.
С другой стороны, в каналах, где преобладают многократные ошибки (например, в каналах
с замираниями), исправление одиночных ошибок лишено смысла. При практическом выборе
конкретного помехоустойчивого кода необходимо также учитывать скорость его
декодирования и сложность технической реализации

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 5. Линейные блоковые коды. Вес и расстояние Хемминга.


Корректирующая способность обнаруживать и исправлять ошибки.
В предыдущих лекциях на примере (7,4)-кода Хэмминга были показаны основные
свойства линейных блоковых кодов и приведен метод синдромного декодирования. Теперь
возникает следующий вопрос: Чем отличаются «хорошие» коды от «плохих» и как их искать?
Раскрывая структуру линейных кодов более подробно, мы постараемся коротко
сформулировать ответ на этот вопрос.

5.1 Расстояние Хэмминга и корректирующая способность

Для лучшего понимания процесса декодирования будем использовать геометрическое


представление векторного пространства. На рисунке 10 показан сектор n-мерного
двоичного векторного пространства. В нем особое место занимает n -мерный кодовый вектор
0, который всегда принадлежит любому линейному коду (это следует из свойств линейных
кодов). Здесь же показаны n -мерные кодовые векторы v1 , v 2 , v3 , обозначенные символами
«о». Возможные принимаемые векторы r обозначены символами «х». Области декодирования
кодовых слов v1 , v 2 , v3 показаны как окружности с центрами в точках, соответствующих
изображениям этих кодовых слов на плоскости. Это значит, что если принятый вектор r
находится, например, внутри затемненной области (рисунок 10 средние окружности), то
декодер выдаст потребителю кодовое слово v1.
Пусть в канал посылается слово v1. В результате искажения в канале могут иметь место
три варианта приема и декодирования (рисунок 10).
1. В первом случае, вектор ошибки e1 отображает переданный вектор в точку,
принадлежащую области декодирования v1. Декодер выдает потребителю переданное
слово vi, исправляя при этом возникающие в канале ошибки.
2. Во втором случае, вектор e2 переводит переданный вектор v1 в область декодирования
v2 Таким образом, потребителю выдается ошибочное слово v2 вместо v1. Тем не менее,
ошибка распознается, так как принятый вектор r2 не является кодовым словом.
3. В третьем случае, вектор ошибки e3 отображает переданное слово в ошибочное
кодовое слово v3. Имеет место необнаруженная ошибка.
Рисунок 10 – Векторное пространство с кодовыми словами «о» и
принятыми словами « х ».

Из рисунка ясно, что корректирующая способность кода зависит от расстояния между


кодовыми словами. Так как мы имеем дело с двоичными векторами и расстояние между ними
определяется числом несовпадающих компонент, можно записать

n 1
d (vi , v j )   vi ,l  v j ,l . (5.1)
l 0

Расстояние, измеренное таким образом, называется расстоянием, Хэмминга. Его также


можно определить как число отличных от нуля компонент (вес Хэмминга) скалярной суммы
векторов vi и vj
d (vi , v j )   H (vi  v j ) . (5.2)

Пример: Синдромное декодирование (7,4)-кода Хэмминга.

В качестве примера найдем расстояние Хэмминга между кодовыми векторами v1 =


(1101000) и v2 = (0110100) из таблицы 1. Согласно (5.1) имеем

d (v1 , v2 )  (1  0)  (1  1)  (0  1)  (1  1)  (0  1)  (0  0)  (0  0)  3 . (5.3)

и, с другой стороны, определяя расстояние Хэмминга как (5.2), получаем

d (v1 , v2 )  H (v1  v2 )  [(1010100)]  3 . (5.4)


Важнейшим параметром, определяющим корректирующую способность кода, является
минимальное кодовое расстояние dmin. Для его определения мы должны вычислить
расстояние Хэмминга между всеми парами слов и найти наименьшее. В случае линейных
кодов вычисления можно существенно сократить. Используем для этой цели основное
свойство линейных кодов - свойство «замкнутости» векторного кодового пространства. Это
свойство следует непосредственно из определения линейных кодов и формулируется
следующим образом: любая линейная комбинация кодовых слов является кодовым словом.
Рассмотрим множество двоичных кодовых слов {v0 , v1 , v2 ,, v2k 1} , образующих код С.
Сложим каждое слово этого множества по модулю два с некоторым зафиксированным
произвольным кодовым словом vi. Тогда множество кодовых слов отобразится само в себя, а
вектор vi; перейдет в нулевое кодовое слово. Так как при таком отображении попарные
расстояния кодовых слов не изменятся, а вектор vi выбран произвольно, то dmin определяется
как

d min  min  H (v) , (5.5)


vC \{0}

т.е. минимальное кодовое расстояние dmin линейного кода равно минимальному весу
ненулевого кодового слова. Из линейности кода также следует симметричность распределения
кодовых расстояний относительно любого кодового.
Из таблицы 1 следует, что dmin (7,4)-кода Хэмминга равно 3.
Обобщая все приведенные выше рассуждения и примеры, мы можем определить
корректирующую способность линейного кода следующим образом.
Линейный двоичный (n, k)-код с минимальным расстоянием Хэмминга d min  2t  1
может обнаружить dmin – 1 ошибок и исправить t ошибок.
Если код исправляет все ошибки кратности и < t, то области декодирования
представляют собой сферы радиуса t в n-мерном пространстве.

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 6. Линейные блоковые коды. Совершенные коды и граница Хэмминга.


Вероятность ошибки декодирования.

6.1 Совершенные коды и граница Хэмминга


На рисунке 10 изображен случай, когда все возможные принимаемые векторы r
принадлежат областям декодирования кодовых слов.

Определение. Коды, в которых непересекающиеся сферические области


декодирования охватывают все векторное пространство размерности n, называются
совершенными или плотноупакованными.

При использовании совершенных кодов всегда возможна коррекция ошибок (не


обязательно правильная). Помимо кодов Хэмминга, в настоящее время известно мало
совершенных кодов.
Найдем соотношение между параметрами совершенных двоичных (n, k)-кодов,
способных исправлять t ошибок. Будем исходит из того, что область декодирования
совершенного (n, k)-кода с d min  2t  1 образуют 2k непересекающихся сфер радиуса t в n -
мерном векторном пространстве. Каждая сфера содержит все n -мерные векторы, находящиеся
на расстоянии l от соответствующего кодового слова, причем, 0 < l < t. Таким образом, каждой
сфере принадлежит ровно

t
1  n  C n2    C nt   C nl . (6.1)
l 0
n - мерных векторов.
Так как общий объем непересекающихся сфер не может превышать объем n -мерного
векторного пространства, для двоичных кодов имеем

t
2 2
n k
 Cnl . (6.2)
l 0
или
t
2 n k   C nl . (6.3)
l 0

Равенство имеет место только для совершенных двоичных кодов. Выражение (6.3)
называется границей Хэмминга. Граница Хэмминга является нижней оценкой необходимого
числа проверочных символов двоичного кода длины n, способного исправлять t ошибок.
Из (6.3) следует, что рассмотренный нами (7,4)-код Хэмминга является совершенным,
так как
1
2 7 4
 8   C7l  C70  C71  1  7  8
l 0

6.2 Вероятность ошибки декодирования

Исходя из предыдущих рассуждений, мы можем определить вероятность


необнаружимой ошибки. На самом деле, ошибка не обнаруживается, если посланное кодовое
слово в канале переходит в другое кодовое слово. Из свойства замкнутого векторного
пространства относительно операции сложения кода С следует, что в этом случае сама ошибка
должна являться кодовым словом. Таким образом, вероятность необнаружимой ошибки
определяется суммой вероятностей независимых событий е = vi, где vi  C и 1 < i < 2. Так
как мы рассматриваем ДСК без памяти с вероятностью ошибки Рe вероятность события,
например, е = (0011010), где (0011010) - кодовое слово из таблицы 1, равна Pe3 (1  Pe ) 4 .
Обозначим через Аi число кодовых слов (n, k)-кода С веса i. Тогда вероятность
необнаружимой ошибки для кода С равна

n
Pr   Ai Pei (1  Pe ) ni . (6.4)
i  d min

Для (7,4)-кода Хэмминга значения Аi (распределения весов) можно получить из


таблицы 1. Имеем A0  1, A1  A2  0, A3  A4  1, A5  0, A6  0, A7  1. Если
вероятность одного двоичного символа Рe известна, то можно найти вероятность
необнаружимой ошибки, используя (6.4).
Не зная распределения весов, вероятность необнаружимой ошибки можно оценить
сверху как

n
Pr  Ped min  Ai 
Pei  d (1  Pe ) ni  (2 k  1) Ped

min min
. (6.5)
i  d min
1

Пример: Передача данных с использованием (7,4)-кода Хэмминга.

Данные кодируются (7,4)-кодом Хэмминга и передаются по каналу с АБГШ.


Отношение сигнал/шум в канале равно 6 дБ, что эквивалентно вероятности ошибки двоичного
символа, равной 0,023. Скорость передачи - 16 кбит/сек. Если при декодировании
обнаруживается ошибка, то по сигналу переспроса производится повторная передача кодового
слова. Определить:
1. Какова вероятность, что кодовое слово будет приниматься без ошибок?
2. Какова вероятность необнаружимой ошибки?
3. Определите среднюю «эффективную» скорость в битах (т.е. среднее число
передаваемых информационных бит в секунду).
4. Сравнить «эффективную» скорость с максимальной теоретически достижимой.

Решение.
1. Кодовое слово будет передаваться без ошибок, если все 7 двоичных символов будут
переданы верно. Для ДСК без памяти с вероятностью ошибки на символ Ре, вероятность
безошибочной передачи кодового слова равна

Pc  (1  Pe ) 7 . (6.6)

Для канала с АБГШ вероятность Ре определяется как функция от SNR (отношение


сигнал/шум) и равна
1 S 1 10 6 / 10
Pe  erfc  erfc  0.023 . (6.7)
2 2N 2 2

Подставляя Ре в (6.6), получаем

Pc  (1  0.023) 7  0.85 . (6.8)

2. Вероятность необнаружимой ошибки получим из (6.4)

Pr  7  0.0233  0.997 4  7  0.0234  0.9973  0.0237  7.9  105 . (6.9)

Верхняя оценка Рr (2.30) дает для сравнения

(2 k  1) Ped min
 15  0.0233  18  105 . (6.10)

3. Ввиду пренебрежимо малой вероятности необнаруженной ошибки, будем считать, что


в среднем 85% кодовых слов принимается верно без переспроса. Учитывая также, что доля
информационных бит в кодовом слове равна k/n получаем, что при скорости передачи Rb
эффективная скорость равна

k 4  0,85  16кбит / сек


Rb, eff  Pc Pb   7.77 кбит / сек . (6.11)
n 7
Замечание. Выбранное в примере SNR, равное 6 дБ, приводит к недопустимо высокой
вероятности ошибки на бит. Недопустимо высокими являются также потери эффективной
скорости передачи.

4. Пропускная способность ДСК без памяти была рассмотрена в теории информации.


При вероятности ошибки двоичного символа  , равной   Pe , пропускная способность
канала на один передаваемый двоичный символ составляет

C ДСК  1 бит  H b ( )  0.842 бит . (6.12)

При заданной скорости 16 кбит/сек максимально достижимая эффективная скорость


передачи информации с пренебрежимо малой вероятностью ошибки равна

R max< 13.4 кбит/сек, (6.13)

что почти в два раза превышает величину из (2.36).

В рассмотренном примере мы использовали зависимость вероятности ошибочного бита


от соотношения сигнал/шум (SNR) при передаче данных по каналу с АБГШ. Здесь мы
сталкиваемся с «энергетическим» аспектом цифровой передачи информации. Рассмотрим этот
аспект более подробно.
Будем исходить из постоянства некоторых параметров передачи. Пусть этими
параметрами являются эффективная скорость передачи данных и средняя мощность
передатчика. Пусть, далее, передача информации осуществляется по каналу с аддитивным
белым гауссовским шумом (АБГШ) и прием информации производится с применением
согласованных фильтров. В таком канале SNR оказывается пропорциональным длительности
двоичного символа, поэтому, при постоянной мощности передатчика переход от четырех
двоичных символов (передача без кодирования) к семи символам ((7,4)-код Хэмминга) внутри
фиксированного интервала времени эквивалентен уменьшению SNR в 7/4 раза, что равно,
7
приблизительно, 2.4 дБ (10 log 2  2.4) .
4
И, наоборот, SNR на один двоичный символ при передаче без кодирования на 2.4 дБ
выше, чем при использовании (7,4)-кода Хэмминга и составляет, в нашем случае, 8.4 дБ.
(Здесь мы даже не учитываем вероятность переспроса при передаче с кодированием).
Согласно (6.7), SNR, равному 8.4 дБ, соответствует вероятность ошибки на бит, равная
Pb  0.0043 . Отсюда, вероятность безошибочной передачи блока, содержащего 4
информационных символа, составляет

Pc  (1  0.0043) 4  0.98 . (6.14)

Отметим, что при постоянной мощности передатчика, применяя кодирование, мы


увеличиваем вероятность ошибки двоичного символа (в нашем случае от 0.0043 до 0.023).
Однако, корректирующая способность кода позволяет снизить результирующую вероятность
необнаружимой ошибки (в нашем случае с 1 – 0.98 = 0,02 до 7.9-10-5 на блок из четырех
символов).
В настоящее время существует несколько критериев для оценки эффективности
кодирования. В спутниковой связи, например, чаще всего пользуются энергетическим
критерием. Сущность его в следующем: так как спутниковые линии связи близки к каналам с
АБГШ, вначале находится SNR на бит передаваемой информации, обеспечивающее заданную
вероятность битовой ошибки Pb при передаче без кодирования.
Аналогичное SNR на кодовый символ подсчитывается для передачи с кодированием
при условии BER = Pb , где Pb задано. После этого, находится SNR на бит полезной
информации с учетом скорости кода. Разность энергетических затрат на бит передаваемой
информации при передаче без кодирования и с кодированием называется энергетическим
выигрышем кода (ЭВК).
Замечание. Использование кодов большой длины с довольно сложной алгебраической
структурой в современных спутниковых линиях связи позволяет достичь ЭВК — 6 - 8 дБ при
Pb  10 5 . Заметим, что при снижении Pb ЭВК возрастает.

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 7. Линейные блоковые коды. Коды Хемминга. Расширенные коды.

7.1 Коды Хемминга.

Коды Хэмминга образуют важное семейство простейших линейных блоковых кодов.


Для каждого натурального m  3 существует двоичный код Хэмминга со следующими
параметрами:
Коды Хэмминга.
длина кодовых слов n  2  1
m

число информационных разрядов k  2  1  m
m

 число проверочных разрядов т = n – k
 корректирующая способность t = l, dmin = 3
 совершенные коды

Конструкция кодов Хэмминга определяется следующими свойствами проверочной


матрицы вида.
 h1   h1,1 h1, 2  h1,n 
   
 2   h2,1
h h2, 2  h2,n 
H ( n k )n    ( I n k PkT( n k ) ) .
     (7.1)
  
   
  g n k ,n 
 n k   hn k ,1
h g n k ,2

 Так как минимальное расстояние кода Хэмминга dmin = 3, все столбцы проверочной
матрицы должны быть попарно различными (проверочная матрица не должна
содержать одинаковых столбцов).
 Из dmin = 3 следует также, что каждая строка порождающей матрицы должна
содержать как минимум три единицы, так как строки порождающей матрицы в свою
очередь являются кодовыми словами. Если порождающая матрица представлена в
виде
 g1   g1,1 g1, 2  g1,n 
   
 g 2   g 2,1 g 2, 2  g 2,n 
Gk n    ( Pk ( n k ) I k ) ,
  
(7.2)
  
   
  g k ,n 
 g k   g k ,1 g k ,2
то это значит, что строки матрицы Р должны содержать как минимум две единицы.
T
(Следовательно, это относится и к столбцам транспонированной матрицы P ).
Рассмотрим проверочную матрицу. Она имеет вид H ( n  k )n  ( I n  k Pk ( n  k ) ) .
T

Матрица P содержит k столбцов и т = n – k строк. Используя двоичные символы «0»
T

и «1», можно образовать 2т различных столбцов. Но, так как ранее было сказано, что
каждый столбец должен содержать как минимум две единицы, то следует отбросить
один нулевой столбец и т столбцов, содержащих по одной единице. Таким образом,
остается 2  m  1 возможностей. Так как 2  m  1  k и матрица P содержит
m m T

ровно k столбцов, то все эти возможности использованы. Отсюда следует, что столбцы
T
транспонированной матрицы P представляют собой все возможные двоичные слова
длины т = n – k, содержащие не менее двух единиц.

Замечание. Отметим, что n столбцов матрицы H mn  ( I n  k Pk ( n  k ) ) содержат все


T

возможные двоичные слова длины m, за исключением нулевого, т.е. n  2  1 и все столбцы


m

различны. Такое представление позволяет сразу же раскрыть метод коррекции одиночных


ошибок. В самом деле, уравнение синдромного декодирования
s  r  H T  (v  e)  H T  e  H T имеет вид s  e  H T . Если е - вектор одиночной
ошибки, то он содержит только одну единицу в i-ом ошибочном разряде кодового слова. В
этом случае синдром (вектор s) представляет собой i-ый столбец матрицы Н. Так как все
столбцы матрицы Н различны, то n возможным позициям одиночной ошибки в кодовом слове
соответствуют в точности n различных синдромов, поэтому, по значению синдрома s можно
однозначно определить номер разряда кодового слова, в котором произошла одиночная
ошибка, т.е. ее исправить.

Пример: (15,11)-код Хэмминга.

На примере (15,11)-кода Хэмминга можно наглядно пояснить все перечисленные выше


особенности конструкции:

По проверочной матрице с помощью (7.2) и (7.1) строится порождающая матрица


 
 
1 1 0 0 1 0 0 0 0 0 0 0 0 0 0
0 1 1 0 0 1 0 0 0 0 0 0 0 0 0
 
0 0 1 1 0 0 1 0 0 0 0 0 0 0 0
1 0 1 1 0 0 0 1 0 0 0 0 0 0 0
 
0 1 0 1 0 0 0 0 1 0 0 0 0 0 0
G1115  1 0 0 1 0 0 0 0 0 1 0 0 0 0 0
 
1 1 1 0 0 0 0 0 0 0 1 0 0 0 0
0 1 1 1 0 0 0 0 0 0 0 1 0 0 0
 
1 0 1 1 0 0 0 0 0 0 0 0 1 0 0
 
1 1 0 1 0 0 0 0 0 0 0 0 0 1 0
1 1 1 1 0 0 0 0 0 0 0 0 0 0 1
    
 P 11 4 I  11

Пример: Передача данных с использованием (15,11)-кода Хэмминга.

В данном примере мы сравниваем результаты использования для передачи данных


(15,11)-кода Хэмминга с ранее полученными результатами для (7,4)-кода Хэмминга.
Скорость (15,11)-кода существенно выше (7,4)-кода, так как R(15,11)  11 / 15  0.73 , а
R( 7, 4)  4 / 7  0.57 . Посмотрим, как изменятся другие параметры кодирования. Для
этого выполним задания 1. 2. 3. из предыдущего примера.
Решение.
1. Кодовое слово будет принято правильно, если все его разряды будут
приняты без ошибок, таким образом

Pc  (1  Pe )15 . (7.3)

Для вероятности ошибки на двоичный символ Ре = 0.023, взятой из предыдущего


примера, имеем

Pc  (1  0.023)15  0.705 . (7.4)

2. Вероятность необнаружимой ошибки получим из оценки


n
Pr  Ped min
 Ai 
Pei  d (1  Pe ) ni  (2 k  1) Ped
min


min

i  d min
1

(2 k  1) Ped min
 2047  0.0233  0.025 . (7.5)
3. При скорости передачи двоичных символов 16 кбит/сек, эффективная
скорость передачи данных составляет

k 11 0,705  16кбит / сек


Rb, eff  Pc Pb   8.27 кбит / сек . (7.6)
n 15
В приведенных расчетах мы исходили из одной и той же вероятности ошибки
двоичного символа Ре = 0.023 для (15,11) и (7,4)-кодов.

Проведем аналогичные расчеты при одинаковой мощности передатчика. В этом


случае, потери энергетики на один символ по сравнению с передачей без кодирования
15
составляют для (15,11)-кода только 10 log 2  1.4 дБ (для (7,4)-кода эта величина
11
составляет 2.4 дБ - см. предыдущий пример). Таким образом, отношению сигнал/шум
равному 7 дБ соответствует вероятность ошибки двоичного символа, равная 0.013, поэтому

Pc  (1  0.013)15  0.82 , (7.7)

и вероятность необнаружения ошибки оценивается сверху как


(2 k  1) Ped min
 2047  0.0133  0.0045 . (7.8)

Эффективная скорость передачи также возрастает

k 11 0,82  16кбит / сек


Rb, eff  Pc Pb   9.62 кбит / сек . (7.9)
n 15
Условие неизменной мощности передатчика более близко к практике, чем условие
равенства вероятностей ошибки двоичных символов. По сравнению с (7,4)-кодом, для (15,11)-
кода мы получаем некоторый выигрыш по эффективной скорости Rb,eff = 9.62 кбит/сек за
счет возрастания вероятности необнаружимой ошибки.
Рассмотренные примеры показывают, что выбор кода для каждой конкретной
системы должен осуществляться с особой тщательностью.

7.2 Расширенные коды Хэмминга

Рассмотрим весьма полезное расширение кодов Хэмминга. Оно заключается в


дополнении кодовых векторов дополнительным двоичным разрядом таким образом, чтобы
число единиц, содержащихся в каждом кодовом слове, было четно. Коды Хэмминга с
проверкой на четность обладают следующими двумя преимуществами.
Длины кодов увеличиваются с 2  1 до 2 , что удобно с точки зрения хранения и
n n

передачи информации.
 Минимальное расстояние dmin расширенных кодов Хэмминга равно 4 вместо 3, что
дает возможность обнаруживать 3-кратные ошибки.
Дополнительный разряд проверки на четность позволяет использовать декодер в новом
режиме - гибридном режиме обнаружения и коррекции ошибок.
В качестве примера, рассмотрим расширение (15,11)-кода Хэмминга. Каждый кодовый
вектор v  (v0 , v1 ,, v15 ) расширенного (16,11)-кода Хэмминга получается из кодового
вектора v  (v0 ,, v14 ) (15,11)-кода путем добавления дополнительного разряда проверки на
четность, т.е.

v  (v0 , v1 ,, v15 )  (v0 , v0 ,, v14 ) , (7.10)


где
14
v 0   vi . (7.11)
i0

Проверочная матрица (16,11)-кода получается из проверочной матрицы (15,11)-кода


Хэмминга в два приема:
 допишем к матрице (15,11)-кода Хэмминга слева нулевой столбец;
 дополним получившуюся матрицу строчкой, полностью состоящей из одних единиц.

В результате получим

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
 
0 1 0 0 0 1 0 0 1 0 1 1 0 1 1 1
H 516  0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 1 . (7.12)
 
0 0 0 1 0 0 1 1 1 0 0 1 1 1 0 1
0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 1

При синдромном декодировании


s  v HT, (7.13)

причем, правая компонента равна


15
s 0   vi . (7.14)
i0
С учетом (7.10) и (7.12), получаем
15
s 0   vi  0 . (7.15)
i0

Из (7.10) и (7.12) следует, что и другие компоненты синдрома s также равны нулю.
Утверждение, что минимальное кодовое расстояние dmin кодов Хэмминга с проверкой на
четность равно 4, следует непосредственно из определения веса кодовых слов. В самом деле, так
как минимальный вес всех векторов кода Хэмминга, за исключением нулевого, равен 3, то
дополнительный разряд проверки на четность увеличивает этот минимальный вес до 4.
Расширенный код Хэмминга также является линейным и его минимальное расстояние dmin = 4.
Прежде чем говорить о декодировании кодов Хэмминга с проверкой на четность, напомним
два возможных режима декодирования обычных кодов Хэмминга.
1. Режим обнаружения ошибок. Если синдром s  0 , то декодер выдает сигнал
ошибки. Так как dmin кода Хэмминга равно 3, то ошибки кратности  2 всегда
обнаруживаются.
2. Режим коррекции ошибок. Если синдром s  0 , то декодер всегда исправляет один
из разрядов кодового слова (так как код Хэмминга является плотно-упакованным сферами
радиуса t = 1). Таким образом, декодер исправляет все однократные ошибки.

Из всего вышесказанного видно, что код Хэмминга или только обнаруживает все
ошибки кратности не выше 2, или только исправляет все однократные ошибки.
Теперь перейдем к кодам Хэмминга с проверкой на четность. Так как dmin таких кодов
равно 4, то в режиме обнаружения фиксируются все ошибки кратности 3 и ниже. Режим же
коррекции ошибок можно существенно улучшить, благодаря наличию в кодовых словах
дополнительного разряда проверки на четность.
Прежде всего заметим, что процесс исправления одиночных ошибок во всех разрядах,
исключая проверочный, ничем не отличается от обычного кода Хэмминга. Таким образом,
одиночная ошибка всегда может быть исправлена. (В этом случае, признаком одиночной
ошибки в проверочном разряде, является равенство нулю всех компонент синдрома s за
исключением s 0 , равная единице). С другой стороны, заметим, что при одиночной ошибке
всегда выполняется равенство s 0  1 . При двукратной же ошибке, компонента s 0 всегда равна
«0». Таким образом, получаем следующий улучшенный алгоритм коррекции ошибок в
расширенном коде Хэмминга.

1. Если s 0  1 , то производится исправление одиночной ошибки.


2. Если s 0  0 и s  0 (вектор), то считаем, что в канале произошла неисправляемая
ошибка и принятое слово или должно быть стерто, или в обратный канал должен быть
подан сигнал переспроса.

Таким образом, код Хэмминга с проверкой на четность способен или только


обнаруживать ошибки, кратности не выше трех, или исправлять все одиночные ошибки и,
одновременно, обнаруживать все двукратные.

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.
Лекция 8. Циклические коды. Определение и свойства двоичных циклических
кодов. Систематический циклический код.

8.1 Введение.

Прежде всего покажем, что применение на практике простейших линейных блоковых


кодов с их последующим синдромным декодированием связано с чрезмерными техническими
затратами. Для этой цели рассмотрим два примера.
Первым примером является протокол передачи данных по телефонному каналу ISDN-
D, в котором используется формат передачи данных LAPD (Link Asset Procedure on D-channel).
Все передаваемые данные заносятся в отведенные им поля в потоке данных, согласно
стандарту (см. рисунок 11). Длины полей заданы в байтах (один байт содержит блок из 8 бит).
Под проверочные символы отводится поле FCS (Frame Check Sequens) длиной 2 байта. С
помощью проверочных сумм производится обнаружение ошибок в поле адреса A (Adress),
поле команд С (Control) и информационном поле I (Information). Таким образом, общая длина
блока составляет (2+2+260+2) = 266 байт или 2128 бит. При использовании для защиты данных
от ошибок простейшего линейного кода с 16-ю проверочными битами потребовалась бы
порождающая матрица размерности 2112х2128 и порождающая матрица размерности 16х2128.

Рисунок 11 – Формат передачи данных LAPD с флагом F=(01111110),


полем адреса А, полем команд С и информационным полем I.

В качестве второго примера рассмотрим формат передаваемых данных, используемый


в стандарте 802.3-CSMA/CD (Carrier Sense Multiple Access/ Collision Detection) для передачи
данных в локальных сетях связи (Lokal Area Network, LAN) (рисунок 12).

Рисунок 12 – Формат передачи данных 802.3-CSMA/CD (Carrier Sense Multiple Access/


Collision Detection).

В этом случае защита информации от помех методами, рассмотренными в предыдущих


лекциях, также требует использования кодовых слов очень большой длины и, связанных с
этим, чрезмерных технических затрат.
Оба примера показывают, что на практике кодируются и декодируются
информационные потоки относительно большой длины. Применяемые при этом методы
контроля ошибок должны быть максимально эффективными. В рассмотренных двух примерах
этим требованиям отвечают двоичные циклические коды.
Циклические коды используются в беспроводной телефонии в стандарте DECT (Digital
Enhanced Cordless Telephony), и в мобильной связи. В мобильной связи циклические коды
применяются как в стандарте GSM (Global System For Mobile Communication), так и в стандарте
CDMA (Code Division Multiple Access).
Далее будет показано, что, при передаче в стандарте ATM (Asynchronins Transfer Mode),
циклические коды, используемые в НЕС (Header Error Control), позволяют также обнаруживать
ошибки синхронизации.
Замечание. Математические основы формулируются в виде тезисов и по мере
необходимости доказываются. Доказательства иллюстрируются короткими примерами.
Практические применения циклических кодов поясняются с помощью регистров с обратными
связями, которые выполняют роль кодеров и декодеров. Такое изложение теории на примерах
схемной реализации вначале может показаться немного непривычным. С другой стороны,
детальное усвоение процессов реализации кодирования и декодирования в дальнейшем может
принести Вам большую пользу. Изучив последующие разделы, Вы будете подготовлены к
самостоятельной программной реализации изученных алгоритмов.

8.2 Определение и свойства двоичных циклических кодов

Циклические коды являются подмножеством линейных кодов. Они обладают новыми


специфическими свойствами, позволяющими упрощать процессы кодирования и
декодирования. При этом, корректирующая способность циклических кодов в большинстве
случаев довольно высока.
Ограничимся описанием только двоичных циклических кодов. Заметим, что операции
с компонентами двоичных кодов производятся по правилам арифметики по модулю 2.
Замечание. Двоичные циклические коды образуют линейные векторные
пространства над полем Галуа GF(2). На практике широко используются циклические
коды с компонентами из расширенных полей Галуа GF(2m). Такими кодами являются коды
Боуза-Чоудхури-Хоквингема (БЧХ) и коды Рида-Соломона (PC). Коды PC, в частности,
используются в проигрывателях компакт дисков.

Определение. Линейный (n, k)-код С является циклическим, если циклический сдвиг


любого кодового слова из С также принадлежит коду С.

Рассмотрим кодовое слово


v  (v0 ,, vn1 ) , (8.1)

с компонентами vi  {0, 1} . Циклический сдвиг соответствует сдвигу всех компонент на


один разряд вправо, причем, освободившееся место слева занимает крайняя правая
компонента
v (1)  (vn1 , v0 ,, vn 2 ) . (8.2)

При i-кратном циклическом сдвиге получаем


v (i )  (vni ,, vn1 , v0 , v1 ,, vni 1 ) . (8.3)

Циклический сдвиг реализуется с помощью регистра сдвига длины п с обратной


связью (рисунок 13).
Циклические коды можно описать, представив кодовые векторы в виде многочленов.
Такое представление позволяет обнаружить некоторые дополнительные полезные
математические свойства циклических кодов. Использование этих свойств приводит к
построению простых и эффективных процедур кодирования и декодирования.

Рисунок 13 – Регистр сдвига с обратной связью.

Существует взаимно-однозначное соответствие между кодовым вектором


v  (v0 ,, vn1 ) и степенью многочлена n – 1

v( X )  v0  v1 X  v2 X 2    vn1 X n1 . (8.4)

При необходимости можно переходить от векторного представления кодового слова к


представлению в виде многочлена и наоборот.
Замечание. С математической точки зрения, представление кодовых слов в виде
многочлена изоморфно линейному векторному пространству кодовых векторов. При этом,
операции с коэффициентами многочленов производятся по привычным правилам арифметики
по модулю 2. Можно так же заметить, что степени переменной X используются только для
обозначения места соответствующей компоненты кодового вектора в регистре сдвига и
никакой иной смысловой нагрузки не несут.

Представим циклический сдвиг кодового слова в виде многочлена

v (i ) ( X )  vni  vni 1 X    vn1 X i 1  v0 X i 


(8.5)
 v1 X i 1    vni 1 X n1 .

Сравним (8.5) с результатом умножения v(x) на хi

X i v( X )  v0 X i  v1 X i 1    vn1 X i  n1. (8.6)

Внимательное рассмотрение (8.5) и (8.6) позволяет обнаружить связь между


v (i ) ( X )  vni  vni 1 X    vn1 X i 1  v0 X i 
 
q( X ) (8.7)
 v1 X i 1    vni 1 X n1 .
и

X i v( X )  v0 X i  v1 X i 1    vni 1 X n 1 
 vn i X n    v n1 X n  i 1 . (8.8)
 
q ( X ) X n

Эту связь можно выразить в виде

X i v( X )  q( X )  ( X n  1)  v (i ) ( X ) . (8.9)

причем, операция сложения q(Х) с v (i ) ( X ) устраняет ненужные компоненты.


Замечание. Мы рассматриваем векторные пространства кодовых слов над GF(2). В
двоичном поле справедливо 1  1  0 , т.к. обратным элементом к «1» является сама «1».
Это полезное свойство не всегда является справедливым в случае произвольного поля Галуа
GF(pm), что может привести к усложнению вычислений.

Из (8.9) следует, что многочлен, соответствующий i-кратному циклическому сдвигу


вектора v можно получить, как остаток от деления многочлена X i v(X ) на ( X n  1) . В
дальнейшем, мы покажем, что данное свойство может быть использовано для эффективного
обнаружения ошибок.
Теорема 1. В каждом циклическом коде существует единственный, отличный от нуля,
кодовый многочлен g(X) минимальной степени r = n – k.

Доказательство. Пусть существуют два многочлена минимальной степени g(X) и


g ( X ) отличных от нуля. Из свойства замкнутости линейного векторного кодового пространства
следует, что их сумма является кодовым многочленом. Отсюда получаем

g( X )  g 0  g1 X  g 2 X 2    g r X r
g ( X )  g 0  g1 X  g 2 X 2    g r X r
g ( X )  g ( X )  ( g 0  g 0 )  ( g1  g1 ) X    ( g r  g r ) X r .
 
0

Таким образом, приходим к противоречию.

Теорема 2. Если g(X) – кодовый многочлен наименьшей степени r, то его коэффициент


g0 = 1.
Доказательство. Сдвинем многочлен g(X) n – 1 раз. Получим многочлен
g ( n-1) ( X )  g1  g 2 X  g 3 X 2    g r X r 1  0  X r  0    0  g 0 X n1. (8.10)

Этот многочлен также принадлежит коду. А по определению его степень не может быть
меньше r, поэтому g0 = 1.

Теорема 3. Пусть g(X) – многочлен минимальной степени r. Тогда, чтобы v(X) является
кодовым многочленом необходимо и достаточно, чтобы он был кратен g(X).

Доказательство. Докажем достаточность. Пусть v(X) = a(X) g(X). Тогда

v( X )  a( X ) g( X ) 
 (a0  a1 X  a2 X 2    an1 r X n1r )  g( X ) 
 a0 g( X )  a1 Xg( X )  a2 X 2 g( X )    an1r X n1 r g( X ) . (8.11)

Так как степень многочлена g(X) не превосходит r, а степень многочлена a(X) не превосходит n
– 1 – r, произведение a(X) g(X) не содержит членов степени, большей n – 1, то Xi g(X) можно
рассматривать как i – кратный сдвиг многочлена g(X). Таким образом

v ( X )  a0  a1 g (1) ( X )  a2 g (2) ( X )    an1 r g ( n1 r ) ( X ) . (8.12)

Так как любой циклический сдвиг g(X) также является кодовым многочленом, то v(X)
представляет собой линейную комбинацию кодовых слов, т.е. является кодовым словом.
Необходимость. Пусть

v ( X )  c ( X ) g ( X )  b( X ) , (8.13)
где b(X) – возможный остаток от деления v(X) на g(X). Решим это уравнение относительно p(X)

b( X )  c ( X ) g ( X )  v ( X ) . (8.14)

Правая часть (8.14) представляет собой сумму двух кодовых многочленов, следовательно, и
b(X) является кодовым многочленом. Так как по определению степень b(X) меньше степени
минимального многочлена g(X), многочлену b(X) соответствует нулевое кодовое слово.

Для поиска порождающих многочленов важным является следующее утверждение:


Теорема 4. Порождающий многочлен g(X) циклического кода (n, k) делит ( X n  1) без
остатка.

Доказательство. Умножим g(X) на Xk , тогда получим многочлен степени n = k + r. Этот


же результат можно получить, если к циклическому сдвигу gk(X) прибавить ( X n  1) для
устранения лишней «1» при X0 и компенсации недостаточной компоненты Xn. Получаем

X k g( X )  g 0 X k  g1 X k 1    g r X n  g ( k ) ( X )  1  X n . (8.15)
Представим (8.15) как результат деления x k g (X ) на ( X n  1)

X k g( X )  1  ( X n  1 )  g (k ) ( X ) , (8.16)

где g ( k ) ( X ) является остатком. Так как циклический сдвиг g ( k ) ( X ) сам является кодовым
многочленом, то согласно теореме 3, существует такой многочлен a(X), что

g ( k ) ( X )  a( X ) g( X ) . (8.17)

Подставим (8.17) в (8.16) и переставляя слагаемые, получим

 
X n  1  X k  a( X )  g( X ) . (18)

Таким образом, g(X) делит ( X n  1) без остатка.

Справедливо обратное утверждение.


Теорема 5. Если некоторый многочлен g(X) степени n – k делит ( X n  1) без остатка,
то g(X) порождает некоторый циклический (n, k) – код.

Доказательство. Вначале докажем, что всевозможные произведения g(X) на


многочлены, степень которых не превышает k – 1, образуют некоторый линейный (n, k) – код и
что этот код является циклическим.
Все произведения g(X) на многочлен, степень которого не превышает k – 1, запишем
в следующем виде

v ( X )  v0  v1 X  v2 X 2    vn1 X n1 
 (a0  a1 X  a2 X 2    ak 1 X k 1 )  g( X ) . (8.19)

k
В соответствии (8.19), всем возможным 2 наборам двоичных коэффициентов от a0 до ak-1
k
соответствует 2 различных кодовых слов. Полученный код является линейным, так как
сумма двух любых кодовых слов также принадлежит коду.
Теперь покажем, что этот код является циклическим.
Рассмотрим произведение

X  v ( X )  v0 X  v1 X 2  v2 X 3    vn 2 X n1  vn1 X n 


 v (1) ( X )  vn1 ( X n  1) . (8.20)

(1)
Из (8.20) следует, что для многочлена v ( X ) , соответствующего сдвигу v(X), справедливо
v (1) ( X )  X  v ( X )  vn1 ( X n  1) . (8.21)
Так как g(X) делит v(X) и ( X n  1) , он также является делителем v (1) ( X ) . Таким образом,
циклический сдвиг любого кодового слова также принадлежит коду.
k
Значит, множество 2 различных многочленов, делящихся на g(X), образуют линейное
векторное пространство циклического (n, k) – кода.

Теорему 6 можно использовать как руководство к построению циклических кодов.


Пусть, например, существует некоторый многочлен степени r = n – k, на который делится
( X n  1) . Тогда, этот многочлен является порождающим многочленом g(X) циклического
(n, k) – кода. При больших значениях n двучлен ( X n  1) может иметь несколько делителей
степени r. В связи с этим возникает вопрос: Какой из этих делителей порождает наилучший
код? К сожалению, на этот вопрос не существует однозначного ответа, тем не менее, во
многих случаях можно пользоваться таблицей наилучших двоичных циклических кодов,
предлагаемой ITU (International Telecommunication Union) (таблица 4).

Пример: Порождающий многочлен циклического (7,4)-кода.

Рассмотрим простейший циклический (7,4)-код. Для его построения требуется


порождающий многочлен g(X) степени r = 7 – 4 = 3, являющийся делителем ( X 7  1) .
Воспользуемся разложением

( X 7  1)  (1  X )(1  X  X 3 )(1  X 2  X 3 ) . (8.22)

Таблица 4 – Циклический (7,4)-код с порождающим многочленом g ( X )  1  X  X 3 .


Правильность (8.22) можно проверить вычислением правой части в GF(2).
Выберем в качестве порождающего многочлена многочлен

g( X )  1 X  X 3 . (8.23)

Информационные и кодовые слова циклического (7,4)-кода, образованного с помощью


g(X) из (8.23), а также соответствующие им многочлены приведены в таблице 4.

8.3 Систематические циклические коды

Приведенные в таблице 4 кодовые слова образуют несистематический код. Однако,


путем некоторой модификации алгоритма кодирования можно получить систематический
циклический код с теми же параметрами.

Рисунок 14 – Сдвиг многочлена в регистре сдвига с обратными связями


длины п на r = п – k позиций

Для этой цели рассмотрим информационный многочлен степени k – 1


u( X )  u0  u1 X  u2 X 2    vk 1 X k 1 . (8.24)

и его r = п – k -кратный сдвиг.

X r u( X )  u0 X r  u1 X r 1    uk 1 X n1 . (8.25)

Из рисунка 14 видно, что такой сдвиг не вызывает переполнения n-разрядного регистра сдвига
(поэтому и может быть записан в виде (8.25)) и соответствует заполнению k правых крайних
двоичных разрядов регистра информационным словом. Заполним теперь свободные r левых
двоичных разрядов таким образом, чтобы вектор, содержащийся в n -разрядном регистре,
принадлежал коду. Для этого представим многочлен X r u (X ) в виде
X r u( X )  a( X ) g ( X )  b( X ) . (8.26)

где b(Х) - остаток от деления X r u (X ) на g(Х). Из (8.26) следует

X r u( X )  b( X )  a( X ) g ( X ) . (8.27)

Из (8.27) вытекает алгоритм кодирования систематического циклического (n, k)-кода:

1. Информационный многочлен u(Х) степени k – 1 умножается на Хr, где r = п – k;


2. Находится остаток b(Х) от деления X r u (X ) на g(Х);
3. Многочлен b(Х) заносится в r левых разрядов регистра сдвига (рисунок 14).

Заметим, что эта операция всегда возможна, так как степень b(Х) по определению не
превышает r – 1. Таким образом, в регистре сдвига будет сформирован многочлен

v( X )  b0  b1 X    br 1 X r 1  u 0 X r  u1 X r 1    u k 1 X n 1 . (8.28)
  
r проверочны х символов k информацио нных символов

Многочлен v(X) принадлежит циклическому коду, так как в силу (8.27) он делится на
g(X) без остатка. Более того, этот код является систематическим, так как из (8.28) следует, что
старшие k разрядов кодовых векторов являются информационными векторами.
Следующий пример наглядно поясняет алгоритм кодирования циклических
систематических кодов.

Пример: Циклический (7,4)-код в систематической форме.

В качестве порождающего многочлена будем использовать уже известный из


предыдущего примера многочлен g ( X )  1  X  X 3 (8.23). Пусть задан информационный
вектор
u = (1001). (8.29)
Ему соответствует информационный многочлен

u(Х) = 1 + X3. (8.30)

Умножим информационный многочлен на X3


Х3 u(Х) = X3 + X6. (8.31)
и определим остаток b(Х) от деления (8.31) на g(X). Процесс нахождения остатка b(Х) в
соответствии с алгоритмам деления Евклида показан в таблице 5.
Таблица 5 – Определение проверочных символов для и(Х) = 1 + X3 и g ( X )  1  X  X 3
.

В результате получим
X 3u ( X )  (1  X 3 ) g ( X )  
X
X2 . (8.32)
b( X )
Так как кодовый многочлен определяется как
v( X )  b( X )  X 3u( X ) . (8.33)
то
v = (011 1001). (8.34)
Повторяя процесс кодирования для всех 16 возможных информационных векторов,
получим систематический циклический (7,4)-код. Его информационные и кодовые векторы
приведены в таблице 6. Заметим, что циклический систематический (7,4)-код, образованный
порождающим многочленом g ( X )  1  X  X 3 , совпадает с рассмотренным нами ранее
систематическим (7,4)-кодом Хэмминга.

Таблица 6 – Циклический (7,4)-код, образованный порождающим многочленом


g ( X )  1  X  X 3 в систематическом виде.

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 9. Порождающая и проверочная матрицы циклических кодов.

Циклические коды образуют подмножество линейных блоковых кодов и, помимо


общих особенностей линейных блоковых кодов, они обладают некоторыми специфическими
свойствами и методами описания. Рассмотрим сначала порождающую матрицу циклического
кода. В соответствии с теоремой 3 (см. лекцию 8), каждый многочлен циклического кода может
быть представлен в виде произведения
v ( X )  a( X ) g( X )  a0 g( X )  a1 Xg( X )  a2 X 2 g( X )    ak 1 X n1 g( X ) . (9.1)

Заметим, что каждое слагаемое в (9.1) представляет собой сдвиг порождающего


многочлена g(X), которому соответствует вектор

g  (1, g1 ,, g r 1 ,1) , (9.2)

поэтому, кодовый вектор v, соответствующий многочлену v(X), может быть представлен в


виде произведения информационного вектора, а на порождающую матрицу G

v1n  a1n  Gkn , (9.3)


где порождающая матрица G имеет вид

 1 g1 g 2  g r 1 1 0 0  0
 
 0 1 g1 g2  g r 1 1 0  0
Gk n  0 0 1 g1 g2  g r 1 1  0 . (9.4)
 
         0
0 0 0   g r 1 1 
 1 g1 g2

Пример: Порождающая и проверочная матрица циклического (7,4)-кода Хэмминга.


Используя уже известный порождающий многочлен g ( X )  1  X  X 3 , получим
порождающую матрицу несистематического циклического (7,4)-кода

1 1 0 1 0 0 0
 
0 1 1 0 1 0 0
G47 
0 1 1 0 1 0
. (9.5)
0
 
0 0 0 1 1 0 1 

Как уже указывалось ранее, кодовое векторное пространство, образованное порождающим


многочленом g ( X )  1  X  X 3 , совпадает с линейным векторным пространством (7,4)-
кода Хэмминга, следовательно, матрицу G из (9.5) можно также рассматривать, как
порождающую матрицу циклического кода Хэмминга в несистематической форме.
Путем элементарных матричных преобразований порождающая матрица G из (9.5)
может быть приведена к систематическому виду. Так как каждая строка матрицы G является
кодовым словом, замена любой строки суммой этой строки с другой, отличной от нее, не
меняет кодового векторного пространства (меняется лишь система соответствий между
информационными и кодовыми векторами). Заменим в (9.5) вначале третью и четвертую
строку их суммами с первой строкой и, далее, полученную четвертую строку - ее суммой с
первой. В результате, получим порождающую матрицу систематического циклического кода
Хэмминга, совпадающую с (3.2)
1 1 0 1 0 0 0
 
0 1 1 0 1 0 0
G47  ( P43 I4 )  
1 1 0 0 1 0
. (9.6)
1
 
1 0 1 0 0 0 1 

Возьмем информационный вектор u = (1 0 0 1). Ему будет соответствовать кодовый


вектор

1 1 0 1 0 0 0
 
0 1 1 0 1 0 0
v  u  G47  (1001)    (0111001) .
1 1 0 0 1 0
(9.7)
1
 
1 0 1 0 0 0 1 
что совпадает с полученным ранее (8.34) кодовым вектором систематического циклического
кода и таблицей 6.

Проверочная матрица циклического систематического (7,4)-кода может быть получена


из порождающей матрицы G (9.6) по рассмотренным ранее формальным правилам. Здесь,
однако, мы хотим получить проверочное соотношение и построить проверочную матрицу,
исходя только из свойств циклических кодов. Для этого, воспользуемся сформированным
ранее теоремой 5 о том, что порождающий многочлен g(X) делит X  1 без остатка.
n

Следовательно, можно написать

X n  1  h( x)  g ( x) . (9.8)

Так как кодовый многочлен можно представить в виде

v(X) = а(Х) g(Х), (9.9)

то, с учетом (9.8), произведение

v( X )h( X )  a( X )h( X ) g ( X )  a( X )  [1  X n ]  a( X )  a( X ) X n . (9.10)

Так как степень многочлена а(Х) не превышает k – 1, правая часть равенства (9.10) не
k k 1 n 1
содержит в качестве слагаемых члены с X , X ,, X . Используя это условие для
коэффициентов произведения v(X) а(Х), можно записать n – k проверочных равенств
v0  hk  v1  hk 1    v k  h0 0
v1  hk    v k  h1  v k 1  h0 0
(9.11)
v 2  hk   v k 1  h1  v k  2  h0  0
  

Эти равенства можно записать в матричной форме. Введя проверочную матрицу

 hk hk 1 hk  2  h1 h0 0 0 0
 
 0 hk hk 1 hk  2  h1 h0 0  0
H ( n k )n  0 0 hk hk 1 hk  2  h1 h0  0  . (9.12)
 
         
0   h1 h0 
 0 0 hk hk 1 hk  2

получим уже известное матричное уравнение для синдромного декодирования

v HT  0. (9.13)

Определение. Пусть задан порождающий многочлен g(X) степени r = n – k


циклического (n, k)-кода С. В этом случае, многочлен h(X) степени k такой, что
X n  1  h( x)  g ( x) называется проверочным многочленом.

Многочлен, взаимообратный проверочному многочлену h(X), т.е. многочлен


X (h( X 1 ))  hk  hk 1 X    h0 X k является порождающим многочленом (n, n – k)-кода
k

C d , дуального коду С.

Замечание. Преобразованию X i (h( X 1 )) соответствует зеркальное отображение


его коэффициентов.

Теперь перед нами стоит задача получить порождающую матрицу систематического


циклического (n, k)-кода, с заданным порождющим многочленом g(X), не прибегая к
элементарным преобразованиям матрицы (9.4). Здесь ключевая идея будет состоять в том,
что любые k линейно независимых векторов, делящихся на g(X), образуют одно и то же
кодовое векторное пространство. Надо лишь выбрать эти векторы таким образом, чтобы им
соответствовала порождающая матрица систематического (n, k)-кода.
r i
Представим X в виде

X r i  ai ( X ) g ( X )  bi ( X ) . (9.14)

где i  1, k  1 и
bi ( X )  bi ,0  bi ,1 X    bi ,r 1 X r 1 . (9.15)

Равенству (9.14) соответствуют k линейно независимых кодовых многочлена

vi ( X )  ai ( X ) g ( X )  X r i  bi ( X ) . (9.16)

Таким образом, векторное пространство систематического циклического (n, k)-кода


r i
«натянуто» на набор k векторов X r  i  bi (X ) где i  1, k  1 . Здесь единицы при X
образуют единичную подматрицу и являются признаком независимости базисных многочленов
vi(X).
Порождающая матрица, соответствующая (9.16), имеет вид

 
 
 b0 , 0 b0 ,1 b 0 , 2  b0 , r 1 1 0  0 
 b1,0 b1,1 b1, 2  b1,r 1 0 1  0 
Gk n  . (9.17)
          
 bk 1,0 bk 1,1 bk 1, 2  bk 1,r 1 0 0  1 
     
 P kr
I  kk

Как уже доказывалось ранее, проверочная матрица систематического кода образуется


из (9.17) в форме

H r n  ( I r r P T ) . (9.18)

Таблица 7 – Определение порождающей матрицы в систематическом виде.

Пример: Порождающая матрица систематического циклического (7,4)-кода Хэмминга.


Найдем порождающую матрицу систематического циклического (7,4)-кода по уже
известному порождающему многочлену g ( X )  1  X  X . Для этой цели определим,
3

r i
вначале, разложение X согласно (9.14) и базисные кодовые многочлены vi(X) из (9.16) для
i = 0,1,2,3 (таблица 7).
Порождающая матрица непосредственно строится по базисным кодовым многочленам
v0 ( X ), v1 ( X ), v2 ( X ), v3 ( X ) и полностью совпадает с (9.7)

1 1 0 1 0 0 0
 
0 1 1 0 1 0 0
G47 
1 1 0 0 1 0
. (9.19)
1
 
1 0 1 0 0 0 1

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 10. Схемная реализация циклического кодирования.

Важнейшее преимущество циклических кодов по сравнению с другими методами


кодирования заключается в простоте их технической реализации. Использование в схемах
кодеров и декодеров регистров сдвига с обратными связями, позволяет просто и достаточно
эффективно защищать от ошибок информационные массивы очень большой длины.
Замечание. Эта особенность присуща всем циклическим кодам над полями Галуа. Для
простоты изложения, здесь мы ограничимся только двоичными кодами, т.е. циклическими
кодами над GF(2).

Так как процедура деления многочленов является основной в кодерах и декодерах


циклических кодов, покажем, прежде всего, как эта процедура может быть реализована с
помощью регистров сдвига с обратными связями. Для начала, сопоставим деление многочлена
f ( X )  1  X  X 2  X 4 на многочлен g ( X )  1  X 2 по алгоритму Евклида (таблица 8) с
его схемной реализацией (рисунок 15).

Таблица 8 – Алгоритм Евклида деления многочлена f ( X )  1  X  X 2  X 4 на


g( X )  1 X 2 .
В таблице 8 делитель g(X) домножается на X2, так как степень f(X) равна 4 и вычитается
из делимого f(X). В результате, полученный многочлен имеет степень, меньшую g(X), так что
мы сразу же имеем остаток от деления f(X) на g(X). Аналогичная процедура имеет место и на
рисунке 15, однако, здесь требуется три такта для того, чтобы младшие разряды f(X) заняли
место остатка.

Рисунок 15 – Схема деления многочлена f ( X )  1  X  X 2  X 4 на g ( X )  1  X 2 .

Теперь рассмотрим схемную реализацию деления двоичных многочленов в общем


случае. Пусть заданы: делимое степени т

f ( X )  f 0  f1 X    f m X m . (10.1)
делитель степени r, причем, r < т

g ( X )  g 0  g1 X    g r X r . (10.2)
В результате деления мы должны получить разложение

f(X) = а(Х) g(Х) + b(X). (10.3)


с сомножителем а(Х) степени т – r и остатком b(X)со степенью, на превышающей r – 1.
Схема деления многочленов общего вида представлена на рисунке 16.
Сначала регистр сдвига полностью загружается старшими разрядами делимого. Ключ
S1 включен, а переключатель S2 находится в верхнем положении. Далее начинается сам
процесс деления. В первом такте производится сдвиг содержимого регистра на один разряд
вправо. Так как fm = 1, эта единица, в соответствии с коэффициентом двигателя g(Х),
суммируется с аналогичными разрядами делимого. В результате, мы получаем укороченный
многочлен

f ( X )  f ( X )  X m r g ( X ) . (10.3)
со степенью

deg[ f ( X )]  k1  m . (10.4)
Эта же единица заносится в регистр формирования а(Х) при замкнутом переключателе
S2 и в дальнейшем не меняется.

Рисунок 16 – Схема деления многочленов f(X) : g(Х)) = а(Х) g(Х) + b(X).

На последующих l = т – r тактах алгоритм деления остается таким же. Так, если степень
укороченного многочлена f(X) в (10.3), равная k1 (10.4), остается большей и равной r, то с
помощью цепи обратной связи производится укорочение теперь уже многочлена f (X ) из
(10.3).
f ( X )  f ( X )  X k  r g ( X )  f ( X )  [ X m r  X k  r ] g ( X ) .
1 1
(10.5)
со степенью
deg[ f ( X )]  k 2  k1 . (10.6)

Таким образом, после l = т – r тактов мы получаем разложение (10.3), причем, в


регистре делимого находится остаток от деления b(X). После этого, ключ S1 размыкается,
переключатель S2 переводится в нижнее положение и на следующих r тактах остаток b(X)
заносится в регистр формирователя остатка.
Как уже упоминалось ранее, кодер систематического кода не использует при своей
работе сомножитель а(Х) из разложения (10.3). Его задачей является только получение остатка
от деления сдвига информационного многочлена на порождающий многочлен g(Х). Этот
остаток образует затем младшие разряды кодового слова.
В связи с выше изложенным, схему деления двух многочленов (рисунок 16) для нужд
кодирования можно существенно упростить. Заметим, что для получения остатка от деления
по алгоритму Евклида, нам достаточно хранить в памяти помимо делимого только
промежуточные суммы. Если степень g(Х) равна r, каждая промежуточная сумма занимает не
более чем r двоичных разрядов и обновляется на каждом такте процедуры деления, причем, на
этом же такте производится сложение очередного двоичного разряда промежуточной суммы с
соответствующим разрядом делимого. Таким образом, схема деления многочлена
f ( X )  1  X  X 2  X 4 на g ( X )  1  X 2 (рисунок 15) преобразуется в схему
получения остатка от деления (рисунок 17). Здесь уже не требуется предварительной загрузки
делимого в регистр деления, а остаток b0, b1 образуется в этом регистре на пятом такте.
Рисунок 17 – Схема деления многочлена f ( X )  1  X  X 2  X 4 на
g( X )  1 X 2 .

Выше мы подробно разобрали схемные реализации алгоритмов деления Евклида.


Покажем теперь принцип действия схем кодирования циклических кодов, построенных на
регистрах сдвига с обратными связями. Рассмотрим уже знакомый нам систематический код
Хэмминга с порождающим многочленом g ( X )  1  X  X 3 . Пусть передается
информационный вектор u = (1001). Ему соответствует кодовое слово в систематическом
виде v = (011 1001). Алгоритм деления Евклида для вычисления проверочных разрядов
приведен в таблице 5 (лекция 8). Здесь делимым является информационный многочлен
u ( r ) ( X ) , делителем - порождающий многочлен g(Х). Проверочные разряды определяются
как коэффициенты многочлена b(X), который представляет собой остаток от деления
u ( r ) ( X ) на g(Х).
Для формирования кодового слова v по информационному вектору и используется
цепь деления (рисунок 18). Для получения проверочных разрядов, воспользуемся
вычислениями, приведенными в таблице 5. Поместим информационные биты u = (1001) во
входной регистр и обнулим разряды верхнего регистра формирователя остатка b0, b1, b2.
Ключ выходного регистра находится в положении S1, а цепь обратной связи в устройстве
деления замкнута. На первом такте старший разряд двоичного информационного вектора u3
заносится во выходной регистр сдвига, одновременно сумма u3 и b2 подается в цепь обратной
связи регистра формирования остатка.
Результат вычисления u 3  b2  1заносится в разряды b0 и b1 верхнего регистра.
Обратим внимание на тот факт, что при вычислении первой промежуточной суммы в
алгоритме деления Евклида (см. таблица 5) происходит сложение g1 с u1 и g0 с u2 Это в
точности соответствует сложению b1 + b0 = 1 разрядами, поступающими из входного
регистра сдвига (см. рисунок 18) двумя и тремя тактами позже. Таким образом, на первом
такте b1 = b0 = 1, а b2 = 0.
Замечание. Операция сложения производится по правилам арифметики по модулю
2 и обозначается знаком  . Заметим, что в арифметике по модулю 2, «-1» равна «+1» и
операция вычитания эквивалентна операции сложения.
Рисунок 18 – Кодер систематического циклического (7,4)-кода с порождающим многочленом
g ( X )  1  X  X 3 ..

Так как схема получения кодового слова v по информационному вектору u остается


неизменной во времени, то она обладает свойством линейности относительно операций в поле
GF(2). Следовательно, многократные сдвиги и суммирования коэффициентов порождающего
многочлена g(Х) и полученные промежуточные результаты соответствуют промежуточным
результатам алгоритма деления Евклида (таблица 5).
На втором такте разряд u2, загружается в выходной регистр формирования кодового
слова. Одновременно вычисляется сумма u2 с очередным значение b2. Результат u 2  b2  0
подается в цепь обратных связей. Таким образом, значение b0 = 0, а b1 = b2 = 1.
На третьем такте в выходной регистр загружается информационный разряд u1 и,
одновременно, вычисляется сумма u1  b2 . Результат вычисления u1  b2  1 поступает в
цепь обратных связей и после третьего такта b0 = b1 = b2 = 1.
На четвертом такте в выходной регистр заносится младший разряд u0. Вычисленное
значение u 0  b2  0 подается в цепь обратных связей. В результате имеем b0 = 0, а b1 = b2
= 1.
Согласно алгоритму деления Евклида, после четвертого такта многочлен
b( X )  b0  b1 X  b2 X 2 равен остатку от деления u ( r ) ( X ) на g(Х). Формирование
проверочных символов завершено. На пятом, шестом и седьмом тактах проверочные символы
b2 , b1 , b0 дописываются к старшим разрядам u ( r ) ( X ) кодового слова v(X). Для этого оба
ключа предварительно переводятся в положение S2 (рисунок 19).

Рисунок 19 – Процедура считывания проверочных символов.

В рассмотренном примере показана реализация алгоритма деления Евклида с помощью


регистра сдвига со встроенными сумматорами, поэтому данная схема не ограничивается
приведенными числовыми значениями. Исходя из заданного многочлена
g ( X )  1  g1 X    g r 1 X r 1  X r можно построить схему кодирования для любого
двоичного циклического (n, k)-кода (рисунок. 20).

Рисунок 20 – Кодер систематического циклического (n, k)-кода с


порождающим многочленом g(Х).

Замечание. Таким же образом строятся кодеры дуальных циклических кодов с


порождающим многочленом h(X).

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 11. Синдром циклических кодов и контроль ошибок. Пакеты ошибок.


Декодер Меггитта

11.1 Синдром циклических кодов и контроль ошибок

Рассмотрим модель передачи информации (рисунок 21). При передаче по каналу связи с
шумом к кодовому слову v(X) добавляется многочлен ошибок e(Х). В результате, многочлен
принятого кодового слова имеет вид:
r(X) = v(X) + e(Х). (11.1)
или
r(X) = a(X)g(X) + s(X), (11.2)

где s(X) представляет собой синдром. Если r(X) является кодовым словом, то s(X) - нулевой
многочлен.

Рисунок 21 – Модель передачи информации.

Синдром s(X) может быть вычислен с помощью алгоритма деления Евклида. Такое
вычисление можно реализовать на простой цепи (рисунок 22), во многом схожей с кодером
систематического циклического кода (рисунок 20).

Рисунок 22 – Вычисление синдрома систематического (n, k)-кода с


порождающим многочленом g(Х).

В схеме, приведенной на рисунке 22, определяется остаток от деления некоторого


многочлена на порождающий многочлен g(Х). Сначала, в декодере производится обнуление
двоичных разрядов синдрома s 0 , s1 , , s r 1 , и в регистр синдрома заносятся r первых
принятых из канала бит. Остаток от деления r(Х) на порождающей многочлен g(Х) по
алгоритму Евклида заносится в регистр синдрома. Рассмотрим процедуру вычисления
синдрома s(X) на примере.
Пример: Вычисление синдрома циклического (7,4)-кода Хэмминга.
В качестве примера, рассмотрим уже известный циклический (7,4)-код Хэмминга с
порождающим многочленом g ( X )  1  X  X 3 . Пусть информационный вектор u = (1001).
Как мы уже знаем из предыдущего примера, этому вектору соответствует кодовое слово v =
(011 1001).
При передаче по каналу без шума r = v. Процедура вычисления синдрома по тактам, в
этом случае, представлена на рисунке 23. Так как принятое из канала слово является кодовым,
мы получим нулевой синдром.

Рисунок 23 – Вычисление синдрома систематического (7,4)-кода по принятому


слову в канале без шума.

Пусть, из-за воздействия шума в канале произошла одна ошибка r = (011 1011). Тогда,
в результате вычисления остатка от деления r(Х) на g(Х) (рисунок 24), мы уже получаем
ненулевой синдром. Таким образом, произошло распознавание ошибки.

Рисунок 24 – Вычисление синдрома систематического (7,4)-кода при


одиночной ошибке в принятом слове.
Преимущества циклических кодов не ограничиваются одной лишь простотой
вычисления синдрома. Рассмотрим некоторые дополнительные свойства, которыми обладают
их синдромы.
Теорема 1. Пусть s(X) - синдром принятого из канала слова r(Х) некоторого
циклического (n, k)-кода. Обозначим через s1(X) остаток от деления многочлена X
s(X) на порождающий многочлен g(Х). Тогда s1(X) является синдромом r (1) ( X ) т.е.
остатком от деления циклического сдвига r(Х) на порождающий многочлен g(Х).

Пример: Вычисление синдрома однократных ошибок для циклического (7,4)-кода


Хэмминга.

Рисунок 25 – Вычисление синдромов циклических сдвигов принятого слова.

Продолжим предыдущий пример. Из рисунка 23 следует, что однократной ошибке в


компоненте r5 вектора r  ( r0 , , r6 ) соответствует синдром s  (s0 , s1 , s2 )  (1,1,1) (такт
п = 7). Отключив входной регистр, получим схему, изображенную на рисунке 25. Заметим, что
исходное состояние на такте п = 0 определяется синдромом однократной ошибки в компоненте
r5. Произведя циклические сдвиги регистра синдрома рисунка 24, мы на каждом такте будем
находить s(X ) из формулы

X s ( X )  [c( X )  rn1h( X )  Xa( X )]  g ( X )  s


(X ) . (11.3)
остаток

Последовательность s(X ) соответствует синдромам однократных ошибок в


компонентах r6, r0 и т.д. (Таблица 9). Значения из таблицы 9 полностью совпадают со значениями
таблицы.3 (лекция 4), полученной для проверочной матрицы систематического (7,4)-кода
Хэмминга.

Таблица 9 – Синдромы однократных ошибок циклического (7,4)-кода Хэмминга с


порождающим многочленом g ( X )  1  X  X 3 .

Такт s0 s1 s2 Ошибочная компонента


0 1 1 1 r5
1 1 0 1 r6
2 1 0 0 r0
3 0 1 0 r1
4 0 0 1 r2
5 1 1 0 r3
6 0 1 1 r4
Замечание. В рассмотренном примере вся таблица синдромов однократных ошибок
генерируется с помощью простейшей схемы, поэтому, для кодов большей длины можно
хранить в памяти декодера таблицы синдромов, а не саму проверочную матрицу.

Рассмотрим связь между синдромом s(X) и многочленом ошибок е(Х). Из модели


передачи информации (рисунок 21) следует

r ( X )  v( X )  e( X ) , (11.4)
где
v( X )  c( X ) g ( X )  X r u( X )  b( X ) . (11.5)
Так как
r(X) = a(X)g(X) + s(X),
то
e(X) = [a(X) + c(X)] g(X) + s(X). (11.6)

Из (11.6) следует, что e( X ) mod( g ( X ))  s ( X ) . Так как код Хэмминга исправляет


все однократные ошибки, то для построения таблицы синдромов (n, k)-кода Хэмминга в
качестве e(X) достаточно перебрать все одночлены Х0, X 1 ,..., Хn-1.
Знание синдрома не позволяет однозначно определить многочлен e(X). Так, например,
если e(X) делится без остатка на g(X), то этому случаю соответствует нулевой синдром и
ошибка не может быть распознана. В этом случае говорят о необнаружимой или остаточной
ошибке декодирования.

11.2 Пакеты ошибок

Характерной особенностью циклических кодов является способность к распознаванию


пакетов ошибок. Под пакетом ошибок понимается группирование ошибок в одной
ограниченной области кодового слова (рисунок 26). Пакет ошибок можно описать
многочленом вида
e( X )  X j B( X ) . (11.7)

Рисунок 26 – Вектор пакета ошибок длины 7.

Если длина пакета ошибок не превосходит величины r = n – k, то степень многочлена


ошибок меньше r. В этом случае e(X) не делится на g(X) без остатка и синдром принятого
слова всегда отличен от нулевого, следовательно, пакет ошибок длины равной или меньшей r
всегда распознается. Из теоремы 1 следует, что распознается также любой циклический сдвиг
многочлена В(Х) степени, меньшей r, т.е. и «концевой» пакет ошибок длины меньшей или
равной r (рисунок 27), всегда распознается.
Рисунок 27 – Вектор «концевого» пакета ошибок длины 7.

Теорема 2. Циклический (n , k)-код способен обнаруживать все пакеты ошибок (в


том числе концевые) длины r = n – k и меньше.
Теорема 3. Для циклического (n , k)-кода доля необнаружимых пакетов ошибок
 ( r 1)
длины l = r + 1 = n – k + 1 равна 2 .
Теорема 4. Для циклического (n , k)-кода доля необнаружимых пакетов ошибок
r
длины l > r + 1 = n – k + 1 равна 2 .

Пример: Распознавание ошибок циклическим (7,4)-кодом Хэмминга.

Рассмотрим циклический (7,4)-код Хэмминга из предыдущих примеров с r = n – k = 3.


Так как минимальное кодовое расстояние кода Хэмминга dmin = 3, он способен обнаруживать
все двойные ошибки или исправлять одиночные. Рассматриваемый (7,4)-код Хэмминга
является циклическим кодом и он способен также обнаруживать все пакеты длины r = 3. В
частности, любые три следующие друг за другом ошибки всегда обнаруживаются.
 ( 31)
Доля необнаружимых ошибок длины r + 1 = 4 равна 2  1 . При пакетах
4
3
ошибок с длиной большей 4, не распознается только 2  1 из них.
8
Замечание. На практике, как правило, используются циклические коды с довольно
большим числом проверочных разрядов, например, r = n – k = 16. Доля необнаружимых
пакетов ошибок такими кодами достаточна мала. Так, при r = 16, обнаруживается более
чем 99.9969 % пакетов длины 17 и 99.9984 % пакетов длины 18 и выше.

11.3 Декодер Меггитта

Процесс декодирования циклических кодов (как и вообще всех линейных блоковых


кодов) можно разделить на три этапа:
1. Вычисление синдрома;
2. Определение ошибочных компонент принятого слова;
3. Исправление ошибок или выдача сигнала о наличии неисправимых ошибок.

Оценивая сложность обработки принятого сигнала, можно заметить, что


декодирование является «узким местом», в цепи передачи информации. Это связано с очень
большими аппаратными затратами на декодирование длинных кодов с высокой
корректирующей способностью.
Для циклических кодов процедура вычисления синдромов относительно проста. Из
рисунка 22 видно, что сложность вычисления синдрома мало зависит от длины кодового
слова и определяется, в основном, числом проверочных символов.
Определение ошибочных компонент по синдрому для всех линейных блоковых кодов
может быть сделано, в принципе, с помощью таблицы синдромов. Сложность реализации
такого метода декодирования возрастает экспоненциально с ростом длины кодовых слов и
корректирующей способности кода. Здесь на помощь приходят некоторые особые свойства
циклических кодов, которые позволяют существенно упростить процесс декодирования.
Булем рассматривать достаточно простую схему декодера двоичных циклических (n,
k)-кодов в общем виде. Будем исходить из модели передачи информации (рисунок 21). В этой
схеме принятый многочлен обозначается через r(X), кодовый многочлен -через v(X), а
многочлен ошибок - через e(X).
Первым шагом декодирования является вычисление синдрома. Здесь могут
возникнуть два случая:
1. Найденный синдром соответствует ошибке в (n – 1)-ой компоненте принятого слова,
то есть еn-1 = 1;
2. Синдром не соответствует такой ошибочной компоненте.

В последнем случае процесс, представленный на рисунке 21, может быть повторно


проделан для сдвинутого слова r (1) ( X ) . При этом, для вычисления s (1) ( X ) нет
необходимости проводить действия, аналогичные нахождению s(X). Согласно теореме 1,
синдром s(X) преобразуется в синдром s (1) ( X ) за один такт с помощью схемы,
представленной на рисунке 24.
После того, как определен s(X), мы можем последовательно получить синдромы
s (1) ( X ), s ( 2) ( X ),, s ( n1) ( X ) . Если синдромы не корректировать, то через n тактов мы
опять придем к первоначальному синдрому s( X )  s ( n) ( X ) многочлена r(X). Однако,
если в процессе работы получен синдром, соответствующий еn-1 = 1, то некоторая
компонента многочлена r(X) должна быть исправлена. В этом случае также корректируется
еще и некоторый синдром из последовательности s (1) ( X ), s ( 2) ( X ),, s ( n1) ( X ) .
Рассмотрим простейший случай. Пусть синдром s(X) сразу же соответствует (n – 1)-ой
ошибочной компоненте многочлена r(X), то есть еn-1 = 1. Тогда скорректированный
многочлен  (X ) будет иметь вид:

 ( X )  r0  r1 X    (rn1  en1 ) X n1 . (11.8)

Заметим, что на последующих шагах декодирования должен использоваться синдром


модифицированного многочлена из (11.8). Так как s(X) является синдромом r(X), a s ( X ) -
n1
синдром многочлена e( X )  X , синдром многочлена  (X ) равен

s1 ( X )  s( X )  s( X ) . (11.9)

Коррекцию синдрома удобнее производить только на следующем такте декодирования.


В этом случае, после циклического сдвига r(X) ошибочной нулевой компоненте будет
соответствовать многочлен e( X )  1, а синдром скорректированного многочлена  (1) ( X )
будет равен

(1)
s1 ( X )  s (1) ( X )  1 . (11.10)

Контроль ошибок производится по всем п компонентам принятого многочлена r(X) и


найденные ошибки исправляются. Если после п тактов контроля ошибок синдром отличен от
нулевого, то выдается сигнал о наличии неисправляемых ошибок. Такой алгоритм может быть,
в принципе, использован для декодирования всех циклических (n, k)-кодов. Его реализация,
декодер Меггитта, в общем виде представлена на рисунке 28.

Рисунок 28 – Декодер Меггитта для двоичного циклического (n, k)-кода


с порождающим многочленом g(X).

Перед началом работы оба регистра декодера Меггитта обнуляются. На первых п тактах
декодирования принятое слово загружается в верхний регистр, а в нижнем регистре
вычисляется синдром многочлена r(X). После этого вход декодера отключается и в течении
последующих п тактов проводится покомпонентное обнаружение и исправление ошибок. В
каждом такте с помощью логической схемы распознавания ошибок проверяется соответствие
текущего синдрома ошибочной (n – 1)-ой компоненте сдвинутого многочлена r(X). При
обнаружении такого соответствия на следующем такте декодирования, ошибка исправляется,
а синдром модифицируется.

Пример: Декодер Меггитта циклического (7,4)-кода Хэмминга.

В качестве примера рассмотрим уже знакомый нам циклический (7,4)-кода Хэмминга с


порождающим многочленом g ( X )  1  X  X 3 . Напомним, что код Хэмминга позволяет
исправлять все однократные ошибки. Более того, так как (7,4)-код Хэмминга является
совершенным, таблица синдромов однократных ошибок (см. таблица 9) содержит все
возможные синдромы от «001» до «111» (синдром 000 интерпретируется как отсутствие
ошибок). Для построения декодера Меггитта нам достаточно знать синдром одиночной
ошибки в компоненте r6 принятого слова. Из таблицы 9 следует, что синдром одиночной
ошибки r6 = 1 равен «101» или при полиномиальном представлении 1  X . Схема декодера
3
Меггитта циклического (7,4)-кода Хэмминга приведена на рисунке 29. Блок распознавания
ошибок может быть построен при помощи логической схемы совпадения «И» (&) с инверсией
входа S1 (в соответствии с синдромом «101» для r6 = 1).

Рисунок 29 – Декодер Меггитта циклического (7,4)-кода Хэмминга с порождающим


многочленом g ( X )  1  X  X 3 .

Рисунок 30 – Декодер Меггитта циклического (7,4)-кода Хэмминга с порождающим


многочленом g ( X )  1  X  X 3 и принятым вектором r (начальная фаза).

Рассмотрим процесс декодирования принятого слова с ошибочной компонентой r5. В


этом случае r = (011 1011). После первых семи тактов работы декодера слово r(X) полностью
занесено в буфферный регистр, а в нижнем регистре находится синдром s(X) для r(X)
(рисунок 30). В соответствии с таблицей 9 этот синдром равен «111».
На восьмом такте декодирования компонента r6 поступает в выходной регистр без
изменения (поскольку синдром был равен «111»), а новое значение синдрома равно «101», что
соответствует ошибке в компоненте r5 и на девятом такте эта ошибка корректируется, а
синдром обнуляется (рисунок 31). Таким образом, на тактах п = 10 ... 14 оставшиеся
компоненты принятого слова загружаются в выходной регистр без коррекции, так как синдром
сохраняет нулевое значение.
Рисунок 31 – Декодер Меггитта циклического (7,4)-кода Хэмминга с порождающим
многочленом g ( X )  1  X  X 3 и принятым вектором r (заключительная фаза).

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 12. Циклические коды Хемминга.

Циклические коды Хэмминга образует важное семейство циклических (n, k)-кодов.


Свойства кодов Хэмминга, как подмножества линейных кодов, были подробно рассмотрены в
лекции 7. Коды Хэмминга, имеющие циклическую структуру, обладают дополнительными,
весьма полезными свойствами.
При определении методов построения циклических кодов используются понятия
неприводимых и примитивных многочленов.
Определение 1. Многочлен р(х) степени т называется неприводимым в поле GF(2), если
он не делится ни на какой многочлен с коэффициентами из GF(2) степени меньшей
т, но большей 0.

Определение 2. Неприводимый многочлен р(х) степени т называется примитивным,


если наименьшая степень п, при которой многочлен X  1 делится на р(х) без
n

остатка, равна n  2  1 .
m

В таблице 10 приведены некоторые примитивные многочлены с коэффициентами из


GF(2).
Таблица 10 – Примитивные многочлены.

Замечание. Примитивные многочлены играют важную роль в технике, передачи


сообщений, например, примитивный многочлен степени т = 23 используется в устройствах
перемешивания символов в сетях ISDN и xDSL. Примитивные многочлены являются
также основой для построения порождающих многочленов псевдослучайных
последовательностей. С помощью таких псевдослучайных последовательностей
производится адресование сообщений в системах мобильной связи.
Основой для построения циклических кодов Хэмминга служит следующая теорема.
Теорема 1. Любой циклический код Хэмминга длины 2  1 с т > 3 может быть
m

построен с помощью некоторого примитивного многочлена степени т.

Имеется также обратная теорема. В ней утверждается, что любому примитивному


многочлену степени т соответствует некоторый циклический код Хэмминга длины 2  1 .
m

Пример: Циклический (15, 11)-код Хэмминга.

Для построения циклического (15,11)-кода Хэмминга используется многочлен степени


т = 4. Из таблицы 10 следует, что таким многочленом является многочлен
p( X )  1  X  X 4 и используя его в качестве порождающего, можно получить все кодовые
слова циклического (15,11)-кода Хэмминга.
С помощью порождающих многочленов g(X) можно строить порождающие и
проверочные матрицы, а также схемы декодеров любых циклических кодов Хэмминга.

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 13. Коды Боуза – Чоудхури - Хоквингема (БЧХ).

Данные коды являются разновидностью циклических кодов.


Рассмотрим один из способов нахождения образующего полинома для кодов БЧХ. Он
определяется по заданному кодовому расстоянию и длине кодовой комбинации. Длину
кодовой комбинации кодов БЧХ находим из выражения

n  2 m  1. (13.1)

где т – любое целое число. Таким образом, величина n может быть равна 3, 7, 15, 31, 63, 127,
255, 511, 1023 разрядам и т. д.
Количество проверочных разрядов кода

m(d  1)
r . (13.2)
2
Следовательно, число информационных разрядов

m(d  1)
k  2m  1  . (13.3)
2

Параметры кодов БЧХ (до n = 255), вычисленные по формулам (13.1) – (13.3),


приведены в таблице 11 с указанием кодового расстояния и числа информационных символов.
Образующий полином кода Боуза – Чоудхури – Хонвингема является наименьшим
общим кратным (НОК) так называемых минимальных полиномов mi (X ) , где
i  1,3,5,, d  2 порядок полинома

P( X )  HOK{m1 ( X ),, md 2 ( X )}. (13.4)


Таблица 11
Вычисленные значения минимальных полиномов для степени m  2  10 приведены в
таблице 12. Значения mi (X ) даны в таблице в восьмеричной системе счисления. Так, полином
19-го порядка для степени m = 10, записанный в таблице числом 2773, представляет
следующую двоичную последовательность:

2 7 7 3
010 111 111 01l

а многочлен этого полинома записывается как


X 10  X 8  X 7  X 6  X 5  X 4  X 3  X  1 .
Для нахождения образующего полинома кода длиной n  2  1 разрядов с кодовым
m

расстоянием d необходило выписать из таблицы все значения минимальных полиномов,


соответствующие заданному т, до порядка d – 2 включительно. Если данный порядок в
таблице отсутствует, следует взять ближайший меньший.

Пример. Необходимо построить код длиной n = 15 (m = 4) с d = 7. Следовательно,


образующий полином P( X )  m1 ( X )m3 ( X )m5 ( X ) .
По таблице 11 находим минимальные полиномы:
т1(Х) = 23 или 10011  X 4  X  1 ;
т3(Х) = 37 или 11111  X 4  X 3  X 2  X  1 ;
т5(Х) = 07 или 111  X 2  X  1 .
Таблица 12

Умножая полученные минимальные полиномы, определим образующий полином


заданного кода БЧХ: Р(Х) = 10100110111
Путем построения производящей матрицы можно убедиться в том, что полученный код
действительно имеет кодовое расстояние, равное семи.
Коды БЧХ обладают нечетными значениями минимального кодового расстояния dmin.
При желании кодовое расстояние можно увеличить на единицу, применив образующий
полином, равный произведению образующего полинома кода БЧХ на двучлен (X + 1). Так, в
рассмотренном коде с d = 7 минимальное кодовое расстояние можно повысить до восьми, если
использовать образующий полином

P( X )  ( X  1)( X 10  X 8  X 5  X 4  X 2  X  1;
P( X )  ( X 11  X 10  X 9  X 8  X 6  X 4  X 3  1,
т. е. P(1,0) = 111101011001 .
Такой способ увеличения минимального кодового расстояния применим к любым
систематическим кодам с нечетным минимальным кодовым расстоянием. Для этого в
циклических кодах изменяется образующий полином, а в других систематических кодах
вводится дополнительная проверка на четность, охватывающая все информационные разряды.
При рассмотрении кодов БЧХ отметим следующие закономерности Число кодов,
различающихся по своей корректирующей способности и имеющих общую длину кодовой
комбинации n  2  1, на две единицы меньше числа всех неприводимых многочленов, на
m

2 m1
которые разлагается двучлен X  1 . Например, определим количество циклических кодов
для n = 15. Так как полученный многочлен X  1 не является простейшим, то т = 4 есть
15

старшая степень неприводимого многочлена, на который раскладывается двучлен X  1 .


15

Теперь из приложения 2 необходимо выписать все неприводимые многочлены степени 4


и неприводимые многочлены тех степеней, показатели которых являются делителями числа 4,
т. е. 1 и 2. Таким образом, степень двучлена X  1 складывается из сумм степеней всех
15

неприводимых многочленов, число которых равно единице – для первой степени, единице –
для второй степени и трем – для четвертой степени. Выписав все эти многочлены, найдем
разложение двучлена
X 15  1  ( X  1)( X 2  X  1)( X 4  X  1)( X 4  X 3  1)
.
( X  X  X  X  1)
4 3 2

Как видно из разложения, количество неприводимых многочленов равно пяти, а


следовательно, число циклических кодов для n = 15 равно трем, что подтверждается таблицей
11.
Следующим важным свойством кода БЧХ является соотношение между максимальным
кодовым расстоянием и числом т:
d max  2 m1  1. (13.5)
41
Для предыдущего примера при n = 15 (m = 4) d max  2  1  7 , что действительно
подтверждается таблицей 11.
Кроме того, следует заметить, что число информационных разрядов, которое может быть
использовано при заданном числе т и при максимальном кодовом расстоянии, выражается как
(m + 1). В приводимом нами примере для d max  2 41  1  7 , k = 5.

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 14. Двоичный код Голлея. Код Абрамсона (CRC коды).

14.1 Двоичный код Голлея.

t
Используя равенство 1  n  C n2    C nt   C nl можно заметить, что
l 0
0
[C23  C23
1
 C23
2
 C23
3
]  212  2 . Возникает гипотеза о том, что 23-мерное двоичное
23
пространство можно плотно упаковать сферами радиуса 3. Это равенство представляет собой
необходимое (но недостаточное) условие существования совершенного (23,12)-кода,
исправляющего все тройные ошибки. Такой код действительно существует, его удалось
построить швейцарцу Голлею в 1949 году. В силу особенностей своей алгебраической
структуры, он является весьма притягательным для математиков различным направлений.
В основе конструкции кода лежит разложение
X 23  1  (1  X ) g1 ( X )  g 2 ( X ) . (14.1)

в котором g1(X) и g2(X) представляют собой порождающие многочлены кода Голлея,


причем,
g1 ( X )  1  X 2  X 4  X 5  X 6  X 10  X 11 . (14.2)
g 2 ( X )  1  X  X 5  X 6  X 7  X 9  X 11 . (14.3)
Коды Голлея можно декодировать с помощью декодера с вылавливанием ошибок. Этот
метод использует вычисление синдрома и может быть реализован на регистрах сдвига с
помощью схем, аналогичных рисунку 30. В [7] описана модификация декодера кода Голлея с
вылавливанием ошибок, позволяющая корректировать исправляемые, но не вылавливаемые
ошибки, предложенная Т. Касами.

14.2 Код Абрамсона (CRC коды).

Примером использования семейства циклических кодов является контроль ошибок с


помощью циклического избыточного кода, то есть CRC кода (Cyclic redundancy check),
называемого также кодом Абрамсона. При передаче данных в пакетных режимах, эти коды
используются для определения целостности блоков данных (FCS -Frame Checking
Sequence). Примером систем с FCS являются стандарты передачи данных Х.25 (HDSL), ISDN,
DECT и LAN. CRC коды представляют собой расширения циклических кодов Хэмминга.
Пусть р(х) - примитивный многочлен степени т, тогда порождающий многочлен CRC кода
g(X) можно записать в виде произведения

g ( X )  (1  X ) p( X ) . (14.4)
С помощью порождающего многочлена g(X) может быть построен циклический CRC
(n, k)-код с параметрами n  2 m  1, k  2 m  m  2 , имеющий т + 1 проверочных
символов и dmjn = 4.
CRC код отличается от расширения кода Хэмминга. Расширенный (2 m , 2 m  m  1) -
код получается из циклического (2  1, 2  m  1) -кода Хэмминга присоединением
m m

проверки на четность по всем символам и имеет минимальное расстояние, также равное 4.


Этот код не является циклическим. Хотя в CRC (2  1, 2  m  2) -коде также добавлена
m m

дополнительная проверка на четность, длина кода не увеличилась, так как при этом был
исключен один информационный символ. В результате CRC код представляет собой
совокупность кодовых векторов четного веса первоначального кода Хэмминга и по-прежнему
остается циклическим.
CRC-коды обладают пятью важными свойствами:
1. Все ошибки кратности 3 или меньше обнаруживаются;
2. Все ошибки нечетной кратности обнаруживаются;
3. Все пакеты ошибок длины l= т + 1 или меньше обнаруживаются;
m
4. Доля необнаружимых пакетов ошибок длины l= т + 2 составляет 2 ;
 ( m 1)
5. Доля необнаружимых пакетов ошибок длины l  m  3 составляет 2 .

Таблица 13 – Порождающие многочлены CRC кодов.

Все перечисленные свойства позволяют эффективно использовать CRC код при


передачи данных с переспросами (протокол ARQ).
На практике часто используются укороченные CRC коды. В таблице 13 приведены
наиболее употребляемые порождающие многочлены CRC кодов, а также указаны области их
применения.

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.

Лекция 15. Код Файера и укороченные коды.

15.1 Код Файера

Во всех рассмотренных нами циклических кодах длина кодовых слов однозначно


определяется степенью выбранного примитивного многочлена. Это обстоятельство
накладывает большие ограничения на число информационных разрядов в кодируемом блоке.
Между тем, в используемых в настоящее время стандартах передачи данных, длина
информационных блоков может колебаться в довольно широких пределах. В соответствии с
этим, кодирование также должно быть достаточно гибким.
Здесь на помощь приходят укороченные коды, построенные на основе циклических
кодов. Пусть, например, нами выбран многочлен с т = 5. На базе этого многочлена можно
построить циклический (31,26)-код Хэмминга. Рассмотрим подмножество слов этого кода,
содержащее все кодовые слова с тремя нулями в старших разрядах. Для определенности, здесь
и в дальнейшем будем считать, что кодовый вектор поступает в канал начиная со старших
разрядов, которые соответствуют старшим степеням многочлена.
Это подмножество образует укороченный (28,23)-код Хэмминга. Укороченный код
сохраняет все свойства циклического (31,26)-кода, так как в процессе декодирования мы
можем дописать к кодовым словам три недостающих нуля и рассматривать их как векторы
основного (31,26)-кода Хэмминга.
В качестве следующего примера можно привести код Файера, используемый в
мобильной связи. Этот код является сильным укорочением кода Хэмминга. Соответствующий
код Хэмминга имеет непомерно большую длину, равную 3014633 и содержит 40 проверочных
символов. На его базе строится (224,184)-код Файера, способный обнаруживать все пакеты
ошибок длиной до 40 символов, или исправлять все пакеты длиной до 12 символов. Этот код
может эффективно бороться с замираниями и используется в мобильной связи GSM для
защиты канала управляющей информации SACCH (Slow Associated Control Channel). Из
примера кода Файера видно, что использование при кодировании простого дополнения
информационного слова нулями практически неприемлемо, поэтому должен применяться
более эффективный метод кодирования укороченных кодов.

15.2 Укороченные коды

Пример: Укороченный (6,3)-код.

Рассмотрим метод кодирования и декодирования кода, полученного укорочением (7,4)-


кода Хэмминга. Выберем из множества кодовых слов базового кода все кодовые слова,
начинающиеся с символа «0». Выбрасываемые при укорочении символы полагаются равными
нулю и, поэтому, не передаются. Таким образом, получаем укороченный (6,3)-код. В левой
части таблицы 6 (см. лекцию 8) приведены кодовые слова (7,4)-кода Хэмминга, у которых
старший разряд равен нулю. Выбрасывая из этих слов лишние нули, получаем кодовые слова
укороченного (6,3)-кода (см. таблица 14).
Замечание. Построенный (6,3)-код не является циклическим, так как циклический
сдвиг кодовых слов не во всех случаях является кодовым словом, однако, его конструкция
позволяет использовать свойства циклических кодов при декодировании.
Таблица 14 – (6,3)-код.

Проверим таблицу 14 с помощью алгоритма деления Евклида. Рассмотрим


информационный вектор u = (101), многочлен которого u( X )  1  X 2 . Умножая u(Х) на X3
и используя алгоритм деления Евклида (см. таблица 15), получим многочлен остатка от
деления X3 u(Х) на g ( X )  1  X  X 3 , равный b(Х) = X2.

Таблица 15 – Определение проверочных символов (алгоритм деления Евклида) для


u( X )  1  X 2 и g ( X )  1  X  X 3 .

Таким образом, многочлен систематического (6,3)-кода равен

v( X )  X 3u( X )  b( X )  X 3 [ X 2  1]  X 2  X 5  X 3  X 2 , (15.1)

что соответствует кодовому вектору v = (001 101) из таблицы 14.


За основу кодера систематического (6,3)-кода может быть принята схема кодирования,
приведенная на рисунке 18. Так как (6,3)-код образуется укорочением (7,4)-кода Хэмминга,
схема рисунка 18 существенно упрощается: из регистров удаляются разряды u3 и v6 и
кодирование заканчивается уже после третьего такта.
Для практической реализации декодера укороченного кода имеются три альтернативы:
1. Для декодирования (6,3)-кода можно, в принципе, использовать декодер базового (7,4)-
кода Хэмминга (см. рисунок 29). В этом случае, к принятому слову приписывается
недостающий ноль и процесс декодирования занимает столько же тактов, сколько
требуется для декодера базового кода.
Для декодирования кодов с l-кратным укорочением необходимо затратить l
дополнительных тактов. В случае, когда l велико (как, например, в случае кода Файера)
такой метод декодирования неприемлем.
2. При коррекции ошибок и модификации синдрома принимаются во внимание
особенности конструкции укороченного кода. Схема декодера (6,3)-кода приведена на
рисунке 32.

Рисунок 32 – Декодер Меггитта укороченного (6,3)-кода Хэмминга.

Здесь вектору ошибки е = (000 001) в компоненте r5, согласно табл. 9, соответствует
синдром s = (1,1,1), поэтому, схема распознавания ошибок настраивается на этот
синдром (а не на синдром (101) в случае (7,4)-кода). Рассмотрим теперь алгоритм
модификации синдрома. В нижнем регистре вычисляются синдромы всех сдвигов
ошибки в слове базового (7,4)-кода (эта схема «не знает об укорочении») и следующим
за синдромом «111» будет синдром «101». В соответствии с его числовым вектором и
производится модификация текущего синдрома на рисунке 32.

Замечание. В силу линейности кодов и схем их реализации, рассмотренный метод


декодирования может быть применен для любых укорочений кода Хэмминга.

Такой метод декодирования, в ряде случаев, приводит к достаточно простой схеме


построения декодеров и, поэтому, весьма интересен для практики. В качестве примера
в [4] приведена схема декодирования укороченного (272,260)-кода.
3. Этот вариант построения декодера Меггита особенно интересен для практики, так как
используемые в нем алгоритмы распознавания ошибок и коррекции синдрома не
зависят от длины укорочения l и строятся с наименьшими затратами. Длина укорочения
учитывается путем умножения принятого слова на некоторый многочлен, зависящий от
l.

На примере укороченного (6,3)-кода мы покажем, как могла бы выглядеть оптимальная


процедура распознавания ошибки в компоненте r5 и коррекции соответствующего синдрома.
Как уже отмечалось ранее, в нижнем регистре рисунка 32 производится вычисление синдромов
циклических сдвигов вектора ошибки для неукороченного (7,4)-кода Хэмминга, поэтому
таблицу 9 можно использовать и для (6,3)-кода с учетом того, что первым вычисляется
синдром для е5 = (000 0010). На последующих тактах в нижнем регистре вычисляются
синдромы для

e6  e5(1)  (000 0001), e0  e5( 2)  (100 0000),


e1  e5(3)  (010 0000), e2  e5( 4)  (001 0000),
и т. д. Наиболее благоприятным с точки зрения затрат на модификацию в схеме рисунка 31
является синдром s = (0,0,1). Из таблицы 9 следует, что этот синдром соответствует вектору
ошибки
e2  e5( 4)  (001 0000) ,

т.е. ошибке в компоненте r5. Таким образом, для реализации оптимальной процедуры
исправления ошибки и коррекции синдрома в схеме рисунка 31 необходимо предварительно
произвести четыре циклических сдвига верхнего и нижнего регистров при этом верхний
регистр должен быть модифицирован: в него должны быть добавлен дополнительный разряд
r6 и цепь обратной связи.
На примере укороченного (6,3)-кода может показаться, что эти затраты не слишком
велики, однако, для используемого в сети GSM кода Файера миллион и более сдвигов плюс
затраты на модификацию регистра оказываются технически неприемлемыми. Ниже мы
теоретически покажем, что дополнительные затраты такого рода отнюдь не являются
необходимыми. После этого мы рассмотрим построение схемы оптимального декодера
укороченного (6,3)-кода.
Будем искать схему построения декодера укороченного кода, в которой технические
затраты на исправление ошибки и коррекцию синдрома были бы минимальными. Так как
базовый (n, k)-код является циклическим, эта схема должна обнаруживать и исправлять
ошибку в младшем разряде кодового слова укороченного (n – l, k – l)-кода. Многочлен такой
ошибки имеет вид

e( X )  X n1l . (15.2)
где l - длина укорочения.
Постараемся найти линейную операцию, отображающую е(Х) в некоторый
вспомогательный многочлен е' (Х), синдром которого при e( X )  X n1l был бы равен

s( X )  X n k 1 . (15.3)
Пусть такая операция отображает многочлен e( X )  X n1l в

e( X )  X nk 1 . (15.4)


Так как степень многочлена е' (Х) меньше степени g(X), равенство (15.3) остается
справедливым. Заметим, что e( X )  X n k l можно получить из многочлена e( X )  X n1l
i-кратным циклическим сдвигом, то есть

e( X )  e (i ) ( X ) , (15.5)
где
i  nk l . (15.6)

При этом после l + 1 первых сдвигов e( X )  X 0 , а после оставшихся n – k – 1


сдвигов выполняются равенства (15.4) и (15.3). Постараемся заменить операцию i-кратного
циклического сдвига линейной операцией умножения многочленов.
Из соотношения X i v( X )  q( X )  ( X n  1)  v (i ) ( X ) (см. (8.9)) следует, что в
нашем случае справедливо равенство
X i e( X ) q( X )( X n  1)  e (i ) ( X ) , (15.7)

где q(X) - некоторый многочлен, конкретное значение которого не представляет для нас
интереса. Согласно теореме 4, (см. лекция 8) порождающий многочлен g(X) делит ( X n  1)
без остатка, поэтому можно записать

( X n  1)  a1 ( X ) g ( X ) . (15.8)
Применяя алгоритм деления Евклида, сомножитель X n можно представить в виде

X i  a2 ( X ) g ( X )  d ( X ) , (15.9)
где deg[ d ( X )]  deg[ g ( X )] .
Подставляя (15.8) и (15.9) в (15.7), имеем

[a2 ( X ) g ( X )  d ( X )]e( X )  q( X )a1 ( X ) g ( X )  e (i ) ( X ) . (15.10)


Из (15.10) следует

e (i ) ( X )  [q( X )a1 ( X )  a2 ( X )e( X )]g ( X )  d ( X )e( X ) .


(15.11)
Равенство (15.11), на первый взгляд, может показаться довольно сложным, однако оно
сильно упрощается при вычислении синдромов обоих частей равенства. Следует заметить, что
выражение в квадратных скобках умножено на g(X) и, следовательно, это произведение не
оказывает влияние на синдром в правой части (15.11). Таким образом, мы имеем

[d ( X )e( X )] mod g ( X )  [e (i ) ( X )] mod g ( X )  s( X ) . (15.12)


Обобщая все вышесказанное, можно сделать следующие выводы:
1. Ошибка обнаруживается при ее сдвиге в старший разряд кодового слова укороченного
(n – l, k – l)-кода и исправляется на следующем такте работы декодера;
2. В схеме декодера вычисляется синдром вспомогательного многочлена
e( X )  e( X )d ( X ) . В этом случае ошибке e( X )  X n1l соответствует синдром,
s( X )  X n k 1 который также корректируется на следующем такте;
i
3. Многочлен d(X) является остатком от деления X на g(X), где i определяется длиной
укорочения l и степенью производящего многочлена g(X);
4. Так как степень многочлена d(X) всегда меньше степени g(X), схема умножения е(Х)
на d(X) может быть реализована с помощью простых сдвигов.

Пример: Укороченный (6,3)-код.


Рассмотрим построение оптимального, с точки зрения затрат, декодера укороченного
(6,3)-кода. Напомним, что этот код образуется укорочением базового циклического (7,4)-кода
Хэмминга с порождающим многочленом g ( X )  1  X  X 3 . В этом случае многочлену
ошибки е(Х) = X5 должен соответствовать синдром вспомогательного многочлена
s( X )  X 2 . Так как X2 является четырехкратным циклическим сдвигом многочлена е(Х) =
X5, множитель d(X) определяется как

d ( X )  [ X 4 ] mod ( X 3  X  1)  X 2  X , (15.13)
и вспомогательный многочлен е'(Х) равен

d ( X )e( X )  X 2 e( X )  Xe( X ) . (15.14)


Умножение на d(X) в (15.14) соответствует линейной комбинации однократного и
двукратного сдвигов вектора ошибки.
Таким образом, в схеме рисунка 33 вектор ошибки через сумматоры одновременно
подается на разряды s1 и s2 регистра вычисления синдрома. На рисунке 33 приведен пример
вычисления синдрома для е = (0,0,0,0,0,1), то есть синдрома ошибки, находящейся в старшем
разряде укороченного (6,3)-кода. Как и следовало ожидать, после шестого такта мы получаем
синдром s' = (0,0,1).

Рисунок 33 – Модифицированный алгоритм вычисления синдрома с предварительным


умножением вектора ошибки на d(X) = X2 + X.

Схема исправления однократной ошибки и коррекции синдрома с использованием


вспомогательного многочлена е'(Х) приведена на рисунке 34. По вычисленному синдрому s'
= (0,0,1) происходит обнаружение и исправление ошибки. Одновременно синдром
корректируется и, тем самым, устраняется влияние ошибки на последующие шаги
декодирования.
Проверим работу декодера на трех примерах. Пусть кодовое слово r1 = (0,1,1,0,1,0)
(см. таблицу 14) принято без ошибок. Последовательность состояний регистра синдрома
приведена в таблице 16. После окончания загрузки слова r1 в буфферный регистр, в нижнем
регистре также заканчивается вычисление его синдрома. В данном случае синдром
оказывается нулевым.
Рисунок 34 – Декодер Меггитта для укороченного (7,4)-кода Хэмминга
с предварительным умножением на d(X) = X2 + X.

Проверим работу декодера на трех примерах. Пусть кодовое слово r1 = (0,1,1,0,1,0)


(см. таблицу 14) принято без ошибок. Последовательность состояний регистра синдрома
приведена в таблице 16. После окончания загрузки слова r1 в буфферный регистр, в нижнем
регистре также заканчивается вычисление его синдрома. В данном случае синдром
оказывается нулевым.

Таблица 16 – Вычисление синдрома неискаженного принятого


слова r1 = (0,1,1,0,1,0)

Теперь в старший разряд слова r1 внесем одну ошибку и получим вектор r2 =


(0,1,1,0,1,1). После загрузки слова r2 в буфферный регистр, его синдром равен s2  (0,0,1)
(см. таблицу 17). Согласно алгоритму декодирования, такой синдром указывает на ошибку в
старшем разряде слова r2.
Таблица 17 – Вычисление синдрома неискаженного принятого
слова r1 = (0,1,1,0,1,1)

И, наконец, рассмотрим декодирование принятого слова с ошибкой в третьей


компоненте: r3 = (0,1,0,0,1,0). Синдром принятого слова r3 равен s3  (1, 0,1) (см. таблицу
18).
Это означает, что в принятом слове имеется ошибка, но она произошла не в старшем
разряде, поэтому продолжим процедуру вычисления синдромов теперь уже для сдвигов слова
r3 (см. таблицу 19).

Таблица 18 – Вычисление синдрома искаженного принятого слова r3 = (0,1,0,0,1,0).

Эта процедура продолжается до тех пор, пока ошибочная компонента r3 не займет место
старшего разряда. После этого синдром принимает значение s3  (0, 0,1) и происходит
исправление ошибки и коррекция синдрома. Далее декодирование происходит уже с нулевым
синдромом, то есть после исправления ошибки в третьей компоненте мы получили слово (6,3)-
кода.
Таблица 19 – Декодирование искаженного принятого слова r3 = (0,1,0,0,1,0)
после вычисления синдрома

Литература
1. Б.Скляр. Цифровая связь. Теоретические основы и практическое применение. Изд. 2-е,
испр.: Пер. с англ. – М.: Изд. дом «Вильямс», 2009. – 1104 с.
2. Березюк Н.Т., Андрущенко А.Г. и др. Кодирование информации (двоичные коды). Изд-
во «Вища школа» Харьков, 2009. – 252 с.
3. Цымбал В.П. Теория информации и кодирования. – Изд-во «Вища школа» Киев, 2010.
– 232 с.
4. Вернер М. Основы кодирования. - Изд-во «Техносфера» Москва, 2009. – 288 с.
5. Ризаев И.С. Теория информации и кодирования. – Учебное пособие. Изд-во КГТУ
Казань, 2012. – 98 с.
6. Лидовский В.В. Теория информации. - Учебное пособие. Изд-во РГТУ Москва, 2012. –
104 с.
План лабораторных занятий

1. Неравномерные коды Шеннона – Фано и Хаффмана


2. Арифметическое кодирование и декодирование
3. Кодирование и декодирование Лемпеля - Зива.
4. Код Хемминга.
5. Корреляционный код. Инверсный код.
6. Код Рида – Маллера.
7. Коды с постоянным весом.
8. Коды с постоянным весом.
9. Систематический циклический код.
10. Циклические коды Хемминга.
11. Циклические коды Хемминга.
12. Код Боуза Чоудхури-Хоквингема (БЧХ).
13. Двоичный код Голлея. Код Абрамсона (CRC коды).
14. Код Файера (укороченные коды).
15. Код Файера (укороченные коды).

ИТОГО: 30 ч.

Методические рекомендации и указания по выполнению лабораторных работ

Новые материалы, необходимые для изучения и освоения тем дисциплины, можно


получить из научной литературы и Интернета.
Для выполнения лабораторных работ студент должен изучить теоретический материал.
Отчеты по лабораторным работам должны оформляться согласно требованиям.

Лабораторная работа 1 Неравномерные коды Шеннона – Фано и Хаффмана

При построении оптимальных кодов наибольшее распространение нашли методики


Шеннона – Фано и Хаффмана.
Согласно методике Шеннона – Фано построение оптимального кода ансамбля из
сообщений сводится к следующему:
1-й шаг. Множество из сообщений располагается в порядке убывания вероятностей.
2-й шаг. Первоначальный ансамбль кодируемых сигналов разбивается на две группы
таким образом, чтобы суммарные вероятности сообщений обеих групп были по возможности
равны. Если равной вероятности в подгруппах нельзя достичь, то их делят тик, чтобы в верхней
части (верхней подгруппе) оставались символы, суммарная вероятность которых меньше
суммарной вероятности символов в нижней части (в нижней подгруппе).
3-й шаг. Первой группе присваивается символ 0, второй группе – символ 1.
4-й шаг. Каждую из образованных подгрупп делят на две части таким образом, чтобы
суммарные вероятности вновь образованных подгрупп были по возможности равны.
5-й шаг. Первым группам каждой из подгрупп вновь присваивается 0, а вторым – 1.
Таким образом, мы получаем вторые цифры кода. Затем каждая из четырех групп вновь
делится на равные (с точки зрения суммарной вероятности) части до тех пор, пока в каждой из
подгрупп не останется по одной букве.

Кодирование Хаффмана.
Кодирование Хаффмана производится за три шага. Мы наглядно поясним этот процесс
на маленьком примере.
1. Упорядочение. Расположить знаки в порядке убывания их вероятностей.
2. Редукция. Объединить два знака с наименьшими вероятностями в один составной знак.
Переупорядочить список знаков в соответствии с шагом 1. Продолжать этот процесс до
тех пор, пока все знаки не будут объединены.
3. Кодирование. Начать с последнего объединения. Приписать первой компоненте
составного знака символ «О», а второй - символ «1». Продолжать этот процесс до тех
пор, пока все простые знаки не будут закодированы.
В случае, когда несколько знаков имеют одинаковые вероятности, объединяются те два
из них, которые до этого имели наименьшее число объединений. Этим достигается
выравнивание длин кодовых слов, что облегчает передачу информации.

Пример 1. Построить оптимальный код сообщения, состоящего из 8 равновероятных


букв.
Решение. Так как вероятности данного ансамбля сообщений равны
3
p1  p2    p8  2 и порядок их размещения не играет роли, то располагаем сообщения
в порядке возрастания порядковых номеров. Затем разбиваем данное множество сообщений на
две равновероятные группы. Первой группе в качестве первого символа кодовых слов
присваиваем. 0, второй группе – 1. В колонке «кодовые слова» записываем 4 нуля и 4 единицы.
После этого согласно методике Шеннона–Фано, разбиваем каждую из подгрупп еще на две
равновероятные подгруппы. Затем каждой первой подгруппе в качестве второго символа
присваиваем 0, а второй –1 и записываем в колонку «кодовые слова». Далее каждую из четырех,
подгрупп разбиваем на две равновероятные части и первой из них присваиваем 0, а второй –1,
таким образом, в колонке «кодовые слова» появятся значения третьего символа кодовых слов.
Для исходного алфавита оптимальный код будет иметь вид: A1 = 000; A2 = 001; A3 =
010; A4 = 011; A5 = 100; A6 = 101; A7 = 110; A8 = 111.

Проверка.
H  log2 8  3 бит/символ,
1
Lcp   pi li   8  3  3 ,
i 8
Lcp = H – код оптимальный.
Примечание. Для ансамблей равновероятных сообщений оптимальным всегда будет
равномерный код.

Пример 2. Построить оптимальный код сообщения, в котором вероятности появления


букв первичного алфавита, состоящего из 8 символов, являются целой отрицательной
степенью двух, a  pi  1 .
i
Решение. Построение оптимального кода ведется по методике Шеннона–Фано.
Результат построения отражен в таблице:
Проверка.
N
L   pi li  2  0.5  2  0.375  4  0.25  2.75 ;
i 1
N
H    pi log 2 pi  2  0.85 log 0.85  2  0.125 log 0.125  4  0.0625 log 0.0625 
i 1
 1  2  0.375  4  0.25  2.75 бит / символ

Примечание. Кодовые слова одинаковой вероятности появления имеют равную длину.

Пример 3. Построить ОНК для передачи сообщений, в которых вероятности появления


букв первичного алфавита равны: A1 = 0.5; A2 = 0.25; A3 = 0.098; A4 = 0.052; A5 = 0.04; A6 =
0.03; A7 = 0.019; A8 = 0.011. Определить коэффициент статистического сжатия и коэффициент
относительной эффективности.
Решение. Построение ведется по методике Шеннона–Фано. Результаты построения
отражены в таблице:

8
H    pi log 2 pi   (0.5  log 0.5    0.011  log 0.011)  0.5  0.5  0.3284 
i 1
 0.2217  0.1875  0.1517  0.1086  0.0715  2.0676 бит / символ
H log 8 3
K c.c  max  8 2   1.45 .
lcp 2.216
 pi li
i 1
H 2.0676
K c.c    0.93 .
lcp 1.45
Пример 4
Кодирование Хаффмана наглядно показано на примере источника, заданного таблицей.
Вероятности и энтропия двух символов.

Решение. Немного упростим кодирование, отказавшись от наглядных


переупорядочений знаков на втором шаге, т.к. в таком маленьком примере это можно сделать
«в уме». В соответствии с первым шагом, расположим все знаки в порядке убывания их
вероятностей (рисунок 1).
На втором шаге объединим символы «а» и «с», обладающие наименьшими
вероятностями, в составной символ «ас». Далее объединим «е» с «ас» в составной символ «еас»
с вероятностью 0.25. Теперь наименьшими вероятностями уже обладают символы «f» и «b».
Объединив их, получим символ «fb». Следующая редукция дает составной символ «fbeac» с
вероятностью 0,6. И, наконец, объединив все символы, получим составной символ «dfbeac»,
вероятность которого равна 1.

Рисунок 1 – Кодирование Хаффмана п = 4.

На третьем шаге будем идти справа налево, приписывая верхним компонентам


объединений символ «0», а нижним «1». Полученные кодовые слова всех простых знаков с их
длинами приведены в следующей таблице.

Кодирование кодом Хаффмана к рисунку 1.


Данный код обладает минимальной средней длиной кодового слова.
Средняя длина кодового слова определяется длинами всех слов ni, «взвешенными» с
соответствующими вероятностями pi;
N
n   pi ni . (1)
i
В рассмотренном выше примере средняя длина кодового слова n  2.3 бит близка к
энтропии Н(Х) = 2.25 бит. Важнейшей величиной, называемой эффективностью кода или
фактором сжатия, является отношение средней длины к энтропии. В нашем примере
эффективность кода равна  = 0.976.
Эффективность кода или фактор сжатия
H ( x)
 . (2)
n
Реализация декодера кода Хаффмана следует непосредственно из рисунка 1. На рисунке
2 представлено дерево, называемое кодовым деревом декодера.
Декодирование каждого нового слова начинается с исходного узла (корня) кодового
дерева. Если мы принимаем «0», то идем по ребру, соответствующему нулю (по верхнему
ребру). В нашем примере при этом мы достигаем оконечного узла d. Следовательно, был
передан символ d и мы начинаем декодирование нового символа с, корня.

Рисунок 2 – Кодовая конструкция для D = 2 и п = 4.

Если мы принимаем «1», то идем по нижнему ребру и попадаем в узел, из которого


выходят два ребра. Следующий принятый бит указывает, какое из этих двух ребер нужно
выбрать. Мы продолжаем эту процедуру до тех нор, пока не достигнем оконечного узла. В
этом случае мы принимаем решение о переданном символе и опять переходим к корню
кодового дерева.

Лабораторная работа 2 Арифметическое кодирование и декодирование


При арифметическом кодировании мы исходим из того факта, что при
нормализованном распределении сумма вероятностей символов (и соответствующих им
относительных частот) источника всегда равна единице. Если относительные частоты
символов неизвестны передатчику и приемнику:
 они могут определяться, например, путем текущих статистических изменений
передаваемой информации в фиксированные моменты времени;
 приемник и передатчик совместно, исходя из относительных частот, устанавливают
жесткие правила кодирования.

Особенностью арифметического кодирования является то, что для отображения


последовательности символов в потоки натуральных чисел на интервале [0,1] используются
относительные частоты.
Результатом такого отображения является сжатие символов (посимвольное сжатие) в
соответствии с их вероятностями.

Пример. Рассмотрим арифметическое кодирование последовательности букв


«GELEEESSER». Относительные частоты букв в этом потоке приведены в таблице1.

Таблица 1 – Буквы и их относительные частоты.

Процедура кодирования представлена на рисунке 1.


Первой букве «G», в соответствии с ее относительной частотой, соответствует интервал
[0.7, 0.8[. Согласно алгоритму, каждая цепочка букв, начинающихся с G, всегда будет
отображаться в число, принадлежащее этому интервалу. Таким образом, в рассматриваемом
примере первая десятичная цифра после запятой уже определена.
Рисунок 1 – Арифметическое кодирование.

Кодирование последующих букв производится аналогично с тем важным отличием, что


теперь делению каждый раз будет подвергаться интервал, выбранный на предыдущем шаге.
Из рисунке 1 следует, что букве «Е» на втором шаге соответствует интервал [0.7, 0.75[.
Таблица 3, в которой алгоритм кодирования прослежен но шагам, показывает, что
последовательность «GELEEESER» отображается в число 740387 (0 и запятая не нуждаются в
отображении). Отметим, что:
1. Часто встречающимся буквам ставятся в соответствие большие интервалы. На их
отображение затрачивается меньше десятичных цифр, чем на отображение редко
встречающихся букв.
2. Длинные сообщения отображаются в «длинные» числа. Представление этих чисел в
двоичной форме, необходимое для передачи сообщений, приводит к появлению
кодовых слов большой длины.
Практическая реализация скользящие алгоритма арифметического кодирования
требует высокой точности, которая ограничивается длиной кодовых слов. Для сокращения
необходимой длины регистра, при реализации арифметического кодирования используется
целочисленная арифметика с выдачей уже готовых промежуточных результатов.
Алгоритм представлен в таблице 2.

Таблица 2 – Алгоритм арифметического кодирования.


Механизм его действия раскрывается с помощью таблицы 3.

Таблица 3 – Арифметическое кодирование фразы «GELEEESSER».

В нашем примере для реализации кодирования достаточно регистра для хранения шести
текущих десятичных цифр.
В соответствии с таблицей 2, на первом шаге происходит инициализация переменных
LO и HI. Для первой кодируемой буквы «G» ширина интервала равна В = l'000'000.
Нижняя и верхняя границы равны соответственно LO = 0 + l'000'000 x 0.7 = 700'000 и HI
= 0+ l'000'000 x 0.8 – 1 = 799'999. Первая десятичная цифра уже определена и равна 7, а
содержимое регистров LO и HI сдвигается на одну позицию влево. Заметим, что в регистре
LO освободившееся место занимает 0, а в регистре HI - 9.
Для второй буквы «Е» ширина интервала равна В = l'000'000, поэтому, получаем LO
= 0 + l'000'000 = 000'000 и HI = 0 + l'000'000 x 0.5 – 1 = 499'999. Кодирование
последующих букв проводится аналогично. В завершении работы алгоритма выдается
некоторое число из последнего интервала. Для этого мы округляем верхнюю границу
интервала HI, отбрасывая младшие разряды до тех пор, пока это возможно. В результате
получаем число с минимальным количеством цифр, принадлежащее последнему интервалу.
Лабораторная работа 3 Кодирование и декодирование Лемпеля - Зива.

Алгоритм кодирования Лемпеля – Зива LZ77 основан на принципе динамических


словарей. Представим вкратце эту концепцию и наглядно поясним ее на простейших примерах.
В основе алгоритма лежат четыре основные идеи:
1. Каждая очередная закодированная последовательность символов добавляется к ранее
закодированным символам таким образом, что вместе с ними она образует разложение
всей переданной и принятой информации на несовпадающие между собой фразы
(Парсинг).
2. Такое разложение хранится в памяти и используется в дальнейшем в качестве словаря.
3. Кодирование осуществляется при помощи указателей на фразы из уже
сформированного словаря фраз.
4. Кодирование является динамической процедурой, ориентированной на блоки. Сам
процесс кодирования может быть дополнен скользящими окнами, содержащими
текущий словарь фраз и Look-ahead буфером.

Рисунок 1 – Скользящее окно алгоритма LZ77, соответствующее фразе FACH.

В процессе кодирования обрабатываемый текст отображается в последовательность


указателей или флагов. Структура закодированного текста показана на рисунке 2. В примере,
показанном на рисунке 1, цепочка букв «FACH» заменяется последовательностью [21,4,B].

Рисунок 2 – Структура указателей.

На рисунке 3 представлен некоторый частный случай и приведено его алгоритмическое


решение. На шестом шаге кодирования очередным является символ «Е», не содержащийся в
словаре фраз. В этом случае он кодируется посредством, так называемой, «нулевой фразы».
«Нулевая фраза» имеет вид [0, 0, символ] и при декодировании распознается по двум стоящим
рядом нулям.
Еще одним интересным случаем является повторение символов, так называемое Character
Rans. В этом случае, для замены символа используются уже два флага. Первый «0» служит
признаком появления некоторой особенности текста. Последующие «1» и символ указывают
на то, что символ повторяется. Во втором флаге указывается число повторений и
последующий символ.
Затраты на кодирование определяются длиной окна, содержащего словарь фраз p,
длиной Look ahead буфера  L , и затратами на двоичное представление указателя

Рисунок 3 – Пример кодирования по алгоритму LZ77 с нулевой фразой и


повторением символов.

K E  log 2  p  log 2  L  8 бит. (1)


Кодирование Лемпеля - Зива приводит к сжатию данных в том случае, если затраты на
кодирование, т.е. длина указателя в двоичном исчислении в среднем оказывается меньше, чем
при непосредственном кодировании, например, кодом ASCII, что соответствует 8 битам на
один символ.
В типичном случае  p = 212 = 4096 и  L = 24 = 16 и затраты на двоичное
представление указателя составляют 24 бита. Для фразы, состоящей из четырех букв, которая
уже содержится в словаре фраз, экономия, но сравнению с прямым кодированием кодом ASCII
(32 бита), составляет 25 %.
Для кодирования Лемпеля - Зива установлено, что:
• Часто появляющиеся цепочки символов кодируются очень эффективно;
• Редко появляющиеся символы и последовательности символов с течением времени
удаляются из словаря фраз;
• Повторяющиеся символы также кодируются эффективно;
• На кодирование нулевых фраз затрачивается относительно большое число бит;
• Методы теории информации позволяют доказать, что кодирование методом Лемпеля -
Зива асимптотически оптимально. Это означает, что для очень длинного текста
избыточность исчезает, то есть среднее число бит, необходимое для кодирования
одного символа, стремится к энтропии текста;
• Практически достижимая степень сжатия для длинных текстов составляет 50 –60%.

Лабораторная работа 4 Линейные блоковые коды. Код с одной проверкой на


четность.

Данный код независимо от длины кодовой комбинации содержит всего один


проверочный символ. Этот символ выбирается таким, чтобы его сумма по модулю два со всеми
информационными символами равнялась нулю.
Благодаря такому способу выбора проверочного символа кодовая комбинация содержит
четное число единиц. Например, простые комбинации 00101 и 10101 при кодировании их
кодом с одной проверкой на четность выглядят соответственно 001010 и 101011. Признаком
искажения кодовой комбинации является нечетность единиц в принятой комбинации. Данный
код позволяет только обнаруживать однократные ошибки и все ошибки нечетной кратности,
так как только в этих случаях количество единиц в комбинации станет нечетным.
r 1
Коэффициент избыточности равен R  , и данный код имеет d = 2.
n n
Распределение рабочих кодовых векторов по кодовым расстояниям для всех векторов
одинаково и записывается в следующем виде:

N p ( d )  C nd . i
(1)
где d i принимает значения 2, 4, 6,…, п, если п четно, и 2, 4, 6, ... , п – 1, если п нечетно.
Коэффициент ложных переходов
C nd i

K л (d i )  d . (2)
Cn
где d = 1, 2, 3, ..., п.
Вероятность неправильного приема кодовой комбинации определяется вероятностью
появления необнаруживаемых (четных) ошибок.
Если в комбинации искажаются два определенных символа, а остальные не искажаются,
n 2
вероятность такого события pэ (1  pэ )
2 2
. Но так как таких вариантов будет C n вероятность
двукратных ошибок P2  Cn2 pэ2 (1  pэ ) n2 . Вероятность четырехкратных ошибок
P4  Cn4 pэ4 (1  pэ ) n4 и т. д. Следовательно, суммарная вероятность появления
n
необнаруживаемых ошибок Pн.о  P2  P4     Cni pэi (1  pэ ) ni , i  2,4,, n ( n -
i2
четное число, ближайшее к п, и меньше его).
Так как с повышением кратности вероятность ошибок резко падает, можно написать
Pн.о.  Cn2 pэ2 (1  pэ ) n 2 . (3)
Пример. Найти характеристики двоичного кода с одной проверкой на четность для п =
6. Вероятность сбоя единичного символа рэ = 10-4 .
n 1
Решение. Число рабочих комбинаций N p  2  2  2 5  32 .
k

r 1
Избыточность кода R    0.167 . Распределение рабочих комбинаций по
n n
кодовым расстояниям N p (d ) и коэффициент ложных переходов, найдем по формулам (1) и
(2):
d 1 2 3 4 5 6
di 0 2 0 4 0 6
N p (d i ) – 15 – 15 – 1
N (d ) 6 15 20 15 6 1
K л (d ) 0 1 0 1 0 1.

Значения Кл (d) показывают, что обнаруживаются все ошибки нечетной кратности Кл


(d) = 0, а все ошибки четной кратности приводят к ложным переходам. Вероятность появления
8 8 4 7
необнаруженной ошибки Pн.о.  C6  10 (1  10 )  1.5  10
2
.

Лабораторная работа 5 Код Хемминга.

Пример 1. Требуется передать 16 сообщений. Построить систематический код,


исправляющий одну ошибку.

Решение. 16  2  nи  4 . Для обнаружения и исправления одиночной ошибки


соотношение между числом информационных разрядов nu числом корректирующих разрядов


nk должно удовлетворять следующим условиям
2r  n  1, (1)
n
2
2k  , (2)
n 1
2n
где n  k  r . Согласно (2) имеем 16   n  7 . Строим порождающую матрицу
n 1

1 0 0 0 0 1 1
 
0 1 0 0 1 0 1
G47 
0 0 1 0 1 1 0
 
0 0 0 1 1 1 1 

Примечание. При построении добавочной матрицы надо следить, чтобы число единиц
r1 в каждой строке добавочной матрицы было r1  d  1 , в нашем случае r1  3  1  2 .
По порождающей матрице строим все комбинации кода. Первые пять комбинаций – это
строки порождающей матрицы и нулевая комбинация, остальные – суммы по модулю 2
всевозможных сочетаний строк порождающей матрицы.

Пример 2. Построить код Хэмминга для информационной комбинации 0101. Показать


процесс обнаружения ошибки.

Решение. Количество информационных разрядов k = 4. По табл. 1 приложения 8


находим значения общей длины кодовой комбинации и число контрольных символов: r = 3 и
n = 7. Так как общее количество символов кода п = 7, то контрольные коэффициенты займут
три позиции: 1, 2 и 4.
Корректирующий код без значений контрольных коэффициентов будет иметь вид:
K1 K 2 0K 3 1 0 1.
Пользуясь таблицей проверочных позиций (приложение 8, табл. 3), определяем
значения контрольных коэффициентов.
Первая проверка: сумма 1   3   5   7 должна быть четной, а сумма
K1  0  1  1 будет четной при K1  0 .
Вторая проверка: сумма  2  3   6   7 должна быть четной, а сумма
K 2  0  0  1 будет четной при K 2  1.
Третья проверка: сумма  4   5   6   7 ; должна быть четной, а сумма
K 3  0  0  1 будет четной при K 3  0 .
Окончательно корректирующий код принимает вид:
0 1 0 0 1 0 1.
Предположим, в результате искажений в канале связи вместо 0100101 было принято
0100111. Для обнаружения ошибки производим проверки на четность, аналогичные проверкам
при выборе контрольных коэффициентов.
Первая проверка: сумма 1   3   5   7  0  0  1  1 четна. В младший
разряд номера ошибочной позиции записываем 0.
Вторая проверка: сумма  2   3   6   7  1  0  1  1 нечетна. Во второй
разряд номера ошибочной позиции записываем 1.
Третья проверка: сумма  4   5   6   7  0  1  1  1 нечетна. В третий
разряд номера ошибочной позиции записываем 1.
Номер ошибочной позиции 110 = 6. Следовательно, символ шестой позиции следует
изменить на обратный.

Пример 3. Построить код Хэмминга для исправления одиночной и обнаружения


двойной ошибки четырехзначного двоичного кода. Показать процесс построения кода.

Решение.

Лабораторная работа 6 Корреляционный код. Инверсный код.

6.1 Корреляционный код


Разновидностью кода с повторением является корреляционный код или код с удвоением
элементов, который характеризуется введением дополнительных символов для каждого
разряда информационной части. Если в разряде информационной части стоит 0, то в
корреляционном коде этот разряд записывается символами 01, если 1 – символами 10.
Например, комбинация 10101 будет представлена в виде 1001100110. Показатель искажения
кода – появление в «парных» элементах сочетаний вида 00 или 11.
Характеристики корреляционного кода полностью совпадают с характеристиками кода
с простым повторением. Различие в помехоустойчивости кодированных сигналов
обнаруживается лишь для несимметричных каналов, у которых вероятности переходов 0  1
и 1  0 различны, а также для каналов, имеющих различные вероятности искажения соседних
символов по сравнению с другими возможными искажениями.

6.2 Инверсный код


Особой разновидностью кода с повторением служит инверсный код (код Бауэра).
Отличие его от кода с простым повторением заключается в том, что в тех случаях, когда
исходная комбинация содержит четное число единиц, вторая комбинация в точности
воспроизводит исходную. Если же исходная комбинация содержит нечетное число единиц,
повторение происходит в инвертированном виде. Например, комбинации 01100 и 10110
инверсным кодом представляются как 0110001100 и 1011001001.
Кодовую комбинацию проверяют в следующей последовательности. Сначала
суммируют единицы первой комбинации. Если их число окажется четным, элементы
дополнительной комбинации принимают в неизменном виде. После этого обе комбинации
сравнивают поэлементно и при обнаружении хотя бы одного несовпадения комбинация
бракуется. Если же количество единиц первой комбинации нечетное, элементы второй
комбинации принимают в инвертированном виде. Затем, как и ранее, первую и вторую
комбинации сравнивают поэлементно.
Такое построение кода позволяет обнаружить практически все ошибки, за исключением
одновременного искажения двух, четырех и т. д. элементов в исходной комбинации и
соответствующим им двух, четырех и т. д. элементов в повторяемой комбинации.
Порождающая и проверочная матрицы имеют вид G и Н.
n
Мощность кода N p  2 2
. Коэффициент избыточности не зависит от числа элементов
(R = 0.5). Данный код имеет минимальное кодовое расстояние

 2, k  2

d min  3, k  3 .
 4, k  4

Наиболее вероятным видом необнаруживаемых ошибок является одновременное
искажение двух символов в исходной комбинации и соответствующих им двух символов в
повторяемой комбинации. Вероятность одновременного искажения какой-либо пары символов
n 2
в исходной комбинации P2  C n p э (1  p э )
2 2 2 .
2
Вероятность одновременного - искажения двух пар соответствующих символов, т. е.
вероятность появления необнаруженной ошибки,

n 2 2
Pн.о.  [C n2 p э2 (1  p э ) 2 ]  (C n2 ) 2 p э4 . (1)
2 2
Выражение для распределения рабочих кодов по кодовым расстояниям в общем виде не
получено. Поэтому, пользуясь свойством систематических кодов, определяем распределение
кодовых расстояний для какого-нибудь одного кодового вектора и распространяем его на все
остальные.

Пример. Построить инверсный код для передачи семи сообщении и определить его
характеристики.
Решение. Количество информационных символов k  log 2 N p  3 . Строим
порождающую матрицу;

 1 0 0 0 1 1
 
G   0 1 0 1 0 1 .
 0 0 1 1 1 0
 
Суммируя строки порождающей матрицы во всевозможных сочетаниях, определяем
остальные кодовые векторы инверсного кода]

v1  100011 ; v2  010101 ; v3  001110 ; v4  110110 ;


v5  101101 ; v6  011011 ; v7  111000 .
Распределение кодовых расстояний для кодового вектора имеет вид

v1 v2 v3 v4 v5 v6 v7
.
0 4 4 3 3 3 4
Отсюда N p (1)  N p (2)  N p (5)  N p (6)  0; N p (3)  3; N p (4)  3 .
Коэффициенты ложных переходов K л (1)  K л (2)  K л (5)  K л (6)  0;
3 3
K л (3)  3
 0.15; K л (4)  4  0.2 .
C6 C6
Таким образом, данный код имеет dmin = 3 и обнаруживает все 1-, 2-, 5-, 6-кратные
ошибки, 85% трехкратных ошибок и 80% – четырехкратных.

Лабораторная работа 7 Код Рида – Маллера.

Коды Рида – Маллера (Маллер открыл коды, Рид построил декодирующую схему)
образуют класс двоичных систематических кодов, имеющих различные значения
r
избыточности R значения минимальных кодовых расстояний dmin. Эти коды
n
характеризуются следующими значениями параметров:
длина кода n  2 m ;

количество информационных разрядов k   Cmi ; (1)
i0

m
минимальное кодовое расстояние d min  2 , (2)
где m  3 любое целое положительное число;
  m – порядок кода.
Пример 1. Если m = 4, то  может принимать значения 1, 2, 3. Определить параметры
кода.

Решение. Для = 1 п = 24 = 16, d = 24-1 = 8; k  C40  C41 =1 + 4 = 5;


r = п – k = 16 – 5 =11; R = r/n = 11/16  0.7.
Для  = 2 п = 16; d = 24-2 = 4; k  C4  C4  C4 = 1 + 4 + 6 = 11;
0 1 2

r = 16 – 11 = 5; R = 5/16 = 0.312.
Для  = 3 п = 16; d = 24-3 = 2; k  C40  C41  C42  C43 = 1+ 4 + 6 + 4 = 15; r =
16 – 15 =1; R  0.07 .

Таблица 1

Таким образом, в зависимости от порядка кода  можно получить коды (16,5), (16, 11),
(16,15), характеризующиеся различными значениями избыточности и значениями
минимального кодового расстояния. В таблице 1 приведены параметры кодов Рида – Маллера
до п = 1024.
Построение кодов Рида – Маллера сводится к следующему. Вначале строится
порождающая матрица G, первая строка которой содержит п единиц. Далее следует т строк,
совокупность которых удобно рассматривать как (m  n) -матрицу, в качестве столбцов
которой выбраны двоичные числа (начиная с нуля). Номера разрядов двоичных чисел удобно
считать сверху вниз. Эти m строк составляют векторы первого порядка  . Далее идут строки
векторов второго порядка, которые получаются из всех произведений двух строк первого
порядка, затем – строки третьего порядка, являющиеся всеми произведениями трех строк
первого порядка, и т. д.
Таким образом, если строится матрица G для кода порядка  , то она содержит одну
строку со всеми единицами, т строк первого порядка, C m2 строк второго порядка, C m3 строк

третьего порядка и т. д. В общем случае количество строк C m0  C m1  C m2     C mi и
i0
совпадает с количеством информационных разрядов k.
Пример 2. Построить матрицу для кода Рида – Маллера второго порядка (   2 ) и т
= 3 (   m ).
Решение. Первая строка содержит п = 23 единиц (1 1 1 1 1 1 1 1).
Строим матрицу строк первого порядка (3 х 8):

0 1 2 3 4 5 6 7
 0 1 0 1 0 1 0 1
 . (3)
 0 0 1 1 0 0 1 1
 0 0 0 0 1 1 1 1
 
Количество строк C3  3 .
1

Для дальнейшего построения строк необходимо иметь в виду, что, если перемножаются
строки, например 01010101 и 00110011, результат получается путем поразрядного
перемножения строк:
01010101
х
00110011
00010001
Далее построение матрицы сводится к получению строк второго порядка. Для этого
перемножим первую и вторую строки, первую и третью строки и затем вторую и третью. В
результате получим последующие три строки:

 0 0 0 1 0 0 0 1
 
 0 0 0 0 0 1 0 1 . (4)
 0 0 0 0 0 0 1 1
 
Количество строк C3  3 .
2

Полностью построенная матрица G для кода Рида – Маллера второго порядка и т =


3 имеет вид
1 1 1 1 1 1 1 1
 
0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1
 
G  0 0 0 0 1 1 1 1 . (5)
0 0 0 1 0 0 0 1
 
0 0 0 0 0 1 0 1
 
0 0 0 0 0 0 1 1

Важнейшее свойство кодов Рида – Маллера состоит в том, что декодирование для них
проводится простым способом. В этих кодах каждый из информационных символов u ki может
m
быть описан не менее чем d min  2 независимыми проверочными уравнениями,
аргументами которых являются символы кодового слова. Анализ результатов решения этих
уравнений по принципу большинства позволяет определить значение информационных
символов u ki . Тем самым при исправлении ошибок исключается этап определения места
ошибок, как это имело место в кодах Хэмминга. Поэтому в кодах Рида – Маллера можно
использовать мажоритарный принцип декодирования.
Простота структуры производящей матрицы G этих кодов позволяет установить связь
между информационными символами u ki и символами кодового слова ui. Это легко показать
на примере.

Пример. Рассмотрим код второго порядка для т = 4. Это код (16, 11), одиннадцать
информационных символов которого u k1 , u k2 ,, u k11 кодируются с помощью порождающей
матрицы G, имеющей вид

(6)

Матрица (6) образуется с помощью векторов x0 , x1 , x2 , x3 , x4 , построенных указанным


ранее способом и их произведений. В (6) показано также «соответствие» между
информационными символами u ki и векторами xi , xi j .
Кодовый вектор, т.е. закодированные информационные символы, имеет вид
V  u k x0  u k x1  u k x2  u k x3  u k x4  u k x1 x2  u k x1 x3  u k x1 x4 
1 2 3 4 5 6 7 8
(7)
u k x2 x3  u k x2 x4  u k x3 x4  f (u1 , u 2 ,, u16 ).
9 10 11

Задача состоит в том, чтобы определить значение u ki по полученному кодовому


вектору, несмотря на появившиеся, быть может, ошибки. Единицы в столбцах матрицы G
показывают, какие именно информационные символы u ki определяют значение символов u i
кодового слова.

Эти соотношения позволяют закодировать сообщение по известным информационным


символам. Предположим, что исходное сообщение имеет вид 10001011011. Тогда
закодированное сообщение (кодовый вектор) выглядит как 1111101001101100.
m 
В общем случае для каждого u ki должно быть не менее 2 независимых уравнений.
Суммы, каких именно символов u i кодового слова должны быть равны информационному
символу u ki , можно определить следующим образом. Назовем компоненту, соответствующую
j-му нулю в векторе xi и компоненту, соответствующую j -ой единице в векторе xi парными
компонентами. Например, для векторов x1 , x2 , x3 , x4 матрицы (6) парные компоненты показаны
m 1
на рисунке 1, Тогда 2 сумм парных компонент используются для определения u ki 1
. В приводимом нами примере

(8)
Рисунок 1 – Парные компоненты для векторов первого порядка.

m 2
Каждая из 2 сумм четырех компонент, используемых для определения xi x j ,
образуются некоторыми двумя парными компонентами вектора x i и парными для тех уже
выбранных компонент компонентами вектора x j .
На рисунке 2 показаны парные компоненты xi x j (см. матрицу 6), используемые для
m 2
определения соответствующих информационных символов. Для этих 2 парных компонент

(9)
Рисунок 2 – Парные компоненты для векторов второго порядка

Пример. Закодированное кодом Рида – Маллера (16, 11) сообщение имеет вид
1111101001101100. Определить исходное сообщение.

Решение. Воспользовавшись любыми из соотношений (9), определим u ki для

Нами найдены информационные символы u k6  u k11 (коэффициенты, соответствующие


векторам второго порядка xi x j ). Дальше определять информационные символы по формулам
(8) нельзя, так как выполняются не все соотношения. Это объясняется тем, что они выведены
только для матрицы, содержащей векторы первого порядка x i и не выполняются для всей
матрицы (с учетом векторов второго порядка). Действительно, например, согласно (8)
u k2  u1  u 2  u3  u 4  u5  u 6 и т.д. Складывая соответствующие столбцы матрицы кода
(16, 11), получаем единицу не только в разряде, соответствующем u k 2 , но и в других разрядах.
Поэтому закодированное сообщение необходимо преобразовать так, чтобы для него были
справедливы соотношения векторов матрицы первого порядка. Для этого к закодированному
сообщению прибавляют векторы u ki xi x j , по модулю два:
Согласно (8) определяем u k5  u k2 ; u k5  u8  u16  1  0  1;
u k  u1  u5  1  1  0; u k  u1  u3  1  1  0; u k  u1  u 2  1  1  0 .
4 3 2

Для нахождения uk1


необходимо снова вычислить u k xi и сложить их с
i

преобразованным сообщением. Если в результате сложения получим вектор, содержащий все


единицы, u k1  1 , если полученный вектор содержит все нули, u k1  0 . Так как
u k  u k  u k  0 , то
4 3 2

0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 – u k x4
5

1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 – преобразованное сообщение
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,

т. е. u k1  1 .
Таким образом, исходное сообщение, выделенное из кодового слова, имеет вид 1 0 0
0 1 0 1 1 0 1 1.

Лабораторная работа 8 Коды с постоянным весом.

Данные коды относятся к классу блочных неразделимых кодов, так как в них не
представляется возможным выделить информационные и проверочные символы. Все
комбинации этого кода имеют одинаковый вес (одинаковое количество единиц). Примером
является известный код «3 из 7» – семизначный код с постоянным весом 3.
Одна из основных причин применения этих кодов – их преимущество при
использовании в каналах связи, в значительной степени асимметричных. В случае полностью
асимметричного канала код с постоянным весом считается совершенным применительно к
обнаружению ошибок, так как он обнаруживает все ошибки. Полностью асимметричным
является канал, в котором имеет место только один вид ошибок, т. е. возможно только
преобразование нулей в единицы либо только единиц в нули.
В двоичном симметричном канале (канал, в котором оба вида ошибок равновероятны)
коды с постоянным весом обнаруживают все возможные сочетания нечетного числа ошибок,
из которых они не выявляют только те, при которых преобразование нуля в единицу на одних
позициях компенсируется преобразованием единиц в нули на других. Кроме того, при
заданной длине кодового слова оптимальный код с постоянным весом имеет обычно больше
разрешенных комбинаций, чем разделимый код с эквивалентной обнаруживающей
способностью. Основной недостаток кода с постоянным весом – его неразделимость.
В кодах с постоянным весом обнаруживающая способность обусловливается самим
видом кодового слова, благодаря чему отделить проверочные знаки без преобразования кода
невозможно. Ввиду такой неразделимости обнаруживающая способность кода оказывается
неразрывно связанной с характером информационных знаков. А это, в свою очередь, приводит
к невозможности легко изменить код в существующей системе. При использовании кода с
постоянным весом обычно прежде всего определяется основной алфавит системы. Затем
выбирается код, имеющий достаточное количество кодовых слов. Далее, каждой букве
алфавита сопоставляется кодовое слово с постоянным весом. Недостатки такого закрепления
кодовых слов особенно проявляются в случаях, когда буквы большей частью передаются
группами. Поскольку при использовании неразделимых кодов избыточность заложена уже в
каждой (закодированной) букве, повысить экономичность путем кодирования сразу целой
группы букв оказывается невозможным. Таким образом, разделимые коды обладают
преимуществом по сравнению с неразделимыми. Оно состоит в большей гибкости и
возможности повышения экономичности, особенно в тех случаях, когда передаваемая
информация кодируется большими блоками.
При построении «-разрядного кода с постоянным весом отношение единиц т к
количеству нулей (п – т) выбирается таким, чтобы обеспечивалось необходимое количество
«разрешенных» комбинаций. Общее количество комбинаций может быть найдено как число
m
сочетаний из n элементов по т : Cn .
Известно, что для любого числа п элементов справедливо соотношение
Cnm  Cnn m . (8.1)

Максимальное число «разрешенных» кодовых комбинаций для элементов кода с


постоянным весом с учетом соотношения (8.1) определяется выражениями

(8.2)

n 1 n 1
Очевидно, что во всех остальных случаях, когда  m  n  1 или 1  m 
2 2
n n
при п нечетном,  m  n  1 или 1  m  при п четном, количество «разрешенных»
2 2
комбинаций C n  C n макс .
m m

m 3  4
Пример 1. При применении кода «3 из 7» с    количество комбинаций
n m 4  3
C73  C74  35 , во всех остальных случаях это количество меньше (
C71  C76  7; C72  C75  21 ). Поэтому из числа возможных (N = 2n = 27 = 128) отбирается
35 кодовых комбинаций, которые используются в качестве «разрешенных». Остальные 93
комбинации являются «запрещенными» и в приемнике не фиксируются. Избыточность
log 2 35
рассмотренного кода R  1   0.267 .
log 2 128
Пример 2. Другим примером кода с постоянным весом может служить код «4 из 8».
Этот 8-элементный код обеспечивает 256 возможных комбинаций, из которых используются
только комбинации, содержащие четыре единицы и четыре нуля. Данному коду присущи те же
ограничения и такая же избыточность, что и коду «3 из 7», хотя количество используемых
комбинаций в нем C8  70 .
4
Декодирование принятых комбинаций кода с постоянным весом сводится к
определению их веса. Если он отличается от заданного, это означает, что комбинация принята
с ошибкой. При проверке на постоянство веса могут быть обнаружены ошибки любой
кратности, за исключением ошибки «сдвига», когда одна из единиц комбинации преобразуется
в нуль, а один из нулей – в единицу.
Определим вероятность необнаружения ошибки сдвига, обусловленной только
одиночными преобразованиями единиц и нулей данной комбинации. Рассматривая случай
передачи посылок по симметричному каналу, когда вероятность преобразования единицы в
нуль равна вероятности преобразования нуля в единицу, замечаем, что вероятность
преобразования одной из трех единиц в нуль равна а вероятность преобразования одного из
четырех нулей в единицу составляет C31 pэ (1  pэ ) 2 .
Пользуясь теоремой умножения вероятностей совместимых и независимых событий,
получаем

(8.3)

Очевидно, что вероятность обнаруживаемых ошибок равна разности между


вероятностью Pk всех ошибок кодовой комбинации и вероятностью необнаруживаемых
ошибок Рнеоб'

. (8.4)

В общем случае для n-элементной кодовой последовательности можно записать

(8.5)

Однако, несмотря на простоту, преимущества кодов с постоянным весом невелики.


Такие коды используются только в системах, обнаруживающих ошибки. По сравнению с
кодом с проверкой на четность для обеспечения той же способности обнаружения ошибок им
необходима большая избыточность. Если источник информации выдает случайную
последовательность двоичных сигналов, то применение кодов с постоянным весом
затруднительно. Эти коды в основном используются для передачи буквенно-цифровой
информации, которая всегда требует обязательного преобразования в дискретную форму.
Код «3 из 7» широко применяется при частотной манипуляции в каналах с
селективными замираниями, где вероятность ошибок смещения невелика.
Pнеоб
Пример 3. Найти для 7-элементного кода отношение   .
Pоб
1
Используя формулы (8.4), (8.5), находим   .
1  (1  p э ) 7
1
12 p э (1  p э ) 5
2
5
Для рэ = 1  10  = 1/58332, т. е. одна необнаруженная ошибка приходится примерно
на каждые 58 000 обнаруженных.
Лабораторная работа 9 Систематический циклический код

Путем некоторой модификации алгоритма кодирования можно получить


систематический циклический код.

Рисунок 1 – Сдвиг многочлена в регистре сдвига с обратными связями


длины п на r = п – k позиций

Для этой цели рассмотрим информационный многочлен степени k – 1


u( X )  u0  u1 X  u2 X 2    vk 1 X k 1 . (9.1)

и его r = п – k -кратный сдвиг.

X r u( X )  u0 X r  u1 X r 1    uk 1 X n1 . (9.2)

Из рисунка 1 видно, что такой сдвиг не вызывает переполнения n-разрядного регистра сдвига
(поэтому и может быть записан в виде (9.2)) и соответствует заполнению k правых крайних
двоичных разрядов регистра информационным словом. Заполним теперь свободные r левых
двоичных разрядов таким образом, чтобы вектор, содержащийся в n -разрядном регистре,
r
принадлежал коду. Для этого представим многочлен X u (X ) в виде
X r u( X )  a( X ) g ( X )  b( X ) . (9.3)

r
где b(Х) - остаток от деления X u (X ) на g(Х). Из (9.3) следует

X r u( X )  b( X )  a( X ) g ( X ) . (9.4)

Из (9.4) вытекает алгоритм кодирования систематического циклического (n, k)-кода:

1. Информационный многочлен u(Х) степени k – 1 умножается на Хr, где r = п – k;


r
2. Находится остаток b(Х) от деления X u (X ) на g(Х);
3. Многочлен b(Х) заносится в r левых разрядов регистра сдвига (рисунок 1).

Заметим, что эта операция всегда возможна, так как степень b(Х) по определению не
превышает r – 1. Таким образом, в регистре сдвига будет сформирован многочлен
v( X )  b0  b1 X    br 1 X r 1  u 0 X r  u1 X r 1    u k 1 X n 1 . (8.28)
  
r проверочны х символов k информацио нных символов

Многочлен v(X) принадлежит циклическому коду, так как в силу (9.4) он делится на g(X)
без остатка. Более того, этот код является систематическим, так как из (8.28) следует, что старшие
k разрядов кодовых векторов являются информационными векторами.
Следующий пример наглядно поясняет алгоритм кодирования циклических
систематических кодов.

Пример: Циклический (7,4)-код в систематической форме.

В качестве порождающего многочлена будем использовать многочлен


g ( X )  1  X  X 3 (9.5). Пусть задан информационный вектор
u = (1001). (9.6)
Ему соответствует информационный многочлен

u(Х) = 1 + X 3. (9.7)
Умножим информационный многочлен на X3

Х 3 u(Х) = X 3 + X 6. (9.8)
и определим остаток b(Х) от деления (9.8) на g(X). Процесс нахождения остатка b(Х) в
соответствии с алгоритмам деления Евклида показан в таблице 1.

Таблица 1 – Определение проверочных символов для и(Х) = 1 + X3 и g ( X )  1  X  X


3

В результате получим

X 3u ( X )  (1  X 3 ) g ( X )  
X
X2 . (9.9)
b( X )
Так как кодовый многочлен определяется как

v( X )  b( X )  X 3u( X ) . (9.10)
то
v = (011 1001). (9.11)
Повторяя процесс кодирования для всех 16 возможных информационных векторов,
получим систематический циклический (7,4)-код. Его информационные и кодовые векторы
приведены в таблице 2. Заметим, что циклический систематический (7,4)-код, образованный
порождающим многочленом g ( X )  1  X  X 3 , совпадает с рассмотренным нами ранее
систематическим (7,4)-кодом Хэмминга.

Таблица 2 – Циклический (7,4)-код, образованный порождающим многочленом


g ( X )  1  X  X 3 в систематическом виде.

Лабораторная работа 10-12 Циклические коды Хемминга

Циклические коды Хэмминга образует важное семейство циклических (n, k)-кодов.


Свойства кодов Хэмминга, как подмножества линейных кодов, были подробно рассмотрены в
лекции 7. Коды Хэмминга, имеющие циклическую структуру, обладают дополнительными,
весьма полезными свойствами.
При определении методов построения циклических кодов используются понятия
неприводимых и примитивных многочленов.
Определение 1. Многочлен р(х) степени т называется неприводимым в поле GF(2), если
он не делится ни на какой многочлен с коэффициентами из GF(2) степени меньшей
т, но большей 0.

Определение 2. Неприводимый многочлен р(х) степени т называется примитивным,


если наименьшая степень п, при которой многочлен X  1 делится на р(х) без
n

остатка, равна n  2  1.
m

В таблице 1 приведены некоторые примитивные многочлены с коэффициентами из


GF(2).
Таблица 1 – Примитивные многочлены.

Основой для построения циклических кодов Хэмминга служит следующая теорема.


Теорема 1. Любой циклический код Хэмминга длины 2  1 с т > 3 может быть
m

построен с помощью некоторого примитивного многочлена степени т.

Имеется также обратная теорема. В ней утверждается, что любому примитивному


многочлену степени т соответствует некоторый циклический код Хэмминга длины 2  1 .
m

Пример: Циклический (15, 11)-код Хэмминга.

Для построения циклического (15,11)-кода Хэмминга используется многочлен степени


т = 4. Из таблицы 10 следует, что таким многочленом является многочлен
p( X )  1  X  X 4 и, используя его в качестве порождающего, можно получить все кодовые
слова циклического (15,11)-кода Хэмминга.
С помощью порождающих многочленов g(X) можно строить порождающие и
проверочные матрицы, а также схемы декодеров любых циклических кодов Хэмминга.

Лабораторная работа 13 Коды Боуза – Чоудхури - Хоквингема (БЧХ).

Данные коды являются разновидностью циклических кодов.


Рассмотрим один из способов нахождения образующего полинома для кодов БЧХ. Он
определяется по заданному кодовому расстоянию и длине кодовой комбинации. Длину
кодовой комбинации кодов БЧХ находим из выражения

n  2 m  1. (11.1)
где т – любое целое число. Таким образом, величина n может быть равна 3, 7, 15, 31, 63, 127,
255, 511, 1023 разрядам и т. д.
Количество проверочных разрядов кода
m(d  1)
r . (11.2)
2
Следовательно, число информационных разрядов

m(d  1)
k  2m  1  . (11.3)
2
Параметры кодов БЧХ (до n = 255), вычисленные по формулам (11.1) – (11.3),
приведены в таблице 11 (см. лекция 13) с указанием кодового расстояния и числа
информационных символов.
Образующий полином кода Боуза – Чоудхури – Хонвингема является наименьшим
общим кратным (НОК) так называемых минимальных полиномов mi (X ) , где
i  1,3,5,, d  2 порядок полинома

P( X )  HOK{m1 ( X ),, md 2 ( X )}. (11.4)


Вычисленные значения минимальных полиномов для степени m  2  10 приведены в
таблице 12 (см. лекция 13). Значения mi (X ) даны в таблице в восьмеричной системе
счисления. Так, полином 19-го порядка для степени m = 10, записанный в таблице числом 2773,
представляет следующую двоичную последовательность:

2 7 7 3
010 111 111 01l

а многочлен этого полинома записывается как


X 10
 X  X  X  X  X  X  X 1.
8 7 6 5 4 3

Для нахождения образующего полинома кода длиной n  2  1 разрядов с кодовым


m

расстоянием d необходило выписать из таблицы все значения минимальных полиномов,


соответствующие заданному т, до порядка d – 2 включительно. Если данный порядок в
таблице отсутствует, следует взять ближайший меньший.

Пример. Необходимо построить код длиной n = 15 (m = 4) с d = 7. Следовательно,


образующий полином P( X )  m1 ( X )m3 ( X )m5 ( X ) .
По таблице 11 находим минимальные полиномы:
т1(Х) = 23 или 10011  X 4  X  1 ;
т3(Х) = 37 или 11111  X 4  X 3  X 2  X  1 ;
т5(Х) = 07 или 111  X 2  X  1 .

Умножая полученные минимальные полиномы, определим образующий полином


заданного кода БЧХ: Р(Х) = 10100110111
Путем построения производящей матрицы можно убедиться в том, что полученный код
действительно имеет кодовое расстояние, равное семи.
Коды БЧХ обладают нечетными значениями минимального кодового расстояния dmin.
При желании кодовое расстояние можно увеличить на единицу, применив образующий
полином, равный произведению образующего полинома кода БЧХ на двучлен (X + 1). Так, в
рассмотренном коде с d = 7 минимальное кодовое расстояние можно повысить до восьми, если
использовать образующий полином

P( X )  ( X  1)( X 10  X 8  X 5  X 4  X 2  X  1;
P( X )  ( X 11  X 10  X 9  X 8  X 6  X 4  X 3  1,
т. е. P(1,0) = 111101011001 .
Такой способ увеличения минимального кодового расстояния применим к любым
систематическим кодам с нечетным минимальным кодовым расстоянием. Для этого в
циклических кодах изменяется образующий полином, а в других систематических кодах
вводится дополнительная проверка на четность, охватывающая все информационные разряды.
При рассмотрении кодов БЧХ отметим следующие закономерности Число кодов,
различающихся по своей корректирующей способности и имеющих общую длину кодовой
комбинации n  2  1 , на две единицы меньше числа всех неприводимых многочленов, на
m

2 m1
которые разлагается двучлен X  1 . Например, определим количество циклических кодов
для n = 15. Так как полученный многочлен X  1 не является простейшим, то т = 4 есть
15

старшая степень неприводимого многочлена, на который раскладывается двучлен X  1.


15

Теперь из приложения 2 необходимо выписать все неприводимые многочлены степени 4


и неприводимые многочлены тех степеней, показатели которых являются делителями числа 4,
т. е. 1 и 2. Таким образом, степень двучлена X  1 складывается из сумм степеней всех
15

неприводимых многочленов, число которых равно единице – для первой степени, единице –
для второй степени и трем – для четвертой степени. Выписав все эти многочлены, найдем
разложение двучлена
X 15  1  ( X  1)( X 2  X  1)( X 4  X  1)( X 4  X 3  1)
.
( X  X  X  X  1)
4 3 2

Как видно из разложения, количество неприводимых многочленов равно пяти, а


следовательно, число циклических кодов для n = 15 равно трем, что подтверждается таблицей
11.
Следующим важным свойством кода БЧХ является соотношение между максимальным
кодовым расстоянием и числом т:

d max  2 m1  1. (11.5)


41
Для предыдущего примера при n = 15 (m = 4) d max  2  1  7 , что действительно
подтверждается таблицей 11.
Кроме того, следует заметить, что число информационных разрядов, которое может быть
использовано при заданном числе т и при максимальном кодовом расстоянии, выражается как
41
(m + 1). В приводимом нами примере для d max  2  1  7 , k = 5.

Лабораторная работа 14 Двоичный код Голлея. Код Абрамсона (CRC коды)

Пример. Если m = 4, то  может принимать значения 1, 2, 3. Определить параметры


кода.
Решение.
Для   1, n  24  16, d  241  8, k  C40  C41  1  4  5,
r 11
r  n  k  16  5  11, R    0.7 ;
n 16
Для   2, n  2  16, d  2 4 2  4, k  C40  C41  C42  1  4  6  11;
4

r 5
r  n  k  16  11  5, R    0.312 ;
n 16
Для   3, n  2  16, d  2 43  2, k  C40  C41  C42  C43  1  4  6  4  15;
4

r 1
r  n  k  16  15  1, R    0.07 .
n 16
Таким образом, в зависимости от  можно получить коды (16, 5), (16, 11), (16, 15),
характеризующиеся различными размерами избыточности и значениями минимального
кодового расстояния.

CRC-коды обладают пятью важными свойствами:

1. Все ошибки кратности 3 или меньше обнаруживаются;


2. Все ошибки нечетной кратности обнаруживаются;
3. Все пакеты ошибок длины l= т + 1 или меньше обнаруживаются;
m
4. Доля необнаружимых пакетов ошибок длины l= т + 2 составляет 2 ;
 ( m 1)
5. Доля необнаружимых пакетов ошибок длины l  m  3 составляет 2 .

Лабораторная работа 15 Код Файера (укороченные коды)

Пример. Построить математическую модель заданного корректирующего кода, найти


образующую матрицу кода, технически реализовать средства для его
кодирования/декодирования (на уровне принципиальной схемы).
Тип кода: Файера
Число передаваемых сообщений: 63
Кодирующая способность кода: bs = 3, br = 4.

Под пакетом ошибок длинной b понимают такой вид комбинации помехи, в котором
между крайними разрядами, пораженными помехами, содержится b – 2 разряда.
Коды Файера могут исправлять пакет ошибок длинной bs и обнаруживать пакет ошибок
длинной br (в кодах Файера понятие кодового расстояния d не используются).
Образующий многочлен кода Файера P(X)ф определяется из выражения

P(X)ф = P(X)(Xc – 1), (15.1)

где P(X) – неприводимый многочлен степени L.


Из принципа построения кода следует, что
L ≥ bs, (15.2)
с ≥ bs+ br -1 (15.3)
При этом с не должно делится нацело на число e, где

e=2L -1 (15.4)

Неприводимый многочлен P(X) выбирают из таблицы, согласно уравнению (15.2), но


так, чтобы удовлетворялось условие (15.4). Длинна слова n равна наименьшему общему
кратному чисел c и e, так как только в этом случае многочлен Xn + 1 делится на P(X)ф без
остатка:
n = НОК(e, c) (15.5)

Число контрольных символов


m=c+L (15.6)
Построение кода Файра.

Согласно формуле (15.2) находим L ≥ 3 , откуда можно принять L = 3. Из


соответствующих таблиц выбираем неприводимый многочлен P(X) = X3 + X + 1= 1011.
В соответствии с формулой (15.3):
c ≥ 3+4-1 ≥ 6 , откуда можно принять с = 6.
По формуле (15.4) получаем е = 23-1 = 7. Видим, что c на е нацело не делится.
Число проверочных разрядов, подставляя в формулу (15.5) значения L и c, получим m
=6 + 3 = 9 .
Тогда длинна кода в соответствии с (15.5) равна

n = НОК(6,7) = 42
Тогда код Файра имеет вид (42,33).

Образующий многочлен Файра P(X)ф равен

P(X)ф = (X3 + X + 1)(X6 + 1) = X9 + X7 + X6 + X3 + X + 1 = 1011001011. (15.7)


1. Задания для самостоятельной работы обучающегося и методические
рекомендации по их выполнению

Обучающийся должен самостоятельно написать реферат по каждой теме, форма


контроля – устно.

№ Наименование
1 Код с простым повторением.
2 Код Макдональда.
3 Код Варшамова.
4 Коды с малой плотностью проверок на четность.
5 Итеративный код
6 Коды Плоткина
7 Код Бергера
8 Генератор Блюма-Шуба
9 Непрерывные коды
10 Компаундные коды
11 Мажоритарные циклические коды
12 Вероятность ошибки при передаче информации избыточными кодами по
каналам с независимыми ошибками
13 Вероятность ошибки при передаче информации по каналам связи с
пакетным распределением ошибок
14 Основные методы повышения достоверности передачи информации
избыточными кодами
15 Условия целесообразности применения избыточных кодов
1. Материалы для текущего, рубежного и итогового контроля

1. Линейный (n, k) – код называется циклическим, если


A) Сдвиг любого кодового слова из кода не принадлежит этому коду.
B) Сдвиг любого кодового слова из кода принадлежит этому коду.
C) Сдвиг конкретного кодового слова из кода принадлежит этому коду.
D) Сдвиг конкретного кодового слова из кода не принадлежит этому коду.
E) Сдвиг любого кодового слова из другого кода принадлежит этому коду.

2. Какое соответствие существует между кодовым вектором V= (v0,v1,…,vn-1) и


степенью многочлена (n – 1) V ( X )  v0  v1 X  v2 X 2    vn 1 X n 1
A) Невзаимно – однозначное, X iV ( X )  q( X )( X n  1)  V (i ) ( X ) ;



остаток

Взаимно – неоднозначное, X V ( X )  q( X )( X  1)  V ( X ) ;
i n (i )
B)

остаток

C) Взаимно – однозначное, X q( X )  V ( X )( X
i n
 1)  V ( X ) ;
(i )

остаток

D) Взаимно – однозначное, X V ( X )  q( X )( X  1)  V ( X ) ;
i n (i )

остаток

Невзаимно – однозначное, X q( X )  V ( X )( X  1)  V ( X ) ;
i n (i )
E)

остаток
3. Теорема о порождающем многочлене g(X) гласит,
A) В каждом циклическом коде (n, k) существует только один многочлен
максимальной степени r = n – k g( X )  g 0  g1 X  g 2 X    g r X
2 r

такой, что любой кодовый многочлен делится на g(X).


B) В каждом циклическом коде (n, k) существует только два многочлена
минимальной степени r = n – k g( X )  g 0  g1 X  g 2 X    g r X
2 r

такой, что любой кодовый многочлен делится на g(X).


C) В каждом циклическом коде (n, k) существует только один многочлен
минимальной степени r = n – k g( X )  g 0  g1 X  g 2 X    g r X
2 r

такой, что любой кодовый многочлен делится на g(X).


D) В каждом циклическом коде (n, k) существует только два многочлена
максимальной степени r = n – k g( X )  g 0  g1 X  g 2 X    g r X
2 r

такой, что любой кодовый многочлен делится на g(X).


E) В каждом циклическом коде (n, k) существует только один многочлен
r 1
минимальной степени r = n – k g ( X )  g 0  g1 X  g 2 X    g r 1 X
2

такой, что любой кодовый многочлен неделится на g(X).


4. Алгоритм кодирования систематического циклического кода (n, k) следующий:
A) 1. Информационный многочлен U ( X )  u0  u1 X  u2 X 2
   uk X k
умножается на X , r = n – k.
r

2. Находится остаток b(X) от деления g(X) на X rU(X).


3. Многочлен b(X) заносится в r левых разрядов регистра сдвига.
B) 1. Информационный многочлен U ( X )  u0  u1 X  u2 X 2    uk 1 X k 1
умножается на X r , r = n – k.
2. Находится остаток b(X) от деления X rU(X) на g(X).
3. Многочлен b(X) заносится в r правых разрядов регистра сдвига.
C) 1. Информационный многочлен U ( X )  u0  u1 X  u2 X 2    uk 1 X k 1
умножается на X r-1 , r = n – k.
2. Находится остаток b(X) от деления g(X) на X rU(X).
3. Многочлен b(X) заносится в r левых разрядов регистра сдвига.
D) 1. Информационный многочлен U ( X )  u0  u1 X  u2 X 2    uk 1 X k 1
умножается на X r , r = n – k.
2. Находится остаток b(X) от деления X rU(X) на g(X).
3. Многочлен b(X) заносится в r – 1 левых разрядов регистра сдвига.
E) 1. Информационный многочлен U ( X )  u0  u1 X  u2 X
2
   uk 1 X k 1
умножается на X r , r = n – k.
2. Находится остаток b(X) от деления X rU(X) на g(X).
3. Многочлен b(X) заносится в r левых разрядов регистра сдвига.

5. Формула систематического циклического кода (n, k) следующая:

A) b( X )  X n  k U ( X )  a( X ) g( X ) ;
B) b( X )  X n  k U ( X )  a( X ) g( X ) ;
C) a( X )  X n  k U ( X )  b( X ) g( X ) ;
D) a( X )  X n  k U ( X )  b( X ) g( X ) ;
E) b( X )  X n  r U ( X )  a( X ) g( X ) ;

6. Пусть V кодовый вектор, соответствующий многочлену V(X). Он может быть


представлен в виде
A) суммы информационного вектора а на порождающую матрицу G.
B) произведения информационного вектора а на порождающую матрицу G.
C) вычитания информационного вектора а на порождающую матрицу G.
D) деления информационного вектора а на порождающую матрицу G.
E) возведения в степень информационного вектора а на порождающую матрицу
G.
7. Пусть задан порождающий многочлен g(X) степени r = n – k циклического кода (n, k),
тогда какой многочлен h(X) называется проверочным. Найдите правильную формулу.

h( X )
A) X n 1 ;
g( X )
g( X )
B) X n 1 ;
h( X )
g( X )
C) X n 1 ;
h( X )
D) X n  1  g ( X )h( X ) ;
E) X n  1  g ( X )h( X ) ;
8. Что является основой в кодерах и декодерах циклических кодов
A) Процедура суммирования многочленов.
B) Процедура вычитания многочленов.
C) Процедура умножения многочленов.
D) Процедура деление многочленов.
E) Процедура возведения в степень многочленов.

9. Кодер двоичного циклических кодов (n, k) отображает


A) Множество 2k возможных двоичных информационных слов в множество 2k n
– мерных кодовых слов.
B) Множество 2k возможных двоичных информационных слов в множество 2k
(n – 1) мерных кодовых слов.
C) Множество 2k+1 возможных двоичных информационных слов в множество 2k
n – мерных кодовых слов.
D) Множество 2k возможных двоичных информационных слов в множество 2k+1
n – мерных кодовых слов.
E) Множество 2k возможных двоичных информационных слов в множество 2k
(n +1) мерных кодовых слов.

10. В циклическом коде Хэмминга минимальное кодовое расстояние равно

A) 2; B) 4; C) 3; D) 5; E) 1;

11. Многочлен р(х) степени m называется неприводимым в поле GF(2), если


A) Он не делится ни на какой многочлен с коэффициентами из GF(2) степени
большей m, но меньшей 1.
B) Он делится ни на какой многочлен с коэффициентами из GF(2) степени
большей m, но меньшей 0.
C) Он делится ни на какой многочлен с коэффициентами из GF(2) степени
меньшей m, но большей 0.
D) Он не делится ни на какой многочлен с коэффициентами из GF(2) степени
большей m, но меньшей 0.
E) Он не делится ни на какой многочлен с коэффициентами из GF(2) степени
меньшей m, но большей 0.

12. Неприводимый многочлен р(х) степени m называется примитивным в поле GF(2), если
A) Наибольшая степень n, при котором многочлен X n  1 делится на р(х) без
остатка, равна n  2  1.
m

B) Наименьшая степень n, при котором многочлен X n  1 делится на р(х) без


остатка, равна n  2  1.
m

C) Наименьшая степень n, при котором многочлен X n  1 делится на р(х) без


остатка, равна n  2  1.
m

D) Наибольшая степень n, при котором многочлен X n  1 делится на р(х) без


остатка, равна n  2  1.
m

Наибольшая степень n, при котором многочлен n  2  1 делится на р(х) без


m
E)
остатка, равна X  1.
n

13. Любой циклический код Хэмминга длины n  2


m
 1 с m  3 может быть построен с
помощью
A) Некоторого неприводимого и примитивного многочлена степени m.
B) Некоторого приводимого многочлена степени m.
C) Некоторого непримитивного многочлена степени m.
D) Некоторого примитивного многочлена степени m.
E) Некоторого неприводимого многочлена степени m.

14. (23,12) – код Голлея исправляет только все


A) Одинарные ошибки.
B) Двойные ошибки.
C) Тройные ошибки.
D) Четверные ошибки.
E) Пятерные ошибки.
15. В основе конструкции (23,12) – кода Голлея лежит разложение
A) X 12  1  (1  X ) g1 ( X ) g 2 ( X ) .
B) X 12  1  (1  X ) g1 ( X ) g 2 ( X ) .
C) X 23  1  (1  X ) g1 ( X ) g 2 ( X ) .
D) X 23  1  (1  X ) g1 ( X ) g 2 ( X ) .
E) X 23  1  (1  X ) g1 ( X ) g 2 ( X ) .
16. Порождающие многочлены кода Голлея имеют вид
A) g1(X) = 1+X2+X4+X5+X6+X10+X11, g2(X) = -1+X -X5+X6-X7+X9-X11.
B) g1(X) = -1+X2-X4+X5-X6+X10-X11, g2(X) = 1+X +X5+X6+X7+X9+X11.
C) g1(X) = 1+X2+X4+X5+X6+X10+X11, g2(X) = 1-X +X5 - X6+X7-X9+X11.
D) g1(X) = 1+X2+X4+X5+X6+X10+X11, g2(X) = 1+X +X5+X6+X7+X9+X11.
E) g1(X) = 1- X2+X4 - X5+X6 -X10+X11, g2(X) = 1+X +X5+X6+X7+X9+X11.
17. Пусть р(х) – примитивный многочлен степени m, g ( X )  (1  X ) p( X ) -
порождающий многочлен кода Абрамсона (CRC), тогда можно построить циклический
CRC (n, k) – код с параметрами

A) n  2m  1, k  2m  2  m , имеющий m + 1 проверочных символов и dmin = 4.


B) n  2m  1, k  2m  2  m , имеющий m + 1 проверочных символов и dmin = 3.
C) n  2m  1, k  2m  2  m , имеющий m – 1 проверочных символов и dmin = 5.
D) n  2m  1, k  2m  2  m , имеющий m – 1 проверочных символов и dmin = 2.
E) n  2m  1, k  2m  2  m , имеющий m – 1 проверочных символов и dmin = 1.

18. Длина кодовой комбинации кодов БЧХ равна n  2  1 , количество проверочных разрядов
m

m(d  1)
кода r  . Чему равно число информационных разрядов k ?
2
19. Образующий многочлен кода БЧХ является

A) Наименьшим общим кратным минимальных многочленов mi(x) многочлена


P( X )  НОКm1 ( x)m2 ( x)md 2 ( x).
B) Наименьшим общим кратным минимальных многочленов mi(x) многочлена
P( X )  НОКm1 ( x)m3 ( x)md 3 ( x).
C) Наименьшим общим кратным минимальных многочленов mi(x) многочлена
P( X )  НОКm1 ( x)m3 ( x)md 2 ( x) .
D) Наименьшим общим кратным минимальных многочленов mi(x) многочлена
P( X )  НОКm1 ( x)m2 ( x)md 3 ( x) .
E) Наименьшим общим кратным минимальных многочленов mi(x) многочлена
P( X )  НОКm1 ( x)m3 ( x)md 1 ( x).
20. Важным свойством кода БЧХ является соотношение между максимальным кодовым
расстоянием и числом m, которая равна
A) d max  2m 1  1 .
B) d max  2m 1  1 .
C) d max  2m 1  1 .
D) d max  22m 1  1.
E) d max  2m 1  1 .
21. Код Файера является укороченным кодом
A) Шеннона.
B) Хэмминга.
C) Хартли.
D) Абрамсона.
E) БЧХ.
22. При передаче по каналу связи с шумом к кодовому слову v(X) добавляется многочлен
ошибок e(X). В результате многочлен принятого кодового слова имеет вид
A) r ( X )  a( X ) g ( X )  s( X )
B) r ( X )  a( X ) g ( X )  s( X )
C) r ( X )  a ( X ) g ( X )  e( X )
D) r ( X )  a ( X ) g ( X )  e( X )
E) r ( X )  a( X )  g ( X )  s( X )
23. Кодом называется
A) Правило (алгоритм), сопоставляющее каждому конкретному сообщению строго
определенную комбинацию различных символов (или соответствующих им
сигналов).
B) Комбинация (алгоритм), сопоставляющее каждому конкретному сообщению
строго определенное правило различных символов (или соответствующих им
сигналов).
C) Правило (алгоритм), сопоставляющее каждому произвольному сообщению
нестрогую определенную комбинацию различных символов (или соот-
ветствующих им сигналов).
D) Комбинация (алгоритм), сопоставляющее каждому произвольному сообщению
нестрогое определенное правило различных символов (или соответствующих
им сигналов).
E) Правило (комбинация), сопоставляющее каждому конкретному сообщению
строго определенный алгоритм различных символов (или соответствующих им
сигналов).
24. Кодированием называется
A) процесс преобразования информации в комбинацию конкретных символов или
соответствующих им сигналов.
B) процесс преобразования сообщения в комбинацию конкретных символов или
соответствующих им сигналов.
C) процесс преобразования сообщения в комбинацию различных символов или
соответствующих им сигналов.
D) процесс скалярного преобразования сообщения в комбинацию различных
символов или соответствующих им сигналов.
E) процесс векторного преобразования сообщения в комбинацию различных
символов или соответствующих им сигналов.

25. Укажите связь между синдромом s(X) и многочленом ошибок e(X).


A) e( X )  a( X )  s( X )g ( X )  c( X ) .
B) e( X )  a( X )  s( X )g ( X )  c( X ) .
C) e( X )  a( X )  c( X )g ( X )  s( X ) .
D) e( X )  a( X )  c( X )g ( X )  s( X ) .
E) e( X )  a( X )  c( X )g ( X )  s( X ) .

26. Под пакетом ошибок в циклических кодах понимается


A) Группирование ошибок в двух ограниченных областях кодового слова.
B) Группирование ошибок в пяти ограниченных областях кодового слова.
C) Группирование ошибок в одной ограниченной области кодового слова.
D) Группирование ошибок в трех ограниченных областях кодового слова.
E) Группирование ошибок в четырех ограниченных областях кодового слова.

27. Для циклического (n, k) – кода доля необнаружимых пакетов ошибок длины l = r + 1 =
n – k равна
A) 2  ( r  2) .
 ( r  2)
B) 2 .
 ( r 1)
C) 2 .
( r 1)
D) 2 .
 ( r 1)
E) 2 .

28.Операцию свертки для сверточных кодов можно записать в виде


k mi
v j n   g ji n  ui n    g ji n  ui n  m.
k
A)
i 1 i 1m  0
k mi
v j n   g ji n  ui n    g ji n  ui n  m .
k
B)
i 1 i 1m  0
k mi
v j n   g ji n  ui n    g ji n  ui n  m.
k
C)
i 1 i 1m  0
k mi
v j n   g ji n  ui n    g ji n  m  ui n  m .
k
D)
i 1 i 1m  0
k mi
v j n   g ji n  ui n    g ji n  m  ui n  m .
k
E)
i 1 i 1m  0
29. В сверточных кодах кодовое ограничение является

A) Производным от памяти и определяет ширину области кодового слова.


B) Пределом от памяти и определяет ширину области кодового слова.
C) Производным от памяти и определяет длину области кодового слова.
D) Интегралом от памяти и определяет ширину области кодового слова.
E) Интегралом от памяти и определяет длину области кодового слова.

30. Скорость кода в сверточных кодах – это


k 1
A) R .
n
k
B) R .
n 1
k 1
C) R .
n
k
D) R .
n
k
E) R .
n 1
31. Если длина сообщения составляет L бит, то реальная кодовая скорость в сверточных
кодах равна
kL
A) RB   R, L  m .
n ( L  m)
(k  1) L
B) RB   R, L  m .
n ( L  m)
(k  1) L
C) RB   R, L  m .
n ( L  m)
kL
D) RB   R, L  m .
m( L  n )
kL
E) RB   R, L  m .
m( L  n )
32. Если длина сообщения небольшая, то относительная потеря скорости в сверточных
кодах равна

m 1
A) .
Lm
m
B) .
Lm
m 1
C) .
Lm
n
D) .
Lm
m
E) .
Lm
33. Кодовый многочлен в сверточных кодах определяется формулой
n k
j 2
A) v( X )   X n n
 g ji ( X )ui ( X ) .
j 1 i 1
n k
j 1
B) v( X )   X n n
 g ji ( X )ui ( X ) .
j 1 i 1
n k
j 1
C) v( X )   X n n
 g ji ( X )ui ( X ) .
j 1 i 1
n k
j2
D) v( X )   X n n
 g ji ( X )ui ( X ) .
j 1 i 1
k n
j 1
E) v( X )   X n n
 g ji ( X )ui ( X ) .
j 1 i 1
34. Кодер (2,1,3) – кода имеет

A) n = 1 выхода, k = 2 вход, m = 3 регистра разрядов


B) n = 2 выхода, k = 1 вход, m = 3 регистра разрядов
C) n = 3 выхода, k = 1 вход, m = 2 регистра разрядов
D) n = 2 выхода, k = 3 вход, m = 1 регистра разрядов
E) n = 1 выхода, k = 3 вход, m = 2 регистра разрядов

35. Полная память кодера сверточного (n,k,m) – кода определяется


k
A) M   ni .
i 1
k
B) M   ki .
i 1
k 1
C) M   mi .
i 1
k
D) M   mi .
i 1
k 1
E) M   mi .
i 1
36. Для кодов Рида – Соломона минимальное расстояние определяется по формуле
A) d min  n  k  1
B) d min  n  k  1
C) d min  n  k  1
D) d min   ( n  k  1)
E) d min  n  k  1
37. Коды Рида – Соломона способны исправлять искаженные, содержащие
n  k 
A) t    ошибок
 2 
n  k 
B) t   ошибок
 2 
k  n
C) t   ошибок
 2 
n  k 
D) t   ошибок
 2 
k  n
E) t    ошибок
 2 
38. Информационное u и кодовое v слова связаны следующим соотношением
A) v  u  G
B) v  u  G
C) v  u  G
D) v  u  G
E) v  u  G
39. Для декодирования сверточных кодов имеются две альтернативы:

A) алгоритм систематического декодирования и последовательное


декодирование
B) алгоритм Рида-Соломона и последовательное декодирование
C) алгоритм Витерби и последовательное декодирование
D) алгоритм Витерби и каскадное декодирование
E) алгоритм Рида-Соломона и каскадное декодирование
40. МДР кодом называется
A) разделимый код с максимальным расстоянием
B) неразделимый код с максимальным расстоянием
C) разделимый код с минимальным расстоянием
D) неразделимый код с минимальным расстоянием
E) неразделимый код с средним расстоянием

Вам также может понравиться