Фибоначчиева куча
Версия от 22:09, 15 мая 2011; 192.168.0.2 (обсуждение) (Новая страница: «= Фибоначчиевы деревья = {{Определение |definition= '''Фибоначчиево дерево''' - биномиальное дерево…»)
Фибоначчиевы деревья
Определение: |
Фибоначчиево дерево - биномиальное дерево, где у каждой вершины удалено не более одного ребенка. |
Лемма: |
Фибоначчиево дерево ранга содержит не менее ( число Фибоначчи) вершин |
Доказательство: |
Для рангов 0 и 1 соответствующие деревья содержат 1 вершину, .Рассмотрим дерево ранга Оно в худшем случае (удален ребенок ранка Эта сумма, в свою очередь, равна ) содержит вершин. |
Поскольку
, где , то высота фибоначчиева дерева есть .Каждая вершина
знает своего родителя ( ) и какого-нибудь своего ребенка( ).Дети любой вершины связаны в циклический двусвязный список. Такие списки удобны по двум причинам: из такого списка можно удалить вершину, и два таких списка можно связать в один за
Также в любой вершине хранятся поля
: степень вершины(число ее детей) и пометка о том, потеряла ли вершина ребенка после того, как она в последний раз сделалась чьим-либо потомком.Фибоначчиевы кучи
Определение: |
Фибоначчиева куча - набор фибоначчиевых деревьев. |
Корни фибоначчиевых деревьев, составляющих фибоначчиеву кучу, также объединены в двусвязный циклический список(корневой список, root list).
Доступ к куче осуществляется с помощью указателя
, указывающего на минимальную вершину в куче.Доказательство времени работы для всех операций с фибоначчиевыми кучами проводим с помощью амортизационного анализа.