Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика учебное пособие часть 1.doc
Скачиваний:
31
Добавлен:
16.09.2019
Размер:
882.18 Кб
Скачать

4.4 Алфавитное кодирование с неравной длительностью элементарных сигналов. Код Морзе

В качестве примера использования данного варианта кодирования рассмотрим телеграфный код Морзе (Азбука Морзе). В нем каждой букве или цифре сопоставляется некоторая последовательность кратковременных импульсов – точек и тире, разделяемых паузами. Длительности импульсов и пауз различны: если продолжительность импульсов, соответствующую точке обозначим , то длительность тире – 3. Длительность паузы между точкой/тире – , пауза между буквами – 3, пауза между словами (пробел) – 6.

Таким образом, под знаками Морзе понимают:

– короткий импульс + короткая пауза;

– – длинный импульс + короткая пауза;

0 – длинная пауза;

т.е. код оказывается троичным.

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

Относительные частоты букв английского языка он оценил простым подсчетом литер в ячейках типографской наборной машины. Поэтому самая распространенная английская буква Е получила код «точка».

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

О – – – Ю   – –

Е  Щ    

А   Э     

И   Ф    

Избыточность кода Морзе для русского алфавита – 0,233,

английского алфавита – 0,19.

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

4.5 Блочное двоичное кодирование

Вернемся к проблеме оптимального кодирования. Пока что наилучший результат был получен при кодировании по методу Хаффмана – для русского алфавита избыточность оказалась менее 1%. При этом указывалось, что код Хаффмана улучшить невозможно.

На первый взгляд это противоречит первой теореме Шеннона, утверждающей, что всегда можно предложить способ кодирования, при котором избыточность будет сколь угодно малой величиной.

На самом деле это противоречие возникло из-за того, что до сих пор мы ограничивали себя алфавитным кодированием.

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

Пример 2. Пусть имеется словарь некоторого языка, содержащий n =16000 слов (это, безусловно, более чем солидный словарный запас!). Поставим каждому слову равномерный двоичный код. Очевидно, длина кода может быть найдена из соотношения К(А, 2)  log2n  13,97 = 14.

Следовательно, каждое слово кодируется комбинацией из 14 нулей/единиц  получаются своего рода двоичные иероглифы. Например, пусть следующим словам соответствуют коды:

информатика 10101010101010;

интересная 11100011100011;

наука 00000000000001.

Легко оценить, что при средней длине русского слова К(r) = 6.3 буквы (5.3 буквы + пробел), средняя информация на знак первичного алфавита при таком способе кодирования будет равна:

I(A) = K(A, 2)/ K(ru) = 14/6.3 =2.222 бит.

Это более чем в 2 раза меньше, чем 5 бит при равномерном алфавитном кодировании. Для английского языка такой метод кодирования дает 2.545 бит на знак.

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

Еще более эффективным окажется кодирование в том случае, если сначала установить относительную частоту появления различных слов в текстах и затем использовать код Хаффмана. Подобные исследования провел в свое время Шеннон: по относительным частотам 8727 наиболее употребляемых в английском языке слов он установил, что средняя длина информации на знак первичного алфавита оказывается равной 2.15 бит.

Вместо слов можно кодировать сочетания букв - блоки. В принципе блоки можно считать словами равной длины, не имеющими, однако, смыслового содержания. Удлиняя блоки и применяя код Хаффмана теоретически можно добиться того, что средняя информация на знак кода будет сколь угодно приближаться к I.

Пример 3. Пусть первичный алфавит состоит из двух знаков а и b с вероятностями, соответственно 0.75 и 0.25. Сравнить избыточность кода Хаффмана при алфавитном и блочном кодировании.

При алфавитном кодировании

Знак р1 Код

а 0.75 0

b 0.25 1

I(A) ср = –0.75 log20.75 – 0.25 log20.25 = 0.915.

K(A, 2) = 1, Q = .

При блочном двухбуквенном кодировании (очевидно, что Pij = Pi  Pj):

Знак рij Код

аа 0,562 0

ab 0,188 11

ba 0,188 100

bb 0,062 101

IA2 = – 0.562log2 0.562 – 0.1882log2 0.188 – 0.062log2 0.062 = 1.62.

(В пересчете на 1 знак - IA1=0,81).

К(А, 2) = 10.562 + 20.188 + 3(0.188 + 0.062) = 1.688. (в пересчете на 1 знак К=0.844).

Q(A, 2) = .

Таким образом, блочное кодирование обеспечивает построение более эффективного кода по сравнению с алфавитным. При использовании блоков большей длины (3-х буквенные и более) избыточность стремится к 0 в полном соответствии с 1-ой теоремой Шеннона.

Контрольные вопросы и задания.

1. Считая алфавит самостоятельным, определить количество информации на каждый символ выражения «МЫ НЕ РАБЫ, РАБЫ НЕМЫ». Определить среднее количество информации на знак.

2. Построить коды Шеннона - Фано и Хаффмана для задания 1. Определить среднюю длину кода и оценить избыточность.

3. Построить равномерный код для задания 1, оценить его избыточность.

4. Код Морзе для цифр следующий

0      5     

1  6    

2     7  

3  8  

4   9 

Считая алфавит самостоятельным, а появление различных цифр – равновероятным, найти избыточность кода Морзе для цифрового алфавита

5. В лексиконе «людоедки» Эллочки Щукиной (И.Ильф, Петров «12 стульев») было 17 словосочетаний (Хо - хо! Ого! У вас спина белая! Шутишь, парниша! Блеск! и т.д.). Предложить свой вариант блочного кодирования, оценить избыточность кода.