An experimental analysis of self-adjusting computation

Dependence graphs and memoization can be used to efficiently update the output of a program as the input changes dynamically. Recent work has studied techniques for combining these approaches to effectively dynamize a wide range of applications. Toward this end various theoretical results were given. In this paper we describe the implementation of a library based on these ideas, and present experimental results on the efficiency of this library on a variety of applications. The results of the experiments indicate that the approach is effective in practice, often requiring orders of magnitude less time than 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.

[1]  Leonidas J. Guibas,et al.  A package for exact kinetic data structures and sweepline algorithms , 2007, Comput. Geom..

[2]  Haim Kaplan,et al.  Kinetic and dynamic data structures for convex hulls and upper envelopes , 2007, Comput. Geom..

[3]  Raman Srinivas Sundaresh Incremental computation via partial evaluation , 1992 .

[4]  Yanhong A. Liu,et al.  Static caching for incremental computation , 1998, TOPL.

[5]  Jon Doyle A truth maintenance system , 1981 .

[6]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[7]  HolmJacob,et al.  Poly-logarithmic deterministic fully-dynamic algorithms for connectivity, minimum spanning tree, 2-edge, and biconnectivity , 2001 .

[8]  Donald E. Knuth,et al.  The art of computer programming: sorting and searching (volume 3) , 1973 .

[9]  David A. McAllester Truth Maintenance , 1990, AAAI.

[10]  Guy E. Blelloch,et al.  Selective memoization , 2003, POPL '03.

[11]  Leonidas J. Guibas,et al.  Data Structures for Mobile Data , 1997, J. Algorithms.

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

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

[14]  Thomas W. Reps,et al.  Incremental evaluation for attribute grammars with application to syntax-directed editors , 1981, POPL '81.

[15]  Leonidas J. Guibas,et al.  Algorithmic issues in modeling motion , 2002, CSUR.

[16]  Leonidas J. Guibas,et al.  Kinetic data structures in practice , 2007 .

[17]  Umut A. Acar,et al.  Efficient Bayesian Inference for Dynamically Changing Graphs , 2007, NIPS.

[18]  Allan Heydon,et al.  Caching function calls using precise dependencies , 2000, PLDI '00.

[19]  Ketan Mulmuley,et al.  Computational geometry - an introduction through randomized algorithms , 1993 .

[20]  Rastislav Bodík,et al.  DITTO: automatic incrementalization of data structure invariant checks (in Java) , 2007, PLDI '07.

[21]  E BlellochGuy,et al.  An experimental analysis of self-adjusting computation , 2006 .

[22]  Larry Carter,et al.  New classes and applications of hash functions , 1979, 20th Annual Symposium on Foundations of Computer Science (sfcs 1979).

[23]  Magnus Carlsson Monads for incremental computing , 2002, ICFP '02.

[24]  Umut A. Acar,et al.  Optimal-time dynamic mesh refinement : preliminary results , 2006 .

[25]  DONALD MICHIE,et al.  “Memo” Functions and Machine Learning , 1968, Nature.

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

[27]  Guy E. Blelloch,et al.  Robust Kinetic Convex Hulls in 3D , 2008, ESA.

[28]  Umut A. Acar,et al.  Imperative self-adjusting computation , 2008, POPL '08.

[29]  David Eppstein,et al.  Sparsification—a technique for speeding up dynamic graph algorithms , 1997, JACM.

[30]  F. Frances Yao,et al.  Computational Geometry , 1991, Handbook of Theoretical Computer Science, Volume A: Algorithms and Complexity.

[31]  Guy E. Blelloch,et al.  Kinetic Algorithms Via Self-adjusting Computation , 2006, ESA.

[32]  Roger Hoover Incremental Graph Evaluation , 1987 .

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

[34]  Jon Doyle,et al.  A Truth Maintenance System , 1979, Artif. Intell..

[35]  Raimund Seidel,et al.  Linear programming and convex hulls made easy , 1990, SCG '90.

[36]  Leonidas J. Guibas,et al.  Kinetic data structures: a state of the art report , 1998 .

[37]  Ronald L. Graham,et al.  An Efficient Algorithm for Determining the Convex Hull of a Finite Planar Set , 1972, Inf. Process. Lett..

[38]  Greg N. Frederickson,et al.  Data Structures for On-Line Updating of Minimum Spanning Trees, with Applications , 1985, SIAM J. Comput..

[39]  Umut A. Acar,et al.  Adaptive Bayesian inference , 2007, NIPS 2007.

[40]  Donald Ervin Knuth,et al.  The Art of Computer Programming , 1968 .

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

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

