1 libDAI-0.2.2 (2008-??-??)

2 -------------------------

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 * Moved everything into namespace "dai"

24 * Renamed DEBUG to DAI_DEBUG to avoid conflicts

25 * Added conditional compilation of inference methods

26 * Contributions by Peter Gober:

27 - Renamed variable _N in mr.* for compatibility with g++ under cygwin

28 * Contributions by Giuseppe Passino:

29 - removed "using namespace std;" from header files - bad practice

30 - moved header files in include/dai and sources in src

31 - changed #ifndefs to GNU style

32 - added extra warning checks (-W -Wextra) and fixed resulting warnings

33 - dai::TProb:

34 o removed copy constructor and assignment operators (redundant)

35 o implementation of some methods via STL algorithms

36 o added methods takeExp, takeLog, takeLog0 for transformation in-place

37 o explicit constructor (prevents implicit conversion from size_t to TProb)

38 o added operator+,+=,-,-=, with argument T (for calculations in log-scale)

39 - Added "logdomain" property to BP, a boolean that controls whether

40 calculations are done in the log-domain or in the linear domain;

41 doing calculations in the log-domain may help if the numerical range

42 of a double is too small.

43 * Contributions by Christian Wojek:

44 - New FactorGraph constructor that constructs from given ranges of factors

45 and variables

46 - Optimization of FactorGraph constructors using tr1::unordered_map.

47 * FactorGraph constructors no longer check for short loops (huge speed

48 increase for large factor graphs), nor for negative entries. Also, the

49 normtype is now Prob::NORMPROB by default.

50 * VarSet is now implemented using a std::vector<Var> instead of a

51 std::set<Var>, which yields a significant speed improvement.

52 * Improved MaxSpanningTreePrims algorithm (uses boost::graph)

53 * Small optimization in Diffs

54 * Replaced Complex with real numbers (negative potentials is just not

55 used enough to warrant the additional "complexity" :))

56 * Moved Properties and MaxDiff frameworks from InfAlg to each individual

57 inference algorithm, because the Properties framework was not as

58 convenient as I hoped, and not every inference algorithm needs a maxdiff

59 variable. Also, replaced some FactorGraph functionality in InfAlg by a

60 function that returns the FactorGraph. The result is cleaner (less

61 entangled) code.

62 * Improved ClusterGraph implementation, yielding significant speedups

63 for the JunctionTree algorithm on large factorgraphs.

64 * Improved documetation

65 * Interface changes:

66 - VarSet::

67 stateSpace() -> states()

68 VarSet( const std::set<Var> ) -> VarSet( begin, end, sizeHint=0 )

69 VarSet( const std::vector<Var> ) -> VarSet( begin, end, sizeHint=0 )

70 removed bool operator||

71 operator&&(const VarSet&) -> intersects(const VarSet&)

72 operator&&(const Var&) -> contains(const Var&)

73 - FactorGraph::

74 delta(const Var &) -> delta(size_t)

75 Delta(const Var &) -> Delta(size_t)

76 makeCavity(const Var &) -> makeCavity(size_t)

77 vars() -> vars

78 factors() -> factors

79 removed MakeFactorCavity(size_t)

80 removed ExactMarginal(const VarSet &)

81 removed ExactlogZ()

82 moved isConnected() to BipartiteGraph

83 removed updatedFactor(size_t)

84 removed _normtype and NormType()

85 - RegionGraph::

86 nr_ORs() -> nrORs()

87 nr_IRs() -> nrIRs()

88 ORs() -> ORs

89 IRs() -> IRs

90 - *::Regenerate() -> *::create()

91 - Renamed Index -> IndexFor

92 - Diffs:

93 max() -> maxDiff()

94 max_size() -> maxSize()

95 - Prob::max() -> Prob::maxVal()

96 - Factor::max() -> Factor::maxVal()

97 - toc() in util.h now returns seconds as a double

98 - VarSet::operator&&

99 - Properties -> PropertySet

102 libDAI-0.2.1 (2008-05-26)

103 -------------------------

105 Bugfix release.

106 * added missing cstdio header in util.h

107 * fixed Properties in MR_CLAMPING_* and MR_EXACT_*

108 * added description of the factor graph fileformat

109 * improved Makefile

112 libDAI-0.2.0 (2006-11-30)

113 -------------------------

115 First public release.