Задание к лабораторной работе №1 “Коды Хаффмана” 1. Использовать в качестве источника информации символы текстового файла. Текст должен быть осмысленным и содержать не менее 80 символов. При этом число различных символов в тексте не должно превышать 16. Построить одномерное распределение вероятностей символов в текстовом файле. Вычислить энтропию источника информации H(X) по формуле (3). 2. Построить код Хаффмана. Вычислить среднюю длину кодового слова l по формуле (4) и избыточность кода. Убедиться, что избыточность кода удовлетворяет оценке (5). 3. Реализовать кодер в соответствии с вариантом задания (табл.1). Сформировать сжатый бинарный файл. Убедиться, что размер файла примерно равен ln , где n - общее число символов в исходном файле. 4. Реализовать декодер в соответствии с вариантом задания (табл.1). Убедиться, что исходный и восстановленный текстовые файлы полностью совпадают как по размеру, так и по содержимому. Таблица 1 Варианты заданий Номер варианта 1 2 3 4 5 6 7 8 9 10 11 12 Размер Число Способ передачи конца файла буфера анализируемых кодера разрядов в (бит) декодере 8 1 Добавление неполного кодового слова 8 1 Добавление количества символов в файле 8 2 Добавление неполного кодового слова 8 2 Добавление количества символов в файле 16 1 Добавление неполного кодового слова 16 1 Добавление количества символов в файле 16 2 Добавление неполного кодового слова 16 2 Добавление количества символов в файле 32 1 Добавление неполного кодового слова 32 1 Добавление количества символов в файле 32 2 Добавление неполного кодового слова 32 2 Добавление количества символов в файле Содержание отчета 1. Цель работы. 2. Задание к лабораторной работе. 3. Исходный текст. 4. Таблица с одномерным распределением вероятностей символов в файле. 5. Вычисление энтропии источника. 6. Алгоритм построения дерева Хаффмана. 7. Дерево Хаффмана. 8. Таблица, содержащая код Хаффмана (список кодовых слов и их длин). 9. Вычисление средней длины кодового слова и избыточности кода. 10. Алгоритм кодирования. а) Таблица соответствия символов во входном файле и узлов в дереве Хаффмана. б) Алгоритм записи информации в бинарный файл с использованием буфера кодера. в) Формирование содержимого бинарного файла вручную в двоичной и шестнадцатеричной системе счисления. г) Определение размера сжатого файла. д) Определение выигрыша по сравнению с равномерным кодированием. 11. Сжатый бинарный файл. 12. Таблица декодирования. 13. Алгоритм декодирования. 14. Восстановленный файл. 15. Листинг программы. 16. Экранные формы для п.3, 4, 5, 8, 9, 10а, 10г, 10д, 11, 12, 14. 17. Выводы по лабораторной работе.