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