Изменения

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

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

2 байта добавлено, 14:31, 17 октября 2015
Исправлены две пунктуационные ошибки.
Рассмотрим пошагово алгоритм:
* Найдем биномиальное дерево с минимальным корневым значением. Предположим, что это дерево <tex>B_k</tex>. Время работы этого шага алгоритма <tex>\Theta(\log n)</tex>.
* Удаляем дерево <tex>B_k</tex> из кучи <tex>H</tex>. Иными словами , удаляем его корень из списка корней кучи. Это можно сделать за время <tex>O(1)</tex>.
* Пусть <tex>H'</tex> {{---}} куча детей найденного корня. При этом мы для каждого из ребенка устанавливаем указатель на предка равным <tex>null</tex>. После этого сливаем кучу <tex>H'</tex> c <tex>H</tex> за <tex>\Omega(\log n)</tex>.
Процедура выполняется за время <tex>\Theta(\log n)</tex>, поскольку всего в списке <tex>\Theta(\log n)</tex> корней биномиальных деревьев. И всего у найденного дерева <tex> k </tex> порядка (с минимальным значением ключа) ровно <tex> k </tex> детей, то сложность перебора этих детей будет тоже <tex>\Theta(\log n)</tex>. А процесс слияния выполняется за <tex>\Omega(\log n)</tex>. Таким образом , операция выполняется <tex>\Theta(\log n)</tex>.
[[Файл:BinHeapExampleNew31.png|700px|Примеp извлечения минимума]]
Анонимный участник

Навигация