Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практическая работа 6

.docx
Скачиваний:
24
Добавлен:
02.02.2022
Размер:
36.8 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра информационных систем

отчет

по практической работе №6

по дисциплине «Теория информации, данные, знания»

Тема: Эффективное кодирование. Код Хаффмана

Студент гр. 9371

Преподаватель

Санкт-Петербург

2020

Цель работы

Письменно ответить на вопросы.

  1. Опишите метод Хаффмана.

  2. Какие существуют другие методы кодирования? Дайте их сравнительную характеристику

  3. Укажите правильный вариант ответа. «Если взять два наименее вероятне символа в алфавите, эти два символа получат кодовые слова с максимальной длиной, отличающиеся:

вариант отчета 1: последним символом

вариант отчета 2: первым символом»

Решить задачи:

  1. Закодировать сообщение методом Хаффмана

сообщение

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Гошин Е.В. Теория информации и кодирования. Самара: Самарский университет, 2018 – 124 с.