Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
R. Ahuja and K. Mehlhorn and J.B. Orlin and R.E. Tarjan, ‘Faster Algorithms for the Shortest Path Problem’, Journal of the ACM, 37:213–223, 1990.
L. Arge, ‘The Buffer Tree: A new technique for optimal I/O-algorithms’, Workshop on Algorithms and Data Structures, LNCS 955, 334–345, 1995.
R. Bayer and E. McCreight, ‘Organization and Maintenance of Large Ordered Indices’, Acta Informatica, 1:173–189, 1972.
G. S. Brodal and J. Katajainen, ‘Worst-case efficient external memory priority queues’, ScandinavianWorkshop on Algorithm Theory, LNCS 1432, 107–117, 1998.
Y. Chiang, M. T. Goodrich, E. F. Grove, R. Tamassia, D. E. Vengroff, and J. S. Vitter, ‘External-memory graph algorithms’, ACM-SIAM Symposium on Discrete Algorithms, 139–149, 1995.
A. Crauser and K. Mehlhorn LEDA-SM, extending LEDA to Secondary Memory. Workshop on Algorithmic Engineering, 1999 (this volume).
E.W. Dijkstra. ‘A note on two problems in connection with graphs.’ Num. Math., 1:269–271, 1959.
M. Farach and P. Ferragina and S. Muthukrishnan. ‘Overcoming the memory bottleneck in Suffix Tree construction’, IEEE Symposium on Foundations of Computer Science, 194–183, 1998.
R. Fadel and K.V. Jakobsen and J. Katajainen and J. Teuhola, ‘External heaps combined with effective buffering’, Proc. Computing: The Australasian Theory Symposium, 1997.
M.L. Fredman and R.E. Tarjan, ‘Fibonacci heaps and their use in improved network optimization algorithms.’, Journal of the ACM, 34:596–615, 1987.
D. Hutchinson, A. Maheshwari, J. Sack and R. Velicescu, ‘Early experiences in implementing buffer trees’, Workshop on Algorithmic Engineering, 92–103, 1997.
‘IEEE standard 754-1985 for binary floating-point arithmetic’, reprinted in SIGPLAN 22, 1987.
V. Kumar and E.J. Schwabe, ‘Improved Algorithms and Data Structures for Solving Graph Problems in External Memory’, IEEE Symposium on Parallel and Distributed Processing, 169–177, 1996.
A. LaMarca and R.E. Ladner, ‘The influence of caches on the performances of heaps’, Tech. Report 96-02-03, UW University, 1996. To appear in Journal of Experimental Algorithmics.
K. Mehlhorn and S. Näher. LEDA: A platform for combinatorial and geometric computing. Communication of the ACM, 38:96–102, 1995.
D. Naor, C. U. Martel and N. S. Matloff, ‘Performance of Priority Queue Structures in a Virtual Memory Environment’, The Computer Journal, 34(5):428–437, 1991.
C. Ruemmler and J. Wilkes, ‘An introduction to disk drive modeling’, IEEE Computer, 27(3):17–29, 1994.
P. Sanders. ‘Fast priority queues for cached memory’, ALENEX’ 99. Workshop on Algorithmic Engineering and Experimentation, LNCS, 1999 (to appear).
M. Thorup. ‘On RAM priority queues’, ACM-SIAM Symposium on Discrete Algorithms, 59–67, 1996.
D.E. Vengroff and J.S. Vitter. ‘Supporting I/O-efficient scientific computation using TPIE’, IEEE Symposium on Parallel and Distributed Processing, 74–77, 1995.
J.S. Vitter and E.A.M. Shriver, ‘Optimal Algorithms for Parallel Memory I:Two-Level Memories’, Algorithmica,12(2-3):110–147, 1994.
J. Vitter. External memory algorithms. Invited Tutorial, ACM Symposium on Principles of Database Systems, 1998. Also Invited Paper in European Symposium on Algorithms, 1998.
J.W.J. William. Algorithm 232 (heapsort), In Communications of the ACM, 347–348,1964.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Brengel, K., Crauser, A., Ferragina, P., Meyer, U. (1999). An Experimental Study of Priority Queues in External Memory. In: Vitter, J.S., Zaroliagis, C.D. (eds) Algorithm Engineering. WAE 1999. Lecture Notes in Computer Science, vol 1668. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48318-7_27
Download citation
DOI: https://doi.org/10.1007/3-540-48318-7_27
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66427-7
Online ISBN: 978-3-540-48318-2
eBook Packages: Springer Book Archive