Изменения

Перейти к: навигация, поиск

Алгоритм LZW

502 байта добавлено, 11:43, 28 октября 2011
м
Пример
Рассмотрим пример сжатия и декодирования изображения.
Сначала создадим начальный словарь единичных символов. Чтобы сделать этоВ стандартной кодировке ASCII имеется 256 различных символов, поэтому, для того, чтобы все они были корректно закодированы (если нам необходимо выбрать код размера (количество бит) и знатьнеизвестно, сколько возможных значений могут принимать наши какие символы. Давайте положим код размера равным 3 битамбудут присутствовать в исходном файле, а какие - нет), что означает возможность запоминания начальный размер кода будет равен 8 элементов в нашей таблице цепочекбитам. Также предположимЕсли нам заранее известно, что мы имеем 5 возможных в исходном файле будет меньшее количество различных символа. ( Это соответствуетсимволов, например, картинке с 5 возможными цветами для каждого пиксела )то вполне разумно уменьшить количество бит. Чтобы инициализировать таблицу, мы установим соответствие кода 0 соответствующему символу aс этим же кодом, кода тогда 1 символу bс кодом 1, и т.д., до кода 4 и символа e255. На самом деле мы указали, что каждый код от 0 до 4 255 является корневым. Больше в таблице не будет других кодов, обладающих этим свойством.<br>По мере роста словаря, размер групп должен расти, с тем, чтобы учесть новые элементы. 38-битные группы дают 8 256 возможных комбинации бит, поэтому, когда в словаре появится 9256-е слово, алгоритм должен перейти к 49-битным группам. При появлении 17512-ого слова произойдет переход к 510-битным группам, что дает возможность запоминать уже 32 1024 слова и т.д.<br>В нашем примере алгоритму заранее известно о том, что будет использоваться всего 5 различных символов, следовательно, для их хранения будет использоваться минимальное количество бит, позволяющее нам их запомнить, то есть 3 ( 8 различных комбинаций ).
84
правки

Навигация