EFC
EFC is a CSP (constraint satisfaction problem) solver. It is
versatile enough that it has been used to implement more than 50
different backtracking algorithms and a few different CSP domains
have already been modeled using it.
News
EFC version 1.1.0 has been released. Download it here, view the changes online here and some high level documentation here.
Features
The solver supports the following features:
- Modular definition of algorithms. A great number of
algorithms can be implemented by the combination of different
modules for constraint propagation and intelligent
backtracking. The following modules have already been implemented:
- Constraint propagation
- Forward Checking
- Maintaining Arc Consistency
- Backtracking
Moreover, with cooperating modules, we can add these features
to any combination produced from the above:
- Nogood recording, which can be unrestricted, length
bounded or relevance bounded.
-
Support for generalized nogood discovery (good fun!, check
this
paper for more), including discovering 1UIP nogoods.
- Post processing of nogoods using Ulrich Junker's
ReplayXPlain algorithm to discover minimal nogoods at the
leafs.
- Various models in the following domains have been implemented
- Golomb rulers (discovery and proof of minimality)
- Planning, using Peter van Beek's
CPlan.
- Crossword puzzles, again using Peter van Beek's
code. Unfortunately, it is not publically available, so
you'll have to mail him if you want to use that.
- Pluggable constraint propagators.
- Flexible dynamic variable ordering (DVO)
implementation. Both deterministic and non-deterministic DVO's
are possible, with most major known ones already implemented
(dom+deg, dom/deg, lexicographic.)
- Detailed logging. Several statistics are kept, including
nodes and branches visited, consistency checks performed and cpu
time spent. Moreover, additional information can be dumped to
disk during or after the search.
- Designed for experimentation. Even though the code can be
used as a library as part of a larger program, there are
features that allow the user to just create a
model/algorithm/DVO and be able to perform a large number of
experiments with it.
Using EFC
You can browse the README file online.
Download
The following versions are available for download:
-
EFC 1.1.0, the most recent
version. Download this if you have no reason to use an older
version.
-
EFC 1.0.1, the first official
release of EFC.
If you have any questions, comments or bug reports, please drop
me an email.
Keep in mind that EFC is distributed under the terms of the General Public License. This should be
sufficient for most uses, but if you need something more specific,
feel free to contact the authors.
Authors
EFC was originally written by Fahiem Bacchus and
later picked up by George Katsirelos.
Back to my home page.
George Katsirelos
Last modified: Sat Jun 11 11:13:55 EDT 2005