
- •6. Кодирование информации
- •6.1. Общие понятия и определения. Цели кодирования
- •6.2. Кодирование как процесс выражения информации в цифровом виде
- •6.3. Эффективное кодирование
- •6.3. Структурная схема передачи информации
- •6.4. Помехи и ошибки в каналах связи
- •6.5. Передача информации по каналу с помехами
- •6.6. Классификация кодов
- •6.7. Основные характеристики кодов
- •6.8. Геометрическая интерпретация кода
- •6.9.Избыточные коды и принципы использования избыточности
- •6.9.1. Общие положения
- •6.9.2. Связь корректирующей способности кода с кодовым расстоянием
- •6.9.3. Основные методы повышения достоверности передачи информации избыточными кодами
- •6.9.4. Условия целесообразности применения избыточных кодов
- •6.10. Построение двоичного группового кода
- •6.10.1. Определение числа избыточных символов
- •6.10.2. Составление таблицы опознавателей
- •6.10.3. Определение проверочных равенств
- •6.10.4. Мажоритарное декодирование групповых кодов
- •6.11. Матричное представление линейных кодов
- •6.12. Построение циклических кодов
- •6.12.1. Общие понятия и определения
- •6.12.2. Математическое введение к циклическим кодам
- •6.12.3. Требования, предъявляемые к образующему многочлену
- •6.12.4. Выбор образующего многочлена по заданному объему кода и заданной корректирующей способности
- •6.12.4.1. Обнаружение одиночных ошибок
- •6.12.4.2. Исправление одиночных или обнаружение двойных ошибок
- •6.12.4.3. Обнаружение ошибок кратности три и ниже
- •6.12.4.4. Обнаружение и исправление независимых ошибок произвольной кратности.
- •6.12.4.5. Обнаружение и исправление пачек ошибок
- •6.12.5. Методы образования циклического кода
- •6.12.5.1. Матричная запись циклического кода
- •6.12.5.2. Укороченные циклические коды
- •6.12.6. Технические средства кодирования и декодирования для циклических кодов
- •6.12.6.1. Линейные переключательные схемы
- •6.12.6.2. Кодирующие устройства
- •6.12.6.3. Декодирующие устройства
- •Список литературы
- •Оглавление
6.3. Эффективное кодирование
В предыдущих параграфах отмечалось, что в большинстве случаев буквы сообщений преобразуются в последовательности двоичных символов. В рассмотренных устройствах это преобразование выполнялось без учета статистических характеристик поступающих сообщений.
Учитывая статистические свойства источника сообщения, можно минимизировать среднее число двоичных символов, требующихся для выражения одной буквы сообщения, что при отсутствии шума позволяет уменьшигь время передачи или объем запоминающего устройства.
Такое эффективное кодирование базируется на основной теореме Шеннона для каналов без шума.
Шеннон доказал, что сообщения, составленные из букв некоторого алфавита, можно закодировать так, что среднее число двоичных символов на букву будет сколь угодно близко к энтропии источника этих сообщений, но не меньше этой величины.
Теорема не указывает конкретного способа кодирования, но из нее следует, что при выборе каждого символа кодовой комбинации необходимо стараться, чтобы он нес максимальную информацию. Следовательно, каждый символ должен принимать значения 0и 1по возможности с равными вероятностями и каждый выбор должен быть независим от значений предыдущих символов.
При отсутствии статистической взаимосвязи между буквами конструктивные методы построения эффективных кодов были даны впервые Шенноном и Фэно. Их методики существенно не различаются, поэтому соответствующий код получил название кода Шеннона —Фэно.
Код строится следующим образом: буквы алфавита сообщений выписываются в таблицу в порядке убывания вероятностей. Затем они разделяются на две группы так, чтобы суммы вероятностей в каждой из групп были по возможности одинаковы. Всем буквам верхней половины в качестве первого символа приписывается 1, а всем нижним 0.Каждая из полученных групп в свою очередь разбивается на две подгруппы с одинаковыми суммарными вероятностями и т. д. Процесс повторяется до тех пор, пока в каждой подгруппе останется по одной букве.
Рассмотрим алфавит из восьми букв. Ясно, что при обычном (не учитывающем статистических характеристик) кодировании для представления каждой буквы требуется три символа.
Наибольший эффект сжатия получается в случае, когда вероятности букв представляют собой целочисленные отрицательные степени двойки. Среднее число символов на букву в этом случае точно равно энтропии. Убедимся в этом, вычислив энтропию
и среднее число символов на букву
,
где n(zi) —число символов в кодовой комбинации, соответствующей букве zi.
Характеристики такого ансамбля и коды букв представлены в табл.6.3.
Таблица 6.3
Буквы |
Вероятности |
Кодовые комбинации |
Ступень разбиения |
z1 z2 z3 z4 z5 z6 z7 z8 |
1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/128 |
1 01 001 0001 00001 000001 0000001 0000000 |
I II III IV V VI VII |
В более общем случае для алфавита из восьми букв среднее число символов на букву будет меньше трех, но больше энтропии алфавита H(Z).
Для ансамбля букв, приведенного в табл. 6.4,энтропия равна 2,76,а среднее число символов на букву - 2,84.
Таблица 6.4
Буквы |
Вероятности |
Кодовые комбинации |
Ступень разбиения |
z1 z2 z3 z4 z5 z6 z7 z8 |
0,22 0,20 0,16 0,16 0,10 0,10 0,04 0,02 |
11 101 100 01 001 0001 00001 00000 |
II III I IV V VI VII |
Следовательно, некоторая избыточность в последовательностях символов осталась. Из теоремы Шеннона следует, что эту избыточность также можно устранить, если перейти к кодированию достаточно большими блоками.
Рассмотрим сообщения, образованные с помощью алфавита, состоящего всего из двух букв z1иz2 , с вероятностями появления соответственноp(z1)=0,9 иp(z2)=0,1.
Поскольку вероятности не равны, то последовательность из таких букв будет обладать избыточностью. Однако при побуквенном кодировании никакого эффекта не получается.
Действительно, на передачу каждой буквы требуется символ либо 1,либо 0,в то время как энтропия равна 0,47.
При кодировании блоков, содержащих по две буквы, получим коды, показанные в табл. 6.5.
Таблица 6.5
Блоки |
Вероятности |
Кодовые комбинации |
Ступень разбиения |
z1 z1 z1 z2 z2 z1 z2 z2
|
0,81 0,09 0,09 0,01
|
1 01 001 000
|
I II III
|
Так как буквы статистически не связаны, вероятности блоков определяются как произведение вероятностей составляющих букв.
Среднее число символов на блок получается равным 1,29,а на букву 0,645.
Кодирование блоков, содержащих по три буквы, дает еще больший эффект. Соответствующий ансамбль и коды приведены в табл.6.6.
Таблица 6.6
Блоки |
Вероятности |
Кодовые комбинации |
Ступень разбиения |
z1 z1 z1 z2 z1 z1 z1 z2 z1 z1 z1 z2 z2 z2 z1 z2 z1 z2 z1 z2 z2 z2 z2 z2 |
0,729 0,081 0,081 0,081 0,009 0,009 0,009 0,001 |
1 011 010 001 00011 00010 00001 00000 |
I III II IV VI V VII |
Среднее число символов на блок равно 1,59,а на букву - 0,53,что всего на 12%больше энтропии.
Теоретический минимум H(Z)=0,47может быть достигнут при кодировании блоков, включающих бесконечное число букв -
.
Следует подчеркнуть, что увеличение эффективности кодирования при укрупнении блоков не связано с учетом все более далеких статистических связей, так как нами рассматривались алфавиты с некоррелированными буквами. Повышение эффективности определяется лишь тем, что набор вероятностей, получающийся при укрупнении блоков, можно делить на более близкие по суммарным вероятностям подгруппы.
Рассмотренная нами методика Шеннона—Фэно не всегда приводит к однозначному построению кода. Ведь при разбиении на подгруппы можно сделать большей по вероятности как верхнюю, так и нижнюю подгруппу.
Множество вероятностей, приведенных в табл. 6.4, можно было бы разбить иначе, например, так, как это показано в табл. 6.7.
Таблица 6.7
Буквы |
Вероятности |
Кодовые комбинации |
Ступень разбиения |
z1 z2 z3 z4 z5 z6 z7 z8 |
0,22 0,20 0,16 0,16 0,10 0,10 0,04 0,02 |
11 10 011 010 001 0001 00001 00000 |
II I IV III V VI VII |
При этом среднее число символов на букву оказывается равным 2,80.Таким образом, построенный код может оказаться не самым лучшим. При построении эффективных кодов с основаниемm>2 неопределенность становится еще больше.
От указанного недостатка свободна методика Хаффмена. Она гарантирует однозначное построение кода с наименьшим для данного распределения вероятностей средним числом символов на букву.
Для двоичного кода методика сводится к следующему. Буквы алфавита сообщений выписываются в основной столбец в порядке убывания вероятностей. Две последние буквы объединяются в одну вспомогательную букву, которой приписывается суммарная вероятность. Вероятности букв, не участвовавших в объединении, и полученная суммарная вероятность снова располагаются в порядке убывания вероятностей в дополнительном столбце, а две последние объединяются. Процесс продолжается до тех пор, пока не получим единственную вспомогательную букву с вероятностью, равной единице.
Методика поясняется примером, представленным в табл. 6.8.Значения вероятностей приняты те же, что и в ансамбле табл. 6.4.
Вспомогательные столбцы |
Буквы |
Вероят- ности |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
z1 z2 z3 z4 z5 z6 z7 z8
|
|
|
|
|
|
|
|
|
Для составления кодовой комбинации, соответствующей данному сообщению, необходимо проследить путь перехода сообщения по строкам и столбцам таблицы.
Для наглядности строится кодовое дерево. Из точки, соответствующей вероятности 1,направляются две ветви, причем ветви с большей вероятностью присваивается символ 1,а с меньшей 0.Такое последовательное ветвление продолжаем до тех пор, пока не дойдем до каждой буквы. Кодовое дерево для алфавита букв, рассматриваемого в табл. 6.8,приведено на рис. 6.3.
Теперь, двигаясь по кодовому дереву сверху вниз, можно записать для каждой буквы соответствующую ей кодовую комбинацию:
z1z2z3z4z5z6z7z8
01 00 111 110 100 1011 10101 10100
Рассмотрев методики построения эффективных кодов, нетрудно убедиться в том, что эффект достигается благодаря присвоению более коротких кодовых комбинаций более вероятным буквам и более длинных—менее вероятным буквам. Таким образом, эффект связан с различием в числе символов кодовых комбинаций. А это приводит к трудностям при декодировании. Конечно, для различения кодовых комбинаций можно ставить специальный разделительный символ, но при этом значительно снижается желаемый эффект, так как средняя длина кодовой комбинации по существу увеличивается на символ.
Рис.6.3. Кодовое дерево, построенное по табл. 6.8 методом Хаффмена
Более целесообразно обеспечить однозначное декодирование без введения дополнительных символов. Для этого эффективный код необходимо строить так, чтобы ни одна комбинация кода не совпадала с началом более длинной комбинации. Коды, удовлетворяющие этому условию, называются префиксными кодами. Последовательность комбинаций префиксного кода, например, кода
z1 z2 z3 z4
00 01 101 100
декодируется однозначно
100 00 01 101 101 101 00
z4z1z2z3 z3z3z1
Последовательность комбинаций непрефиксного кода, например, кода
z1 z2 z3 z4
00 01 101 010
(комбинация 01является началом комбинации 010),может быть декодирова-на по-разному:
00 01 01 01 010 101
z1 z2 z2 z2 z4 z3
00 010 101 010 101
z1 z4 z3 z4 z3
или
00 01 010 101 01 01
z1 z2 z4 z3 z2 z2
Нетрудно убедиться, что коды, получаемые в результате применения методики Шеннона—Фэно или Хаффмена, являются префиксными.
Рассмотрим кратко некоторые методы эффективного кодирования в случае коррелированной последовательности букв.
Декорреляция исходной последовательности может быть осуществлена путем укрупнения алфавита букв. Подлежащие передаче сообщения разбиваются на двух-, трех- или l-буквенные сочетания, вероятности которых известны
.
Каждому сочетанию ставится в соответствие кодовая комбинация по методике Шеннона—Фэно или Хаффмена.
Недостаток такого метода заключается в том, что не учитываются корреляционные связи между буквами, входящими в состав следующих друг за другом сочетаний. Естественно, он проявляется тем меньше, чем больше букв входит в каждое сочетание.
Указанный недостаток устраняется при кодировании по методу диаграмм, триграмм или l-грамм. Условимся называтьl-граммой сочетание из lсмежных букв сообщения. Сочетание из двух смежных букв называют диаграммой, из трех —триграммой и.т.д.
Теперь в процессе кодирования l-грамма непрерывно перемещается по тексту сообщения:
z1 z1 z4 z3 ... z1 z4 z4 z2
Кодовое обозначение каждой очередной буквы зависит от l-1предшествовавших ей букв и определяется по вероятностям различныхl‑грамм на основании методики Шеннона—Фэно или Хаффмена.
Конкретное значение lвыбирается в зависимости от степени корреляционной связи между буквами или сложности технической реализации кодирующих и декодирующих устройств.
Подчеркнем в заключение особенности систем эффективного кодирования. Одна из них обусловлена различием в длине кодовых комбинаций. Если моменты снятия информации с источника неуправляемы (например, при непрерывном съеме информации с запоминающего устройства на магнитной ленте), кодирующее устройство через равные промежутки времени выдает комбинации различной длины. Поскольку линия связи используется эффективно только в том случае, когда символы поступают в нее с постоянной скоростью, то на выходе кодирующего устройства должно быть предусмотрено буферное устройство («упругая» задержка). Оно запасает символы по мере поступления и выдает их в линию связи с постоянной скоростью. Аналогичное устройство необходимо и на приемной стороне.
Вторая особенность связана с возникновением задержки в передаче информации.
Наибольший эффект достигается при кодировании длинными блоками, а это приводит к необходимости накапливать буквы, прежде чем поставить им в соответствие определенную последовательность символов. При декодировании задержка возникает снова. Общее время задержки может быть велико, особенно при появлении блока, вероятность которого мала. Это следует учитывать при выборе длины кодируемого блока.
Еще одна особенность заключается в специфическом влияния помех на достоверность приема. Одиночная ошибка может перевести передаваемую кодовую комбинацию в другую, не равную ей по длительности. Это повлечет за собой неправильное декодирование целого ряда последующих комбинаций, который называют треком ошибки.
Специальными методами построения эффективного кода трек ошибки стараются свести к минимуму.