Results 1  10
of
19
An experimental analysis of selfadjusting computation
 In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI
, 2006
"... Selfadjusting computation uses a combination of dynamic dependence graphs and memoization to efficiently update the output of a program as the input changes incrementally or dynamically over time. Related work showed various theoretical results, indicating that the approach can be effective for a r ..."
Abstract

Cited by 51 (25 self)
 Add to MetaCart
Selfadjusting computation uses a combination of dynamic dependence graphs and memoization to efficiently update the output of a program as the input changes incrementally or dynamically over time. Related work showed various theoretical results, indicating that the approach can be effective for a reasonably broad range of applications. In this article, we describe algorithms and implementation techniques to realize selfadjusting computation and present an experimental evaluation of the proposed approach on a variety of applications, ranging from simple list primitives to more sophisticated computational geometry algorithms. The results of the experiments show that the approach is effective in practice, often offering orders of magnitude speedup from recomputing the output from scratch. We believe this is the first experimental evidence that incremental computation of any type is effective in practice for a reasonably broad set of applications.
SelfAdjusting Computation
 In ACM SIGPLAN Workshop on ML
, 2005
"... From the algorithmic perspective, we describe novel data structures for tracking the dependences ina computation and a changepropagation algorithm for adjusting computations to changes. We show that the overhead of our dependence tracking techniques is O(1). To determine the effectiveness of change ..."
Abstract

Cited by 49 (19 self)
 Add to MetaCart
(Show Context)
From the algorithmic perspective, we describe novel data structures for tracking the dependences ina computation and a changepropagation algorithm for adjusting computations to changes. We show that the overhead of our dependence tracking techniques is O(1). To determine the effectiveness of changepropagation, we present an analysis technique, called trace stability, and apply it to a number of applications.
Selfadjusting top trees
, 2005
"... The dynamic trees problem is that of maintaining a forest that changes over time through edge insertions and deletions. We can associate data with vertices or edges, and manipulate this data individually or in bulk, with operations that deal with whole paths or trees. Efficient solutions to this pro ..."
Abstract

Cited by 23 (3 self)
 Add to MetaCart
The dynamic trees problem is that of maintaining a forest that changes over time through edge insertions and deletions. We can associate data with vertices or edges, and manipulate this data individually or in bulk, with operations that deal with whole paths or trees. Efficient solutions to this problem have numerous applications, particularly in algorithms for network flows and dynamic graphs in general. Several data structures capable of logarithmictime dynamic tree operations have been proposed. The first was Sleator and Tarjan’s STtree [16, 17], which represents a partition of the tree into paths. Although reasonably fast in practice, adapting STtrees to different applications is nontrivial. Topology trees [9], top trees [3], and RCtrees [1] are based on tree contractions: they progressively combine vertices or edges to obtain a hierarchical representation of the tree. This approach is more flexible in theory, but all known implementations assume the trees have bounded degree; arbitrary trees are supported only after ternarization. We show how these two approaches can be combined (with very little overhead) to produce a data structure that is as generic as any other, very easy to adapt, and as practical as STtrees.
An Experimental Analysis of Change Propagation in Dynamic Trees
, 2005
"... Change propagation is a technique for automatically adjusting the output of an algorithm to changes in the input. The idea behind change propagation is to track the dependences between data and function calls, so that, when the input changes, functions affected by that change can be reexecuted to u ..."
Abstract

Cited by 22 (12 self)
 Add to MetaCart
(Show Context)
Change propagation is a technique for automatically adjusting the output of an algorithm to changes in the input. The idea behind change propagation is to track the dependences between data and function calls, so that, when the input changes, functions affected by that change can be reexecuted to update the computation and the output. Change propagation makes it possible for a compiler to dynamize static algorithms. The practical effectiveness of change propagation, however, is not known. In particular, the cost of dependence tracking and change propagation may seem significant. The contributions of the paper are twofold. First, we present some experimental evidence that change propagation performs well when compared to direct implementations of dynamic algorithms. We implement change propagation on treecontraction as a solution to the dynamic trees problem and present an experimental evaluation of the approach. As a second contribution, we present a library for dynamictrees that support a general interface and present an experimental evaluation by considering a broad set of applications. The dynamictrees library relies on change propagation to handle edge insertions/deletions. The applications that we consider include path queries, subtree queries, leastcommonancestor queries, maintenance of centers and medians of trees, nearestmarkedvertex queries, semidynamic minimum spanning trees, and the maxflow algorithm of Sleator and Tarjan.
Dynamic parallel tree contraction
 In Proceedings 5th Annual ACM Symp. on Parallel Algorithms and Architectures
, 1994
"... Parallel tree contraction has been found to be a useful and quite powerful tool for the design of a wide class of efficient graph algorithms. We propose a corresponding technique for the parallel solution of problems with incremental changes in the data. In dynamic tree contraction problems, we are ..."
Abstract

Cited by 19 (2 self)
 Add to MetaCart
