#include <EliminationTree.h>
Classes | |
struct | Node |
Public Types | |
typedef BAYESNET | BayesNetType |
The BayesNet corresponding to FACTOR. More... | |
typedef BayesNetType::ConditionalType | ConditionalType |
The type of conditionals. More... | |
typedef GRAPH::Eliminate | Eliminate |
typedef GRAPH | FactorGraphType |
The factor graph type. More... | |
typedef GRAPH::FactorType | FactorType |
The type of factors. More... | |
typedef std::shared_ptr< ConditionalType > | sharedConditional |
Shared pointer to a conditional. More... | |
typedef std::shared_ptr< FactorType > | sharedFactor |
Shared pointer to a factor. More... | |
typedef std::shared_ptr< Node > | sharedNode |
Shared pointer to Node. More... | |
Public Member Functions | |
~EliminationTree () | |
Protected Types | |
typedef std::shared_ptr< This > | shared_ptr |
Shared pointer to this class. More... | |
typedef EliminationTree< BAYESNET, GRAPH > | This |
This class. More... | |
Protected Attributes | |
FastVector< sharedFactor > | remainingFactors_ |
FastVector< sharedNode > | roots_ |
Standard Constructors | |
EliminationTree (const FactorGraphType &factorGraph, const VariableIndex &structure, const Ordering &order) | |
EliminationTree (const FactorGraphType &factorGraph, const Ordering &order) | |
EliminationTree (const This &other) | |
This & | operator= (const This &other) |
Standard Interface | |
std::pair< std::shared_ptr< BayesNetType >, std::shared_ptr< FactorGraphType > > | eliminate (Eliminate function) const |
Testable | |
bool | equals (const This &other, double tol=1e-9) const |
void | print (const std::string &name="EliminationTree: ", const KeyFormatter &formatter=DefaultKeyFormatter) const |
Advanced Interface | |
class | ::EliminationTreeTester |
Allow access to constructor and add methods for testing purposes. More... | |
EliminationTree () | |
Protected default constructor. More... | |
const FastVector< sharedNode > & | roots () const |
const FastVector< sharedFactor > & | remainingFactors () const |
void | swap (This &other) |
An elimination tree is a data structure used intermediately during elimination. In future versions it will be used to save work between multiple eliminations.
When a variable is eliminated, a new factor is created by combining that variable's neighboring factors. The new combined factor involves the combined factors' involved variables. When the lowest-ordered one of those variables is eliminated, it consumes that combined factor. In the elimination tree, that lowest-ordered variable is the parent of the variable that was eliminated to produce the combined factor. This yields a tree in general, and not a chain because of the implicit sparse structure of the resulting Bayes net.
This structure is examined even more closely in a JunctionTree, which additionally identifies cliques in the chordal Bayes net.
Definition at line 51 of file EliminationTree.h.
typedef BAYESNET gtsam::EliminationTree< BAYESNET, GRAPH >::BayesNetType |
The BayesNet corresponding to FACTOR.
Definition at line 61 of file EliminationTree.h.
typedef BayesNetType::ConditionalType gtsam::EliminationTree< BAYESNET, GRAPH >::ConditionalType |
The type of conditionals.
Definition at line 62 of file EliminationTree.h.
typedef GRAPH::Eliminate gtsam::EliminationTree< BAYESNET, GRAPH >::Eliminate |
Definition at line 64 of file EliminationTree.h.
typedef GRAPH gtsam::EliminationTree< BAYESNET, GRAPH >::FactorGraphType |
The factor graph type.
Definition at line 58 of file EliminationTree.h.
typedef GRAPH::FactorType gtsam::EliminationTree< BAYESNET, GRAPH >::FactorType |
The type of factors.
Definition at line 59 of file EliminationTree.h.
|
protected |
Shared pointer to this class.
Definition at line 55 of file EliminationTree.h.
typedef std::shared_ptr<ConditionalType> gtsam::EliminationTree< BAYESNET, GRAPH >::sharedConditional |
Shared pointer to a conditional.
Definition at line 63 of file EliminationTree.h.
typedef std::shared_ptr<FactorType> gtsam::EliminationTree< BAYESNET, GRAPH >::sharedFactor |
Shared pointer to a factor.
Definition at line 60 of file EliminationTree.h.
typedef std::shared_ptr<Node> gtsam::EliminationTree< BAYESNET, GRAPH >::sharedNode |
Shared pointer to Node.
Definition at line 80 of file EliminationTree.h.
|
protected |
This class.
Definition at line 54 of file EliminationTree.h.
|
protected |
Build the elimination tree of a factor graph using pre-computed column structure.
factorGraph | The factor graph for which to build the elimination tree |
structure | The set of factors involving each variable. If this is not precomputed, you can call the Create(const FactorGraph<DERIVEDFACTOR>&) named constructor instead. |
Definition at line 78 of file EliminationTree-inst.h.
|
protected |
Build the elimination tree of a factor graph. Note that this has to compute the column structure as a VariableIndex, so if you already have this precomputed, use the other constructor instead.
factorGraph | The factor graph for which to build the elimination tree |
Definition at line 160 of file EliminationTree-inst.h.
|
inlineprotected |
Copy constructor - makes a deep copy of the tree structure, but only pointers to factors are copied, factors are not cloned.
Definition at line 112 of file EliminationTree.h.
gtsam::EliminationTree< BAYESNET, GRAPH >::~EliminationTree |
Destructor Using default destructor causes stack overflow for large trees due to recursive destruction of nodes; so we manually decrease the reference count of each node in the tree through a BFS, and the nodes with reference count 0 will be deleted. Please see PR-1441 for more details.
Definition at line 193 of file EliminationTree-inst.h.
|
inlineprotected |
Protected default constructor.
Definition at line 162 of file EliminationTree.h.
std::pair< std::shared_ptr< BAYESNET >, std::shared_ptr< GRAPH > > gtsam::EliminationTree< BAYESNET, GRAPH >::eliminate | ( | Eliminate | function | ) | const |
Eliminate the factors to a Bayes net and remaining factor graph
function | The function to use to eliminate, see the namespace functions in GaussianFactorGraph.h |
Definition at line 225 of file EliminationTree-inst.h.
|
protected |
Test whether the tree is equal to another
Definition at line 252 of file EliminationTree-inst.h.
|
protected |
Assignment operator - makes a deep copy of the tree structure, but only pointers to factors are copied, factors are not cloned.
Definition at line 173 of file EliminationTree-inst.h.
void gtsam::EliminationTree< BAYESNET, GRAPH >::print | ( | const std::string & | name = "EliminationTree< BAYESNET, GRAPH >: " , |
const KeyFormatter & | formatter = DefaultKeyFormatter |
||
) | const |
Print the tree to cout
Definition at line 245 of file EliminationTree-inst.h.
|
inline |
Return the remaining factors that are not pulled into elimination
Definition at line 155 of file EliminationTree.h.
|
inline |
Return the set of roots (one for a tree, multiple for a forest)
Definition at line 152 of file EliminationTree.h.
void gtsam::EliminationTree< BAYESNET, GRAPH >::swap | ( | This & | other | ) |
Swap the data of this tree with another one, this operation is very fast.
Definition at line 321 of file EliminationTree-inst.h.
|
friend |
Allow access to constructor and add methods for testing purposes.
Definition at line 166 of file EliminationTree.h.
|
protected |
Definition at line 87 of file EliminationTree.h.
|
protected |
concept check
Definition at line 86 of file EliminationTree.h.