Classes | Public Types | Protected Attributes | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
gtsam::TableFactor Class Reference

#include <TableFactor.h>

Inheritance diagram for gtsam::TableFactor:
Inheritance graph
[legend]

Classes

struct  Ring
 

Public Types

typedef std::vector< std::pair< DiscreteValues, double > > AssignValList
 
typedef DiscreteFactor Base
 Typedef to base class. More...
 
using Binary = std::function< double(const double, const double)>
 
typedef std::shared_ptr< TableFactorshared_ptr
 
typedef Eigen::SparseVector< double >::InnerIterator SparseIt
 
typedef TableFactor This
 
using Unary = std::function< double(const double &)>
 
using UnaryAssignment = std::function< double(const Assignment< Key > &, const double &)>
 
- Public Types inherited from gtsam::DiscreteFactor
typedef Factor Base
 Our base class. More...
 
typedef std::shared_ptr< DiscreteFactorshared_ptr
 shared_ptr to this class More...
 
typedef DiscreteFactor This
 This class. More...
 
using Values = DiscreteValues
 backwards compatibility More...
 
using Names = DiscreteValues::Names
 Translation table from values to strings. More...
 
- Public Types inherited from gtsam::Factor
typedef KeyVector::const_iterator const_iterator
 Const iterator over keys. More...
 
typedef KeyVector::iterator iterator
 Iterator over keys. More...
 

Public Member Functions

Standard Constructors
 TableFactor ()
 
 TableFactor (const DiscreteKeys &keys, const TableFactor &potentials)
 
 TableFactor (const DiscreteKeys &keys, const Eigen::SparseVector< double > &table)
 
 TableFactor (const DiscreteKeys &keys, const std::vector< double > &table)
 
 TableFactor (const DiscreteKeys &keys, const std::string &table)
 
template<class SOURCE >
 TableFactor (const DiscreteKey &key, SOURCE table)
 Single-key specialization. More...
 
 TableFactor (const DiscreteKey &key, const std::vector< double > &row)
 Single-key specialization, with vector of doubles. More...
 
 TableFactor (const DiscreteKeys &keys, const DecisionTreeFactor &dtf)
 Constructor from DecisionTreeFactor. More...
 
 TableFactor (const DiscreteKeys &keys, const DecisionTree< Key, double > &dtree)
 Constructor from DecisionTree<Key, double>/AlgebraicDecisionTree. More...
 
 TableFactor (const DiscreteConditional &c)
 
Advanced Interface
TableFactor apply (Unary op) const
 
TableFactor apply (UnaryAssignment op) const
 
TableFactor apply (const TableFactor &f, Binary op) const
 
DiscreteKeys contractDkeys (const TableFactor &f) const
 
DiscreteKeys freeDkeys (const TableFactor &f) const
 Return keys in free mode which are the dimensions not involved in the contraction operation. More...
 
DiscreteKeys unionDkeys (const TableFactor &f) const
 Return union of DiscreteKeys in two factors. More...
 
uint64_t unionRep (const DiscreteKeys &keys, const DiscreteValues &assign, const uint64_t idx) const
 Create unique representation of union modes. More...
 
std::unordered_map< uint64_t, AssignValListcreateMap (const DiscreteKeys &contract, const DiscreteKeys &free) const
 
uint64_t uniqueRep (const DiscreteKeys &keys, const uint64_t idx) const
 Create unique representation. More...
 
uint64_t uniqueRep (const DiscreteValues &assignments) const
 Create unique representation with DiscreteValues. More...
 
DiscreteValues findAssignments (const uint64_t idx) const
 Find DiscreteValues for corresponding index. More...
 
double findValue (const DiscreteValues &values) const
 Find value for corresponding DiscreteValues. More...
 
shared_ptr combine (size_t nrFrontals, Binary op) const
 
shared_ptr combine (const Ordering &keys, Binary op) const
 
std::vector< std::pair< DiscreteValues, double > > enumerate () const
 Enumerate all values into a map from values to double. More...
 
TableFactor prune (size_t maxNrAssignments) const
 Prune the decision tree of discrete variables. More...
 
Wrapper support
std::string markdown (const KeyFormatter &keyFormatter=DefaultKeyFormatter, const Names &names={}) const override
 Render as markdown table. More...
 
