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

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

Пример биномиальной кучи, содержащий элементы с ключами от 1 до 13

Описание править

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

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

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

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

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

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

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

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

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

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

См. также править

Примечания править

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