110
была добавлена в таблицу строк (словарь), на выход ничего не передается, а са-
ма строка становится префиксом при создании следующей строки.
Данный этап процесса сжатия отражен в пятой строке табл. 8.5 сформиро-
ванная на предыдущем этапе строка ab, которая ранее была занесена в таблицу
строк, стала префиксом при создании следующей строки, а последний символ с
стал суффиксом. Полученная новая строка abc отсутствует в словаре, поэтому
на выход передается последняя сформированная и не переданная строка – ab,
точнее, передается присвоенное ей кодовое значение – 256. Символ с становит-
ся префиксом для создаваемой очередной строки, но так как он является по-
следним символом строки ввода, его кодовое значение (99) передается на вы-
ход.
Декодер LZW должен использовать тот же словарь, что и кодер, строя его
по аналогичным правилам при восстановлении сжатых данных. Каждый считы-
ваемый код разбирается с помощью словаря на предшествующую фразу w и
символ К. Затем рекурсия продолжается для предшествующей фразы w до тех
пор пока она не окажется кодом одного символа. При этом завершается деком-
прессия этого кода. Обновление словаря происходит для каждого декодируемо-
го кода, кроме первого. После завершения декодирования кода его последний
символ, соединенный с предыдущей фразой, добавляется в словарь. Новая фра-
за получает то же значение кода (позицию в словаре), которое присвоил ей ко-
дер. В результате такого процесса декодер шаг за шагом восстанавливает тот
словарь, который построил кодер.
Важное значение имеют алгоритмы сжатия LZ и LZW при архивации дан-
ных. Популярные архиваторы ARJ, РАК, LHARC PKZ1P работают на основе
этих алгоритмов.
8.2.4. Кодирование повторов
8.2.4.1 Кодирование последовательностей повторяющихся симво-
лов, метод RLE предусматривает замену последовательности повторяющихся
символов на строку, содержащую этот символ, и число, соответствующее коли-
честву его повторений. В качестве примера рассмотрим сжатие последователь-
ности символов ACCOUNTbbbbbbbMOUNT, в которой b означает символ про-
бела. Если для обозначения выполненного сжатия символов пробела модем ис-
пользует специальный символ Sс, то между модемами будет передана последо-
вательность символов ACCONTSc7MOUNT. Символ Sс в этой последовательно-
сти означает, что было произведено сжатие символов пробела, а число 7 указы-
вает, сколько именно символов пробела заменено символом Sс. С помощью
этой информации принимающий модем может восстановить данные.
Однако в последовательности передаваемых символов может встретиться
пара символов S и с, которые являются частью данных, а не специальным сим-
волом Sс, обозначающим сжатие. Чтобы принимающий модем воспринимал эти
символы как данные, передающий модем при обнаружении пары символов Sс
добавляет в передаваемую последовательность еще одну такую пару. Таким
образом, если модем принял от терминала поток данных XYZScABC, то по те-