36 class DiscreteConditional;
50 typedef std::shared_ptr<DecisionTreeFactor> shared_ptr;
54 std::map<Key, size_t> cardinalities_;
68 const std::vector<double>& table);
74 template <
class SOURCE>
94 const std::string& s =
"DecisionTreeFactor:\n",
95 const KeyFormatter& formatter = DefaultKeyFormatter)
const override;
104 return ADT::operator()(values);
109 return ADT::operator()(values);
117 return apply(f, ADT::Ring::mul);
120 static double safe_div(
const double& a,
const double& b);
122 size_t cardinality(
Key j)
const {
return cardinalities_.at(j); }
126 return apply(f, safe_div);
133 shared_ptr
sum(
size_t nrFrontals)
const {
134 return combine(nrFrontals, ADT::Ring::add);
139 return combine(keys, ADT::Ring::add);
143 shared_ptr
max(
size_t nrFrontals)
const {
144 return combine(nrFrontals, ADT::Ring::max);
149 return combine(keys, ADT::Ring::max);
169 shared_ptr combine(
size_t nrFrontals, ADT::Binary op)
const;
177 shared_ptr combine(
const Ordering& keys, ADT::Binary op)
const;
180 std::vector<std::pair<DiscreteValues, double>> enumerate()
const;
210 void dot(std::ostream& os,
212 bool showZero =
true)
const;
215 void dot(
const std::string& name,
217 bool showZero =
true)
const;
220 std::string
dot(
const KeyFormatter& keyFormatter = DefaultKeyFormatter,
221 bool showZero =
true)
const;
231 const Names& names = {})
const override;
241 const Names& names = {})
const override;
251 double error(
const HybridValues& values)
const override;
256 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 258 friend class boost::serialization::access;
259 template <
class ARCHIVE>
260 void serialize(ARCHIVE& ar,
const unsigned int ) {
261 ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base);
262 ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(ADT);
263 ar& BOOST_SERIALIZATION_NVP(cardinalities_);
Definition: HybridValues.h:38
DecisionTreeFactor operator*(const DecisionTreeFactor &f) const override
multiply two factors
Definition: DecisionTreeFactor.h:116
const MATRIX::ConstRowXpr row(const MATRIX &A, size_t j)
Definition: Matrix.h:221
std::string markdown(const DiscreteValues &values, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DiscreteValues::Names &names={})
Free version of markdown.
double dot(const V1 &a, const V2 &b)
Definition: Vector.h:195
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
DecisionTreeFactor operator/(const DecisionTreeFactor &f) const
divide by factor f (safely)
Definition: DecisionTreeFactor.h:125
Definition: Testable.h:152
DecisionTree< L, Y > apply(const DecisionTree< L, Y > &f, const typename DecisionTree< L, Y >::Unary &op)
Apply unary operator op to DecisionTree f.
Definition: DecisionTree.h:398
Definition: DecisionTreeFactor.h:44
shared_ptr max(size_t nrFrontals) const
Create new factor by maximizing over all values with the same separator.
Definition: DecisionTreeFactor.h:143
Variable ordering for the elimination algorithm.
Definition: Ordering.h:37
DecisionTreeFactor(const DiscreteKey &key, SOURCE table)
Single-key specialization.
Definition: DecisionTreeFactor.h:75
Algebraic Decision Trees.
Definition: Testable.h:112
DecisionTreeFactor toDecisionTreeFactor() const override
Convert into a decisiontree.
Definition: DecisionTreeFactor.h:130
double evaluate(const DiscreteValues &values) const
Definition: DecisionTreeFactor.h:103
double operator()(const DiscreteValues &values) const override
Evaluate probability distribution, sugar.
Definition: DecisionTreeFactor.h:108
Definition: AlgebraicDecisionTree.h:39
GTSAM_EXPORT void print(const Matrix &A, const std::string &s, std::ostream &stream)
DiscreteFactor Base
Typedef to base class.
Definition: DecisionTreeFactor.h:49
Definition: DiscreteValues.h:34
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
DiscreteValues::Names Names
Translation table from values to strings.
Definition: DiscreteFactor.h:102
Definition: chartTesting.h:28
specialized key for discrete variables
Definition: DiscreteFactor.h:38
std::string html(const DiscreteValues &values, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DiscreteValues::Names &names={})
Free version of html.
std::pair< Key, size_t > DiscreteKey
Definition: DiscreteKey.h:38
shared_ptr sum(size_t nrFrontals) const
Create new factor by summing all values with the same separator values.
Definition: DecisionTreeFactor.h:133
shared_ptr max(const Ordering &keys) const
Create new factor by maximizing over all values with the same separator.
Definition: DecisionTreeFactor.h:148
shared_ptr sum(const Ordering &keys) const
Create new factor by summing all values with the same separator values.
Definition: DecisionTreeFactor.h:138
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
DecisionTreeFactor(const DiscreteKey &key, const std::vector< double > &row)
Single-key specialization, with vector of doubles.
Definition: DecisionTreeFactor.h:79
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition: DiscreteKey.h:41
Definition: DiscreteConditional.h:37