std::string html (const KeyFormatter &keyFormatter=DefaultKeyFormatter, const Names &names={}) const override
 Render as html table. More...
 
HybridValues methods.
double error (const HybridValues &values) const override
 
AlgebraicDecisionTree< KeyerrorTree () const override
 Compute error for each assignment and return as a tree. More...
 
- Public Member Functions inherited from gtsam::DiscreteFactor
 DiscreteFactor ()
 
template<typename CONTAINER >
 DiscreteFactor (const CONTAINER &keys, const std::map< Key, size_t > cardinalities={})
 
DiscreteKeys discreteKeys () const
 Return all the discrete keys associated with this factor. More...
 
std::map< Key, size_tcardinalities () const
 
size_t cardinality (Key j) const
 
double error (const DiscreteValues &values) const
 Error is just -log(value) More...
 
- Public Member Functions inherited from gtsam::Factor
virtual ~Factor ()=default
 Default destructor. More...
 
bool empty () const
 Whether the factor is empty (involves zero variables). More...
 
Key front () const
 First key. More...
 
Key back () const
 Last key. More...
 
const_iterator find (Key key) const
 find More...
 
const KeyVectorkeys () const
 Access the factor's involved variable keys. More...
 
const_iterator begin () const
 
const_iterator end () const
 
size_t size () const
 
virtual void printKeys (const std::string &s="Factor", const KeyFormatter &formatter=DefaultKeyFormatter) const
 print only keys More...
 
bool equals (const This &other, double tol=1e-9) const
 check equality More...
 
KeyVectorkeys ()
 
iterator begin ()
 
iterator end ()
 

Protected Attributes

Eigen::SparseVector< double > sparse_table_
 SparseVector of nonzero probabilities. More...
 
- Protected Attributes inherited from gtsam::DiscreteFactor
std::map< Key, size_tcardinalities_
 Map of Keys and their cardinalities. More...
 
- Protected Attributes inherited from gtsam::Factor
KeyVector keys_
 The keys involved in this factor. More...
 

Private Member Functions

DiscreteKey discreteKey (size_t i) const
 Return ith key in keys_ as a DiscreteKey. More...
 
size_t keyValueForIndex (Key target_key, uint64_t index) const
 Uses lazy cartesian product to find nth entry in the cartesian product of arrays in O(1) Example) v0 | v1 | val 0 | 0 | 10 0 | 1 | 21 1 | 0 | 32 1 | 1 | 43 keyValueForIndex(v1, 2) = 0. More...
 

Static Private Member Functions

static Eigen::SparseVector< double > Convert (const std::string &table)
 Convert probability table given as string to SparseVector. More...
 
static Eigen::SparseVector< double > Convert (const std::vector< double > &table)
 

Private Attributes

std::map< Key, size_tdenominators_
 Map of Keys and their denominators used in keyValueForIndex. More...
 
DiscreteKeys sorted_dkeys_
 Sorted DiscreteKeys to use internally. More...
 

Testable

bool equals (const DiscreteFactor &other, double tol=1e-9) const override
 equality More...
 
void print (const std::string &s="TableFactor:\n", const KeyFormatter &formatter=DefaultKeyFormatter) const override
 print More...
 
double evaluate (const DiscreteValues &values) const
 
double operator() (const DiscreteValues &values) const override
 Evaluate probability distribution, sugar. More...
 
double error (const DiscreteValues &values) const
 Calculate error for DiscreteValues x, is -log(probability). More...
 
TableFactor operator* (const TableFactor &f) const
 multiply two TableFactors More...
 
DecisionTreeFactor operator* (const DecisionTreeFactor &f) const override
 multiply with DecisionTreeFactor More...
 
TableFactor operator/ (const TableFactor &f) const
 divide by factor f (safely) More...
 
DecisionTreeFactor toDecisionTreeFactor () const override
 Convert into a decisiontree. More...
 
TableFactor choose (const DiscreteValues assignments, DiscreteKeys parent_keys) const
 Create a TableFactor that is a subset of this TableFactor. More...
 
shared_ptr sum (size_t nrFrontals) const
 Create new factor by summing all values with the same separator values. More...
 
