Abstract
In self-adjusting computation, programs respond automatically and efficiently to modifications to their data by tracking the dynamic data dependences of the computation and incrementally updating the output as needed. In this tutorial, we describe the self-adjusting-computation model and present the language ΔML (Delta ML) for writing self-adjusting programs.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Abadi, M., Lampson, B.W., Lévy, J.-J.: Analysis and Caching of Dependencies. In: Proceedings of the International Conference on Functional Programming, pp. 83–91 (1996)
Acar, U.A.: Self-Adjusting Computation. PhD thesis, Department of Computer Science. Carnegie Mellon University (May 2005)
Acar, U.A., Ahmed, A., Blume, M.: Imperative self-adjusting computation. In: Proceedings of the 25th Annual ACM Symposium on Principles of Programming Languages (2008)
Acar, U.A., Blelloch, G.E., Blume, M., Tangwongsan, K.: An experimental analysis of self-adjusting computation. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (2006)
Acar, U.A., Blelloch, G.E., Harper, R.: Adaptive Functional Programming. In: Proceedings of the 29th Annual ACM Symposium on Principles of Programming Languages, pp. 247–259 (2002)
Acar, U.A., Blelloch, G.E., Harper, R.: Selective memoization. In: Proceedings of the 30th Annual ACM Symposium on Principles of Programming Languages (2003)
Acar, U.A., Blelloch, G.E., Harper, R., Vittes, J.L., Woo, M.: Dynamizing static algorithms with applications to dynamic trees and history independence. In: ACM-SIAM Symposium on Discrete Algorithms (2004)
Acar, U.A., Blelloch, G.E., Tangwongsan, K.: Kinetic 3D Convex Hulls via Self-Adjusting Computation (An Illustration). In: Proceedings of the 23rd ACM Symposium on Computational Geometry, SCG (2007)
Acar, U.A., Blelloch, G.E., Tangwongsan, K., Türkoğlu, D.: Robust Kinetic Convex Hulls in 3D. In: Proceedings of the 16th Annual European Symposium on Algorithms (September 2008)
Acar, U.A., Blelloch, G.E., Tangwongsan, K., Vittes, J.L.: Kinetic Algorithms via Self-Adjusting Computation. In: Proceedings of the 14th Annual European Symposium on Algorithms, September 2006, pp. 636–647 (2006)
Acar, U.A., Blelloch, G.E., Vittes, J.L.: An experimental analysis of change propagation in dynamic trees. In: Workshop on Algorithm Engineering and Experimentation (2005)
Acar, U.A., Blume, M., Donham, J.: A consistent semantics of self-adjusting computation. In: De Nicola, R. (ed.) ESOP 2007. LNCS, vol. 4421, pp. 458–474. Springer, Heidelberg (2007)
Acar, U.A., Ihler, A., Mettu, R., Sümer, Ö.: Adaptive Bayesian Inference. In: Neural Information Processing Systems, NIPS (2007)
Acar, U.A., Ihler, A., Mettu, R., Sümer, Ö.: Adaptive Inference on General Graphical Models. In: Uncertainty in Artificial Intelligence, UAI (2008)
Agarwal, P.K., Guibas, L.J., Edelsbrunner, H., Erickson, J., Isard, M., Har-Peled, S., Hershberger, J., Jensen, C., Kavraki, L., Koehl, P., Lin, M., Manocha, D., Metaxas, D., Mirtich, B., Mount, D., Muthukrishnan, S., Pai, D., Sacks, E., Snoeyink, J., Suri, S., Wolefson, O.: Algorithmic issues in modeling motion. ACM Comput. Surv. 34(4), 550–572 (2002)
Alexandron, G., Kaplan, H., Sharir, M.: Kinetic and dynamic data structures for convex hulls and upper envelopes. In: Dehne, F., López-Ortiz, A., Sack, J.-R. (eds.) WADS 2005. LNCS, vol. 3608, pp. 269–281. Springer, Heidelberg (2005)
Alstrup, S., Holm, J., de Lichtenberg, K., Thorup, M.: Minimizing diameters of dynamic trees. In: Automata, Languages and Programming, pp. 270–280 (1997)
Alstrup, S., Holm, J., de Lichtenberg, K., Thorup, M.: Maintaining information in fully-dynamic trees with top trees. In: The Computing Research Repository, CoRR (2003), (cs.DS/0310065)
Basch, J., Guibas, L.J., Hershberger, J.: Data structures for mobile data. In: Proceedings of the eighth annual ACM-SIAM symposium on Discrete algorithms. Society for Industrial and Applied Mathematics, pp. 747–756 (1997)
Basch, J., Guibas, L.J., Hershberger, J.: Data structures for mobile data. Journal of Algorithms 31(1), 1–28 (1999)
Bellman, R.: Dynamic Programming. Princeton University Press, Princeton (1957)
Brodal, G.S., Jacob, R.: Dynamic planar convex hull. In: Proceedings of the 43rd Annual IEEE Symposium on Foundations of Computer Science, pp. 617–626 (2002)
Carlsson, M.: Monads for Incremental Computing. In: Proceedings of the 7th ACM SIGPLAN International Conference on Functional programming, pp. 26–35. ACM Press, New York (2002)
Chan, T.M.: Dynamic planar convex hull operations in near-logarithmic amortized time. In: Proceedings of the the 40th Annual IEEE Symposium on Foundations of Computer Science (FOCS), pp. 92–99 (1999)
Chiang, Y.-J., Tamassia, R.: Dynamic algorithms in computational geometry. Proceedings of the IEEE 80(9), 1412–1434 (1992)
Cohen, R.F., Tamassia, R.: Dynamic expression trees and their applications. In: Proceedings of the 2nd Annual ACM-SIAM Symposium on Discrete Algorithms, pp. 52–61 (1991)
Demers, A., Reps, T., Teitelbaum, T.: Incremental Evaluation of Attribute Grammars with Application to Syntax-directed Editors. In: Proceedings of the 8th Annual ACM Symposium on Principles of Programming Languages, pp. 105–116 (1981)
Eppstein, D.: Average case analysis of dynamic geometric optimization. In: SODA 1994: Proceedings of the fifth annual ACM-SIAM symposium on Discrete algorithms, Philadelphia, PA, USA. Society for Industrial and Applied Mathematics, pp. 77–86 (1994)
Eppstein, D.: Incremental and decremental maintenance of planar width. In: SODA 1999: Proceedings of the tenth annual ACM-SIAM symposium on Discrete algorithms, Philadelphia, PA, USA. Society for Industrial and Applied Mathematics, pp. 899–900 (1999)
Eppstein, D., Galil, Z., Italiano, G.F.: Dynamic graph algorithms. In: Atallah, M.J. (ed.) Algorithms and Theory of Computation Handbook, ch. 8. CRC Press, Boca Raton (1999)
Eppstein, D., Galil, Z., Italiano, G.F., Nissenzweig, A.: Sparsification—a technique for speeding up dynamic graph algorithms. Journal of the ACM 44(5), 669–696 (1997)
Field, J., Teitelbaum, T.: Incremental reduction in the lambda calculus. In: Proceedings of the ACM 1990 Conference on LISP and Functional Programming, June 1990, pp. 307–322 (1990)
Field, J.: Incremental Reduction in the Lambda Calculus and Related Reduction Systems. PhD thesis, Department of Computer Science, November 1991. Cornell University (1991)
Frederickson, G.N.: Data structures for on-line updating of minimum spanning trees, with applications. SIAM Journal on Computing 14, 781–798 (1985)
Frederickson, G.N.: A data structure for dynamically maintaining rooted trees. Journal of Algorithms 24(1), 37–65 (1997)
Guibas, L.: Modeling motion. In: Goodman, J., O’Rourke, J. (eds.) Handbook of Discrete and Computational Geometry, 2nd edn., pp. 1117–1134. Chapman and Hall/CRC (2004)
Guibas, L., Russel, D.: An empirical comparison of techniques for updating delaunay triangulations. In: SCG 2004: Proceedings of the twentieth annual symposium on Computational geometry, pp. 170–179. ACM Press, New York (2004)
Hammer, M.A., Acar, U.A.: Memory management for self-adjusting computation. In: ISMM 2008: Proceedings of the 7th international symposium on Memory management, pp. 51–60 (2008)
Hammer, M.A., Acar, U.A., Chen, Y.: CEAL: A C-based language for self-adjusting computation. In: Proceedings of the 2009 ACM SIGPLAN Conference on Programming Language Design and Implementation (June 2009)
Henzinger, M.R., King, V.: Randomized fully dynamic graph algorithms with polylogarithmic time per operation. Journal of the ACM 46(4), 502–516 (1999)
Henzinger, M.R., King, V.: Maintaining minimum spanning trees in dynamic graphs. In: Degano, P., Gorrieri, R., Marchetti-Spaccamela, A. (eds.) ICALP 1997. LNCS, vol. 1256, pp. 594–604. Springer, Heidelberg (1997)
Hershberger, J., Suri, S.: Applications of a semi-dynamic convex hull algorithm. BIT 32(2), 249–267 (1992)
Heydon, A., Levin, R., Yu, Y.: Caching Function Calls Using Precise Dependencies. In: Proceedings of the 2000 ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 311–320 (2000)
Holm, J., de Lichtenberg, K., Thorup, M.: Poly-logarithmic deterministic fully-dynamic algorithms for connectivity, minimum spanning tree, 2-edge, and biconnectivity. Journal of the ACM 48(4), 723–760 (2001)
Hoover, R.: Incremental Graph Evaluation. PhD thesis, Department of Computer Science. Cornell University (May 1987)
Janardan, R.: On maintaining the width and diameter of a planar point-set online. In: Hsu, W.-L., Lee, R.C.T. (eds.) ISA 1991. LNCS, vol. 557, pp. 137–149. Springer, Heidelberg (1991)
Ley-Wild, R., Acar, U.A., Fluet, M.: A cost semantics for self-adjusting computation. In: Proceedings of the 26th Annual ACM Symposium on Principles of Programming Languages (2009)
Ley-Wild, R., Fluet, M., Acar, U.A.: Compiling self-adjusting programs with continuations. In: Proceedings of the International Conference on Functional Programming (2008)
Liu, Y.A., Stoller, S., Teitelbaum, T.: Static Caching for Incremental Computation. ACM Transactions on Programming Languages and Systems 20(3), 546–585 (1998)
McCarthy, J.: A Basis for a Mathematical Theory of Computation. In: Braffort, P., Hirschberg, D. (eds.) Computer Programming and Formal Systems, pp. 33–70. North-Holland, Amsterdam (1963)
Michie, D.: ”Memo” Functions and Machine Learning. Nature 218, 19–22 (1968)
Miller, G.L., Reif, J.H.: Parallel tree contraction and its application. In: Proceedings of the 26th Annual IEEE Symposium on Foundations of Computer Science, pp. 487–489 (1985)
Overmars, M.H., van Leeuwen, J.: Maintenance of configurations in the plane. Journal of Computer and System Sciences 23, 166–204 (1981)
Preparata, F.P.: An optimal real-time algorithm for planar convex hulls. Commun. ACM 22(7), 402–405 (1979)
Pugh, W., Teitelbaum, T.: Incremental computation via function caching. In: Proceedings of the 16th Annual ACM Symposium on Principles of Programming Languages, pp. 315–328 (1989)
Radzik, T.: Implementation of dynamic trees with in-subtree operations. ACM Journal of Experimental Algorithms 3, Article 9 (1998)
Reps, T.: Optimal-time incremental semantic analysis for syntax-directed editors. In: Proceedings of the 9th Annual Symposium on Principles of Programming Languages, pp. 169–176 (1982)
Rote, G., Schwarz, C., Snoeyink, J.: Maintaining the approximate width of a set of points in the plane. In: Proceedings of the 5th Canadian Conference on Computational Geometry, pp. 258–263 (1993)
Russel, D.: Kinetic Data Structures in Practice. PhD thesis, Department of Computer Science. Stanford University (March 2007)
Russel, D., Karavelas, M.I., Guibas, L.J.: A package for exact kinetic data structures and sweepline algorithms. Comput. Geom. Theory Appl. 38(1-2), 111–127 (2007)
Saraiva, J., Swierstra, S.D., Kuiper, M.F.: Functional incremental attribute evaluation. In: Watt, D.A. (ed.) CC 2000. LNCS, vol. 1781, pp. 279–294. Springer, Heidelberg (2000)
Shankar, A., Bodik, R.: DITTO: Automatic Incrementalization of Data Structure Invariant Checks (in Java). In: Proceedings of the ACM SIGPLAN 2007 Conference on Programming language Design and Implementation (2007)
Sleator, D.D., Tarjan, R.E.: A data structure for dynamic trees. Journal of Computer and System Sciences 26(3), 362–391 (1983)
Sleator, D.D., Tarjan, R.E.: Self-adjusting binary search trees. Journal of the ACM 32(3), 652–686 (1985)
Sundaresh, R.S., Hudak, P.: Incremental compilation via partial evaluation. In: Conference Record of the 18th Annual ACM Symposium on Principles of Programming Languages, pp. 1–13 (1991)
Tarjan, R., Werneck, R.: Dynamic trees in practice. In: Demetrescu, C. (ed.) WEA 2007. LNCS, vol. 4525, pp. 80–93. Springer, Heidelberg (2007)
Tarjan, R., Werneck, R.: Self-adjusting top trees. In: Proceedings of the Sixteenth Annual ACM-SIAM Symposium on Discrete Algorithms (2005)
Tarjan, R.E.: Dynamic trees as search trees via euler tours, applied to the network simplex algorithm. Mathematical Programming 78, 167–177 (1997)
Yellin, D.M., Strom, R.E.: INC: A Language for Incremental Computations. ACM Transactions on Programming Languages and Systems 13(2), 211–236 (1991)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2009 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Acar, U.A., Ley-Wild, R. (2009). Self-adjusting Computation with Delta ML. In: Koopman, P., Plasmeijer, R., Swierstra, D. (eds) Advanced Functional Programming. AFP 2008. Lecture Notes in Computer Science, vol 5832. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-04652-0_1
Download citation
DOI: https://doi.org/10.1007/978-3-642-04652-0_1
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-04651-3
Online ISBN: 978-3-642-04652-0
eBook Packages: Computer ScienceComputer Science (R0)