03.05.115 Очереди с приоритетами - justjune/AiSD2026 GitHub Wiki
Определения
Очередь с приоритетом (priority queue) — это абстрактный тип данных, в котором порядок извлечения элементов определяется не временем их добавления, а значением приоритета. Элемент с наивысшим (или наименьшим, в зависимости от реализации) приоритетом обрабатывается первым. Такой подход предоставляет разработчику больше гибкости, чем обычная сортировка, т. к. позволяет вводить новые элементы в систему в произвольном месте. Вставить новый элемент в нужное место в очереди с приоритетами может оказаться намного эффективнее, чем сортировать заново все элементы при каждой вставке.
Базовая очередь с приоритетами поддерживает три основные операции:
insert (Q, x)- вставляет в очередь с приоритетами о элемент х;find-minimum(Q) иfind-maximum(Q)- возвращает указатель на элемент с наименьшим (наибольшим) значением ключа среди всех ключей в очереди с приоритетами Q;delete-minimum(Q)иdelete-maximum (Q)- удаляет из очереди с приоритетами о элемент с наименьшим (наибольшим) значением ключа.
Примеры и применения
В качестве примера очереди с приоритетом можно рассмотреть список задач работника. Когда он заканчивает одну задачу, он переходит к очередной — самой приоритетной (ключ будет величиной, обратной приоритету) — то есть выполняет операцию извлечения максимума. Начальник добавляет задачи в список, указывая их приоритет, то есть выполняет операцию добавления элемента.
Очереди с приоритетом широко используются в различных областях:
- Алгоритмы на графах. Например, в алгоритме Дейкстры для поиска кратчайшего пути очередь с приоритетом используется для выбора вершины с минимальным расстоянием на каждом шаге.
- Планирование задач. В операционных системах задачи с более высоким приоритетом обрабатываются раньше фоновых.
- Симуляции и оптимизация. Обработка элементов на основе их важности или времени поступления.
- Сетевые технологии. Приоритизация трафика в маршрутизаторах и коммутаторах, где критически важные пакеты обрабатываются в первую очередь.
Литература
[ Скиена 2022 с. 115]