Improved VarSet and the GIBBS alias
authorJoris Mooij <joris.mooij@tuebingen.mpg.de>
Wed, 4 Aug 2010 12:13:04 +0000 (14:13 +0200)
committerJoris Mooij <joris.mooij@tuebingen.mpg.de>
Wed, 4 Aug 2010 12:13:04 +0000 (14:13 +0200)
ChangeLog
include/dai/factor.h
include/dai/jtree.h
include/dai/varset.h
tests/aliases.conf

index b1f3ffe..13e19b2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,7 @@
 git HEAD
 --------
+* Improved VarSet
+  - nrStates() now returns a double instead of a size_t
 * Improved ClusterGraph
   - added ClusterGraph(const FactorGraph& fg, bool onlyMaximal) constructor
   - findVar( const Var& n ) no longer throws an exception if the variable is
index e354f50..abcc786 100644 (file)
@@ -93,7 +93,9 @@ class TFactor {
         /** \param vars contains the variables that the new factor should depend on.
          *  \param p Points to array of values to be added.
          */
-        TFactor( const VarSet& vars, const T* p ) : _vs(vars), _p(p, p + _vs.nrStates(), _vs.nrStates()) {}
+        TFactor( const VarSet& vars, const T* p ) : _vs(vars), _p(p, p + (size_t)_vs.nrStates(), (size_t)_vs.nrStates()) {
+            DAI_ASSERT( _vs.nrStates() <= std::numeric_limits<std::size_t>::max() );
+        }
 
         /// Constructs factor depending on variables in \a vars, copying the values from \a p
         TFactor( const VarSet& vars, const TProb<T> &p ) : _vs(vars), _p(p) {
index c27be06..83ad338 100644 (file)
@@ -203,6 +203,8 @@ class JTree : public DAIAlgRG {
 
 /// Calculates upper bound to the treewidth of a FactorGraph, using the specified heuristic
 /** \relates JTree
+ *  \param fg the factor graph for which the treewidth should be bounded
+ *  \param fn the heuristic cost function used for greedy variable elimination
  *  \param maxStates maximum total number of states in outer regions of junction tree (0 means no limit)
  *  \throws OUT_OF_MEMORY if the total number of states becomes larger than maxStates
  *  \return a pair (number of variables in largest clique, number of states in largest clique)
index c2a33bc..a58e572 100644 (file)
@@ -131,13 +131,10 @@ class VarSet : public SmallSet<Var> {
          *  number of possible values ("states") of variable \f$x_l\f$, the number of
          *  joint configurations of the variables in \f$\{x_l\}_{l\in L}\f$ is given by \f$\prod_{l\in L} S_l\f$.
          */
-        size_t nrStates() const {
-            size_t states = 1;
-            for( VarSet::const_iterator n = begin(); n != end(); n++ ) {
-                size_t newStates = states * n->states();
-                DAI_ASSERT( newStates >= states );
-                states = newStates;
-            }
+        double nrStates() const {
+            double states = 1.0;
+            for( VarSet::const_iterator n = begin(); n != end(); n++ )
+                states *= n->states();
             return states;
         }
     //@}
index d0e2c91..4df765f 100644 (file)
@@ -171,7 +171,7 @@ LCBP:                           LCBP_FULLCAVin_SEQRND
 
 # --- GIBBS -------------------
 
-GIBBS:                          GIBBS[iters=10000,burnin=100,restart=1000]
+GIBBS:                          GIBBS[maxiter=10000,burnin=100,restart=10000]
 
 # --- CBP ---------------------