Hostname: page-component-77f85d65b8-6c7dr Total loading time: 0 Render date: 2026-03-29T21:56:38.556Z Has data issue: false hasContentIssue false

Domain generating functions for solving constraint satisfaction problems

Published online by Cambridge University Press:  10 August 2016

François Major
Affiliation:
Département d'informatique et de Recherche Opérationnelle, Université de Montréal, Canada
Guy Lapalme
Affiliation:
Département d'informatique et de Recherche Opérationnelle, Université de Montréal, Canada
Robert Cedergren
Affiliation:
Département d'informatique et de Recherche Opérationnelle, Université de Montréal, Canada
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the 'Save PDF' action button.

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.

Information

Type
Research Article
Copyright
Copyright © Cambridge University Press 1991
Submit a response

Discussions

No Discussions have been published for this article.