24#include <unordered_set>
57 template<
class FACTOR_GRAPH>
62 typedef FACTOR_GRAPH FactorGraphType;
88 typedef std::pair<std::shared_ptr<ConditionalType>, std::shared_ptr<_FactorType> >
EliminationResult;
112 const std::unordered_set<Key>& fixedKeys = {})
const;
136 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
155 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
176 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
190 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
208 const Eliminate& function = EliminationTraitsType::DefaultEliminate)
const;
214 std::pair<std::shared_ptr<BayesNetType>, std::shared_ptr<FactorGraphType> >
217 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
224 std::pair<std::shared_ptr<BayesNetType>, std::shared_ptr<FactorGraphType> >
227 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
234 std::pair<std::shared_ptr<BayesTreeType>, std::shared_ptr<FactorGraphType> >
237 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
244 std::pair<std::shared_ptr<BayesTreeType>, std::shared_ptr<FactorGraphType> >
247 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
260 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
273 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
287 const Ordering& marginalizedVariableOrdering,
288 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
302 const Ordering& marginalizedVariableOrdering,
303 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
315 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
327 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
340 const Ordering& marginalizedVariableOrdering,
341 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
354 const Ordering& marginalizedVariableOrdering,
355 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
361 const Eliminate& function = EliminationTraitsType::DefaultEliminate,
367 const FactorGraphType& asDerived()
const {
return static_cast<const FactorGraphType&
>(*this); }
370 FactorGraphType& asDerived() {
return static_cast<FactorGraphType&
>(*this); }
Variable ordering for the elimination algorithm.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition Key.h:91
Traits class for eliminateable factor graphs, specifies the types that result from elimination,...
Definition EliminateableFactorGraph.h:38
EliminateableFactorGraph is a base class for factor graphs that contains elimination algorithms.
Definition EliminateableFactorGraph.h:59
std::pair< std::shared_ptr< ConditionalType >, std::shared_ptr< _FactorType > > EliminationResult
Definition EliminateableFactorGraph.h:88
std::pair< std::shared_ptr< BayesNetType >, std::shared_ptr< FactorGraphType > > eliminatePartialSequential(const Ordering &ordering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Do sequential elimination of some variables, in ordering provided, to produce a Bayes net and a remai...
Definition EliminateableFactorGraph-inst.h:300
std::pair< std::shared_ptr< BayesTreeType >, std::shared_ptr< FactorGraphType > > eliminatePartialMultifrontal(const Ordering &ordering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Do multifrontal elimination of some variables, in ordering provided, to produce a Bayes tree and a re...
Definition EliminateableFactorGraph-inst.h:339
std::shared_ptr< BayesNetType > eliminateSequential(const Ordering &ordering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Do sequential elimination of all variables to produce a Bayes net.
Definition EliminateableFactorGraph-inst.h:70
EliminationTraitsType::JunctionTreeType JunctionTreeType
Definition EliminateableFactorGraph.h:84
std::function< EliminationResult(const FactorGraphType &, const Ordering &)> Eliminate
Definition EliminateableFactorGraph.h:91
EliminationTraitsType::BayesTreeType BayesTreeType
Definition EliminateableFactorGraph.h:81
std::shared_ptr< BayesNetType > marginalMultifrontalBayesNet(const Ordering &variables, const Ordering &marginalizedVariableOrdering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Compute the marginal of the requested variables and return the result as a Bayes net.
Definition EliminateableFactorGraph-inst.h:435
std::shared_ptr< BayesNetType > marginalMultifrontalBayesNet(const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Compute the marginal of the requested variables and return the result as a Bayes net.
Definition EliminateableFactorGraph-inst.h:407
std::shared_ptr< BayesTreeType > eliminateMultifrontal(const Ordering &ordering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Do multifrontal elimination of all variables to produce a Bayes tree.
Definition EliminateableFactorGraph-inst.h:132
EliminationTraitsType::BayesNetType BayesNetType
Definition EliminateableFactorGraph.h:75
std::shared_ptr< FactorGraphType > marginal(const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Compute the marginal factor graph of the requested variables.
Definition EliminateableFactorGraph-inst.h:589
std::pair< std::shared_ptr< BayesNetType >, std::shared_ptr< FactorGraphType > > eliminatePartialSequential(const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Do sequential elimination of the given variables in an ordering computed by COLAMD to produce a Bayes...
Definition EliminateableFactorGraph-inst.h:318
std::shared_ptr< BayesNetType > marginalMultifrontalBayesNet(const Ordering &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Compute the marginal of the requested variables and return the result as a Bayes net.
Definition EliminateableFactorGraph-inst.h:379
IndexedJunctionTree buildIndexedJunctionTree(const Ordering &ordering, const std::unordered_set< Key > &fixedKeys={}) const
Build an IndexedJunctionTree for this factor graph and a fixed ordering.
Definition EliminateableFactorGraph-inst.h:158
std::pair< std::shared_ptr< BayesTreeType >, std::shared_ptr< FactorGraphType > > eliminatePartialMultifrontal(const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Do multifrontal elimination of the given variables in an ordering computed by COLAMD to produce a Bay...
Definition EliminateableFactorGraph-inst.h:358
std::shared_ptr< BayesTreeType > marginalMultifrontalBayesTree(const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Compute the marginal of the requested variables and return the result as a Bayes tree.
Definition EliminateableFactorGraph-inst.h:512
std::shared_ptr< BayesTreeType > marginalMultifrontalBayesTree(const Ordering &variables, const Ordering &marginalizedVariableOrdering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Compute the marginal of the requested variables and return the result as a Bayes tree.
Definition EliminateableFactorGraph-inst.h:540
std::shared_ptr< BayesNetType > marginalMultifrontalBayesNet(const KeyVector &variables, const Ordering &marginalizedVariableOrdering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Compute the marginal of the requested variables and return the result as a Bayes net.
Definition EliminateableFactorGraph-inst.h:460
EliminationTraitsType::ConditionalType ConditionalType
Definition EliminateableFactorGraph.h:72
EliminationTraitsType::EliminationTreeType EliminationTreeType
Definition EliminateableFactorGraph.h:78
std::shared_ptr< BayesTreeType > marginalMultifrontalBayesTree(const Ordering &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Compute the marginal of the requested variables and return the result as a Bayes tree.
Definition EliminateableFactorGraph-inst.h:484
std::shared_ptr< BayesTreeType > marginalMultifrontalBayesTree(const KeyVector &variables, const Ordering &marginalizedVariableOrdering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Compute the marginal of the requested variables and return the result as a Bayes tree.
Definition EliminateableFactorGraph-inst.h:565
std::shared_ptr< BayesTreeType > eliminateMultifrontal(const IndexedJunctionTree &indexedJunctionTree, const Eliminate &function=EliminationTraitsType::DefaultEliminate) const
Do multifrontal elimination using a pre-built IndexedJunctionTree.
Definition EliminateableFactorGraph-inst.h:167
std::shared_ptr< BayesNetType > eliminateSequential(OptionalOrderingType orderingType={}, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Do sequential elimination of all variables to produce a Bayes net.
Definition EliminateableFactorGraph-inst.h:36
std::shared_ptr< BayesTreeType > eliminateMultifrontal(OptionalOrderingType orderingType={}, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex={}) const
Do multifrontal elimination of all variables to produce a Bayes tree.
Definition EliminateableFactorGraph-inst.h:96
std::optional< std::reference_wrapper< const VariableIndex > > OptionalVariableIndex
Definition EliminateableFactorGraph.h:95
EliminationTraits< FactorGraphType > EliminationTraitsType
Definition EliminateableFactorGraph.h:69
std::optional< Ordering::OrderingType > OptionalOrderingType
Definition EliminateableFactorGraph.h:98
A symbolic junction tree whose factors record the original factor indices from a corresponding (non-s...
Definition IndexedJunctionTree.h:58