Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архиваторы.doc
Скачиваний:
11
Добавлен:
08.11.2018
Размер:
1.38 Mб
Скачать

1.2. Виды сжатия.

Сжатие - это процесс перекодирования информации, в результате которого уменьшается объем файла. Сжатие бывает двух основных видов:

  • Сжатие без потери данных ('lossless compression') или 'полностью обратимое сжатие' основано на методе разделения исходного файла, на небольшие части и восстановления этих частей в исходный файл при распаковке архива. При этом не происходит потеря качества данных. Самым простым видом сжатия без потерь является метод под названием 'running', подсчитывающий количество последовательных, 'идущих друг за другом' повторов. Но этот метод уже недостаточен в случае наличия повторов, встречающихся в разных местах текста.

  • Сжатие с потерями данных ('lossy compression').

В случае 'lossy compression' происходит потеря части информации, а та часть информации, которую нужно сохранить, выделяется с помощью определенного алгоритма.

1.3. Параметры сжатия (основные характеристики архиваторов).

  • степень сжатия файла

Данный параметр зависит от таких характеристик как применяемый метод сжатия, самой программы-архиватора и типа сжимаемого файла.

  • коэффициент сжатия

  • скорость сжатия и разжатия

1.4. Алгоритмы сжатия

Существует множество алгоритмов сжатия данных, вот основные из них:

  • алгоритм Зива - Лемпела или 'LZ-методы' (LZ77, LZ78, LZH, LZW)

Сжатие по данному алгоритму основано на создании своеобразного словаря, где каждое слово получает свой порядковый номер, и в результате сжатый файл содержит не предложения, а последовательность чисел, что существенно сокращает его размер. Стоит отметить, что данный метод работает эффективнее для сжатия больших файлов, чем маленьких: создание системы словаря, а иногда и 'словаря в словаре' также сказывается на размере итогового файла, что нецелесообразно для сжатия легких файлов. Кстати, компрессия по алгоритму Зива - Лемпела является одним из самых распространенных алгоритмов сжатия без потерь.

  • алгоритм Хаффмана или 'HUFF' ('Huffman Coding')

Кодирование по алгоритму Хаффмана описывается несколько сложнее: оно происходит благодаря созданию определенной таблицы данных и добавления к ней новых ячеек, в результате чего получается систематизация данных в виде дерева ('двоичное дерево'). С помощью этого дерева происходит вычисление кода и собственно само кодирование.

  • преобразование Барроуза-Уиллера ('BWT')

При сжатии по алгоритму Барроуза и Уиллера упаковка происходит в два этапа: вначале совершается определенное преобразование данных, затем - сам процесс сжатия. На первом этапе происходит сортировка данных, которая получила название 'преобразование Барроуза-Уиллера': в блоке данных разные символы меняются местами таким образом, чтобы обеспечить более действенное сжатие на втором этапе.

  • алгоритм преобразования Фурье 'FT' ('Fourier Transform')

  • алгоритм PPM ('Prediction by Partial Match')

На данном алгоритме основаны такие программы русских разработчиков как WinRAR, архиваторы PPMD и PPMonstr (автор Дмитрий Шкарин), PPMN (автор Максим Смирнов), PPMY (архиватор Евгения Шелвина).

  • алгоритм арифметического кодирования ARC

Арифметическое кодирование является созданием из сжимаемого файла нумерации отдельных его блоков: в последовательности битов файла выделяются биты с одинаковыми частотами для последующей нумерации. Арифметическое кодирование стало основой многих алгоритмов сжатия, включая алгоритм Хаффмана.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]