13 #ifndef __defined_libdai_gibbs_h
14 #define __defined_libdai_gibbs_h
35 typedef std::vector<size_t> _count_t;
37 typedef std::vector<size_t> _state_t;
41 std::vector<_count_t> _var_counts;
43 std::vector<_count_t> _factor_counts;
74 Gibbs() :
DAIAlgFG(), _sample_count(0), _var_counts(), _factor_counts(), _iters(0), _state(), _max_state(), _max_score(-INFINITY) {}
80 Gibbs(
const FactorGraph &fg,
const PropertySet &opts ) :
DAIAlgFG(fg), _sample_count(0), _var_counts(), _factor_counts(), _iters(0), _state(), _max_state(), _max_score(-INFINITY) {
81 setProperties( opts );
88 virtual Gibbs* clone()
const {
return new Gibbs(*
this); }
89 virtual Gibbs* construct(
const FactorGraph &fg,
const PropertySet &opts )
const {
return new Gibbs( fg, opts ); }
90 virtual std::string name()
const {
return "GIBBS"; }
91 virtual Factor belief(
const Var &v )
const {
return beliefV( findVar( v ) ); }
92 virtual Factor belief(
const VarSet &vs )
const;
93 virtual Factor beliefV(
size_t i )
const;
94 virtual Factor beliefF(
size_t I )
const;
95 virtual std::vector<Factor> beliefs()
const;
96 virtual Real logZ()
const { DAI_THROW(NOT_IMPLEMENTED);
return 0.0; }
97 std::vector<size_t>
findMaximum()
const {
return _max_state; }
99 virtual void init(
const VarSet & ) { init(); }
101 virtual Real maxDiff()
const { DAI_THROW(NOT_IMPLEMENTED);
return 0.0; }
102 virtual size_t Iterations()
const {
return _iters; }
103 virtual void setMaxIter(
size_t maxiter ) { props.maxiter = maxiter; }
104 virtual void setProperties(
const PropertySet &opts );
105 virtual PropertySet getProperties()
const;
106 virtual std::string printProperties()
const;
112 void randomizeState();
115 std::vector<size_t>& state() {
return _state; }
117 const std::vector<size_t>& state()
const {
return _state; }
126 Prob getVarDist(
size_t i );
128 void resampleVar(
size_t i );
130 size_t getFactorEntry(
size_t I );
132 size_t getFactorEntryDiff(
size_t I,
size_t i );
139 std::vector<size_t> getGibbsState(
const FactorGraph &fg,
size_t maxiter );
TFactor< Real > Factor
Represents a factor with values of type dai::Real.
Definition: factor.h:640
TProb< Real > Prob
Represents a vector with entries of type dai::Real.
Definition: prob.h:766
double Real
Real number (alias for double, which could be changed to long double if necessary) ...
Definition: util.h:98
std::vector< size_t > findMaximum(const InfAlg &obj)
Calculates the joint state of all variables that has maximum probability, according to the inference ...
Definition: daialg.cpp:211
Defines the Property and PropertySet classes, which are mainly used for managing parameters of infere...
DAIAlg< FactorGraph > DAIAlgFG
Base class for inference algorithms that operate on a FactorGraph.
Definition: daialg.h:263
Namespace for libDAI.
Definition: alldai.cpp:16
Defines the FactorGraph class, which represents factor graphs (e.g., Bayesian networks or Markov rand...
Defines the general interface for inference methods in libDAI (classes InfAlg, DaiAlg<>, DaiAlgFG and DaiAlgRG).
Allows the user to specify which algorithms will be built into libDAI.