|
|||||||||||||||||||||||||||||||||||
АЛГОРИТМ ХАФФМАНА ⇐ ПредыдущаяСтр 2 из 2 АЛГОРИТМ ХАФФМАНА Идея алгоритма Хаффмана основана на частоте появления символа в последовательности. Символ, который встречается в последовательности чаще всего, получает новый очень маленький код, а символ, который встречается реже всего, получает, наоборот, очень длинный код. Пусть нам дано сообщение aaabcbeeffaabfffedbac. Чтобы узнать наиболее выгодный префиксный код для такого сообщения, надо узнать частоту появления каждого символа в сообщении. Шаг 1. Подсчитайте и внесите в таблицу частоту появления каждого символа в сообщении: У вас должно получиться: Шаг 2. Расположите буквы в порядке возрастания их частоты.
Шаг 3. Теперь возьмем два символа с наименьшей чистотой и представим их листьями в дереве, частота которого будет равна сумме частот этих листьев. Символы d и c превращаются в ветку дерева: Шаг 4. Проделываем эти шаги до тех пор, пока не получится дерево, содержащее все символы. Итак, сортируем таблицу: Шаг 5. Объединяем символ e и символ cd в ветку дерева: d C Шаг 6. Сортируем: Шаг 7. Шаг 8. Сортируем: Шаг 9. Шаг 10. Сортируем: Шаг 11. Шаг 12. Получился префиксный код. Теперь осталось расставить 1 и 0. Пусть каждая правая ветвь обозначает 1, а левая — 0. Шаг 13. Составляем код буквы, идя по ветке дерева от буквы к основанию дерева. Тогда код для каждой буквы будет: Задание №1 Закодируйте ASCII кодом слово MOSCOW. Решение: Составим таблицу и поместим туда слово MOSCOW. Используя таблицу ASCII кодов, закодируем все буквы слова:
ОТВЕТ: 100110110011111010011100001110011111110111 Задание №2 Используя табличный код Windows1251, закодируйте слово КОМПЬЮТЕР. Решение:
Ответ: 234206204239252254242197208 Задание №3 Используя алгоритма Хаффмана, закодируйте сообщение: Россия Решение:
Давайте все левые ветви обозначим «1», а правые – «0»
Таким образом: С — 0, Р — 101, О — 100, И — 111, Я — 110 ОТВЕТ: 10110000111110 Домашнее задание составить консект
|
|||||||||||||||||||||||||||||||||||
|