[43]  Timothy M. Chan Optimal output-sensitive convex hull algorithms in two and three dimensions , 1996, Discret. Comput. Geom..

[44]  William Pugh,et al.  Incremental computation via function caching , 1989, POPL '89.

[45]  Richard Cole,et al.  Two Simplified Algorithms for Maintaining Order in a List , 2002, ESA.

[46]  Daniel M. Yellin,et al.  INC: a language for incremental computations , 1988, PLDI '88.

[47]  G.S. Brodal,et al.  Dynamic planar convex hull , 2002, The 43rd Annual IEEE Symposium on Foundations of Computer Science, 2002. Proceedings..

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

[49]  Thomas W. Reps,et al.  A categorized bibliography on incremental computation , 1993, POPL '93.

[50]  Paul F. Dietz,et al.  Two algorithms for maintaining order in a list , 1987, STOC.

[51]  Tim Teitelbaum,et al.  Incremental reduction in the lambda calculus , 1990, LISP and Functional Programming.

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

[53]  J. Saxe,et al.  Transforming Static Data Structures to Dynamic Structures (Abridged Version) , 1979, FOCS 1979.

[54]  Robert Harper Self-adjusting computation , 2004, LICS 2004.

[55]  Jon Louis Bentley,et al.  Decomposable Searching Problems I: Static-to-Dynamic Transformation , 1980, J. Algorithms.

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

[57]  A. Stillings Modeling Motion , 2005 .

[58]  Sean R Eddy,et al.  What is dynamic programming? , 2004, Nature Biotechnology.

[59]  Analysis and caching of dependencies , 1996, ICFP '96.

[60]  John McCarthy,et al.  A basis for a mathematical theory of computation, preliminary report , 1899, IRE-AIEE-ACM '61 (Western).

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

[62]  Guy E. Blelloch,et al.  An Experimental Analysis of Change Propagation in Dynamic Trees , 2005, ALENEX/ANALCO.

[63]  Umut A. Acar,et al.  Memory management for self-adjusting computation , 2008, ISMM '08.

[64]  Gerald J. Sussman,et al.  Forward Reasoning and Dependency-Directed Backtracking in a System for Computer-Aided Circuit Analysis , 1976, Artif. Intell..

[65]  John Henry Field Incremental reduction in the lambda calculus and related reduction systems , 1991 .

[66]  Monika Henzinger,et al.  Maintaining Minimum Spanning Trees in Dynamic Graphs , 1997, ICALP.

[67]  Robert Harper,et al.  Self-adjusting computation , 2004, Proceedings of the 19th Annual IEEE Symposium on Logic in Computer Science, 2004..

[68]  David P. Dobkin,et al.  The quickhull algorithm for convex hulls , 1996, TOMS.

[69]  Donald E. Knuth,et al.  The art of computer programming, volume 3: (2nd ed.) sorting and searching , 1998 .

[70]  Haim Kaplan,et al.  Kinetic and Dynamic Data Structures for Convex Hulls and Upper Envelopes , 2005, WADS.

[71]  Leonidas J. Guibas,et al.  An empirical comparison of techniques for updating Delaunay triangulations , 2004, SCG '04.

[72]  Binay K. Bhattacharya,et al.  On a Simple, Practical, Optimal, Output-Sensitive Randomized Planar Convex Hull Algorithm , 1997, J. Algorithms.

[73]  Umut A. Acar,et al.  A Consistent Semantics of Self-adjusting Computation , 2007, ESOP.

[74]  Jan van Leeuwen,et al.  Maintenance of Configurations in the Plane , 1981, J. Comput. Syst. Sci..

[75]  Thomas W. Reps Optimal-time incremental semantic analysis for syntax-directed editors , 1982, POPL '82.

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

[77]  Mariette Yvinec,et al.  Algorithmic geometry , 1998 .

[78]  Guy E. Blelloch,et al.  A Library for Self-Adjusting Computation , 2006, Electron. Notes Theor. Comput. Sci..

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

[80]  X. Liy Dynamic Algorithms in Computational Geometry , 2007 .

[81]  David G. Kirkpatrick,et al.  The Ultimate Planar Convex Hull Algorithm? , 1986, SIAM J. Comput..

[82]  Umut A. Acar,et al.  Compiling self-adjusting programs with continuations , 2008, ICFP.

[83]  Rephael Wenger Randomized quickhull , 2006, Algorithmica.

[84]  Yanhong A. Liu,et al.  Discovering auxiliary information for incremental computation , 1996, POPL '96.

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

[86]  Timothy M. Chan Dynamic planar convex hull operations in near-logarithmic amortized time , 2001, JACM.