Self-adjusting computation

A static algorithm is one that computes the result of a query about the output for a single, fixed input. For example, a static sorting algorithm is one that takes as input a set of keys, and permits queries about the relative order of these keys according to some ordering relation. A dynamic, or incremental, algorithm is one that permits queries about the output to be interleaved with operations that incrementally modify the input. For example, a dynamic sorting algorithm is one that would permit insertion or deletion of keys to be interleaved with queries about their relative ordering. It is often easier to find a static algorithm than a dynamic algorithm for a given problem. There is a large and growing literature on dynamic algorithms for a broad range of problems. Self-adjusting computation is a method for deriving a dynamic algorithm for a problem by "dynamizing" a static algorithm for it. We have studied three main techniques for dynamization: 1. adaptivity 2. selective memoization 3. adaptive memoization.

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

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

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

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

[5]  Norman H. Cohen Eliminating Redundant Recursive Calls. , 1983, TOPL.

[6]  O. Schwarzkopf Dynamic maintenance of geometric structures made easy , 1991, [1991] Proceedings 32nd Annual Symposium of Foundations of Computer Science.

[7]  S. Doaitse Swierstra,et al.  Using Cached Functions and Constructors for Incremental Attribute Evaluation , 1992, PLILP.

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

[9]  Leonidas J. Guibas,et al.  Parametric and kinetic minimum spanning trees , 1998, Proceedings 39th Annual Symposium on Foundations of Computer Science (Cat. No.98CB36280).

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

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

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

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

[14]  Ketan Mulmuley Randomized multidimensional search trees: lazy balancing and dynamic shuffling , 1991, [1991] Proceedings 32nd Annual Symposium of Foundations of Computer Science.

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

[16]  Henry G. Baker,et al.  List processing in real time on a serial computer , 1978, CACM.

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

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

[19]  Cecilia R. Aragon,et al.  Randomized search trees , 2005, Algorithmica.

[20]  Yanhong A. Liu,et al.  Automating Derivation of Incremental Programs , 1998, ICFP.

[21]  Mark H. Overmars,et al.  Dynamization of Order Decomposable Set Problems , 1981, J. Algorithms.

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

[23]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

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

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

[26]  Rajeev Motwani,et al.  Randomized algorithms , 1996, CSUR.

[27]  Mark de Berg,et al.  Computational geometry: algorithms and applications , 1997 .

[28]  Richard S. Bird,et al.  Tabulation Techniques for Recursive Programs , 1980, CSUR.

[29]  Artur Czumaj,et al.  Soft kinetic data structures , 2001, SODA '01.

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

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

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

[33]  Leonidas J. Guibas,et al.  Static and kinetic geometric spanners with applications , 2001, SODA '01.

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

[35]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[36]  Frank Pfenning,et al.  A judgmental reconstruction of modal logic , 2001, Mathematical Structures in Computer Science.

[37]  Roger Hoover,et al.  Alphonse: incremental computation as a programming abstraction , 1992, PLDI '92.

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

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

[40]  Frank Pfenning,et al.  Natural Deduction for Intuitionistic Non-communicative Linear Logic , 1999, TLCA.

[41]  Peter Norvig,et al.  Techniques for Automatic Memoization with Applications to Context-Free Parsing , 1991, CL.

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

[43]  Tom Murphy The Wizard of TILT: Efficient?, Convenient, and Abstract Type Representations , 2002 .

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

[45]  J. Hilden Elimination of recursive calls using a small table of “randomly” selected function values , 1976 .

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

[47]  Roberto Tamassia,et al.  Dynamic algorithms in computational geometry , 1992, Proc. IEEE.

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

[49]  Haim Kaplan,et al.  Faster kinetic heaps and their use in broadcast scheduling , 2001, SODA '01.

[50]  Thomas W. Reps,et al.  Generating Language-Based Environments , 1982 .

[51]  Lawrence Robinson,et al.  An example of hierarchical design and proof , 1978, CACM.

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

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

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

[55]  Ketan Mulmuley Randomized multidimensional search trees: further results in dynamic sampling , 1991, [1991] Proceedings 32nd Annual Symposium of Foundations of Computer Science.

[56]  Yanhong A. Liu,et al.  Dynamic Programming via Static Incrementalization , 1999 .

[57]  Jack Mostow,et al.  Automating Program Speedup by Deciding What to Cache , 1985, IJCAI.

[58]  Yanhong A. Liu,et al.  Incremental Computation: A Semantics-Based Systematic Transformational Approach , 1995 .

[59]  Yasumasa Kanada,et al.  Hashing LEMMAs on time complexities with applications to formula manipulation , 1976, SYMSAC '76.

[60]  Guy E. Blelloch,et al.  Adaptive functional programming , 2006 .

[61]  Frank Pfenning,et al.  Structural cut elimination , 1995, Proceedings of Tenth Annual IEEE Symposium on Logic in Computer Science.

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

[63]  Mark H. Overmars,et al.  The Design of Dynamic Data Structures , 1987, Lecture Notes in Computer Science.

[64]  John McCarthy,et al.  A Basis for a Mathematical Theory of Computation1) , 1959 .

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

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

[67]  John A. Allen,et al.  The anatomy of lisp , 1980 .

[68]  Frederica Darema,et al.  Dynamic Data Driven Applications Systems: New Capabilities for Application Simulations and Measurements , 2005, International Conference on Computational Science.

[69]  William Pugh,et al.  Skip lists: a probabilistic alternative to balanced trees , 1989, CACM.

[70]  R. Bellman Dynamic programming. , 1957, Science.

[71]  Gary L. Miller,et al.  Parallel Tree Contraction, Part 2: Further Applications , 1991, SIAM J. Comput..

[72]  J. Reif,et al.  Parallel Tree Contraction Part 1: Fundamentals , 1989, Adv. Comput. Res..

[73]  Yanhong A. Liu,et al.  Systematic Derivation of Incremental Programs , 1995, Sci. Comput. Program..

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

[75]  Ketan Mulmuley Randomized multidimensional search trees (extended abstract): dynamic sampling , 1991, SCG '91.

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

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

[78]  Leonidas J. Guibas,et al.  A practical evaluation of kinetic data structures , 1997, SCG '97.

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

[80]  Frederica Darema,et al.  Dynamic Data Driven Applications Systems: A New Paradigm for Application Simulations and Measurements , 2004, International Conference on Computational Science.

[81]  Roger Hoover Incremental Graph Evaluation , 1987 .

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

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

[84]  Robert E. Tarjan,et al.  Making data structures persistent , 1986, STOC '86.

[85]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[86]  Maarten Christiaan Pennings Generating incremental attribute evaluators , 1994 .

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

[88]  John Hughes,et al.  Lazy Memo-functions , 1985, FPCA.