Recursion Schemes for Dynamic Programming [1 citations — 0 self]
Abstract:
Dynamic programming is an algorithm design technique, which allows to improve efficiency by avoiding re-computation of identical subtasks. We present a new recursion combinator, dynamorphism,which captures the dynamic programming recursion pattern with memoization and identify some simple conditions when functions defined by structured general recursion can be redefined as a dynamorphism. The applicability of the new recursion combinator is demonstrated on classical dynamic programming algorithms: Fibonacci numbers, binary partitions, edit distance and longest common subsequence.
Citations
| 1487 | Dynamic programming – Bellman - 1957 |
| 250 | Functional programming with bananas, lenses, envelopes and barbed wire – Meijer, Fokkinga, et al. - 1991 |
| 195 | An introduction to the theory of lists – Bird - 1987 |
| 100 | Data structures and program transformation – Malcolm - 1990 |
| 89 | and Order in Algorithmics – Law - 1992 |
| 71 | and Oege de Moor. Algebra of Programming – Bird - 1997 |
| 51 | A Categorical Programming Language – Hagino - 1987 |
| 24 | Calculating functional programs – Gibbons - 2002 |
| 17 | Recursion schemes from comonads – Uustalu, Vene, et al. |
| 9 | Primitive (co)recursion and course-of-values (co)iteration, categorically – Uustalu, Vene - 1999 |
| 7 | Categorical Programming with Inductive and Coinductive Types – Vene - 2000 |
| 3 | Recursive coalgebras from comonads – Capretta, Uustalu, et al. - 2006 |

