Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
25
Добавлен:
30.03.2015
Размер:
48.64 Кб
Скачать

Лабораторная работа №2

Универсальное кодирование. Словарное моделирование. Анализ оптимальности кодов Хаффмана

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

Предметом исследования лабораторной работы является принцип универсального кодирования, методы словарного моделирования дискретных источников и кодирование методом Д.А. Хаффмана.

Цель работы – универсальное кодирование дискретного нестационарного источника на примере словарного моделирования и оценка оптимальности кодов Хаффмана.

В ходе работы требуется:

а) повторить теоретический материал [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].

  1. Теоретическая часть

В 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. Вопросы для самопроверки

    1. В чём заключается принцип универсального кодирования? Что нужно для того, чтобы эффективно (с точки зрения суммарной длины кода) закодировать информацию?

    2. Возможно ли кодирование источника без предварительного моделирования?

    3. Насколько верным будет утверждение, что сжатие информации целиком зависит от предсказуемости источника?

    4. Когда словарное моделирование помогает закодировать информацию более компактно?

    5. Предложите способы усовершенствования использованного нами словарного сжатия.

    6. Метод Хаффмана – это метод сжатия или метод кодирования?

Список использованных источников

1 Советов Б.Я. Информационная технология: Учеб. для студ. вузов по спец. «Автоматизир. системы обраб. информ. и управления». – М.: Высш. шк., 1994. – 366 c.

2 Куликовский Л.Ф., Мотов В.В. Теоретические основы информационных процессов: Учеб. пособие для вузов по спец. «Автоматизация и механизация процессов обработки и выдачи информации». – М.: Высш. шк., 1987. – 248 с.

3 Методические указания по оформлению текстовых документов при выполнении учебных заданий студентами всех курсов специальности 220200 / А.В. Никонов. Режим доступа: Кафедральный сервер: [Оформление2.doc] / Омск. гос. техн. ун-т. Каф. АСОИУ. – Омск, 2002.

3

Соседние файлы в папке Лабораторная 2