Results 1  10
of
13
P.: A discipline of dynamic programming over sequence data
 Science of Computer Programming
, 2004
"... 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 ..."
Abstract

Cited by 26 (12 self)
 Add to MetaCart
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, errorprone 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
Explaining and Controlling Ambiguity in Dynamic Programming
, 2000
"... . Ambiguity in dynamic programming arises from two independent sources, the nonuniqueness of optimal solutions and the particular recursion scheme by which the search space is evaluated. Ambiguity, unless explicitly considered, leads to unnecessarily complicated, inflexible, and sometimes even ..."
Abstract

Cited by 25 (10 self)
 Add to MetaCart
. Ambiguity in dynamic programming arises from two independent sources, the nonuniqueness of optimal solutions and the particular recursion scheme by which the search space is evaluated. Ambiguity, unless explicitly considered, leads to unnecessarily complicated, inflexible, and sometimes even incorrect dynamic programming algorithms. Building upon the recently developed algebraic approach to dynamic programming, we formalize the notions of ambiguity and canonicity. We argue that the use of canonical yield grammars leads to transparent and versatile dynamic programming algorithms. They provide a master copy of recurrences, that can solve all DP problems in a welldefined domain. We demonstrate the advantages of such a systematic approach using problems from the areas of RNA folding and pairwise sequence comparison. 1 Motivation and Overview 1.1 Ambiguity Issues in Dynamic Programming Dynamic Programming (DP) solves combinatorial optimization problems. It is a classical p...
A Systematic Approach to Dynamic Programming in Bioinformatics
, 1999
"... Motivation: Dynamic programming is probably the most popular programming method in bioinformatics. Sequence comparison, gene recognition, RNA structure prediction and hundreds of other problems are solved by ever new variants of dynamic programming. Currently, the development of a successful dynamic ..."
Abstract

Cited by 25 (9 self)
 Add to MetaCart
Motivation: Dynamic programming is probably the most popular programming method in bioinformatics. Sequence comparison, gene recognition, RNA structure prediction and hundreds of other problems are solved by ever new variants of dynamic programming. Currently, the development of a successful dynamic programming algorithm is a matter of experience, talent, and luck. The typical matrix recurrence relations that make up a dynamic programming algorithm are intricate to construct, and difficult to implement reliably. No general problem independent guidance is available. Results: This article introduces a systematic method for constructing dynamic programming solutions to problems in biosequence analysis. By a conceptual splitting of the algorithm into a recognition and an evaluation phase, algorithm development is simplified considerably, and correct recurrences can be derived systematically. Without additional effort, the method produces an early, executable prototype expressed in a funct...
Efficient Combinator Parsers
 In Implementation of Functional Languages, LNCS
, 1998
"... . Parser combinators enable the construction of recursive descent parsers in a very clear and simple way. Unfortunately, the resulting parsers have a polynomial complexity and are far too slow for realistic inputs. We show how the speed of these parsers can be improved by one order of magnitude usin ..."
Abstract

Cited by 11 (0 self)
 Add to MetaCart
. Parser combinators enable the construction of recursive descent parsers in a very clear and simple way. Unfortunately, the resulting parsers have a polynomial complexity and are far too slow for realistic inputs. We show how the speed of these parsers can be improved by one order of magnitude using continuations. These continuations prevents the creation of intermediate data structures. Furthermore, by using an exclusive orcombinator instead of the ordinary orcombinator the complexity for deterministic parsers can be reduced from polynomial to linear. The combination of both improvements turn parser combinators from a beautiful toy to a practically applicable tool which can be used for real world applications. The improved parser combinators remain very easy to use and are still able to handle ambiguous grammars. 1 Introduction Parser combinators [3, 6, 5, 8] are a beautiful illustration of the use of higher order functions and currying. By using a small set of parser combinators ...
A declarative approach to the development of dynamic programming algorithms, applied to RNA folding
, 1998
"... A new approach to the systematic development of dynamic programming algorithms is presented and applied to RNA folding. Analyses of the potential foldings of an RNA molecule have mainly been restricted to energy minimization over all feasible secondary structures. In order to develop more specific a ..."
Abstract

Cited by 6 (5 self)
 Add to MetaCart
A new approach to the systematic development of dynamic programming algorithms is presented and applied to RNA folding. Analyses of the potential foldings of an RNA molecule have mainly been restricted to energy minimization over all feasible secondary structures. In order to develop more specific analyses, we split up the traditional dynamic programming approach into a structure recognition and an evaluation phase. Regular tree grammars are used to describe the recognized class of structures. This allows to analyse for presence (or even absence) of very specific structures in the folding space of an RNA molecule. An EBNFlike notation for tree grammars is developed. It turns into a recognizer by interpreting the EBNFoperators as parser combinators; the polynomial efficiency of dynamic programming is regained by the introduction of tabulating yield parsers. folding space evaluator, described in terms of higherorder functions.
The Calculation of a Polytypic Parser
, 1996
"... In this paper it is shown how inverses can be used to calculate a parser. A polytypic unparser is given and by using rules for calculating inverses a polytypic parser is calculated from it. It can be instantiated automatically for all data types that can be described by a regular functor. The idea t ..."
Abstract

Cited by 5 (0 self)
 Add to MetaCart
In this paper it is shown how inverses can be used to calculate a parser. A polytypic unparser is given and by using rules for calculating inverses a polytypic parser is calculated from it. It can be instantiated automatically for all data types that can be described by a regular functor. The idea that a parser can be calculated as the inverse of an unparser is not new, but because polytypical functions are used here the calculated parser is very general. Inverses are defined in a general way and rules are given to calculate them. The set monad has a strong connection with inverses and for many monadic concepts the instantiation with this monad gives rise to rules about inverses. In this way the inverses of catamorphisms and anamorphisms can be characterized. As we know that the unparser and the rules that were used in the calculation are correct, the calculated parser is known to be correct too. In general the parser that results from such a calculation is not very efficient and it is possible to construct much more efficient parsers by hand. Because it is possible to prove the equality of these two parsers, this parser is correct too. An implementation of parsers for a small subset of html and latex is given as an illustration of how the polytypic functions are instantiated for a particular datatype. Contents 1
An Algebraic Dynamic Programming Approach to the Analysis of Recombinant DNA Sequences
 In Workshop on Algorithmic Ascpects of Advanced Programming Languages (WAAAPL
, 1999
"... Evaluator and Evaluation Algebras According to [4], an abstract evaluator is obtained by abstracting from the constructors of the underlying datatype Alignment. Additionally, an abstract choice function is associated with each production, by the combinator (...). Such an ensemble of functions of ap ..."
Abstract

Cited by 5 (5 self)
 Add to MetaCart
Evaluator and Evaluation Algebras According to [4], an abstract evaluator is obtained by abstracting from the constructors of the underlying datatype Alignment. Additionally, an abstract choice function is associated with each production, by the combinator (...). Such an ensemble of functions of appropriate types constitutes an alignmentalgebra. type Algebra a b = (b,  Empty a>b>a>b,  R (Int,Int)>b>b,  D b>(Int,Int)>b,  I (Int,Int)>(Int,Int)>(Int,Int)>b>(Int,Int)>b,  L (Int,Int)>b>(Int,Int)>(Int,Int)>(Int,Int)>b,  S [b]>[b])  choice function (...)::Parser b>([b]>c)>(Int,Int)>c (...) q choice = choice.q  applying a choice function The abstract evaluator takes an alignment algebra as an additional parameter and adds the choice function. 3 We generally assume that m 2 O(n), to simplify asymptotic results. 84 ab_alignments::(Eq a)=>(Algebra a b)>(Sequence a)>(Sequence a)>[b] ab_alignments alg x y = axiom (alignment!) where (fE, fR,...
A Parallel Functional Language Compiler for MessagePassing Multicomputers
, 1998
"... The research presented in this thesis is about the design and implementation of Naira, a parallel, parallelising compiler for a rich, purely functional programming language. The source language of the compiler is a subset of Haskell 1.2. The front end of Naira is written entirely in the Haskell subs ..."
Abstract

Cited by 4 (2 self)
 Add to MetaCart
The research presented in this thesis is about the design and implementation of Naira, a parallel, parallelising compiler for a rich, purely functional programming language. The source language of the compiler is a subset of Haskell 1.2. The front end of Naira is written entirely in the Haskell subset being compiled. Naira has been successfully parallelised and it is the largest successfully parallelised Haskell program having achieved good absolute speedups on a network of SUN workstations. Having the same basic structure as other production compilers of functional languages, Naira's parallelisation technology should carry forward to other functional language compilers. The back end of Naira is written in C and generates parallel code in the C language which is envisioned to be run on distributedmemory machines. The code generator is based on a novel compilation scheme specified using a restricted form of Milner's ßcalculus which achieves asynchronous communication. We present the f...
Implementing algebraic dynamic programming in the functional and the imperative paradigm
 In E.A. Boiten and B. Möller, editors, Mathematics of Program Construction
, 2002
"... Abstract. Algebraic dynamic programming is a new method for developing and reasoning about dynamic programming algorithms. In this approach, socalled yield grammars and evaluation algebras constitute abstract specifications of dynamic programming algorithms. We describe how this theory is put to pr ..."
Abstract

Cited by 4 (4 self)
 Add to MetaCart
Abstract. Algebraic dynamic programming is a new method for developing and reasoning about dynamic programming algorithms. In this approach, socalled yield grammars and evaluation algebras constitute abstract specifications of dynamic programming algorithms. We describe how this theory is put to practice by providing a specification language that can both be embedded in a lazy functional language, and translated into an imperative language. Parts of the analysis required for the latter translation also gives rise to sourcetosource transformations that improve the asymptotic efficiency of the functional implementation. The multiparadigm system resulting from this approach provides increased programming productivity and effective validation. 1
Matching and Significance Evaluation of Combined SequenceStructure Motifs in RNA
 Z. PHYS. CHEM
, 2001
"... The discipline of Algebraic Dynamic Programming is a powerful method to design and implement versatile pattern matching algorithms on sequences; here we consider mixed sequence and secondary structure motifs in RNA. A recurring challenge when designing new pattern matchers is to provide a statis ..."
Abstract

Cited by 3 (0 self)
 Add to MetaCart
The discipline of Algebraic Dynamic Programming is a powerful method to design and implement versatile pattern matching algorithms on sequences; here we consider mixed sequence and secondary structure motifs in RNA. A recurring challenge when designing new pattern matchers is to provide a statistical analysis of pattern significance. We demonstrate