Project proposal: A meldable, iterator-valid priority queue

The Standard Template Library (STL) is a library of generic algorithms and data structures that has been incorporated in the C++ standard and ships with all modern C++ compilers. In the CPH STL project the goal is to implement an enhanced edition of the STL. The priority-queue class of the STL is just an adapter that makes any resizable array to a queue in which the elements stored are arranged according to a given ordering function. In the C++ standard no compulsory support for the operations delete(), increase(), or meld() is demanded even if those are utilized in many algorithms solving graph-theoretic or geometric problems. In this project, the goal is to implement a CPH STL extension of the priority-queue class which provides, in addition to the normal priority-queue functionality, the opera- tions delete(), increase(), and meld(). To make the first two of these operations possible, the class must also guarantee that external references to compartments inside the data structure are kept valid at all times.

[1]  Thomas Strothotte,et al.  An Algorithm for Merging Heaps , 1985, Acta Informatica.

[2]  Sartaj Sahni,et al.  Weight-biased leftist trees and modified skip lists , 1998, JEAL.

[3]  Haim Kaplan,et al.  Meldable heaps and boolean union-find , 2002, STOC '02.

[4]  Chris Okasaki,et al.  Alternatives to two classic data structures , 2005, SIGCSE '05.

[5]  Amr Elmasry,et al.  Two-Tier Relaxed Heaps , 2006, ISAAC.

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

[7]  Gerth Stølting Brodal,et al.  Worst-case efficient priority queues , 1996, SODA '96.

[8]  Donald B. Johnson,et al.  Priority Queues with Update and Finding Minimum Spanning Trees , 1975, Inf. Process. Lett..

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

[10]  Donald E. Knuth,et al.  The Art of Computer Programming: Volume 3: Sorting and Searching , 1998 .

[11]  Clifford Stein,et al.  Introduction to Algorithms, 2nd edition. , 2001 .

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

[13]  Jörg-Rüdiger Sack,et al.  A Characterization of Heaps and Its Applications , 1990, Inf. Comput..

[14]  Claus Jensen,et al.  Experimental evaluation of Navigation piles , 2006 .

[15]  Pat Morin,et al.  Putting your data structure on a diet , 2007 .

[16]  Jyrki Katajainen,et al.  Relaxed Weak Queues: An Alternative to Run-Relaxed Heaps , 2005 .

[17]  Jyrki Katajainen,et al.  A Framework for Speeding Up Priority-Queue Operations , 2005 .