Data structures and algorithms 3: multi-dimensional searching and computational geometry
Data structures and algorithms 3: multi-dimensional searching and computational geometry
Algorithmics: theory & practice
Algorithmics: theory & practice
Algorithms
Introduction to algorithms
Algorithms on strings, trees, and sequences: computer science and computational biology
Algorithms on strings, trees, and sequences: computer science and computational biology
The Organization of Computations for Uniform Recurrence Equations
Journal of the ACM (JACM)
A linear space algorithm for computing maximal common subsequences
Communications of the ACM
Program optimization using indexed and recursive data structures
PEPM '02 Proceedings of the 2002 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Data Structures and Algorithms
Data Structures and Algorithms
The theory of parsing, translation, and compiling
The theory of parsing, translation, and compiling
On de novo interpretation of tandem mass spectra for peptide identification
RECOMB '03 Proceedings of the seventh annual international conference on Research in computational molecular biology
Dynamic Programming
A discipline of dynamic programming over sequence data
Science of Computer Programming - Methods of software design: Techniques and applications
Space-efficient construction variants of dynamic programming
Nordic Journal of Computing
Algebraic Statistics for Computational Biology
Algebraic Statistics for Computational Biology
A graphical programming system for molecular motif search
Proceedings of the 5th international conference on Generative programming and component engineering
Zippy Tabulations of Recursive Functions
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Yield grammar analysis in the Bellman's GAP compiler
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
Hi-index | 0.00 |
Dynamic Programming solves combinatorial optimization problems by recursive decomposition and tabulation of intermediate results. The first step in the design of a dynamic programming algorithm is to decide on the set of tables that will hold optimal solutions to subproblems. This step predetermines the shape of the dynamic programming recurrences as well as the asymptotic efficiency of the algorithm in time and space. We study dynamic programming in a formal framework where design of tables and problem decomposition can be done independently. Our main result shows that choosing a good table design for a given decomposition is an NP-complete problem. A heuristic or approximate approach is therefore needed to automate good table design. We report on a strategy that combines user annotation and a brute force algorithm, which is shown to perform well in a large application.