Merged regiongraph.* and daialg.* from SVN head,
[libdai.git] / include / dai / hak.h
index 7ce573b..112c881 100644 (file)
@@ -46,7 +46,7 @@ class HAK : public DAIAlgRG {
             size_t verbose;
             size_t maxiter;
             double tol;
-            ENUM3(ClustersType,MIN,DELTA,LOOP)
+            DAI_ENUM(ClustersType,MIN,DELTA,LOOP)
             ClustersType clusters;
             bool doubleloop;
             size_t loopdepth;
@@ -63,6 +63,9 @@ class HAK : public DAIAlgRG {
         /// Clone function
         HAK* clone() const { return new HAK(*this); }
         
+        /// Create (virtual constructor)
+        virtual HAK* create() const { return new HAK(); }
+
         /// Construct from RegionGraph
         HAK(const RegionGraph & rg, const PropertySet &opts);
 
@@ -94,16 +97,18 @@ class HAK : public DAIAlgRG {
         double doDoubleLoop();
         double run();
         void init();
+        /// Clear messages and beliefs corresponding to the nodes in ns
+        virtual void init( const VarSet &ns );
         std::string identify() const;
         Factor belief( const Var &n ) const;
         Factor belief( const VarSet &ns ) const;
         std::vector<Factor> beliefs() const;
         Real logZ () const;
 
-        void init( const VarSet &ns );
-        void undoProbs( const VarSet &ns ) { RegionGraph::undoProbs( ns ); init( ns ); }
+        void restoreFactors( const VarSet &ns ) { RegionGraph::restoreFactors( ns ); init( ns ); }
         void setProperties( const PropertySet &opts );
         PropertySet getProperties() const;
+        std::string printProperties() const;
         double maxDiff() const { return maxdiff; }
 
     private: