Реферат: Сжатие данных
maxchar = ... { максимальный код символа исходного текста };
succmax = maxchar + 1;
twicemax = 2 * maxchar + 1;
root = 1;
type
codetype = 0..maxchar { кодовый интервал для символов исходного текста };
bit = 0..1;
upindex = 1..maxchar;
downindex = 1..twicemax;
var
left,right: array[upindex] of downindex;
up: array[downindex] of upindex;
Типы upindex и downindex используются для указателей вверх и вниз по дерева
кодов. Указатели вниз должны иметь возможность указывать и на листья, и на
внутренние узлы, в то время как ссылки вверх указывают только на внутренние
узлы. Внутренние узлы будут храниться ниже листьев, поэтому значения индексов
между 1 и maxchar включительно будут применены для обозначения ссылок на
внутренние узлы, когда как значения индексов между maxchar + 1 и 2 * maxchar + 1
включительно - ссылок на листья. Заметим что корень дерева всегда находится в
1-ой ячейке и имеет неопределенного родителя. Cоотвествующая листу буква может
быть найдена вычитанием maxchar + 1 из его индекса.
Если окончание текста источника может быть обнаружено из его контекста, то коды
исходного алфавита все находятся в интервале codetype, а максимально возможное в
этом тексте значение кода будет maxchar. В противном случае, интервал codetype
должен быть расширен на один код для описания специального символа "конец
файла". Это означает, что maxchar будет на 1 больше значения максимального кода
символа исходного текста.
Следующая процедура инициализирует дерево кодов. Здесь строится сбалансированное
дерево кодов, но на самом деле, каждое начальное дерево будет удовлетворительным