Domain generating functions for solving constraint satisfaction problems
- 1 April 1991
- journal article
- research article
- Published by Cambridge University Press (CUP) in Journal of Functional Programming
- Vol. 1 (2), 213-227
- https://doi.org/10.1017/s0956796800020050
Abstract
This paper presents an application of functional programming: searching a domain for elements which satisfy certain constraints. We give a very general formulation of the problem and describe ‘generate and test’, ‘backtracking’ and ‘forward checking’ algorithms. We then introduce the concept of domain generating functions to capture a common optimization during the search process: using partial solutions to reduce the size of the search space. We compare the efficiency of the original algorithms and those using domain generating functions first with the ‘classical’ n-queens example, and then with a problem having larger domains to search which was inspired by an application in macromolecular structure determination. Using algorithms coded in Miranda, Haskell and Common Lisp, we show that a high order (lazy) functional language is a useful and efficient tool for prototyping search methods in large complex domains.Keywords
This publication has 7 references indexed in Scilit:
- Protein conformational predictionTrends in Biochemical Sciences, 1989
- The Chalmers Lazy-ML CompilerThe Computer Journal, 1989
- FUS: a system to simulate conformational changes in biological macromoleculesBioinformatics, 1988
- Trying to Crack the Second Half of the Genetic CodeScience, 1986
- Increasing tree search efficiency for constraint satisfaction problemsArtificial Intelligence, 1980
- Transfer RNA: Molecular Structure, Sequence, and PropertiesAnnual Review of Biochemistry, 1976
- Estimating the Efficiency of Backtrack ProgramsMathematics of Computation, 1975