- •Предисловие
- •Лекция 1. Информация. Начальные понятия и определения
- •1. Информация и данные
- •2. Адекватность и формы адекватности информации
- •3. Качество информации
- •4. Понятие об информационном процессе
- •5. Формы представления информации
- •6. Преобразование сообщений
- •Лекция 2. Необходимые сведения из теории вероятностей
- •1. Понятие вероятности
- •2. Сложение вероятностей независимых несовместных событий
- •3. Умножение вероятностей независимых совместных событий
- •4. Нахождение среднего для значений случайных независимых величин
- •5. Понятие условной вероятности
- •6. Общая формула для вероятности произведения событий
- •7. Общая формула для вероятности суммы событий
- •Лекция 3. Понятие энтропии
- •1. Энтропия как мера неопределенности
- •2. Свойства энтропии
- •3. Условная энтропия
- •Лекция 4. Энтропия и информация
- •1. Объемный подход к измерению количества информации
- •2. Энтропийный подход к измерению количества информации
- •Лекция 5. Информация и алфавит
- •Лекция 6. Постановка задачи кодирования. Первая теорема Шеннона.
- •Лекция 7. Способы построения двоичных кодов. Алфавитное неравномерное двоичное кодирование сигналами равной длительности. Префиксные коды.
- •1. Постановка задачи оптимизации неравномерного кодирования
- •00100010000111010101110000110
- •2. Неравномерный код с разделителем
- •3. Коды без разделителя. Условие Фано
- •00100010000111010101110000110
- •00100010000111010101110000110
- •4. Префиксный код Шеннона–Фано
- •5. Префиксный код Хаффмана
- •Лекция 8. Способы построения двоичных кодов. Другие варианты
- •1. Равномерное алфавитное двоичное кодирование. Байтовый код
- •2. Международные системы байтового кодирования текстовых данных. Универсальная система кодирования текстовых данных
- •3. Алфавитное кодирование с неравной длительностью элементарных сигналов. Код Морзе
- •4. Блочное двоичное кодирование
- •101010111001100010000000001000000000000001
- •5. Кодирование графических данных
- •6. Кодирование звуковой информации
- •Лекция 9. Системы счисления. Представление чисел в различных системах счисления. Часть 1
- •1. Системы счисления
- •2. Десятичная система счисления
- •3. Двоичная система счисления
- •4. 8- И 16-ричная системы счисления
- •5. Смешанные системы счисления
- •6. Понятие экономичности системы счисления
- •Лекция 10. Системы счисления. Представление чисел в различных системах счисления. Часть 2.
- •1. Задача перевода числа из одной системы счисления в другую
- •2. Перевод q p целых чисел
- •3. Перевод p q целых чисел
- •4. Перевод p q дробных чисел
- •6. Перевод чисел между 2-ичной, 8-ричной и 16-ричной системами счисления
- •Лекция 11. Кодирование чисел в компьютере и действия над ними
- •1. Нормализованные числа
- •2. Преобразование числа из естественной формы в нормализованную
- •3. Преобразование нормализованных чисел
- •4. Кодирование и обработка целых чисел без знака
- •5. Кодирование и обработка целых чисел со знаком
- •6. Кодирование и обработка вещественных чисел
- •Лекция 12. Передача информации в линии связи
- •1. Общая схема передачи информации в линии связи
- •2. Характеристики канала связи
- •3. Влияние шумов на пропускную способность канала
- •Лекция 13. Обеспечение надежности передачи информации.
- •1. Постановка задачи обеспечения надежности передачи
- •2. Коды, обнаруживающие одиночную ошибку
- •3. Коды, исправляющие одиночную ошибку
- •Лекция 14. Способы передачи информации в компьютерных линиях связи
- •1. Параллельная передача данных
- •2. Последовательная передача данных
- •3. Связь компьютеров по телефонным линиям
- •Лекция 15. Классификация данных. Представление данных в памяти компьютера
- •1. Классификация данных
- •2. Представление элементарных данных в озу
- •Лекция 16. Классификация структур данных
- •1. Классификация и примеры структур данных
- •2. Понятие логической записи
- •Лекция 17. Организация структур данных в оперативной памяти и на внешних носителях
- •1. Организация структур данных в озу
- •2. Иерархия структур данных на внешних носителях
- •3. Особенности устройств хранения информации
- •Контрольные вопросы
- •Список литературы
3. Коды без разделителя. Условие Фано
Рассмотрев один из вариантов двоичного неравномерного кодирования, попробуем найти ответ на следующий вопрос: возможно ли такое кодирование без использования разделительных знаков?
Суть этой проблемы состоит в нахождении такого варианта кодирования сообщения, при котором последующее выделение из сообщения каждого отдельного знака (то есть декодирование) оказывается однозначным без специальных указателей разделения знаков.
Наиболее простыми и употребимыми кодами без разделителя являются так называемые префиксные коды, которые удовлетворяют следующему условию –условию Фано:Сообщение, закодированное с использованием неравномерного кода может быть однозначно декодировано, если никакой из кодов в данном сообщении не совпадает с префиксом* (началом) какого-либо иного более длинного кода.
Например, если имеется код 110, то уже не могут использоваться коды 1, 11, 1101, 110101 и пр.
Если условие Фано выполняется, то при прочтении (декодировании, расшифровке) закодированного сообщения путем сопоставления с таблицей кодов всегда можно точно указать, где заканчивается один код и начинается другой.
Пример 1. Являются ли коды, представленные втабл. 4,префиксными? Коды, представленные в табл. 4, не являются префиксными. См., например, коды букв «О» и «Е», «А» и «Н», «С» и «М», «Д» и «Ч».
Пример 2. Имеется таблица префиксных кодов (табл. 6). Требуется декодировать следующее сообщение, закодированное с использованием этой приведенной кодовой таблицы:
00100010000111010101110000110
Табл. 6. Таблица префиксных кодов
А |
Л |
М |
Р |
У |
Ы |
10 |
010 |
00 |
11 |
0110 |
0111 |
Декодирование производится циклическим повторением следующих действий:
«Отрезать» от текущего сообщения крайний слева символ, присоединить его справа к рабочему (текущему) кодовому слову;
сравнить текущее кодовое слово с кодовой таблицей; если совпадения нет, вернуться к пункту 1.
С помощью кодовой таблицы текущему кодовому слову поставить в соответствие символ первичного алфавита;
Проверить, имеются ли еще знаки в закодированном сообщении; если да, то перейти к пункту 1.
Применение данного алгоритма к предложенному выше закодированному сообщению дает:
00100010000111010101110000110
00 |
10 |
00 |
10 |
00 |
0111 |
010 |
10 |
11 |
10 |
00 |
0110 |
м |
а |
м |
а |
м |
ы |
л |
а |
р |
а |
м |
у |
Таким образом, доведя процедуру декодирования до конца, можно получить сообщение: «мама мыла раму».
Таким образом, использование префиксного кодирования позволяет делать сообщение более коротким, поскольку нет необходимости передавать разделители знаков.
Однако условие Фано не устанавливает конкретного способа формирования префиксного кода, оставляя поле для деятельности по разработке наилучшего из возможных префиксных кодов.
4. Префиксный код Шеннона–Фано
Рассмотрим вариант кодирования, который был предложен в 1948 – 1949 гг. независимо К. Шенноном и Р. Фано.
Рассмотрим схему кодирования (как она строится) Шеннона–Фано на следующем примере.
Пусть имеется первичный алфавит , состоящий из шести знаков:, где. Пусть вероятности появления этих знаков в сообщениях таковы:,,,,и. Расположим эти знаки в таблице в порядке убывания вероятностей.
Разделим знаки на две группы так, чтобы суммы вероятностей в каждой из этих двух групп были бы приблизительно равными. При этом в 1-ю группу попадут и, а остальные – во 2-ю группу. Знакампервой группы присвоим первый слева разряд их кодов «0», а первым слева разрядом кодов символов второй группы пусть будет «1».
Продолжим деление каждой из получающихся групп на подгруппы по той же схеме, то есть так, чтобы суммы вероятностей на каждом шаге в обеих подгруппах делимой группы были бы возможно более близкими. Таким образом будем получать по одному следующие разряды кодов символов . Эти следующие разряды будем приписывать справа к уже имеющимся.
Вся эта процедура может быть схематически изображена в табл 7.
Табл. 7. Построение кода Шеннона-Фано
Знак |
|
Разряды кода |
Код | |||
1-й |
2-й |
3-й |
4-й | |||
|
0.30 |
0 |
0 |
|
|
00 |
|
0.20 |
0 |
1 |
|
|
01 |
|
0.20 |
1 |
0 |
|
|
10 |
|
0.15 |
1 |
1 |
0 |
|
110 |
|
0.10 |
1 |
1 |
1 |
0 |
1110 |
|
0.05 |
1 |
1 |
1 |
1 |
1111 |
Видно, что построенные коды знаков удовлетворяют условию Фано, следовательно, такое кодирование является префиксным.
Найдем среднюю длину полученного кода по формуле
,
где – число разрядов (символов) в коде, соответсвующем символу.
Из таблицы видно, что ,,.
Таким образом, получаем:
.
Таким образом, для кодирования одного символа первичного алфавитапотребовалось в среднем 2.45 символов вторичного (двоичного) алфавита.
Определим среднее количество информации, приходящееся на знак первичного алфавита в первом приближении (с учетом различной вероятности появления этих знаков в сообщениях). Применим формулу Шеннона:
.
Найдем избыточность полученного двоичного кода:
,
то есть избыточность – около 2.5.
Выясним, является ли полученный код оптимальным. Нулей в полученных кодах – 6 штук, а единиц – 11 штук. Таким образом, вероятности появления 0 и 1 далеко не одинаковы. Следовательно, полученный код нельзя считать оптимальным.