| Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. Higher-Order and Symbolic Computation (HOSC), 16(1-2):37--62, Mar. 2003. |
....de ned subsequently. The inclusion of constructors of arity greater than one gives rise to some interesting problems when considering the running time of a program. As in Lisp, a set of destructors or eld selector operators are de ned to extract di erent parts of a data value. Inspired by [17] the names 1st, 2nd, 3rd, etc. have been chosen as destructor names. The destructor 1st correspond to the predecessor operator when applied to base 1 numbers, and 1st and 2nd corresponds to car and cdr in Lisp, when operating on lists. The syntax for the subject language. 2 Prog : def 1 : ....
Yanhong A. Liu, Scott D. Stoller. \Dynamic Programming via Static Incrementalization " Computer Science Department, Indiana University, Bloomington, ESOP 2000.
....examples to be represented more directly. In the paper [7] a pattern matching notation was used for de constructing values. We have settled for explicit deconstruction functions since the more liberal notation allows for greater exibility when translating from various languages. Inspired by [4] the names 1st, 2nd, 3rd, etc. have been chosen as destructor names. The case matching is done by the primitive function eq, that tests whether the two arguments have the same top level constructor. The syntax for the language L. p 2 Prog : def 1 : defn def 2 Def : fname(x 1 ; ....
....Q Qs 41 6.4.17 shu e The program shu e (pages 61, 85) takes a list as the single argument and computes a new list where the elements are shu ed . The new list is computed by alternatingly extracting the rst and last element of the list, and inserting them into the result. Example: shuffle([0, 1, 2, 3, 4]) 0, 4, 1, 3, 2] The shu ing is done by extracting the rst element of the list and then calling the shuffle function recursively with the list reversed. The size change analysis SCT fails to show that the size the a reversed list is equal to size of the list itself. Thus the size change ....
[Article contains additional citation context not shown here]
Yanhong A. Liu, Scott D. Stoller. \Dynamic Programming via Static Incrementalization " Computer Science Department, Indiana University, Bloomington, ESOP 2000.
....of the program transformation methodology, because it can easily allow for eciency improvements by making function (or predicate) calls interact. Through the use of arrays and x sized tables, the tupling strategy speeds up computations by memoing already computed values (see, for instance, [ChH95, Coh83, LiS99]) In particular, the introduction of arrays may turn recursive computations into iterative ones, and thus eciency is improved because the overhead for stack manipulation is avoided. Tupling has, however, some limitations which we will illustrate below, and in order to overcome them we will ....
....arrays and memoisation is used to avoid the recomputation of these arrays. This method requires the use of suitable analysis techniques to compute at compile time safe bounds of the sizes of the arrays. The transformation methods based on nite di erencing [PaK82] and static incrementalization [LiS99] make use of invariants to eciently compute, from a collection of function calls relative to the input x, a new collection of function calls relative to a new input of the form: x , where is a suitable increment function. Our list introduction strategy uses neither program analysis nor ....
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In S. Doaitse Swierstra, editor, Programming Languages and Systems. 8th European Symposium on Programming, ESOP '99, Lecture Notes in Computer Science 1576, pages 288-305. Springer-Verlag, 1999.
....of the program transformation methodology, because it can easily allow for eciency improvements by making function (or predicate) calls interact. Through the use of arrays and x sized tables, the tupling strategy speeds up computations by memoing already computed values (see, for instance, [ChH95, Coh83, LiS99]) In particular, the introduction of arrays may turn recursive computations into iterative ones, and thus, eciency is improved because the overhead for stack manipulation is avoided. Tupling has, however, some limitations which we will illustrate below, and in order to overcome them, we will ....
....arrays and memoization is used to avoid the recomputation of these arrays. This method requires the use of suitable analysis techniques to compute at compile time safe bounds of the sizes of the arrays. The transformation methods based on nite di erencing [PaK82] and static incrementalization [LiS99], make use of invariants to eciently compute, from a collection of function calls relative to the input x, a new collection of function calls relative to a new input of the form: x , where is a suitable increment function. Our list introduction strategy uses neither program analysis nor ....
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In S. Doaitse Swierstra, editor, Programming Languages and Systems. 8th European Symposium on Programming, ESOP '99, Lecture Notes in Computer Science 1576, pages 288-305. Springer-Verlag, 1999.
....while Section 3.2 discusses a new idea for runtime garbage collection that is more suitable for use in a library. 3. 1 Analysis at Compile Time Three roughly equivalent methods of automatically determining these storage requirements have been independently investigated in the literature [18, 24, 13, 12, 26, 8, 27]. All three methods work at compile time and attempt to recover enough dependence information to conservatively prove that certain memoized facts will never again be accessed. 6 i j Figure 4: Dependencies for the longest common subsequence problem. Shaded circles are results that have already ....
....will contain all the facts required for subsequent computation. Since the heuristics used in sliding window tabulation seem to be limited, at best, to affine dependences and schedules, the sliding window and occupancy vectors techniques are roughly equivalent. The cache and prune technique [13, 12] works in the domain of incrementalized functional programs. The technique boils down a series of three program transformations. First the function is transformed to save and return all of its intermediate results. Second the function is incrementalized by choosing an increment and transforming ....
Yanhong A. Liu and Scott D. Stoller. Dynamic programming via static incrementalization. In Proceedings of the 8th European Symposium on Programming (ESOP), volume 1576 of Lecture Notes in Computer Science, pages 288--305, Amsterdam, The Netherlands, March 1999. Springer-Verlag.
No context found.
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. HigherOrder and Symbolic Computation, 16(1-2):37-62, Mar.-June 2003.
No context found.
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. Higher-Order and Symbolic Computation, 16(1-2):37--62, Mar.-June 2003.
....also ensures the correctness of the optimized program. Applying optimization based on incrementalization to Ackermann s function has three benefits. First, even though the transformations and analyses for incrementalization have been studied previously and used successfully on many examples [15, 19, 18, 20, 21], applying it to Ackermann s function needed a small and natural but important extension, to allow the body of an incremental function to contain repeated calls, not just one time calls, to incremental functions. This extension has general applications for incremental computation problems in ....
....recursion to iteration [17] the power of the method in general remains unknown. A similar method has also been used to optimize set and fixed point operations [4, 23, 24] Previously, all these optimizations succeeded in deriving e#cient programs, including well known dynamic programming programs [19, 18], from more straighforward highlevel programs that are exponential or high degree polynomial. Applying it to Ackermann s function shows that it also applies to functions that are not primitive recursive. In particular, it reduces the space usage from O(a(i, n) to O(i) while other methods using ....
[Article contains additional citation context not shown here]
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. Higher-Order and Symbolic Computation, 16(1-2):37--62, Mar.-June 2003.
....optimization problems. 16 We have developed a general and systematic method, called incrementalization [21, 17, 22] for incremental computation of recursive functions that is able to derive dynamic programming algorithms for these problems when they are speci ed using recursive functions [20, 19]. We believe the same ideas can be applied to speci cations of these problems using Datalog rules extended with data constructors as well as with arithmetic. Other extensions to Datalog rules, such as higher order features, help make it more convenient to specify problems clearly. How to handle ....
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. Higher-Order and Symbolic Computation, 16(1-2), 2003. To appear.
....of the resulting algorithm. Equally or more important are the assurance of correctness for the algorithm and implementation developed and the ability to develop them easily and quickly. Much previous research has answered these questions positively for subclasses of problems, e.g. [4, 7, 8, 9, 10, 11, 13, 14, 16, 19, 30, 31, 34, 37]. This paper describes a method that uni es and generalizes existing classes of problems that can be solved systematically. Important and interesting questions in detail are: How are appropriate data structures determined In case multiple choices exist, how can they be compared Two fundamental ....
....each incremental step. We have preliminary results on transforming recursion into iteration using incrementalization [20] Detailed study is a future work. When there are multiple minimal increment operations, for example, the longest common subsequence and matrix chain multiplication problems [12, 19] each has two, we found that any one of them may be used, and they may lead to optimized programs with the same time and space complexity. 5. ADDITIONAL EXAMPLES AND EXPERIMENTS This section discusses shortest path problems and summarizes other examples and experiments. 5.1 Single source ....
[Article contains additional citation context not shown here]
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In Proceedings of the 8th European Symposium on Programming, volume 1576 of Lecture Notes in Computer Science, pages 288-305. Springer-Verlag, Berlin, Mar. 1999.
....show drastic speedups that are not achievable by previous compiler optimizations. Methods of explicit incrementalization [53] cache and prune [51] and use of auxiliary information [52] were rst formulated for a functional language. They have been adopted for optimizing recursive functions [49, 50] and for optimizing loops with no arrays [46] The latter generalizes traditional strength reduction [16, 34, 72] This paper further extends it to handle programs that use arrays. It presents a broad generalization of strength reduction from arithmetic operations to aggregate computations in ....
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In Proceedings of the 8th European Symposium on Programming, volume 1576 of Lecture Notes in Computer Science, pages 288-305. Springer-Verlag, Berlin, Mar. 1999. An extended version is to appear in Higher-Order and Symbolic Computation.
....a speci ed element from a list. In merge sort, odd(ls) and even(ls) return lists containing the elements of list ls at odd and even positions, respectively. The hat and hat 0 functions in binomial coecient, longest common subsequence and string edit are constructed using methods described in [35]; the top level function simply calls the hat function and extracts the appropriate part of its return value; the recursively de ned hat function calls the hat 0 function to compute the return value incrementally in the recursive case; in other words, the hat 0 function exploits the results of ....
....its return value; the recursively de ned hat function calls the hat 0 function to compute the return value incrementally in the recursive case; in other words, the hat 0 function exploits the results of smaller sub computations. The algorithms for longest common subsequence and string edit in [35] use arrays to represent strings. Since our language does not include arrays, we use lists to represent strings. strref returns the element at a given position in a string. For all examples, stack space bound analysis is tight relative to stack space analysis; in other words, the stack ....
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In Proceedings of the 8th European Symposium on Programming, volume 1576 of Lecture Notes in Computer Science, pages 288-305. Springer-Verlag, Berlin, Mar. 1999.
....[33] where dead code after incrementalization is to be eliminated. Programs cachebin and cachelcs are dynamic programming programs transformed from straightforward exponential time programs for binomial coecients and longest common subsequences, respectively, using a method called cache and prune [31, 28], where cached intermediate results that are not used are to be pruned. Programs calend, symbdiff, takr, and boyer are taken from the Internet Scheme Repository [53] Program calend is a collection of calendrical 18 ....
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In Proceedings of the 8th European Symposium on Programming, volume 1576 of Lecture Notes in Computer Science, pages 288-305. Springer-Verlag, Berlin, Mar. 1999.
....sort and outer product, respectively, derived using incrementalization [27] where dead code after incrementalization is to be eliminated. cachebin and cachelcs are dynamic programming programs for binomial coecients and longest common subsequences, respectively, derived using cache and prune [26, 24], where cached intermediate results that are not used are to be pruned. calend, symbdiff, takr, and boyer are taken from the Internet Scheme Repository [21] calend is a collection of calendrical functions [10] takr is a 100function version of TAK that tries to defeat cache memory e ects. ....
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In Proceedings of the 8th European Symposium on Programming, volume 1576 of Lecture Notes in Computer Science, pages 288-305. Springer-Verlag, Berlin, Mar. 1999.
....of the speedup of the resulting algorithm. Equally or more important are the assurance of correctness for the algorithm and implementation developed and the ability to develop them easily and quickly. Much previous research has answered these questions positively for subclasses of problems, e.g. [10, 3, 27, 7, 24, 4, 12, 6, 29, 9, 25, 5, 14]. This paper describes a method that uni es and generalizes existing classes of problems that can be solved systematically. Important and interesting questions in detail are: How are appropriate data structures determined In case multiple choices exist, how can they be compared Two fundamental ....
....each incremental step. We have preliminary results on transforming recursion into iteration using incrementalization [15] Detailed study is a future work. When there are multiple minimal increment operations, for example, the longest common subsequence and matrix chain multiplication problems [8, 14] each has two, we found that any one of them may be used, and they may lead to optimized programs with the same time and space complexity. 5 Additional examples and experiments This section discusses shortest path problems and summarizes other examples and experiments. 5.1 Single source ....
[Article contains additional citation context not shown here]
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In Proceedings of the 8th European Symposium on Programming, volume 1576 of Lecture Notes in Computer Science, pages 288-305. Springer-Verlag, Berlin, Mar. 1999.
....and outer product, respectively, derived using incrementalization [39] where dead code after incrementalization is to be eliminated. Programs cachebin and cachelcs are dynamic programming programs for binomial coecients and longest common subsequences, respectively, derived using cache and prune [38,36], where cached intermediate results that are not used are to be pruned. Program calend is a collection of calendrical calculation functions [12] and program takr is a 100 function version of TAK that tries to defeat cache memory e ects [25] When using dead code analysis for incrementalization ....
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In Proceedings of the 8th European Symposium on Programming, volume 1576 of Lecture Notes in Computer Science, pages 288{ 305. Springer-Verlag, Berlin, Mar. 1999. 24
....an iterative program are simply updates to the parameters of f by the loop body, but change operations in a recursive program, especially for nonlinear recursive functions, are non trivial to determine. Nevertheless, Liu and Stoller have studied a general method for identifying change operations [51] for recursive functions. The basic idea is to use a minimal input change that is in the opposite direction of change compared to arguments of recursive calls. Using the opposite direction of change yields an increment; using a minimal change allows maximum reuse, i.e. maximum incrementality. ....
.... a; b; c) if n 0 then skip else hanoi(n 1; a; c; b) move(a; b) hanoi(n 1; c; b; a) 23) The problem can be formulated as computing hanoi incrementally under the input change operation hn 0 ; a 0 ; b 0 ; c 0 i = hn; a; b; ci hi = hn 1; a; c; bi, identi ed using the method in [51] as the minimum input increment operation. After discovering auxiliary information twice using the method in this paper, we obtain hanoi(n; a; b; c) hanoi(n; a; b; c) hanoi(n; b; c; a) hanoi(n; c; a; b) 24) and hanoi 0 (n; a; b; c; er) if n 1 0 then skip; skip; skip ....
[Article contains additional citation context not shown here]
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In Proceedings of the 8th European Symposium on Programming, volume 1576 of Lecture Notes in Computer Science, pages 288{ 305. Springer-Verlag, Berlin, Mar. 1999.
....is not what gives rise to the optimized Ackermann s function. Elimination of repeated subcomputations, a smart form of memoization [13] in this case, is what yields the optimization. The optimization method based on incrementalization has been used to derive classical dynamic programming programs [9], but the power of the method in general remains unknown; applying it to Ackermann s function shows that it also applies to functions that are not primitive recursive. To the best of our knowledge, this is the rst formal derivation of such an optimized Ackermann s function following a general ....
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In Proceedings of the 8th European Symposium on Programming, volume 1576 of Lecture Notes in Computer Science, pages 288-305. Springer-Verlag, Berlin, Mar. 1999. 10
No context found.
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. Higher-Order and Symbolic Computation (HOSC), 16(1-2):37--62, Mar. 2003.
No context found.
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. Higher-Order and Symbolic Computation (HOSC), 16(1-2):37--62, March 2003.
No context found.
Yanhong A. Liu and Scott D. Stoller. Dynamic programming via static incrementalization. Higher Order and Symbolic Computation, 16(1-2):37-62, March 2003.
No context found.
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In European Symposium on Programming, pages 288--305, 1999.
No context found.
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In European Symposium on Programming, pages 288--305, 1999.
No context found.
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In European Symposium on Programming, pages 288--305, 1999.
No context found.
Y. A. Liu and S. D. Stoller. Dynamic programming via static incrementalization. In European Symposium on Programming, pages 288--305, 1999.
First 50 documents
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC