Сжатие информации в компьютерных сетях
96
где C
i1
— значение р
i
– 1, представленное в системе счисления с
основанием m, равным размеру алфавита источника; C
i2
— значение L
i
– 1,
представленное в системе счисления по основанию m; C
i3
—символ,
следующий за кодируемой подстрокой источника. Таким образом, сжатие
сообщения будет иметь место, если длина кодируемой подстроки будет
больше фиксированной длины кодового слова.
Длина кодового слова L(С
i
)
равна сумме длин его компонент,
выраженная количеством символов используемого алфавита источника:
L ( C
i
) =
log ( n
в
- L
S
)
+
log L
S
+ 1 , ( 5.2 )
где х — наименьшее целое, не меньше х. Основание логарифма зависит
от принятой системы счисления. В данном алгоритме оно равно размеру
алфавита источника m.
Естественно предположить, что чем больше будет длина
анализируемой части строки n
B
– L
S
, тем выше вероятность нахождения в
ней подстроки максимальной длины, которая входит в состав текущей
части строки длиной L
S
.
Hа практике длину буфера следует выбирать [46] из соотношения:
n
В
= L
S
m
h L S
, ( 5.3 )
где 0 < h < 1. Hапример, при L
S
= 8, h = 0,5 и m = 2 длина буфера n
B
= 8
2
4
= 128 бит.
В начале процесса кодирования предполагается, что выходу
источника предшествует строка Z, состоящая из n
B
- L
S
нyлей. Обозначим
i-ю строку, находящуюся в буфере, через B
i
. Тогда первая строка B
1
,
расположенная в буфере ( рис.5.1), представляет собой конкатенацию
(объединение) двух строк Z и S, то есть В
1
= ZS(1,L
S
). Здесь символом S(i,j)
обозначается подстрока, начинающаяся с позиции i и заканчивающаяся в
позиции j.
Hа втором этапе кодирования формируются подстроки, состоящие
из символов сообщения, расположенных начиная с n
B
– L
S
+ 1 -й позиции
буфера. В общем случае эта подстрока будет состоять из j символов s(1),
s(2),..., s(j), причем j может изменяться от 1 до L
S
– 1, так как ( j + 1) — й
символ, стоящий после строки, является обязательным компонентом
кодового слова (5.1). Если в предыдущей части буфера в диапазоне
позиций от 1 до n
B
- L
S
найдена подстрока S(1, j), то первым кодируемым
словом источника, с учетом дополнительного символа C
i3
, будет
подстрока S(1, j + 1), а его длина равна L
1
= j +1. Подстроку S(1,j)
называют восстанавливаемым расширением строки B(1,n
B
-L
S
) до строки