Simple Confluently Persistent Catenable Lists

We consider the problem of maintaining persistent lists subject to concatenation and to insertions and deletions at both ends. Updates to a persistent data structure are nondestructive---each operation produces a new list incorporating the change, while keeping intact the list or lists to which it applies. Although general techniques exist for making data structures persistent, these techniques fail for structures that are subject to operations, such as catenation, that combine two or more versions. In this paper we develop a simple implementation of persistent double-ended queues (deques) with catenation that supports all deque operations in constant amortized time. Our implementation is functional if we allow memoization.

[1]  Robert E. Tarjan,et al.  Data-Structural Bootstrapping, Linear Path Compression, and Catenable Heap-Ordered Double-Ended Queues , 1995, SIAM J. Comput..

[2]  Haim Kaplan,et al.  Persistent lists with catenation via recursive slow-down , 1995, STOC '95.

[3]  Robert E. Tarjan,et al.  Fully persistent lists with catenation , 1991, SODA '91.

[4]  Robert E. Tarjan,et al.  Confluently persistent deques via data structuaral bootstrapping , 1993, SODA '93.

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

[6]  Chris Okasaki,et al.  Purely functional data structures , 1998 .

[7]  Haim Kaplan Purely functional lists , 1997 .

[8]  Haim Kaplan,et al.  Simple Confluently Persistent Catenable Lists (Extended Abstract) , 1998, SWAT.

[9]  Robert E. Tarjan,et al.  Deques with Heap Order , 1986, Inf. Process. Lett..

[10]  Robert E. Tarjan,et al.  Data structural bootstrapping, linear path compression, and catenable heap ordered double ended queues , 1992, Proceedings., 33rd Annual Symposium on Foundations of Computer Science.

[11]  Robert E. Tarjan,et al.  Making Data Structures Persistent , 1989, J. Comput. Syst. Sci..

[12]  Chris Okasaki,et al.  Simple and efficient purely functional queues and deques , 1995, Journal of Functional Programming.

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

[14]  Chris Okasaki,et al.  Amortization, lazy evaluation, and persistence: lists with catenation via lazy linking , 1995, Proceedings of IEEE 36th Annual Foundations of Computer Science.

[15]  Robert Todd Hood,et al.  The Efficient Implementation of Very-high-level Programming Language Constructs , 1982 .

[16]  Haim Kaplan,et al.  Purely functional representations of catenable sorted lists , 1996, STOC '96.

[17]  Haim Kaplan,et al.  Purely functional, real-time deques with catenation , 1999, JACM.

[18]  Paul F. Dietz Fully Persistent Arrays (Extended Array) , 1989, WADS.

[19]  S. Rao Kosaraju,et al.  An optimal RAM implementation of catenable min double-ended queues , 1994, SODA '94.