Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №2.doc
Скачиваний:
15
Добавлен:
07.03.2016
Размер:
332.29 Кб
Скачать

2.2 Арифметическое кодирование.

(30 баллов)

Цель: закрепить понимание арифметического кодирования, научиться кодировать и раскодировать данные с помощью этого алгоритма.

Задание: а) перед вами список символов, из которых состоит закодированный текст и вероятность каждого символа в тексте. О закодированном тексте известно количество символов в нем и число – результат арифметического кодирования. Пользуясь этой информацией, сформируйте диапазоны для заданных символов и расшифруйте текст. Переведите кодовое число в двоичный формат и подсчитайте коэффициент сжатия. Определите, каким бы мог быть максимальный коэффициент сжатия, пользуясь теоремой Шеннона (предполагая, что мы выделяем–log2(p) бит на каждый символ, гдеp – вероятность этого символа. б) выберите самостоятельно текст для кодирования (около 10 символов). Определите статистику символов и их вероятности. Закодируйте текст с помощью арифметического кодирования. Определите коэффициент сжатия. Определите, каким бы мог быть максимальный коэффициент сжатия и сравните его с полученным.

Вариант

Символы и их вероятности

Кол-во символов

Кодовое число

"е" - 0,2; "р" - 0,2; "п" - 0,1; "к" - 0,1; "у" - 0,1; "и" - 0,1; "т" - 0,1; "ь" - 0,1;

10

0,404450863599777

"о" - 0,2; "р" - 0,1; "п" - 0,1; "в" - 0,1; "к" - 0,1; "а" - 0,1; "ц" - 0,1; "и" - 0,1; "я" - 0,1;

10

0,320822715759277

"е" - 0,4; "р" - 0,2; "т" - 0,2; "п" - 0,1; "ь" - 0,1;

10

0,818038463592529

"а" - 0,3; "р" - 0,1; "с" - 0,1; "п" - 0,1; "ш" - 0,1; "о" - 0,1; "н" - 0,1; "к" - 0,1;

10

0,313561102375388

"е" - 0,3; "р" - 0,2; "п" - 0,1; "з" - 0,1; "а" - 0,1; "т" - 0,1; "ь" - 0,1;

10

0,509613327682018

"е" - 0,3; "н" - 0,2; "р" - 0,1; "м" - 0,1; "б" - 0,1; "ы" - 0,1; "й" - 0,1;

10

0,715550690889359

"е" - 0,3; "р" - 0,2; "п" - 0,1; "м" - 0,1; "я" - 0,1; "т" - 0,1; "ь" - 0,1;

10

0,510104730725288

"е" - 0,2; "р" - 0,2; "а" - 0,2; "м" - 0,1; "п" - 0,1; "т" - 0,1; "ь" - 0,1;

10

0,704517051577568

"е" - 0,3; "н" - 0,2; "р" - 0,1; "м" - 0,1; "п" - 0,1; "ы" - 0,1; "й" - 0,1;

10

0,715550690889359

"о" - 0,4; "д" - 0,2; "в" - 0,2; "п" - 0,1; "р" - 0,1;

10

0,637712478637695

а" - 0,4; "м" - 0,1; "д" - 0,1; "г" - 0,1; "с" - 0,1; "к" - 0,1; "р" - 0,1;

10

0,421010166406631

"е" - 0,3; "т" - 0,2; "л" - 0,1; "м" - 0,1; "р" - 0,1; "и" - 0,1; "я" - 0,1;

10

0,331104725599289

"е" - 0,3; "п" - 0,1; "р" - 0,1; "м" - 0,1; "ш" - 0,1; "а" - 0,1; "т" - 0,1; "ь" - 0,1;

10

0,312468331307173

"о" - 0,3; "н" - 0,2; "в" - 0,1; "м" - 0,1; "д" - 0,1; "ы" - 0,1; "й" - 0,1;

10

0,331120386719704

"о" - 0,3; "д" - 0,1; "б" - 0,1; "р" - 0,1; "в" - 0,1; "л" - 0,1; "е" - 0,1; "ц" - 0,1;

10

0,313556130975485

"е" - 0,2; "н" - 0,2; "р" - 0,1; "п" - 0,1; "о" - 0,1; "с" - 0,1; "ы" - 0,1; "й" - 0,1;

10

0,50813390314579

"е" - 0,2; "п" - 0,1; "р" - 0,1; "в" - 0,1; "о" - 0,1; "д" - 0,1; "ч" - 0,1; "и" - 0,1; "к" - 0,1;

10

0,206182715948671

"а" - 0,2; "т" - 0,2; "р" - 0,1; "ш" - 0,1; "ю" - 0,1; "п" - 0,1; "и" - 0,1; "с" - 0,1;

10

0,708225514739752

"а" - 0,4; "к" - 0,2; "р" - 0,1; "т" - 0,1; "и" - 0,1; "ц" - 0,1;

10

0,449482083320618

"е" - 0,2; "п" - 0,2; "л" - 0,1; "ь" - 0,1; "н" - 0,1; "и" - 0,1; "ц" - 0,1; "а" - 0,1;

10

0,208730863407254

"е" - 0,2; "б" - 0,1; "л" - 0,1; "о" - 0,1; "с" - 0,1; "н" - 0,1; "ж" - 0,1; "к" - 0,1; "а" - 0,1;

10

0,20691231591627

"о" - 0,2; "п" - 0,1; "р" - 0,1; "д" - 0,1; "и" - 0,1; "с" - 0,1; "т" - 0,1; "ы" - 0,1; "й" - 0,1;

10

0,206182715948671

"е" - 0,2; "н" - 0,2; "р" - 0,1; "в" - 0,1; "я" - 0,1; "д" - 0,1; "ы" - 0,1; "й" - 0,1;

10

0,708225103095174

"н" - 0,2; "т" - 0,1; "е" - 0,1; "к" - 0,1; "л" - 0,1; "я" - 0,1; "с" - 0,1; "ы" - 0,1; "й" - 0,1;

10

0,723456035833806

"н" - 0,2; "т" - 0,2; "к" - 0,1; "ц" - 0,1; "е" - 0,1; "о" - 0,1; "р" - 0,1; "а" - 0,1;

10

0,471121514216065

"о" - 0,2; "в" - 0,1; "р" - 0,1; "б" - 0,1; "ь" - 0,1; "и" - 0,1; "н" - 0,1; "ы" - 0,1; "й" - 0,1;

10

0,206182715948671

"о" - 0,3; "р" - 0,2; "л" - 0,2; "м" - 0,1; "т" - 0,1; "е" - 0,1;

10

0,724304437637329

"д" - 0,2; "а" - 0,2; "е" - 0,1; "н" - 0,1; "в" - 0,1; "ц" - 0,1; "т" - 0,1; "ь" - 0,1;

10

0,129045903682709

"е" - 0,2; "б" - 0,1; "с" - 0,1; "ц" - 0,1; "в" - 0,1; "т" - 0,1; "н" - 0,1; "ы" - 0,1; "й" - 0,1;

10

0,206902715843171

"т" - 0,2; "а" - 0,2; "и" - 0,1; "н" - 0,1; "р" - 0,1; "д" - 0,1; "ц" - 0,1; "ь" - 0,1;

10

0,129071295261383