gtsam
4.0.0
gtsam
|
A Discrete Factor Graph is a factor graph where all factors are Discrete, i.e.
Public Member Functions | |
DiscreteFactorGraph () | |
Default constructor. | |
template<typename ITERATOR > | |
DiscreteFactorGraph (ITERATOR firstFactor, ITERATOR lastFactor) | |
Construct from iterator over factors. | |
template<class CONTAINER > | |
DiscreteFactorGraph (const CONTAINER &factors) | |
Construct from container of factors (shared_ptr or plain objects) | |
template<class DERIVEDFACTOR > | |
DiscreteFactorGraph (const FactorGraph< DERIVEDFACTOR > &graph) | |
Implicit copy/downcast constructor to override explicit template container constructor. | |
template<class SOURCE > | |
void | add (const DiscreteKey &j, SOURCE table) |
template<class SOURCE > | |
void | add (const DiscreteKey &j1, const DiscreteKey &j2, SOURCE table) |
template<class SOURCE > | |
void | add (const DiscreteKeys &keys, SOURCE table) |
add shared discreteFactor immediately from arguments | |
KeySet | keys () const |
Return the set of variables involved in the factors (set union) | |
DecisionTreeFactor | product () const |
return product of all factors as a single factor | |
double | operator() (const DiscreteFactor::Values &values) const |
Evaluates the factor graph given values, returns the joint probability of the factor graph given specific instantiation of values. | |
void | print (const std::string &s="DiscreteFactorGraph", const KeyFormatter &formatter=DefaultKeyFormatter) const |
print | |
DiscreteFactor::sharedValues | optimize () const |
Solve the factor graph by performing variable elimination in COLAMD order using the dense elimination function specified in function , followed by back-substitution resulting from elimination. More... | |
Testable | |
bool | equals (const This &fg, double tol=1e-9) const |
Public Member Functions inherited from gtsam::FactorGraph< DiscreteFactor > | |
void | reserve (size_t size) |
Reserve space for the specified number of factors if you know in advance how many there will be (works like FastVector::reserve). | |
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | push_back (boost::shared_ptr< DERIVEDFACTOR > factor) |
Add a factor directly using a shared_ptr. | |
void | push_back (const sharedFactor &factor) |
Add a factor directly using a shared_ptr. | |
std::enable_if< std::is_base_of< FactorType, typename ITERATOR::value_type::element_type >::value >::type | push_back (ITERATOR firstFactor, ITERATOR lastFactor) |
push back many factors with an iterator over shared_ptr (factors are not copied) | |
std::enable_if< std::is_base_of< FactorType, typename CONTAINER::value_type::element_type >::value >::type | push_back (const CONTAINER &container) |
push back many factors as shared_ptr's in a container (factors are not copied) | |
std::enable_if< std::is_base_of< This, typename CLIQUE::FactorGraphType >::value >::type | push_back (const BayesTree< CLIQUE > &bayesTree) |
push back a BayesTree as a collection of factors. More... | |
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | push_back (const DERIVEDFACTOR &factor) |
Add a factor by value, will be copy-constructed (use push_back with a shared_ptr to avoid the copy). More... | |
std::enable_if< std::is_base_of< FactorType, typename ITERATOR::value_type >::value >::type | push_back (ITERATOR firstFactor, ITERATOR lastFactor) |
push back many factors with an iterator over plain factors (factors are copied) | |
std::enable_if< std::is_base_of< FactorType, typename CONTAINER::value_type >::value >::type | push_back (const CONTAINER &container) |
push back many factors as non-pointer objects in a container (factors are copied) | |
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | emplace_shared (Args &&... args) |
Emplace a factor. | |
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value, boost::assign::list_inserter< RefCallPushBack< This > > >::type | operator+= (boost::shared_ptr< DERIVEDFACTOR > factor) |
Add a factor directly using a shared_ptr. | |
boost::assign::list_inserter< CRefCallPushBack< This > > | operator+= (const sharedFactor &factor) |
Add a factor directly using a shared_ptr. | |
boost::assign::list_inserter< CRefCallPushBack< This > > | operator+= (const FACTOR_OR_CONTAINER &factorOrContainer) |
Add a factor or container of factors, including STL collections, BayesTrees, etc. More... | |
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value >::type | add (boost::shared_ptr< DERIVEDFACTOR > factor) |
Add a factor directly using a shared_ptr. | |
void | add (const sharedFactor &factor) |
Add a factor directly using a shared_ptr. | |
void | add (const FACTOR_OR_CONTAINER &factorOrContainer) |
Add a factor or container of factors, including STL collections, BayesTrees, etc. More... | |
void | print (const std::string &s="FactorGraph", const KeyFormatter &formatter=DefaultKeyFormatter) const |
print out graph | |
bool | equals (const This &fg, double tol=1e-9) const |
Check equality. More... | |
size_t | size () const |
return the number of factors (including any null factors set by remove() ). More... | |
bool | empty () const |
Check if the graph is empty (null factors set by remove() will cause this to return false). More... | |
const sharedFactor | at (size_t i) const |
Get a specific factor by index (this checks array bounds and may throw an exception, as opposed to operator[] which does not). | |
sharedFactor & | at (size_t i) |
Get a specific factor by index (this checks array bounds and may throw an exception, as opposed to operator[] which does not). | |
const sharedFactor | operator[] (size_t i) const |
Get a specific factor by index (this does not check array bounds, as opposed to at() which does). | |
sharedFactor & | operator[] (size_t i) |
Get a specific factor by index (this does not check array bounds, as opposed to at() which does). | |
const_iterator | begin () const |
Iterator to beginning of factors. More... | |
const_iterator | end () const |
Iterator to end of factors. More... | |
sharedFactor | front () const |
Get the first factor. | |
sharedFactor | back () const |
Get the last factor. | |
iterator | begin () |
non-const STL-style begin() | |
iterator | end () |
non-const STL-style end() | |
void | resize (size_t size) |
Directly resize the number of factors in the graph. More... | |
void | remove (size_t i) |
delete factor without re-arranging indexes by inserting a NULL pointer | |
void | replace (size_t index, sharedFactor factor) |
replace a factor by index | |
iterator | erase (iterator item) |
Erase factor and rearrange other factors to take up the empty space. | |
iterator | erase (iterator first, iterator last) |
Erase factors and rearrange other factors to take up the empty space. | |
size_t | nrFactors () const |
return the number of non-null factors | |
KeySet | keys () const |
Potentially slow function to return all keys involved, sorted, as a set. | |
KeyVector | keyVector () const |
Potentially slow function to return all keys involved, sorted, as a vector. | |
bool | exists (size_t idx) const |
MATLAB interface utility: Checks whether a factor index idx exists in the graph and is a live pointer. | |
Public Member Functions inherited from gtsam::EliminateableFactorGraph< DiscreteFactorGraph > | |
boost::shared_ptr< BayesNetType > | eliminateSequential (OptionalOrdering ordering=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none, OptionalOrderingType orderingType=boost::none) const |
Do sequential elimination of all variables to produce a Bayes net. More... | |
boost::shared_ptr< BayesTreeType > | eliminateMultifrontal (OptionalOrdering ordering=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none, OptionalOrderingType orderingType=boost::none) const |
Do multifrontal elimination of all variables to produce a Bayes tree. More... | |
std::pair< boost::shared_ptr< BayesNetType >, boost::shared_ptr< FactorGraphType > > | eliminatePartialSequential (const Ordering &ordering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Do sequential elimination of some variables, in ordering provided, to produce a Bayes net and a remaining factor graph. More... | |
std::pair< boost::shared_ptr< BayesNetType >, boost::shared_ptr< FactorGraphType > > | eliminatePartialSequential (const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Do sequential elimination of the given variables in an ordering computed by COLAMD to produce a Bayes net and a remaining factor graph. More... | |
std::pair< boost::shared_ptr< BayesTreeType >, boost::shared_ptr< FactorGraphType > > | eliminatePartialMultifrontal (const Ordering &ordering, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Do multifrontal elimination of some variables, in ordering provided, to produce a Bayes tree and a remaining factor graph. More... | |
std::pair< boost::shared_ptr< BayesTreeType >, boost::shared_ptr< FactorGraphType > > | eliminatePartialMultifrontal (const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Do multifrontal elimination of the given variables in an ordering computed by COLAMD to produce a Bayes net and a remaining factor graph. More... | |
boost::shared_ptr< BayesNetType > | marginalMultifrontalBayesNet (boost::variant< const Ordering &, const KeyVector & > variables, OptionalOrdering marginalizedVariableOrdering=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Compute the marginal of the requested variables and return the result as a Bayes net. More... | |
boost::shared_ptr< BayesTreeType > | marginalMultifrontalBayesTree (boost::variant< const Ordering &, const KeyVector & > variables, OptionalOrdering marginalizedVariableOrdering=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Compute the marginal of the requested variables and return the result as a Bayes tree. More... | |
boost::shared_ptr< FactorGraphType > | marginal (const KeyVector &variables, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const |
Compute the marginal factor graph of the requested variables. More... | |
Public Types | |
typedef DiscreteFactorGraph | This |
Typedef to this class. | |
typedef FactorGraph< DiscreteFactor > | Base |
Typedef to base factor graph type. | |
typedef EliminateableFactorGraph< This > | BaseEliminateable |
Typedef to base elimination class. | |
typedef boost::shared_ptr< This > | shared_ptr |
shared_ptr to this class | |
typedef KeyVector | Indices |
A map from keys to values. | |
typedef Assignment< Key > | Values |
typedef boost::shared_ptr< Values > | sharedValues |
Public Types inherited from gtsam::FactorGraph< DiscreteFactor > | |
typedef DiscreteFactor | FactorType |
factor type | |
typedef boost::shared_ptr< DiscreteFactor > | sharedFactor |
Shared pointer to a factor. | |
typedef sharedFactor | value_type |
typedef FastVector< sharedFactor >::iterator | iterator |
typedef FastVector< sharedFactor >::const_iterator | const_iterator |
Public Types inherited from gtsam::EliminateableFactorGraph< DiscreteFactorGraph > | |
typedef EliminationTraits< FactorGraphType > | EliminationTraitsType |
Typedef to the specific EliminationTraits for this graph. | |
typedef EliminationTraitsType::ConditionalType | ConditionalType |
Conditional type stored in the Bayes net produced by elimination. | |
typedef EliminationTraitsType::BayesNetType | BayesNetType |
Bayes net type produced by sequential elimination. | |
typedef EliminationTraitsType::EliminationTreeType | EliminationTreeType |
Elimination tree type that can do sequential elimination of this graph. | |
typedef EliminationTraitsType::BayesTreeType | BayesTreeType |
Bayes tree type produced by multifrontal elimination. | |
typedef EliminationTraitsType::JunctionTreeType | JunctionTreeType |
Junction tree type that can do multifrontal elimination of this graph. | |
typedef 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 subgraph. More... | |
typedef boost::function< EliminationResult(const FactorGraphType &, const Ordering &)> | Eliminate |
The function type that does a single dense elimination step on a subgraph. | |
typedef boost::optional< const Ordering & > | OptionalOrdering |
Typedef for an optional ordering as an argument to elimination functions. | |
typedef boost::optional< const VariableIndex & > | OptionalVariableIndex |
Typedef for an optional variable index as an argument to elimination functions. | |
typedef boost::optional< Ordering::OrderingType > | OptionalOrderingType |
Typedef for an optional ordering type. | |
Additional Inherited Members | |
Protected Member Functions inherited from gtsam::FactorGraph< DiscreteFactor > | |
FactorGraph () | |
Default constructor. | |
FactorGraph (ITERATOR firstFactor, ITERATOR lastFactor) | |
Constructor from iterator over factors (shared_ptr or plain objects) | |
FactorGraph (const CONTAINER &factors) | |
Construct from container of factors (shared_ptr or plain objects) | |
Protected Attributes inherited from gtsam::FactorGraph< DiscreteFactor > | |
FastVector< sharedFactor > | factors_ |
concept check, makes sure FACTOR defines print and equals More... | |
DiscreteFactor::sharedValues gtsam::DiscreteFactorGraph::optimize | ( | ) | const |
Solve the factor graph by performing variable elimination in COLAMD order using the dense elimination function specified in function
, followed by back-substitution resulting from elimination.
Is equivalent to calling graph.eliminateSequential()->optimize().