Реферат: Сжатие данных

up[left[u]] := u;

up[right[u]] := u;

end;

end { initialize };

Для того, чтобы отыскать букву и соответствующий ей интервал накопленной

частоты, когда известна отдельная накопленная частота, необходимо обойти дерево

начиная с корня по направлению к букве, производя беглое вычисление интервала

частот, соответствующего текущей ветке дерева. Интервал, соответствующий корню,

есть [0, freq[root]], он должен содержать f. Если отдельный узел деpева i связан

с интервалом [a, b), где a - b = freq[i], то интервалами, связанными с двумя

поддеревьями будут интервалы [a, a+freq[left[i]] ) и [a+freq[left[i]], b). Они

не пересекаются, поэтому путь вниз по дереву будет таким, что f содержится в

подинтервале, связанном с каждым узлом на этом пути. Это показано в

следующей процедуре:

procedure findsymbol( f: integer; var c: codetype; var a, b: integer );

var

i: downindex;

t: integer;

begin

a := 0;

i := root;

b := freq[root];

repeat

t

К-во Просмотров: 2681
Бесплатно скачать Реферат: Сжатие данных