0

Используя метод сжатия хаффмана закодируйте следующие слова

Reshak.ru – сборник решебников для учеников старших классов. Здесь можно найти решебники, ГДЗ, переводы текстов по школьной программе. Практически весь материал, собранный на сайте – сделанный для людей. Все решебники выполнены качественно, с приятной навигацией. Вы сможете скачать гдз, решебник английского, улучшить ваши школьные оценки, повысить знания, получить намного больше свободного времени.

Главная задача сайта: помогать школьникам в решении домашнего задания. Кроме того, весь материал гдз совершенствуется, добавляются новые сборники решений.

Информация

© adminreshak.ru

Данный алгоритм (далее для краткости – алгоритм Хаффмана) был разработан в 1952 году и относится к группе статистических методов сжатия. Статистические методы используют различные приёмы для того, чтобы наиболее часто встречающимся символам соответствовали более короткие коды. При этом каждый код однозначно соответствует конкретному символу. Например, в тексте на русском языке буква а встречается гораздо чаще, чем буква ы, поэтому имеет смысл присвоить букве а более короткий код. Соответственно выходной поток этих методов является бит-ориентированным, т.е. не форматированным по границам байтов. Статистические методы работают медленнее словарных, но достигают, как правило, более высокой степени сжатия. Они используют три основных модели для набора статистики (определения вероятностей символов):

В неадаптивных моделях вероятности всех символов алфавита определены заранее. Эта модель обычно применяется только при сжатии текстовых файлов. В полуадаптивных моделях входные данные обрабатываются за 2 прохода: 1-й – для подсчёта вероятностей, 2-й – собственно для сжатия. Эта модель может применяться для сжатия не очень больших изображений. Адаптивные модели вычисляют и корректируют вероятности символов в процессе сжатия, т.е. «на лету». Модели последнего типа сложнее предыдущих, зато являются более универсальными и часто дают наилучшее сжатие.

Рассмотрим кодирование по Хаффману более подробно. Предположим, что вероятности (их заменят частоты) всех символов алфавита уже подсчитаны одним из вышеописанных способов. Тогда:

1. Выписываем в ряд все символы алфавита в порядке убывания вероятноcтей (частоты) их появления в потоке данных (для удобства построения дерева);

2. Объединяем два символа с наименьшими вероятностями в новый составной символ, вероятность которого определяется как сумма вероятностей составляющих его символов. Последовательно повторяем эту операцию до образования единственного составного символа (корня). В результате получается дерево символов, каждый узел которого имеет суммарную вероятность всех объединённых им узлов.

3. Прослеживаем путь от каждого листа дерева к корню, помечая направление движения к каждому узлу (например, вверх/направо –1, вниз/налево – 0). При этом не важен конкретный вид разметки «ветвей» дерева (т.е. помечать направление вверх/направо –1, вниз/налево – 0, или наоборот), но важно придерживаться выбранного способа разметки ко всем «ветвям» дерева.

4. Получившиеся двоичные комбинации, записанные от конца к началу и формируют коды Хаффмана.

Полученный коэффициент сжатия подсчитывается по следующей формуле

, (2)

n – количество бит, необходимое для кодирования символов алфавита фиксированным числом разрядов;

Читайте также:  Все для стрима на ютубе

– вероятность (частота) повторения символа во входном потоке;

– количество бит в коде Хаффмана для символа .

Коды Хаффмана никогда не увеличивают, а чаще всего наоборот, уменьшают среднюю длину кодовых слов для символов в цепочке данных. Поэтому сжатие с применением кодов Хаффмана, всегда имеет коэффициент ³ 1 , причём знак равенства получается только в том случае, когда вероятности всех символов во входном потоке одинаковы.

Пример кодирования по Хаффману приведен на рис. 3.

Примечание:

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

, (3)

Kобщее количество символов во входном потоке;

– количество символов во входном потоке.

2) частоты появления символов в примере расположены не по убыванию исключительно ради наглядности внешнего вида «дерева», т.к. в противном случае ветви пересекались бы между собой. Несмотря на то, что коды Хаффмана в обоих случаях могут отличаться, это не имеет значения, поскольку сохранится свойство однозначности кодов Хаффмана, т.е. ни один из кодов не совпадет с начальными битами другого, более длинного кода.

