21 #include <boost/shared_ptr.hpp> 22 #include <boost/function.hpp> 23 #include <boost/variant.hpp> 24 #include <boost/optional.hpp> 35 struct EliminationTraits
55 template<
class FACTORGRAPH>
60 typedef FACTORGRAPH FactorGraphType;
86 typedef std::pair<boost::shared_ptr<ConditionalType>, boost::shared_ptr<_FactorType> >
EliminationResult;
89 typedef boost::function<EliminationResult(const FactorGraphType&, const Ordering&)>
Eliminate;
124 boost::shared_ptr<BayesNetType> eliminateSequential(
125 OptionalOrdering ordering = boost::none,
126 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
127 OptionalVariableIndex variableIndex = boost::none,
128 OptionalOrderingType orderingType = boost::none)
const;
151 boost::shared_ptr<BayesTreeType> eliminateMultifrontal(
152 OptionalOrdering ordering = boost::none,
153 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
154 OptionalVariableIndex variableIndex = boost::none,
155 OptionalOrderingType orderingType = boost::none)
const;
161 std::pair<boost::shared_ptr<BayesNetType>, boost::shared_ptr<FactorGraphType> >
162 eliminatePartialSequential(
164 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
165 OptionalVariableIndex variableIndex = boost::none)
const;
171 std::pair<boost::shared_ptr<BayesNetType>, boost::shared_ptr<FactorGraphType> >
172 eliminatePartialSequential(
173 const std::vector<Key>& variables,
174 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
175 OptionalVariableIndex variableIndex = boost::none)
const;
181 std::pair<boost::shared_ptr<BayesTreeType>, boost::shared_ptr<FactorGraphType> >
182 eliminatePartialMultifrontal(
184 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
185 OptionalVariableIndex variableIndex = boost::none)
const;
191 std::pair<boost::shared_ptr<BayesTreeType>, boost::shared_ptr<FactorGraphType> >
192 eliminatePartialMultifrontal(
193 const std::vector<Key>& variables,
194 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
195 OptionalVariableIndex variableIndex = boost::none)
const;
208 boost::shared_ptr<BayesNetType> marginalMultifrontalBayesNet(
209 boost::variant<
const Ordering&,
const std::vector<Key>&> variables,
210 OptionalOrdering marginalizedVariableOrdering = boost::none,
211 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
212 OptionalVariableIndex variableIndex = boost::none)
const;
225 boost::shared_ptr<BayesTreeType> marginalMultifrontalBayesTree(
226 boost::variant<
const Ordering&,
const std::vector<Key>&> variables,
227 OptionalOrdering marginalizedVariableOrdering = boost::none,
228 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
229 OptionalVariableIndex variableIndex = boost::none)
const;
232 boost::shared_ptr<FactorGraphType> marginal(
233 const std::vector<Key>& variables,
234 const Eliminate&
function = EliminationTraitsType::DefaultEliminate,
235 OptionalVariableIndex variableIndex = boost::none)
const;
240 const FactorGraphType& asDerived()
const {
return static_cast<const FactorGraphType&
>(*this); }
243 FactorGraphType& asDerived() {
return static_cast<FactorGraphType&
>(*this); }
boost::optional< const VariableIndex & > OptionalVariableIndex
Typedef for an optional variable index as an argument to elimination functions.
Definition: EliminateableFactorGraph.h:95
std::pair< boost::shared_ptr< ConditionalType >, boost::shared_ptr< _FactorType > > EliminationResult
The pair of conditional and remaining factor produced by a single dense elimination step on a subgrap...
Definition: EliminateableFactorGraph.h:86
EliminationTraitsType::BayesTreeType BayesTreeType
Bayes tree type produced by multifrontal elimination.
Definition: EliminateableFactorGraph.h:79
EliminationTraitsType::EliminationTreeType EliminationTreeType
Elimination tree type that can do sequential elimination of this graph.
Definition: EliminateableFactorGraph.h:76
EliminationTraits< FactorGraphType > EliminationTraitsType
Typedef to the specific EliminationTraits for this graph.
Definition: EliminateableFactorGraph.h:67
EliminateableFactorGraph is a base class for factor graphs that contains elimination algorithms...
Definition: EliminateableFactorGraph.h:56
Traits class for eliminateable factor graphs, specifies the types that result from elimination...
Definition: BayesTreeCliqueBase.h:28
EliminationTraitsType::BayesNetType BayesNetType
Bayes net type produced by sequential elimination.
Definition: EliminateableFactorGraph.h:73
boost::optional< Ordering::OrderingType > OptionalOrderingType
Typedef for an optional ordering type.
Definition: EliminateableFactorGraph.h:98
EliminationTraitsType::JunctionTreeType JunctionTreeType
Junction tree type that can do multifrontal elimination of this graph.
Definition: EliminateableFactorGraph.h:82
Definition: Ordering.h:33
boost::optional< const Ordering & > OptionalOrdering
Typedef for an optional ordering as an argument to elimination functions.
Definition: EliminateableFactorGraph.h:92
EliminationTraitsType::ConditionalType ConditionalType
Conditional type stored in the Bayes net produced by elimination.
Definition: EliminateableFactorGraph.h:70
boost::function< EliminationResult(const FactorGraphType &, const Ordering &)> Eliminate
The function type that does a single dense elimination step on a subgraph.
Definition: EliminateableFactorGraph.h:89
Global functions in a separate testing namespace.
Definition: chartTesting.h:28