Extensional constraints
[Using integer variables and constraints]
Classes | |
class | Gecode::DFA |
Deterministic finite automaton (DFA). More... | |
class | Gecode::TupleSet |
Class represeting a set of tuples. More... | |
Functions | |
void | Gecode::extensional (Home home, const IntVarArgs &x, DFA d, IntPropLevel ipl=IPL_DEF) |
Post domain consistent propagator for extensional constraint described by a DFA. | |
void | Gecode::extensional (Home home, const BoolVarArgs &x, DFA d, IntPropLevel ipl=IPL_DEF) |
Post domain consistent propagator for extensional constraint described by a DFA. | |
void | Gecode::extensional (Home home, const IntVarArgs &x, const TupleSet &t, IntPropLevel ipl=IPL_DEF) |
Post propagator for . | |
void | Gecode::extensional (Home home, const BoolVarArgs &x, const TupleSet &t, IntPropLevel ipl=IPL_DEF) |
Post propagator for . |
Detailed Description
Extensional constraints support different ways of how the extensionally defined relation between the variables is defined. Examples include specification by a DFA or a table.
A DFA can be defined by a regular expression, for regular expressions see the module MiniModel.
Function Documentation
void Gecode::extensional | ( | Home | home, | |
const IntVarArgs & | x, | |||
DFA | d, | |||
IntPropLevel | ipl = IPL_DEF | |||
) |
Post domain consistent propagator for extensional constraint described by a DFA.
The elements of x must be a word of the language described by the DFA d.
Throws an exception of type Int::ArgumentSame, if x contains the same unassigned variable multiply. If shared occurences of variables are required, unshare should be used.
void Gecode::extensional | ( | Home | home, | |
const BoolVarArgs & | x, | |||
DFA | d, | |||
IntPropLevel | ipl = IPL_DEF | |||
) |
Post domain consistent propagator for extensional constraint described by a DFA.
The elements of x must be a word of the language described by the DFA d.
Throws an exception of type Int::ArgumentSame, if x contains the same unassigned variable multiply. If shared occurences of variables are required, unshare should be used.
void Gecode::extensional | ( | Home | home, | |
const IntVarArgs & | x, | |||
const TupleSet & | t, | |||
IntPropLevel | ipl = IPL_DEF | |||
) |
Post propagator for .
- Supports implementations optimized for speed (with propagation level ipl or-ed with IPL_SPEED, default) and memory consumption (with propagation level ipl or-ed with IPL_MEMORY).
- Supports domain consistency (ipl = IPL_DOM, default) only.
- Throws an exception of type Int::ArgumentSizeMismatch, if x and t are of different size.
- Throws an exception of type Int::NotYetFinalized, if the tuple set t has not been finalized.
- Warning:
- If the domains for the are not dense and have similar bounds, lots of memory will be wasted (memory consumption is in for the basic algorithm (epk = EPK_MEMORY) and additionally for the incremental algorithm (epk = EPK_SPEED).
void Gecode::extensional | ( | Home | home, | |
const BoolVarArgs & | x, | |||
const TupleSet & | t, | |||
IntPropLevel | ipl = IPL_DEF | |||
) |
Post propagator for .
- Supports implementations optimized for speed (with propagation level ipl or-ed with IPL_SPEED, default) and memory consumption (with propagation level ipl or-ed with IPL_MEMORY).
- Supports domain consistency (ipl = IPL_DOM, default) only.
- Throws an exception of type Int::ArgumentSizeMismatch, if x and t are of different size.
- Throws an exception of type Int::NotYetFinalized, if the tuple set t has not been finalized.