Динамическое кодирование строк переменной длины
119
Словарь можно логически представить с помощью абстрактных
структур данных, содержащих набор древовидных структур, в которых
каждый корень соответствует определенному знаку алфавита. При 8-
разрядном формате символа количество таких деревьев равно 256.
Древовидные структуры представляют собой набор известных строк,
которые начинаются одним определенным символом, а каждый узел дерева
представляет одну строку из этого набора.
Древовидные структуры (рис.5.5) отображают строки: A, B, BA,
BAG, BAR, BAT, BI, BIN, C, D, DE, DO и DOG. С каждым узлом связано
кодовое слово, используемое для идентификации узла. В процессе
инициализации осуществляется установка словарей кодера и декодера в
начальное состояние, при котором каждое дерево содержит только
корневой узел. Вновь образованные строки заносятся в таблицы кодера и
декодера в виде статей словаря. Причем индекс первой статьи N
CT
= m
1
+
N
У
, где m
1
=256 - количество символов первичного алфавита источника; N
У
= 3 - количество управляющих слов. Hовая строка формируется путем
добавления очередного одиночного символа к существующей строке, что
выражается в добавлении нового узла к кодовому дереву. В процессе
компрессии данных выполняются пять основных операций.
1. Сопоставление строки, при котором последовательность
символов из ООД сопоставляется со статьей словаря. Если строка
соответствует статье словаря и не является созданной во время последнего
вызова процедуры сопоставления строки, то вводится следующий символ и
добавляется к строке. Затем этот шаг повторяется. Если строка не
соответствует статье словаря, или соответствует статье, созданной во
время последнего вызова процедуры сопоставления строк, то последний
символ убирается. Полученная укороченная строка представляет таким
образом самую длинную сопоставленную строку, а последний
(отброшенный) символ является несопоставленным символом.
2. Кодирование, при котором кодовое слово соответствующей
статьи словаря представляется двоичной комбинацией длиной L
КС
бит.
3. Передача кодовых слов в устройство защиты от ошибок.
4. Модернизация словаря, в процессе которой создается новая статья
словаря с помощью соответстующей статьи словаря и несоответствующего
символа. Hовая строка не вносится в словарь только в случае превышения
максимальной длины строки.
5. Восстановление статьи словаря для повторного использования
после заполнения всех доступных статей.
При декодировании также применяется операция сопоставления
строк, в процессе которой восстанавливаются закодированные символы.
Детально алгоритмы кодирования и декодированияданных рассмотрены в
п.5.2. Важной особенностью процедуры V.42bis является то, что