Generated on Fri Mar 20 15:56:31 2015 for Gecode by doxygen 1.6.3

set.hh File Reference

(Revision: 14116)

#include <gecode/kernel.hh>
#include <gecode/int.hh>
#include <gecode/iter.hh>
#include <gecode/support/auto-link.hpp>
#include <gecode/set/exception.hpp>
#include <gecode/set/limits.hpp>
#include <gecode/set/var-imp.hpp>
#include <gecode/set/view.hpp>
#include <gecode/set/array-traits.hpp>
#include <gecode/set/array.hpp>
#include <gecode/set/branch/traits.hpp>
#include <gecode/set/branch/afc.hpp>
#include <gecode/set/branch/activity.hpp>
#include <gecode/set/branch/var.hpp>
#include <gecode/set/branch/val.hpp>
#include <gecode/set/branch/assign.hpp>

Go to the source code of this file.

Classes

class  Gecode::SetVar
 Set variables More...
class  Gecode::SetVarGlbRanges
 Iterator for the greatest lower bound ranges of a set variable. More...
class  Gecode::SetVarLubRanges
 Iterator for the least upper bound ranges of a set variable. More...
class  Gecode::SetVarUnknownRanges
 Iterator for the unknown ranges of a set variable. More...
class  Gecode::SetVarGlbValues
 Iterator for the values in the greatest lower bound of a set variable. More...
class  Gecode::SetVarLubValues
 Iterator for the values in the least upper bound of a set variable. More...
class  Gecode::SetVarUnknownValues
 Iterator for the values in the unknown set of a set variable. More...
class  Gecode::SetVarArgs
 Passing set variables. More...
class  Gecode::SetVarArray
 Set variable array More...
class  Gecode::SetAFC
 Recording AFC information for set variables. More...
class  Gecode::SetActivity
 Recording activities for set variables. More...
class  Gecode::SetVarBranch
 Which variable to select for branching. More...
class  Gecode::SetValBranch
 Which values to select for branching first. More...
class  Gecode::SetAssign
 Which value to select for assignment. More...

Namespaces

namespace  Gecode::Set
 

Finite integer sets.


namespace  Gecode
 

Gecode toplevel namespace


namespace  Gecode::Set::Limits
 

Numerical limits for set variables.


Defines

#define GECODE_SET_EXPORT
#define GECODE_LIBRARY_NAME   "Set"

Typedefs

typedef bool(* Gecode::SetBranchFilter )(const Space &home, SetVar x, int i)
 Branch filter function type for set variables.
typedef double(* Gecode::SetBranchMerit )(const Space &home, SetVar x, int i)
 Branch merit function type for set variables.
typedef int(* Gecode::SetBranchVal )(const Space &home, SetVar x, int i)
 Branch value function type for set variables.
typedef void(* Gecode::SetBranchCommit )(Space &home, unsigned int a, SetVar x, int i, int n)
 Branch commit function type for set variables.
typedef void(* Gecode::SetVarValPrint )(const Space &home, const BrancherHandle &bh, unsigned int a, SetVar x, int i, const int &n, std::ostream &o)
 Function type for printing branching alternatives for set variables.

Enumerations

enum  Gecode::SetRelType {
  Gecode::SRT_EQ, Gecode::SRT_NQ, Gecode::SRT_SUB, Gecode::SRT_SUP,
  Gecode::SRT_DISJ, Gecode::SRT_CMPL, Gecode::SRT_LQ, Gecode::SRT_LE,
  Gecode::SRT_GQ, Gecode::SRT_GR
}
 

Common relation types for sets.

More...
enum  Gecode::SetOpType { Gecode::SOT_UNION, Gecode::SOT_DUNION, Gecode::SOT_INTER, Gecode::SOT_MINUS }
 

Common operations for sets.

More...

Functions

void Gecode::Set::Limits::check (int n, const char *l)
 Check whether integer n is in range, otherwise throw overflow exception with information l.
void Gecode::Set::Limits::check (unsigned int n, const char *l)
 Check whether unsigned int n is in range for cardinality, otherwise throw overflow exception with information l.
