Московский государственный университет имени М.В.Ломоносова
Опубликован: 10.10.2007 | Доступ: свободный | Студентов: 1481 / 160 | Оценка: 4.36 / 4.18 | Длительность: 14:22:00
Специальности: Программист
Лекция 1:

Методы сжатия без потерь

Аннотация: В лекции приводятся основные термины методов сжатия без потерь, рассматриваются канонический алгоритм Хаффмана, алгоритм арифметического сжатия, а также алгоритм интервального кодирования, их достоинства и недостатки, дается большое количество практических примеров
Ключевые слова: связь, теорема Шеннона, вероятность, длина, распределение вероятности, значение, энтропия, средняя длина кода, входной, файл, аргумент, бит, декодирование, потеря информации, доказательство, Архиватор, программа, эволюция, очередь, улучшение, полнота, байт, блок данных, алфавит, Длина слова, слово, подмножество, множества, отображение, кодирование, префикс, Пустое слово, целый, математическим ожиданием, алгоритм, бинарное дерево, префиксный код, архивация, JPEG, CCITT, group, патент, интервалы, диапазон символов, длина цепочки, итерация, бинарный поиск, разрядность, числитель, потеря точности, переполнение, минимизация, half, нормализация, делитель, двоичное представление, очередной символ, адаптивного алгоритма, символ алфавита, неравенство, битовые операции, сложение, нижняя граница, выходные данные, кодер, EA, compression, low, out-of-range, FIDO

В основе всех методов сжатия лежит простая идея: если представлять часто используемые элементы короткими кодами, а редко используемые - длинными кодами, то для хранения блока данных требуется меньший объем памяти, чем если бы все элементы представлялись кодами одинаковой длины. Данный факт известен давно: вспомним, например, азбуку Морзе, в которой часто используемым символам поставлены в соответствие короткие последовательности точек и тире, а редко встречающимся - длинные.

Точная связь между вероятностями и кодами установлена в теореме Шеннона о кодировании источника, которая гласит, что элемент {\rm{s}}_{\rm{i}}, вероятность появления которого равняется p(s_i), выгоднее всего представлять {\rm{ - log}}_{\rm{2}} p(s_i) битами. Если при кодировании размер кодов всегда в точности получается равным {\rm{ - log}}_{\rm{2}} p(s_i) битам, то в этом случае длина закодированной последовательности будет минимальной для всех возможных способов кодирования. Если распределение вероятностей F = \{ p(s_i )\} неизменно, и вероятности появления элементов независимы, то мы можем найти среднюю длину кодов как среднее взвешенное

H =  - \sum\limits_i {p(s_i ) \cdot \log _2 p(s_i )} ( 1а)

Это значение также называется энтропией распределения вероятностей F или энтропией источника в заданный момент времени.

Обычно вероятность появления элемента является условной, т.е. зависит от какого-то события. В этом случае при кодировании очередного элемента {\rm{s}}_{\rm{i}} распределение вероятностей F принимает одно из возможных значений F_k, то есть F = F_k, и, соответственно, H = H_k. Можно сказать, что источник находится в состоянии k, которому соответствует набор вероятностей p_k (s_i) генерации всех возможных элементов s_i. Поэтому среднюю длину кодов можно вычислить по формуле

H =  - \sum\limits_k {P_k  \cdot H_k }  =  - \sum\limits_{k,i} {P_k  \cdot p_k (s_i )\log _2 p_k (s_i )} ( 1б)
,

где p_k - вероятность того, что F примет k -ое значение, или, иначе, вероятность нахождения источника в состоянии k.

Итак, если нам известно распределение вероятностей элементов, генерируемых источником, то мы можем представить данные наиболее компактным образом, при этом средняя длина кодов может быть вычислена по формуле (1).

Но в подавляющем большинстве случаев истинная структура источника нам не известна, поэтому необходимо строить модель источника, которая позволила бы нам в каждой позиции входной последовательности оценить вероятность p(s_i) появления каждого элемента {\rm{s}}_{\rm{i}} алфавита входной последовательности. В этом случае мы оперируем оценкой q(s_i) вероятности элемента {\rm{s}}_{\rm{i}}.

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

Процесс моделирования может быть либо явным, либо скрытым. Вероятности элементов могут использоваться в методе как явным, так и неявным образом. Но всегда сжатие достигается за счет устранения статистической избыточности в представлении информации.

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

Существует 2^n различных файлов длины n битов, где n = 0, 1, 2, … Если размер каждого такого файла в результате обработки уменьшается хотя бы на 1 бит, то 2^n исходным файлам будет соответствовать самое большее 2^{n - 1} различающихся архивных файлов. Тогда по крайней мере одному архивному файлу будет соответствовать несколько различающихся исходных, и, следовательно, его декодирование без потерь информации невозможно в принципе.

Вышесказанное предполагает, что файл отображается в один файл, и объем данных указывается в самих данных. Если это не так, то следует учитывать не только суммарный размер архивных файлов, но и объем информации, необходимой для описания нескольких взаимосвязанных архивных файлов и/или размера исходного файла. Общность доказательства при этом сохраняется.

Поэтому невозможен "вечный" архиватор, который способен бесконечное число раз сжимать свои же архивы. "Наилучшим" архиватором является программа копирования, поскольку в этом случае мы можем быть всегда уверены в том, что объем данных в результате обработки не увеличится.

Регулярно появляющиеся заявления о создании алгоритмов сжатия, "обеспечивающих сжатие в десятки раз лучшее, чем у обычных архиваторов", являются либо ложными слухами, порожденными невежеством и погоней за сенсациями, либо рекламой аферистов. В области сжатия без потерь, т.е. собственно сжатия, такие революции невозможны. Безусловно, степень сжатия компрессорами типичных данных будет неуклонно расти, но улучшения составят в среднем десятки или даже единицы процентов, при этом каждый последующий этап эволюции будет обходиться значительно дороже предыдущего. С другой стороны, в сфере сжатия с потерями, в первую очередь компрессии видеоданных, все еще возможно многократное улучшение сжатия при сохранении субъективной полноты получаемой информации.