dai::RegionGraph Class Reference

A RegionGraph combines a bipartite graph consisting of outer regions (type FRegion) and inner regions (type Region) with a FactorGraph. More...

#include <dai/regiongraph.h>

Inheritance diagram for dai::RegionGraph:

dai::FactorGraph dai::DAIAlg< dai::RegionGraph >

List of all members.

Public Member Functions

Constructors and destructors
 RegionGraph ()
 Default constructor.
 RegionGraph (const FactorGraph &fg)
 Partially constructs a region graph from a factor graph.
 RegionGraph (const FactorGraph &fg, const std::vector< VarSet > &ors, const std::vector< Region > &irs, const std::vector< std::pair< size_t, size_t > > &edges)
 Constructs a region graph from a factor graph, a vector of outer regions, a vector of inner regions and a vector of edges.
 RegionGraph (const FactorGraph &fg, const std::vector< Region > &ors, const std::vector< Region > &irs, const std::vector< std::pair< size_t, size_t > > &edges)
 Constructs a region graph from a factor graph, a vector of outer regions, a vector of inner regions and a vector of edges.
 RegionGraph (const FactorGraph &fg, const std::vector< VarSet > &cl)
 Constructs a region graph from a factor graph and a vector of outer clusters (CVM style).
virtual RegionGraphclone () const
 Clone *this (virtual copy constructor).
Queries
size_t nrORs () const
 Returns number of outer regions.
size_t nrIRs () const
 Returns number of inner regions.
const FRegionOR (size_t alpha) const
 Returns constant reference to outer region alpha.
FRegionOR (size_t alpha)
 Returns reference to outer region alpha.
const RegionIR (size_t beta) const
 Returns constant reference to inner region beta.
RegionIR (size_t beta)
 Returns reference to inner region beta.
const NeighborsnbOR (size_t alpha) const
 Returns constant reference to the neighbors of outer region alpha.
const NeighborsnbIR (size_t beta) const
 Returns constant reference to the neighbors of inner region beta.
bool checkCountingNumbers () const
 Check whether the counting numbers are valid.
Operations
virtual void setFactor (size_t I, const Factor &newFactor, bool backup=false)
 Set the content of the I 'th factor and make a backup of its old content if backup == true.
virtual void setFactors (const std::map< size_t, Factor > &facs, bool backup=false)
 Set the contents of all factors as specified by facs and make a backup of the old contents if backup == true.
void RecomputeORs ()
 Recompute all outer regions.
void RecomputeORs (const VarSet &vs)
 Recompute all outer regions involving the variables in vs.
void RecomputeOR (size_t I)
 Recompute all outer regions involving factor I.
void calcCountingNumbers ()
 Calculates counting numbers of inner regions based upon counting numbers of outer regions.

Public Attributes

BipartiteGraph G
 Stores the neighborhood structure.
std::vector< FRegionORs
 The outer regions (corresponding to nodes of type 1).
std::vector< RegionIRs
 The inner regions (corresponding to nodes of type 2).
std::vector< size_t > fac2OR
 Stores for each factor index the index of the outer region it belongs to.

Protected Member Functions

void construct (const FactorGraph &fg, const std::vector< VarSet > &ors, const std::vector< Region > &irs, const std::vector< std::pair< size_t, size_t > > &edges)
 Helper function for constructors.
void constructCVM (const FactorGraph &fg, const std::vector< VarSet > &cl)
 Helper function for constructors (CVM style).

Friends

Input/output
std::ostream & operator<< (std::ostream &os, const RegionGraph &rg)
 Writes a RegionGraph to an output stream.


Detailed Description

A RegionGraph combines a bipartite graph consisting of outer regions (type FRegion) and inner regions (type Region) with a FactorGraph.

A RegionGraph inherits from a FactorGraph and adds additional structure in the form of a "region graph". Our definition of region graph is inspired by [HAK03], which is less general than the definition given in [YFW05].

The extra structure described by a RegionGraph over that described by a FactorGraph is:

Each factor in the factor graph belongs to an outer region; normally, the factor contents of an outer region would be the product of all the factors that belong to that region.


Constructor & Destructor Documentation

dai::RegionGraph::RegionGraph (  )  [inline]

Default constructor.

dai::RegionGraph::RegionGraph ( const FactorGraph fg  )  [inline]

Partially constructs a region graph from a factor graph.

dai::RegionGraph::RegionGraph ( const FactorGraph fg,
const std::vector< VarSet > &  ors,
const std::vector< Region > &  irs,
const std::vector< std::pair< size_t, size_t > > &  edges 
) [inline]

Constructs a region graph from a factor graph, a vector of outer regions, a vector of inner regions and a vector of edges.

The counting numbers for the outer regions are set to 1.

dai::RegionGraph::RegionGraph ( const FactorGraph fg,
const std::vector< Region > &  ors,
const std::vector< Region > &  irs,
const std::vector< std::pair< size_t, size_t > > &  edges 
)

Constructs a region graph from a factor graph, a vector of outer regions, a vector of inner regions and a vector of edges.

