Биномиальная куча — различия между версиями
| Строка 26: | Строка 26: | ||
=== Операции над биномиальными пирамидами === | === Операции над биномиальными пирамидами === | ||
| + | Рассмотрим операции, которые можно производить с биномиальной пирамидой. Их верхние асимптотические оценки показаны в таблице. | ||
{| class="simple" border="1" | {| class="simple" border="1" | ||
| − | | | + | |Make_Heap |
| − | + | |<tex>\Theta(1)</tex> | |
| − | | | ||
|- | |- | ||
| − | | | + | |Insert |
| − | | | + | |<tex>O(\lgn)</tex> |
| − | |||
|- | |- | ||
| − | | | + | |Minimum |
| − | | | + | |<tex>O(\lgn)</tex> |
| − | | | + | |- |
| + | |Extract_Min | ||
| + | |<tex>\Theta(\lgn)</tex> | ||
| + | |- | ||
| + | |Union | ||
| + | |<tex>\Omega(\lgn)</tex> | ||
| + | |- | ||
| + | |Decrease_Key | ||
| + | |<tex>\Theta(\lgn)</tex> | ||
| + | |- | ||
| + | |Delete | ||
| + | |<tex>\Theta(\lgn)</tex> | ||
|} | |} | ||
Версия 22:57, 13 марта 2011
| Определение: |
| Биномиальное дерево — дерево, определяемое для каждого следующим образом: - дерево, состоящее из одного узла высоты 0, то есть состоит из одного узла; состоит из двух биномиальных деревьев , связанны вместе таким образом, что корень одного из них является крайним левым дочерним узлом корня второго дерева. |
Свойства биномиальных деревьев. Биномиальное дерево с n вершинами:
- имеет узлов;
- имеет высоту k;
- имеет ровно узлов на высоте ;
- имеет корень степени k; степерь всех остальных вершин меньше степени корня биномиального дерева. Кроме того, если дочерние узлы корня пронумеровать слева направо числами , то i-й дочерний узел корня является корнем биномиального дерева
- максимальная степень произвольного узла в биномиальном дереве с n узлами равна .
| Определение: |
Биномиальная пирамида H — представляет собой множество биномиальных деревьев, которые удовлетворяют следующим свойствам биномиальных пирамид.
|
Представление биномиальных куч
Поскольку количество детей у узлов варьируется в широких пределах, ссылка на детей осуществляется через левого ребенка, а остальные дети образуют односвязный список. Каждый узел в биномиальной пирамиде (куче) представляется набором полей:
- key — ключ (вес) элемента;
- parent — указатель на родителя узла;
- child — указатель на левого ребенка узла;
- sibling — указатель на правого брата узла;
- degree — степень узла (количество дочерних узлов данного узла).
Доступ к куче осуществляется ссылкой на самое левое поддерево. Корни деревьев, из которых составлена куча, оказываются организованными с помощью поля sibling в так называемый корневой односвязный список.
Операции над биномиальными пирамидами
Рассмотрим операции, которые можно производить с биномиальной пирамидой. Их верхние асимптотические оценки показаны в таблице.
| Make_Heap | |
| Insert | |
| Minimum | |
| Extract_Min | |
| Union | |
| Decrease_Key | |
| Delete |