Design and Implementation of an Efficient Priority Queue Data Structure
Date of Award
Doctor of Philosophy
Dr. Elise de Doncker, Ph.D.
Dr. John Kapenga, Ph.D.
Dr. David Zeitler, Ph.D.
Bucket data structure, heap, performance, priority queue
Priority queues are one of the most useful data structures. Research to improve the efficiency of priority queues is on-going in the field of Computer Science. We have designed and implemented a priority queue based on buckets that improves the performance of applications that utilize min/max heaps. The data structure improves an application’s insertion time and deletion time, and thus its overall execution time. We demonstrate the performance improvements in a wide variety of applications. Every one of the applications that we implemented is well-known, and important in the Computer Science field. We also demonstrate that the performance gains over min/max heaps increase as the amount of data increases that is inserted into and deleted from the priority queue. This is attractive in a world where Big Data applications are common-place and the amount of data processed by applications is growing day by day.
The applications for which our buckets data structure provide performance improvements include adaptive multivariate integration, 15-puzzle, A* search algorithm, Huffman codes, the transportation problem, and the traveling salesperson. Our testing regimen is rigorous. We identified a common algorithm in most of these applications. It consists of deleting a node from the priority queue, processing it, and inserting two or more nodes back into the priority. The algorithm continues until a termination condition is confirmed. So, we developed an application that simply deletes and inserts two or more nodes until the number of nodes in the priority reaches a configured limit. This stress testing allowed us to show the efficiency and accuracy that the buckets data structure delivers.
The buckets data structure is fully functional and self-contained. It has features and properties that go above what heaps can offer. For example, the data structure cannot only replace a min or max heap in virtually any application; it can also be configured to operate as a queue and/or a stack. The buckets data structure is a double-ended priority queue that can even operate as a set where nodes with duplicate values are prevented from being inserted into the priority queue. It has been utilized in a performance enhancement of the multivariate integration application’s parallel algorithm.
Restricted to Campus until
Rhodes, James A., "Design and Implementation of an Efficient Priority Queue Data Structure" (2023). Dissertations. 3950.