2019 International Conference on Information and Digital Technologies (IDT) | 2019
Practical Applicability of Advanced Implementations of Priority Queues in Finding Shortest Paths
Abstract
A priority queue belongs to most useful abstract data types. It plays a key role in graph algorithms, such as Dijkstra’s or Prim’s algorithm, in data mining algorithms, such as OPTICS, in discrete-event simulation, or in CPU scheduling. Various implementations of priority queues have been proposed during years. Most powerful ones are based on heap data structure that allows performing inserts and removals in O(log n) time. Using specialized heaps, such as pairing or Fibonacci, inserts can be done in O(1) time. Furthermore, Fibonacci heap or more complex heaps, such as Brodal queue or strict Fibonacci heap, support execution of another operation that is increment of priority of any element stored in the priority queue in O(1) time. This fact can be used to decrease time complexity of various algorithms that use priority queues. On the other hand, the constant factors hidden behind O notation of most of the operations can be really big what can significantly decrease practical applicability of these advanced implementations of priority queues. In this paper, we focus on three implementations of priority queues that are Fibonacci heap, Brodal queue, and strict Fibonacci heap, and we try to investigate their applicability in Dijkstra’s algorithm implemented in C++ programing language.