27#include <boost/shared_ptr.hpp>
36 class DiscreteConditional;
50 typedef boost::shared_ptr<DecisionTreeFactor> shared_ptr;
54 std::map<Key, size_t> cardinalities_;
86 const std::vector<double>& table);
109 template <
class SOURCE>
129 const std::string& s =
"DecisionTreeFactor:\n",
130 const KeyFormatter& formatter = DefaultKeyFormatter)
const override;
139 return ADT::operator()(values);
144 return ADT::operator()(values);
152 return apply(f, ADT::Ring::mul);
155 static double safe_div(
const double& a,
const double& b);
157 size_t cardinality(
Key j)
const {
return cardinalities_.at(j); }
161 return apply(f, safe_div);
168 shared_ptr
sum(
size_t nrFrontals)
const {
169 return combine(nrFrontals, ADT::Ring::add);
174 return combine(keys, ADT::Ring::add);
178 shared_ptr
max(
size_t nrFrontals)
const {
179 return combine(nrFrontals, ADT::Ring::max);
184 return combine(keys, ADT::Ring::max);
204 shared_ptr combine(
size_t nrFrontals, ADT::Binary op)
const;
212 shared_ptr combine(
const Ordering& keys, ADT::Binary op)
const;
215 std::vector<std::pair<DiscreteValues, double>> enumerate()
const;
245 void dot(std::ostream& os,
247 bool showZero =
true)
const;
250 void dot(
const std::string& name,
252 bool showZero =
true)
const;
255 std::string
dot(
const KeyFormatter& keyFormatter = DefaultKeyFormatter,
256 bool showZero =
true)
const;
266 const Names& names = {})
const override;
275 std::string html(
const KeyFormatter& keyFormatter = DefaultKeyFormatter,
276 const Names& names = {})
const override;
286 double error(
const HybridValues& values)
const override;
292 friend class boost::serialization::access;
293 template <
class ARCHIVE>
294 void serialize(ARCHIVE& ar,
const unsigned int ) {
295 ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(
Base);
296 ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(
ADT);
297 ar& BOOST_SERIALIZATION_NVP(cardinalities_);
specialized key for discrete variables
Algebraic Decision Trees.
Variable ordering for the elimination algorithm.
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
const MATRIX::ConstRowXpr row(const MATRIX &A, size_t j)
Extracts a row view from a matrix that avoids a copy.
Definition Matrix.h:222
string markdown(const DiscreteValues &values, const KeyFormatter &keyFormatter, const DiscreteValues::Names &names)
Free version of markdown.
Definition DiscreteValues.cpp:129
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:156
DecisionTree< L, Y > apply(const DecisionTree< L, Y > &f, const typename DecisionTree< L, Y >::Unary &op)
free versions of apply
Definition DecisionTree.h:413
double dot(const V1 &a, const V2 &b)
Dot product.
Definition Vector.h:195
std::uint64_t Key
Integer nonlinear key type.
Definition types.h:100
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
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition concepts.h:30
Template to create a binary predicate.
Definition Testable.h:111
A helper that implements the traits interface for GTSAM types.
Definition Testable.h:151
An algebraic decision tree fixes the range of a DecisionTree to double.
Definition AlgebraicDecisionTree.h:38
A discrete probabilistic factor.
Definition DecisionTreeFactor.h:45
shared_ptr sum(const Ordering &keys) const
Create new factor by summing all values with the same separator values.
Definition DecisionTreeFactor.h:173
double operator()(const DiscreteValues &values) const override
Evaluate probability density, sugar.
Definition DecisionTreeFactor.h:143
DecisionTreeFactor operator*(const DecisionTreeFactor &f) const override
multiply two factors
Definition DecisionTreeFactor.h:151
shared_ptr max(size_t nrFrontals) const
Create new factor by maximizing over all values with the same separator.
Definition DecisionTreeFactor.h:178
shared_ptr max(const Ordering &keys) const
Create new factor by maximizing over all values with the same separator.
Definition DecisionTreeFactor.h:183
double evaluate(const DiscreteValues &values) const
Calculate probability for given values x, is just look up in AlgebraicDecisionTree.
Definition DecisionTreeFactor.h:138
DiscreteFactor Base
Typedef to base class.
Definition DecisionTreeFactor.h:49
shared_ptr sum(size_t nrFrontals) const
Create new factor by summing all values with the same separator values.
Definition DecisionTreeFactor.h:168
DecisionTreeFactor(const DiscreteKey &key, SOURCE table)
Single-key specialization.
Definition DecisionTreeFactor.h:110
DecisionTreeFactor toDecisionTreeFactor() const override
Convert into a decisiontree.
Definition DecisionTreeFactor.h:165
DecisionTreeFactor operator/(const DecisionTreeFactor &f) const
divide by factor f (safely)
Definition DecisionTreeFactor.h:160
DecisionTreeFactor(const DiscreteKey &key, const std::vector< double > &row)
Single-key specialization, with vector of doubles.
Definition DecisionTreeFactor.h:114
Discrete Conditional Density Derives from DecisionTreeFactor.
Definition DiscreteConditional.h:40
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