Classes | Public Types | Public Member Functions | Static Private Member Functions | List of all members
gtsam::AlgebraicDecisionTree< L > Class Template Reference

#include <AlgebraicDecisionTree.h>

Inheritance diagram for gtsam::AlgebraicDecisionTree< L >:
Inheritance graph
[legend]

Classes

struct  Ring
 

Public Types

using Base = DecisionTree< L, double >
 
- Public Types inherited from gtsam::DecisionTree< L, double >
using Binary = std::function< double(const double &, const double &)>
 
using CompareFunc = std::function< bool(const double &, const double &)>
 
using LabelC = std::pair< L, size_t >
 
using LabelFormatter = std::function< std::string(L)>
 
using NodePtr = typename Node::Ptr
 
using Unary = std::function< double(const double &)>
 
using UnaryAssignment = std::function< double(const Assignment< L > &, const double &)>
 
using ValueFormatter = std::function< std::string(double)>
 

Public Member Functions

template<typename M >
 AlgebraicDecisionTree (const AlgebraicDecisionTree< M > &other, const std::map< M, L > &map)
 
 AlgebraicDecisionTree (const Base &add)
 
template<typename X , typename Func >
 AlgebraicDecisionTree (const DecisionTree< L, X > &other, Func f)
 Create from an arbitrary DecisionTree<L, X> by operating on it with a functional f. More...
 
 AlgebraicDecisionTree (const L &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)
 
template<typename Iterator >
 AlgebraicDecisionTree (Iterator begin, Iterator end, const L &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 L &label, size_t cardinality) const
 
AlgebraicDecisionTree sum (const typename Base::LabelC &labelC) const
 
- Public Member Functions inherited from gtsam::DecisionTree< L, double >
 DecisionTree ()
 
 DecisionTree (const double &y)
 
 DecisionTree (const L &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 L &label)
 
 DecisionTree (const L &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< L, X > &other, Func Y_of_X)
 Convert from a different value type. More...
 
 DecisionTree (const DecisionTree< M, X > &other, const std::map< M, L > &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< L > &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< Llabels () 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 L &label, size_t index) const
 
DecisionTree combine (const L &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< L, A >, DecisionTree< L, 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)
 

Static Private Member Functions

static std::string DefaultFormatter (const L &x)
 Default method used by labelFormatter or valueFormatter when printing. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from gtsam::DecisionTree< L, double >
static NodePtr compose (Iterator begin, Iterator end, const L &label)
 
- Public Attributes inherited from gtsam::DecisionTree< L, double >
NodePtr root_
 A DecisionTree just contains the root. TODO(dellaert): make protected. More...
 
- Static Protected Member Functions inherited from gtsam::DecisionTree< L, double >
static NodePtr build (It begin, It end, ValueIt beginY, ValueIt endY)
 