shared_ptr sum (const Ordering &keys) const
 Create new factor by summing all values with the same separator values. More...
 
shared_ptr max (size_t nrFrontals) const
 Create new factor by maximizing over all values with the same separator. More...
 
shared_ptr max (const Ordering &keys) const
 Create new factor by maximizing over all values with the same separator. More...
 
static double safe_div (const double &a, const double &b)
 

Additional Inherited Members

- Protected Member Functions inherited from gtsam::Factor
 Factor ()
 
template<typename CONTAINER >
 Factor (const CONTAINER &keys)
 
template<typename ITERATOR >
 Factor (ITERATOR first, ITERATOR last)
 
- Static Protected Member Functions inherited from gtsam::Factor
template<typename CONTAINER >
static Factor FromKeys (const CONTAINER &keys)
 
template<typename ITERATOR >
static Factor FromIterators (ITERATOR first, ITERATOR last)
 

Detailed Description

A discrete probabilistic factor optimized for sparsity. Uses sparse_table_ to store only the nonzero probabilities. Computes the assigned value for the key using the ordering which the nonzero probabilties are stored in. (lazy cartesian product)

Definition at line 46 of file TableFactor.h.

Member Typedef Documentation

◆ AssignValList

typedef std::vector<std::pair<DiscreteValues, double> > gtsam::TableFactor::AssignValList

Definition at line 95 of file TableFactor.h.

◆ Base

Typedef to base class.

Definition at line 92 of file TableFactor.h.

◆ Binary

using gtsam::TableFactor::Binary = std::function<double(const double, const double)>

Definition at line 99 of file TableFactor.h.

◆ shared_ptr

typedef std::shared_ptr<TableFactor> gtsam::TableFactor::shared_ptr

Definition at line 93 of file TableFactor.h.

◆ SparseIt

typedef Eigen::SparseVector<double>::InnerIterator gtsam::TableFactor::SparseIt

Definition at line 94 of file TableFactor.h.

◆ This

Definition at line 91 of file TableFactor.h.

◆ Unary

using gtsam::TableFactor::Unary = std::function<double(const double&)>

Definition at line 96 of file TableFactor.h.

◆ UnaryAssignment

using gtsam::TableFactor::UnaryAssignment = std::function<double(const Assignment<Key>&, const double&)>

Definition at line 98 of file TableFactor.h.

Constructor & Destructor Documentation

◆ TableFactor() [1/10]

gtsam::TableFactor::TableFactor ( )

Default constructor for I/O

Definition at line 32 of file TableFactor.cpp.

◆ TableFactor() [2/10]

gtsam::TableFactor::TableFactor ( const DiscreteKeys keys,
const TableFactor potentials 
)

Constructor from DiscreteKeys and TableFactor

Definition at line 35 of file TableFactor.cpp.

◆ TableFactor() [3/10]

gtsam::TableFactor::TableFactor ( const DiscreteKeys keys,
const Eigen::SparseVector< double > &  table 
)

Constructor from sparse_table

Definition at line 45 of file TableFactor.cpp.

◆ TableFactor() [4/10]

gtsam::TableFactor::TableFactor ( const DiscreteKeys keys,
const std::vector< double > &  table 
)
inline

Constructor from doubles

Definition at line 131 of file TableFactor.h.

◆ TableFactor() [5/10]

gtsam::TableFactor::TableFactor ( const DiscreteKeys keys,
const std::string &  table 
)
inline

Constructor from string

Definition at line 135 of file TableFactor.h.

◆ TableFactor() [6/10]

template<class SOURCE >
gtsam::TableFactor::TableFactor ( const DiscreteKey key,
SOURCE  table 
)
inline

Single-key specialization.

Definition at line 140 of file TableFactor.h.

◆ TableFactor() [7/10]

gtsam::TableFactor::TableFactor ( const DiscreteKey key,
const std::vector< double > &  row 
)
inline

Single-key specialization, with vector of doubles.

Definition at line 144 of file TableFactor.h.

◆ TableFactor() [8/10]

gtsam::TableFactor::TableFactor ( const DiscreteKeys keys,
const DecisionTreeFactor dtf 
)

Constructor from DecisionTreeFactor.

Definition at line 91 of file TableFactor.cpp.

◆ TableFactor() [9/10]

