Kinetic priority queue
A Kinetic Priority Queue is an abstract kinetic data structure. It is a variant of a priority queue designed to maintain the maximum priority element when the priority of every element is changing as a continuous function of time. Kinetic priority queues have been used as components of several kinetic data structures, as well as to solve some important non-kinetic problems such as the k-set problem and the connected red blue segments intersection problem.
Implementations
The operations supported are:- : create an empty kinetic priority queue
- : - return the value stored in the queue at the current virtual time.
- : - insert a key into the kinetic queue at the current virtual time, whose value changes as a continuous function of time.
- - delete a key at the current virtual time.
Trajectory of element priorities | Kinetic heap | Kinetic hanger, heater & tournament | Dynamic convex hull |
Lines | |||
Line segments | |||
-intersecting curves | n/a |
Here, denotes the inverse Ackermann function.-intersecting curves refer to curves where each pair has at most intersections, and refers to a term in the Davenport-Schinzel sequence, which gives the maximum size of the upper envelope of intersecting curves. is the largest number of elements in the queue at any given time, while refers to the total number of elements that are ever in the queue.
Applications
Kinetic priority queues are used as part of other kinetic data structures/algorithms such as kinetic closest pair, kinetic max-cut or kinetic clustering.They can also be used to solve problems such as broadcast scheduling or the connected red blue segments intersection problem.