Исследование и моделирование информационных процессов и систем. Учебное пособие
.pdf-кодирование без помех;
-кодирование с помехами.
Собственно, при передаче сообщения по каналу связи помехи присутствуют всегда, разница лишь в их мощности, частоте и степени вредоносности, которую они способны причинить сообщению. В некоторых случаях воздействие помех незначительно и значимого искажения сигнала не происходит. В этом случае будем вести речь о кодировании без помех.
Пусть на передачу каждого элементарного символа(например, 0 или 1) тратится одно и то же время. Тогда при отсутствии помех оптимальным будет, очевидно, такой код, при котором на передачу сообщения заданной длины будет затрачено минимальное количество времени или, что то же самое – минимальное количество элементарных символов. При наличии же помех оптимальным будет код, при котором сообщение подвергается минимальному искажению. Рассмотрим оба эти случая.
Оптимальное кодирование без помех. Рассмотрим сле-
дующую задачу: закодировать двоичным кодом буквы так, чтобы каждой букве соответствовала определенная комбинация символов 0 и 1 и чтобы среднее число этих символов на букву текста было минимальным.
Пусть имеется 32 буквы русского алфавита : а, б, в, г, д, е, ж, з, и, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч, ш, щ, ъ, ы, ь, ю, я плюс промежуток между словами, который будем обозначать _ . Если не различать букв ъ и ь (как принято в телеграфии), то получим 32 буквы: а, б, в, г, д, е, ж, з, и, к, л, м, н, о, п, р, с, т, у, ф, х, ц, ч,
ш, щ, (ъ, ь), ы, ю, я, _.
Первый вариант: не меняя порядка букв, пронумеровать их от 0 до 31 и перевести в двоичную систему счисления. Тогда получим следующий код:
а ~ 00000 б ~ 00001 в ~ 00010
г~ 00011
.........
я ~ 11110 _ ~ 11111
81
Вэтом коде на каждую букву тратится ровно 5 элементарных символов. Возникает вопрос, является ли этот код оптимальным и нельзя ли составить другой код, в котором на одну букву будет в среднем приходиться меньше элементарных символов?
Всвязи с этим рассмотрим другой способ кодирования. Так как одни буквы (а, е, о) встречаются часто, а другие (щ, э, ф) редко, то часто встречающиеся буквы целесообразно закодировать меньшим числом символов, а реже встречающиеся– большим. Чтобы составить такой код, нужно знать частоты букв в русском
тексте. Они известны и |
даны в таблице, приведённой в |
приложении 3. |
|
Очевидно, что пользуясь таким кодом можно достичь ми- |
|
нимума целевой функции, равной средней длине сообщения: |
|
q = å p(ci ) × n(ci ) =å pi ni , |
|
i |
i |
где p(ci) и n(ci) – вероятность и длина кодовой комбинации ci соответственно.
Пользуясь такой таблицей, можно также составить наиболее экономичный код на основе соображений, связанных с количеством информации. Код будет информационно самым экономичным, когда каждый элементарный символ будет передавать максимальную информацию. Рассмотрим элементарный символ, т.е. изображающий его сигнал как физическую систему с двумя возможными состояниями 0 и 1. Информация, которую дает этот символ, равна энтропии системы и максимальна в случае, когда оба состояния равновероятны. В этом случае элементарный символ передает информацию, равную одной 1 двоичной единице. Поэтому основой оптимального кодирования будет требование, чтобы элементарные символы в закодированном тексте встречались в среднем одинаково часто.
Оптимальное кодирование с помехами. В теории инфор-
мации существует важное понятиеинформационная скорость, или скорость передачи информации, которая определяется средним количеством информации, передающимся по каналу в единицу времени. Она зависит как от характеристик данного канала связи, таких, как объем алфавита используемых символов, техни-
82
ческая скорость их передачи, статистические свойства помех в линии, так и от вероятностей поступающих на вход символов и их статистической взаимосвязи.
Под технической скоростью передачи VT, называемой так-
же скоростью манипуляции, подразумевают число элементарных сигналов (символов), передаваемых по каналу в единицу времени. Она зависит от свойств линии связи и быстродействия аппаратуры канала. При известной скорости манипуляции VT скорость передачи информации по каналу R задается соотношением R=I(с)VT, где I(с) — среднее количество информации, переносимое одним символом.
Для теории и практики важно выяснить, до какого предела и каким путем можно повысить скорость передачи информации по конкретному каналу связи. Предельные возможности канала по передаче информации характеризуются его пропускной спо-
собностью. Пропускная способность канала С равна той макси-
мальной скорости передачи информации по данному каналу, которой можно достигнуть при самых совершенных способах передачи и приема.
Теория помехоустойчивого кодирования базируется на результатах исследований, проведенных К. Шенноном и сформулированных им в виде следующей теоремы.
1. При любой производительности источника сообщений, меньшей, чем пропускная способность канала, существует такой способ кодирования, который позволяет обеспечить передачу всей информации, создаваемой источником сообщений, со сколь угодно малой вероятностью ошибки.
2. Не существует способа кодирования, позволяющего вести передачу информации со сколь угодно малой вероятностью ошибки, если производительность источника сообщений больше пропускной способности канала.
В первую очередь, отметим фундаментальность полученного результата. Теорема устанавливает теоретический предел возможной эффективности системы при достоверной передаче информации. Ею опровергнуто казавшееся интуитивно правильным представление о том, что достижение сколь угодно малой вероятности ошибки в случае передачи информации по каналу с по-
83
мехами возможно лишь при уменьшении скорости передачи до нуля. Из теоремы следует, что помехи в канале не накладывают ограничений на точность передачи. Ограничение накладывается только на скорость передачи, при которой может быть достигнута сколь угодно высокая достоверность передачи.
Во-вторых, теорема неконструктивна в том смысле, что в ней не затрагивается вопрос о путях построения кодов, обеспечивающих указанную идеальную передачу. Однако, обосновав принципиальную возможность такого кодирования, она мобилизовала усилия ученых на разработку конкретных кодов.
Бурный рост теории и практики помехоустойчивого кодирования в последнее десятилетие связан, в первую очередь, с созданием средств телеобработки данных, вычислительных систем и сетей, региональных автоматизированных систем управления, систем автоматизации научных исследований. Высокие требования к достоверности передачи, обработки и хранения информации в указанных системах диктовали необходимость такого -ко дирования информации, которое обеспечивало бы возможность обнаружения и исправления ошибки.
В этом случае кодирование должно осуществляться , так чтобы сигнал, соответствующий принятой последовательности символов, после воздействия на него предполагаемой в канале помехи оставался ближе к сигналу, соответствующему конкретной переданной последовательности символов, чем к сигналам, соответствующим другим возможным последовательностям. (Степень близости обычно определяется по числу разрядов, в которых последовательности отличаются друг от друга).
Это достигается ценой введения при кодированииизбыточности, которая позволяет так выбрать передаваемые последовательности символов, чтобы они удовлетворяли дополнительным условиям, проверка которых на приемной стороне дает возможность обнаружить и исправить ошибки. Коды, обладающие таким свойством, называют помехоустойчивыми. Они используются как для исправления ошибок (корректирующие коды), так и для их обнаружения.
84
У подавляющего большинства существующих в настоящее время помехоустойчивых кодов указанные условия являются следствием их алгебраической структуры. В связи с этим их на-
зывают алгебраическими кодами в отличие, например, от кодов Вагнера, корректирующее действие которых базируется на оценке вероятности искажения каждого символа.
5.3. Методы оптимального кодирования без помех
Код Шеннона – Фано. Как следует из условия экономичности кода на основе соображений, связанных с количеством информации, при выборе каждого символа кодовой комбинации необходимо стараться, чтобы он нес максимальную информацию. Следовательно, каждый символ должен принимать значения 0 и 1 по возможности с равными вероятностями и каждый выбор должен быть независим от значений предыдущих символов.
Для случая отсутствия статистической взаимосвязи между отдельными знаками сообщения конструктивные методыпо строения эффективных кодов были даны впервые американскими учеными Шенноном и Фано. Их методики существенно не различаются, и поэтому соответствующий код получил название кода Шеннона – Фано.
Код строят следующим образом: знаки алфавита сообщений выписывают в таблицу в порядке убывания вероятностей. Затем их разделяют на две группы так, чтобы суммы вероятностей в каждой из групп были по возможности одинаковы. Всем знакам верхней половины в качестве первого символа приписывают 0, а всем нижним – 1. Каждую из полученных групп, в свою очередь, разбивают на две подгруппы с примерно одинаковыми суммарными вероятностями и т. д. Процесс повторяется до тех пор, пока в каждой подгруппе останется по одному знаку.
Благодаря такому кодированию 0 и 1 в сообщениях будут встречаться с примерно одинаковой частотой. Следовательно, данный код близок к оптимальному.
Пример 5.1. Проведем эффективное кодирование ансамбля из восьми знаков, характеристики которого представлены в табл. 5.1.
85
|
|
|
Таблица 5.1 |
|
Знаки |
Вероятность |
Кодовые |
Степень |
|
комбинации |
разбиения |
|||
|
|
|||
z1 |
1/2 |
1 |
I |
|
z2 |
1/4 |
01 |
||
II |
||||
z3 |
1/8 |
001 |
||
III |
||||
z4 |
1/16 |
0001 |
||
IV |
||||
z5 |
1/32 |
00001 |
||
V |
||||
z6 |
1/64 |
000001 |
||
VI |
||||
z7 |
1/128 |
0000001 |
VII |
|
z8 |
1/128 |
0000000 |
|
Ясно, что при обычном (не учитывающем статистических характеристик) кодировании для представления каждого знака требуется три двоичных символа. Используя методику Шеннона
– Фано, получаем совокупность кодовых комбинаций, приведенных в табл. 5.1.
Так как вероятности знаков представляют собой целочисленные отрицательные степени двойки, то избыточность при кодировании устраняется полностью. Среднее число символов на знак в этом случае точно равно энтропии. Убедимся в этом, вычислив энтропию:
8 |
|
|
|
63 |
|
H (Z ) = -å p(zi ) log2 |
p(zi ) =1 |
||||
|
|||||
i=1 |
64 |
||||
и среднее число символов на знак |
|
|
|
|
|
8 |
|
63 |
|
|
|
nср = -å p( zi )n(zi ) = 1 |
, |
||||
|
|||||
i=1 |
64 |
|
|
||
где n(zi) — число символов в кодовой комбинации, соответствующей знаку zi.
Пример 5.2. Определим среднюю длину кодовой комбинации при эффективном кодировании знаков ансамбля, приведенного в табл. 5.2.
86
|
|
|
Таблица 5.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 |
VII |
|
z8 |
0,02 |
00000 |
|
Энтропия ансамбля равна 2,754. В результате сопоставления отдельным знакам ансамбля кодовых комбинаций по методике Шеннона – Фано (табл. 5.2) получаем среднее число символов на знак, равное 2,84. Следовательно, некоторая избыточность в последовательностях символов осталась.
|
|
|
Таблица 5.3 |
|
Знаки |
Вероятность |
Кодовые |
Степень |
|
комбинации |
разбиения |
|||
|
|
|||
z1 |
0,22 |
11 |
|
|
z2 |
0,20 |
10 |
I |
|
z3 |
0,16 |
011 |
||
IV |
||||
z4 |
0,16 |
010 |
||
III |
||||
z5 |
0,10 |
001 |
||
V |
||||
z6 |
0,10 |
0001 |
||
VI |
||||
z7 |
0,04 |
00001 |
||
VII |
||||
z8 |
0,02 |
00000 |
|
Оптимальный код Хаффмена. Рассмотренная методика Шеннона – Фано не всегда приводит к однозначному построению кода. Ведь при разбиении на подгруппы можно сделать большей по вероятности как верхнюю, так и нижнюю подгруппы. Например, множество вероятностей, приведенных в табл. 5.2, можно было бы разбить так, как показано в табл. 5.3. При таком кодировании среднее число символов на знак несколько меньше и равно 2,8.
От указанного недостатка свободна методика Хаффмена. Она гарантирует однозначное построение кода с наименьшим для данного распределения вероятностей средним числом символов на букву.
87
Для двоичного кода методика сводится к следующему. Буквы алфавита сообщений выписывают в основной столбец в порядке убывания вероятностей. Две последние буквы объединяют
водну вспомогательную букву, которой приписывают суммарную вероятность. Вероятности букв, не участвовавших в объединении, и полученная суммарная вероятность снова располагаются
впорядке убывания вероятностей в дополнительном столбце, а две последние объединяются. Процесс продолжается до тех пор, пока не получим единственную вспомогательную букву с вероятностью, равной единице.
Пример 5.3. Используя методику Хаффмана, осуществим эффективное кодирование ансамбля знаков, приведенного в табл. 5.2.
Процесс кодирования поясняется табл. 5.4. Для составления кодовой комбинации, соответствующей данному знаку, необходимо проследить путь перехода знака по строкам и столбцам таблицы.
Таблица 5.4
Далее строим кодовое дерево. Из точки, соответствующей вероятности 1, направляем две ветви, причем ветви с большей вероятностью присваиваем символ 1, а с меньшей 0.
88
Рис. 5.5. Кодовое дерево примера 5.3
Такое последовательное ветвление продолжаем до тех пор, пока не дойдем до вероятности каждой буквы. Кодовое дерево для алфавита букв, рассматриваемого в табл. 5.4, приведено на рис. 5.5.
Теперь, двигаясь по кодовому дереву сверху вниз, можно записать для каждой буквы соответствующую ей кодовую комбинацию:
z1 |
z2 |
z3 |
z4 |
z5 |
z6 |
z7 |
z8 |
01 |
00 |
111 |
110 |
100 |
1011 |
10101 |
10100 |
5.4. Требование разделимости эффективных кодов
Рассмотрев методики построения эффективных кодов, нетрудно убедиться в том, что эффект достигается благодаря присвоению более коротких кодовых комбинаций более вероятным знакам и более длинных менее вероятным знакам. Таким образом, эффект связан с различием в числе символов кодовых комбинаций. А это приводит к трудностям при декодировании, поскольку какую-то короткую комбинацию можно ошибочно принять за начало длинной и наоборот. Конечно, для различения кодовых комбинаций можно ставить специальный разделительный
89
символ, но при этом значительно снижается эффект, которого мы добивались, т. к. средняя длина кодовой комбинации по существу увеличивается на символ.
Более целесообразно обеспечить однозначное декодирование без введения дополнительных символов. Для этого эффективный код необходимо строить так, чтобы любое слово единственным образом разлагалось на элементарные коды. Такая система кодирования называетсяразделимой. Только такая система допускает декодирование.
Кодовая система называетсяпрефиксной, если ни одна комбинация кода не совпадала с началом более длинной комбинации. Коды, удовлетворяющие этому условию, называют префиксными кодами. Например, имеем код
z1 |
z2 |
z3 |
z4 |
00 |
01 |
101 |
100 |
Тогда последовательность 100000110110110100 комбинаций такого кода, декодируется однозначно:
100 |
00 |
01 |
101 |
101 |
101 |
00 |
|
z4 |
z1 |
z2 |
z3 |
z3 |
z3 |
z1 |
непре- |
Последовательность |
000101010101 |
комбинаций |
|||||
фиксного кода, например, кода |
|
|
|
|
|||
|
|
z1 |
z2 |
z3 |
z4 |
|
|
|
|
00 |
01 |
101 |
100 |
|
|
(комбинация 01 является началом комбинации 010), может быть
декодирована по-разному: |
|
|
|
|
|
100 |
00 |
01 |
101 |
101 |
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 |
И вообще, имеет место терема.
Теорема 5.1. Префиксная система является разделимой. Свойство префиксности является достаточным, но не необходимым условием разделимости. Так, схема
90