Note:
The counting numbers for the outer regions need to be 1.
Deprecated:
Please use dai::RegionGraph::RegionGraph( const FactorGraph &, const std::vector<VarSet> &, const std::vector<Region> &, const std::vector<std::pair<size_t,size_t> > & ) instead.

dai::RegionGraph::RegionGraph ( const FactorGraph fg,
const std::vector< VarSet > &  cl 
) [inline]

Constructs a region graph from a factor graph and a vector of outer clusters (CVM style).

The region graph is constructed as in the Cluster Variation Method.

The outer regions have as variable subsets the clusters specified in cl. Each factor in the factor graph fg is assigned to one of the outer regions. Each outer region gets counting number 1.

The inner regions are (repeated) intersections of outer regions. An inner and an outer region are connected if the variables in the inner region form a subset of the variables in the outer region. The counting numbers for the inner regions are calculated by calcCountingNumbers() and satisfy the Moebius formula.


Member Function Documentation

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

Clone *this (virtual copy constructor).

Reimplemented from dai::FactorGraph.

size_t dai::RegionGraph::nrORs (  )  const [inline]

Returns number of outer regions.

size_t dai::RegionGraph::nrIRs (  )  const [inline]

Returns number of inner regions.

const FRegion& dai::RegionGraph::OR ( size_t  alpha  )  const [inline]

Returns constant reference to outer region alpha.

FRegion& dai::RegionGraph::OR ( size_t  alpha  )  [inline]

Returns reference to outer region alpha.

const Region& dai::RegionGraph::IR ( size_t  beta  )  const [inline]

Returns constant reference to inner region beta.

Region& dai::RegionGraph::IR ( size_t  beta  )  [inline]

Returns reference to inner region beta.

const Neighbors& dai::RegionGraph::nbOR ( size_t  alpha  )  const [inline]

Returns constant reference to the neighbors of outer region alpha.

const Neighbors& dai::RegionGraph::nbIR ( size_t  beta  )  const [inline]

Returns constant reference to the neighbors of inner region beta.

bool dai::RegionGraph::checkCountingNumbers (  )  const

Check whether the counting numbers are valid.

Counting numbers are said to be (variable) valid if for each variable $x$,

\[\sum_{\alpha \ni x} c_\alpha + \sum_{\beta \ni x} c_\beta = 1\]

or in words, if the sum of the counting numbers of the regions that contain the variable equals one.

virtual void dai::RegionGraph::setFactor ( size_t  I,
const Factor newFactor,
bool  backup = false 
) [inline, virtual]

Set the content of the I 'th factor and make a backup of its old content if backup == true.

Reimplemented from dai::FactorGraph.

virtual void dai::RegionGraph::setFactors ( const std::map< size_t, Factor > &  facs,
bool  backup = false 
) [inline, virtual]

Set the contents of all factors as specified by facs and make a backup of the old contents if backup == true.

Reimplemented from dai::FactorGraph.

void dai::RegionGraph::RecomputeORs (  ) 

Recompute all outer regions.

The factor contents of each outer region is set to the product of the factors belonging to that region.

void dai::RegionGraph::RecomputeORs ( const VarSet vs  ) 

Recompute all outer regions involving the variables in vs.

The factor contents of each outer region involving at least one of the variables in vs is set to the product of the factors belonging to that region.

void dai::RegionGraph::RecomputeOR ( size_t  I  ) 

Recompute all outer regions involving factor I.

The factor contents of each outer region involving the I 'th factor is set to the product of the factors belonging to that region.

void dai::RegionGraph::calcCountingNumbers (  ) 

Calculates counting numbers of inner regions based upon counting numbers of outer regions.

The counting numbers of the inner regions are set using the Moebius inversion formula:

\[ c_\beta := 1 - \sum_{\gamma \in \mathrm{an}(\beta)} c_\gamma \]

where $\mathrm{an}(\beta)$ are the ancestors of inner region $\beta$ according to the partial ordering induced by the subset relation (i.e., a region is a child of another region if its variables are a subset of the variables of its parent region).

void dai::RegionGraph::construct ( const FactorGraph fg,
const std::vector< VarSet > &  ors,
const std::vector< Region > &  irs,
const std::vector< std::pair< size_t, size_t > > &  edges 
) [protected]

Helper function for constructors.

void dai::RegionGraph::constructCVM ( const FactorGraph fg,
const std::vector< VarSet > &  cl 
) [protected]

Helper function for constructors (CVM style).


Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const RegionGraph rg 
) [friend]

Writes a RegionGraph to an output stream.


Member Data Documentation

Stores the neighborhood structure.

Reimplemented from dai::FactorGraph.

The outer regions (corresponding to nodes of type 1).

The inner regions (corresponding to nodes of type 2).

std::vector<size_t> dai::RegionGraph::fac2OR

Stores for each factor index the index of the outer region it belongs to.


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

Generated on Thu Feb 11 12:26:07 2010 for libDAI by  doxygen 1.5.5