Изменения

Перейти к: навигация, поиск

Биномиальная куча

1152 байта добавлено, 13:31, 10 марта 2012
extractMin
=== extractMin ===
Приведенная ниже процедура извлекает узел с минимальным ключом из биномиальной кучи и возвращает указатель на извлеченный узел.  Рассмотрим пошагово алгоритм:* Для выполнения процедуры удаления минимального элемента необходимо сначала найти биномиальное дерево с минимальным корневым значением. Предположим, что это дерево <tex>B_k</tex>. Трудоемкость этого шага алгоритма есть <tex>O(\log n)</tex>.* Удаляем дерево <tex>B_k</tex> из кучи <tex>H</tex>. Иными словами удаляем текущий корень из списка корней кучи. Трудоемкость этого шага алгоритма есть <tex>O(1)</tex>.* Далее следует перебор детей корня, причем в ходе перебора идет удаление найденного корня из списка предков его детей за <tex>O(1)</tex>. Для каждого ребенка создает новое дерево <tex>H'</tex>, которое сливаем с кучей <tex>H</tex> за O(log n). Процедура выполняется за время <tex>O(\log n)</tex>, поскольку всего в списке <tex>O(\log n)</tex> корней биномиальных деревьев. И всего у найденного дерева <tex> k </tex> порядка(с минимальным значением ключа) ровно <tex> k </tex> детей, то сложность перебора этих детей будет тоже <tex>O(\log n)</tex>. Таким образом операция выполняется <tex>O(\log n) + O(\log n) = O(\log n)</tex>.
<code>
333
правки

Навигация