dai::ExactInf Class Reference

Exact inference algorithm using brute force enumeration (mainly useful for testing purposes). More...

#include <dai/exactinf.h>

Inheritance diagram for dai::ExactInf:

dai::DAIAlg< GRM > dai::InfAlg

List of all members.

Public Member Functions

Constructors/destructors
 ExactInf ()
 Default constructor.
 ExactInf (const FactorGraph &fg, const PropertySet &opts)
 Construct from FactorGraph fg and PropertySet opts.
General InfAlg interface
virtual ExactInfclone () const
 Returns a pointer to a new, cloned copy of *this (i.e., virtual copy constructor).
virtual std::string identify () const
 Identifies itself for logging purposes.
virtual Factor belief (const Var &v) const
 Returns the (approximate) marginal probability distribution of a variable.
virtual Factor belief (const VarSet &vs) const
 Returns the (approximate) marginal probability distribution of a set of variables.
virtual Factor beliefV (size_t i) const
 Returns the (approximate) marginal probability distribution of the variable with index i.
virtual Factor beliefF (size_t I) const
 Returns the (approximate) marginal probability distribution of the variables on which factor I depends.
virtual std::vector< Factorbeliefs () const
 Returns all beliefs (approximate marginal probability distributions) calculated by the algorithm.
virtual Real logZ () const
 Returns the logarithm of the (approximated) partition sum (normalizing constant of the factor graph).
std::vector< std::size_t > findMaximum () const
virtual void init ()
 Initializes all data structures of the approximate inference algorithm.
virtual void init (const VarSet &)
 Initializes all data structures corresponding to some set of variables.
virtual Real run ()
 Runs the approximate inference algorithm.
virtual Real maxDiff () const
 Returns maximum difference between single variable beliefs in the last iteration.
virtual size_t Iterations () const
 Returns number of iterations done (one iteration passes over the complete factorgraph).
virtual void setProperties (const PropertySet &opts)
 Set parameters of this inference algorithm.
virtual PropertySet getProperties () const
 Returns parameters of this inference algorithm converted into a PropertySet.
virtual std::string printProperties () const
 Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".
Additional interface specific for ExactInf
Factor calcMarginal (const VarSet &vs) const
 Calculates marginal probability distribution for variables vs.

Public Attributes

struct dai::ExactInf::Properties props

Static Public Attributes

static const char * Name = "EXACT"
 Name of this inference algorithm.

Private Member Functions

void construct ()
 Helper function for constructors.

Private Attributes

std::vector< Factor_beliefsV
 All single variable marginals.
std::vector< Factor_beliefsF
 All factor variable marginals.
Real _logZ
 Logarithm of partition sum.

Classes

struct  Properties
 Parameters for ExactInf. More...


Detailed Description

Exact inference algorithm using brute force enumeration (mainly useful for testing purposes).

Inference is done simply by multiplying all factors together into one large factor, and then calculating marginals and partition sum from the product.

Note:
This inference method can easily exhaust all available memory; in that case, one may try the JTree class instead.

Constructor & Destructor Documentation

dai::ExactInf::ExactInf (  )  [inline]

Default constructor.

dai::ExactInf::ExactInf ( const FactorGraph fg,
const PropertySet opts 
) [inline]

Construct from FactorGraph fg and PropertySet opts.

Parameters:
fg Factor graph.
opts Parameters
See also:
Properties


Member Function Documentation

virtual ExactInf* dai::ExactInf::clone (  )  const [inline, virtual]

Returns a pointer to a new, cloned copy of *this (i.e., virtual copy constructor).

Implements dai::InfAlg.

string dai::ExactInf::identify (  )  const [virtual]

Identifies itself for logging purposes.

Implements dai::InfAlg.

virtual Factor dai::ExactInf::belief ( const Var v  )  const [inline, virtual]

Returns the (approximate) marginal probability distribution of a variable.

Note:
Before this method is called, run() should have been called.

Reimplemented from dai::InfAlg.

Factor dai::ExactInf::belief ( const VarSet vs  )  const [virtual]

Returns the (approximate) marginal probability distribution of a set of variables.

Note:
Before this method is called, run() should have been called.
Exceptions:
NOT_IMPLEMENTED if not implemented/supported.
BELIEF_NOT_AVAILABLE if the requested belief cannot be calculated with this algorithm.

