Loading...
Searching...
No Matches
gtsam::BayesTreeCliqueBase< DERIVED, FACTORGRAPH > Class Template Reference

## Detailed Description

template<class DERIVED, class FACTORGRAPH>
class gtsam::BayesTreeCliqueBase< DERIVED, FACTORGRAPH >

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.

Template Parameters

  DERIVED | The derived clique type.
  CONDITIONAL | The conditional type.

## 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.
void | deleteCachedShortcutsNonRecursive ()
| Non-recursive delete cached shortcuts and marginals - internal only.
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.
const boost::optional< FactorGraphType > & | cachedSeparatorMarginal () const

## Standard Constructors

| BayesTreeCliqueBase ()
| Default constructor.
| BayesTreeCliqueBase (const sharedConditional &conditional)
| Construct from a conditional, leaving parent and child pointers uninitialized.
| BayesTreeCliqueBase (const BayesTreeCliqueBase &c)
| Shallow copy constructor.
BayesTreeCliqueBase & | operator= (const BayesTreeCliqueBase &c)
| Shallow copy assignment constructor.

## Testable

bool | equals (const DERIVED &other, double tol=1e-9) const
| check equality
virtual 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
| Return true if this clique is the root of a Bayes tree.
size_t | nrChildren () const
| Return the number of children.
const derived_ptr | operator[] (size_t i) const
| Return the child at index i.
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).

## Public Member Functions

void | setEliminationResult (const typename FactorGraphType::EliminationResult &eliminationResult)
| Fill the elimination result produced during elimination.

## Public Attributes

sharedConditional | conditional_
derived_weak_ptr | parent_
FastVector< derived_ptr > | children
int | problemSize_
bool | is_root = false

## Public Types

typedef FACTORGRAPH | FactorGraphType
typedef EliminationTraitsType::BayesNetType | BayesNetType
typedef BayesNetType::ConditionalType | ConditionalType
typedef boost::shared_ptr< ConditionalType > | sharedConditional
typedef FactorGraphType::FactorType | FactorType
typedef FactorGraphType::Eliminate | Eliminate

## Protected Attributes

boost::optional< FactorGraphType > | cachedSeparatorMarginal_
| This stores the Cached separator marginal P(S).
std::mutex | cachedSeparatorMarginalMutex_
| This protects Cached seperator marginal P(S) from concurrent read/writes as many the functions which access it are const (hence the mutable) leading to the false impression that these const functions are thread-safe which is not true due to these mutable values.

## Member Function Documentation

## deleteCachedShortcuts()

template<class DERIVED, class FACTORGRAPH>

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.

## print()

template<class DERIVED, class FACTORGRAPH>

void gtsam::BayesTreeCliqueBase< DERIVED, FACTORGRAPH >::print | ( | const std::string & | s = "",
|  | const KeyFormatter & | keyFormatter = DefaultKeyFormatter ) const

virtual

print this node

Reimplemented in gtsam::ISAM2Clique.

## setEliminationResult()

template<class DERIVED, class FACTORGRAPH>

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.

## shortcut_indices()

template<class DERIVED, class FACTORGRAPH>

KeyVector gtsam::BayesTreeCliqueBase< DERIVED, FACTORGRAPH >::shortcut_indices | ( | const derived_ptr & | B,
|  | const FactorGraphType & | p_Cp_B ) const

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.

## Member Data Documentation

## cachedSeparatorMarginalMutex_

template<class DERIVED, class FACTORGRAPH>

std::mutex gtsam::BayesTreeCliqueBase< DERIVED, FACTORGRAPH >::cachedSeparatorMarginalMutex_

mutable protected

This protects Cached seperator marginal P(S) from concurrent read/writes as many the functions which access it are const (hence the mutable) leading to the false impression that these const functions are thread-safe which is not true due to these mutable values.

This is fixed by applying this mutex.

The documentation for this class was generated from the following files:

- /build/gtsam-Xg031d/gtsam-4.2.0+dfsg/gtsam/inference/BayesTreeCliqueBase.h
- /build/gtsam-Xg031d/gtsam-4.2.0+dfsg/gtsam/inference/BayesTreeCliqueBase-inst.h