(Show Context)
Parallel tree contraction has been found to be a useful and quite powerful tool for the design of a wide class of efficient graph algorithms. We propose a corresponding technique for the parallel solution of problems with incremental changes in the data. In dynamic tree contraction problems, we are given an initial tree T, and then an online algorithm processes requests regarding T. Requests may be either incremental changes to T or requests for certain values computed using the tree. A simple example is maintaining the preorder numbering on a tree. The online algorithm would then have to handle incremental changes to the tree, and would also have to quickly answer queries about the preorder number of any tree node. Our dynamic algorithms are based on the prior parallel tree contraction algorithms, and hence we call such algorithms incremental tree contraction algorithms. By maintaining the connection between our incremental algorithms and the parallel tree contraction algorithm, we create incremental algorithms for tree contraction. We consider a dynamic binary tree T of ≤ n nodes and unbounded depth. We describe a procedure, which we call the dynamic parallel tree contraction algorithm, which incrementally processes various parallel modification requests and queries: (1) parallel requests to add or delete leaves of T, or modify labels of internal nodes or leaves of T, and also (2) parallel tree contraction queries which require recomputing values at specified nodes. Each modification or query is with respect to a set of nodes U in T. We make use of a random splitting tree as an aid
Maintaining Center and Median in Dynamic Trees
, 2000
"... We show how to maintain centers and medians for a collection of dynamic trees where edges may be inserted and deleted and node and edge weights may be changed. All updates are supported in O(log n) time, where n is the size of the tree(s) involved in the update. ..."
Abstract

Cited by 16 (3 self)
 Add to MetaCart
We show how to maintain centers and medians for a collection of dynamic trees where edges may be inserted and deleted and node and edge weights may be changed. All updates are supported in O(log n) time, where n is the size of the tree(s) involved in the update.
Maintaining information in fullydynamic trees with top trees
, 2003
"... We introduce top trees as a new data structure that makes it simpler to maintain many kinds of information in a fullydynamic forest. As prime examples, we show how to maintain the diameter, center, and median of each tree in the forest. The forest can be updated by insertion and deletion of edges a ..."
Abstract

Cited by 12 (0 self)
 Add to MetaCart
(Show Context)
We introduce top trees as a new data structure that makes it simpler to maintain many kinds of information in a fullydynamic forest. As prime examples, we show how to maintain the diameter, center, and median of each tree in the forest. The forest can be updated by insertion and deletion of edges and by changes to vertex and edge weights. Each update is supported in O(log n) time, where n is the size of the tree(s) involved in the update. Also, we show how to support nearest common ancestor queries and level ancestor queries with respect to arbitrary roots in O(log n) time. Finally, with marked and unmarked vertices, we show how to compute distances to a nearest marked vertex. The later has applications to approximate nearest marked vertex in general graphs, and thereby to static optimization problems over shortest path metrics. Technically speaking, top trees can easily be derived from either Frederickson’s topology trees [Ambivalent Data Structures for Dynamic 2EdgeConnectivity and k Smallest Spanning Trees, SIAM J. Comput. 26 (2) pp. 484–538, 1997] or Sleator and Tarjan’s dynamic trees [A Data Structure for Dynamic Trees. J. Comput. Syst. Sc. 26
Dynamic trees in practice
 ACM J. Exp. Algor
, 2009
"... Dynamic tree data structures maintain forests that change over time through edge insertions and deletions. Besides maintaining connectivity information in logarithmic time, they can support aggregation of information over paths, trees, or both. We perform an experimental comparison of several versio ..."
Abstract

Cited by 10 (3 self)
 Add to MetaCart
(Show Context)
Dynamic tree data structures maintain forests that change over time through edge insertions and deletions. Besides maintaining connectivity information in logarithmic time, they can support aggregation of information over paths, trees, or both. We perform an experimental comparison of several versions of dynamic trees: STtrees, ETtrees, RCtrees, and two variants of top trees (selfadjusting and worstcase). We quantify their strengths and weaknesses through tests with various workloads, most stemming from practical applications. We observe that a simple, lineartime implementation is remarkably fast for graphs of small diameter, and that worstcase and randomized data structures are best when queries are very frequent. The best overall performance, however, is achieved by selfadjusting STtrees.
Clustering for Faster Network Simplex Pivots
, 2000
"... We show how to use a combination of treeclustering techniques and computational geometry to improve the time bounds for optimal pivot selection in the primal network simplex algorithm for minimumcost flow and related problems and for pivot execution in the dual network simplex algorithm, from O(m) ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
We show how to use a combination of treeclustering techniques and computational geometry to improve the time bounds for optimal pivot selection in the primal network simplex algorithm for minimumcost flow and related problems and for pivot execution in the dual network simplex algorithm, from O(m) to O (√m) per pivot. Our techniques can also speed up network simplex algorithms for generalized flow, shortest paths with negative edges, maximum flow, the assignment problem, and the transshipment problem.
Design and Analysis of Data Structures for Dynamic Trees
, 2006
"... The dynamic trees problem is that of maintaining a forest that changes over time through edge insertions and deletions. We can associate data with vertices or edges and manipulate this data, individually or in bulk, with operations that deal with whole paths or trees. Efficient solutions to this pr ..."
Abstract

Cited by 6 (1 self)
 Add to MetaCart
(Show Context)
The dynamic trees problem is that of maintaining a forest that changes over time through edge insertions and deletions. We can associate data with vertices or edges and manipulate this data, individually or in bulk, with operations that deal with whole paths or trees. Efficient solutions to this problem have numerous applications, particularly in algorithms for network flows and dynamic graphs in general. Several data structures capable of logarithmictime dynamic tree operations have been proposed. The first was Sleator and Tarjan’s STtree, which represents a partition of the tree into paths. Although reasonably fast in practice, adapting STtrees to different applications is nontrivial. Frederickson’s topology trees, Alstrup et al.’s top trees, and Acar et al.’s RCtrees are based on tree contractions: they progressively combine vertices or edges to obtain a hierarchical representation of the tree. This approach is more flexible in theory, but all known implementations assume the trees have bounded degree; arbitrary trees are supported only after ternarization. This thesis shows how these two approaches can be combined (with very little overhead) to produce a data structure that is at least as generic as any other, very easy to