## Confluently Persistent Deques via Data-Structural Bootstrapping (1993)

Venue: | J. of Algorithms |

Citations: | 15 - 4 self |

### BibTeX

@ARTICLE{Buchsbaum93confluentlypersistent,

author = {Adam L. Buchsbaum and Robert E. Tarjan},

title = {Confluently Persistent Deques via Data-Structural Bootstrapping},

journal = {J. of Algorithms},

year = {1993},

volume = {18},

pages = {18--513}

}

### Years of Citing Articles

### OpenURL

### Abstract

We introduce data-structural bootstrapping, a technique to design data structures recursively, and use it to design confluently persistent deques. Our data structure requires O(log 3 k) worstcase time and space per deletion, where k is the total number of deque operations, and constant worst-case time and space for other operations. Further, the data structure allows a purely functional implementation, with no side effects. This improves a previous result of Driscoll, Sleator, and Tarjan. 1 An extended abstract of this paper was presented at the 4th ACM-SIAM Symposium on Discrete Algorithms, 1993. 2 Supported by a Fannie and John Hertz Foundation fellowship, National Science Foundation Grant No. CCR-8920505, and the Center for Discrete Mathematics and Theoretical Computer Science (DIMACS) under NSF-STC88-09648. 3 Also affiliated with NEC Research Institute, 4 Independence Way, Princeton, NJ 08540. Research at Princeton University partially supported by the National Science Foundatio...

### Citations

620 |
Compiling with Continuations
- Appel
- 1992
(Show Context)
Citation Context ...effectfree list operations are fundamental. They also can be used in the implementation of continuation a 4 log (i) is the log function iterated i times. 1 passing in functional programming languages =-=[4]-=-. Furthermore, some purely functional programming languages do not allow any reassignment of memory cells; such languages effectively implement all data structures, regardless of use, non-destructivel... |

603 |
Data Structures and Network Algorithms
- Tarjan
- 1983
(Show Context)
Citation Context ...urn the first and last elements of list X, respectively, without creating a new list. While the above operations can all be implemented destructively in O(1) worst-case time using doubly-linked lists =-=[37]-=-, providing a non-destructive implementation is more problematic. By nondestructiveswe mean that the operations pop, eject, and catenate leave their argument lists wholly unchanged. This falls within ... |

332 |
The Art of Computer Programming, volume 1: Fundamental Algorithms
- Knuth
- 1973
(Show Context)
Citation Context ...X and the list containing the first through the second-to-last elements of X. catenate (X;Y ) Return the list containing the elements of X followed by those of Y . X may be the same list as Y . Knuth =-=[23]-=- calls such lists deques (for double-ended queues) since access is provided to both ends of the lists. The familiar push and inject operations, which insert elements into the front and rear of lists, ... |

246 | Making data structures persistent
- Driscoll, Sarnak, et al.
- 1989
(Show Context)
Citation Context ...f operations: queries, which return information without modifying the data structure, and updates, which may change the underlying information being represented. In the terminology of Driscoll et al. =-=[18]-=-, a data structure is ephemeral if an update destroys the version of the data structure being changed; i.e., there is always one and only one valid version. A data structure that allows queries but no... |

172 |
Planar point location using persistent search trees
- Sarnak, Tarjan
- 1986
(Show Context)
Citation Context ...sions to be updated yields a fully persistent data structure and produces a tree-like notion of time. There has been much previous work on making various data structures partially or fully persistent =-=[8, 10, 11, 17, 22, 26, 27, 28, 29, 32, 34]-=-. There have also been some results providing general methods for making entire classes of data structures persistent [13, 15, 18, 30, 33]. In particular, Driscoll et al. [18] provide a method by whic... |

155 |
Two algorithms for maintaining order in a list
- Dietz, Sleator
(Show Context)
Citation Context ...(log n) to O(log 3 n) amortized time. Structural decomposition differs from ideas used to solve decomposable search problems [5] and from other ad hoc instances of data structure decomposition (e.g., =-=[14, 15, 16, 40, 42, 43]-=-) in that these previous results use only one level of decomposition, whereas bootstrapping is recursive. Non-destructive (or, in the parlance of Section 1.1, confluently persistent) deques have many ... |

