Изменения

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

Алгоритм LZW

16 байт добавлено, 20:01, 13 ноября 2014
Пример
Рассмотрим пример сжатия и декодирования сообщения.
Сначала создадим начальный словарь единичных символов. В стандартной кодировке ASCII имеется <tex>256</tex> различных символов, поэтому, для того, чтобы все они были корректно закодированы (если нам неизвестно, какие символы будут присутствовать в исходном файле, а какие - нет), начальный размер кода будет равен 8 битам. Если нам заранее известно, что в исходном файле будет меньшее количество различных символов, то вполне разумно уменьшить количество бит. Чтобы инициализировать таблицу, мы установим соответствие кода 0 соответствующему символу с битовым кодом <tex>00000000</tex>, тогда <tex>1</tex>
соответствует символу с кодом <tex>00000001</tex>, и т.д., до кода <tex>255</tex>. На самом деле мы указали, что каждый код от <tex>0</tex> до <tex>255</tex> является корневым.
Итак, мы получаем закодированное сообщение <tex>0 1 0 2 5 0 3 9 8 6 4</tex>.
Каждый символ исходного сообщения был закодирован группой из трех бит, сообщение содержало 16 символов, следовательно длина сообщения составляла <tex>3 * \cdot 16 = 48</tex> бит.
Закодированное же сообщение так же сначала кодировалось трехбитными группами, а про появлении в словаре восьмого слова - четырехбитными, итого длина сообщения составила <tex>7 * \cdot 3 + 4 * \cdot 4 = 37</tex> бит, что на <tex>11</tex> бит короче исходного.
=== Декодирование ===
Анонимный участник

Навигация