TableDistribution.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 
18 #pragma once
19 
23 
24 #include <memory>
25 #include <string>
26 #include <vector>
27 
28 namespace gtsam {
29 
39 class GTSAM_EXPORT TableDistribution : public DiscreteConditional {
40  private:
42 
44 
45  public:
46  // typedefs needed to play nice with gtsam
48  typedef std::shared_ptr<This> shared_ptr;
49  typedef DiscreteConditional
51 
53 
56 
59 
62 
67  const std::vector<double>& potentials);
68 
73  const std::vector<double>& potentials)
74  : TableDistribution(DiscreteKeys(key), potentials) {}
75 
79  TableDistribution(const DiscreteKeys& keys, const std::string& potentials);
80 
84  TableDistribution(const DiscreteKey& key, const std::string& potentials)
85  : TableDistribution(DiscreteKeys(key), potentials) {}
86 
90 
92  void print(
93  const std::string& s = "Table Distribution: ",
94  const KeyFormatter& formatter = DefaultKeyFormatter) const override;
95 
97  bool equals(const DiscreteFactor& other, double tol = 1e-9) const override;
98 
102 
104  TableFactor table() const { return table_; }
105 
106  using BaseConditional::evaluate; // HybridValues version
107 
109  virtual double evaluate(const Assignment<Key>& values) const override {
110  return table_.evaluate(values);
111  }
112 
114  DiscreteFactor::shared_ptr sum(size_t nrFrontals) const override;
115 
117  DiscreteFactor::shared_ptr sum(const Ordering& keys) const override;
118 
120  double max() const override { return table_.max(); }
121 
123  DiscreteFactor::shared_ptr max(size_t nrFrontals) const override;
124 
126  DiscreteFactor::shared_ptr max(const Ordering& keys) const override;
127 
128 
130  DiscreteFactor::shared_ptr operator*(double s) const override;
131 
134  const DiscreteFactor::shared_ptr& f) const override;
135 
141  DiscreteValues argmax() const;
142 
148  virtual size_t sample(const DiscreteValues& parentsValues) const override;
149 
153 
155  virtual void prune(size_t maxNrAssignments) override;
156 
159  return table_.toDecisionTreeFactor();
160  }
161 
163  uint64_t nrValues() const override { return table_.sparseTable().nonZeros(); }
164 
166 
167  private:
168 #if GTSAM_ENABLE_BOOST_SERIALIZATION
169 
170  friend class boost::serialization::access;
171  template <class Archive>
172  void serialize(Archive& ar, const unsigned int /*version*/) {
173  ar& BOOST_SERIALIZATION_BASE_OBJECT_NVP(BaseConditional);
174  ar& BOOST_SERIALIZATION_NVP(table_);
175  }
176 #endif
177 };
178 // TableDistribution
179 
180 // traits
181 template <>
182 struct traits<TableDistribution> : public Testable<TableDistribution> {};
183 
184 } // namespace gtsam
gtsam::TableDistribution::This
TableDistribution This
Typedef to this class.
Definition: TableDistribution.h:47
gtsam::TableFactor
Definition: TableFactor.h:54
gtsam::DecisionTreeFactor
Definition: DecisionTreeFactor.h:45
s
RealScalar s
Definition: level1_cplx_impl.h:126
e
Array< double, 1, 3 > e(1./3., 0.5, 2.)
keys
const KeyVector keys
Definition: testRegularImplicitSchurFactor.cpp:40
gtsam::TableDistribution::table_
TableFactor table_
Definition: TableDistribution.h:41
gtsam::TableDistribution::evaluate
virtual double evaluate(const Assignment< Key > &values) const override
Evaluate the conditional given the values.
Definition: TableDistribution.h:109
gtsam::TableDistribution::SparseIt
Eigen::SparseVector< double >::InnerIterator SparseIt
Definition: TableDistribution.h:43
formatter
const KeyFormatter & formatter
Definition: treeTraversal-inst.h:204
different_sigmas::values
HybridValues values
Definition: testHybridBayesNet.cpp:247
gtsam::DiscreteKeys
DiscreteKeys is a set of keys that can be assembled using the & operator.
Definition: DiscreteKey.h:41
DiscreteConditional.h
Eigen::SparseCompressedBase::InnerIterator
Definition: SparseCompressedBase.h:158
gtsam::DefaultKeyFormatter
KeyFormatter DefaultKeyFormatter
Assign default key formatter.
Definition: Key.cpp:30
gtsam::operator*
Point2 operator*(double s, const Point2 &p)
multiply with scalar
Definition: Point2.h:52
gtsam::print
void print(const Matrix &A, const string &s, ostream &stream)
Definition: Matrix.cpp:145
gtsam::TableDistribution::table
TableFactor table() const
Return the underlying TableFactor.
Definition: TableDistribution.h:104
Eigen::SparseVector::nonZeros
Index nonZeros() const
Definition: SparseVector.h:140
gtsam::TableDistribution
Definition: TableDistribution.h:39
gtsam::TableDistribution::TableDistribution
TableDistribution()
Default constructor needed for serialization.
Definition: TableDistribution.h:58
gtsam::KeyFormatter
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
gtsam::TableFactor::max
double max() const override
Find the maximum value in the factor.
Definition: TableFactor.cpp:403
gtsam::TableFactor::sparseTable
Eigen::SparseVector< double > sparseTable() const
Getter for the underlying sparse vector.
Definition: TableFactor.h:166
gtsam::TableDistribution::TableDistribution
TableDistribution(const DiscreteKey &key, const std::string &potentials)
Definition: TableDistribution.h:84
gtsam::Assignment< Key >
TableFactor.h
gtsam::TableDistribution::toDecisionTreeFactor
DecisionTreeFactor toDecisionTreeFactor() const override
Get a DecisionTreeFactor representation.
Definition: TableDistribution.h:158
gtsam::equals
Definition: Testable.h:112
key
const gtsam::Symbol key('X', 0)
tree::f
Point2(* f)(const Point3 &, OptionalJacobian< 2, 3 >)
Definition: testExpression.cpp:218
gtsam::TableDistribution::TableDistribution
TableDistribution(const DiscreteKey &key, const std::vector< double > &potentials)
Definition: TableDistribution.h:72
gtsam::TableDistribution::shared_ptr
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: TableDistribution.h:48
gtsam::DiscreteConditional
Definition: DiscreteConditional.h:37
gtsam
traits
Definition: SFMdata.h:40
gtsam::Testable
Definition: Testable.h:152
gtsam::DiscreteFactor::shared_ptr
std::shared_ptr< DiscreteFactor > shared_ptr
shared_ptr to this class
Definition: DiscreteFactor.h:45
gtsam::traits
Definition: Group.h:36
operator/
EIGEN_DEVICE_FUNC const EIGEN_STRONG_INLINE CwiseBinaryOp< internal::scalar_quotient_op< Scalar, typename OtherDerived::Scalar >, const Derived, const OtherDerived > operator/(const EIGEN_CURRENT_STORAGE_BASE_CLASS< OtherDerived > &other) const
Definition: ArrayCwiseBinaryOps.h:21
gtsam::DiscreteValues
Definition: DiscreteValues.h:34
gtsam::DiscreteKey
std::pair< Key, size_t > DiscreteKey
Definition: DiscreteKey.h:38
gtsam::TableDistribution::max
double max() const override
Find the maximum value in the factor.
Definition: TableDistribution.h:120
gtsam::TableDistribution::BaseConditional
DiscreteConditional BaseConditional
Typedef to our conditional base class.
Definition: TableDistribution.h:50
gtsam::tol
const G double tol
Definition: Group.h:79
gtsam::TableFactor::evaluate
double evaluate(const Assignment< Key > &values) const override
Evaluate probability distribution, is just look up in TableFactor.
Definition: TableFactor.cpp:217
uint64_t
unsigned __int64 uint64_t
Definition: ms_stdint.h:95
gtsam::DiscreteFactor
Definition: DiscreteFactor.h:40
gtsam::TableDistribution::nrValues
uint64_t nrValues() const override
Get the number of non-zero values.
Definition: TableDistribution.h:163
max
#define max(a, b)
Definition: datatypes.h:20
gtsam::Ordering
Definition: inference/Ordering.h:33
pybind_wrapper_test_script.other
other
Definition: pybind_wrapper_test_script.py:42
Conditional-inst.h
gtsam::TableFactor::toDecisionTreeFactor
DecisionTreeFactor toDecisionTreeFactor() const override
Convert into a decisiontree.
Definition: TableFactor.cpp:298


gtsam
Author(s):
autogenerated on Wed Mar 19 2025 03:04:38