Рис.3. Пример кодирования по Хаффману.

Если предположить, что входной поток символов был байт-ориентированным, то n=8. Тогда коэффициент сжатия

Если считать входной поток символов бит-ориентированным с равным количеством бит под каждый символ, то n=4 (т.к. для кодирования 10 различных символов a-j требуется разряда). В этом случае будет означать выигрыш, полученный от применения кодов Хаффмана по сравнению с кодами фиксированной, минимально необходимой битовой размерности. В этом случае

Кодирование по Хаффману может использоваться при сжатии изображений как самостоятельно, так и в составе других алгоритмов сжатия, например LZW и JPEG (это наиболее эффективное его применение).

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Только сон приблежает студента к концу лекции. А чужой храп его отдаляет. 8835 – | 7551 – или читать все.

78.85.5.224 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

Идёт приём заявок

Подать заявку

Для учеников 1-11 классов и дошкольников

Выбранный для просмотра документ Работа 1.4 Представление и сжатие текстов (Решение).docx

Работа 1.4 . Представление текстов. Сжатие текстов

Цель работы : практическое закрепление знаний о представлении в компьютере текстовых данных .

Определить, какие символы кодировочной таблицы ASCII ( DOS ) соответствуют всем прописным буквам русского алфавита в кодировочной таблице ANSI ( Windows ). Для выполнения задания создать текст с русским алфавитом в Блокноте, а затем открыть его в режиме просмотра (клавиша F 3) в любом файловом менеджере ( Windows Commander , Far , Total Commander , Norton Commander ) и преобразовать в другую кодировку. После выполнения задания заполнить таблицу.

Читайте также:  Блок питания rls atx 250 схема

1. Используем готовый текстовый файл ANSI.txt..

2. Далее открывает Unreal Commander (Free Commander) и ищем в нём наш файл.

4. Затем нажимаем на режим просмотра F3. Там отобразится содержимое файла в изначальной кодировке ( ANSI ) и там же есть возможность, просмотреть это же содержимое в разных кодировках.

В нашем случае нужно найти значение кодировки ASCII (DOS).

5. Получаем результат:

Ответ: Таких символов нет. Вместо них на экране в режиме просмотра появляются символы псевдографики.

Закодировать текст с помощью кодировочной таблицы ASCII .
Happy Birthday to you !

Записать двоичное и шестиадцатеричное представления кода (для записи шестнадцатеричного кода использовать средство для просмотра файлов любого файлового менеджера).

в 16-ричной СС (используем кодовую таблицу в текстовом файле ASCII . docx )

4 8 61 70 70 79 20 42 69
72 74 68 64 61 79 20 74
6 F 20 79 6F 75 21 21

в двоичной СС (48 16 = 100 1000 2 где 1000 — код цифру 8, а 100 — код цифры 4)
1001000 1100001 1110000 1110000 1111001 0100000 1000010 1101001
1110010 1110100 1101000 1100100 1100001 1111001 0100000 1110100
110 1111 0100000 1111001 1101111 1110101 0100001 0100001

Декодировать текст, записанный в международной кодировочной таблице ASCII (дано десятичное представление).

72 101 108 108 111 44 32 109 121 32 102 114 105 101 110 100 33

Для раскодирования используем таблицу в файле « Коды символов ASCII.mht »
где Dec —
десятизначный код

Пользуясь таблицей кодировки ASCII , расшифровать текст, представленный в виде двоичных кодов символов.

01010000 01100101 01110010 01101110 00100000 01010101 01101110 01101001 01110110 01100101 01110010 01110011 01101001 01110100 01111001

Переведем в 16-ричный код отделяя группу двоичных разрядов, справа налево, по 4 бита:

Используя кодовую таблицу из файла Коды символов ASCII.mht по найденному H ex коду (50) определим первый символ латинского текста « P »

50 65 72 6E 20 55 6D 69 76

65 72 73 69 74 79

