Сравнение производилось на файлах из
Сравнение производилось на файлах из
Технологии Microsoft в теории и практике программирования - В.П. Гергеля
Пусть мы имеем данные, полученные после сжатия с оптимальными параметрами на первой итерации, теперь мы можем запустить следующую итерацию, найти оптимальные параметры для неё, и, возможно, получить на выходе блок с ещё большей степенью сжатия. Если так получилось, то фиксируем результат первой итерации и запускаем проверку третьей итерации и так далее.
Логика применения итераций очевидна, но можно провести аналогию с теорией игр и вспомнить, что при игре с уступками, по сравнению с игрой без уступок, один из игроков может ничего не потерять, а второй - выиграть. Так же и здесь, для текущей итерации можно искать не оптимальный набор параметров, а набор, близкий по критерию к оптимальному, в надежде на то, что результат текущей итерации будет более качественно сжат на следующей итерации и уступка на текущей итерации будет с лихвой покрыта на следующей.
Платой за данное улучшение является время работы. Пользователь может указать, сколько альтернативных вариантов параметров следует просматривать. Если указана единица, то сразу после нахождения оптимального набора параметров данные будут сжаты с этими параметрами и выполнение перейдёт на следующую итерацию.
Результаты экспериментов
На рис. 2 приведена диаграмма сравнения результатов работы системы сжатия до и после оптимизации с помощью поиска минимума энтропии и широко распростанённых архиваторов. Сравнение производилось на файлах из набора CalgCC (http://links.uwaterloo.ca/calgarv.corpus.html) (данный набор файлов наиболее часто используется для сравнения методов сжатия данных). Как видно из результатов работы на стандартных тестах, поиск минимума энтропии улучшает качество сжатия, и на некоторых тестах оказывается лучшим не только чем Zip, но и Rar.