ИТ для студентов / ИТ_ЛР / Семестр 1 / Лабораторная 2 / л2 Задание
.docЛабораторная работа №2
Универсальное кодирование. Словарное моделирование. Анализ оптимальности кодов Хаффмана
-
Предмет исследования, цели и задачи работы
Предметом исследования лабораторной работы является принцип универсального кодирования, методы словарного моделирования дискретных источников и кодирование методом Д.А. Хаффмана.
Цель работы – универсальное кодирование дискретного нестационарного источника на примере словарного моделирования и оценка оптимальности кодов Хаффмана.
В ходе работы требуется:
а) повторить теоретический материал [1, 2]: энтропия дискретного источника, коды Хаффмана;
б) сгенерировать псевдо-текст (около 150 символов) с использованием четырёх букв и знака подчёркивания в качестве разделителя слов, интуитивно подражая фонетическим, орфографическим и грамматическим свойствам естественного человеческого языка;
в) для первой трети заготовленного псевдо-текста:
-
найти частоты F(xk) символов использованного алфавита X = {x1, x2, … xN}, N=5;
-
построить словарь D повторяющихся подстрок с указанием частот их появления F(dk);
-
вычислить и сравнить максимальное значение энтропии первого символа оставшейся части текста Hmax и оценки энтропии символа HX и HD, сделанные на основе двух полученных ансамблей состояний;
-
построить два набора двоичных кодов Хаффмана: Huff(X) для основного алфавита и Huff(D) для словаря подстрок.
д) для оставшейся части псевдо-текста:
-
вычислить суммарную длину кода текста LX при использовании равномерных кодов для основного алфавита (1/N бит на символ, где N – мощность алфавита);
-
вычислить суммарную длину кода текста LHuff(X) при использовании кодов Хаффмана для основного алфавита;
-
закодировать оставшуюся часть текста с помощью словаря подстрок D и кодов Хаффмана Huff(D) и подсчитать суммарную длину кода текста LHuff(D);
-
сравнить средние длины двоичного кода, приходящиеся на один символ при кодировании тремя указанными способами, между собой и со значениями Hmax, HX и HD.
е) построить графики оптимальной длины кода и длины кода Хаффмана для событий с разными вероятностями; сделать заключение об оптимальности кодов Хаффмана.
Отчет по лабораторной работе оформить согласно требованиям ГОСТ 7.32-2001 «Отчет о научно-исследовательской работе. Структура и правила оформления» [3].
-
Теоретическая часть
В 1981г. Й.Й. Риссанен и Г.Г. Лангдон предложили принцип универсального кодирования, разделяющий задачу кодирования источника на две составляющих: моделирование и кодирование. Задачей моделирования является получение распределения вероятностей текущего состояния источника. Результатом моделирования источника в момент времени k после получения сообщения sk является множество вероятностей Pk = {pk1, pk2, … pkN} того, какое значение из множества возможных сообщений X = {x1, x2, … xN} выберет ожидаемое sk+1.
После получения сообщения sk+1, которое, например, приняло значение xi, требуется построить для него как можно более короткий код из сообщений выходного алфавита Y = {y1, y2, … yM} (чаще всего двоичного), что является задачей кодирования. Оптимальной длиной кода для sk+1 будет величина
– logM p(xi), (1)
где M – мощность выходного алфавита, p(xi) – объективная вероятность появления сообщения xi. Поскольку объективные вероятности априорно неизвестны, для построения кода используется значение pki, полученное на этапе моделирования. Таким образом, эффективность универсального кодирования зависит и от точности оценки вероятностей при моделировании, и от оптимальности построения кода при кодировании.
Суть словарного моделирования заключается в использовании расширенного алфавита источника – словаря D = {d1, d2, … dN+C}, состоящего из комбинаций элементарных сообщений алфавита X и называются подстроками. При кодировании источника элементарные сообщения принимаются до тех пор, пока не сформируют подстроку словаря D, которая кодируется на основе распределения вероятностей подстрок P = {p1, p2, … pN+С}.
Для эффективного кодирования сообщений алфавита любой мощности может быть использован метод Д.А. Хаффмана, который позволяет построить для каждого сообщения уникальный префиксный код длины (1), округлённой до большего целого [1, 2].
-
Вопросы для самопроверки
-
В чём заключается принцип универсального кодирования? Что нужно для того, чтобы эффективно (с точки зрения суммарной длины кода) закодировать информацию?
-
Возможно ли кодирование источника без предварительного моделирования?
-
Насколько верным будет утверждение, что сжатие информации целиком зависит от предсказуемости источника?
-
Когда словарное моделирование помогает закодировать информацию более компактно?
-
Предложите способы усовершенствования использованного нами словарного сжатия.
-
Метод Хаффмана – это метод сжатия или метод кодирования?
-
Список использованных источников
1 Советов Б.Я. Информационная технология: Учеб. для студ. вузов по спец. «Автоматизир. системы обраб. информ. и управления». – М.: Высш. шк., 1994. – 366 c.
2 Куликовский Л.Ф., Мотов В.В. Теоретические основы информационных процессов: Учеб. пособие для вузов по спец. «Автоматизация и механизация процессов обработки и выдачи информации». – М.: Высш. шк., 1987. – 248 с.
3 Методические указания по оформлению текстовых документов при выполнении учебных заданий студентами всех курсов специальности 220200 / А.В. Никонов. Режим доступа: Кафедральный сервер: [Оформление2.doc] / Омск. гос. техн. ун-т. Каф. АСОИУ. – Омск, 2002.