Эта статья включает список общих ссылок , но в ней отсутствуют соответствующие встроенные цитаты . ( Сентябрь 2017 ) |
Эта статья в значительной степени или полностью основана на одном источнике . ( май 2024 г. ) |
Радикальная куча — это структура данных для реализации операций монотонной очереди с приоритетом . Затем можно управлять набором элементов, которым назначен ключ. Время выполнения операций зависит от разницы между наибольшим и наименьшим ключом или константой. Структура данных в основном состоит из ряда блоков, размер которых увеличивается экспоненциально .
Три наиболее важных поля :
На диаграмме выше показана структура данных. Применяются следующие инварианты:
Важно отметить экспоненциальный рост пределов (и, следовательно, диапазона, который удерживает ведро). Таким образом, логарифмическая зависимость величин поля имеет значение C, максимальную разницу между двумя ключевыми значениями.
Во время инициализации генерируются пустые контейнеры и генерируются нижние границы (согласно инварианту 2); время выполнения .
Во время вставки новый элемент линейно перемещается справа налево по контейнерам, и новый элемент сохраняется в левом контейнере до тех пор , пока не наступит время выполнения .
Для reduce-key сначала уменьшается значение ключа (проверка соответствия инвариантам). Затем поле используется для поиска элемента и оно итерируется влево, если необходимо, аналогично операции вставки . Время выполнения (амортизируется).
Операция extract-min удаляет элемент из bucket и возвращает его. Если bucket еще не пуст, операция завершается. Однако если он пуст, ищется следующий больший непустой bucket, отслеживается его наименьший элемент и устанавливается равным k (для этого требуется монотонность). Затем, согласно инвариантам, границы bucket переопределяются, а элементы удаляются в новые сформированные bucket; время выполнения (амортизируется).
Если отображается, поле обновляется.