gtsam::TableFactor::TableFactor ( const DiscreteKeys keys,
const DecisionTree< Key, double > &  dtree 
)

Constructor from DecisionTree<Key, double>/AlgebraicDecisionTree.

Definition at line 60 of file TableFactor.cpp.

◆ TableFactor() [10/10]

gtsam::TableFactor::TableFactor ( const DiscreteConditional c)
explicit

Construct from a DiscreteConditional type

Definition at line 96 of file TableFactor.cpp.

Member Function Documentation

◆ apply() [1/3]

TableFactor gtsam::TableFactor::apply ( const TableFactor f,
Binary  op 
) const

Apply binary operator (*this) "op" f

Parameters
fthe second argument for op
opa binary operator that operates on TableFactor

Definition at line 302 of file TableFactor.cpp.

◆ apply() [2/3]

TableFactor gtsam::TableFactor::apply ( Unary  op) const

Apply unary operator op(*this) where op accepts the discrete value.

Parameters
opa unary operator that operates on TableFactor

Definition at line 263 of file TableFactor.cpp.

◆ apply() [3/3]

TableFactor gtsam::TableFactor::apply ( UnaryAssignment  op) const

Apply unary operator op(*this) where op accepts the discrete assignment and the value at that assignment.

Parameters
opa unary operator that operates on TableFactor

Definition at line 282 of file TableFactor.cpp.

◆ choose()

TableFactor gtsam::TableFactor::choose ( const DiscreteValues  assignments,
DiscreteKeys  parent_keys 
) const

Create a TableFactor that is a subset of this TableFactor.

Definition at line 193 of file TableFactor.cpp.

◆ combine() [1/2]

TableFactor::shared_ptr gtsam::TableFactor::combine ( const Ordering keys,
Binary  op 
) const

Combine frontal variables in an Ordering using binary operator "op"

Parameters
nrFrontalsnr. of frontal to combine variables in this factor
opa binary operator that operates on TableFactor
Returns
shared pointer to newly created TableFactor

Definition at line 467 of file TableFactor.cpp.

◆ combine() [2/2]

TableFactor::shared_ptr gtsam::TableFactor::combine ( size_t  nrFrontals,
Binary  op 
) const

Combine frontal variables using binary operator "op"

Parameters
nrFrontalsnr. of frontal to combine variables in this factor
opa binary operator that operates on TableFactor
Returns
shared pointer to newly created TableFactor

Definition at line 436 of file TableFactor.cpp.

◆ contractDkeys()

DiscreteKeys gtsam::TableFactor::contractDkeys ( const TableFactor f) const

Return keys in contract mode.

Modes are each of the dimensions of a sparse tensor, and the contract modes represent which dimensions will be involved in contraction (aka tensor multiplication).

Definition at line 336 of file TableFactor.cpp.

◆ Convert() [1/2]

Eigen::SparseVector< double > gtsam::TableFactor::Convert ( const std::string &  table)
staticprivate

Convert probability table given as string to SparseVector.

Definition at line 116 of file TableFactor.cpp.

◆ Convert() [2/2]

Eigen::SparseVector< double > gtsam::TableFactor::Convert ( const std::vector< double > &  table)
staticprivate

Convert probability table given as doubles to SparseVector. Example) {0, 1, 1, 0, 0, 1, 0} -> values: {1, 1, 1}, indices: {1, 2, 5}

Definition at line 100 of file TableFactor.cpp.

◆ createMap()

unordered_map< uint64_t, TableFactor::AssignValList > gtsam::TableFactor::createMap ( const DiscreteKeys contract,
const DiscreteKeys free 
) const

Create a hash map of input factor with assignment of contract modes as keys and vector of hashed assignment of free modes and value as values.

Definition at line 381 of file TableFactor.cpp.

◆ discreteKey()

DiscreteKey gtsam::TableFactor::discreteKey ( size_t  i) const
inlineprivate

Return ith key in keys_ as a DiscreteKey.

Parameters
iith key in keys_
Returns
DiscreteKey

Definition at line 78 of file TableFactor.h.

◆ enumerate()

std::vector< std::pair< DiscreteValues, double > > gtsam::TableFactor::enumerate ( ) const

Enumerate all values into a map from values to double.