void Gecode::Set::Limits::check (const IntSet &s, const char *l)
 Check whether minimum and maximum of IntSet s is in range, otherwise throw overflow exception with information l.
void Gecode::dom (Home home, SetVar x, SetRelType r, int i)
 Propagates $ x \sim_r \{i\}$.
void Gecode::dom (Home home, const SetVarArgs &x, SetRelType r, int i)
 Propagates $ x_i \sim_r \{i\}$ for all $0\leq i<|x|$.
void Gecode::dom (Home home, SetVar x, SetRelType r, int i, int j)
 Propagates $ x \sim_r \{i,\dots,j\}$.
void Gecode::dom (Home home, const SetVarArgs &x, SetRelType r, int i, int j)
 Propagates $ x \sim_r \{i,\dots,j\}$ for all $0\leq i<|x|$.
void Gecode::dom (Home home, SetVar x, SetRelType r, const IntSet &s)
 Propagates $ x \sim_r s$.
void Gecode::dom (Home home, const SetVarArgs &x, SetRelType r, const IntSet &s)
 Propagates $ x \sim_r s$ for all $0\leq i<|x|$.
void Gecode::cardinality (Home home, SetVar x, unsigned int i, unsigned int j)
 Propagates $ i \leq |s| \leq j $.
void Gecode::cardinality (Home home, const SetVarArgs &x, unsigned int i, unsigned int j)
 Propagates $ i \leq |s| \leq j $ for all $0\leq i<|x|$.
void Gecode::dom (Home home, SetVar x, SetRelType rt, int i, Reify r)
 Post propagator for $ (x \sim_{rt} \{i\}) \equiv r $.
void Gecode::dom (Home home, SetVar x, SetRelType rt, int i, int j, Reify r)
 Post propagator for $ (x \sim_{rt} \{i,\dots,j\}) \equiv r $.
void Gecode::dom (Home home, SetVar x, SetRelType rt, const IntSet &s, Reify r)
 Post propagator for $ (x \sim_{rt} s) \equiv r $.
void Gecode::dom (Home home, SetVar x, SetVar d)
 Constrain domain of x according to domain of d.
void Gecode::dom (Home home, const SetVarArgs &x, const SetVarArgs &d)
 Constrain domain of $ x_i $ according to domain of $ d_i $ for all $0\leq i<|x|$.
void Gecode::rel (Home home, SetVar x, SetRelType r, SetVar y)
 Post propagator for $ x \sim_r y$.
void Gecode::rel (Home home, SetVar x, SetRelType rt, SetVar y, Reify r)
 Post propagator for $ (x \sim_{rt} y) \equiv r$.
void Gecode::rel (Home home, SetVar s, SetRelType r, IntVar x)
 Post propagator for $ s \sim_r \{x\}$.
void Gecode::rel (Home home, IntVar x, SetRelType r, SetVar s)
 Post propagator for $ \{x\} \sim_r s$.
void Gecode::rel (Home home, SetVar s, SetRelType rt, IntVar x, Reify r)
 Post propagator for $ (s \sim_{rt} \{x\}) \equiv r$.
void Gecode::rel (Home home, IntVar x, SetRelType rt, SetVar s, Reify r)
 Post propagator for $ (\{x\} \sim_{rt} s) \equiv r $.
void Gecode::rel (Home home, SetVar s, IntRelType r, IntVar x)
 Post propagator for $|s|\geq 1 \land \forall i\in s:\ i \sim_r x$.
void Gecode::rel (Home home, IntVar x, IntRelType r, SetVar s)
 Post propagator for $|s|\geq 1 \land \forall i\in s:\ x \sim_r i$.
void Gecode::rel (Home home, SetVar x, SetOpType op, SetVar y, SetRelType r, SetVar z)
 Post propagator for $ (x \diamond_{\mathit{op}} y) \sim_r z $.
void Gecode::rel (Home home, SetOpType op, const SetVarArgs &x, SetVar y)
 Post propagator for $ y = \diamond_{\mathit{op}} x$.
void Gecode::rel (Home home, SetOpType op, const SetVarArgs &x, const IntSet &z, SetVar y)
 Post propagator for $ y = \diamond_{\mathit{op}} x \diamond_{\mathit{op}} z$.
