Steffen Peter, Giegerich Robert
Faculty of Technology, Bielefeld University, Postfach 10 01 31, 33501 Bielefeld, Germany.
BMC Bioinformatics. 2005 Sep 12;6:224. doi: 10.1186/1471-2105-6-224.
Dynamic programming is a widely used programming technique in bioinformatics. In sharp contrast to the simplicity of textbook examples, implementing a dynamic programming algorithm for a novel and non-trivial application is a tedious and error prone task. The algebraic dynamic programming approach seeks to alleviate this situation by clearly separating the dynamic programming recurrences and scoring schemes.
Based on this programming style, we introduce a generic product operation of scoring schemes. This leads to a remarkable variety of applications, allowing us to achieve optimizations under multiple objective functions, alternative solutions and backtracing, holistic search space analysis, ambiguity checking, and more, without additional programming effort. We demonstrate the method on several applications for RNA secondary structure prediction.
The product operation as introduced here adds a significant amount of flexibility to dynamic programming. It provides a versatile testbed for the development of new algorithmic ideas, which can immediately be put to practice.
动态规划是生物信息学中广泛使用的编程技术。与教科书示例的简单性形成鲜明对比的是,为新颖且非平凡的应用实现动态规划算法是一项繁琐且容易出错的任务。代数动态规划方法试图通过清晰地分离动态规划递归和评分方案来缓解这种情况。
基于这种编程风格,我们引入了评分方案的通用乘积运算。这带来了显著多样的应用,使我们能够在无需额外编程工作的情况下,实现多目标函数下的优化、替代解决方案和回溯、整体搜索空间分析、歧义检查等。我们在RNA二级结构预测的几个应用中展示了该方法。
本文介绍的乘积运算为动态规划增添了显著的灵活性。它为新算法思想的开发提供了一个通用的试验台,这些思想可以立即付诸实践。