libDAI
decmap.h
Go to the documentation of this file.
1 /* This file is part of libDAI - http://www.libdai.org/
2  *
3  * Copyright (c) 2006-2011, The libDAI authors. All rights reserved.
4  *
5  * Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
6  */
7 
8 
11 
12 
13 #ifndef __defined_libdai_decmap_h
14 #define __defined_libdai_decmap_h
15 
16 
17 #include <dai/daialg.h>
18 
19 
20 namespace dai {
21 
22 
24 
28 class DecMAP : public DAIAlgFG {
29  private:
31  std::vector<size_t> _state;
37  size_t _iters;
38 
39  public:
41  struct Properties {
43  size_t verbose;
44 
46  bool reinit;
47 
49  std::string ianame;
50 
53  } props;
54 
55  public:
57  DecMAP() : DAIAlgFG(), _state(), _logp(), _maxdiff(), _iters(), props() {}
58 
60 
63  DecMAP( const FactorGraph &fg, const PropertySet &opts );
64 
65 
67 
68  virtual DecMAP* clone() const { return new DecMAP(*this); }
69  virtual DecMAP* construct( const FactorGraph &fg, const PropertySet &opts ) const { return new DecMAP( fg, opts ); }
70  virtual std::string name() const { return "DECMAP"; }
71  virtual Factor belief( const Var &v ) const { return beliefV( findVar( v ) ); }
72  virtual Factor belief( const VarSet &/*vs*/ ) const;
73  virtual Factor beliefV( size_t i ) const;
74  virtual Factor beliefF( size_t I ) const { return belief( factor(I).vars() ); }
75  virtual std::vector<Factor> beliefs() const;
76  virtual Real logZ() const { return _logp; }
77  virtual std::vector<size_t> findMaximum() const { return _state; }
78  virtual void init() { _maxdiff = 0.0; _iters = 0; }
79  virtual void init( const VarSet &/*ns*/ ) { init(); }
80  virtual Real run();
81  virtual Real maxDiff() const { return _maxdiff; }
82  virtual size_t Iterations() const { return _iters; }
83  virtual void setProperties( const PropertySet &opts );
84  virtual PropertySet getProperties() const;
85  virtual std::string printProperties() const;
87 };
88 
89 
90 } // end of namespace dai
91 
92 
93 #endif