void Gecode::rel (Home home, SetOpType op, const IntVarArgs &x, const IntSet &z, SetVar y)
 Post propagator for $ y = \diamond_{\mathit{op}} x \diamond_{\mathit{op}} z$.
void Gecode::rel (Home home, SetOpType op, const IntVarArgs &x, SetVar y)
 Post propagator for $ y = \diamond_{\mathit{op}} x$.
void Gecode::rel (Home home, const IntSet &x, SetOpType op, SetVar y, SetRelType r, SetVar z)
 Post propagator for $ (x \diamond_{\mathit{op}} y) \sim_r z $.
void Gecode::rel (Home home, SetVar x, SetOpType op, const IntSet &y, SetRelType r, SetVar z)
 Post propagator for $ (x \diamond_{\mathit{op}} y) \sim_r z $.
void Gecode::rel (Home home, SetVar x, SetOpType op, SetVar y, SetRelType r, const IntSet &z)
 Post propagator for $ (x \diamond_{\mathit{op}} y) \sim_r z $.
void Gecode::rel (Home home, const IntSet &x, SetOpType op, SetVar y, SetRelType r, const IntSet &z)
 Post propagator for $ (x \diamond_{\mathit{op}} y) \sim_r z $.
void Gecode::rel (Home home, SetVar x, SetOpType op, const IntSet &y, SetRelType r, const IntSet &z)
 Post propagator for $ (x \diamond_{\mathit{op}} y) \sim_r z $.
void Gecode::convex (Home home, SetVar x)
 Post propagator that propagates that x is convex.
void Gecode::convex (Home home, SetVar x, SetVar y)
 Post propagator that propagates that y is the convex hull of x.
void Gecode::sequence (Home home, const SetVarArgs &x)
 Post propagator for $\forall 0\leq i< |x|-1 : \max(x_i)<\min(x_{i+1})$.
void Gecode::sequence (Home home, const SetVarArgs &y, SetVar x)
 Post propagator for $\forall 0\leq i< |x|-1 : \max(x_i)<\min(x_{i+1})$ and $ x = \bigcup_{i\in\{0,\dots,n-1\}} y_i $.
void Gecode::atmostOne (Home home, const SetVarArgs &x, unsigned int c)
 Post propagator for $\forall 0\leq i\leq |x| : |x_i|=c$ and $\forall 0\leq i<j\leq |x| : |x_i\cap x_j|\leq 1$.
void Gecode::min (Home home, SetVar s, IntVar x)
 Post propagator that propagates that x is the minimal element of s, and that s is not empty.
void Gecode::notMin (Home home, SetVar s, IntVar x)
 Post propagator that propagates that x is not the minimal element of s.
void Gecode::min (Home home, SetVar s, IntVar x, Reify r)
 Post reified propagator for b iff x is the minimal element of s.
void Gecode::max (Home home, SetVar s, IntVar x)
 Post propagator that propagates that x is the maximal element of s, and that s is not empty.
void Gecode::notMax (Home home, SetVar s, IntVar x)
 Post propagator that propagates that x is not the maximal element of s.
void Gecode::max (Home home, SetVar s, IntVar x, Reify r)
 Post reified propagator for b iff x is the maximal element of s.
void Gecode::cardinality (Home home, SetVar s, IntVar x)
 Post propagator for $ |s|=x $.
void Gecode::weights (Home home, IntSharedArray elements, IntSharedArray weights, SetVar x, IntVar y)
 Post propagator for $y = \mathrm{weight}(x)$.
void Gecode::channel (Home home, const IntVarArgs &x, const SetVarArgs &y)
 Post propagator for $x_i=j \Leftrightarrow i\in y_j$.
void Gecode::channelSorted (Home home, const IntVarArgs &x, SetVar y)
 Post propagator for $\{x_0,\dots,x_{n-1}\}=y$ and $x_i<x_{i+1}$.
void Gecode::channel (Home home, const BoolVarArgs &x, SetVar y)
 Post propagator for $x_i=1 \Leftrightarrow i\in y$.
