Реферат: Сжатие данных
until sp = 1;
splay( plain );
end { compress };
Для развертывания буквы необходимо читать из архива следующие друг за другом
биты с помощью функции receive. Каждый прочитанный бит задает один шаг на
маршруте обхода дерева от корня к листу, определяющем разворачиваемую букву.
function expand: codetype;
var
a: downindex;
begin
a := root;
repeat { один раз для каждого бита на маршруте }
if receive = 0 then a := left[a]
else a := rignt[a];
until a > maxchar;
splay( a - succmax );
expand := a - succmax;
end { expand };
Процедуры, управляющие сжатием и развертыванием, просты и представляют собой
вызов процедуры initialize, за которым следует вызов либо compress, либо expand
для каждой обрабатываемой буквы.
Характеристика алгоритма расширяемого префикса.
На практике, расширяемые деревья, на которых основываются коды префикса, хоть и
не являются оптимальными, но обладают некоторыми полезными качествами. Прежде
всего это скорость выполнения, простой программный код и компактные структуры
данных. Для алгоритма расширяемого префикса требуется только 3 массива, в то
время как для Л-алгоритма Уитерса, вычисляющего оптимальный адаптированный код
префикса, - 11 массивов . Предположим, что для обозначения множества символов
исходного текста используется 8 бит на символ, а конец файла определяется