Фибоначчиева куча
Фибоначчиевы деревья
| Определение: |
| Фибоначчиево дерево - биномиальное дерево, где у каждой вершины удалено не более одного ребенка. |
| Лемма: |
Фибоначчиево дерево ранга содержит не менее ( число Фибоначчи) вершин |
| Доказательство: |
|
Для рангов 0 и 1 соответствующие деревья содержат 1 вершину, . Рассмотрим дерево ранга Оно в худшем случае (удален ребенок ранка ) содержит вершин. Эта сумма, в свою очередь, равна |
Поскольку , где , то высота фибоначчиева дерева есть .
Каждая вершина знает своего родителя () и какого-нибудь своего ребенка().
Дети любой вершины связаны в циклический двусвязный список. Такие списки удобны по двум причинам: из такого списка можно удалить вершину, и два таких списка можно связать в один за
Также в любой вершине хранятся поля : степень вершины(число ее детей) и пометка о том, потеряла ли вершина ребенка после того, как она в последний раз сделалась чьим-либо потомком.
Фибоначчиевы кучи
| Определение: |
| Фибоначчиева куча - набор фибоначчиевых деревьев. |
Корни фибоначчиевых деревьев, составляющих фибоначчиеву кучу, также объединены в двусвязный циклический список(корневой список, root list).
Доступ к куче осуществляется с помощью указателя , указывающего на минимальную вершину в куче.
Доказательство времени работы для всех операций с фибоначчиевыми кучами проводим с помощью амортизационного анализа.