A ClusterGraph is a hypergraph with variables as nodes, and "clusters" (sets of variables) as hyperedges.
More...
#include <dai/clustergraph.h>
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.
- Todo:
- Remove the _vars and _clusters variables and use only the graph and a contextual factor graph.
dai::ClusterGraph::ClusterGraph |
( |
| ) |
|
|
inline |
dai::ClusterGraph::ClusterGraph |
( |
const std::vector< VarSet > & |
cls | ) |
|
Construct from vector of VarSet 's.
dai::ClusterGraph::ClusterGraph |
( |
const FactorGraph & |
fg, |
|
|
bool |
onlyMaximal |
|
) |
| |
Construct from a factor graph.
Creates cluster graph which has factors in fg as clusters if onlyMaximal == false
, and only the maximal factors in fg if onlyMaximal == true
.
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.
size_t dai::ClusterGraph::findVar |
( |
const Var & |
n | ) |
const |
|
inline |
Returns the index of variable n.
size_t dai::ClusterGraph::findCluster |
( |
const VarSet & |
cl | ) |
const |
|
inline |
Returns the index of a cluster cl.
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.
size_t dai::ClusterGraph::insert |
( |
const VarSet & |
cl | ) |
|
|
inline |
Inserts a cluster (if it does not already exist) and creates new variables, if necessary.
- Note
- This function could be better optimized if the index of one variable in cl would be known. If one could assume _vars to be ordered, a binary search could be used instead of a linear one.
Erases all clusters that are not maximal.
Erases all clusters that contain the i 'th variable.
VarSet dai::ClusterGraph::elimVar |
( |
size_t |
i | ) |
|
|
inline |
Eliminates variable with index i, without deleting the variable itself.
- Note
- This function can be better optimized
std::string dai::ClusterGraph::toString |
( |
| ) |
const |
|
inline |
template<class EliminationChoice >
ClusterGraph dai::ClusterGraph::VarElim |
( |
EliminationChoice |
f, |
|
|
size_t |
maxStates = 0 |
|
) |
| 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. |
maxStates | maximum total number of states of all clusters in the output cluster graph (0 means no limit). |
- Exceptions
-
OUT_OF_MEMORY | if total number of states becomes larger than maxStates |
- Returns
- A set of elimination "cliques".
std::ostream& operator<< |
( |
std::ostream & |
os, |
|
|
const ClusterGraph & |
cl |
|
) |
| |
|
friend |
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: