Очередь с приоритетом | это... Что такое Очередь с приоритетом? (original) (raw)

Очередь с приоритетом (англ. priority queue) — абстрактный тип данных в программировании, поддерживающий три операции:

Говоря другим языком, очередь с приоритетом позволяет хранить пары (ключ, значение) и поддерживает операции добавления пары, поиска пары с минимальным ключом и извлечения пары с минимальным ключом:

Очередь с приоритетом может хранить несколько пар с одинаковыми ключами.

Если очередь пуста, то можно считать, что операции MIN и EXTRACT_MIN возвращают некоторую специальную константу UNDEF.

В разных реализациях очереди с приоритетом семантика и названия операций могут отличаться.

Есть ряд реализаций в которых все три операции выполняются в худшем случае за время, ограниченное O(\log n) (см. «O» большое и «o» малое), где n — количество хранимых пар. Реализация «Фибоначчиева куча» интересна тем, что в среднем (амортизационно) эти три операции выполняет за время O(1) и, кроме того, позволяет быстро (тоже за время O(1)) выполнять дополнительную операцию слияния двух куч.

Примеры

В качестве примера очереди с приоритетом можно рассмотреть список задач работника. Когда он заканчивает одну задачу, он переходит к очередной — самой приоритетной (ключ будет величиной, обратной приоритету) — то есть выполняет операцию EXTRACT_MIN.

Начальник добавляет задачи в список, указывая их приоритет, то есть выполняет операцию INSERT.

Расширения очереди с приоритетом

Различные реализации очереди с приоритетом нередко расширяют её интерфейс следующими операциями:

См. также

Литература

Ссылки