DiscreteLookupTable table for max-product. More...
#include <DiscreteLookupDAG.h>
Public Types | |
using | BaseConditional = Conditional< DecisionTreeFactor, This > |
using | shared_ptr = std::shared_ptr< This > |
using | This = DiscreteLookupTable |
Public Types inherited from gtsam::DiscreteConditional | |
typedef Conditional< BaseFactor, This > | BaseConditional |
Typedef to our conditional base class. More... | |
typedef DecisionTreeFactor | BaseFactor |
Typedef to our factor base class. More... | |
typedef std::shared_ptr< This > | shared_ptr |
shared_ptr to this class More... | |
typedef DiscreteConditional | This |
Typedef to this class. More... | |
using | Values = DiscreteValues |
backwards compatibility More... | |
Public Types inherited from gtsam::DecisionTreeFactor | |
typedef AlgebraicDecisionTree< Key > | ADT |
typedef DiscreteFactor | Base |
Typedef to base class. More... | |
typedef std::shared_ptr< DecisionTreeFactor > | shared_ptr |
typedef DecisionTreeFactor | This |
Public Types inherited from gtsam::DiscreteFactor | |
typedef Factor | Base |
Our base class. More... | |
typedef std::shared_ptr< DiscreteFactor > | shared_ptr |
shared_ptr to this class More... | |
typedef DiscreteFactor | This |
This class. More... | |
using | Values = DiscreteValues |
backwards compatibility More... | |
using | Names = DiscreteValues::Names |
Translation table from values to strings. More... | |
Public Types inherited from gtsam::Factor | |
typedef KeyVector::const_iterator | const_iterator |
Const iterator over keys. More... | |
typedef KeyVector::iterator | iterator |
Iterator over keys. More... | |
Public Types inherited from gtsam::AlgebraicDecisionTree< Key > | |
using | Base = DecisionTree< Key, double > |
Public Types inherited from gtsam::DecisionTree< Key, double > | |
using | Binary = std::function< double(const double &, const double &)> |
using | CompareFunc = std::function< bool(const double &, const double &)> |
using | LabelC = std::pair< Key, size_t > |
using | LabelFormatter = std::function< std::string(Key)> |
using | NodePtr = typename Node::Ptr |
using | Unary = std::function< double(const double &)> |
using | UnaryAssignment = std::function< double(const Assignment< Key > &, const double &)> |
using | ValueFormatter = std::function< std::string(double)> |
Public Types inherited from gtsam::Conditional< DecisionTreeFactor, DiscreteConditional > | |
typedef std::pair< typename DecisionTreeFactor ::const_iterator, typename DecisionTreeFactor ::const_iterator > | ConstFactorRange |
typedef ConstFactorRangeIterator | Frontals |
typedef ConstFactorRangeIterator | Parents |
Public Member Functions | |
size_t | argmax (const DiscreteValues &parentsValues) const |
return assignment for single frontal variable that maximizes value. More... | |
void | argmaxInPlace (DiscreteValues *parentsValues) const |
Calculate assignment for frontal variables that maximizes value. More... | |
DiscreteLookupTable (size_t nFrontals, const DiscreteKeys &keys, const ADT &potentials) | |
Construct a new Discrete Lookup Table object. More... | |
void | print (const std::string &s="Discrete Lookup Table: ", const KeyFormatter &formatter=DefaultKeyFormatter) const override |
GTSAM-style print. More... | |
Public Member Functions inherited from gtsam::DiscreteConditional | |
DiscreteConditional () | |
Default constructor needed for serialization. More... | |
DiscreteConditional (size_t nFrontals, const DecisionTreeFactor &f) | |
Construct from factor, taking the first nFrontals keys as frontals. More... | |
DiscreteConditional (size_t nFrontals, const DiscreteKeys &keys, const ADT &potentials) | |
DiscreteConditional (const Signature &signature) | |
DiscreteConditional (const DiscreteKey &key, const DiscreteKeys &parents, const Signature::Table &table) | |
DiscreteConditional (const DiscreteKey &key, const DiscreteKeys &parents, const std::vector< double > &table) | |
DiscreteConditional (const DiscreteKey &key, const DiscreteKeys &parents, const std::string &spec) | |
DiscreteConditional (const DiscreteKey &key, const std::string &spec) | |
No-parent specialization; can also use DiscreteDistribution. More... | |
DiscreteConditional (const DecisionTreeFactor &joint, const DecisionTreeFactor &marginal) | |
construct P(X|Y) = f(X,Y)/f(Y) from f(X,Y) and f(Y) Assumes but does not check that f(Y)=sum_X f(X,Y). More... | |
DiscreteConditional (const DecisionTreeFactor &joint, const DecisionTreeFactor &marginal, const Ordering &orderedKeys) | |
construct P(X|Y) = f(X,Y)/f(Y) from f(X,Y) and f(Y) Assumes but does not check that f(Y)=sum_X f(X,Y). Makes sure the keys are ordered as given. Does not check orderedKeys. More... | |
DiscreteConditional | operator* (const DiscreteConditional &other) const |
Combine two conditionals, yielding a new conditional with the union of the frontal keys, ordered by gtsam::Key. More... | |
DiscreteConditional | marginal (Key key) const |
bool | equals (const DiscreteFactor &other, double tol=1e-9) const override |
GTSAM-style equals. More... | |
double | logProbability (const DiscreteValues &x) const |
Log-probability is just -error(x). More... | |
void | printSignature (const std::string &s="Discrete Conditional: ", const KeyFormatter &formatter=DefaultKeyFormatter) const |
print index signature only More... | |
double | evaluate (const DiscreteValues &values) const |
Evaluate, just look up in AlgebraicDecisionTree. More... | |
shared_ptr | choose (const DiscreteValues &given) const |
< DiscreteValues version More... | |
DecisionTreeFactor::shared_ptr | likelihood (const DiscreteValues &frontalValues) const |
DecisionTreeFactor::shared_ptr | likelihood (size_t frontal) const |
size_t | sample (const DiscreteValues &parentsValues) const |
size_t | sample (size_t parent_value) const |
Single parent version. More... | |
size_t | sample () const |
Zero parent version. More... | |
size_t | argmax (const DiscreteValues &parentsValues=DiscreteValues()) const |
Return assignment for single frontal variable that maximizes value. More... | |
double | error (const DiscreteValues &values) const override |
Calculate error for DiscreteValues x , is -log(probability). More... | |
double | error (const HybridValues &values) const override |
void | sampleInPlace (DiscreteValues *parentsValues) const |
sample in place, stores result in partial solution More... | |
std::vector< DiscreteValues > | frontalAssignments () const |
Return all assignments for frontal variables. More... | |
std::vector< DiscreteValues > | allAssignments () const |
Return all assignments for frontal and parent variables. More... | |
std::string | markdown (const KeyFormatter &keyFormatter=DefaultKeyFormatter, const Names &names={}) const override |
Render as markdown table. More... | |
std::string | html (const KeyFormatter &keyFormatter=DefaultKeyFormatter, const Names &names={}) const override |
Render as html table. More... | |
double | evaluate (const HybridValues &x) const override |
double | logProbability (const HybridValues &x) const override |
< HybridValues version More... | |
double | negLogConstant () const override |
Public Member Functions inherited from gtsam::DecisionTreeFactor | |
DecisionTreeFactor () | |
DecisionTreeFactor (const DiscreteKeys &keys, const ADT &potentials) | |
DecisionTreeFactor (const DiscreteKeys &keys, const std::vector< double > &table) | |
Constructor from doubles. More... | |
DecisionTreeFactor (const DiscreteKeys &keys, const std::string &table) | |
Constructor from string. More... | |
template<class SOURCE > | |
DecisionTreeFactor (const DiscreteKey &key, SOURCE table) | |
Single-key specialization. More... | |
DecisionTreeFactor (const DiscreteKey &key, const std::vector< double > &row) | |
Single-key specialization, with vector of doubles. More... | |
DecisionTreeFactor (const DiscreteConditional &c) | |
DecisionTreeFactor | apply (ADT::Unary op) const |
DecisionTreeFactor | apply (ADT::UnaryAssignment op) const |
DecisionTreeFactor | apply (const DecisionTreeFactor &f, ADT::Binary op) const |
shared_ptr | combine (size_t nrFrontals, ADT::Binary op) const |
shared_ptr | combine (const Ordering &keys, ADT::Binary op) const |
std::vector< std::pair< DiscreteValues, double > > | enumerate () const |
Enumerate all values into a map from values to double. More... | |
std::vector< double > | probabilities () const |
Get all the probabilities in order of assignment values. More... | |
DecisionTreeFactor | prune (size_t maxNrAssignments) const |
Prune the decision tree of discrete variables. More... | |
void | dot (std::ostream &os, const KeyFormatter &keyFormatter=DefaultKeyFormatter, bool showZero=true) const |
void | dot (const std::string &name, const KeyFormatter &keyFormatter=DefaultKeyFormatter, bool showZero=true) const |
std::string | dot (const KeyFormatter &keyFormatter=DefaultKeyFormatter, bool showZero=true) const |
double | error (const HybridValues &values) const override |
double | evaluate (const Assignment< Key > &values) const |
double | operator() (const DiscreteValues &values) const override |
Evaluate probability distribution, sugar. More... | |
double | error (const DiscreteValues &values) const override |
Calculate error for DiscreteValues x , is -log(probability). More... | |
DecisionTreeFactor | operator* (const DecisionTreeFactor &f) const override |
multiply two factors More... | |
DecisionTreeFactor | operator/ (const DecisionTreeFactor &f) const |
divide by factor f (safely) More... | |
DecisionTreeFactor | toDecisionTreeFactor () const override |
Convert into a decision tree. More... | |
shared_ptr | sum (size_t nrFrontals) const |
Create new factor by summing all values with the same separator values. More... | |
shared_ptr | sum (const Ordering &keys) const |
Create new factor by summing all values with the same separator values. More... | |
shared_ptr | max (size_t nrFrontals) const |
Create new factor by maximizing over all values with the same separator. More... | |
shared_ptr | max (const Ordering &keys) const |
Create new factor by maximizing over all values with the same separator. More... | |
Public Member Functions inherited from gtsam::DiscreteFactor | |
DiscreteFactor () | |
template<typename CONTAINER > | |
DiscreteFactor (const CONTAINER &keys, const std::map< Key, size_t > cardinalities={}) | |
DiscreteKeys | discreteKeys () const |
Return all the discrete keys associated with this factor. More... | |
std::map< Key, size_t > | cardinalities () const |
size_t | cardinality (Key j) const |
double | error (const HybridValues &c) const override |
virtual AlgebraicDecisionTree< Key > | errorTree () const |
Compute error for each assignment and return as a tree. More... | |
Public Member Functions inherited from gtsam::Factor | |
virtual | ~Factor ()=default |
Default destructor. More... | |
bool | empty () const |
Whether the factor is empty (involves zero variables). More... | |
Key | front () const |
First key. More... | |
Key | back () const |
Last key. More... | |
const_iterator | find (Key key) const |
find More... | |
const KeyVector & | keys () const |
Access the factor's involved variable keys. More... | |
const_iterator | begin () const |
const_iterator | end () const |
size_t | size () const |
virtual void | printKeys (const std::string &s="Factor", const KeyFormatter &formatter=DefaultKeyFormatter) const |
print only keys More... | |
bool | equals (const This &other, double tol=1e-9) const |
check equality More... | |
KeyVector & | keys () |
iterator | begin () |
iterator | end () |
Public Member Functions inherited from gtsam::AlgebraicDecisionTree< Key > | |
AlgebraicDecisionTree (const AlgebraicDecisionTree< M > &other, const std::map< M, Key > &map) | |
AlgebraicDecisionTree (const Base &add) | |
AlgebraicDecisionTree (const DecisionTree< Key, X > &other, Func f) | |
Create from an arbitrary DecisionTree<L, X> by operating on it with a functional f . More... | |
AlgebraicDecisionTree (const Key &label, double y1, double y2) | |
AlgebraicDecisionTree (const std::vector< typename Base::LabelC > &labelCs, const std::string &table) | |
Create from keys and string table. More... | |
AlgebraicDecisionTree (const std::vector< typename Base::LabelC > &labelCs, const std::vector< double > &ys) | |
Create from keys with cardinalities and a vector table. More... | |
AlgebraicDecisionTree (const typename Base::LabelC &labelC, double y1, double y2) | |
Create a new leaf function splitting on a variable. More... | |
AlgebraicDecisionTree (double leaf=1.0) | |
AlgebraicDecisionTree (Iterator begin, Iterator end, const Key &label) | |
Create a range of decision trees, splitting on a single variable. More... | |
bool | equals (const AlgebraicDecisionTree &other, double tol=1e-9) const |
Equality method customized to value type double . More... | |
double | max () const |
Find the maximum values amongst all leaves. More... | |
double | min () const |
Find the minimum values amongst all leaves. More... | |
AlgebraicDecisionTree | normalize () const |
Helper method to perform normalization such that all leaves in the tree sum to 1. More... | |
AlgebraicDecisionTree | operator* (const AlgebraicDecisionTree &g) const |
AlgebraicDecisionTree | operator+ (const AlgebraicDecisionTree &g) const |
AlgebraicDecisionTree | operator- () const |
AlgebraicDecisionTree | operator- (const AlgebraicDecisionTree &g) const |
AlgebraicDecisionTree | operator/ (const AlgebraicDecisionTree &g) const |
void | print (const std::string &s="", const typename Base::LabelFormatter &labelFormatter=&DefaultFormatter) const |
print method customized to value type double . More... | |
double | sum () const |
Compute sum of all values. More... | |
AlgebraicDecisionTree | sum (const Key &label, size_t cardinality) const |
AlgebraicDecisionTree | sum (const typename Base::LabelC &labelC) const |
Public Member Functions inherited from gtsam::DecisionTree< Key, double > | |
DecisionTree () | |
DecisionTree (const double &y) | |
DecisionTree (const Key &label, const double &y1, const double &y2) | |
Create tree with 2 assignments y1 , y2 , splitting on variable label More... | |
DecisionTree (const LabelC &label, const double &y1, const double &y2) | |
DecisionTree (const std::vector< LabelC > &labelCs, const std::vector< double > &ys) | |
DecisionTree (const std::vector< LabelC > &labelCs, const std::string &table) | |
DecisionTree (Iterator begin, Iterator end, const Key &label) | |
DecisionTree (const Key &label, const DecisionTree &f0, const DecisionTree &f1) | |
DecisionTree (const Unary &op, DecisionTree &&other) noexcept | |
Move constructor for DecisionTree. Very efficient as does not allocate anything, just changes in-place. But other is consumed. More... | |
DecisionTree (const DecisionTree< Key, X > &other, Func Y_of_X) | |
Convert from a different value type. More... | |
DecisionTree (const DecisionTree< M, X > &other, const std::map< M, Key > &map, Func Y_of_X) | |
Convert from a different value type X to value type Y, also translate labels via map from type M to L. More... | |
void | print (const std::string &s, const LabelFormatter &labelFormatter, const ValueFormatter &valueFormatter) const |
GTSAM-style print. More... | |
bool | equals (const DecisionTree &other, const CompareFunc &compare=&DefaultCompare) const |
virtual | ~DecisionTree ()=default |
Make virtual. More... | |
bool | empty () const |
Check if tree is empty. More... | |
bool | operator== (const DecisionTree &q) const |
const double & | operator() (const Assignment< Key > &x) const |
void | visit (Func f) const |
Visit all leaves in depth-first fashion. More... | |
void | visitLeaf (Func f) const |
Visit all leaves in depth-first fashion. More... | |
void | visitWith (Func f) const |
Visit all leaves in depth-first fashion. More... | |
size_t | nrLeaves () const |
Return the number of leaves in the tree. More... | |
X | fold (Func f, X x0) const |
Fold a binary function over the tree, returning accumulator. More... | |
std::set< Key > | labels () const |
DecisionTree | apply (const Unary &op) const |
DecisionTree | apply (const UnaryAssignment &op) const |
Apply Unary operation "op" to f while also providing the corresponding assignment. More... | |
DecisionTree | apply (const DecisionTree &g, const Binary &op) const |
DecisionTree | choose (const Key &label, size_t index) const |
DecisionTree | combine (const Key &label, size_t cardinality, const Binary &op) const |
DecisionTree | combine (const LabelC &labelC, const Binary &op) const |
void | dot (std::ostream &os, const LabelFormatter &labelFormatter, const ValueFormatter &valueFormatter, bool showZero=true) const |
void | dot (const std::string &name, const LabelFormatter &labelFormatter, const ValueFormatter &valueFormatter, bool showZero=true) const |
std::string | dot (const LabelFormatter &labelFormatter, const ValueFormatter &valueFormatter, bool showZero=true) const |
std::pair< DecisionTree< Key, A >, DecisionTree< Key, B > > | split (std::function< std::pair< A, B >(const double &)> AB_of_Y) const |
Convert into two trees with value types A and B. More... | |
DecisionTree (const NodePtr &root) | |
Public Member Functions inherited from gtsam::Conditional< DecisionTreeFactor, DiscreteConditional > | |
void | print (const std::string &s="Conditional", const KeyFormatter &formatter=DefaultKeyFormatter) const |
bool | equals (const This &c, double tol=1e-9) const |
virtual | ~Conditional () |
size_t | nrFrontals () const |
size_t | nrParents () const |
Key | firstFrontalKey () const |
Frontals | frontals () const |
Parents | parents () const |
double | operator() (const HybridValues &x) const |
Evaluate probability density, sugar. More... | |
virtual double | negLogConstant () const |
All conditional types need to implement this as the negative log of the normalization constant to make it such that error>=0. More... | |
size_t & | nrFrontals () |
DecisionTreeFactor ::const_iterator | beginFrontals () const |
DecisionTreeFactor ::iterator | beginFrontals () |
DecisionTreeFactor ::const_iterator | endFrontals () const |
DecisionTreeFactor ::iterator | endFrontals () |
DecisionTreeFactor ::const_iterator | beginParents () const |
DecisionTreeFactor ::iterator | beginParents () |
DecisionTreeFactor ::const_iterator | endParents () const |
DecisionTreeFactor ::iterator | endParents () |
Additional Inherited Members | |
Static Public Member Functions inherited from gtsam::DecisionTreeFactor | |
static double | safe_div (const double &a, const double &b) |
Static Public Member Functions inherited from gtsam::DecisionTree< Key, double > | |
static NodePtr | compose (Iterator begin, Iterator end, const Key &label) |
Static Public Member Functions inherited from gtsam::Conditional< DecisionTreeFactor, DiscreteConditional > | |
static bool | CheckInvariants (const DiscreteConditional &conditional, const VALUES &x) |
Public Attributes inherited from gtsam::DecisionTree< Key, double > | |
NodePtr | root_ |
A DecisionTree just contains the root. TODO(dellaert): make protected. More... | |
Protected Member Functions inherited from gtsam::DiscreteConditional | |
DiscreteConditional::ADT | choose (const DiscreteValues &given, bool forceComplete) const |
Internal version of choose. More... | |
Protected Member Functions inherited from gtsam::Factor | |
Factor () | |
template<typename CONTAINER > | |
Factor (const CONTAINER &keys) | |
template<typename ITERATOR > | |
Factor (ITERATOR first, ITERATOR last) | |
Protected Member Functions inherited from gtsam::Conditional< DecisionTreeFactor, DiscreteConditional > | |
Conditional () | |
Conditional (size_t nrFrontals) | |
Static Protected Member Functions inherited from gtsam::Factor | |
template<typename CONTAINER > | |
static Factor | FromKeys (const CONTAINER &keys) |
template<typename ITERATOR > | |
static Factor | FromIterators (ITERATOR first, ITERATOR last) |
Static Protected Member Functions inherited from gtsam::DecisionTree< Key, double > | |
static NodePtr | build (It begin, It end, ValueIt beginY, ValueIt endY) |
static NodePtr | convertFrom (const typename DecisionTree< Key, X >::NodePtr &f, std::function< double(const X &)> Y_of_X) |
Convert from a DecisionTree<L, X> to DecisionTree<L, Y>. More... | |
static NodePtr | convertFrom (const typename DecisionTree< M, X >::NodePtr &f, std::function< Key(const M &)> L_of_M, std::function< double(const X &)> Y_of_X) |
Convert from a DecisionTree<M, X> to DecisionTree<L, Y>. More... | |
static NodePtr | create (It begin, It end, ValueIt beginY, ValueIt endY) |
static bool | DefaultCompare (const double &a, const double &b) |
Default method for comparison of two objects of type Y. More... | |
Protected Attributes inherited from gtsam::DiscreteFactor | |
std::map< Key, size_t > | cardinalities_ |
Map of Keys and their cardinalities. More... | |
Protected Attributes inherited from gtsam::Factor | |
KeyVector | keys_ |
The keys involved in this factor. More... | |
Protected Attributes inherited from gtsam::Conditional< DecisionTreeFactor, DiscreteConditional > | |
size_t | nrFrontals_ |
DiscreteLookupTable table for max-product.
Inherits from discrete conditional for convenience, but is not normalized. Is used in the max-product algorithm.
Definition at line 40 of file DiscreteLookupDAG.h.
Definition at line 44 of file DiscreteLookupDAG.h.
using gtsam::DiscreteLookupTable::shared_ptr = std::shared_ptr<This> |
Definition at line 43 of file DiscreteLookupDAG.h.
Definition at line 42 of file DiscreteLookupDAG.h.
|
inline |
Construct a new Discrete Lookup Table object.
nFrontals | number of frontal variables |
keys | a sorted list of gtsam::Keys |
potentials | the algebraic decision tree with lookup values |
Definition at line 53 of file DiscreteLookupDAG.h.
size_t gtsam::DiscreteLookupTable::argmax | ( | const DiscreteValues & | parentsValues | ) | const |
return assignment for single frontal variable that maximizes value.
parentsValues | Known assignments for the parents. |
Definition at line 82 of file DiscreteLookupDAG.cpp.
void gtsam::DiscreteLookupTable::argmaxInPlace | ( | DiscreteValues * | parentsValues | ) | const |
Calculate assignment for frontal variables that maximizes value.
(in/out) | parentsValues Known assignments for the parents. |
Definition at line 55 of file DiscreteLookupDAG.cpp.
|
overridevirtual |
GTSAM-style print.
Reimplemented from gtsam::DiscreteConditional.
Definition at line 34 of file DiscreteLookupDAG.cpp.