void Gecode::channel (Home home, const SetVarArgs &x, const SetVarArgs &y)
 Post propagator for $j\in x_i \Leftrightarrow i\in y_j$.
void Gecode::precede (Home home, const SetVarArgs &x, int s, int t)
 Post propagator that s precedes t in x.
void Gecode::precede (Home home, const SetVarArgs &x, const IntArgs &c)
 Post propagator that successive values in c precede each other in x.
void Gecode::element (Home home, SetOpType op, const SetVarArgs &x, SetVar y, SetVar z, const IntSet &u=IntSet(Set::Limits::min, Set::Limits::max))
 Post propagator for $ z=\diamond_{\mathit{op}}\langle x_0,\dots,x_{n-1}\rangle[y] $.
void Gecode::element (Home home, SetOpType op, const IntVarArgs &x, SetVar y, SetVar z, const IntSet &u=IntSet(Set::Limits::min, Set::Limits::max))
 Post propagator for $ z=\diamond_{\mathit{op}}\langle \{x_0\},\dots,\{x_{n-1}\}\rangle[y] $.
void Gecode::element (Home home, SetOpType op, const IntSetArgs &x, SetVar y, SetVar z, const IntSet &u=IntSet(Set::Limits::min, Set::Limits::max))
 Post propagator for $ z=\diamond_{\mathit{op}}\langle x_0,\dots,x_{n-1}\rangle[y] $.
void Gecode::element (Home home, SetOpType op, const IntArgs &x, SetVar y, SetVar z, const IntSet &u=IntSet(Set::Limits::min, Set::Limits::max))
 Post propagator for $ z=\diamond_{\mathit{op}}\langle \{x_0\},\dots,\{x_{n-1}\}\rangle[y] $.
void Gecode::element (Home home, const SetVarArgs &x, IntVar y, SetVar z)
 Post propagator for $ z=\langle x_0,\dots,x_{n-1}\rangle[y] $.
void Gecode::element (Home home, const IntSetArgs &s, IntVar y, SetVar z)
 Post propagator for $ z=\langle s_0,\dots,s_{n-1}\rangle[y] $.
void Gecode::element (Home home, const IntSetArgs &a, IntVar x, int w, IntVar y, int h, SetVar z)
 Post propagator for $ a_{x+w\cdot y}=z$.
void Gecode::element (Home home, const SetVarArgs &a, IntVar x, int w, IntVar y, int h, SetVar z)
 Post propagator for $ a_{x+w\cdot y}=z$.
void Gecode::wait (Home home, SetVar x, void(*c)(Space &home))
 Execute c when x becomes assigned.
void Gecode::wait (Home home, const SetVarArgs &x, void(*c)(Space &home))
 Execute c when all variables in x become assigned.
SetVarBranch Gecode::SET_VAR_NONE (void)
 Select first unassigned variable.
SetVarBranch Gecode::SET_VAR_RND (Rnd r)
 Select random variable (uniform distribution, for tie breaking).
SetVarBranch Gecode::SET_VAR_MERIT_MIN (SetBranchMerit bm, BranchTbl tbl=NULL)
 Select variable with least merit according to branch merit function bm.
SetVarBranch Gecode::SET_VAR_MERIT_MAX (SetBranchMerit bm, BranchTbl tbl=NULL)
 Select variable with highest merit according to branch merit function bm.
SetVarBranch Gecode::SET_VAR_DEGREE_MIN (BranchTbl tbl=NULL)
 Select variable with smallest degree.
SetVarBranch Gecode::SET_VAR_DEGREE_MAX (BranchTbl tbl=NULL)
 Select variable with largest degree.
SetVarBranch Gecode::SET_VAR_AFC_MIN (double d=1.0, BranchTbl tbl=NULL)
 Select variable with smallest accumulated failure count with decay factor d.
SetVarBranch Gecode::SET_VAR_AFC_MIN (SetAFC a, BranchTbl tbl=NULL)
 Select variable with smallest accumulated failure count.
SetVarBranch Gecode::SET_VAR_AFC_MAX (double d=1.0, BranchTbl tbl=NULL)
 Select variable with largest accumulated failure count with decay factor d.
