Практическая часть Задание 1
Для исследования зависимости энтропии от длины блока на который разбиается текст для файла enwik7 были взяты размеры от 1000 до 10000. Результаты представлены в таблице 1 и на графике 1.
-
Длина блока
Величина энтропии
1000
4.2122
2000
3.9299
3000
3.7866
4000
3.6909
5000
3.6224
6000
3.5689
7000
3.5229
8000
3.4864
9000
3.4536
10000
3.4251
Таблица 1 – Зависимость энтропии от длины блока
График 1 - Зависимость энтропии от длины блока
По графику и таблице можно сделать вывод о том, что с увеличением длины блока энтропия уменьшается. Однако при слишком больших значениях для декодирования потребуется больше памяти и алгоритмы станут более затратными.
Задание 2
Для исследования коэффициента сжатия в зависимости от алгоритма LZ77 было проверено окно длиной 256, 512, 1024, 2048, 8192, 16384. Тест проводится на файле объемом 257070 Кб. Данные о коэффициенте и длине закодированных данных представлены в таблице 2. А также выведены на график 2.
-
Размер буфера (окна)
Длина закодированного сообщения
Коэффициент сжатия
256
410355
0.626
512
320295
0.803
1024
260805
0.986
2048
220465
1.166
4096
192315
1.337
8192
171600
1.498
16384
155775
1.65
Таблица 2 – зависимость коэффициента сжатия от размера буфера
График 2 – зависимость коэффициента сжатия от размера буфера
По графику и таблице видно, что коэффициент сжатия увеличивается с увеличением размера окна. Также можно заметить, что после достижения окна в 8192 байта, коэффициент увеличивается медленнее, а временные затраты растут в связи с большим количеством сравнений. Следовательно, оптимальным размером окна будет значение примерно в 4096 байт.
Задание 3
В работе для кодирования взяты файлы enwik7, русский текст exe файл.
Пример 1 – Файл с русским тестом
Также для сжатия были выбраны изображения, переведенные в формат RAW. Рис 1 – черно-белое изображение. Рис 2 – цветное изображения. Рис 3 – изображение в серых оттенках.
|
|
|
Рисунок 1 |
Рисунок 2 |
Рисунок 3 |
Данные о коэффициенте сжатия и объеме сообщений занесены в таблицы 3, 4, 5. Наиболее эффективные алгоритмы для каждого файла выделены цветом.
Компрессор |
Файл |
||||||
Envik7 |
Русский текст |
||||||
Размер текста |
Коэфф. |
Размер текста |
Коэфф. |
||||
До/после |
Компр. |
До/после |
Компр. |
||||
HA |
10000000/ 10000000
|
6412387 |
1.559 |
257070/ 257070
|
132868 |
1.935 |
|
RLE |
10015023 |
0.998 |
257577 |
0.998 |
|||
BWT+RLE |
9176618 |
1.09 |
146927 |
1.75 |
|||
BWT+MTF+HA |
5239084 |
1.909 |
103962 |
2.473 |
|||
BWT+MTF+RLE+HA |
5995195 |
1.668 |
99325 |
2.588 |
|||
LZ77 |
14954910 |
0.669 |
220465 |
1.166 |
|||
LZ77+HA |
7256886 |
1.378 |
143598 |
1.79 |
|||
LZ78 |
6760525 |
1.479 |
190760 |
1.348 |
|||
LZ78+HA |
5408977 |
1.849 |
126880 |
2.026 |
|||
Таблица 3 – Данные о коэффициенте сжатия для enwik7 и русского текста.
Компрессор |
Файл |
||||||||
Exe file |
Черно-белое изображение |
||||||||
Размер текста |
Коэфф. |
Размер текста |
Коэфф. |
||||||
До/после |
Компр. |
До/после |
Компр. |
||||||
HA |
1058336/ 1058336
|
908302 |
1.165 |
2764800/ 2764800 |
377832 |
7.318 |
|||
RLE |
1042218 |
1.015 |
104963 |
26.341 |
|||||
BWT+RLE |
802622 |
1.319 |
69493 |
39.785 |
|||||
BWT+MTF+HA |
681670 |
1.553 |
361246 |
7.654 |
|||||
BWT+MTF+RLE+HA |
686448 |
1.542 |
37680 |
73.376 |
|||||
LZ77 |
2356580 |
0.449 |
294670 |
9.383 |
|||||
LZ77+HA |
927807 |
1.141 |
81037 |
34.118 |
|||||
LZ78 |
1196090 |
0.885 |
56440 |
48.987 |
|||||
LZ78+HA |
878424 |
1.205 |
33823 |
81.743 |
|||||
Таблица 4 – Данные о коэффициенте сжатия для exe файла и черно-белого изображения.
Компрессор |
Файл |
||||||
Серое изображение |
Цветное изображение |
||||||
Размер текста |
Коэфф. |
Размер текста |
Коэфф. |
||||
До/после |
Компр. |
До/после |
Компр. |
||||
HA |
484800/ 484800
|
456987 |
1.061 |
1440000/ 1440000 |
1152295 |
1.249 |
|
RLE |
484973 |
1.001 |
1152168 |
1.25 |
|||
BWT+RLE |
485823 |
0.998 |
1145399 |
1.257 |
|||
BWT+MTF+HA |
378187 |
1.282 |
1081319 |
1.332 |
|||
BWT+MTF+RLE+HA |
395665 |
1.225 |
1030367 |
1.398 |
|||
LZ77 |
1917200 |
0.353 |
4317710 |
0.334 |
|||
LZ77+HA |
681496 |
0.711 |
1489000 |
0.967 |
|||
LZ78 |
730045 |
0.664 |
1622925 |
0.887 |
|||
LZ78+HA |
521717 |
0.929 |
1204287 |
1.196 |
|||
Таблица 5 – Данные о коэффициенте сжатия для цветного и серого изображения.
После изучения таблицы выявлен самый эффективный алгоритм сжатия для каждого из представленных файлов. Для enwik7, произвольного бинарного файла exe – BWT+MTF+HA, русского текста, серого, цветного, изображений BWT+MTF+RLE+HA, для черно-белого изображения LZ78+HA. Также в некоторых других случаях алгоритм, содержащий кодирование LZ78 и Хаффмана показал хороший коэффициент сжатия.
Вывод
После исследования коэффициента сжатия для алгоритмов Хаффмана, Барроуза-Уиллера, RLE, MTF, LZ77, LZ78 выяснено что наиболее эффективными являются связки алгоритмов BWT+MTF+HA и BWT+MTF+RLE+HA.