154 | Fractional cascading: I. A data structuring technique
- Chazelle, Guibas
- 1986
(Show Context)
Citation Context ...s(T ))] deq (ls(T )) / catenate(deq (l z1 ); deq (ls(T ))) leaf (ls(T )) / leaf (l z1 ) Figure 11: Pseudocode for deletion of leftmost leaf of T . Double slash (//) precedes comments. data structures =-=[1, 2, 9, 21]-=-. They have also been used to turn amortized bounds into worst case bounds [3, 10, 16, 20, 22] and to improve the space requirements of a data structure [41]. The basic idea of global rebuilding is to... |

138 |
Amortized computational complexity
- Tarjan
- 1985
(Show Context)
Citation Context ...tures, which we discuss in Section 1.1. Driscoll, Sleator, and Tarjan [19] give a solution to the non-destructive output-restricted deque problem (no eject operation) that runs in O(1) amortized time =-=[38]-=- and space for all the operations except catenate; catenate consumes O(log log k) amortized time and space per operation, where k is the number of operations preceding the catenate. We report a soluti... |

129 |
The Design of Dynamic Data Structures
- Overmars
- 1983
(Show Context)
Citation Context ...erations with a new mechanism to ensure that the deque trees are balanced. The new technique is global rebuilding. Global rebuilding and the related idea of partial rebuilding, elucidated by Overmars =-=[31]-=-, are tools initially developed and used to dynamize static 13 x / leaf (ls(T )) // leftmost leaf of T y / first(deq (ls(T ))) // the parent of x in T if (degree(y) ? 3) then delete(s-list (y); head (... |

109 |
Leeuwen. Worst-case analysis of set union algorithms
- Tarjan, van
(Show Context)
Citation Context ...linking two trees A and B, we link the one with fewer leaves to the one with more, breaking a tie arbitrarily. This technique is also used to maintain balanced trees in the disjoint set union problem =-=[39]-=-. We first prove the following. Lemma 2.1 If k 1 then a non-root node in a deque tree never becomes a root node of a deque tree T unless T is a singleton node. Proof: New root nodes are created by the... |

104 |
Decomposable searching problems I: Staticto-dynamic transformation
- Bentley, Saxe
- 1980
(Show Context)
Citation Context ... leaves store smaller indexed 2-3 trees, improving their performance from O(log n) to O(log 3 n) amortized time. Structural decomposition differs from ideas used to solve decomposable search problems =-=[5]-=- and from other ad hoc instances of data structure decomposition (e.g., [14, 15, 16, 40, 42, 43]) in that these previous results use only one level of decomposition, whereas bootstrapping is recursive... |

90 |
Maintaining order in a linked list
- Dietz
- 1982
(Show Context)
Citation Context ...ju [24] to design catenable deques by dissecting them and storing contiguous pieces on stacks. The second type of bootstrapping, which we call structural decomposition, is similar to an idea of Dietz =-=[12]-=-, who recursively decomposes indexed 2-3 trees so that their leaves store smaller indexed 2-3 trees, improving their performance from O(log n) to O(log 3 n) amortized time. Structural decomposition di... |

85 |
Log-logarithmic worst-case range queries are possible
- Willard
- 1983
(Show Context)
Citation Context ...(log n) to O(log 3 n) amortized time. Structural decomposition differs from ideas used to solve decomposable search problems [5] and from other ad hoc instances of data structure decomposition (e.g., =-=[14, 15, 16, 40, 42, 43]-=-) in that these previous results use only one level of decomposition, whereas bootstrapping is recursive. Non-destructive (or, in the parlance of Section 1.1, confluently persistent) deques have many ... |

83 |
Programming Languages: Concepts and Constructs
- Sethi
- 1989
(Show Context)
Citation Context ...whereas bootstrapping is recursive. Non-destructive (or, in the parlance of Section 1.1, confluently persistent) deques have many uses in high-level programming languages such as LISP, ML, and Scheme =-=[35]-=-, in which side-effectfree list operations are fundamental. They also can be used in the implementation of continuation a 4 log (i) is the log function iterated i times. 1 passing in functional progra... |

81 | Incremental context-dependent analysis for language-based editors
- Reps, Teitelbaum, et al.
- 1983
(Show Context)
Citation Context ...sions to be updated yields a fully persistent data structure and produces a tree-like notion of time. There has been much previous work on making various data structures partially or fully persistent =-=[8, 10, 11, 17, 22, 26, 27, 28, 29, 32, 34]-=-. There have also been some results providing general methods for making entire classes of data structures persistent [13, 15, 18, 30, 33]. In particular, Driscoll et al. [18] provide a method by whic... |

49 |
Searching and storing similar lists
- Cole
- 1986
(Show Context)
Citation Context ...sions to be updated yields a fully persistent data structure and produces a tree-like notion of time. There has been much previous work on making various data structures partially or fully persistent =-=[8, 10, 11, 17, 22, 26, 27, 28, 29, 32, 34]-=-. There have also been some results providing general methods for making entire classes of data structures persistent [13, 15, 18, 30, 33]. In particular, Driscoll et al. [18] provide a method by whic... |

35 |
Efficient Applicative Data Types
- Myers
- 1984
(Show Context)
Citation Context |

33 |
Maintaining order in a generalized linked list
- Tsakalidis
- 1984
(Show Context)
Citation Context ...(log n) to O(log 3 n) amortized time. Structural decomposition differs from ideas used to solve decomposable search problems [5] and from other ad hoc instances of data structure decomposition (e.g., =-=[14, 15, 16, 40, 42, 43]-=-) in that these previous results use only one level of decomposition, whereas bootstrapping is recursive. Non-destructive (or, in the parlance of Section 1.1, confluently persistent) deques have many ... |

26 |
How to Search in History
- Chazelle
- 1985
(Show Context)
Citation Context |

26 |
New trie data structures which support very fast search operations
- Willard
- 1984
(Show Context)
Citation Context |

23 |
Real-time queue operations
- Hood, Melville
- 1981
(Show Context)
Citation Context |

22 |
Fully persistent lists with catenation
- Driscoll, Sleator, et al.
- 1994
(Show Context)
Citation Context ...) Figure 5: Pseudocode for pull on T when x is on ls(T ). Double slash (//) precedes comments. no cascading sequence of version updates occurs. As an aside, we note that Driscoll, Sleator, and Tarjan =-=[19]-=- use the pull operation to ensure that any modifications to their structure occur close to the roots of their trees, thereby keeping cascading sequences of updates short. While it is clear that s-list... |

22 | Deques with heap order - Gajewska, Tarjan - 1986 |

21 | Improving partial rebuilding by using simple balance criteria
- Andersson
- 1989
(Show Context)
Citation Context ...s(T ))] deq (ls(T )) / catenate(deq (l z1 ); deq (ls(T ))) leaf (ls(T )) / leaf (l z1 ) Figure 11: Pseudocode for deletion of leftmost leaf of T . Double slash (//) precedes comments. data structures =-=[1, 2, 9, 21]-=-. They have also been used to turn amortized bounds into worst case bounds [3, 10, 16, 20, 22] and to improve the space requirements of a data structure [41]. The basic idea of global rebuilding is to... |

21 |
Persistence, amortization and randomization
- Dietz, Raman
- 1991
(Show Context)
Citation Context |

21 |
Efficient uses of the past
- Dobkin, Munro
- 1980
(Show Context)
Citation Context |

19 |
Scapegoat trees
- Galperin, Rivest
- 1993
(Show Context)
Citation Context ...s(T ))] deq (ls(T )) / catenate(deq (l z1 ); deq (ls(T ))) leaf (ls(T )) / leaf (l z1 ) Figure 11: Pseudocode for deletion of leftmost leaf of T . Double slash (//) precedes comments. data structures =-=[1, 2, 9, 21]-=-. They have also been used to turn amortized bounds into worst case bounds [3, 10, 16, 20, 22] and to improve the space requirements of a data structure [41]. The basic idea of global rebuilding is to... |

15 | Data-structural bootstrapping, linear path compression, and catenable heap-ordered double-ended queues
- Buchsbaum, Sundar, et al.
- 1995
(Show Context)
Citation Context ...we call structural abstraction, is used by Driscoll, Sleator, and Tarjan [19] to implement persistent catenable lists using fully persistent (non-catenable) lists and by Buchsbaum, Sundar, and Tarjan =-=[6]-=- to implement catenable heap-ordered deques using non-catenable heap-ordered deques. It is similar to a technique used by Kosaraju [24] to design catenable deques by dissecting them and storing contig... |

13 |
Finding level-ancestors in dynamic trees
- Dietz
- 1991
(Show Context)
Citation Context |

13 | An applicative random-access stack
- Myers
- 1983
(Show Context)
Citation Context |

13 |
Searching in the past
- Overmars
- 1981
(Show Context)
Citation Context |

13 |
Persistent data structures
- Sarnak
- 1986
(Show Context)
Citation Context ...ructures partially or fully persistent [8, 10, 11, 17, 22, 26, 27, 28, 29, 32, 34]. There have also been some results providing general methods for making entire classes of data structures persistent =-=[13, 15, 18, 30, 33]-=-. In particular, Driscoll et al. [18] provide a method by which many pointer-based data structures may be made partially or fully persistent with only a constant factor overhead in time consumption (o... |

12 | Real-time deques, multihead Turing machines, and purely functional programming
- Chuang, Goldberg
- 1993
(Show Context)
Citation Context |

12 |
Searching in the past ii: general transforms
- Overmars
- 1981
(Show Context)
Citation Context ...ructures partially or fully persistent [8, 10, 11, 17, 22, 26, 27, 28, 29, 32, 34]. There have also been some results providing general methods for making entire classes of data structures persistent =-=[13, 15, 18, 30, 33]-=-. In particular, Driscoll et al. [18] provide a method by which many pointer-based data structures may be made partially or fully persistent with only a constant factor overhead in time consumption (o... |

11 | Binary search trees of almost optimal height
- Andersson, Icking, et al.
- 1990
(Show Context)
Citation Context ...Figure 11: Pseudocode for deletion of leftmost leaf of T . Double slash (//) precedes comments. data structures [1, 2, 9, 21]. They have also been used to turn amortized bounds into worst case bounds =-=[3, 10, 16, 20, 22]-=- and to improve the space requirements of a data structure [41]. The basic idea of global rebuilding is to maintain with each data structure a secondary copy of the data structure that is being gradua... |

10 |
AVL dags
- Myers
- 1982
(Show Context)
Citation Context |

7 |
Union-copy structures and dynamic segment trees
- Kreveld, Overmars
- 1993
(Show Context)
Citation Context ...recedes comments. data structures [1, 2, 9, 21]. They have also been used to turn amortized bounds into worst case bounds [3, 10, 16, 20, 22] and to improve the space requirements of a data structure =-=[41]. The basi-=-c idea of global rebuilding is to maintain with each data structure a secondary copy of the data structure that is being gradually "rebuilt." While updates are made to the primary data struc... |

6 |
Real-time simulation of concatenable double-ended queues by double-ended queues
- Kosaraju
- 1979
(Show Context)
Citation Context ...istent (non-catenable) lists and by Buchsbaum, Sundar, and Tarjan [6] to implement catenable heap-ordered deques using non-catenable heap-ordered deques. It is similar to a technique used by Kosaraju =-=[24]-=- to design catenable deques by dissecting them and storing contiguous pieces on stacks. The second type of bootstrapping, which we call structural decomposition, is similar to an idea of Dietz [12], w... |

4 |
Maintaining ff-balanced trees by partial rebuilding
- Andersson
- 1991
(Show Context)
Citation Context |

4 |
Fully persistent arrays (extended abstract
- Dietz
- 1989
(Show Context)
Citation Context ...ructures partially or fully persistent [8, 10, 11, 17, 22, 26, 27, 28, 29, 32, 34]. There have also been some results providing general methods for making entire classes of data structures persistent =-=[13, 15, 18, 30, 33]-=-. In particular, Driscoll et al. [18] provide a method by which many pointer-based data structures may be made partially or fully persistent with only a constant factor overhead in time consumption (o... |

1 |
Private communication
- Kosaraju
- 1992
(Show Context)
Citation Context ...)) solution is attainable, where ff is a functional inverse of the Ackermann function [37]. Section 6 suggests that different analyses or data structures are necessary for such improvements. Kosaraju =-=[25]-=- has an O(1) worst-case time per operation solution to the related catenable heap-ordered deque problem described by Buchsbaum, Sundar, and Tarjan [6]. While his methods are not immediately extensible... |

1 |
Private communication
- Sleator
- 1992
(Show Context)
Citation Context ...her a deeper analysis of the structure of the lower levels of the deque trees (the smaller trees representing spine deques) or a different data structure. The following construction is due to Sleator =-=[36]-=-. Theorem 6.1 Linking by size and performing k pulls per deletion, for k = O(1), can yield an infinite set of deque trees such that any deque tree T in the set has a spine of length\Omega01/1 jT j). P... |