34 struct EliminationTraits
54 template<
class FACTORGRAPH>
59 typedef FACTORGRAPH FactorGraphType;
85 typedef std::pair<std::shared_ptr<ConditionalType>, std::shared_ptr<_FactorType> >
EliminationResult;
88 typedef std::function<EliminationResult(const FactorGraphType&, const Ordering&)>
Eliminate;
117 std::shared_ptr<BayesNetType> eliminateSequential(
118 OptionalOrderingType orderingType = {},
119 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
120 OptionalVariableIndex variableIndex = {})
const;
136 std::shared_ptr<BayesNetType> eliminateSequential(
138 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
139 OptionalVariableIndex variableIndex = {})
const;
157 std::shared_ptr<BayesTreeType> eliminateMultifrontal(
158 OptionalOrderingType orderingType = {},
159 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
160 OptionalVariableIndex variableIndex = {})
const;
171 std::shared_ptr<BayesTreeType> eliminateMultifrontal(
173 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
174 OptionalVariableIndex variableIndex = {})
const;
180 std::pair<std::shared_ptr<BayesNetType>, std::shared_ptr<FactorGraphType> >
181 eliminatePartialSequential(
183 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
184 OptionalVariableIndex variableIndex = {})
const;
190 std::pair<std::shared_ptr<BayesNetType>, std::shared_ptr<FactorGraphType> >
191 eliminatePartialSequential(
193 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
194 OptionalVariableIndex variableIndex = {})
const;
200 std::pair<std::shared_ptr<BayesTreeType>, std::shared_ptr<FactorGraphType> >
201 eliminatePartialMultifrontal(
203 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
204 OptionalVariableIndex variableIndex = {})
const;
210 std::pair<std::shared_ptr<BayesTreeType>, std::shared_ptr<FactorGraphType> >
211 eliminatePartialMultifrontal(
213 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
214 OptionalVariableIndex variableIndex = {})
const;
224 std::shared_ptr<BayesNetType> marginalMultifrontalBayesNet(
226 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
227 OptionalVariableIndex variableIndex = {})
const;
237 std::shared_ptr<BayesNetType> marginalMultifrontalBayesNet(
239 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
240 OptionalVariableIndex variableIndex = {})
const;
251 std::shared_ptr<BayesNetType> marginalMultifrontalBayesNet(
253 const Ordering& marginalizedVariableOrdering,
254 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
255 OptionalVariableIndex variableIndex = {})
const;
266 std::shared_ptr<BayesNetType> marginalMultifrontalBayesNet(
268 const Ordering& marginalizedVariableOrdering,
269 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
270 OptionalVariableIndex variableIndex = {})
const;
279 std::shared_ptr<BayesTreeType> marginalMultifrontalBayesTree(
281 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
282 OptionalVariableIndex variableIndex = {})
const;
291 std::shared_ptr<BayesTreeType> marginalMultifrontalBayesTree(
293 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
294 OptionalVariableIndex variableIndex = {})
const;
304 std::shared_ptr<BayesTreeType> marginalMultifrontalBayesTree(
306 const Ordering& marginalizedVariableOrdering,
307 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
308 OptionalVariableIndex variableIndex = {})
const;
318 std::shared_ptr<BayesTreeType> marginalMultifrontalBayesTree(
320 const Ordering& marginalizedVariableOrdering,
321 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
322 OptionalVariableIndex variableIndex = {})
const;
325 std::shared_ptr<FactorGraphType> marginal(
327 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
328 OptionalVariableIndex variableIndex = {})
const;
333 const FactorGraphType& asDerived()
const {
return static_cast<const FactorGraphType&
>(*this); }
336 FactorGraphType& asDerived() {
return static_cast<FactorGraphType&
>(*this); }
std::optional< std::reference_wrapper< const VariableIndex > > OptionalVariableIndex
Definition: EliminateableFactorGraph.h:92
EliminationTraitsType::ConditionalType ConditionalType
Conditional type stored in the Bayes net produced by elimination.
Definition: EliminateableFactorGraph.h:69
Variable ordering for the elimination algorithm.
Definition: Ordering.h:37
EliminationTraitsType::BayesNetType BayesNetType
Bayes net type produced by sequential elimination.
Definition: EliminateableFactorGraph.h:72
EliminationTraitsType::JunctionTreeType JunctionTreeType
Junction tree type that can do multifrontal elimination of this graph.
Definition: EliminateableFactorGraph.h:81
std::function< EliminationResult(const FactorGraphType &, const Ordering &)> Eliminate
The function type that does a single dense elimination step on a subgraph.
Definition: EliminateableFactorGraph.h:88
std::pair< std::shared_ptr< ConditionalType >, std::shared_ptr< _FactorType > > EliminationResult
Definition: EliminateableFactorGraph.h:85
Definition: chartTesting.h:28
FastVector< Key > KeyVector
Define collection type once and for all - also used in wrappers.
Definition: Key.h:86
EliminationTraitsType::EliminationTreeType EliminationTreeType
Elimination tree type that can do sequential elimination of this graph.
Definition: EliminateableFactorGraph.h:75
Definition: BayesTreeCliqueBase.h:33
EliminationTraits< FactorGraphType > EliminationTraitsType
Typedef to the specific EliminationTraits for this graph.
Definition: EliminateableFactorGraph.h:66
EliminationTraitsType::BayesTreeType BayesTreeType
Bayes tree type produced by multifrontal elimination.
Definition: EliminateableFactorGraph.h:78
Definition: EliminateableFactorGraph.h:55
std::optional< Ordering::OrderingType > OptionalOrderingType
Typedef for an optional ordering type.
Definition: EliminateableFactorGraph.h:95