21 std::set<size_t> values_;
28 :
Constraint(dkey.first), cardinality_(dkey.second) {
29 for (
size_t v = 0; v < cardinality_; v++) values_.insert(v);
35 :
Constraint(dkey.first), cardinality_(dkey.second) {
46 void insert(
size_t value) { values_.insert(value); }
49 void erase(
size_t value) { values_.erase(value); }
51 size_t nrValues()
const {
return values_.size(); }
53 bool isSingleton()
const {
return nrValues() == 1; }
55 size_t firstValue()
const {
return *values_.begin(); }
58 void print(
const std::string& s =
"",
const KeyFormatter& formatter =
59 DefaultKeyFormatter)
const override;
63 if (!
dynamic_cast<const Domain*
>(&other))
66 const Domain& f(
static_cast<const Domain&
>(other));
67 return (cardinality_ == f.cardinality_) && (values_ == f.values_);
73 std::string base1Str()
const;
76 bool contains(
size_t value)
const {
return values_.count(value) > 0; }
82 DecisionTreeFactor toDecisionTreeFactor()
const override;
85 DecisionTreeFactor operator*(
const DecisionTreeFactor& f)
const override;
94 bool ensureArcConsistency(Key j, Domains* domains)
const override;
103 boost::optional<Domain> checkAllDiff(
const KeyVector keys,
104 const Domains& domains)
const;
107 Constraint::shared_ptr partiallyApply(
const DiscreteValues& values)
const override;
110 Constraint::shared_ptr partiallyApply(
const Domains& domains)
const override;
specialized key for discrete variables
std::pair< Key, size_t > DiscreteKey
Key type for discrete variables.
Definition DiscreteKey.h:36
Global functions in a separate testing namespace.
Definition chartTesting.h:28
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:156
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:100
Base class for discrete probabilistic factors The most general one is the derived DecisionTreeFactor.
Definition DiscreteFactor.h:38
KeyVector keys_
The keys involved in this factor.
Definition Factor.h:85
Base class for constraint factors Derived classes include SingleValue, BinaryAllDiff,...
Definition Constraint.h:36
Constraint(Key j)
Construct unary constraint factor.
Definition Constraint.h:42
The Domain class represents a constraint that restricts the possible values a particular variable,...
Definition Domain.h:19
void erase(size_t value)
Erase a value, non const :-(.
Definition Domain.h:49
bool equals(const DiscreteFactor &other, double tol) const override
equals
Definition Domain.h:62
boost::shared_ptr< Domain > shared_ptr
allowed values
Definition Domain.h:24
Key key() const
The one key.
Definition Domain.h:40
void insert(size_t value)
Insert a value, non const :-(.
Definition Domain.h:46
The Factor::error simply extracts the.