| R. Bird, \Tabulation Techniques for Recursive Programs," Comput. Surveys 12 (1980), 403-417. |
....very space inecient. To limit the size of the look up table scheduling strategies can be used [Hil76] Various other strategies can be employed to determine or estimate exactly which function calls will be needed in the future. These include local memoisation, exact tabulation and over tabulation [Bir80] Cohen [Coh83] uses descent conditions and directed acyclic dependency graphs to determine which results of recursive calls will be used more than once. This is used to introduce transformations which will introduce a look up table of values which use the minimal amount of space but will ....
R. S. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403-417, December 1980.
....[20] but here we prefer to reserve this word for the global algorithm. calls to be tupled are not nested and they may be arbitrarily distributed in the right hand side of a rule. Sophisticated static analysis have been developed in the literature using dependencies graphs ( 11, 19] m dags ([8]) symbolic trace trees [9] and other intrincated structures. The main problems appearing in such approaches are that the analysis are not as general as wanted (they can fail even although the program admits tupling optimizations) they are time and space consuming and or they may duplicate some ....
R.S. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403--418, 1980.
....one may use loops in place of recursion and keep the stack in a linked list or an array. Iterative in contrast to recursive forms are not what give rise to the optimization. What yields the optimization is the elimination of repeated computations, a smart form of memoization [22] and tabulation [3], as a result of incremental computation. Third, although the optimization method based on incrementalization has been used successfully to optimize loops, arrays, recursive functions, and recursive data structures [15] and transform recursion to iteration [17] the power of the method in general ....
....function as incrementalization can, but it is used in incrementalization and is especially important for handling base cases; this is particularly needed for Ackermann s function, as will be seen in this paper. There are other program transformation methods for memoization [7, 22] tabulation [3, 7], etc. 6, 25, 26] which share similar ideas as incrementalization, but they cannot derive an optimized Ackermann s function as incrementalization can; memoizing or tabulating all function calls in computing Ackermann s function would require O(a(i, n) space, whereas our optimized program needs ....
R. S. Bird. Tabulation techniques for recursive programs. ACM Comput. Surv., 12(4):403--417, Dec. 1980.
....just once, saves the result in a table, and reuses the result when the subsubproblem is encountered again. This can reduce the time complexity from exponential to polynomial. The technique is generally applicable to all problems that can be solved eciently by memoizing results of subproblems [4, 5]. Given a straightforward recursion, there are two traditional ways to achieve the e ect of dynamic programming [15] memoization [40] and tabulation [5] This work is supported in part by ONR under grants N00014 99 1 0132 and N00014 99 1 0358 and by NSF under grants CCR 9711253 and ....
....to polynomial. The technique is generally applicable to all problems that can be solved eciently by memoizing results of subproblems [4, 5] Given a straightforward recursion, there are two traditional ways to achieve the e ect of dynamic programming [15] memoization [40] and tabulation [5]. This work is supported in part by ONR under grants N00014 99 1 0132 and N00014 99 1 0358 and by NSF under grants CCR 9711253 and CCR 9876058. This article is a revised and extended version of a paper that appeared in Proceedings of the 8th European Symposium on Programming, Amsterdam, The ....
[Article contains additional citation context not shown here]
R. S. Bird. Tabulation techniques for recursive programs. ACM Comput. Surv., 12(4):403-417, Dec. 1980.
....and in the case of lazy data structures even cause infinite loops. Therefore, Hug85] suggests to use equality of pointers instead (of course, then less computation will be shared) Memoization is a top down method its bottom up counterpart is often termed tabulation and is treated e.g. in [Bir80] and [Coh83] In [Bir80] the top down method is termed exact tabulation (as only the rules needed are generated) whereas the bottom up method may give rise to overtabulation. In [Coh83] the top21 Example 2.1.1 Consider the fibonacci function fib(n) #fib(n 1) fib(n 2) for n 2. ....
....even cause infinite loops. Therefore, Hug85] suggests to use equality of pointers instead (of course, then less computation will be shared) Memoization is a top down method its bottom up counterpart is often termed tabulation and is treated e.g. in [Bir80] and [Coh83] In [Bir80] the top down method is termed exact tabulation (as only the rules needed are generated) whereas the bottom up method may give rise to overtabulation. In [Coh83] the top21 Example 2.1.1 Consider the fibonacci function fib(n) #fib(n 1) fib(n 2) for n 2. a suitable representation of ....
Richard S. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403--417, December 1980.
....inefficiency because the main parameter os is traversed multiple times by fs , resembling the case for fib function in Section 2.2. This inefficient state shall be handled by the tupling transformation. The tupling technique that we shall use is called dynamic tupling [CH95] or tabulation [Bir80] as opposed to the static tupling where we know statically the fixed number of values that should be memoized. The purpose of our dynamic tupling is to merge two recursive calls of fs together so that os can be traversed once. The difficultyinsuch tupling is to determine whichvalues should be ....
R. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403--417, 1980.
....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 ....
R. S. Bird. Tabulation techniques for recursive programs. ACM Comput. Surv., 12(4):403-417, Dec. 1980.
....our own implementation and serves as guidance to anyone interested in proper memory management of tabled systems or systems that are similar in certain aspects. 1 Introduction The incorporation of tabling (also known as memoization or tabulation in the context of functional languages [Bir80] in non deterministic programming languages such as Prolog leads to a more powerful and flexible paradigm: tabled logic programming. More specifically, through the use of tabling not only are repeated subcomputations avoided but also more programs terminate; thus the resulting execution model ....
Richard S. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403--417, December 1980.
....for storing results of function applications, and re using them when a function is invoked a second time with the same arguments. The technique is often used to improve the performance of recursive functions. An overview of various memoizing methods for recursive functions is given by Bird in [Bir80] Pugh and Teitelbaum [PT89] have described how to use function caching for incremental evaluation for data structures like sequences and sets. In order to obtain efficient incremental algorithms the data structures must be designed in a special way so that computations over similar instances of ....
R.S. Bird. Tabulation techniques for recursive programs. Computing Surveys, 12(4):403--417, 1980.
....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 ....
R. S. Bird. Tabulation techniques for recursive programs. ACM Comput. Surv., 12(4):403-417, Dec. 1980.
....paper. In addition, we say that our Haskell programs are pseudo in the sense that they include some additional notations for sets. 4 by using the known calculation techniques of fusion [Chi92] generalization (accumulation) Bir84, HIT99] base case lter promotion [Chi90] and tabulation [Bir80, CH95] Our derivation strategy is rather standard for program optimization and can be summarized as follows. First, we eliminate as much unnecessary intermediate data structures as possible by fusion of composition of recursive functions into a single recursion function. Then, we reuse ....
....through fusion, accumulation, and base case lter promotion, there still remains a source of serious ineciency because the inductive parameter os is traversed multiple times by fs 0 . We want to share some computation among all recursive calls to fs 0 , by using the tabulation calculation [Bir80, CH95] 3.4.1 Tree Structure with Invariants The purpose of our tabulation calculation is to exploit the relationship among recursive calls to fs 0 so that their computation could be shared. The diculty in such tabulation is to determine which values should be tabulated and how these values ....
R. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403-417, 1980.
....is not an efficient one. Clearly, the algorithm is exponential in the length of the given sequence. 6.2 Program Derivation Our derivation of an accumulation for psp begins with finding an accumulation for subs, and then manipulates accumulations according to the Accumulation Promotion Theorems. [ 1 ] Deriving an accumulation for subs This derivation has been already given in Example 4.2. The result is as follows. subs xs = 1 5 2 ] F1 F2 xs ffl where 1 ( y = f[y]g 2 (x; p) y = p y [ y : 3 (p x) where F 1 = 1 and F 2 = a 2 I . 2 ] Manipulating (path ) ffi subs After ....
....= x; p 0 ) y: p 0 y) if arc y x y 6= ffl then (y : 3 (p 0 x) else (p 0 x) ffi F 2 (kffi) Thus we get 2 defined as 2 (x; p) y = p y) h where h = if arc y x y 6= ffl then (y : 3 (p x) else (p x) Finally, according to Theorem 5. 1, we obtain ( path ) ffi subs) xs = [ 1 5 2 ]) xs ffl: 3 ] Promoting max ffi (length3) into the obtained accumulation We continue promoting max ffi length3 into the derived accumulation according to the Accumulation Promotion Theorems, as we did above. We omit the detail calculation but give the last result. psp xs = j 1 5 j 2 ] xs ....
) Bird, R. Tabulation techniques for recursive programs. ACM Computing Surveys 12, 4 (1980), 403--417.
....but do not eliminate repeated subcomputations; the third is speci c to Ackermann s function and yields a program similar to the one by Grossman and Zeitman, which is then further optimized by specializing it for i 3. There are other program transformation methods for memoization [13] tabulation [1], partial evaluation [6, 5] etc. some of which share similar ideas as incrementalization, but they can not derive such an optimized Ackermann s function. 2 Optimization by incrementalization The method is based on identifying an input increment operation under which the function can be ....
R. S. Bird. Tabulation techniques for recursive programs. ACM Comput. Surv., 12(4):403-417, Dec. 1980.
....just once, saves the result in a table, and reuses the result when the subsubproblem is encountered again. This can reduce the time complexity from exponential to polynomial. The technique is generally applicable to all problems that can be solved eciently by memoizing results of subproblems [4, 5]. Given a straightforward recursion, there are two traditional ways to achieve the e ect of dynamic programming [15] memoization [40] and tabulation [5] This work is supported in part by ONR under grants N00014 99 1 0132 and N00014 99 1 0358 and by NSF under grants CCR 9711253 and ....
....to polynomial. The technique is generally applicable to all problems that can be solved eciently by memoizing results of subproblems [4, 5] Given a straightforward recursion, there are two traditional ways to achieve the e ect of dynamic programming [15] memoization [40] and tabulation [5]. This work is supported in part by ONR under grants N00014 99 1 0132 and N00014 99 1 0358 and by NSF under grants CCR 9711253 and CCR 9876058. This article is a revised and extended version of a paper that appeared in Proceedings of the 8th European Symposium on Programming, Amsterdam, The ....
[Article contains additional citation context not shown here]
R. S. Bird. Tabulation techniques for recursive programs. ACM Comput. Surv., 12(4):403-417, Dec. 1980.
....call by performing some unfolding steps and recalling only the recursive function calls with their father son relationship. We then compress that tree by identifying every two nodes having the same recursive call whereby obtaining the minimal descent directed acyclic graph, or m dag for short [Bird 80] We have depicted the m dag for f(n; a; b; c) in Fig. 3. Given the minimal descent dag of a recursively defined function, we define an irreflexive and transitive ordering on nodes as follows: for any two nodes m and n, we have that m n holds iff the function call associated with node m ....
Bird, R. S.: Tabulation Techniques for Recursive Programs. ACM Computing Surveys 12 (4) (1980) 403--418
....the efficient implementation of arrays in functional languages. Because of the simplicity of the language, many of these issues can be solved elegantly, using the polyhedral library [Wil93] and linear programming. A standard approach to efficient implementation of recursive programs is tabulation [Bir80, FWW76], also called applicative caching [KS86] Here, recomputation is avoided by maintaining a table (or cache) of previously computed values. This makes the underlying implementation imperative, but preserves a purely applicative interface to the user (i.e. referential transparency is retained) This ....
....such as projection, or slicing between two hyperplanes. When a value outside this subdomain is needed, one has to make room for it by discarding a part of the table and this may imply recomputation. The issues such as replacement policies, etc, are similar to those studied in classic tabulation [Bir80], and all those results can be used. Clearly, this is the best implementation that we can do in the absence of any static information, and reduces to the standard applicative caching [FWW76, KS86] 4.2 Scheduling The goal of scheduling is to find a timing function for each variable which maps ....
R. S. Bird. Tabulation techniques for recursive programs. Computing Surveys, 12(4):403--419, Dec 1980.
.... : 3 (k (p x) k (p x) x; p 0 ) y: p 0 y) arc y x y 6= ffl (y : 3 (p 0 x) p 0 x) ffi F 2 (kffi) Thus we get 2 defined as 2 (x; p) y = p y) h where h = arc y x y 6= ffl (y : 3 (p x) p x) Finally, according to Theorem 6, we obtain ( path ) ffi subs) xs = [ 1 5 2 ]) xs ffl: Promoting max ffi (length3) into the obtained accumulation We continue promoting max ffi length3 into the derived accumulation according to the Accumulation Promotion Theorems, as we did above. We omit the detail calculation but give the last result. psp xs = j 1 5 j 2 ] xs ffl ....
....Careful readers may have found that if the above program is implemented naively, it still requires exponential time to give its answer. But this is not a problem. Different from the initial program, our derived program is suitable to be made optimized by some standard techniques such as tabulation [2] or memoisation[20] Since these discussions are beyond the scope of this paper, we omit it here. Alternatively, a Gofer system with embedded memoisation mechanism [25] can give a direct efficient implementation. As maybe easily verified, there are only O(n 2 ) distinct values of acc requiring ....
R. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403--417, 1980.
....type reformer ffl, some elements may have many occurrences. This arrangement gives much possibility for multiple computations and multiple traversals of data structures. Fortunately, implementation techniques of functional programs such as partial evaluation, lazy evaluation [21, 22] memoisation [2, 24], and tupling technique[2, 6, 5] can help us to avoid multiple computations and multiple traversals of data structures. At present, we releave us from it, but we plan to study how to remove these recomputations in medio types. It is of interest for us to find that our type reformer may be a kind ....
....may have many occurrences. This arrangement gives much possibility for multiple computations and multiple traversals of data structures. Fortunately, implementation techniques of functional programs such as partial evaluation, lazy evaluation [21, 22] memoisation [2, 24] and tupling technique[2, 6, 5] can help us to avoid multiple computations and multiple traversals of data structures. At present, we releave us from it, but we plan to study how to remove these recomputations in medio types. It is of interest for us to find that our type reformer may be a kind of anamorphisms [18] generic ....
R. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403--417, 1980.
No context found.
R. Bird, \Tabulation Techniques for Recursive Programs," Comput. Surveys 12 (1980), 403-417.
No context found.
R. S. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403--417, Dec. 2002.
No context found.
R. S. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403--417, Dec. 2002.
No context found.
R. S. Bird. Tabulation Techniques for Recursive Programs. ACM Computing Surveys, 12(4):403--418, 1980.
No context found.
R. Bird. Tabulation techniques for recursive programs. Computing Surveys, 12(4):403--417, 1980.
No context found.
R. S. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403--417, Dec. 2002.
No context found.
R. S. Bird. Tabulation techniques for recursive programs. ACM Computing Surveys, 12(4):403--417, Dec. 2002.
First 50 documents Next 50
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