Хелпикс

Главная

Контакты

Случайная статья





Рис. 8. Шаг работы декодировщика LZW в случае 1



 

Лекция 3. LZW метод. Алгоритм декодирования

 

Кладем в словарь символы a, b, c, … под номерами 0 .. 255, соответственно.

пока (поток не пуст)

код = следующий код из потока

              1 если (в словаре есть слово для кода) (рис. 8)

вывести содержимое_словаря(по коду)

                       добавить в словарь(содерж_словаря(по прошлому_коду) +перв_символ(содерж_словаря(по коду)) )

              2 иначе

                       строка = содерж_словаря(по прошлому_коду) + перв_символ(содерж_словаря(по прошлому_коду))

                       вывести(строка)

                       добавить в словарь(строка)

              конец если

    конец пока

конец алгоритма

 

Рис. 8. Шаг работы декодировщика LZW в случае 1

 

Возникают следующие вопросы.

1. Пока в словарь добавили мало слов, на представление кода можно отводить меньше бит: до 512 слов — 9 бит на код, от 512 до 1024 — 10 бит и т.д. Изменение длины кодов должны контролировать и кодировщик, и декодировщик.

2. Если словарь кончится: обнуляем словарь (главное, это должны знать и кодировщик, и декодировщик).

3. Чтобы поиск последовательности в словаре занимал меньше времени можно организовать словарь в виде бинарного дерева поиска.

 

При сравнительно небольших затратах на одну кодовую комбина­цию получается достаточно большой диапазон номеров, например, при 12 битах (полтора байта) можно закодировать примерно 4000 строк и не требуется никаких дополнительных затрат на таблицу исходных символов.

Важное преимущество LZ-методов и в том, что они адаптивны, т. е. сами приспосабливаются к особенностям текста и не требуют пред­варительного просмотра, как метод Хаффмена.

Сейчас массовое использование персональных компьютеров сдела­ло популярными многочисленные "архивирующие программы", среди них наиболее известны arj, zip, zoo, rar, а в среде UNIX — про­граммы compress, gzip, compact. Популярна сжатая система хране­ния информации на диске. В системе программирования JAVA преду­смотрено хранение в сжатой форме исполняемых файлов. Алгоритми­ческую основу архивирующих программ образуют методы Хаффмена и Зива—Лемпеля с различными модификациями и усовершенствовани­ями.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.