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.

Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.