Практическая работа 6
.docx
МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра информационных систем
отчет
по практической работе №6
по дисциплине «Теория информации, данные, знания»
Тема: Эффективное кодирование. Код Хаффмана
Студент гр. 9371 |
|
|
Преподаватель |
|
|
Санкт-Петербург
2020
Цель работы
Письменно ответить на вопросы.
Опишите метод Хаффмана.
Какие существуют другие методы кодирования? Дайте их сравнительную характеристику
Укажите правильный вариант ответа. «Если взять два наименее вероятне символа в алфавите, эти два символа получат кодовые слова с максимальной длиной, отличающиеся:
вариант отчета 1: последним символом
вариант отчета 2: первым символом»
Решить задачи:
Закодировать сообщение методом Хаффмана
сообщение |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
вероятность |
0,3 |
0,2 |
0,2 |
0,1 |
0,1 |
0,05 |
0,05 |
2. Алфавит содержит 7 букв, которые встречаются с вероятностями 0,4; 0,2; 0,1; 0,1; 0,1; 0,05; 0,05. Осуществите кодирование по методу Хаффмана
Выполнение работы
Вопросы:
№ 1
Метод Хаффмана [1, С.58]:
Шаг 1: сортируем символы алфавита в порядке убывания их вероятностей.
Шаг 2: берём два наименее вероятных символа в алфавите. Эти два символа получат кодовые слова с максимальной длиной, отличающиеся последним символом.
Шаг 3: заменяем две последние позиции списка одной и приписываем ей вероятность, равную сумме вероятностей заменяемых позиций и переходим на Шаг 2.
Процесс продолжается до тех пор, пока не останется единственная позиция с вероятностью, равной 1.
№ 2
Другие методы кодирования:
Блочное кодирование [1, С.59]:
Если величина среднего числа символов на знак оказывается значительно больше, чем энтропия, то это говорит об избыточности кода. Чтобы устранить избыточность, надо перейти к кодированию блоками.
Возьмём два символа с вероятностями их появления 0,1 и 0,9 соответственно. Если один из знаков закодировать 0, а другой 1.
Теперь при кодировании блоками.
Среднее число символов на знак уменьшается при кодировании блоками.
-
Блоки
Вероятности
Коды
0,81
1
0,09
01
0,09
001
0,01
000
Арифметическое кодирование:
Это алгоритм сжатия информации без потерь, который при кодировании ставит в соответствие тексту вещественное число из отрезка .
Арифметическое кодирование показывает более высокий результат сжатия, чем алгоритм Хаффмана, для данных с неравномерными распределениями вероятностей кодируемых символов. Каждый символ, при арифметическом кодировании, кодируется нецелым числом бит, что эффективнее кода Хаффмана.
Описание метода арифметического кодирования:
На входе алгоритм принимает текст для кодирования и список частот встречаемости символов.
Шаг 1: смотрим отрезок на координатной прямой.
Шаг 2: каждому символу текста поставим отрезок длиной, равной частоте появления символа.
Шаг 3: считаем символ из входного потока и рассматриваем отрезок, соответствующий этому символу. Делим этот отрезок на части, пропорциональные частотам встречаемости символов.
Шаг 4: переходим к Шагу 3, пока не закончатся символы входного потока.
Шаг 5: выбираем любое число из получившегося отрезка, которое и будет результатом арифметического кодирования
№ 3
Ответ: 1
Задачи:
№ 1
|
|
Построение дерева вероятностей |
Итоговый код |
||||||
1 |
0,3 |
0,3 |
0,3 |
0,3 |
0,4 |
0,6 |
1 |
11 |
|
2 |
0,2 |
0,2 |
0,2 |
0,3 |
0,3 |
0,4 |
|
01 |
|
3 |
0,2 |
0,2 |
0,2 |
0,2 |
0,3 |
|
101 |
||
4 |
0,1 |
0,1 |
0,2 |
0,2 |
|
100 |
|||
5 |
0,1 |
0,1 |
0,1 |
|
001 |
||||
6 |
0,05 |
0,1 |
|
0001 |
|||||
7 |
0,05 |
|
0000 |
№ 2
|
|
Построение дерева вероятностей |
Итоговый код |
||||||
1 |
0,4 |
0,4 |
0,4 |
0,4 |
0,4 |
0,6 |
1 |
0 |
|
2 |
0,2 |
0,2 |
0,2 |
0,2 |
0,4 |
0,4 |
|
10 |
|
3 |
0,1 |
0,1 |
0,2 |
0,2 |
0,2 |
|
1111 |
||
4 |
0,1 |
0,1 |
0,1 |
0,2 |
|
1110 |
|||
5 |
0,1 |
0,1 |
0,1 |
|
1101 |
||||
6 |
0,05 |
0,1 |
|
11001 |
|||||
7 |
0,05 |
|
11000 |
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
Гошин Е.В. Теория информации и кодирования. Самара: Самарский университет, 2018 – 124 с.