DiscreteFactor.h
Go to the documentation of this file.
1 /* ----------------------------------------------------------------------------
2 
3  * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4  * Atlanta, Georgia 30332-0415
5  * All Rights Reserved
6  * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7 
8  * See LICENSE for the license information
9 
10  * -------------------------------------------------------------------------- */
11 
19 #pragma once
20 
22 #include <gtsam/inference/Factor.h>
23 #include <gtsam/base/Testable.h>
24 
25 namespace gtsam {
26 
27 class DecisionTreeFactor;
28 class DiscreteConditional;
29 
34 class GTSAM_EXPORT DiscreteFactor: public Factor {
35 
36 public:
37 
38  // typedefs needed to play nice with gtsam
39  typedef DiscreteFactor This;
40  typedef boost::shared_ptr<DiscreteFactor> shared_ptr;
41  typedef Factor Base;
42 
54  typedef boost::shared_ptr<Values> sharedValues;
55 
56 public:
57 
60 
63 
66  template<typename CONTAINER>
67  DiscreteFactor(const CONTAINER& keys) : Base(keys) {}
68 
70  virtual ~DiscreteFactor() {
71  }
72 
76 
78  virtual bool equals(const DiscreteFactor& lf, double tol = 1e-9) const = 0;
79 
81  void print(
82  const std::string& s = "DiscreteFactor\n",
83  const KeyFormatter& formatter = DefaultKeyFormatter) const override {
85  }
86 
88  virtual bool empty() const { return size() == 0; }
89 
93 
95  virtual double operator()(const Values&) const = 0;
96 
98  virtual DecisionTreeFactor operator*(const DecisionTreeFactor&) const = 0;
99 
100  virtual DecisionTreeFactor toDecisionTreeFactor() const = 0;
101 
103 };
104 // DiscreteFactor
105 
106 // traits
107 template<> struct traits<DiscreteFactor> : public Testable<DiscreteFactor> {};
108 template<> struct traits<DiscreteFactor::Values> : public Testable<DiscreteFactor::Values> {};
109 
110 }// namespace gtsam
void print(const Matrix &A, const string &s, ostream &stream)
Definition: Matrix.cpp:155
Concept check for values that can be used in unit tests.
An assignment from labels to a discrete value index (size_t)
Point2 operator*(double s, const Point2 &p)
multiply with scalar
Definition: Point2.h:45
static const KeyFormatter DefaultKeyFormatter
Definition: Key.h:43
const KeyFormatter & formatter
DiscreteFactor This
This class.
Assignment< Key > Values
Scalar Scalar int size
Definition: benchVecAdd.cpp:17
void print(const std::string &s="DiscreteFactor\n", const KeyFormatter &formatter=DefaultKeyFormatter) const override
print
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
Array< double, 1, 3 > e(1./3., 0.5, 2.)
RealScalar s
boost::shared_ptr< DiscreteFactor > shared_ptr
shared_ptr to this class
traits
Definition: chartTesting.h:28
boost::shared_ptr< Values > sharedValues
virtual ~DiscreteFactor()
Virtual destructor.
Factor Base
Our base class.
virtual bool empty() const
DiscreteFactor(const CONTAINER &keys)
const G double tol
Definition: Group.h:83
const KeyVector keys
The base class for all factors.


gtsam
Author(s):
autogenerated on Sat May 8 2021 02:41:59