Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_po_lab_TOI.doc
Скачиваний:
53
Добавлен:
10.02.2015
Размер:
3.64 Mб
Скачать
    1. Метод Хаффмана

Этот метод имеет два преимущества по сравнению с методом Шеннона-Фано: он устраняет неоднозначность кодирования, возникающую из-за примерного равенства сумм частот при разделении списка на две части (линия деления проводится неоднозначно), и имеет, в общем случае, большую эффективность кода.

Исходное множество символов упорядочивается по не возрастанию частоты и выполняются следующие шаги:

1) объединение частот:

  • две последние частоты складываются, а соответствующие символы исключаются из списка;

  • оставшийся после исключения символов список пополняется суммой частот и вновь упорядочивается;

  • предыдущие шаги повторяются до тех пор, пока ни получится единица в результате суммирования и список ни уменьшится до одного символа;

2) построение кодового дерева:

  • строится двоичное кодовое дерево: корнем его является вершина, полученная в результате объединения частот, равная 1; листьями – исходные вершины; остальные вершины соответствуют либо суммарным, либо исходным частотам, причем для каждой вершины левая подчиненная вершина соответствует большему слагаемому, а правая – меньшему; ребра дерева связывают вершины-суммы с вершинами-слагаемыми. Структура дерева показывает, как происходило объединение частот;

  • ребра дерева кодируются: каждое левое кодируется единицей, каждое правое – нулем;

3) формирование кода: для получения кодов листьев (исходных кодируемых символов) продвигаются от корня к нужной вершине и «собирают» веса проходимых ребер.

Пример 2. Даны символы a, b, c, d с частотами fa = 0,5; fb = 0,25; fc = 0,125; fd= 0,125. Построить эффективный код методом Хаффмана.

  1. объединение частот:

Таблица 3.2

Исходные символы s

Частоты fs

Этапы объединения

первый

второй

третий

a

0,5

0,5

0,5

1

b

0,25

0,25

0,5

c

0,125

0,25

d

0,125

2) построение кодового дерева:

1

10

0,5a 0,5

10

0,25 b 0,25

10

0,125 c 0,125 d

3) формирование кода:

a - 1;

b - 01;

c - 001;

d - 000.

Как видно, полученные коды совпадают с теми, что были сформированы методом Шеннона-Фано, следовательно, они имеют одинаковую эффективность.

  1. Примеры решения задач

Закодировать фамилию преподавателя методами Шеннона-Фано и Хаффмана.

  1. Задание

Для выбранной в соответствии с вариантом задания задачи:

  1. Закодировать сигнал методом Шеннона-Фано.

  2. Закодировать сигнал методом Хаффмана.

  3. Выполнить сравнительный анализ результатов кодирования.

  4. Сделать выводы.

  1. Содержание отчета

  1. Подробное кодирование сигнала методом Шеннона-Фано, а именно:

  • таблица:

Символ

алфавита А

Число

появлений mi

Частота символа fi

  • таблица:

Символ

алфавита А

Частота

символа fi

Этапы деления списка символов

Результирующие коды

  • двоичное дерево, изображающее деление списка частот символов;

  • коды фамилии, имени и отчества.

  1. Подробное кодирование сигнала методом Хаффмана, а именно:

  • таблица:

Символ

алфавита А

Частота

символа fi

Этапы объединения частот

  • кодовое бинарное дерево для метода Хаффмана,

  • Символ

    алфавита

    Код

    таблица

  • коды фамилии, имени и отчества.

Столбцы таблиц и таблицы должны быть пронумерованы.

  1. Анализ результатов и выводы.

  1. Варианты задания

Вариант задания формируется каждым студентом индивидуально следующим образом. От источника к приемнику передается следующее сообщение: «фамилия имя отчество». Каждый студент использует в качестве варианта задания свои фамилию, имя и отчество. Например: «иванов семен петрович».

  1. Список литературы

    1. Афанасьев В.В. Теория вероятностей в вопросах и задачах: http://cito-web.yspu.org/link1/metod/theory/theory.html

    2. Топоркова О.М. Информатика: Учебн. пособ. – Калининград: КГТУ, 2001.

    3.  ЯгломА. М.,  ЯгломИ. М. Вероятность и информация. — М.: «Наука», 1973.