libDAI-0.2.2 (2008-??-??) ------------------------- * Now compiles also under Visual C++. * Added Exceptions framework. * Replaced ENUM2,ENUM3,ENUM4,ENUM5,ENUM6 by single DAI_ENUM macro. * Added more features to utils/createfg for creating factor graphs. * Pervasive change of BipartiteGraph implementation (based on an idea by Giuseppe Passino). BipartiteGraph no longer stores the node properties (former _V1 and _V2), nor does it store a dense adjacency matrix anymore, nor an edge list. Instead, it stores the graph structure as lists of neighboring nodes. This yields a significant memory/speed improvement for large factor graphs, and is more elegant as well. Iterating over neighbors is made easy by using boost::foreach. * Improved index.h (merged from SVN head): - Renamed Index -> IndexFor - Added some .reserve()'s to IndexFor methods which yields a 25% speedup of testregression - Replaced multind by Permute - Added MultiFor - Added State * Moved everything into namespace "dai" * Renamed DEBUG to DAI_DEBUG to avoid conflicts * Added conditional compilation of inference methods * Contributions by Peter Gober: - Renamed variable _N in mr.* for compatibility with g++ under cygwin * Contributions by Giuseppe Passino: - removed "using namespace std;" from header files - bad practice - moved header files in include/dai and sources in src - changed #ifndefs to GNU style - added extra warning checks (-W -Wextra) and fixed resulting warnings - dai::TProb: o removed copy constructor and assignment operators (redundant) o implementation of some methods via STL algorithms o added methods takeExp, takeLog, takeLog0 for transformation in-place o explicit constructor (prevents implicit conversion from size_t to TProb) o added operator+,+=,-,-=, with argument T (for calculations in log-scale) - Added "logdomain" property to BP, a boolean that controls whether calculations are done in the log-domain or in the linear domain; doing calculations in the log-domain may help if the numerical range of a double is too small. * Contributions by Christian Wojek: - New FactorGraph constructor that constructs from given ranges of factors and variables - Optimization of FactorGraph constructors using tr1::unordered_map. * FactorGraph constructors no longer check for short loops (huge speed increase for large factor graphs), nor for negative entries. Also, the normtype is now Prob::NORMPROB by default. * VarSet is now implemented using a std::vector instead of a std::set, which yields a significant speed improvement. * Improved MaxSpanningTreePrims algorithm (uses boost::graph) * Small optimization in Diffs * Improved ClusterGraph implementation, yielding significant speedups for the JunctionTree algorithm on large factorgraphs. * Improved documetation * Interface changes: - VarSet:: stateSpace() -> states() VarSet( const std::set ) -> VarSet( begin, end, sizeHint=0 ) VarSet( const std::vector ) -> VarSet( begin, end, sizeHint=0 ) removed bool operator|| operator&&(const VarSet&) -> intersects(const VarSet&) operator&&(const Var&) -> contains(const Var&) - FactorGraph:: delta(const Var &) -> delta(size_t) Delta(const Var &) -> Delta(size_t) makeCavity(const Var &) -> makeCavity(size_t) vars() -> vars factors() -> factors removed MakeFactorCavity(size_t) removed ExactMarginal(const VarSet &) removed ExactlogZ() moved isConnected() to BipartiteGraph - RegionGraph:: nr_ORs() -> nrORs() nr_IRs() -> nrIRs() ORs() -> ORs IRs() -> IRs - *::Regenerate() -> *::create() - Renamed Index -> IndexFor - Diffs: max() -> maxDiff() max_size() -> maxSize() - Prob::max() -> Prob::maxVal() - Factor::max() -> Factor::maxVal() - toc() in util.h now returns seconds as a double - VarSet::operator&& libDAI-0.2.1 (2008-05-26) ------------------------- Bugfix release. * added missing cstdio header in util.h * fixed Properties in MR_CLAMPING_* and MR_EXACT_* * added description of the factor graph fileformat * improved Makefile libDAI-0.2.0 (2006-11-30) ------------------------- First public release.