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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
Пример биномиальной кучи, содержащий элементы с ключами от 1 до 13

Биномиальная куча (англ. binomial heap) — структура данных, реализующая абстрактный тип данных «очередь с приоритетом».

Описание[править | править код]

Биномиальная куча представляет собой набор биномиальных деревьев — объектов, задаваемых рекуррентно следующим образом:[1]

  • биномиальное дерево нулевого ранга состоит из одной вершины;
  • биномиальное дерево ранга представляет собой вершину и детей, ранг которых последовательно уменьшается с до 0.

Таким образом, биномиальное дерево ранга содержит вершин и имеет вершин на глубине , в честь чего оно и получило своё название.

Из двух деревьев ранга можно образовать одно ранга путём подвешивания одного из них к корню другого в качестве -ого ребёнка.

Биномиальная куча обладает двумя свойствами:

  • ключ каждой вершины не меньше ключа её родителя;
  • все биномиальные деревья имеют разный размер.

Из этих свойств вытекают два следствия. Во-первых, корень каждого из деревьев имеет наименьший ключ среди его вершин. Во-вторых, суммарное количество вершин в биномиальной куче однозначно определяет размеры входящих в неё деревьев. Например, биномиальная куча с вершинами состоит из трёх деревьев высотой 3, 2 и 0 и имеющих, соответственно, 8, 4 и 1 элементов (см. рис.)

Следующие операции выполняются за время , где n — число вершин:

  • Вставка нового элемента (амортизированное )
  • Нахождение элемента с минимальным ключом
  • Удаление элемента с минимальным ключом
  • Уменьшение значения ключа данного элемента
  • Удаление данного элемента
  • Объединение двух куч.

Таким образом, биномиальная куча является сливаемой кучей, то есть кроме стандартных операций очереди с приоритетом (добавления, удаления, извлечения минимума, изменения ключей) предоставляет дополнительную операцию слияния двух куч.

См. также[править | править код]

Примечания[править | править код]

  1. Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Глава 19. Биномиальные пирамиды // Алгоритмы: построение и анализ = Introduction to Algorithms / Под ред. И. В. Красикова. — 3-е изд. — М.: Вильямс, 2013. — С. 537-558. — ISBN 5-8459-1794-8.