Applications of a strategy for designing divide-and-conquer algorithms
Science of Computer Programming
Algebraic identities for program calculation
The Computer Journal - Special issue on Lazy functional programming
KIDS: A Semiautomatic Program Development System
IEEE Transactions on Software Engineering
Algebra of programming
The Power of Dominance Relations in Branch-and-Bound Algorithms
Journal of the ACM (JACM)
Make it practical: a generic linear-time algorithm for solving maximum-weightsum problems
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Finite Differencing of Computable Expressions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Constraint Processing
Maximum segment sum is back: deriving algorithms for two segment problems with bounded lengths
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Generation of efficient programs for solving maximum multi-marking problems
SAIG'01 Proceedings of the 2nd international conference on Semantics, applications, and implementation of program generation
Maximum marking problems with accumulative weight functions
ICTAC'05 Proceedings of the Second international conference on Theoretical Aspects of Computing
A class of Greedy algorithms and its relation to greedoids
ICTAC'10 Proceedings of the 7th International colloquium conference on Theoretical aspects of computing
Synthesis of first-order dynamic programming algorithms
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Hi-index | 0.00 |
It is well-known that a naive algorithm can often be turned into an efficient program by applying appropriate semantics-preserving transformations. This technique has been used to derive programs to solve a variety of maximum-sum programs. One problem with this approach is that each problem variation requires a new set of transformations to be derived. An alternative approach to generation combines problem specifications with flexible algorithm theories to derive efficient algorithms. We show how this approach can be implemented in Haskell and applied to solve constraint satisfaction problems. We illustrate this technique by deriving programs for three varieties of maximum-weightsum problem. The derivations of the different programs are similar, and the resulting programs are asymptotically faster in practice than the programs created by transformation.