Implements dai::InfAlg.

virtual Factor dai::ExactInf::beliefV ( size_t  i  )  const [inline, virtual]

Returns the (approximate) marginal probability distribution of the variable with index i.

For some approximate inference algorithms, using beliefV() is preferred to belief() for performance reasons.

Note:
Before this method is called, run() should have been called.

Reimplemented from dai::InfAlg.

virtual Factor dai::ExactInf::beliefF ( size_t  I  )  const [inline, virtual]

Returns the (approximate) marginal probability distribution of the variables on which factor I depends.

For some approximate inference algorithms, using beliefF() is preferred to belief() for performance reasons.

Note:
Before this method is called, run() should have been called.

Reimplemented from dai::InfAlg.

vector< Factor > dai::ExactInf::beliefs (  )  const [virtual]

Returns all beliefs (approximate marginal probability distributions) calculated by the algorithm.

Note:
Before this method is called, run() should have been called.

Implements dai::InfAlg.

virtual Real dai::ExactInf::logZ (  )  const [inline, virtual]

Returns the logarithm of the (approximated) partition sum (normalizing constant of the factor graph).

Note:
Before this method is called, run() should have been called.
Exceptions:
NOT_IMPLEMENTED if not implemented/supported

Implements dai::InfAlg.

std::vector< std::size_t > dai::ExactInf::findMaximum (  )  const [virtual]

Note:
The complexity of this calculation is exponential in the number of variables.

Reimplemented from dai::InfAlg.

void dai::ExactInf::init (  )  [virtual]

Initializes all data structures of the approximate inference algorithm.

Note:
This method should be called at least once before run() is called.

Implements dai::InfAlg.

virtual void dai::ExactInf::init ( const VarSet vs  )  [inline, virtual]

Initializes all data structures corresponding to some set of variables.

This method can be used to do a partial initialization after a part of the factor graph has changed. Instead of initializing all data structures, it only initializes those involving the variables in vs.

Exceptions:
NOT_IMPLEMENTED if not implemented/supported

Implements dai::InfAlg.

Real dai::ExactInf::run (  )  [virtual]

Runs the approximate inference algorithm.

Note:
Before run() is called the first time, init() should have been called.

Implements dai::InfAlg.

virtual Real dai::ExactInf::maxDiff (  )  const [inline, virtual]

Returns maximum difference between single variable beliefs in the last iteration.

Exceptions:
NOT_IMPLEMENTED if not implemented/supported

Reimplemented from dai::InfAlg.

virtual size_t dai::ExactInf::Iterations (  )  const [inline, virtual]

Returns number of iterations done (one iteration passes over the complete factorgraph).

Exceptions:
NOT_IMPLEMENTED if not implemented/supported

Reimplemented from dai::InfAlg.

void dai::ExactInf::setProperties ( const PropertySet opts  )  [virtual]

Set parameters of this inference algorithm.

The parameters are set according to the PropertySet opts. The values can be stored either as std::string or as the type of the corresponding MF::props member.

Implements dai::InfAlg.

PropertySet dai::ExactInf::getProperties (  )  const [virtual]

Returns parameters of this inference algorithm converted into a PropertySet.

Implements dai::InfAlg.

string dai::ExactInf::printProperties (  )  const [virtual]

Returns parameters of this inference algorithm formatted as a string in the format "[key1=val1,key2=val2,...,keyn=valn]".

Implements dai::InfAlg.

Factor dai::ExactInf::calcMarginal ( const VarSet vs  )  const

Calculates marginal probability distribution for variables vs.

Note:
The complexity of this calculation is exponential in the number of variables.

void dai::ExactInf::construct (  )  [private]

Helper function for constructors.


Member Data Documentation

const char * dai::ExactInf::Name = "EXACT" [static]

Name of this inference algorithm.

std::vector<Factor> dai::ExactInf::_beliefsV [private]

All single variable marginals.

std::vector<Factor> dai::ExactInf::_beliefsF [private]

All factor variable marginals.

Logarithm of partition sum.


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

Generated on Thu Aug 5 19:04:05 2010 for libDAI by  doxygen 1.5.5