|
на стр 6, лекции 3, Очевидно "Ck <= модуль(Gk(е))*b(k+1)" (1) - , подскажите что значит "модуль" и почему это очевидно... |
Толстые кучи
Рассматриваемое в этой лекции представление приоритетной очереди основано на использовании так называемых избыточных счетчиков, позволяющих за время O(1) инкрементировать любой разряд. Заметим, что использованные здесь счетчики — лишь один из способов реализации толстых куч. На самом деле, для их реализации подойдет произвольный d-арный счетчик, при условии, что трудоемкость инкрементирования любого его разряда является константной.
Избыточное представление чисел
Основные определения.
Избыточным
-арным
представлением неотрицательного целого числа
будем считать
последовательность
,
, такую, что

,
.
Будем называть
цифрой, стоящей в
-м
разряде. В примерах запятые между цифрами опускаем.Заметим, что избыточное представление отличается от обычного
-арного представления использованием "лишней"
цифры
, что
приводит к неоднозначности представления чисел. Например, при
число
может быть представлено как
и
как
.
В примерах, в которых
, "цифру" 10 будем
обозначать
символом
.
Назовем
-арное избыточное представление числа регулярным, если в нем между любыми двумя цифрами,
равными
, найдется цифра, отличная от
.
Пример.
Пусть
, а число
представляется
в обычной десятичной системе последовательностью
, тогда
представления
и
не являются регулярными
-арными избыточными представлениями числа
,
а представления
и
регулярны.
Пусть
— номер разряда, отличного от
и ближайшего слева от
-го разряда в регулярном
-арном избыточном представлении
.
Определим
следующим образом:
,
если
,
и
;
— произвольное число
, если
и
;
— не определено,
если
.
Величину
будем называть прямым указателем.
Пусть
—
-арное
регулярное представление
некоторого числа.
Фиксацией цифры b, стоящей в i-м разряде
представления d,
назовем операцию, заключающуюся в обнулении цифры
и инкрементировании цифры
, при этом если
, то полагаем
. При каждом выполнении
операции фиксации будем обновлять значение
. Очевидно,
при
операцию
можно выполнить
с помощью следующих операторов.

Инкрементирование i-й цифры избыточного
представления d
можно выполнить
с помощью операторов

Очевидно, что инкрементирование
-го разряда регулярного
-арного избыточного представления числа
производит представление числа
.
Нетрудно доказать, что операции фиксации и инкрементирования, примененные
к регулярному избыточному представлению, не нарушают регулярности и
корректно вычисляют указатели
с
трудоемкостью
.
Эта схема может быть расширена для выполнения за константное время
декрементирования произвольной цифры добавлением дополнительного цифрового
значения
. Оставляем детали в качестве упражнения.
Толстые деревья
Основные определения
Определяем толстое
дерево
ранга
следующим образом:
-
Толстое дерево
ранга ноль состоит из
единственного узла. -
Толстое дерево
ранга
,
для
, состоит из трех деревьев
ранга
, связанных так, что корни двух из них являются самыми
левыми потомками корня третьего.
Ранг узла
в толстом
дереве определяется как ранг толстого поддерева с корнем в узле
.
На рис. 9.1 приведены примеры толстых деревьев.
Свойства толстых деревьев:
- В толстом дереве ранга
ровно
узлов. - Для любого натурального числа
существует лес из толстых
деревьев, в котором ровно
узлов. Такой лес можно построить,
включив в него столько деревьев ранга
, каково
значение
-го разряда представления числа
в троичной системе счисления.
Заметим, что для построения такого леса можно использовать и избыточные троичные
представления. - Толстый лес из
узлов содержит
деревьев.
Доказательства этих свойств оставим читателю в качестве упражнения.
Рассмотрим лес из нескольких толстых деревьев, ранги которых не
обязательно попарно различны и узлам которых взаимно однозначно поставлены
в соответствие элементы взвешенного множества. Такой лес будем называть
нагруженным. Узел в нагруженном лесе назовем неправильным, если его ключ
меньше ключа его родителя. Нагруженный лес назовем почти кучеобразным,
если для каждого значения
в нем имеется не более двух
неправильных узлов ранга
.
