Chapter 7 Fundamental algorithms and data structures

In this tutorial, we describe in detail some fundamental data structures and operations, and we discuss the techniques and arguments involved. Our intention is to provide the reader both with a toolbox of data structures, serving as building blocks for algorithms, and some knowledge to build his own problem-specific data structures and algorithms. We present data structures and operations for the dictionary problem with and without access probabilities, for priority queues, and for the set union problem. The topics we discuss include linear lists, skip lists, red-black trees, finger search trees, the move-to-front heuristic for linear lists, the move-to-root heuristic for binary trees, splay trees, elementary hashing, pairing heaps, binomial queues, relaxed heaps, path-length reduction techniques for set union structures, amortization, and persistence. Since we emphasize detailed explanations of concepts, we necessarily do not cover many of the basic issues found in almost any textbook on algorithms and data structures. We do not discuss sorting, multidimensional keys, keys in a bounded universe, implicit data structures, external storage structures, dynamization techniques for static structures, and the design and analysis of algorithms in general; the latter is treated in a different chapter of this volume.

[1]  Andrew Chi-Chih Yao,et al.  On the Expected Performance of Path Compression Algorithms , 1985, SIAM J. Comput..

[2]  J. Kruskal On the shortest spanning subtree of a graph and the traveling salesman problem , 1956 .

[3]  Leonidas J. Guibas,et al.  A dichromatic framework for balanced trees , 1978, 19th Annual Symposium on Foundations of Computer Science (sfcs 1978).

[4]  Kurt Mehlhorn,et al.  Data Structures and Algorithms 2: Graph Algorithms and NP-Completeness , 1984, EATCS Monographs on Theoretical Computer Science.

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

[6]  M. AdelsonVelskii,et al.  AN ALGORITHM FOR THE ORGANIZATION OF INFORMATION , 1963 .

[7]  Robert E. Tarjan,et al.  Amortized efficiency of list update and paging rules , 1985, CACM.

[8]  Donald Ervin Knuth,et al.  The Art of Computer Programming, Volume II: Seminumerical Algorithms , 1970 .

[9]  J. Ian Munro,et al.  Self-organizing binary search trees , 1976, 17th Annual Symposium on Foundations of Computer Science (sfcs 1976).

[10]  J. Ian Munro,et al.  Analysis of the Expected Search Cost in Skip Lists , 1990, SWAT.

[11]  Jean Vuillemin,et al.  A data structure for manipulating priority queues , 1978, CACM.

[12]  Ellis Horowitz,et al.  Fundamentals of Data Structures , 1984 .

[13]  Robert E. Tarjan,et al.  Design and Analysis of a Data Structure for Representing Sorted Lists , 1978, SIAM J. Comput..

[14]  Edward M. Reingold,et al.  Binary Search Trees of Bounded Balance , 1973, SIAM J. Comput..

[15]  Chak-Kuen Wong,et al.  Upper Bounds for the Total Path Length of Binary Trees , 1973, JACM.

[16]  Leonidas J. Guibas,et al.  A new representation for linear lists , 1977, STOC '77.

[17]  Ronald L. Rivest,et al.  On self-organizing sequential search heuristics , 1976, CACM.

[18]  Stephen A. Cook,et al.  An overview of computational complexity , 1983, CACM.

[19]  Kurt Mehlhorn,et al.  Sorting Jordan Sequences in Linear Time Using Level-Linked Search Trees , 1986, Inf. Control..

[20]  Nicola Santoro,et al.  Min-max heaps and generalized priority queues , 1986, CACM.

[21]  William Pugh,et al.  Skip lists: a probabilistic alternative to balanced trees , 1989, CACM.

[22]  Lech Banachowski,et al.  A Complement to Tarjan's Result about the Lower Bound on the Complexity of the Set Union Problem , 1980, Inf. Process. Lett..

[23]  W. Ackermann Zum Hilbertschen Aufbau der reellen Zahlen , 1928 .

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

[25]  A. N. Shiryayev On the Notion of Algorithm , 1993 .