Definition at line 508 of file TableFactor.cpp.

◆ equals()

bool gtsam::TableFactor::equals ( const DiscreteFactor other,
double  tol = 1e-9 
) const
overridevirtual

equality

Implements gtsam::DiscreteFactor.

Definition at line 126 of file TableFactor.cpp.

◆ error() [1/2]

double gtsam::TableFactor::error ( const DiscreteValues values) const

Calculate error for DiscreteValues x, is -log(probability).

Definition at line 162 of file TableFactor.cpp.

◆ error() [2/2]

double gtsam::TableFactor::error ( const HybridValues values) const
overridevirtual

Calculate error for HybridValues x, is -log(probability) Simply dispatches to DiscreteValues version.

Reimplemented from gtsam::DiscreteFactor.

Definition at line 167 of file TableFactor.cpp.

◆ errorTree()

AlgebraicDecisionTree< Key > gtsam::TableFactor::errorTree ( ) const
overridevirtual

Compute error for each assignment and return as a tree.

Implements gtsam::DiscreteFactor.

Definition at line 172 of file TableFactor.cpp.

◆ evaluate()

double gtsam::TableFactor::evaluate ( const DiscreteValues values) const
inline

Calculate probability for given values x, is just look up in TableFactor.

Definition at line 174 of file TableFactor.h.

◆ findAssignments()

DiscreteValues gtsam::TableFactor::findAssignments ( const uint64_t  idx) const

Find DiscreteValues for corresponding index.

Definition at line 427 of file TableFactor.cpp.

◆ findValue()

double gtsam::TableFactor::findValue ( const DiscreteValues values) const

Find value for corresponding DiscreteValues.

Definition at line 149 of file TableFactor.cpp.

◆ freeDkeys()

DiscreteKeys gtsam::TableFactor::freeDkeys ( const TableFactor f) const

Return keys in free mode which are the dimensions not involved in the contraction operation.

Definition at line 346 of file TableFactor.cpp.

◆ html()

string gtsam::TableFactor::html ( const KeyFormatter keyFormatter = DefaultKeyFormatter,
const Names names = {} 
) const
overridevirtual

Render as html table.

Parameters
keyFormatterGTSAM-style Key formatter.
namesoptional, category names corresponding to choices.
Returns
std::string a html string.

Implements gtsam::DiscreteFactor.

Definition at line 554 of file TableFactor.cpp.

◆ keyValueForIndex()

size_t gtsam::TableFactor::keyValueForIndex ( Key  target_key,
uint64_t  index 
) const
private

Uses lazy cartesian product to find nth entry in the cartesian product of arrays in O(1) Example) v0 | v1 | val 0 | 0 | 10 0 | 1 | 21 1 | 0 | 32 1 | 1 | 43 keyValueForIndex(v1, 2) = 0.

Parameters
target_keynth entry's key to find out its assigned value
indexnth entry in the sparse vector
Returns
TableFactor

Definition at line 502 of file TableFactor.cpp.

◆ markdown()

string gtsam::TableFactor::markdown ( const KeyFormatter keyFormatter = DefaultKeyFormatter,
const Names names = {} 
) const
overridevirtual

Render as markdown table.

Parameters
keyFormatterGTSAM-style Key formatter.
namesoptional, category names corresponding to choices.
Returns
std::string a markdown string.

Implements gtsam::DiscreteFactor.

Definition at line 524 of file TableFactor.cpp.

◆ max() [1/2]

shared_ptr gtsam::TableFactor::max ( const Ordering keys) const
inline

Create new factor by maximizing over all values with the same separator.

Definition at line 222 of file TableFactor.h.

◆ max() [2/2]

shared_ptr gtsam::TableFactor::max ( size_t  nrFrontals) const
inline

Create new factor by maximizing over all values with the same separator.

Definition at line 217 of file TableFactor.h.

◆ operator()()

double gtsam::TableFactor::operator() ( const DiscreteValues values) const
overridevirtual

Evaluate probability distribution, sugar.

Implements gtsam::DiscreteFactor.

Definition at line 136 of file TableFactor.cpp.

◆ operator*() [1/2]

DecisionTreeFactor gtsam::TableFactor::operator* ( const DecisionTreeFactor f) const
overridevirtual