SetVarBranch Gecode::SET_VAR_AFC_MAX (SetAFC a, BranchTbl tbl=NULL)
 Select variable with largest accumulated failure count.
SetVarBranch Gecode::SET_VAR_ACTIVITY_MIN (double d=1.0, BranchTbl tbl=NULL)
 Select variable with lowest activity with decay factor d.
SetVarBranch Gecode::SET_VAR_ACTIVITY_MIN (SetActivity a, BranchTbl tbl=NULL)
 Select variable with lowest activity.
SetVarBranch Gecode::SET_VAR_ACTIVITY_MAX (double d=1.0, BranchTbl tbl=NULL)
 Select variable with highest activity with decay factor d.
SetVarBranch Gecode::SET_VAR_ACTIVITY_MAX (SetActivity a, BranchTbl tbl=NULL)
 Select variable with highest activity.
SetVarBranch Gecode::SET_VAR_MIN_MIN (BranchTbl tbl=NULL)
 Select variable with smallest minimum unknown element.
SetVarBranch Gecode::SET_VAR_MIN_MAX (BranchTbl tbl=NULL)
 Select variable with largest minimum unknown element.
SetVarBranch Gecode::SET_VAR_MAX_MIN (BranchTbl tbl=NULL)
 Select variable with smallest maximum unknown element.
SetVarBranch Gecode::SET_VAR_MAX_MAX (BranchTbl tbl=NULL)
 Select variable with largest maximum unknown element.
SetVarBranch Gecode::SET_VAR_SIZE_MIN (BranchTbl tbl=NULL)
 Select variable with smallest unknown set.
SetVarBranch Gecode::SET_VAR_SIZE_MAX (BranchTbl tbl=NULL)
 Select variable with largest unknown set.
SetVarBranch Gecode::SET_VAR_DEGREE_SIZE_MIN (BranchTbl tbl=NULL)
 Select variable with smallest degree divided by domain size.
SetVarBranch Gecode::SET_VAR_DEGREE_SIZE_MAX (BranchTbl tbl=NULL)
 Select variable with largest degree divided by domain size.
SetVarBranch Gecode::SET_VAR_AFC_SIZE_MIN (double d=1.0, BranchTbl tbl=NULL)
 Select variable with smallest accumulated failure count divided by domain size with decay factor d.
SetVarBranch Gecode::SET_VAR_AFC_SIZE_MIN (SetAFC a, BranchTbl tbl=NULL)
 Select variable with smallest accumulated failure count divided by domain size.
SetVarBranch Gecode::SET_VAR_AFC_SIZE_MAX (double d=1.0, BranchTbl tbl=NULL)
 Select variable with largest accumulated failure count divided by domain size with decay factor d.
SetVarBranch Gecode::SET_VAR_AFC_SIZE_MAX (SetAFC a, BranchTbl tbl=NULL)
 Select variable with largest accumulated failure count divided by domain size.
SetVarBranch Gecode::SET_VAR_ACTIVITY_SIZE_MIN (double d=1.0, BranchTbl tbl=NULL)
 Select variable with smallest activity divided by domain size with decay factor d.
SetVarBranch Gecode::SET_VAR_ACTIVITY_SIZE_MIN (SetActivity a, BranchTbl tbl=NULL)
 Select variable with smallest activity divided by domain size.
SetVarBranch Gecode::SET_VAR_ACTIVITY_SIZE_MAX (double d=1.0, BranchTbl tbl=NULL)
 Select variable with largest activity divided by domain size with decay factor d.
SetVarBranch Gecode::SET_VAR_ACTIVITY_SIZE_MAX (SetActivity a, BranchTbl tbl=NULL)
 Select variable with largest activity divided by domain size.
SetValBranch Gecode::SET_VAL_MIN_INC (void)
 Include smallest element.
SetValBranch Gecode::SET_VAL_MIN_EXC (void)
 Exclude smallest element.
SetValBranch Gecode::SET_VAL_MED_INC (void)
 Include median element (rounding downwards).
SetValBranch Gecode::SET_VAL_MED_EXC (void)
 Exclude median element (rounding downwards).