[26]  Robert E. Tarjan,et al.  A Linear-Time Algorithm for a Special Case of Disjoint Set Union , 1985, J. Comput. Syst. Sci..

[27]  Edward M. McCreight,et al.  Priority Search Trees , 1985, SIAM J. Comput..

[28]  Kurt Mehlhorn,et al.  Data Structures and Algorithms 1: Sorting and Searching , 2011, EATCS Monographs on Theoretical Computer Science.

[29]  Daniel S. Hirschberg,et al.  Self-organizing linear search , 1985, CSUR.

[30]  Larry Carter,et al.  Universal Classes of Hash Functions , 1979, J. Comput. Syst. Sci..

[31]  Richard J. Enbody,et al.  Dynamic hashing schemes , 1988, CSUR.

[32]  Robert E. Tarjan,et al.  Relaxed heaps: an alternative to Fibonacci heaps with applications to parallel computation , 1988, CACM.

[33]  Gilles Brassard,et al.  Algorithmics - theory and practice , 1988 .

[34]  Gaston H. Gonnet,et al.  Exegesis of Self-Organizing Linear Search , 1981, SIAM J. Comput..

[35]  Kurt Mehlhorn,et al.  Data Structures and Algorithms 3: Multi-dimensional Searching and Computational Geometry , 2012, EATCS Monographs on Theoretical Computer Science.

[36]  Jeffrey H. Kingston A New Proof of the Garsia-Wachs Algorithm , 1988, J. Algorithms.

[37]  Daniel S. Hirschberg,et al.  Data compression , 1987, CSUR.

[38]  Robert E. Tarjan,et al.  A Locally Adaptive Data , 1986 .

[39]  Paul D. Seymour,et al.  Self-organizing sequential search and Hilbert's inequalities , 1985, STOC '85.

[40]  Robert E. Tarjan,et al.  Efficiency of a Good But Not Linear Set Union Algorithm , 1972, JACM.

[41]  R. Tarjan Amortized Computational Complexity , 1985 .

[42]  Thomas A. Standish Data Structure Techniques , 1980 .

[43]  Robert E. Tarjan,et al.  Updating a Balanced Search Tree in O(1) Rotations , 1983, Inf. Process. Lett..

[44]  D. Huffman A Method for the Construction of Minimum-Redundancy Codes , 1952 .

[45]  T. C. Hu,et al.  Optimal Computer Search Trees and Variable-Length Alphabetical Codes , 1971 .

[46]  Michael J. Fischer,et al.  Efficiency of Equivalence Algorithms , 1972, Complexity of Computer Computations.

[47]  Chak-Kuen Wong,et al.  On Binary Search Trees , 1971, IFIP Congress.

[48]  Derick Wood,et al.  How to Update a Balanced Binary Tree with a Constant Number of Rotations , 1990, SWAT.

[49]  B. John Oommen,et al.  List Organizing Strategies Using Stochastic Move-to-Front and Stochastic Move-to-Rear Operations , 1987, SIAM J. Comput..

[50]  Ellis Horowitz,et al.  Fundamentals of Computer Algorithms , 1978 .

[51]  J. van Leeuwen,et al.  Alternative path compression techniques , 1977 .

[52]  Robert E. Tarjan,et al.  A Class of Algorithms which Require Nonlinear Time to Maintain Disjoint Sets , 1979, J. Comput. Syst. Sci..

[53]  J. Van Leeuwen,et al.  Handbook of theoretical computer science - Part A: Algorithms and complexity; Part B: Formal models and semantics , 1990 .

[54]  Robert E. Tarjan,et al.  Data structures and network algorithms , 1983, CBMS-NSF regional conference series in applied mathematics.

[55]  Jeffrey D. Ullman,et al.  Set Merging Algorithms , 1973, SIAM J. Comput..

[56]  Henk J. Olivié,et al.  A New Class of Balanced Search Trees: Half Balanced Binary Search Trees , 1982, RAIRO Theor. Informatics Appl..

[57]  Robert E. Tarjan,et al.  Sequential access in splay trees takes linear time , 1985, Comb..

[58]  Richard Cole,et al.  On the dynamic finger conjecture for splay trees , 1990, STOC '90.

