Radix-куча - Radix heap
Эта статья включает в себя список общих Рекомендации, но он остается в основном непроверенным, потому что ему не хватает соответствующих встроенные цитаты.Сентябрь 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
А куча системы счисления это структура данных для реализации операций очередь с монотонным приоритетом. Затем можно управлять набором элементов, которым назначен ключ. Время выполнения операций зависит от разницы между наибольшим и наименьшим ключом или константой. Структура данных состоит в основном из ряда ведра, размер которых увеличивается экспоненциально.
Предпосылки
- все ключи натуральные числа;
- Максимум. ключ - мин. ключ C для постоянной C;
- то экстракт мин операция монотонный; то есть значения, возвращаемые последовательными экстракт мин звонки монотонно возрастающий.
Описание структуры данных
Три самых важных поля находятся:
- размера с наименьшим индексом 0 хранит сегменты;
- размера с 0 в качестве наименьшего индекса сохранить (нижние) границы сегментов;
- , выполняется для каждого элемента в куче ведро, в котором он хранится.
На диаграмме выше показана структура данных. Применяются следующие инварианты:
- ключ в : ключи в вверх или вниз по значению в или же ограничено.
- и за : размеры ведер увеличиваются в геометрической прогрессии.
Важно отметить экспоненциальный рост пределов (и, следовательно, диапазона, удерживаемого корзиной). Таким образом, логарифмическая зависимость величин поля имеет значение C, максимальное различие между двумя ключевыми значениями.
Операции
В течение инициализация, генерируются пустые сегменты и нижние границы генерируются (согласно инварианту 2); Продолжительность .
В течение вставлять, новый элемент линейно перемещается справа налево по ковшам, а новый элемент с хранится в левом ведре к этому ; Продолжительность .
За клавиша уменьшения, сначала уменьшается значение ключа (проверка на соответствие инвариантам). Затем поле используется для определения местоположения элемента и при необходимости повторяется слева, аналогично вставлять операция. Время работы (амортизировано).
В экстракт мин операция удаляет элемент из корзины и возвращает его. Если ведро еще не пусто, операция прекращена. Если, однако, оно пустое, ищется следующее большее непустое ведро, его наименьший элемент отслеживается и установлен на k (для этого требуется монотонность). Затем, согласно инвариантам, границы ведра переопределяются и элементы удаляются. к новообразованным ведрам; Продолжительность (амортизировано).
Если отображается, поле обновлено.
Рекомендации
- Б.В. Черкасский, А.В. Гольдберг, К. Сильверштейн: Сегменты, кучи, списки и очереди с монотонным приоритетом (Абстрактный ), в: Материалы восьмого ежегодного симпозиума ACM-SIAM по дискретным алгоритмам. Январь 1997 г., стр. 83–92.