Algebraic Dynamic Programming

Dynamic programming is a classic programming technique, applicable in a wide variety of domains, like stochastic systems analysis, operations research, combinatorics of discrete structures, flow problems, parsing with ambiguous grammars, or biosequence analysis. Yet, no methodology is available for designing such algorithms. The matrix recurrences that typically describe a dynamic programming algorithm are difficult to construct, error-prone to implement, and almost impossible to debug.This article introduces an algebraic style of dynamic programming over sequence data. We define the formal framework including a formalization of Bellman's principle, specify an executable specification language, and show how algorithm design decisions and tuning for efficiency can be described on a convenient level of abstraction.

[1]  O. Gotoh An improved algorithm for matching biological sequences. , 1982, Journal of molecular biology.

[2]  L. G. Mitten Composition Principles for Synthesis of Optimal Multistage Processes , 1964 .

[3]  Walter S. Brainerd,et al.  Tree Generating Regular Systems , 1969, Inf. Control..

[4]  Sharon Curtis Dynamic programming: a different perspective , 1997, Algorithmic Languages and Calculi.

[5]  Robert Giegerich,et al.  A systematic approach to dynamic programming in bioinformatics , 2000, Bioinform..

[6]  Richard S. Bird,et al.  Algorithmic Languages and Calculi , 1997, IFIP Advances in Information and Communication Technology.

[7]  R. Durbin,et al.  Biological sequence analysis: Background on probability , 1998 .

[8]  Sean R Eddy,et al.  What is dynamic programming? , 2004, Nature Biotechnology.

[9]  R. Giegerich,et al.  Matching and Significance Evaluation of Combined Sequence-Structure Motifs in RNA , 2002 .

[10]  Michael Zuker,et al.  Optimal computer folding of large RNA sequences using thermodynamics and auxiliary information , 1981, Nucleic Acids Res..

[11]  D. Sankoff,et al.  RNA secondary structures and their prediction , 1984 .

[12]  Robert Giegerich,et al.  Reducing the Conformation Space in RNA Structure Prediction , 2001, German Conference on Bioinformatics.

[13]  김동규,et al.  [서평]「Algorithms on Strings, Trees, and Sequences」 , 2000 .

[14]  M S Waterman,et al.  Identification of common molecular subsequences. , 1981, Journal of molecular biology.

[15]  Alfred V. Aho,et al.  Data Structures and Algorithms , 1983 .

[16]  Richard S. Bird,et al.  From Dynamic Programming to Greedy Algorithms , 1993, Formal Program Development.

[17]  Robert Giegerich,et al.  Implementing Algebraic Dynamic Programming in the Functional and the Imperative Programming Paradigm , 2002, MPC.

[18]  Stefan Kurtz,et al.  Fundamental algorithms for a declarative pattern matching system , 1995 .

[19]  Robert Giegerich,et al.  Code Selection Techniques: Pattern Matching, Tree Parsing, and Inversion of Derivors , 1988, ESOP.

[20]  Prof. Dr. Kurt Mehlhorn,et al.  Data Structures and Algorithms 1 , 1984, EATCS.

[21]  R. K. Shyamasundar,et al.  Introduction to algorithms , 1996 .

[22]  T. Morin Monotonicity and the principle of optimality , 1982 .

[23]  Gilles Brassard,et al.  Algorithmics - theory and practice , 1988 .

[24]  Robert Giegerich,et al.  Explaining and Controlling Ambiguity in Dynamic Programming , 2000, CPM.

[25]  S. B. Needleman,et al.  A general method applicable to the search for similarities in the amino acid sequence of two proteins. , 1970, Journal of molecular biology.

[26]  Oege de Moor,et al.  Dynamic Programming as a Software Component , 1999 .

[27]  P. Gács,et al.  Algorithms , 1992 .

[28]  Dan Gusfield,et al.  Algorithms on Strings, Trees, and Sequences - Computer Science and Computational Biology , 1997 .