21#include <gtsam/inference/Conditional-inst.h>
25#include <boost/make_shared.hpp>
26#include <boost/shared_ptr.hpp>
40 public Conditional<DecisionTreeFactor, DiscreteConditional> {
65 const ADT& potentials);
78 const Signature::Table& table)
91 const std::string& spec)
102 DiscreteConditional(
const DecisionTreeFactor& joint,
103 const DecisionTreeFactor& marginal);
110 DiscreteConditional(
const DecisionTreeFactor& joint,
111 const DecisionTreeFactor& marginal,
112 const Ordering& orderedKeys);
129 DiscreteConditional operator*(
const DiscreteConditional& other)
const;
132 DiscreteConditional marginal(Key key)
const;
140 const std::string& s =
"Discrete Conditional: ",
141 const KeyFormatter& formatter = DefaultKeyFormatter)
const override;
144 bool equals(
const DiscreteFactor& other,
double tol = 1e-9)
const override;
157 const std::string& s =
"Discrete Conditional: ",
158 const KeyFormatter& formatter = DefaultKeyFormatter)
const {
164 return ADT::operator()(values);
167 using DecisionTreeFactor::error;
168 using DecisionTreeFactor::operator();
186 DecisionTreeFactor::shared_ptr likelihood(
190 DecisionTreeFactor::shared_ptr likelihood(
size_t frontal)
const;
200 size_t sample(
size_t parent_value)
const;
203 size_t sample()
const;
209 size_t argmax()
const;
219 std::vector<DiscreteValues> frontalAssignments()
const;
222 std::vector<DiscreteValues> allAssignments()
const;
230 const Names& names = {})
const override;
233 std::string html(
const KeyFormatter& keyFormatter = DefaultKeyFormatter,
234 const Names& names = {})
const override;
247 using BaseConditional::operator();
266#ifdef GTSAM_ALLOW_DEPRECATED_SINCE_V42
269 size_t GTSAM_DEPRECATED solve(
const DiscreteValues& parentsValues)
const;
270 void GTSAM_DEPRECATED solveInPlace(
DiscreteValues* parentsValues)
const;
277 bool forceComplete)
const;
281 friend class boost::serialization::access;
282 template <
class Archive>
283 void serialize(Archive& ar,
const unsigned int ) {
284 ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(
BaseFactor);
signatures for conditional densities
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
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
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
A helper that implements the traits interface for GTSAM types.
Definition Testable.h:151
A discrete probabilistic factor.
Definition DecisionTreeFactor.h:45
Discrete Conditional Density Derives from DecisionTreeFactor.
Definition DiscreteConditional.h:40
DiscreteConditional(const DiscreteKey &key, const std::string &spec)
No-parent specialization; can also use DiscreteDistribution.
Definition DiscreteConditional.h:95
DiscreteConditional(const DiscreteKey &key, const DiscreteKeys &parents, const std::string &spec)
Construct from key, parents, and a string specifying the conditional probability table (CPT) in 00 01...
Definition DiscreteConditional.h:90
double evaluate(const DiscreteValues &values) const
Evaluate, just look up in AlgebraicDecisonTree.
Definition DiscreteConditional.h:163
boost::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition DiscreteConditional.h:44
DiscreteConditional(const DiscreteKey &key, const DiscreteKeys &parents, const Signature::Table &table)
Construct from key, parents, and a Signature::Table specifying the conditional probability table (CPT...
Definition DiscreteConditional.h:77
Conditional< BaseFactor, This > BaseConditional
Typedef to our conditional base class.
Definition DiscreteConditional.h:47
double logProbability(const HybridValues &x) const override
< HybridValues version
Definition DiscreteConditional.h:253
DiscreteConditional This
Typedef to this class.
Definition DiscreteConditional.h:43
DecisionTreeFactor BaseFactor
Typedef to our factor base class.
Definition DiscreteConditional.h:45
DiscreteConditional()
Default constructor needed for serialization.
Definition DiscreteConditional.h:55
double logProbability(const DiscreteValues &x) const
Log-probability is just -error(x).
Definition DiscreteConditional.h:151
void printSignature(const std::string &s="Discrete Conditional: ", const KeyFormatter &formatter=DefaultKeyFormatter) const
print index signature only
Definition DiscreteConditional.h:156
double logNormalizationConstant() const override
logNormalizationConstant K is just zero, such that logProbability(x) = log(evaluate(x)) = - error(x) ...
Definition DiscreteConditional.h:262
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
Signature for a discrete conditional density, used to construct conditionals.
Definition Signature.h:54
HybridValues represents a collection of DiscreteValues and VectorValues.
Definition HybridValues.h:38
Definition Conditional.h:64