Affiliation:
1. UC Berkeley, Berkeley, CA, USA
Abstract
To solve a problem with a dynamic programming algorithm, one must reformulate the problem such that its solution can be formed from solutions to overlapping subproblems. Because overlapping subproblems may not be apparent in the specification, it is desirable to obtain the algorithm directly from the specification. We describe a semi-automatic synthesizer of linear-time dynamic programming algorithms. The programmer supplies a declarative specification of the problem and the operators that might appear in the solution. The synthesizer obtains the algorithm by searching a space of candidate algorithms; internally, the search is implemented with constraint solving. The space of candidate algorithms is defined with a program template reusable across all linear-time dynamic programming algorithms, which we characterize as first-order recurrences. This paper focuses on how to write the template so that the constraint solving process scales to real-world linear-time dynamic programming algorithms. We show how to reduce the space with (i)~symmetry reduction and (ii)~domain knowledge of dynamic programming algorithms. We have synthesized algorithms for variants of maximal substring matching, an assembly-line optimization, and the extended Euclid algorithm. We have also synthesized a problem outside the class of first-order recurrences, by composing three instances of the algorithm template.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference28 articles.
1. e. a. Armando Solar-Lezama. The Sketch synthesizer. http://sketch1.csail.mit.edu/demo/. e. a. Armando Solar-Lezama. The Sketch synthesizer. http://sketch1.csail.mit.edu/demo/.
2. The theory of dynamic programming
3. Programming with angelic nondeterminism
Cited by
9 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Decomposition-based Synthesis for Applying Divide-and-Conquer-like Algorithmic Paradigms;ACM Transactions on Programming Languages and Systems;2024-06-17
2. Synthesizing Efficient Memoization Algorithms;Proceedings of the ACM on Programming Languages;2023-10-16
3. Cognification of Program Synthesis—A Systematic Feature-Oriented Analysis and Future Direction;Computers;2020-04-12
4. Accelerating Syntax-Guided Invariant Synthesis;Tools and Algorithms for the Construction and Analysis of Systems;2018
5. Autogen;ACM Transactions on Parallel Computing;2017-10-09