An Experimental Analysis of Change Propagation in Dynamic Trees

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 re-executed 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 tree-contraction 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 dynamic-trees that support a general interface and present an experimental evaluation by considering a broad set of applications. The dynamic-trees library relies on change propagation to handle edge insertions/deletions. The applications that we consider include path queries, subtree queries, leastcommon-ancestor queries, maintenance of centers and medians of trees, nearest-marked-vertex queries, semidynamic minimum spanning trees, and the max-flow algorithm of Sleator and Tarjan.

[1]  Greg N. Frederickson,et al.  A data structure for dynamically maintaining rooted trees , 1997, SODA '93.

[2]  Daniele Micciancio,et al.  Oblivious data structures: applications to cryptography , 1997, STOC '97.

[3]  Greg N. Frederickson Ambivalent Data Structures for Dynamic 2-Edge-Connectivity and k Smallest Spanning Trees , 1997, SIAM J. Comput..

[4]  Andrew V. Goldberg,et al.  A new approach to the maximum flow problem , 1986, STOC '86.

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

[6]  Robert E. Tarjan,et al.  A data structure for dynamic trees , 1981, STOC '81.

[7]  Robert E. Tarjan,et al.  Dynamic trees as search trees via euler tours, applied to the network simplex algorithm , 1997, Math. Program..

[8]  R. Tamassia,et al.  Dynamic expression trees and their applications , 1991, SODA '91.

[9]  Guy E. Blelloch,et al.  Adaptive functional programming , 2002, POPL '02.

[10]  Guy E. Blelloch,et al.  Dynamizing static algorithms, with applications to dynamic trees and history independence , 2004, SODA '04.

[11]  Mikkel Thorup,et al.  Maintaining information in fully dynamic trees with top trees , 2003, TALG.

[12]  Mikkel Thorup,et al.  Minimizing Diameters of Dynamic Trees , 1997, ICALP.

[13]  Gary L. Miller,et al.  Parallel tree contraction and its application , 1985, 26th Annual Symposium on Foundations of Computer Science (sfcs 1985).

[14]  Michael T. Goodrich,et al.  Dynamic trees and dynamic point location , 1991, STOC '91.

[15]  Mikkel Thorup,et al.  Poly-logarithmic deterministic fully-dynamic algorithms for connectivity, minimum spanning tree, 2-edge, and biconnectivity , 2001, JACM.

[16]  Robert E. Tarjan,et al.  Self-adjusting top trees , 2005, SODA '05.

[17]  Tomasz Radzik Implementation of dynamic trees with in-subtree operations , 1998, JEAL.

[18]  Moni Naor,et al.  Anti-persistence: history independent data structures , 2001, STOC '01.