Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Кодирование информации

.pdf
Скачиваний:
43
Добавлен:
20.04.2015
Размер:
958.2 Кб
Скачать

Министерство образования и науки Российской Федерации

Федеральное агентство по образованию

Ульяновский государственный технический университет

Ульяновск 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