|
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 |
|
| 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< L > | 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 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 NodePtr | compose (Iterator begin, Iterator end, const L &label) |
|
NodePtr | root_ |
| A DecisionTree just contains the root. TODO(dellaert): make protected. More...
|
|
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...
|
|
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.
Create from keys with cardinalities and a vector table.
- Parameters
-
labelCs | The keys, with cardinalities, given as pairs |
ys | The vector table |
Example with three keys, A, B, and C, with cardinalities 2, 3, and 2, respectively, and a vector table of size 12:
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};
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 109 of file AlgebraicDecisionTree.h.