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





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

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

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