Loading...
Searching...
No Matches
gtsam::VariableIndex Class Reference

## Detailed Description

The VariableIndex class computes and stores the block column structure of a factor graph.

The factor graph stores a collection of factors, each of which involves a set of variables. In contrast, the VariableIndex is built from a factor graph prior to elimination, and stores the list of factors that involve each variable. This information is stored as a deque of lists of factor indices.

## Advanced Interface

class | boost::serialization::access
| Serialization function.
template<class FG>
void | augment (const FG &factors, boost::optional< const FactorIndices & > newFactorIndices=boost::none)
| Augment the variable index with new factors.
void | augmentExistingFactor (const FactorIndex factorIndex, const KeySet &newKeys)
| Augment the variable index after an existing factor now affects to more variable Keys.
template<typename ITERATOR, class FG>
void | remove (ITERATOR firstFactor, ITERATOR lastFactor, const FG &factors)
| Remove entries corresponding to the specified factors.
template<typename ITERATOR>
void | removeUnusedVariables (ITERATOR firstKey, ITERATOR lastKey)
| Remove unused empty variables (in debug mode verifies they are empty).
const_iterator | begin () const
| Iterator to the first variable entry.
const_iterator | end () const
| Iterator to the first variable entry.
const_iterator | find (Key key) const
| Find the iterator for the requested variable entry.
Factor_iterator | factorsBegin (Key variable)
Factor_iterator | factorsEnd (Key variable)
Factor_const_iterator | factorsBegin (Key variable) const
Factor_const_iterator | factorsEnd (Key variable) const
const FactorIndices & | internalAt (Key variable) const
| Internal version of 'at' that asserts existence.
FactorIndices & | internalAt (Key variable)
| Internal version of 'at' that asserts existence.

## Standard Constructors

| VariableIndex ()
| Default constructor, creates an empty VariableIndex.
template<class FG>
| VariableIndex (const FG &factorGraph)
| Create a VariableIndex that computes and stores the block column structure of a factor graph.

## Standard Interface

size_t | size () const
| The number of variable entries. This is equal to the number of unique variable Keys.
size_t | nFactors () const
| The number of factors in the original factor graph.
size_t | nEntries () const
| The number of nonzero blocks, i.e. the number of variable-factor entries.
const FactorIndices & | operator[] (Key variable) const
| Access a list of factors by variable.
bool | empty (Key variable) const
| Return true if no factors associated with a variable.

## Testable

bool | equals (const VariableIndex &other, double tol=0.0) const
| Test for equality (for unit tests and debug assertions).
void | print (const std::string &str="VariableIndex: ", const KeyFormatter &keyFormatter=DefaultKeyFormatter) const
| Print the variable index (for unit tests and debugging).
void | outputMetisFormat (std::ostream &os) const
| Output dual hypergraph to Metis file format for use with hmetis In the dual graph, variables are hyperedges, factors are nodes.

## Public Types

typedef boost::shared_ptr< VariableIndex > | shared_ptr
typedef FactorIndices::iterator | Factor_iterator
typedef FactorIndices::const_iterator | Factor_const_iterator
typedef KeyMap::const_iterator | const_iterator
typedef KeyMap::const_iterator | iterator
typedef KeyMap::value_type | value_type

## Protected Types

typedef FastMap< Key, FactorIndices > | KeyMap

## Protected Attributes

KeyMap | index_
size_t | nFactors_
size_t | nEntries_

## Member Function Documentation

## augment()

template<class FG>

void gtsam::VariableIndex::augment | ( | const FG & | factors,
|  | boost::optional< const FactorIndices & > | newFactorIndices = boost::none )

Augment the variable index with new factors.

This can be used when solving problems incrementally.

## augmentExistingFactor()

void gtsam::VariableIndex::augmentExistingFactor | ( | const FactorIndex | factorIndex,
|  | const KeySet & | newKeys )

Augment the variable index after an existing factor now affects to more variable Keys.

This can be used when solving problems incrementally, with smart factors or in general with factors with a dynamic number of Keys.

## remove()

template<typename ITERATOR, class FG>

void gtsam::VariableIndex::remove | ( | ITERATOR | firstFactor,
|  | ITERATOR | lastFactor,
|  | const FG & | factors )

Remove entries corresponding to the specified factors.

NOTE: We intentionally do not decrement nFactors_ because the factor indices need to remain consistent. Removing factors from a factor graph does not shift the indices of other factors. Also, we keep nFactors_ one greater than the highest-numbered factor referenced in a VariableIndex.

Parameters

  indices | The indices of the factors to remove, which must match `factors`
  factors | The factors being removed, which must symbolically correspond exactly to the factors with the specified `indices` that were added.

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

- /build/gtsam-gchP9J/gtsam-4.2.2+dfsg/gtsam/inference/VariableIndex.h
- /build/gtsam-gchP9J/gtsam-4.2.2+dfsg/gtsam/inference/VariableIndex-inl.h
- /build/gtsam-gchP9J/gtsam-4.2.2+dfsg/gtsam/inference/VariableIndex.cpp