dai::ClusterGraph Class Reference

A ClusterGraph is a hypergraph with variables as nodes, and "clusters" (sets of variables) as hyperedges. More...

#include <dai/clustergraph.h>

List of all members.

Public Types

typedef BipartiteGraph::Neighbor Neighbor
 Shorthand for BipartiteGraph::Neighbor.
typedef BipartiteGraph::Edge Edge
 Shorthand for BipartiteGraph::Edge.

Public Member Functions

Constructors and destructors

 ClusterGraph ()
 Default constructor.
 ClusterGraph (const std::vector< VarSet > &cls)
 Construct from vector of VarSet 's.
Queries

const BipartiteGraphbipGraph () const
 Returns a constant reference to the graph structure.
size_t nrVars () const
 Returns number of variables.
const std::vector< Var > & vars () const
 Returns a constant reference to the variables.
const Varvar (size_t i) const
 Returns a constant reference to the i'th variable.
size_t nrClusters () const
 Returns number of clusters.
const std::vector< VarSet > & clusters () const
 Returns a constant reference to the clusters.
const VarSetcluster (size_t I) const
 Returns a constant reference to the I'th cluster.
const std::vector< VarSet > & toVector () const
 Returns a constant reference to the clusters.
size_t size () const
 Returns number of clusters.
size_t findVar (const Var &n) const
 Returns the index of variable n.
VarSet Delta (size_t i) const
 Returns union of clusters that contain the i 'th variable.
VarSet delta (size_t i) const
 Returns union of clusters that contain the i 'th (except this variable itself).
bool adj (size_t i1, size_t i2) const
 Returns true if variables with indices i1 and i2 are adjacent, i.e., both contained in the same cluster.
bool isMaximal (size_t I) const
 Returns true if cluster I is not contained in a larger cluster.
Operations

void insert (const VarSet &cl)
 Inserts a cluster (if it does not already exist).
ClusterGrapheraseNonMaximal ()
 Erases all clusters that are not maximal.
ClusterGrapheraseSubsuming (size_t i)
 Erases all clusters that contain the i 'th variable.
Variable elimination

template<class EliminationChoice >
ClusterGraph VarElim (EliminationChoice f) const
 Performs Variable Elimination, keeping track of the interactions that are created along the way.

Private Attributes

BipartiteGraph _G
 Stores the neighborhood structure.
std::vector< Var_vars
 Stores the variables corresponding to the nodes.
std::vector< VarSet_clusters
 Stores the clusters corresponding to the hyperedges.

Friends

Input/Ouput

std::ostream & operator<< (std::ostream &os, const ClusterGraph &cl)
 Writes a ClusterGraph to an output stream.

Detailed Description

A ClusterGraph is a hypergraph with variables as nodes, and "clusters" (sets of variables) as hyperedges.

It is implemented as a bipartite graph with variable (Var) nodes and cluster (VarSet) nodes. One may think of a ClusterGraph as a FactorGraph without the actual factor values.


Member Typedef Documentation

Shorthand for BipartiteGraph::Neighbor.

Shorthand for BipartiteGraph::Edge.


Constructor & Destructor Documentation

dai::ClusterGraph::ClusterGraph (  )  [inline]

Default constructor.

dai::ClusterGraph::ClusterGraph ( const std::vector< VarSet > &  cls  ) 

Construct from vector of VarSet 's.


Member Function Documentation

const BipartiteGraph& dai::ClusterGraph::bipGraph (  )  const [inline]

Returns a constant reference to the graph structure.

size_t dai::ClusterGraph::nrVars (  )  const [inline]

Returns number of variables.

const std::vector<Var>& dai::ClusterGraph::vars (  )  const [inline]

Returns a constant reference to the variables.

const Var& dai::ClusterGraph::var ( size_t  i  )  const [inline]

Returns a constant reference to the i'th variable.

size_t dai::ClusterGraph::nrClusters (  )  const [inline]

Returns number of clusters.

const std::vector<VarSet>& dai::ClusterGraph::clusters (  )  const [inline]

Returns a constant reference to the clusters.

const VarSet& dai::ClusterGraph::cluster ( size_t  I  )  const [inline]

Returns a constant reference to the I'th cluster.

const std::vector<VarSet>& dai::ClusterGraph::toVector (  )  const [inline]

Returns a constant reference to the clusters.

Deprecated:
Please use dai::ClusterGraph::clusters() instead
size_t dai::ClusterGraph::size (  )  const [inline]

Returns number of clusters.

Deprecated:
Please use dai::ClusterGraph::nrClusters() instead
size_t dai::ClusterGraph::findVar ( const Var n  )  const [inline]

Returns the index of variable n.

Exceptions:
OBJECT_NOT_FOUND if the variable does not occur in the cluster graph
VarSet dai::ClusterGraph::Delta ( size_t  i  )  const [inline]

Returns union of clusters that contain the i 'th variable.

VarSet dai::ClusterGraph::delta ( size_t  i  )  const [inline]

Returns union of clusters that contain the i 'th (except this variable itself).

bool dai::ClusterGraph::adj ( size_t  i1,
size_t  i2 
) const [inline]

Returns true if variables with indices i1 and i2 are adjacent, i.e., both contained in the same cluster.

bool dai::ClusterGraph::isMaximal ( size_t  I  )  const [inline]

Returns true if cluster I is not contained in a larger cluster.

void dai::ClusterGraph::insert ( const VarSet cl  )  [inline]

Inserts a cluster (if it does not already exist).

ClusterGraph& dai::ClusterGraph::eraseNonMaximal (  )  [inline]

Erases all clusters that are not maximal.

ClusterGraph& dai::ClusterGraph::eraseSubsuming ( size_t  i  )  [inline]

Erases all clusters that contain the i 'th variable.

template<class EliminationChoice >
ClusterGraph dai::ClusterGraph::VarElim ( EliminationChoice  f  )  const [inline]

Performs Variable Elimination, keeping track of the interactions that are created along the way.

Template Parameters:
EliminationChoice should support "size_t operator()( const ClusterGraph &cl, const std::set<size_t> &remainingVars )"
Parameters:
f function object which returns the next variable index to eliminate; for example, a dai::greedyVariableElimination object.
Returns:
A set of elimination "cliques".

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const ClusterGraph cl 
) [friend]

Writes a ClusterGraph to an output stream.


Member Data Documentation

Stores the neighborhood structure.

std::vector<Var> dai::ClusterGraph::_vars [private]

Stores the variables corresponding to the nodes.

std::vector<VarSet> dai::ClusterGraph::_clusters [private]

Stores the clusters corresponding to the hyperedges.


The documentation for this class was generated from the following files:
Generated on Sun May 9 16:51:33 2010 for libDAI by  doxygen 1.6.3