Сравнение алгоритмов сжатия
При выполнении этой работы используются программы RLE (алгоритм сжатия RLE) и Huffman (кодирование Хаффмана и Шеннона-Фано).
Запустите программу Huffman.exe и закодируйте строку «ЕНОТ НЕ ТОНЕТ», используя методы Шеннона-Фано и Хаффмана. Запишите результаты в таблицу:
|
Шеннон и Фано |
Хаффман |
Длина основного кода |
30 |
30 |
Длина кодовой таблицы (дерева) |
49 |
49 |
Коэффициент сжатия (по основным кодам) |
3.47 |
3.47 |
Коэффициент сжатия (с учетом дерева кодов) |
1.32 |
1.32 |
Сделайте выводы.
Ответ:
При кодировании данного предложения все показатели одинаковы.
Как, по вашему мнению, будет изменяться коэффициент сжатия при увеличении длины текста, при условии, что набор символов и частота их встречаемости останутся неизменной? Проверьте ваш вывод с помощью программы (например, можно несколько раз скопировать ту же фразу).
Ответ:
Коэффициент сжатия будет ув.
Повторите эксперимент с фразой «НОВОЕ ЕНОТОВО».
|
Шеннон и Фано |
Хаффман |
Длина основного кода |
39 |
31 |
Длина кодовой таблицы (дерева) |
59 |
59 |
Коэффициент сжатия (по основным кодам) |
2.67 |
3.35 |
Коэффициент сжатия (с учетом дерева кодов) |
1.06 |
1.16 |
Сделайте выводы.
Ответ:
Коэффициент сжатия и длина основного кода зависят от набора символов и частоты встречаемости.
Нарисуйте в тетради кодовые деревья, которые были построены программой при использовании обоих методов.
Используя кнопку Анализ файла в программе Huffman, определите предельный теоретический коэффициент сжатия для файла a.txt1 при побайтном кодировании.
Ответ:
-
С помощью программ RLE и Huffman выполните сжатие файла a.txt разными способами. Запишите результаты в таблицу:
|
RLE |
Шеннон и Фано |
Хаффман |
Размер сжатого файла |
165799 |
131094 |
131094 |
Коэффициент сжатия |
1.02 |
8.0 |
8.0 |
Объясните результат, полученный с помощью алгоритма RLE.
Ответ:
Из-за большего коэффициента сжатия размер сжатого файла меньше , чем результаты Шеннон и Фано, Хаффман.
Используя кнопку Анализ файла в программе Huffman, определите предельный теоретический коэффициент сжатия для файла a.txt.huf при побайтном кодировании. Объясните результат.
Ответ:
Предел сжатия и предельный коэффициент сжатия зависят друг от друга.
Примените несколько раз повторное сжатие этого файла с помощью алгоритма Хаффмана (новые файлы получат имена a.txt.huf2, a.txt.huf3 и т.д.) и заполните таблицу, каждый раз выполняя анализ полученного файла.
|
Размер файла |
Предельный коэффициент сжатия |
a.txt |
1048756 |
- |
a.txt.huf |
131094 |
3885.71 |
a.txt.huf2 |
16346 |
191.12 |
a.txt.huf3 |
2160 |
13.76 |
a.txt.huf4 |
485 |
1.89 |
a.txt.huf5 |
467 |
1.10 |
a.txt.huf6 |
713 |
1.04 |
Объясните, почему с некоторого момента при повторном сжатии файла его размер увеличивается.
Ответ:
Потому что в определенный момент в алфавите построенного дерева оказывается меньше 3 символов, то есть сам алгоритм кодирования становится неэффективным.
Выполните те же действия, используя метод Шеннона-Фано.
|
Размер файла |
Предельный коэффициент сжатия |
a.txt |
1048756 |
- |
a.txt.shf |
131094 |
3885.71 |
a.txt.shf2 |
3885.71 |
191.12 |
a.txt.shf3 |
2160 |
13.67 |
a.txt.shf4 |
477 |
1.93 |
a.txt.shf5 |
453 |
1.10 |
a.txt.shf6 |
705 |
1.04 |
Объясните, почему с некоторого момента при повторном сжатии файла его размер увеличивается.
Ответ:
То же что и в прошлом пункте
Сравните результаты сжатия этого файла с помощью алгоритма RLE, лучшие результаты, полученные методами Шеннона-Фано и Хаффмана, а также результат сжатия этого файла каким-нибудь архиватором.
|
Размер файла |
Предельный коэффициент сжатия |
RLE |
131094 |
|
Хаффман |
131094 |
3855.71 |
Шеннон и Фано |
131094 |
3855.71 |
ZIP |
131094 |
120 |
RAR |
131094 |
174 |
7Z |
131094 |
- |
Объясните результаты и сделайте выводы.
Ответ:
< ( ̄ω ̄;)>