multiply with DecisionTreeFactor

Implements gtsam::DiscreteFactor.

Definition at line 177 of file TableFactor.cpp.

◆ operator*() [2/2]

TableFactor gtsam::TableFactor::operator* ( const TableFactor f) const
inline

multiply two TableFactors

Definition at line 185 of file TableFactor.h.

◆ operator/()

TableFactor gtsam::TableFactor::operator/ ( const TableFactor f) const
inline

divide by factor f (safely)

Definition at line 195 of file TableFactor.h.

◆ print()

void gtsam::TableFactor::print ( const std::string &  s = "TableFactor:\n",
const KeyFormatter formatter = DefaultKeyFormatter 
) const
overridevirtual

print

Reimplemented from gtsam::DiscreteFactor.

Definition at line 246 of file TableFactor.cpp.

◆ prune()

TableFactor gtsam::TableFactor::prune ( size_t  maxNrAssignments) const

Prune the decision tree of discrete variables.

Pruning will set the values to be "pruned" to 0 indicating a 0 probability. An assignment is pruned if it is not in the top maxNrAssignments values.

A violation can occur if there are more duplicate values than maxNrAssignments. A violation here is the need to un-prune the decision tree (e.g. all assignment values are 1.0). We could have another case where some subset of duplicates exist (e.g. for a tree with 8 assignments we have 1, 1, 1, 1, 0.8, 0.7, 0.6, 0.5), but this is not a violation since the for maxNrAssignments=5 the top values are (1, 0.8).

Parameters
maxNrAssignmentsThe maximum number of assignments to keep.
Returns
TableFactor

Definition at line 587 of file TableFactor.cpp.

◆ safe_div()

double gtsam::TableFactor::safe_div ( const double &  a,
const double &  b 
)
static

Definition at line 238 of file TableFactor.cpp.

◆ sum() [1/2]

shared_ptr gtsam::TableFactor::sum ( const Ordering keys) const
inline

Create new factor by summing all values with the same separator values.

Definition at line 212 of file TableFactor.h.

◆ sum() [2/2]

shared_ptr gtsam::TableFactor::sum ( size_t  nrFrontals) const
inline

Create new factor by summing all values with the same separator values.

Definition at line 207 of file TableFactor.h.

◆ toDecisionTreeFactor()

DecisionTreeFactor gtsam::TableFactor::toDecisionTreeFactor ( ) const
overridevirtual

Convert into a decisiontree.

Implements gtsam::DiscreteFactor.

Definition at line 182 of file TableFactor.cpp.

◆ unionDkeys()

DiscreteKeys gtsam::TableFactor::unionDkeys ( const TableFactor f) const

Return union of DiscreteKeys in two factors.

Definition at line 356 of file TableFactor.cpp.

◆ unionRep()

uint64_t gtsam::TableFactor::unionRep ( const DiscreteKeys keys,
const DiscreteValues assign,
const uint64_t  idx 
) const

Create unique representation of union modes.

Definition at line 365 of file TableFactor.cpp.

◆ uniqueRep() [1/2]

uint64_t gtsam::TableFactor::uniqueRep ( const DiscreteKeys keys,
const uint64_t  idx 
) const

Create unique representation.

Definition at line 404 of file TableFactor.cpp.

◆ uniqueRep() [2/2]

uint64_t gtsam::TableFactor::uniqueRep ( const DiscreteValues assignments) const

Create unique representation with DiscreteValues.

Definition at line 416 of file TableFactor.cpp.

Member Data Documentation

◆ denominators_

std::map<Key, size_t> gtsam::TableFactor::denominators_
private

Map of Keys and their denominators used in keyValueForIndex.

Definition at line 53 of file TableFactor.h.

◆ sorted_dkeys_

DiscreteKeys gtsam::TableFactor::sorted_dkeys_
private

Sorted DiscreteKeys to use internally.

Definition at line 55 of file TableFactor.h.

◆ sparse_table_

Eigen::SparseVector<double> gtsam::TableFactor::sparse_table_
protected

SparseVector of nonzero probabilities.

Definition at line 49 of file TableFactor.h.


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


gtsam
Author(s):
autogenerated on Thu Jun 13 2024 03:18:09