12#include <gtsam_unstable/discrete/Domain.h>
21 size_t cardinality0_, cardinality1_;
27 cardinality0_(key1.second),
28 cardinality1_(key2.second) {}
32 const std::string& s =
"",
33 const KeyFormatter& formatter = DefaultKeyFormatter)
const override {
34 std::cout << s <<
"BinaryAllDiff on " << formatter(
keys_[0]) <<
" and "
35 << formatter(
keys_[1]) << std::endl;
44 return (cardinality0_ == f.cardinality0_) &&
45 (cardinality1_ == f.cardinality1_);
51 return (
double)(values.at(
keys_[0]) != values.at(
keys_[1]));
59 std::vector<double> table;
60 for (
size_t i1 = 0; i1 < cardinality0_; i1++)
61 for (
size_t i2 = 0; i2 < cardinality1_; i2++) table.push_back(i1 != i2);
78 bool ensureArcConsistency(
Key j, Domains* domains)
const override {
79 throw std::runtime_error(
80 "BinaryAllDiff::ensureArcConsistency not implemented");
86 throw std::runtime_error(
"BinaryAllDiff::partiallyApply not implemented");
91 const Domains&)
const override {
92 throw std::runtime_error(
"BinaryAllDiff::partiallyApply not implemented");
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
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition Key.h:35
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:100
A discrete probabilistic factor.
Definition DecisionTreeFactor.h:45
Base class for discrete probabilistic factors The most general one is the derived DecisionTreeFactor.
Definition DiscreteFactor.h:38
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition DiscreteKey.h:39
A map from keys to values.
Definition DiscreteValues.h:34
const KeyVector & keys() const
Access the factor's involved variable keys.
Definition Factor.h:140
KeyVector keys_
The keys involved in this factor.
Definition Factor.h:85
bool equals(const DiscreteFactor &other, double tol) const override
equals
Definition BinaryAllDiff.h:39
DecisionTreeFactor operator*(const DecisionTreeFactor &f) const override
Multiply into a decisiontree.
Definition BinaryAllDiff.h:67
void print(const std::string &s="", const KeyFormatter &formatter=DefaultKeyFormatter) const override
print
Definition BinaryAllDiff.h:31
double operator()(const DiscreteValues &values) const override
Calculate value.
Definition BinaryAllDiff.h:50
DecisionTreeFactor toDecisionTreeFactor() const override
Convert into a decisiontree.
Definition BinaryAllDiff.h:55
Constraint::shared_ptr partiallyApply(const DiscreteValues &) const override
Partially apply known values.
Definition BinaryAllDiff.h:85
Constraint::shared_ptr partiallyApply(const Domains &) const override
Partially apply known values, domain version.
Definition BinaryAllDiff.h:90
BinaryAllDiff(const DiscreteKey &key1, const DiscreteKey &key2)
cardinality
Definition BinaryAllDiff.h:25
Constraint(Key j)
Construct unary constraint factor.
Definition Constraint.h:42