24 #include <gtsam/base/ConcurrentMap.h> 38 double avgConditionalSize;
39 std::size_t maxConditionalSize;
40 double avgSeparatorSize;
41 std::size_t maxSeparatorSize;
42 void print(
const std::string& s =
"")
const ;
63 template<
class CLIQUE>
68 typedef boost::shared_ptr<This> shared_ptr;
76 typedef boost::shared_ptr<ConditionalType> sharedConditional;
78 typedef boost::shared_ptr<BayesNetType> sharedBayesNet;
79 typedef typename CLIQUE::FactorType
FactorType;
80 typedef boost::shared_ptr<FactorType> sharedFactor;
82 typedef boost::shared_ptr<FactorGraphType> sharedFactorGraph;
115 This& operator=(
const This& other);
121 bool equals(
const This& other,
double tol = 1e-9)
const;
125 void print(
const std::string& s =
"",
126 const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const;
137 return nodes_.empty();
141 const Nodes&
nodes()
const {
return nodes_; }
147 const Roots&
roots()
const {
return roots_; }
151 typename Nodes::const_iterator c = nodes_.find(j);
152 if(c == nodes_.end())
153 throw std::out_of_range(
"Requested the BayesTree clique for a key that is not in the BayesTree");
162 size_t numCachedSeparatorMarginals()
const;
169 sharedConditional marginalFactor(
Key j,
const Eliminate&
function = EliminationTraitsType::DefaultEliminate)
const;
175 sharedFactorGraph joint(
Key j1,
Key j2,
const Eliminate&
function = EliminationTraitsType::DefaultEliminate)
const;
181 sharedBayesNet jointBayesNet(
Key j1,
Key j2,
const Eliminate&
function = EliminationTraitsType::DefaultEliminate)
const;
188 void saveGraph(
const std::string& s,
const KeyFormatter& keyFormatter = DefaultKeyFormatter)
const;
198 template<
class CONTAINER>
199 Key findParentClique(
const CONTAINER& parents)
const;
205 void deleteCachedShortcuts();
211 void removePath(sharedClique clique, BayesNetType& bn, Cliques& orphans);
217 void removeTop(
const FastVector<Key>& keys, BayesNetType& bn, Cliques& orphans);
221 Cliques removeSubtree(
const sharedClique& subtree);
226 void insertRoot(
const sharedClique& subtree);
229 void addClique(
const sharedClique& clique,
const sharedClique& parent_clique = sharedClique());
237 void saveGraph(std::ostream &s, sharedClique clique,
const KeyFormatter& keyFormatter,
238 int parentnum = 0)
const;
244 void removeClique(sharedClique clique);
247 void fillNodesIndex(
const sharedClique& subtree);
254 friend class boost::serialization::access;
255 template<
class ARCHIVE>
256 void serialize(ARCHIVE & ar,
const unsigned int ) {
257 ar & BOOST_SERIALIZATION_NVP(nodes_);
258 ar & BOOST_SERIALIZATION_NVP(roots_);
266 template<
class CLIQUE>
270 typedef CLIQUE CliqueType;
271 typedef typename CLIQUE::ConditionalType Base;
273 boost::shared_ptr<CliqueType> clique;
280 this->keys_.assign(clique->conditional()->beginParents(), clique->conditional()->endParents());
283 void print(
const std::string& s=
"",
const KeyFormatter& formatter = DefaultKeyFormatter)
const {
284 clique->print(s +
"stored clique", formatter);
FastList< sharedClique > Cliques
A convenience class for a list of shared cliques.
Definition: BayesTree.h:87
Definition: BayesTree.h:267
A Bayes net made from linear-Gaussian densities.
Definition: GaussianBayesNet.h:30
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition: Matrix.cpp:140
A conditional Gaussian functions as the node in a Bayes network It has a set of parents y...
Definition: GaussianConditional.h:36
ConcurrentMap< Key, sharedClique > Nodes
Map from keys to Clique.
Definition: BayesTree.h:90
Definition: FastList.h:38
clique statistics
Definition: BayesTree.h:37
Clique Node
Synonym for Clique (TODO: remove)
Definition: BayesTree.h:73
An abstract virtual base class for JacobianFactor and HessianFactor.
Definition: GaussianFactor.h:38
A thin wrapper around std::list that uses boost's fast_pool_allocator.
Nodes nodes_
Map from indices to Clique.
Definition: BayesTree.h:95
boost::shared_ptr< Clique > sharedClique
Shared pointer to a clique.
Definition: BayesTree.h:72
Definition: BayesTree.h:64
FastVector< sharedClique > Roots
Root cliques.
Definition: BayesTree.h:98
Roots roots_
Root cliques.
Definition: BayesTree.h:101
Template to create a binary predicate.
Definition: Testable.h:110
A cluster-tree that eliminates to a Bayes tree.
Definition: BayesTree.h:33
const sharedNode operator[](Key j) const
Access node by variable.
Definition: BayesTree.h:144
store all the sizes
Definition: BayesTree.h:46
BayesTree()
Create an empty Bayes Tree.
Definition: BayesTree.h:107
const Roots & roots() const
return root cliques
Definition: BayesTree.h:147
Definition: GaussianFactorGraph.h:43
bool empty() const
Check if there are any cliques in the tree.
Definition: BayesTree.h:136
const sharedClique & clique(Key j) const
alternate syntax for matlab: find the clique that contains the variable with Key j ...
Definition: BayesTree.h:150
const Nodes & nodes() const
return nodes
Definition: BayesTree.h:141
A factor graph is a bipartite graph with factor nodes connected to variable nodes.
Definition: BayesTree.h:32
boost::function< EliminationResult(const FactorGraphType &, const Ordering &)> Eliminate
The function type that does a single dense elimination step on a subgraph.
Definition: EliminateableFactorGraph.h:89
sharedClique sharedNode
Synonym for sharedClique (TODO: remove)
Definition: BayesTree.h:74
A thin wrapper around std::vector that uses boost's pool_allocator.
A Linear Factor Graph is a factor graph where all factors are Gaussian, i.e.
Definition: GaussianFactorGraph.h:65
CLIQUE Clique
The clique type, normally BayesTreeClique.
Definition: BayesTree.h:71
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:57
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
boost::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:33