ABSTRACT
Dynamic programming is a well-established technique to solve combinatorial optimization problems. In several areas of applied computer science, such as operations research, natural language processing, or biosequence analysis, dynamic programming problems arise in many variations and with a considerable degree of sophistication. The simple way dynamic programming problems are normally presented in computer science textbooks -- as a set of table recurrences -- scales poorly for real world problems, where the search space is deeply structured and the scoring model is elaborate. Coming up with pages of correct recurrences is difficult, implementation is error-prone, and debugging is tedious. Algebraic Dynamic Programming (ADP) is a language-independent, declarative approach which alleviates these problems for a relevant class of dynamic programming problems over sequence data.
Bellman's GAP implements ADP by providing a declarative language (GAP-L) with a Java-reminiscent syntax, and a compiler (GAP-C) translating declarative programs into C++ code, which is competitive to handwritten code, and arguably more reliable. This article introduces the GAP-L language, demonstrates the benefits of developing dynamic programming algorithms in a declarative framework by educational example, and reports on the practice of programming bioinformatics applications with Bellman's GAP.
- M. I. Abouelhoda, R. Giegerich, B. Behzadi, and J.-M. Steyaert. Alignment of minisatellite maps based on run-length encoding scheme. J Bioinform Comput Biol, 7(2):287--308, 2009.Google ScholarCross Ref
- R. E. Bellman. Dynamic Programming. Princeton University Press, 1957.Google Scholar
- E. Birney and R. Durbin. Dynamite: A flexible code generating language for dynamic programming methods used in sequence comparison. In Proc. of the 5th ISCB, pages 56--64, 1997. Google ScholarDigital Library
- T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction to Algorithms. MIT Press, 2001. Google ScholarDigital Library
- J. Eisner, E. Goldlust, and N. A. Smith. Compiling comp ling: Weighted dynamic programming and the Dyna language. In Proc. of HLT-EMNLP, pages 281--290, 2005. Google ScholarDigital Library
- P. P. Gardner, J. Daub, J. G. Tate, E. P. Nawrocki, D. L. Kolbe, S. Lindgreen, A. C. Wilkinson, R. D. Finn, S. Griffiths-Jones, S. R. Eddy, and A. Bateman. Rfam: updates to the RNA families database. Nucl. Acids Res., 37(suppl_1):D136--140, Jan. 2009.Google Scholar
- R. Giegerich. A systematic approach to dynamic programming in bioinformatics. Bioinformatics, 16:665--677, 2000.Google ScholarCross Ref
- R. Giegerich and C. Meyer. Algebraic Dynamic Programming. In H. Kirchner and C. Ringeissen, editors, AMAST 2002, volume 2422 of Springer Lecture Notes in Computer Science, pages 349--364, 2002. Google ScholarDigital Library
- R. Giegerich, C. Meyer, and P. Steffen. A discipline of dynamic programming over sequence data. Science of Computer Programming, 51(3):215--263, 2004. Google ScholarDigital Library
- R. Giegerich and G. Sauthoff. Yield grammar analysis in the Bellman's GAP compiler. In Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications, LDTA'11. ACM, 2011. Google ScholarDigital Library
- R. Giegerich and P. Steffen. Challenges in the Compilation of a Domain Specific Language for Dynamic Programming. In H. Haddad, editor, Proceedings of the 2006 ACM Symp. on Appl. Comp., 2006. Google ScholarDigital Library
- R. Giegerich, B. Voß, and M. Rehmsmeier. Abstract shapes of RNA. Nucleic Acids Research, 32(16):4843, 2004.Google ScholarCross Ref
- R. Giegerich and C. H. zu Siederdissen. Semantics and ambiguity of stochastic rna family models. IEEE/ACM Transactions on Computational Biology and Bioinformatics, 8(2):499--516, 2011. Google ScholarDigital Library
- I. L. Hofacker, W. Fontana, P. F. Stadler, L. S. Bonhoeffer, M. Tacker, and P. Schuster. Fast folding and comparison of RNA secondary structures. Monatshefte für Chemie, 125(2):167--188, 1994.Google ScholarCross Ref
- T. L. Morin. Monotonicity and the principle of optimality. Journal of Mathematical Analysis and Applications, 86:665--674, 1982.Google ScholarCross Ref
- E. P. Nawrocki, D. L. Kolbe, and S. R. Eddy. Infernal 1.0: inference of RNA alignments. Bioinformatics, 25(10):1335--1337, May 2009. Google ScholarDigital Library
- L. Pachter and B. Sturmfels. Algebraic Statistics for Computational Biology. Cambridge University Press, 2005. Google ScholarDigital Library
- J. Reeder and R. Giegerich. Design, implementation and evaluation of a practical pseudoknot folding algorithm based on thermodynamics. BMC Bioinformatics, 5:104, 2004.Google ScholarCross Ref
- M. Rehmsmeier, P. Steffen, M. Höchsmann, and R. Giegerich. Fast and effective prediction of microRNA/target duplexes. RNA, 10:1507--1517, 2004.Google ScholarCross Ref
- G. Sauthoff. Bellman's GAP: A 2nd Generation Language and System for Algebraic Dynamic Programming. PhD thesis, Bielefeld University, 2011.Google Scholar
- G. Sauthoff and R. Giegerich. Bellman's gap language report. Technical report, Bielefeld University, 2010.Google Scholar
- P. Steffen and R. Giegerich. Versatile and declarative dynamic programming using pair algebras. BMC Bioinformatics, 6(1):224, 2005.Google ScholarCross Ref
- C. Theis, S. Janssen, and R. Giegerich. Prediction of RNA Secondary Structure Including Kissing Hairpin Motifs. In V. Moulton and M. Singh, editors, Algorithms in Bioinformatics, volume 6293 of Lecture Notes in Computer Science, chapter 5, pages 52--64. Springer Berlin / Heidelberg, Berlin, Heidelberg, 2010. Google ScholarDigital Library
- M. Zuker and P. Stiegler. Optimal computer folding of large RNA sequences using thermodynamics and auxiliary information. Nucleic Acids Research, 9(1):133--148, 1981.\endthebibliographyGoogle ScholarCross Ref
Index Terms
- Bellman's GAP: a declarative language for dynamic programming
Recommendations
Yield grammar analysis in the Bellman's GAP compiler
LDTA '11: Proceedings of the Eleventh Workshop on Language Descriptions, Tools and ApplicationsDynamic programming algorithms are traditionally expressed by a set of table recurrences -- a low level of abstraction which renders the design of novel dynamic programming algorithms difficult and makes debugging cumbersome.
Bellman's GAP is a ...
A Predicate Construct for Declarative Programming in Imperative Languages
PPDP '22: Proceedings of the 24th International Symposium on Principles and Practice of Declarative ProgrammingImperative and object-oriented programming languages are among the most common languages for general-purpose programming. These languages work well for handling many common tasks necessary for most applications. However, there are still many hard ...
Spider vs. Prolog: simulating Prolog in Spider
CompSysTech '09: Proceedings of the International Conference on Computer Systems and Technologies and Workshop for PhD Students in ComputingControl Network Programming is a programming paradigm that integrates ideas from imperative programming, declarative programming, rule-based systems, nondeterministic programming and graphical programming. Its computation rule is based on an extended ...
Comments