Изменения

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

Алгоритм LZW

1090 байт убрано, 22:00, 18 октября 2011
Описание
== Описание ==
Данный алгоритм при сжатии (кодировании) динамически создаёт таблицу преобразования строк: определённым последовательностям символов (словам) ставятся в соответствие группы бит фиксированной длины (обычно 12-битные). Таблица инициализируется всеми 1-символьными строками (в случае 8-битных символов — это 256 записей)Процесс сжатия выглядит достаточно просто. По мере кодирования, алгоритм просматривает текст символ за символом, Мы считываем последовательно символы входного потока и сохраняет каждую новуюпроверяем, уникальную 2-символьную строку есть ли в таблицу в виде пары код/символ, где код ссылается на соответствующий первый символсозданной нами таблице строк такая строка. После того как новая 2-символьная Если строка сохранена в таблицеесть, на выход передаётся код первого символа. Когда на входе читается очередной то мы считываем следующий символ, для него по таблице находится уже встречавшаяся строка максимальной длиныа если строки нет, после чего то мы заносим в таблице сохраняется поток код этой строки со следующим символом на входе; на выход выдаётся код этой для предыдущей найденной строки, а следующий символ используется заносим строку в качестве начала следующей строкитаблицу и начинаем поиск снова.
Алгоритму декодирования на входе требуется только закодированный текст, поскольку он может воссоздать соответствующую таблицу преобразования непосредственно по закодированному тексту.
Анонимный участник

Навигация