libDAI
include/dai/decmap.h
Go to the documentation of this file.
00001 /*  This file is part of libDAI - http://www.libdai.org/
00002  *
00003  *  Copyright (c) 2006-2011, The libDAI authors. All rights reserved.
00004  *
00005  *  Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
00006  */
00007 
00008 
00011 
00012 
00013 #ifndef __defined_libdai_decmap_h
00014 #define __defined_libdai_decmap_h
00015 
00016 
00017 #include <dai/daialg.h>
00018 
00019 
00020 namespace dai {
00021 
00022 
00024 
00028 class DecMAP : public DAIAlgFG {
00029     private:
00031         std::vector<size_t> _state;
00033         Real _logp;
00035         Real _maxdiff;
00037         size_t _iters;
00038 
00039     public:
00041         struct Properties {
00043             size_t verbose;
00044 
00046             bool reinit;
00047 
00049             std::string ianame;
00050 
00052             PropertySet iaopts;
00053         } props;
00054 
00055     public:
00057         DecMAP() : DAIAlgFG(), _state(), _logp(), _maxdiff(), _iters(), props() {}
00058 
00060 
00063         DecMAP( const FactorGraph &fg, const PropertySet &opts );
00064 
00065 
00067 
00068         virtual DecMAP* clone() const { return new DecMAP(*this); }
00069         virtual DecMAP* construct( const FactorGraph &fg, const PropertySet &opts ) const { return new DecMAP( fg, opts ); }
00070         virtual std::string name() const { return "DECMAP"; }
00071         virtual Factor belief( const Var &v ) const { return beliefV( findVar( v ) ); }
00072         virtual Factor belief( const VarSet &/*vs*/ ) const;
00073         virtual Factor beliefV( size_t i ) const;
00074         virtual Factor beliefF( size_t I ) const { return belief( factor(I).vars() ); }
00075         virtual std::vector<Factor> beliefs() const;
00076         virtual Real logZ() const { return _logp; }
00077         virtual std::vector<size_t> findMaximum() const { return _state; }
00078         virtual void init() { _maxdiff = 0.0; _iters = 0; }
00079         virtual void init( const VarSet &/*ns*/ ) { init(); }
00080         virtual Real run();
00081         virtual Real maxDiff() const { return _maxdiff; }
00082         virtual size_t Iterations() const { return _iters; }
00083         virtual void setProperties( const PropertySet &opts );
00084         virtual PropertySet getProperties() const;
00085         virtual std::string printProperties() const;
00087 };
00088 
00089 
00090 } // end of namespace dai
00091 
00092 
00093 #endif