Loading...
Searching...
No Matches
gtsam::DiscreteFactorGraph Class Reference
Discrete

## Detailed Description

A Discrete Factor Graph is a factor graph where all factors are Discrete, i.e.

Factor == DiscreteFactor

Inheritance diagram for gtsam::DiscreteFactorGraph:

## 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 DERIVED_FACTOR>
| DiscreteFactorGraph (const FactorGraph< DERIVED_FACTOR > &graph)
| Implicit copy/downcast constructor to override explicit template container constructor.
virtual | ~DiscreteFactorGraph ()
| Destructor.
template<typename... Args>
void | add (Args &&... args)
| Add a decision-tree factor.
KeySet | keys () const
| Return the set of variables involved in the factors (set union).
DiscreteKeys | discreteKeys () const
| Return the DiscreteKeys in this factor graph.
DecisionTreeFactor | product () const
| return product of all factors as a single factor
double | operator() (const DiscreteValues &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 override
| print
DiscreteBayesNet | sumProduct (OptionalOrderingType orderingType=boost::none) const
| Implement the sum-product algorithm.
DiscreteBayesNet | sumProduct (const Ordering &ordering) const
| Implement the sum-product algorithm.
DiscreteLookupDAG | maxProduct (OptionalOrderingType orderingType=boost::none) const
| Implement the max-product algorithm.
DiscreteValues | optimize (OptionalOrderingType orderingType=boost::none) const
| Implement the max-product algorithm.
DiscreteValues | optimize (const Ordering &ordering) const
| Find the maximum probable explanation (MPE) by doing max-product.
*name Wrapper support *std::string | html (const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DiscreteFactor::Names &names={}) const
| Render as html tables.
Testable
bool | equals (const This &fg, double tol=1e-9) const
Public Member Functions inherited from gtsam::FactorGraph< DiscreteFactor >
virtual | ~FactorGraph ()=default
| Default destructor Public and virtual so boost serialization can call it.
| FactorGraph (std::initializer_list< boost::shared_ptr< DERIVEDFACTOR > > sharedFactors)
| Constructor that takes an initializer list of shared pointers.
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).
IsDerived< DERIVEDFACTOR > | push_back (boost::shared_ptr< DERIVEDFACTOR > factor)
| Add a factor directly using a shared_ptr.
IsDerived< DERIVEDFACTOR > | emplace_shared (Args &&... args)
| Emplace a shared pointer to factor of given type.
IsDerived< DERIVEDFACTOR > | 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).
IsDerived< DERIVEDFACTOR > | add (boost::shared_ptr< DERIVEDFACTOR > factor)
| add is a synonym for push_back.
std::enable_if< std::is_base_of< FactorType, DERIVEDFACTOR >::value, boost::assign::list_inserter< RefCallPushBack< This > > >::type | operator+= (boost::shared_ptr< DERIVEDFACTOR > factor)
| += works well with boost::assign list inserter.
HasDerivedElementType< ITERATOR > | push_back (ITERATOR firstFactor, ITERATOR lastFactor)
| Push back many factors with an iterator over shared_ptr (factors are not copied).
HasDerivedValueType< ITERATOR > | push_back (ITERATOR firstFactor, ITERATOR lastFactor)
| Push back many factors with an iterator (factors are copied).
HasDerivedElementType< CONTAINER > | push_back (const CONTAINER &container)
| Push back many factors as shared_ptr's in a container (factors are not copied).
HasDerivedValueType< CONTAINER > | push_back (const CONTAINER &container)
| Push back non-pointer objects in a container (factors are copied).
void | add (const FACTOR_OR_CONTAINER &factorOrContainer)
| Add a factor or container of factors, including STL collections, BayesTrees, etc.
boost::assign::list_inserter< CRefCallPushBack< This > > | operator+= (const FACTOR_OR_CONTAINER &factorOrContainer)
| Add a factor or container of factors, including STL collections, BayesTrees, etc.
std::enable_if< std::is_base_of< This, typenameCLIQUE::FactorGraphType >::value >::type | push_back (const BayesTree< CLIQUE > &bayesTree)
| Push back a BayesTree as a collection of factors.
FactorIndices | add_factors (const CONTAINER &factors, bool useEmptySlots=false)
| Add new factors to a factor graph and returns a list of new factor indices, optionally finding and reusing empty factor slots.
bool | equals (const This &fg, double tol=1e-9) const
| Check equality up to tolerance.
size_t | size () const
| return the number of factors (including any null factors set by remove() ).
bool | empty () const
| Check if the graph is empty (null factors set by remove() will cause this to return false).
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.
const_iterator | end () const
| Iterator to end of factors.
sharedFactor | front () const
| Get the first factor.
sharedFactor | back () const
| Get the last factor.
double | error (const HybridValues &values) const
| Add error for all factors.
iterator | begin ()
| non-const STL-style begin()
iterator | end ()
| non-const STL-style end()
virtual void | resize (size_t size)
| Directly resize the number of factors in the graph.
void | remove (size_t i)
| delete factor without re-arranging indexes by inserting a nullptr 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.
void | dot (std::ostream &os, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
| Output to graphviz format, stream version.
std::string | dot (const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
| Output to graphviz format string.
void | saveGraph (const std::string &filename, const KeyFormatter &keyFormatter=DefaultKeyFormatter, const DotWriter &writer=DotWriter()) const
| output to file with graphviz format.
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 (OptionalOrderingType orderingType=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const
| Do sequential elimination of all variables to produce a Bayes net.
boost::shared_ptr< BayesTreeType > | eliminateMultifrontal (OptionalOrderingType orderingType=boost::none, const Eliminate &function=EliminationTraitsType::DefaultEliminate, OptionalVariableIndex variableIndex=boost::none) const
| Do multifrontal elimination of all variables to produce a Bayes tree.
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.
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.
boost::shared_ptr< BayesNetType > | marginalMultifrontalBayesNet (boost::variant< const Ordering &, const KeyVector & > variables, 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.
boost::shared_ptr< BayesTreeType > | marginalMultifrontalBayesTree (boost::variant< const Ordering &, const KeyVector & > variables, 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.
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.

## Public Types

using | This = DiscreteFactorGraph
| this class
using | Base = FactorGraph<DiscreteFactor>
| base factor graph type
using | BaseEliminateable
| for elimination
using | shared_ptr = boost::shared_ptr<This>
| shared_ptr to This
using | Values = DiscreteValues
| backwards compatibility
using | Indices = KeyVector
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.
typedef std::function< EliminationResult(const FactorGraphType &, const Ordering &)> | Eliminate
| The function type that does a single dense elimination step on a subgraph.
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 >
bool | isEqual (const FactorGraph &other) const
| Check exact equality of the factor pointers. Useful for derived ==.
| 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

## Member Typedef Documentation

## BaseEliminateable

using gtsam::DiscreteFactorGraph::BaseEliminateable

Initial value:
EliminateableFactorGraph<This>
gtsam::EliminateableFactorGraph
EliminateableFactorGraph is a base class for factor graphs that contains elimination algorithms.
Definition EliminateableFactorGraph.h:57

for elimination

## Constructor & Destructor Documentation

## DiscreteFactorGraph()

gtsam::DiscreteFactorGraph::DiscreteFactorGraph | ( |  | ) |

inline

Default constructor.

> map from keys to values

## Member Function Documentation

## html()

string gtsam::DiscreteFactorGraph::html | ( | const KeyFormatter & | keyFormatter = DefaultKeyFormatter,
|  | const DiscreteFactor::Names & | names = {} ) const

Render as html tables.

Parameters

  keyFormatter | GTSAM-style Key formatter.
  names | optional, a map from Key to category names.

Returns
  std::string a (potentially long) html string.

## maxProduct()

DiscreteLookupDAG gtsam::DiscreteFactorGraph::maxProduct | ( | OptionalOrderingType | orderingType = boost::none | ) | const

Implement the max-product algorithm.

Parameters

  orderingType | : one of COLAMD, METIS, NATURAL, CUSTOM

Returns
  DiscreteLookupDAG DAG with lookup tables

## optimize() [1/2]

DiscreteValues gtsam::DiscreteFactorGraph::optimize | ( | const Ordering & | ordering | ) | const

Find the maximum probable explanation (MPE) by doing max-product.

Parameters

  ordering |

Returns
  DiscreteValues : MPE

## optimize() [2/2]

DiscreteValues gtsam::DiscreteFactorGraph::optimize | ( | OptionalOrderingType | orderingType = boost::none | ) | const

Implement the max-product algorithm.

Parameters

  ordering |

Returns
  DiscreteLookupDAG `DAG with lookup tables */ DiscreteLookupDAG maxProduct(const Ordering& ordering) const;

/**

Find the maximum probable explanation (MPE) by doing max-product.

Parameters

  orderingType |

Returns
  DiscreteValues : MPE

## print()

void gtsam::DiscreteFactorGraph::print | ( | const std::string & | s = "DiscreteFactorGraph",
|  | const KeyFormatter & | formatter = DefaultKeyFormatter ) const

override virtual

print

Reimplemented from gtsam::FactorGraph< DiscreteFactor >.

## sumProduct() [1/2]

DiscreteBayesNet gtsam::DiscreteFactorGraph::sumProduct | ( | const Ordering & | ordering | ) | const

Implement the sum-product algorithm.

Parameters

  ordering |

Returns
  DiscreteBayesNet encoding posterior P(X|Z)

## sumProduct() [2/2]

DiscreteBayesNet gtsam::DiscreteFactorGraph::sumProduct | ( | OptionalOrderingType | orderingType = boost::none | ) | const

Implement the sum-product algorithm.

Parameters

  orderingType | : one of COLAMD, METIS, NATURAL, CUSTOM

Returns
  DiscreteBayesNet encoding posterior P(X|Z)

The documentation for this class was generated from the following files:

- /build/gtsam-gchP9J/gtsam-4.2.2+dfsg/gtsam/discrete/DiscreteFactorGraph.h
- /build/gtsam-gchP9J/gtsam-4.2.2+dfsg/gtsam/discrete/DiscreteFactorGraph.cpp