SetValBranch Gecode::SET_VAL_MAX_INC (void)
 Include largest element.
SetValBranch Gecode::SET_VAL_MAX_EXC (void)
 Exclude largest element.
SetValBranch Gecode::SET_VAL_RND_INC (Rnd r)
 Include random element.
SetValBranch Gecode::SET_VAL_RND_EXC (Rnd r)
 Exclude random element.
SetValBranch Gecode::SET_VAL (SetBranchVal v, SetBranchCommit c=NULL)
 Select value as defined by the value function v and commit function c.
SetAssign Gecode::SET_ASSIGN_MIN_INC (void)
 Include smallest element.
SetAssign Gecode::SET_ASSIGN_MIN_EXC (void)
 Exclude smallest element.
SetAssign Gecode::SET_ASSIGN_MED_INC (void)
 Include median element (rounding downwards).
SetAssign Gecode::SET_ASSIGN_MED_EXC (void)
 Exclude median element (rounding downwards).
SetAssign Gecode::SET_ASSIGN_MAX_INC (void)
 Include largest element.
SetAssign Gecode::SET_ASSIGN_MAX_EXC (void)
 Exclude largest element.
SetAssign Gecode::SET_ASSIGN_RND_INC (Rnd r)
 Include random element.
SetAssign Gecode::SET_ASSIGN_RND_EXC (Rnd r)
 Exclude random element.
SetAssign Gecode::SET_ASSIGN (SetBranchVal v, SetBranchCommit c=NULL)
 Select value as defined by the value function v and commit function c.
BrancherHandle Gecode::branch (Home home, const SetVarArgs &x, SetVarBranch vars, SetValBranch vals, SetBranchFilter bf=NULL, SetVarValPrint vvp=NULL)
 Branch over x with variable selection vars and value selection vals.
BrancherHandle Gecode::branch (Home home, const SetVarArgs &x, TieBreak< SetVarBranch > vars, SetValBranch vals, SetBranchFilter bf=NULL, SetVarValPrint vvp=NULL)
 Branch over x with tie-breaking variable selection vars and value selection vals.
BrancherHandle Gecode::branch (Home home, SetVar x, SetValBranch vals, SetVarValPrint vvp=NULL)
 Branch over x with value selection vals.
BrancherHandle Gecode::assign (Home home, const SetVarArgs &x, SetAssign vals, SetBranchFilter bf=NULL, SetVarValPrint vvp=NULL)
 Assign all x with value selection vals.
BrancherHandle Gecode::assign (Home home, SetVar x, SetAssign vals, SetVarValPrint vvp=NULL)
 Assign x with value selection vals.
SymmetryHandle Gecode::VariableSymmetry (const SetVarArgs &x)
 Variables in x are interchangeable.
SymmetryHandle Gecode::VariableSequenceSymmetry (const SetVarArgs &x, int ss)
 Variable sequences in x of size ss are interchangeable.
BrancherHandle Gecode::branch (Home home, const SetVarArgs &x, SetVarBranch vars, SetValBranch vals, const Symmetries &syms, SetBranchFilter bf=NULL, SetVarValPrint vvp=NULL)
 Branch over x with variable selection vars and value selection vals with symmetry breaking.
BrancherHandle Gecode::branch (Home home, const SetVarArgs &x, TieBreak< SetVarBranch > vars, SetValBranch vals, const Symmetries &syms, SetBranchFilter bf=NULL, SetVarValPrint vvp=NULL)
 Branch over x with tie-breaking variable selection vars and value selection vals with symmetry breaking.

Variables

const int Gecode::Set::Limits::max = (Gecode::Int::Limits::max / 2) - 1
 Largest allowed integer in integer set.
const int Gecode::Set::Limits::min = -max
 Smallest allowed integer in integer set.
const unsigned int Gecode::Set::Limits::card = max-min+1
 Maximum cardinality of an integer set.

Define Documentation

#define GECODE_SET_EXPORT

Definition at line 69 of file set.hh.

#define GECODE_LIBRARY_NAME   "Set"

Definition at line 76 of file set.hh.