- •Биномиальная куча
- •Двоичная куча
- •[Править] Функциональность
- •[Править] Базовые процедуры
- •[Править] Восстановление свойств кучи
- •[Править] Построение кучи
- •[Править] Пирамидальная сортировка
- •[Править] Изменение значения элемента
- •[Править] Добавление элемента
- •[Править] Извлечение максимального элемента
- •Очередь с приоритетом
- •[Править] Примеры
- •[Править] Расширения очереди с приоритетом
- •Фибоначчиева куча
- •[Править] Структура
- •[Править] Операции
- •[Править] Уменьшение ключа
- •[Править] Удаление узла
Биномиальная куча
[править]
Материал из Википедии — свободной энциклопедии
У этого термина существуют и другие значения, см. Куча (значения).
Пример биномиальной кучи, содержащий элементы с ключами от 1 до 13
Биномиальная куча(англ.binomial heap) —структура данных, реализующаяабстрактный тип данных«Очередь с приоритетом», которая представляет собой наборбиномиальных деревьевс двумя свойствами:
ключ каждой вершины не меньше ключа ее родителя;
все биномиальные деревья имеют разный размер.
Из этих свойств вытекают два следствия. Во-первых, корень каждого из деревьев имеет наименьший ключ среди его вершин. Во-вторых, суммарное количество вершин в биномиальной куче однозначно определяет размеры входящих в него деревьев. Например, биномиальная куча с 13 = 23+ 22+ 20вершинами состоит из трёх деревьев высотой 3, 2 и 0 (см. рис.)
Следующие операции выполняются за время O(logn), где n — число вершин:
Вставка нового элемента
Нахождение элемента с минимальным ключом
Удаление элемента с минимальным ключом
Уменьшение значения ключа данного элемента
Удаление данного элемента
Объединение двух куч.
Таким образом, биномиальная куча является сливаемой кучей, т.е кроме стандартных операцийочереди с приоритетом(добавления, удаления, извлечения минимума, изменения ключей) предоставляет дополнительную операцию слияния двух куч.
Двоичная куча
[править]
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверяласьопытными участниками и может значительно отличаться отверсии, проверенной 18 июня 2010; проверки требуют37 правок.
У этого термина существуют и другие значения, см. Куча (значения).
Имеется викиучебникпо теме«Двоичная куча»
Двоичная куча
Двои́чная ку́ча,пирами́да[1], илисортиру́ющее де́рево— такоедвоичное дерево, для которого выполнены три условия:
Значение в любой вершине не меньше, чем значения её потомков.
Каждый лист имеет глубину (расстояние до корня) либо dлибоd-1. Иными словами, если назватьслоемсовокупность вершин, находящихся на определённой глубине, то все слои, кроме, быть может, последнего, заполнены полностью.
Последний слой заполняется слева направо.
Существуют также кучи, где значение в любой вершине, наоборот, не больше, чем значения её потомков. Такие кучи называются 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— количество узлов дерева.
Содержание [убрать]
|