Merged prob.h, factorgraph.h, factograph.cpp from SVN head (broken!)
[libdai.git] / ChangeLog
1 libDAI-0.2.2 (2008-??-??)
2 -------------------------
3
4 * Now compiles also under Visual C++.
5 * Added Exceptions framework.
6 * Replaced ENUM2,ENUM3,ENUM4,ENUM5,ENUM6 by single DAI_ENUM macro.
7 * Removed utils/remove_short_loops and matlab/remove_short_loops.
8 * Added more features to utils/createfg for creating factor graphs.
9 * Pervasive change of BipartiteGraph implementation (based on an idea by
10 Giuseppe Passino). BipartiteGraph no longer stores the node properties
11 (former _V1 and _V2), nor does it store a dense adjacency matrix anymore,
12 nor an edge list. Instead, it stores the graph structure as lists of
13 neighboring nodes. This yields a significant memory/speed improvement for
14 large factor graphs, and is more elegant as well. Iterating over neighbors is
15 made easy by using boost::foreach.
16 * Improved index.h (merged from SVN head):
17 - Renamed Index -> IndexFor
18 - Added some .reserve()'s to IndexFor methods which yields a
19 25% speedup of testregression
20 - Replaced multind by Permute
21 - Added MultiFor
22 - Added State
23 * Improved factor.h (merged from SVN head): mainly new functionality
24 * Moved everything into namespace "dai"
25 * Added ExactInf class for brute force exact inference
26 * Renamed DEBUG to DAI_DEBUG to avoid conflicts
27 * Added conditional compilation of inference methods
28 * Contributions by Peter Gober:
29 - Renamed variable _N in mr.* for compatibility with g++ under cygwin
30 * Contributions by Giuseppe Passino:
31 - removed "using namespace std;" from header files - bad practice
32 - moved header files in include/dai and sources in src
33 - changed #ifndefs to GNU style
34 - added extra warning checks (-W -Wextra) and fixed resulting warnings
35 - dai::TProb:
36 o removed copy constructor and assignment operators (redundant)
37 o implementation of some methods via STL algorithms
38 o added methods takeExp, takeLog, takeLog0 for transformation in-place
39 o explicit constructor (prevents implicit conversion from size_t to TProb)
40 o added operator+,+=,-,-=, with argument T (for calculations in log-scale)
41 - Added "logdomain" property to BP, a boolean that controls whether
42 calculations are done in the log-domain or in the linear domain;
43 doing calculations in the log-domain may help if the numerical range
44 of a double is too small.
45 * Contributions by Christian Wojek:
46 - New FactorGraph constructor that constructs from given ranges of factors
47 and variables
48 - Optimization of FactorGraph constructors using tr1::unordered_map.
49 * FactorGraph constructors no longer check for short loops (huge speed
50 increase for large factor graphs), nor for negative entries. Also, the
51 normtype is now Prob::NORMPROB by default.
52 * VarSet is now implemented using a std::vector<Var> instead of a
53 std::set<Var>, which yields a significant speed improvement.
54 * Improved MaxSpanningTreePrims algorithm (uses boost::graph)
55 * Small optimization in Diffs
56 * Replaced Complex with real numbers (negative potentials is just not
57 used enough to warrant the additional "complexity" :))
58 * Moved Properties and MaxDiff frameworks from InfAlg to each individual
59 inference algorithm, because the Properties framework was not as
60 convenient as I hoped, and not every inference algorithm needs a maxdiff
61 variable. Also, replaced some FactorGraph functionality in InfAlg by a
62 function that returns the FactorGraph. The result is cleaner (less
63 entangled) code.
64 * Improved ClusterGraph implementation, yielding significant speedups
65 for the JunctionTree algorithm on large factorgraphs.
66 * Improved documetation
67 * Interface changes:
68 - VarSet::
69 stateSpace() -> states()
70 VarSet( const std::set<Var> ) -> VarSet( begin, end, sizeHint=0 )
71 VarSet( const std::vector<Var> ) -> VarSet( begin, end, sizeHint=0 )
72 removed bool operator||
73 operator&&(const VarSet&) -> intersects(const VarSet&)
74 operator&&(const Var&) -> contains(const Var&)
75 - FactorGraph::
76 delta(const Var &) -> delta(size_t)
77 Delta(const Var &) -> Delta(size_t)
78 makeCavity(const Var &) -> makeCavity(size_t)
79 vars() -> vars
80 factors() -> factors
81 removed MakeFactorCavity(size_t)
82 removed ExactMarginal(const VarSet &)
83 removed ExactlogZ()
84 moved isConnected() to BipartiteGraph
85 removed updatedFactor(size_t)
86 removed _normtype and NormType()
87 WriteToDotFile(const char *filename) -> display( std::ostream& os )
88 undoProb(size_t) -> restoreFactor(size_t)
89 saveProb(size_t) -> backupFactor(size_t)
90 undoProbs(const VarSet &) -> restoreFactors(const VarSet &)
91 saveProbs(const VarSet &) -> backupFactors(const VarSet &)
92 - RegionGraph::
93 nr_ORs() -> nrORs()
94 nr_IRs() -> nrIRs()
95 ORs() -> ORs
96 IRs() -> IRs
97 - *::Regenerate() -> *::create()
98 - Renamed Index -> IndexFor
99 - Diffs:
100 max() -> maxDiff()
101 max_size() -> maxSize()
102 - Prob::max() -> Prob::maxVal()
103 - Factor::
104 max() -> maxVal()
105 part_sum() -> partSum()
106 - toc() in util.h now returns seconds as a double
107 - VarSet::operator&&
108 - Properties -> PropertySet
109
110
111 libDAI-0.2.1 (2008-05-26)
112 -------------------------
113
114 Bugfix release.
115 * added missing cstdio header in util.h
116 * fixed Properties in MR_CLAMPING_* and MR_EXACT_*
117 * added description of the factor graph fileformat
118 * improved Makefile
119
120
121 libDAI-0.2.0 (2006-11-30)
122 -------------------------
123
124 First public release.