2–3 кучи
![]() | Эта статья может быть слишком технической для понимания большинства читателей . ( Апрель 2024 г. ) |
Эта статья в значительной степени или полностью опирается на один источник . ( май 2024 г. ) |
В информатике куча 2–3 — это структура данных , разновидность кучи , разработанная Тадао Такаокой в 1999 году. Структура аналогична куче Фибоначчи и заимствована из дерева 2–3 .
Затраты времени на некоторые распространенные операции с кучей составляют:
- Удалить – мин. дублей амортизированное время .
- Уменьшение клавиши занимает постоянное амортизируемое время.
- Вставка занимает постоянное амортизированное время.
Полином деревьев
[ редактировать ]Источник: [1]
Линейное дерево размера представляет собой последовательный путь узлы, первый из которых является корнем дерева и выделен жирным шрифтом. (например представляет собой линейное дерево из одного узла). Продукт из двух деревьев и , представляет собой новое дерево с каждым узлом заменяется копией и для каждого ребра соединяем корни деревьев, соответствующие концам ребра. Обратите внимание, что это определение продукта является ассоциативным, но не коммутативным. Сумма из двух деревьев и это совокупность двух деревьев и .
R-арный полином деревьев определяется как где . Это полиномиальное обозначение для деревьев узлы уникальны. Дерево на самом деле копия что их корни связаны с ребра последовательно и путь этих край называется основным стволом дерева . Кроме того, r-арный многочлен деревьев называется r-номиальной очередью, если узлы многочлена деревьев связаны с ключами в свойстве кучи.
Операции над r-номиальными очередями
[ редактировать ]Чтобы объединить два термина формы и мы просто переупорядочиваем деревья в основном стволе на основе ключей в корне деревьев. Если у нас будет срок формы и дерево для переноски . Иначе у нас было бы только дерево . Таким образом, сумма двух r-номиальных очередей на самом деле аналогична сложению двух чисел в системе счисления. .
Вставка ключа в полиномиальную очередь аналогична объединению одного узла с меткой ключа в существующую r-номиальную очередь, принимая время.
Чтобы удалить минимум, сначала нам нужно найти минимум в корне дерева, скажем , то удаляем минимум из и добавляем полученную полиномиальную очередь к за общее время .
(2,3)-куча
[ редактировать ]Источник: [1]
Ан дерево определяется рекурсивно для ( находится между и и операции оцениваются справа налево), где для двух деревьев и , результат операции соединяет корень как самый правый ребенок в корне и представляет собой дерево с одним узлом. Обратите внимание, что корень дерева имеет степень .
Расширенный полином деревьев, , определяется . Если мы назначаем ключи узлам расширенного многочлена деревьев в кучном порядке, это называется и частный случай и называется .
Операции над (2,3)-кучей
[ редактировать ]Удалить-мин : сначала найдите минимум, сканируя корень деревьев. Позволять — дерево, содержащее минимальный элемент, и пусть быть результатом удаления корня из . Затем объединить и (Операция слияния аналогична слиянию двух r-номиальных очередей ).
Вставка : чтобы вставить новый ключ, объедините существующую (2,3)-кучу с одним деревом узлов, помечены этим ключом.
Клавиша уменьшения : Готово!
Ссылки
[ редактировать ]- ^ Jump up to: а б Такаока, Тадао (март 2003 г.). «Теория 2–3 куч» . Дискретная прикладная математика . 126 (1): 115–128. дои : 10.1016/S0166-218X(02)00219-6 .