Компрессия, кодеры, адаптивный метод и другие термины

Пусть два разных файла А и В сжаты в файлы С и D, соответственно. Ясно, что С и D должны также отличаться друг от друга. В противном случае было бы невозможно по ним восстановить исходные файлы А и В. Предположим, что файл состоит из n бит, и мы хотим его сжать эффективным образом. Будем приветствовать любой алгоритм, который сожмет этот файл, скажем, в 10 бит. Компрессия в 11 или 12 бит тоже была бы замечательна.

Не существует методов и алгоритмов, способных эффективно сжимать ЛЮБЫЕ файлы, или даже существенную часть их. Для того, чтобы сжать файл, алгоритм компрессии должен сначала изучить его, найти в нем избыточность, а потом попытаться удалить ее. Поскольку избыточность зависит от типа данных (текст, графика, звук и т.д.), методы компрессии должны разрабатываться с учетом этого типа. Алгоритм будет лучше всего работать именно со своими данными. В этой области не существует универсальных методов и решений. В конце введения напомним некоторые важные технические термины, которые используются в области сжатия информации.

Компрессор или кодер ~ программа, которая сжимает «сырой» исходный файл и создает на выходе файл со сжатыми данными, в которых мало избыточности. Декомпрессор или декодер работает в обратном направлении. Отметим, что понятие кодера является весьма обидим и имеет много значений, но поскольку мы обсуждаем сжатие данных, то у нас слово кодер будет означать компрессор. Термин кодек иногда используется для объединения кодера и декодера.

Метод неадаптивного сжатия подразумевает неспособность алгоритма менять свои операции, параметры и настройки в зависимости от сжимаемых данных. Такой метод лучше всего сжимает однотипные данные. К ним относятся методы группы 3 и группы 4 сжатия факсимильных сообщений. Они специально разработаны для сжатия в факс-машинах и будут весьма слабо работать на других типах данных. Напротив, адаптивные методы сначала тестируют «сырые» исходные данные, а затем подстраивают свои параметры и/или операции в соответствии с результатом проверки. Примером такого алгоритма может служить кодирование Хаффмана.

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

-----------------------------