[59]  Robert E. Tarjan,et al.  Erratum: An O(n log log n)-Time Algorithm for Triangulating a Simple Polygon , 1988, SIAM J. Comput..

[60]  Athanasios K. Tsakalidis,et al.  AVL-Trees for Localized Search , 1984, ICALP.

[61]  Jeffrey H. Kingston Algorithms and data structures - design, correctness, analysis , 1990, International computer science series.

[62]  John McCabe,et al.  On Serial Files with Relocatable Records , 1965 .

[63]  Harry R. Lewis,et al.  Data Structures and Their Algorithms , 1991 .

[64]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[65]  Donald E. Knuth,et al.  The Art of Computer Programming, Volume I: Fundamental Algorithms, 2nd Edition , 1997 .

[66]  Murray Sherk Self-Adjusting k-ary Search Trees , 1989, WADS.

[67]  Robert E. Tarjan,et al.  An O(n log log n)-Time Algorithm for Triangulating a Simple Polygon , 1988, SIAM J. Comput..

[68]  Michael Ian Shamos,et al.  Computational geometry: an introduction , 1985 .

[69]  Udi Manber,et al.  Introduction to algorithms - a creative approach , 1989 .

[70]  Donald E. Knuth,et al.  The art of computer programming. Vol.2: Seminumerical algorithms , 1981 .

[71]  Douglas W. Jones,et al.  Application of splay trees to data compression , 1988, CACM.

[72]  James R. Bitner,et al.  Heuristics That Dynamically Organize Data Structures , 1979, SIAM J. Comput..

[73]  Jonathan S. Turner,et al.  Approximation Algorithms for the Shortest Common Superstring Problem , 1989, Inf. Comput..

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

[75]  Yishai A. Feldman,et al.  Algorithmics: The Spirit of Computing , 1987 .

[76]  Gaston H. Gonnet,et al.  Heaps on Heaps , 1982, SIAM J. Comput..

[77]  Robert E. Tarjan,et al.  Planar point location using persistent search trees , 1986, CACM.

[78]  Arnold Schönhage Storage Modification Machines , 1980, SIAM J. Comput..

[79]  Alistair Moffat,et al.  A Fast Algorithm for Melding Splay Trees , 1989, WADS.

[80]  John T. Stasko,et al.  Pairing heaps: experiments and analysis , 1987, CACM.

[81]  Norbert Blum,et al.  On the Single-Operation Worst-Case Time Complexity of the Disjoint Set Union Problem , 1986, SIAM J. Comput..

[82]  Michael J. Fischer,et al.  An improved equivalence algorithm , 1964, CACM.

[83]  Gaston H. Gonnet,et al.  Handbook Of Algorithms And Data Structures , 1984 .

[84]  David Maier,et al.  Hysterical B-trees , 1981, Inf. Process. Lett..

[85]  Kurt Mehlhorn,et al.  A Lower Bound on the Complexity of the Union-Split-Find Problem , 1988, SIAM J. Comput..

[86]  Robert E. Tarjan,et al.  Making data structures persistent , 1986, STOC '86.

[87]  Jan van Leeuwen,et al.  Worst-case Analysis of Set Union Algorithms , 1984, JACM.

[88]  Niklaus Wirth,et al.  Algorithms + Data Structures = Programs , 1976 .

[89]  Robert E. Tarjan,et al.  Self-adjusting binary search trees , 1985, JACM.

[90]  Adriano M. Garsia,et al.  A New Algorithm for Minimum Cost Binary Trees , 1977, SIAM J. Comput..

[91]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[92]  Allen Van Gelder,et al.  Computer Algorithms: Introduction to Design and Analysis , 1978 .

[93]  B. John Oommen,et al.  Deterministic Optimal and Expedient Move-to-Rear List Organizing Strategies , 1990, Theor. Comput. Sci..

[94]  Stephen A. Cook,et al.  Time Bounded Random Access Machines , 1973, J. Comput. Syst. Sci..

[95]  Alfred V. Aho,et al.  Data Structures and Algorithms , 1983 .