static NodePtr convertFrom (const typename DecisionTree< L, 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< L(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...
 

Detailed Description

template<typename L>
class gtsam::AlgebraicDecisionTree< L >

An algebraic decision tree fixes the range of a DecisionTree to double. Just has some nice constructors and some syntactic sugar. TODO(dellaert): consider eliminating this class altogether?

Definition at line 41 of file AlgebraicDecisionTree.h.

Member Typedef Documentation

◆ Base

template<typename L >
using gtsam::AlgebraicDecisionTree< L >::Base = DecisionTree<L, double>

Definition at line 56 of file AlgebraicDecisionTree.h.

Constructor & Destructor Documentation

◆ AlgebraicDecisionTree() [1/9]

template<typename L >
gtsam::AlgebraicDecisionTree< L >::AlgebraicDecisionTree ( double  leaf = 1.0)
inline

Definition at line 78 of file AlgebraicDecisionTree.h.

◆ AlgebraicDecisionTree() [2/9]

template<typename L >
gtsam::AlgebraicDecisionTree< L >::AlgebraicDecisionTree ( const Base add)
inline

Definition at line 81 of file AlgebraicDecisionTree.h.

◆ AlgebraicDecisionTree() [3/9]

template<typename L >
gtsam::AlgebraicDecisionTree< L >::AlgebraicDecisionTree ( const L label,
double  y1,
double  y2 
)
inline

Create a new leaf function splitting on a variable

Definition at line 84 of file AlgebraicDecisionTree.h.

◆ AlgebraicDecisionTree() [4/9]

template<typename L >
gtsam::AlgebraicDecisionTree< L >::AlgebraicDecisionTree ( const typename Base::LabelC labelC,
double  y1,
double  y2 
)
inline

Create a new leaf function splitting on a variable.

Parameters
labelCThe label with cardinality 2
y1The value for the first key
y2The value for the second key

Example:

std::pair<string, size_t> A {"a", 2};
AlgebraicDecisionTree<string> a(A, 0.6, 0.4);

Definition at line 100 of file AlgebraicDecisionTree.h.

◆ AlgebraicDecisionTree() [5/9]

template<typename L >
gtsam::AlgebraicDecisionTree< L >::AlgebraicDecisionTree ( const std::vector< typename Base::LabelC > &  labelCs,
const std::vector< double > &  ys 
)
inline

Create from keys with cardinalities and a vector table.

Parameters
labelCsThe keys, with cardinalities, given as pairs
ysThe vector table

Example with three keys, A, B, and C, with cardinalities 2, 3, and 2, respectively, and a vector table of size 12:

DiscreteKey A(0, 2), B(1, 3), C(2, 2);
const vector<double> cpt{
1.0 / 3, 2.0 / 3, 3.0 / 7, 4.0 / 7, 5.0 / 11, 6.0 / 11, //
1.0 / 9, 8.0 / 9, 3.0 / 6, 3.0 / 6, 5.0 / 10, 5.0 / 10};
AlgebraicDecisionTree<Key> expected(A & B & C, cpt);

The table is given in the following order: A=0, B=0, C=0 A=0, B=0, C=1 ... A=1, B=1, C=1 Hence, the first line in the table is for A==0, and the second for A==1. In each line, the first two entries are for B==0, the next two for B==1, and the last two for B==2. Each pair is for a C value of 0 and 1.

Definition at line 129 of file AlgebraicDecisionTree.h.

◆ AlgebraicDecisionTree() [6/9]

template<typename L >
gtsam::AlgebraicDecisionTree< L >::AlgebraicDecisionTree ( const std::vector< typename Base::LabelC > &  labelCs,
const std::string &  table 
)
inline

Create from keys and string table.

Parameters
labelCsThe keys, with cardinalities, given as pairs
tableThe string table, given as a string of doubles.
Note
Table needs to be in same order as the vector table in the other constructor.

Definition at line 144 of file AlgebraicDecisionTree.h.

◆ AlgebraicDecisionTree() [7/9]

template<typename L >
template<typename Iterator >
gtsam::AlgebraicDecisionTree< L >::AlgebraicDecisionTree ( Iterator  begin,
Iterator  end,
const L label 
)
inline

Create a range of decision trees, splitting on a single variable.

Parameters
beginIterator to beginning of a range of decision trees
endIterator to end of a range of decision trees
labelThe label to split on

Definition at line 165 of file AlgebraicDecisionTree.h.

◆ AlgebraicDecisionTree() [8/9]

template<typename L >
template<typename M >
gtsam::AlgebraicDecisionTree< L >::AlgebraicDecisionTree ( const AlgebraicDecisionTree< M > &  other,
const std::map< M, L > &  map 
)
inline

Convert labels from type M to type L.

Parameters
otherThe AlgebraicDecisionTree with label type M to convert.
mapMap from label type M to label type L.

Definition at line 177 of file AlgebraicDecisionTree.h.

◆ AlgebraicDecisionTree() [9/9]

template<typename L >
template<typename X , typename Func >
gtsam::AlgebraicDecisionTree< L >::AlgebraicDecisionTree ( const DecisionTree< L, X > &  other,
Func  f 
)
inline

Create from an arbitrary DecisionTree<L, X> by operating on it with a functional f.

Template Parameters
XThe type of the leaf of the original DecisionTree
FuncType signature of functional f.
Parameters
otherThe original DecisionTree from which the AlgbraicDecisionTree is constructed.
fFunctional used to operate on the leaves of the input DecisionTree.

Definition at line 199 of file AlgebraicDecisionTree.h.

Member Function Documentation

◆ DefaultFormatter()

template<typename L >
static std::string gtsam::AlgebraicDecisionTree< L >::DefaultFormatter ( const L x)
inlinestaticprivate

Default method used by labelFormatter or valueFormatter when printing.

Parameters
xThe value passed to format.
Returns
std::string

Definition at line 49 of file AlgebraicDecisionTree.h.

◆ equals()

template<typename L >
bool gtsam::AlgebraicDecisionTree< L >::equals ( const AlgebraicDecisionTree< L > &  other,
double  tol = 1e-9 
) const
inline

Equality method customized to value type double.

Definition at line 283 of file AlgebraicDecisionTree.h.

◆ max()

template<typename L >
double gtsam::AlgebraicDecisionTree< L >::max ( ) const
inline

Find the maximum values amongst all leaves.

Definition at line 252 of file AlgebraicDecisionTree.h.

◆ min()

template<typename L >
double gtsam::AlgebraicDecisionTree< L >::min ( ) const
inline

Find the minimum values amongst all leaves.

Definition at line 244 of file AlgebraicDecisionTree.h.

◆ normalize()

template<typename L >
AlgebraicDecisionTree gtsam::AlgebraicDecisionTree< L >::normalize ( ) const
inline

Helper method to perform normalization such that all leaves in the tree sum to 1.

Returns
AlgebraicDecisionTree

Definition at line 241 of file AlgebraicDecisionTree.h.

◆ operator*()

template<typename L >
AlgebraicDecisionTree gtsam::AlgebraicDecisionTree< L >::operator* ( const AlgebraicDecisionTree< L > &  g) const
inline

product

Definition at line 218 of file AlgebraicDecisionTree.h.

◆ operator+()

template<typename L >
AlgebraicDecisionTree gtsam::AlgebraicDecisionTree< L >::operator+ ( const AlgebraicDecisionTree< L > &  g) const
inline

sum

Definition at line 203 of file AlgebraicDecisionTree.h.

◆ operator-() [1/2]

template<typename L >
AlgebraicDecisionTree gtsam::AlgebraicDecisionTree< L >::operator- ( ) const
inline

negation

Definition at line 208 of file AlgebraicDecisionTree.h.

◆ operator-() [2/2]

template<typename L >
AlgebraicDecisionTree gtsam::AlgebraicDecisionTree< L >::operator- ( const AlgebraicDecisionTree< L > &  g) const
inline

subtract

Definition at line 213 of file AlgebraicDecisionTree.h.

◆ operator/()

template<typename L >
AlgebraicDecisionTree gtsam::AlgebraicDecisionTree< L >::operator/ ( const AlgebraicDecisionTree< L > &  g) const
inline

division

Definition at line 223 of file AlgebraicDecisionTree.h.

◆ print()

template<typename L >
void gtsam::AlgebraicDecisionTree< L >::print ( const std::string &  s = "",
const typename Base::LabelFormatter labelFormatter = &DefaultFormatter 
) const
inline

print method customized to value type double.

Definition at line 271 of file AlgebraicDecisionTree.h.

◆ sum() [1/3]

template<typename L >
double gtsam::AlgebraicDecisionTree< L >::sum ( ) const
inline

Compute sum of all values.

Definition at line 228 of file AlgebraicDecisionTree.h.

◆ sum() [2/3]

template<typename L >
AlgebraicDecisionTree gtsam::AlgebraicDecisionTree< L >::sum ( const L label,
size_t  cardinality 
) const
inline

sum out variable

Definition at line 261 of file AlgebraicDecisionTree.h.

◆ sum() [3/3]

template<typename L >
AlgebraicDecisionTree gtsam::AlgebraicDecisionTree< L >::sum ( const typename Base::LabelC labelC) const
inline

sum out variable

Definition at line 266 of file AlgebraicDecisionTree.h.


The documentation for this class was generated from the following file:
B
Definition: test_numpy_dtypes.cpp:299
A
Definition: test_numpy_dtypes.cpp:298
cholesky::expected
Matrix expected
Definition: testMatrix.cpp:971
a
ArrayXXi a
Definition: Array_initializer_list_23_cxx11.cpp:1
C
Matrix< Scalar, Dynamic, Dynamic > C
Definition: bench_gemm.cpp:50
gtsam::DiscreteKey
std::pair< Key, size_t > DiscreteKey
Definition: DiscreteKey.h:38


gtsam
Author(s):
autogenerated on Fri Nov 1 2024 03:51:00