Пользуясь кодовой страницей Windows -1251 таблицы кодировки ASCII , получить шестнадцатеричный код слова ИНФОРМАТИЗАЦИЯ.

Используем кодовую таблицу в файле « Таблица Windows-1251.mht »

Согласно этой таблицы русская заглавная буква «И» (в колонке Hex )
имеет 16-ричный код
C 8

Ответ : C8 CD D4 CE D0 CC C0 D2 C8 C7 C0 D6 C8 DF

Во сколько раз увеличится объем памяти, необходимый для хранения текста, если его преобразовать из кодировки KOI 8- R в кодировку Unicode ?

Для кодирования одного символа в кодировке KOI -8 используется 1 байт, а в кодировке UNICODE — 2 байта, следовательно, информационный объем страницы текста увеличится в 2 раза

Читайте также:  Гипсокартон волма отзывы специалистов

Ответ : в 2 раза

С помощью табличного процессора Excel построить кодировочную таблицу ASCII , в которой символы будут автоматически отображаться на экране в соответствии с их заданным десятичным номером (использовать соответствующую текстовую функцию).

Введите ускоренным методом числа от 33 до 254 (по 25 в каждой строке через столбец:
А, С, E, … ,
Q )


В ячейку B 1 введите формулу =СИМВОЛ( A 1) и далее используя ускоренный метод, скопируйте ее в остальные ячейки столбцов: B , D , F ,…, R .

Справка:
Алгоритм Хаффмана. Сжатием информации в памяти компьютера называют такое ее преобразование, которое ведет к сокращению объема занимаемой памяти при сохранении закодированного содержания. Рассмотрим один из способов сжатия текстовой информации — алгоритм Хаффмана. С помощью этого алгоритма строится двоичное дерево, которое позволяет однозначно декодировать двоичный код, состоящий из символьных кодов различной длины. Двоичным называется дерево, из каждой вершины которого выходят две ветви. На рисунке приведен пример такого дерева, построенного для алфавита английского языка с учетом частоты встречаемости его букв.

Закодируем с помощью данного дерева слово « hello »: 0101 100 01111 01111 1110

При размещении этого кода в памяти побитно он примет вид: 01011000 11110111 11110
Таким образом, текст, занимающий в кодировке ASCII 5 байтов, в кодировке Хаффмана займет только 3 байта.

Используя метод сжатия Хаффмана, закодируйте следующие слова:

а) administrator 1111 11011 00011 1010 1100 1010 0110 001 1011 1111 001 1110 1011

( 11111101 10001110 10110010 10011000 11011111 10011110 1011 )

б ) revolution 1011 100 1101001 1110 01111 00010 001 1010 1110 1100

( 10111001 10100111 10011110 00100011 01011101 100 )

в ) economy 100 01000 1110 1100 1110 00011 00000 ( 10001000 11101100 11100001 100000 )

г) department 11011 100 110101 1111 1011 001 00011 100 1100 001

( 11011100 11010111 11101100 10001110 01100001 )

Используя дерево Хаффмана, декодируйте следующие слова:

а) 01110011 11001001 10010110 10010111 100000

(011100 1111 001 001 100 1011 01001 01111 00000) BATTERFLY

б) 00010110 01010110 10011001 01101101 01000100 000

( 00010 1100 1010 1101001 100 1011 0110 1010 001 00000 ) UNIVERSITY

Выбранный для просмотра документ Работа 1.4 Представление и сжатие текстов.docx

Работа 1.4 . Представление текстов. Сжатие текстов

Цель работы : практическое закрепление знаний о представлении в компьютере текстовых данных .

Определить, какие символы кодировочной таблицы ASCII ( DOS ) соответствуют всем прописным буквам русского алфавита в кодировочной таблице ANSI ( Windows ). Для выполнения задания создать текст с русским алфавитом в Блокноте, а затем открыть его в режиме просмотра (клавиша F 3) в любом файловом менеджере ( Windows Commander , Far , Total Commander , Norton Commander ) и преобразовать в другую кодировку. После выполнения задания заполнить таблицу.

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *