Кодирование информации
.pdfМинистерство образования и науки Российской Федерации
Федеральное агентство по образованию
Ульяновский государственный технический университет
Ульяновск 2006
Министерство образования и науки Российской Федерации
Федеральное агентство по образованию
Ульяновский государственный технический университет
Ульяновск 2006
УДК 681.3 (076)
ББК 32.811.4 я7 К 57
Одобрено секцией методических пособий научно-методического совета университета
Рецензент канд. техн. наук, доцент кафедры ТОР УлГТУ Б. Н. Романов
К 57 |
Кодирование информации: методические указания / сост.: |
|
В. Д. Горбоконенко, В. Е. Шикина. – Ульяновск: УлГТУ, 2006. – |
|
56 с. |
Изложены основные положения теории и методики построения эффективных кодов, оптимальных с точки зрения минимальной средней длины кодовых слов: код Шеннона-Фэно, Хаффмена, префиксные коды. Особое внимание уделено теории помехоустойчивого кодирования, построению корректирующих кодов. Рассмотрены способы обнаружения и исправления ошибок в групповых, циклических кодах, в коде Хемминга.
В ходе изложения теоретического материала рассмотрен ряд задач, что в значительной степени упрощает процесс усвоения. После каждого раздела даны задания.
Приведенный материал может быть использован при подготовке к практическим занятиям по курсу «Прикладная теория информации» студентами, обучающимися по специальностям 23020165 «Информационные системы и технологии» и 200103165 «Авиационные приборы и измерительновычислительные комплексы».
Методические указания подготовлены на кафедре ИВК.
УДК 681.3 (076) ББК 32.811.4 я7
© В. Д. Горбоконенко, В. Е. Шикина, составление, 2006 © Оформление. УлГТУ, 2006
Учебное издание
КОДИРОВАНИЕ ИНФОРМАЦИИ
Методические указания
Составители: ГОРБОКОНЕНКО Вера Дмитриевна ШИКИНА Виктория Евгеньевна
Редактор Н. А. Евдокимова
Подписано в печать 30.03.2006. Формат 60×84/16. Бумага офсетная. Печать трафаретная. Усл. печ. л. 3,03. Уч.-изд. л. 3,00. Тираж 100 экз.
Заказ .
Ульяновский государственный технический университет 432027, г. Ульяновск, ул. Сев. Венец, д. 32.
Типография УлГТУ, 432027, г. Ульяновск, ул. Сев. Венец, д. 32.
СОДЕРЖАНИЕ
Раздел 1. Эффективное кодирование |
3 |
1.1. Общая характеристика эффективного кодирования |
3 |
1.2. Методика Шеннона – Фэно |
3 |
1.3. Кодирование блоками |
5 |
1.4. Методика Хаффмена |
6 |
1.5. Префиксные коды |
8 |
1.6. Упражнения и задачи |
9 |
Раздел 2. Помехоустойчивое кодирование |
10 |
2.1. Общая характеристика помехоустойчивых кодов |
10 |
2.2. Кодовое расстояние и корректирующая способность |
11 |
кода |
13 |
2.3. Линейные групповые коды |
|
2.4. Код Хемминга: идея построения |
15 |
2.5. Групповой код. Принцип формирования образующей |
19 |
матрицы |
27 |
2.6. Циклические коды. Идея построения циклических кодов |
|
2.7. Упражнения и задачи |
39 |
Раздел 3. Аппаратурная реализация |
42 |
3.1. Контроль по четности |
42 |
3.2. Контроль по Хэммингу |
43 |
Раздел 4. Цифровые коды, используемые в АЦП и |
46 |
ЦАП |
46 |
4.1. Натуральный двоичный код |
|
4.2. Двоично-десятичные коды |
47 |
4.3. Код Грея |
49 |
Приложение |
52 |
Библиографический список |
54 |
55
РАЗДЕЛ 1. ЭФФЕКТИВНОЕ КОДИРОВАНИЕ
1.1. Общая характеристика эффективного кодирования
Учитывая статистические свойства источника сообщения, можно минимизировать среднее число двоичных символов, требующихся для выражения одной буквы сообщения, что при отсутствии шума позволяет уменьшить время передачи или объем запоминающего устройства.
Такое эффективное кодирование базируется на основной теореме Шеннона для каналов без шума.
Шеннон доказал, что сообщения, составленные из букв некоторого алфавита, можно закодировать так, что среднее число двоичных символов на букву будет сколь угодно близко к энтропии источника этих сообщений, но не меньше этой величины.
1.2. Методика Шеннона – Фэно
При отсутствии статистической взаимосвязи между буквами конструктивные методы построения эффективных кодов были даны впервые Шенноном и Фэно. Их методики существенно не различаются, поэтому соответствующий код получил название кода Шеннона – Фэно.
Код строится следующим образом: буквы алфавита сообщений выписываются в таблицу в порядке убывания вероятностей. Затем они разделяются на две группы так, чтобы суммы вероятностей в каждой из групп были по возможности одинаковы. Всем буквам верхней половины в качестве первого символа приписывается 1, а всем нижним 0. Каждая из полученных групп в свою очередь разбивается на две подгруппы с одинаковыми суммарными вероятностями и т. д. Процесс повторяется до тех пор, пока в каждой подгруппе останется по одной букве.
Рассмотрим алфавит из восьми букв. Ясно, что при обычном (не учитывающем статистических характеристик) кодировании для представления каждой буквы требуется три символа.
Наибольший эффект сжатия получается в случае, когда вероятности букв представляют собой целочисленные отрицательные степени двойки. Среднее число символов на букву в этом случае точно равно энтропии. Убедимся в этом, вычислив энтропию
|
8 |
|
63 |
(1.1) |
H(z) =− ∑p(zi ) logp(zi ) =1 |
64 |
|
||
|
i=1 |
|
|
|
|
|
|
|
|
и среднее число символов на букву |
|
|
|
|
l |
8 |
63 , |
|
(1.2) |
ср ∑ p(z i ) n(z i ) =1 |
64 |
|
|
|
|
i =1 |
|
|
|
|
|
|
|
|
|
|
|
|
3 |
где n(zi) – число символов в кодовой комбинации1, соответствующей букве zi. Характеристики такого ансамбля и коды букв представлены в табл.1.1.
|
|
|
|
|
|
Табл. 1.1 |
|
|
|
|
|
|
Ступень |
|
Буквы |
Вероятности |
Кодовые |
|
|
|
|
комбинации |
|
|
разбиения |
||
|
|
|
|
|
|
|
|
z1 |
1/2 |
1 |
|
|
|
|
z2 |
1/4 |
01 |
|
|
I |
|
z3 |
1/8 |
001 |
|
|
II |
|
z4 |
1/16 |
0001 |
|
|
III |
|
z5 |
1/32 |
00001 |
|
|
IV |
|
z6 |
1/64 |
000001 |
|
|
V |
|
z7 |
1/128 |
0000001 |
|
|
VI |
|
z8 |
1/128 |
0000000 |
|
|
VII |
|
|
|
|
|
|
|
В более общем случае для алфавита из восьми букв среднее число символов на букву будет меньше трех, но больше энтропии алфавита H(z).
Для ансамбля букв, приведенного в табл. 1.2, энтропия равна 2,76, а среднее число символов на букву 2,84.
Табл. 1.2
Буквы Вероятности Кодовые Ступень комбинации разбиения
z1 |
0,22 |
11 |
|
II |
|
|
z2 |
0,20 |
101 |
|
III |
|
|
z3 |
0,16 |
100 |
|
I |
|
|
z4 |
0,16 |
01 |
|
IV |
|
|
z5 |
0,10 |
001 |
|
V |
|
|
z6 |
0,10 |
0001 |
|
VI |
|
|
z7 |
0,04 |
00001 |
|
|
|
|
|
V I |
|
|
|||
z8 |
0,02 |
00000 |
|
VII |
|
|
|
|
|
|
|
|
|
Следовательно, некоторая избыточность в последовательностях символов осталась. Из теоремы Шеннона следует, что эту избыточность также можно устранить, если перейти к кодированию достаточно большими блоками.
1 Число разрядов в кодовой комбинации здесь и в дальнейшем обозначено через п для того, чтобы избежать расхождения с общепринятой терминологией в области эффективного и помехоустойчивого кодирования.
4
1.3. Кодирование блоками
Рассмотрим сообщения, образованные с помощью алфавита, состоящего всего из двух букв z1 и z2 с вероятностями появления соответственно p(z1)=0,9 и p(z2)=0,1.
Поскольку вероятности не равны, то последовательность из таких букв будет обладать избыточностью. Однако при побуквенном кодировании никакого эффекта не получается.
Действительно, на передачу каждой буквы требуется символ либо 1, либо 0, в то время как энтропия равна 0,47.
При кодировании блоков, содержащих по две буквы, получим коды, показанные в табл. 1.3.
|
|
|
|
|
|
Табл. 1.3 |
|
|
|
|
|
|
|
|
|
|
Блоки |
Вероятности |
Кодовые |
|
Ступень |
|
|
|
комбинации |
|
разбиения |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
z1 |
z1 |
0,81 |
1 |
|
|
|
|
z1 |
z2 |
0,09 |
01 |
|
I |
|
|
z2 |
z1 |
0,09 |
001 |
|
II |
|
|
z2 |
z2 |
0,01 |
000 |
|
III |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Так как буквы статистически не связаны, вероятности блоков определяются как произведение вероятностей составляющих букв.
Среднее число символов на блок получается равным 1,29, а на букву
0,645.
Кодирование блоков, содержащих по три буквы, дает еще больший эффект. Соответствующий ансамбль и коды приведены в табл. 1.4.
|
|
|
|
|
Табл. 1.4 |
|
|
|
|
|
|
|
Блоки |
Вероятности |
Кодовые |
|
Ступень |
|
комбинации |
|
разбиения |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
z1z1z1 |
0,729 |
1 |
|
|
|
z2z1z1 |
0,081 |
011 |
|
I |
|
z1z2z1 |
0,081 |
010 |
|
III |
|
z1z1z2 |
0,081 |
001 |
|
II |
|
z2z2z1 |
0,009 |
00011 |
|
IV |
|
z2z1z2 |
0,009 |
00010 |
|
VI |
|
z1z2z2 |
0,009 |
00001 |
|
V |
|
z2z2z2 |
0,001 |
00000 |
|
VII |
|
|
|
|
|
|
5
Среднее число символов на блок равно 1,59, а на букву 0,53, что всего на 12% больше энтропии. Теоретический минимум Н(z)=0,47 может быть достигнут при кодировании блоков, включающих бесконечное число букв:
limlср = H(z). |
(1.3) |
n→∞ |
|
Следует подчеркнуть, что увеличение эффективности кодирования при укрупнении блоков не связано с учетом все более далеких статистических связей, так как нами рассматривались алфавиты с некоррелированными буквами. Повышение эффективности определяется лишь тем, что набор вероятностей, получающийся при укрупнении блоков, можно делить на более близкие по суммарным вероятностям подгруппы.
1.4. Методика Хаффмена
Рассмотренная нами методика Шеннона – Фэно не всегда приводит к однозначному построению кода. Ведь при разбиении на подгруппы можно сделать большей по вероятности как верхнюю, так и нижнюю подгруппу. Множество вероятностей, приведенных в табл. 1.2, можно было бы разбить иначе, например, так, как это показано в табл. 1.5.
|
|
|
|
|
Табл. 1.5 |
|
|
|
|
|
|
|
Буквы |
Вероятности |
Кодовые |
|
Ступень |
|
комбинации |
|
разбиения |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
z1 |
0,22 |
11 |
|
|
|
z2 |
0,20 |
10 |
|
II |
|
z3 |
0,16 |
011 |
|
I |
|
z4 |
0,16 |
010 |
|
IV |
|
z5 |
0,10 |
001 |
|
III |
|
z6 |
0,10 |
0001 |
|
V |
|
z7 |
0,04 |
00001 |
|
VI |
|
z8 |
0,02 |
00000 |
|
VII |
|
|
|
|
|
|
При этом среднее число символов на букву оказывается равным 2,80. Таким образом, построенный код может оказаться не самым лучшим. При построении эффективных кодов с основанием m>2 неопределенность становится еще больше.
От указанного недостатка свободна методика Хаффмена. Она гарантирует однозначное построение кода с наименьшим для данного распределения вероятностей средним числом символов на букву.
Для двоичного кода методика сводится к следующему. Буквы алфавита сообщений выписываются в основной столбец в порядке убывания вероятностей. Две последние буквы объединяются в одну вспомогательную
6
букву, которой приписывается суммарная вероятность. Вероятности букв, не участвовавших в объединении, и полученная суммарная вероятность снова располагаются в порядке убывания вероятностей в дополнительном столбце, а две последние объединяются. Процесс продолжается до тех пор, пока не получим единственную вспомогательную букву с вероятностью, равной единице.
Методика поясняется примером, представленным табл. 1.6. Значения вероятностей приняты те же, что и в ансамбле табл. 1.2.
Табл. 1.6
|
|
|
|
|
|
|
|
|
|
|
Буквы |
Вероят- |
|
|
Вспомогательные столбцы |
|
|
||
|
|
ности |
|
|
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
z1 |
0,22 |
0,22 |
0,22 |
->0,26 |
->0,32 |
->0,42 |
->0,58 |
->1 |
|
z2 |
0,20 |
0,20 |
0,20 |
0,22 |
0,26 |
0,321 |
0,42 |
|
|
z3 |
0,16 |
0,16 |
0,16 |
0,20 |
0,22 |
0,26 |
|
|
|
z4 |
0,16 |
0,16 |
0,16 |
0,16 |
0,20 |
|
|
|
|
z5 |
0,10 |
0,10 |
0,16 |
0,16 |
|
|
|
|
|
z6 |
0,10 |
0,10 |
0,10 |
|
|
|
|
|
|
z7 |
0,04 |
0,03 |
|
|
|
|
|
|
|
z8 |
0,02 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Для составления кодовой комбинации, соответствующей данному сообщению, необходимо проследить путь перехода сообщения по строкам и столбцам таблицы.
Для наглядности строится кодовое дерево. Из точки, соответствующей вероятности 1, направляются две ветви, причем ветви с большей вероятностью присваивается символ 1, а с меньшей 0. Такое последовательное ветвление продолжаем до тех пор, пока не дойдем до каждой буквы. Кодовое дерево для алфавита букв, рассматриваемого в табл. 1.6, приведено на рис. 1.1.
Рис. 1.1. Кодовое дерево, построенное по табл. 1.6, в соответствии с методом Хаффмена
7