Login / Register Logged in as anonymous / My BiBiServ / Logout
Bellman's GAP Cafe
Authors: G. Sauthoff, T. Gatter
Bellman's GAP which is a programming system for writing dynamic programming algorithms over sequential data. It is the second generation implementation of the algebraic dynamic programming framework (ADP).

Bellman's GAP

The system includes the multi-paradigm language (GAP-L), its compiler (GAP-C) and functional modules (GAP-M) . GAP-L includes declarative constructs, e.g. tree grammars to model the search space, and imperative constructs for programming advanced scoring functions. The syntax of GAP-L is similar to C/Java to lower usage barriers. GAP-C translates the high-level and index-free GAP-L programs into efficient C++-Code, which is competitive with handwritten code. It includes a novel table design optimization algorithm, support for dynamic programming (DP) over multiple sequences (multi-track DP), sampling, optional top-down evaluation, various backtracing schemes etc. GAP-M includes modules for use in GAP-L programs. Examples are efficient representations of classification data types and sampling as well as filter helper functions.

Algebraic dynamic programming

Algebraic Dynamic Programming (ADP) is a formal framework for specifying dynamic programming algorithms on sequences. It clearly separates the concerns of search space description, candidate description, candidate evaluation and tabulation.

Tree grammars (G) specify the search space, algebras (E) evaluate candidate terms and signatures (��) declare the function reservoir which tree grammars and algebras are using. Tabulation is specified through non-terminal annotation in tree grammars. The use of tree grammars for search space description eliminates subscripts from the algorithm description, i.e. a major source of programming errors in developing DP algorithms.

Algebras are building blocks to wrap different scoring schemes or optimization s trategies (h). With product operations they can be combined to more powerful analyses.


Dynamic programming is ubiquitous in bioinformatics. Developing and implementing non-trivial dynamic programming algorithms is often error prone and tedious. Bellman's GAP is a new programming system, designed to ease the development of bioinformatics tools based on the dynamic programming technique. Fold-Grammars is repository for thermodynamic RNA folding with Bellman's GAP.

Users of Bellman's GAP Cafe are requested to cite :
Sauthoff, Georg and Janssen, Stefan and Giegerich, Robert Bellman's GAP - A Declarative Language for Dynamic Programming, ACM, 2011
built on September 29 2015 (8:b13c9f0e8e47)