- •Предисловие
- •Лекция 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. Особенности устройств хранения информации
- •Контрольные вопросы
- •Список литературы
Лекция 7. Способы построения двоичных кодов. Алфавитное неравномерное двоичное кодирование сигналами равной длительности. Префиксные коды.
Постановка задачи оптимизации неравномерного кодирования
Неравномерный код с разделителем
Коды без разделителя. Условие Фано
Префиксный код Шеннона–Фано
Префиксный код Хаффмана
1. Постановка задачи оптимизации неравномерного кодирования
При двоичном кодировании знаки первичного алфавита (например, русского) кодируются комбинациями символов двоичного алфавита (то есть «0» и «1»). В случае неравномерности кодирования длины кодов (комбинаций символов вторичного алфавита, представляющих буквы первичного алфавита) могут различаться. Соответственно, длительности передачи отдельных кодов тоже могут различаться. Длительности элементарных сигналов (например, импульсов и пауз) при этом одинаковы (). Очевидно, что для передачи информации, в среднем приходящейся на один знак первичного алфавита, необходимо время. Таким образом,задачу оптимизации неравномерного кодированияможно сформулировать следующим образом:
Необходимо построить такую схему кодирования, в которой суммарная длительность кодов при передаче (или суммарное число кодов при хранении) данного сообщения была бы наименьшей.
За счет чего возможна такая оптимизация? Очевидно, что суммарная длительность сообщения будет меньше, если применить следующий подход:
Тем знакам первичного алфавита, которые встречаются в сообщении чаще, присвоить меньшие по длине коды, а тем знакам первичного алфавита, частота которых меньше – присвоить коды более длинные.
Другими словами, коды знаков первичного алфавита, вероятность которых в сообщении выше, следует строить из возможно меньшего числа элементарных сигналов, а длинные коды использовать для знаков первичного алфавита с малыми вероятностями.
Параллельно должна решаться проблема различимости кодов.
Допустим, что на выходе кодера (кодирующего устройства) получена, например, следующая последовательность элементарных сигналов:
00100010000111010101110000110
Каким образом такая последовательность элементарных сигналов может быть декодирована?
Если бы код был равномерным, приемное устройство (декодер) просто отсчитывало бы заданное (фиксированное) число элементарных сигналов и интерпретировало их в соответствии с кодовой таблицей.
При использовании неравномерного кодирования возможны два подхода к обеспечению различимости кодов.
Первый подходсостоит в использовании специальной комбинации элементарных сигналов, которая интерпретируется декодером какразделитель знаков.
Второй подходсостоит в применениипрефиксных кодов.
Ниже рассмотрим подробнее каждый из подходов.
2. Неравномерный код с разделителем
Условимся, что разделителем отдельных кодов букв первичного алфавита будет последовательность 00 (признак конца знака), а разделителем слов будет последовательность 000 (признак конца слова, он же – пробел). Таким образом, возможными оказываются, например, следующие правила построения кодов:
Код признака конца знака не существует отдельно от знака, поэтому код признака конца знака может быть включен в код буквы. Поэтому коды всех букв будут заканчиваться на 00;
Код любой буквы (кроме пробела) всегда должен начинаться с 1 (с единицы);
Ясно, что разделителю слов всегда предшествует признак конца знака; при этом реализуется последовательность 00000 (пять нулей). Таким образом, если встречаются комбинации 000 или 0000, они не воспринимаются как разделитель слов. Таким образом, коды букв могут оканчиваться на 00, 000 или 0000 (до четырех нулей включительно).
В соответствии с перечисленными выше правилами построим кодовую таблицу для букв русского алфавита, основываясь на данных о вероятностях появления отдельных букв (табл. 5). Таким образом, буквы с наибольшими частотами появления расположим в таблице выше. Каждой букве с номеромбудет соответствоватьсимволов вторичного (двоичного) алфавита.
Формула, по которой можно найти среднюю длину кода для русских букв при данном способе кодирования, имеет вид:
.
Для русского языка, как указывалось раньше, . Поэтому избыточность рассмотренного выше кода составляет:
.
Это означает, что при данном способе кодирования будет передаваться в виде кодов приблизительно на 14больше информации, чем содержит исходное сообщение.
Аналогичные вычисления для английского языка дают для средней длины кода для буквы первичного алфавита значение , что приприводит к избыточности кода в размере.
Табл. 5. Кодовая таблица для букв русского алфавита
Буква |
Код |
Буква |
Код | ||||
Пробел |
000 |
174 |
3 |
Я |
1011000 |
18 |
7 |
О |
100 |
90 |
3 |
Ы |
1011100 |
16 |
7 |
Е |
1000 |
72 |
4 |
З |
1101000 |
16 |
7 |
А |
1100 |
62 |
4 |
Ь, Ъ |
1101100 |
14 |
7 |
И |
10000 |
62 |
5 |
Б |
1110000 |
14 |
7 |
Т |
10100 |
53 |
5 |
Г |
1110100 |
13 |
7 |
Н |
11000 |
53 |
5 |
Ч |
1111000 |
12 |
7 |
С |
11100 |
45 |
5 |
Й |
1111100 |
10 |
7 |
Р |
101000 |
40 |
6 |
Х |
11010100 |
9 |
8 |
В |
101100 |
38 |
6 |
Ж |
10101100 |
7 |
8 |
Л |
110000 |
35 |
6 |
Ю |
10110000 |
6 |
8 |
К |
110100 |
28 |
6 |
Ш |
10110100 |
6 |
8 |
М |
111000 |
26 |
6 |
Ц |
10111000 |
4 |
8 |
Д |
111100 |
25 |
6 |
Щ |
10111100 |
3 |
8 |
П |
1010000 |
23 |
7 |
Э |
11010000 |
3 |
8 |
У |
1010100 |
21 |
7 |
Ф |
11010100 |
2 |
8 |