Реализация приоритетной очереди на базе кучи
Структура данных кучи с операциями Heapify-down и Heapify-up позволяет эф- фективно реализовать приоритетную очередь, которая в любой момент времени содержит не более N элементов. Ниже приводится сводка операций, которые мы будем использовать.
- StartHeap(N) возвращает пустую кучу H, настроенную для хранения не более N элементов. Операция выполняется за время O(N), так как в ней инициализи- руется массив, используемый для хранения кучи.
- Insert(H, v) вставляет элемент v в кучу H. Если куча в данный момент содержит
n элементов, операция выполняется за время O(log n).
- FindMin(H) находит наименьший элемент кучи H, но не удаляет его. Операция выполняется за время O(1).
- Delete(H, i) удаляет элемент в позиции i. Для кучи, содержащей n элементов, операция выполняется за время O(log n).
- ExtractMin(H) находит и удаляет из кучи элемент с наименьшим значением клю- ча. Она объединяет две предыдущие операции, а следовательно, выполняется за время O(log n).
Чтобы организовать эффективное обращение к нужным элементам приоритетной очереди, достаточно создать дополнительный массив Position, в котором хранится текущая позиция каждого элемента (каждого узла графа) в куче. С ним можно реализовать следующие операции.
- Для удаления элемента v применяется операция Delete(H,Position[v]). Создание массива не увеличивает общее время выполнения, поэтому удаление элемента v из кучи с n узлами выполняется за время O(log n).
- В некоторых алгоритмах также используется операция ChangeKey(H, v, α), кото- рая изменяет ключ элемента v новым значением key(v) = α. Чтобы реализовать эту позицию за время O(log n), необходимо сначала определить позицию v в массиве, что делается при помощи массива Position. После определения пози- ции элемента v мы изменяем его ключ, а затем применяем процедуру Heapify-up или Heapify-down в зависимости от ситуации.
Статьи по теме
- Алгоритмы, которые работают бесконечно
- Бесконечные пространства выборки
- Независимые события
- Конечные вероятностные пространства
- Простой рандомизированный план
- Планы и их продолжительность
- Анализ алгоритмов маркировки
- Достижение линейного ожидаемого времени выполнения
- Структура данных для хранения подквадратов
Полезные статьи
- Оформление отчета по практике по ГОСТу 2021/2022
- Оформление ВКР по ГОСТу
- Как составить бизнес-план своими силами
- Оформление эссе по ГОСТу
- Оформление презентации по ГОСТу
- Оформление статьи по ГОСТу
- Оформление дипломной работы по ГОСТ 2021/2022
- Оформление курсовой работы по ГОСТу
- Оформление контрольной работы по ГОСТу
Узнайте цену услуг:
Узнай цену консультации
"Да забей ты на эти
дипломы и экзамены!”
(дворник Кузьмич)