gtsam
4.0.0
gtsam
|
This is the base class for BayesTree cliques.
The default and standard derived type is BayesTreeClique, but some algorithms, like iSAM2, use a different clique type in order to store extra data along with the clique.
This class is templated on the derived class (i.e. the curiously recursive template pattern). The advantage of this over using virtual classes is that it avoids the need for casting to get the derived type. This is possible because all cliques in a BayesTree are the same type - if they were not then we'd need a virtual class.
DERIVED | The derived clique type. |
CONDITIONAL | The conditional type. |
Standard Constructors | |
BayesTreeCliqueBase () | |
Default constructor. | |
BayesTreeCliqueBase (const sharedConditional &conditional) | |
Construct from a conditional, leaving parent and child pointers uninitialized. | |
Testable | |
bool | equals (const DERIVED &other, double tol=1e-9) const |
check equality | |
void | print (const std::string &s="", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const |
print this node | |
Standard Interface | |
const sharedConditional & | conditional () const |
Access the conditional. | |
bool | isRoot () const |
is this the root of a Bayes tree ? | |
size_t | treeSize () const |
The size of subtree rooted at this clique, i.e., nr of Cliques. | |
size_t | numCachedSeparatorMarginals () const |
Collect number of cliques with cached separator marginals. | |
derived_ptr | parent () const |
return a shared_ptr to the parent clique | |
int | problemSize () const |
Problem size (used for parallel traversal) | |
Advanced Interface | |
class | BayesTree< DerivedType > |
class | boost::serialization::access |
Serialization function. | |
KeyVector | separator_setminus_B (const derived_ptr &B) const |
Calculate set \( S \setminus B \) for shortcut calculations. | |
KeyVector | shortcut_indices (const derived_ptr &B, const FactorGraphType &p_Cp_B) const |
Determine variable indices to keep in recursive separator shortcut calculation The factor graph p_Cp_B has keys from the parent clique Cp and from B. More... | |
void | deleteCachedShortcutsNonRecursive () |
Non-recursive delete cached shortcuts and marginals - internal only. More... | |
BayesNetType | shortcut (const derived_ptr &root, Eliminate function=EliminationTraitsType::DefaultEliminate) const |
return the conditional P(S|Root) on the separator given the root | |
FactorGraphType | separatorMarginal (Eliminate function=EliminationTraitsType::DefaultEliminate) const |
return the marginal P(S) on the separator | |
FactorGraphType | marginal2 (Eliminate function=EliminationTraitsType::DefaultEliminate) const |
return the marginal P(C) of the clique, using marginal caching | |
void | deleteCachedShortcuts () |
This deletes the cached shortcuts of all cliques (subtree) below this clique. More... | |
const boost::optional< FactorGraphType > & | cachedSeparatorMarginal () const |
Public Member Functions | |
void | setEliminationResult (const typename FactorGraphType::EliminationResult &eliminationResult) |
Fill the elimination result produced during elimination. More... | |
Public Attributes | |
sharedConditional | conditional_ |
derived_weak_ptr | parent_ |
FastVector< derived_ptr > | children |
int | problemSize_ |
Protected Attributes | |
boost::optional< FactorGraphType > | cachedSeparatorMarginal_ |
This stores the Cached separator margnal P(S) | |
void gtsam::BayesTreeCliqueBase< DERIVED, FACTORGRAPH >::deleteCachedShortcuts | ( | ) |
This deletes the cached shortcuts of all cliques (subtree) below this clique.
This is performed when the bayes tree is modified.
|
inlineprotected |
Non-recursive delete cached shortcuts and marginals - internal only.
void gtsam::BayesTreeCliqueBase< DERIVED, FACTORGRAPH >::setEliminationResult | ( | const typename FactorGraphType::EliminationResult & | eliminationResult | ) |
Fill the elimination result produced during elimination.
Here this just stores the conditional and ignores the remaining factor, but this is overridden in ISAM2Clique to also cache the remaining factor.
|
protected |
Determine variable indices to keep in recursive separator shortcut calculation The factor graph p_Cp_B has keys from the parent clique Cp and from B.
But we only keep the variables not in S union B.