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.
* Removed utils/remove_short_loops and matlab/remove_short_loops.
* 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
* Improved factor.h (merged from SVN head): mainly new functionality
* Moved everything into namespace "dai"
* Added ExactInf class for brute force exact inference
* 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
* Replaced Complex with real numbers (negative potentials is just not
used enough to warrant the additional "complexity" :))
* Moved Properties and MaxDiff frameworks from InfAlg to each individual
inference algorithm, because the Properties framework was not as
convenient as I hoped, and not every inference algorithm needs a maxdiff
variable. Also, replaced some FactorGraph functionality in InfAlg by a
function that returns the FactorGraph. The result is cleaner (less
entangled) code.
* 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
removed updatedFactor(size_t)
removed _normtype and NormType()
- 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() -> maxVal()
part_sum() -> partSum()
- toc() in util.h now returns seconds as a double
- VarSet::operator&&
- Properties -> PropertySet
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.
`