Giegerich, RobertMeyer, CarstenSteffen, PeterSchubert, Sigrid E.Reusch, BerndJesse, Norbert2019-11-282019-11-2820023-88579-348-2https://dl.gi.de/handle/20.500.12116/30280Dynamic programming is a classic programming technique, applicable in a wide variety of domains, like stochastic systems analysis, operations research, combinatorics of discrete structures, ow problems, parsing ambiguous languages, or biosequence analysis. Yet, heretofore no methodology was available guiding the design of such algorithms. The matrix recurrences that typically describe a dynamic programming algorithm are di cult to construct, error-prone to implement, and almost impossible to debug. This article introduces an algebraic style of dynamic programming over sequence data. We de ne its formal framework including a formalization of Bellman's principle. We suggest a language for algorithm design on a convenient level of abstraction. We outline three ways of implementation, including an embedding in a lazy functional language. The workings of the new method are illustrated by a series of examples from diverse areas of computer science.enTowards a discipline of dynamic programmingText/Conference Paper1617-5468