A discipline of dynamic programming over sequence data

  • Authors:
  • Robert Giegerich;Carsten Meyer;Peter Steffen

  • Affiliations:
  • Faculty of Technology, Bielefeld University, Postfach 10 01 31, 33501 Bielefeld, Germany;Faculty of Technology, Bielefeld University, Postfach 10 01 31, 33501 Bielefeld, Germany;Faculty of Technology, Bielefeld University, Postfach 10 01 31, 33501 Bielefeld, Germany

  • Venue:
  • Science of Computer Programming - Methods of software design: Techniques and applications
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

Dynamic programming is a classical programming technique, applicable in a wide variety of domains such as stochastic systems analysis, operations research, combinatorics of discrete structures, flow problems, parsing of ambiguous languages, and biosequence analysis. Little methodology has hitherto been available to guide the design of such algorithms. The matrix recurrences that typically describe a dynamic programming algorithm are difficult to construct, error-prone to implement, and, in nontrivial applications, almost impossible to debug completely.This article introduces a discipline designed to alleviate this problem. We describe an algebraic style of dynamic programming over sequence data. We define its formal framework, based on a combination of grammars and algebras, and including a formalization of Bellman's Principle. We suggest a language used for algorithm design on a convenient level of abstraction. We outline three ways of implementing this language, including an embedding in a lazy functional language. The workings of the new method are illustrated by a series of examples drawn from diverse areas of computer science.