An experimental study of priority queues in external memory

A priority queue is a data structure that stores a set of items, each one consisting of a tuple which contains some (satellite) information plus a priority value (also called key) drawn from a totally ordered universe. A priority queue supports the following operations on the processed set: access_minimum (returns the item in the set having minimum key), delete_min (returns and deletes the item in the set having the minimum key) and insert (inserts a new item into the set). Priority queues (hereafter PQs) have numerous important applications: combinatorial optimization (e.g. Dijkstra’s shortest path algorithm [7]), time forward processing [5], job scheduling, event simulation and online sorting, just to cite a few. Many PQ implementations currently exist for small data sets fitting into the internal memory of the computer, e.g. k—ary heaps [23], Fibonacci heaps [10], radix heaps [1], and some of them are also publicly available to the programmers (see e.g. the LEDA library [15]). However, in large-scale event simulations or on instances of very large graph problems (as they recently occur in e.g. geographical information systems), the performance of these internal-memory PQs may significantly deteriorate, thus being a bottleneck for the overall application. In fact, as soon as parts of the PQs do not fit entirely into the internal memory of the computer, but reside in its external memory (e.g. in the hard disk), we may observe a heavy paging activity of the external-memory devices because the pattern of memory accesses is not tuned to exhibit any locality of reference. Due to the technological features of current disk systems [17], this situation may determine a slow down of 5 or 6 orders of magnitude in the final performance of each PQ-operation 1. Consequently, it is required to design PQs which take explicitly into account the physical properties of the disk systems in order to achieve efficient I/O-performances that allow these data structures to be plugged successfully in software libraries.

[1]  Jukka Teuhola,et al.  Heaps and Heapsort on Secondary Storage , 1999, Theor. Comput. Sci..

[2]  Edward F. Grove,et al.  External-memory graph algorithms , 1995, SODA '95.

[3]  Robert E. Tarjan,et al.  Fibonacci heaps and their uses in improved network optimization algorithms , 1984, JACM.

[4]  R. Bayer,et al.  Organization and maintenance of large ordered indices , 1970, SIGFIDET '70.

[5]  L FredmanMichael,et al.  Fibonacci heaps and their uses in improved network optimization algorithms , 1987 .

[6]  Jeffrey Scott Vitter,et al.  Supporting I/O-efficient scientific computation in TPIE , 1995, Proceedings.Seventh IEEE Symposium on Parallel and Distributed Processing.

[7]  John Wilkes,et al.  An introduction to disk drive modeling , 1994, Computer.

[8]  Kurt Mehlhorn,et al.  LEDA: a platform for combinatorial and geometric computing , 1997, CACM.

[9]  Peter Sanders,et al.  Fast priority queues for cached memory , 1999, JEAL.

[10]  Gerth Stølting Brodal,et al.  Worst-Case Efficient External-Memory Priority Queues , 1998 .

[11]  Jeffrey Scott Vitter,et al.  I/O-e cient scienti c computation using TPIE , 1996 .

[12]  Robert E. Tarjan,et al.  Fibonacci heaps and their uses in improved network optimization algorithms , 1987, JACM.

[13]  Edsger W. Dijkstra,et al.  A note on two problems in connexion with graphs , 1959, Numerische Mathematik.

[14]  Charles U. Martel,et al.  Performance of Priority Queue Structures in a Virtual Memory Environment , 1991, Comput. J..

[15]  Kurt Mehlhorn,et al.  LEDA-SM Extending LEDA to Secondary Memory , 1999, Algorithm Engineering.

[16]  Lars Arge,et al.  The Buffer Tree: A New Technique for Optimal I/O-Algorithms (Extended Abstract) , 1995, WADS.

[17]  S. Muthukrishnan,et al.  Overcoming the memory bottleneck in suffix tree construction , 1998, Proceedings 39th Annual Symposium on Foundations of Computer Science (Cat. No.98CB36280).

[18]  Richard E. Ladner,et al.  The influence of caches on the performance of heaps , 1996, JEAL.

[19]  Lars Arge,et al.  The Buuer Tree: a New Technique for Optimal I/o-algorithms ? , 1995 .

[20]  Gerth Stølting Brodal,et al.  Worst-Case External-Memory Priority Queues , 1998, SWAT.

[21]  Mikkel Thorup,et al.  On RAM priority queues , 1996, SODA '96.

[22]  Jeffrey Scott Vitter External memory algorithms , 1998, PODS '98.

[23]  Vijay Kumar,et al.  Improved algorithms and data structures for solving graph problems in external memory , 1996, Proceedings of SPDP '96: 8th IEEE Symposium on Parallel and Distributed Processing.

[24]  Kurt Mehlhorn,et al.  Faster algorithms for the shortest path problem , 1990, JACM.