Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AlgStr / Библиотека / Разные источники / Биномиальная куча (Вики).doc
Скачиваний:
40
Добавлен:
23.03.2015
Размер:
231.42 Кб
Скачать

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

[править]

Материал из Википедии — свободной энциклопедии

У этого термина существуют и другие значения, см. Куча (значения).

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

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

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

  • все биномиальные деревья имеют разный размер.

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

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

  • Вставка нового элемента

  • Нахождение элемента с минимальным ключом

  • Удаление элемента с минимальным ключом

  • Уменьшение значения ключа данного элемента

  • Удаление данного элемента

  • Объединение двух куч.

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

Двоичная куча

[править]

Материал из Википедии — свободной энциклопедии

Текущая версия страницы пока не проверяласьопытными участниками и может значительно отличаться отверсии, проверенной 18 июня 2010; проверки требуют37 правок.

У этого термина существуют и другие значения, см. Куча (значения).

Имеется викиучебникпо теме«Двоичная куча»

Двоичная куча

Двои́чная ку́ча,пирами́да[1], илисортиру́ющее де́рево— такоедвоичное дерево, для которого выполнены три условия:

  1. Значение в любой вершине не меньше, чем значения её потомков.

  2. Каждый лист имеет глубину (расстояние до корня) либо dлибоd-1. Иными словами, если назватьслоемсовокупность вершин, находящихся на определённой глубине, то все слои, кроме, быть может, последнего, заполнены полностью.

  3. Последний слой заполняется слева направо.

Существуют также кучи, где значение в любой вершине, наоборот, не больше, чем значения её потомков. Такие кучи называются min-heap, а кучи, описанные выше — max-heap. В дальнейшем рассматриваются только max-heap. Все действия с min-heap осуществляются аналогично.

структура данных для хранения двоичной кучи

Удобная структура данных для сортирующего дерева — массивA, у которого первый элемент,A[1] — элемент в корне, а потомками элементаA[i] являютсяA[2i] иA[2i+1] (при нумерации элементов с первого). При нумерации элементов с нулевого, корневой элемент —A[0], а потомки элементаA[i] —A[2i+1] иA[2i+2]. При таком способе хранения условия 2 и 3 выполнены автоматически.

Высота кучи определяется как высота двоичного дерева. То есть она равна количеству рёбер в самом длинном простом пути, соединяющем корень кучи с одним из её листьев. Высота кучи есть , гдеN— количество узлов дерева.

Содержание

 [убрать]

  • 1 Функциональность

  • 2 Базовые процедуры

    • 2.1 Восстановление свойств кучи

    • 2.2 Построение кучи

    • 2.3 Пирамидальная сортировка

    • 2.4 Изменение значения элемента

    • 2.5 Добавление элемента

    • 2.6 Извлечение максимального элемента

  • 3 См. также

  • 4 Ссылки