X-Git-Url: http://git.tuebingen.mpg.de/?p=libdai.git;a=blobdiff_plain;f=ChangeLog;h=1d475a5f832fe53407452dd053df91b0c687dd12;hp=17dc97ef00f56468ac9ffd082e40b2e5e8c6d954;hb=a235deec46d1d9ff81bc5085ce0c912b9fbaf311;hpb=357edeb0a4619cc997b05d13393a172721cb44a2
diff --git a/ChangeLog b/ChangeLog
index 17dc97e..1d475a5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,136 +1,416 @@
-* Renamed RegionGraph::Check_Counting_Numbers into
- RegionGraph::checkCountingNumbers
- (and provided an alias for backwards compatibility)
-* Renamed RegionGraph::Calc_Counting_Numbers into
- RegionGraph::calcCountingNumbers
- (and provided an alias for backwards compatibility)
-* Renamed Permute::convert_linear_index into Permute::convertLinearIndex
- (and provided an alias for backwards compatibility)
-* Added examples/example_permute.cpp
-* Added TProb::divided_by(const TProb&) const
-* Fixed bug in BipartiteGraph::eraseEdge()
-* Added python and octave ports for examples/example_sprinkler.cpp
-* [Patrick Pletscher] Added SWIG wrapper code for python and octave
-* Added init parameter to HAK/GBP to allow for random initialization
-* Replaced the standard assert() macro by DAI_ASSERT, which throws a
- dai::Exception and is even active if NDEBUG is defined
-* Added a constructor TProb::TProb( const std::vector~~ &v )
-* Introduced CCNODEBUGFLAGS in Makefile
+git master HEAD
+---------------
+
+* Added examples/example_imagesegmentation
+* [Ofer Meshi] Added a script for converting from FastInf to libDAI format
+* Made all "verbose" properties optional
+* Unit tests should now also work on WINDOWS
+* [Stefano Pellegrini] Fixed bug in JTree::findMaximum()
+* Fixed some bugs in the MatLab interface build system
+* Fixed a bug in utils/fginfo.cpp
+* Added utils/uai2fg, a utility to convert the UAI inference competition file
+ formats to the libDAI factor graph file format
+* utils/createfg now has a new factor type ('ISINGUNIFORM') and the old
+ 'ISING' factor type has been renamed to 'ISINGGAUSS'
+* tests/testdai option "marginals" now has five possible values: NONE
+ outputs no marginals, VAR only variable marginals, FAC only factor
+ marginals, VARFAC both types of marginals, and ALL outputs all
+ marginals calculated by the algorithm.
+* Improved mf.h/cpp:
+ - Added an "init" option that allows to initialize randomly
+ - Added an "updates" option that allows to choose between standard
+ mean field and "hard-spin" mean field
+* Improved exactinf.h/cpp:
+ - Added ExactInf::findMaximum()
+* Improved treeep.h/cpp:
+ - changed TreeEP::construct( const RootedTree& ) into
+ TreeEP::construct( const FactorGraph&, const RootedTree& )
+ - Now also supports disconnected factor graphs
+* Improved jtree.h/cpp:
+ - changed JTree::construct( const std::vector&, bool ) into
+ JTree::construct( const FactorGraph&, const std::vector&, bool )
+ - changed JTree::GenerateJT( const std::vector & )
+ into JTree::GenerateJT( const FactorGraph &, const std::vector & )
+ - Now also supports disconnected factor graphs
+ - Fixed a bug in JTree::findMaximum() and simplified the code
+* Improved regiongraph.h/cpp:
+ - Made (previously public) members RegionGraph::G, RegionGraph::ORs,
+ RegionGraph::IRs and RegionGraph::fac2OR protected.
+ - Removed partial constructor RegionGraph::RegionGraph( const FactorGraph& fg )
+ - Added some error checking code
+ - Renamed RegionGraph::calcCountingNumbers() into
+ RegionGraph::calcCVMCountingNumbers() and made it protected, because
+ exposing it to the world serves no purpose.
+ - Added RegionGraph::DAG() accessor which returns a reference to the
+ region graph DAG structure (currently implemented as a BipartiteGraph)
+ - Made RegionGraph::RecomputeORs(), RegionGraph::RecomputeORs( const VarSet& )
+ and RegionGraph::RecomputeOR( size_t ) protected and renamed them by changing
+ the "Recompute" into "recompute", because exposing them to the world serves no
+ purpose.
+ - RegionGraph::WriteToFile( const char* ), RegionGraph::ReadFromFile( const char * )
+ and RegionGraph::printDot( std::ostream& ) incorrectly called their respective
+ FactorGraph ancestor methods; this has been corrected by letting them throw a
+ NOT_IMPLEMENTED exception.
+ - Changed the way a RegionGraph is streamed to an std::ostream.
+* Improved clustergraph.h/cpp:
+ - Made (previously public) members ClusterGraph::G, ClusterGraph::vars and
+ ClusterGraph::clusters private and added ClusterGraph::bipGraph(),
+ ClusterGraph::vars() and ClusterGraph::clusters() methods which offer
+ read-only access to these members.
+ - Deprecated ClusterGraph::toVector()
+ - Added ClusterGraph::nrVars() method
+ - Renamed ClusterGraph::size() method into ClusterGraph::nrClusters()
+ - Added ClusterGraph::var( size_t ) method
+ - Added ClusterGraph::cluster( size_t ) method
+* Improved factorgraph.h/cpp:
+ - FactorGraph::clamped() now contains a delta factor for the clamped variable
+ - Renamed FactorGraph::Cliques() into FactorGraph::maximalFactorDomains()
+ and made it faster
+ - Added FactorGraph::MarkovGraph()
+ - Fixed bug in FactorGraph::clone()
+ - FactorGraph::findVars( const VarSet& ) now returns a SmallSet
+ and its argument now has a const-qualifier (which fixes a small bug).
+ - Made (previously public) member FactorGraph::G private and added the
+ FactorGraph::bipGraph() method, which offers read-only access to it.
+ - Deprecated the iterator interface:
+ o FactorGraph::iterator typedef
+ o FactorGraph::const_iterator typedef
+ o FactorGraph::begin() members
+ o FactorGraph::end() members
+ - Deprecated FactorGraph::factor(size_t) which offered write access to a factor
+ because using this functionality in the descendant RegionGraph is dangerous,
+ as the outer regions are not automatically recomputed.
+* Improved factor.h/cpp:
+ - Fixed bug in min( const TFactor &, const TFactor & )
+ - Fixed bug in max( const TFactor &, const TFactor & )
+ - Added TFactor::takeAbs()
+ - Added TFactor::takeExp()
+ - Added TFactor::takeLog( bool )
+ - Added TFactor::operator-() const
+ - Added TFactor::sumAbs() const
+ - Added TFactor::operator==( const TFactor &y )
+ - Renamed TFactor::states() into TFactor::nrStates()
+ - Added TFactor::get(size_t) and TFactor::set(size_t,T) operators;
+ get() is equivalent to "operator[](size_t) const" and set() should
+ be used instead of the non-const operator[], which has been deprecated
+* Improved prob.h/cpp:
+ - Deprecated TProb::TProb( TIterator begin, TIterator end, size_t sizeHint=0 )
+ constructor: the sizeHint argument no longer defaults to 0
+ - Deprecated TProb::accumulate( T init, binOp op1, unOp op2 );
+ instead, TProb::accumulateSum( T init, unOp op ) and
+ TProb::accumulateMax( T init, unOp op, bool minimize ) should be used.
+ - Deprecated TProb::NormType and TProb::DistType;
+ ProbNormType and ProbDistType should be used instead.
+ - Added TProb::operator==( const TProb &q )
+ - TProb::accumulate() now also applies op2 to init
+ - Fixed bug by renaming TProb::operator<=() to TProb::operator<()
+ - TProb& operator/= (T x) now yields 0 when dividing by 0
+ - Changed format of TProb when streamed to an ostream
+ - Added TProb::get(size_t) and TProb::set(size_t,T) operators;
+ get() is equivalent to "operator[](size_t) const" and set() should
+ be used instead of the non-const operator[], which has been deprecated
+ - Added TProb::resize(size_t)
+* Improved index.h/cpp:
+ - Added multifor::reset()
+* Improved properties.h/cpp:
+ - Renamed PropertySet::Set() -> PropertySet::set()
+ - Renamed PropertySet::Get() -> PropertySet::get()
+ - Renamed PropertySet::GetAs() -> PropertySet::getAs()
+ - Renamed PropertySet::ConvertTo() -> PropertySet::convertTo()
+ - Added PropertySet::size()
+ - Added PropertySet::clear()
+ - Added PropertySet::erase()
+ - Fixed bug in PropertySet::setAsString()
+* Improved util.h/cpp:
+ - Added std::string toString( const T& x )
+ - Fixed a bug in rnd_seed()
+ - Removed max( const std::vector &v )
+* Improved weightedgraph.h/cpp:
+ - Renamed MaxSpanningTreePrims into MaxSpanningTree
+ - Renamed MinSpanningTreePrims into MinSpanningTree
+ - Added option to MaxSpanningTree and MinSpanningTree for
+ choosing between Prim's algorithm and Kruskal's algorithm
+ - Better error checking in RootedTree constructor
+ - The vertices in DEdge and UEdge are now named "first" and "second"
+ for compatibility with a std::pair
+ - Added GraphEL::GraphEL( const GraphAL& G ) constructor
+* Improved bipgraph.h/cpp:
+ - Fixed bug in BipartiteGraph::eraseNode1()
+ - Fixed bug in BipartiteGraph::eraseNode2()
+ - Fixed bug in BipartiteGraph::isTree()
+ - Added BipartiteGraph::hasEdge()
+ - Added BipartiteGraph::findNb1()
+ - Added BipartiteGraph::findNb2()
+ - Added BipartiteGraph::nb1Set()
+ - Added BipartiteGraph::nb2Set()
+ - BipartiteGraph::delta1() and BipartiteGraph::delta2() now
+ return a SmallSet instead of a vector
+ - Added BipartiteGraph::operator==( const BipartiteGraph& )
+ - Added BipartiteGraph( size_t nr1, size_t nr2 ) constructor
+ - Added operator<<( std::ostream&, const BipartiteGraph& )
+* Improved graph.h/cpp:
+ - Fixed bug in GraphAL::nrEdges()
+ - Fixed bug in GraphAL::addEdge()
+ - Fixed bug in GraphAL::isTree()
+ - Fixed bug in GraphAL::eraseNode()
+ - Fixed bug in GraphAL::printDot()
+ - Fixed bug in createGraphGrid3D()
+ - Fixed bug in createGraphRegular()
+ - Added GraphAL::hasEdge(size_t,size_t)
+ - Added GraphAL::operator==( const GraphAL& )
+ - Added operator<<( std::ostream&, const GraphAL& )
+* Improved smallset.h/cpp:
+ - The sizeHint argument of the iterator constructor
+ SmallSet::SmallSet( TIterator begin, TIterator end, size_t sizeHint=0 )
+ no longer has a default value in order to avoid confusion with the
+ SmallSet::SmallSet( const T &t1, const T &t2 )
+ constructor.
+ - Added SmallSet::insert( const T& t ) method
+* Removed RandomDRegularGraph(), please use createGraphRegular() instead
+* Compressed Makefile
+* Added unit tests for var, smallset, varset, graph, bipgraph,
+ weightedgraph, enum, util, exceptions, properties, index, prob,
+ factor, factorgraph, clustergraph, regiongraph, daialg, alldai
+* Added unit testing framework
+* Added initialization of TRWBP weights by sampling spanning trees
+* Cleaned up MR code:
+ - rewrote response propagation implementation with help of BBP
+ - now uses GraphAL to represent the Markov graph
+ - miscellaneous smaller cleanups
+* Fixed bug in BBPCostFunction::operator=() which prevented the desired
+ assignment from happening
+* [Stefano Pellegrini] Fixed bug in BP[logdomain=1,inference=MAXPROD]
+* Removed deprecated functionality
+* Updated ChangeLog for libDAI-0.2.4 (forgot a few entries)
+
+
+libDAI-0.2.4 (2010-02-11)
+-------------------------
+
+New features:
+* Implemented Tree-Reweighted BP
+* [Frederik Eaton] Implemented Fractional Belief Propagation
+
+Miscellaneous improvements:
+* Improved documentation
+* [Frederik Eaton] Added constructors for BBPCostFunction
+* [Frederik Eaton] Added accessor/mutator for the elements of a SmallSet<>
+* [Frederik Eaton] Added unary minus to TProb<>
+* [Frederik Eaton] Added Hellinger distance to TProb<>::DistType
+* [Frederik Eaton] Two small patches for src/jtree.cpp and utils/createfg.cpp
+* tests/testdai option "marginals" now has three possible values: NONE
+ outputs no marginals, VAR only variable marginals, and ALL outputs all
+ marginals calculated by the algorithm.
+* Strengthened convergence criteria of various algorithms
+* Added GraphAL, an adjacency list implementation for graphs,
+ similar to (but simpler than) BipartiteGraph
+* Added some functionality to create various standard factors
+ (the functions whose names start with "createFactor")
+* Added examples example_sprinkler_gibbs and example_sprinkler_em
+* Implemented various heuristics for choosing a variable elimination sequence
+ in JTree
+* Added BETHE method for GBP/HAK cluster choice
+* Made alias support official part of the library
+
+Build system:
+* Moved platform independent build options into Makefile.ALL
+* Windows platform now needs Boost 1.37 or higher
+
+Code cleanup:
+* Cleaned up utils/createfg and tests/testdai
+* Cleanup of some duplicate code in BP, FBP, TRWBP
+
+Interface changes (the old interface is marked obsolete and will be removed in the next release):
+* Removed obsolete/deprecated stuff
+* Renamed Graph into GraphEL (for Graph, implemented as Edge List)
+* Renamed some functions of BipartiteGraph:
+ add1() -> addNode1()
+ erase1() -> eraseNode1()
+ nr1() -> nrNodes1()
+ add2() -> addNode2()
+ erase2() -> eraseNode2()
+ nr2() -> nrNodes2()
+* Renamed some functions in ClusterGraph:
+ ClusterGraph::eliminationCost() -> ::eliminationCost_MinFill()
+ ClusterGraph::VarElim() -> ClusterGraph::VarElim( sequentialVariableElimination( ElimSeq ) )
+ ClusterGraph::VarElim_MinFill() -> ClusterGraph::VarElim( greedyVariableElimination( eliminationCost_MinFill ) )
+* Changed interface of one RegionGraph constructor
+* Renamed "Clamped BP" into "Conditioned BP"
+
+Bug fixes:
+* Fixed regression in scripts/regenerate-properties (now all errors are
+ gathered before throwing the exception, as used to be the case)
+* Fixed FTBFS errors on MACOSX (thanks to Sebastian Riedel for reporting this bug)
+* [Alexander Schwing] Fixed error in BP that occured with damping
+ and using log-domain updates
+* Fixed bug in HAK for trivial region graphs (with only one outer region
+ and no inner regions), reported by Alejandro Lage.
+* Fixed long-standing bug in TreeEP (now, within-loop propagation optimization works)
+
+
+libDAI-0.2.3 (2009-11-16)
+-------------------------
+
+New features:
+* Complete doxygen documentation (although more detailed documentation still
+ has to be written)
+* [Charles Vaske] Added parameter learning for conditional probabilities by
+ Expectation Maximization
+* [Patrick Pletscher] Added SWIG wrapper code for experimental python and
+ octave interfaces
+* Added Max-Product functionality to JTree
+* [Frederik Eaton] Added Back-Belief-Propagation
+* [Frederik Eaton] Added approximate inference method "Clamped Belief Propagation"
+* [Frederik Eaton] Added approximate inference method "Gibbs sampling"
+
+Code cleanup:
* Updated copyright headers
-* Added max-product functionality to JTree
-* [Charlie Vaske] EM bugfix (was using abs() instead of fabs() in
- determining EM termination, which caused a loss of precision).
-* [Charlie Vaske] New constructor in Permute for canonical variable ordering
-* [Charlie Vaske] New constructor in Factor that reorders variables to canonical ordering
-* [Charlie Vaske] New accessor in Properties for getting all keys
-* [Charlie Vaske] New function for getting inferred parameters
* Cleaned up error handling by introducing the DAI_THROWE macro
* Introduced DAI_DEBASSERT macro to abbreviate a common pattern
-* Changed FactorGraph::clamp and DAIAlg::clamp interfaces (the variable to be
- clamped is now indicated by its index, not as a Var) and marked the old
- interface as obsolete
-* [Patrick Pletscher] Fixed performance issue in FactorGraph::clamp
-* [Sebastian Nowozin] MEX file dai now also optionally returns the MAP state
- (only for BP)
-* [Sebastian Nowozin] Fixed memory leak in MEX file dai
+* Replaced the standard assert() macro by DAI_ASSERT, which throws a
+ dai::Exception and is even active if NDEBUG is defined
+* Removed all the virtual default constructors *::create(), as they are not used
+* [Frederik Eaton] Removed unnecessary copy constructors and assignment operators
+* [Frederik Eaton] Change cout to cerr in warnings and error messages
-git ae0fc30e10be6683cbfc209dcee56f34234a6cb8
---------------------------------------------
-* Added work-around for bug in Boost Graph Library
-* Improvements of TFactor:
+Miscellaneous improvements:
+* BipartiteGraph:
+ - Added eraseEdge( size_t n1, size_t n2 )
+ - [Frederik Eaton] Improved documentation of Neighbor
+* TProb:
+ - Added divided_by(const TProb&) const
+ - Added constructor TProb( const std::vector~~~~ &v )
+ - Added size_t draw(), which draws a random index
+ - [Frederik Eaton] Added setUniform()
+ - [Frederik Eaton] Added sumAbs()
+ - [Frederik Eaton] Added argmax()
+ - [Giuseppe Passino] Added begin(), end()
+* TFactor:
+ - [Giuseppe Passino] Added begin(), end()
+ - [Charles Vaske] Added TFactor( const std::vector~~` &vars, const std::vector &p ),
+ which reorders variables to canonical ordering before storing the table
+ - Added constructor TFactor( const VarSet &vars, const std::vector`~~ &v )
- Extended functionality of TFactor::operators +,-,+=,-= to handle different VarSets
- Added TFactor::maxMarginal (similar to marginal but with max instead of sum)
-* Added BipartiteGraph::eraseEdge
-* Removed all the virtual default constructors *::create(), as they are not used.
-* Fixed bug in MaxSpanningTree (it wrongly assumed that the tree was not empty).
-* [Charlie Vaske] Added Expectation Maximization code.
-* Added MatLab QuickStart to README.
-* MEX file dai now also returns variable and factor beliefs.
-* Cleanups and extra documentation of the code contributed by Frederik Eaton
-* Removed erroneous 'inline' directives in gibbs.cpp
+* State:
+ - [Giuseppe Passino] Added prefix ++ operator
+* Permute:
+ - [Charles Vaske] Added constructor in Permute for canonical variable ordering
+* FactorGraph:
+ - [Frederik Eaton] Added clampVar()
+ - [Frederik Eaton] Added clampFactor()
+ - [Giuseppe Passino] Added begin(), end()
+* PropertySet:
+ - Added keys(), for getting all keys
+ - [Frederik Eaton] Added default constructor
+ - [Frederik Eaton] Added constructor from string
+* InfAlg:
+ - Added setProperties(), getProperties() and printProperties()
+ - [Frederik Eaton] Added beliefV(), beliefF()
+* ExactInf:
+ - Added calcMarginal(const VarSet &)
+* HAK:
+ - Added "init" parameter to allow for random initialization
+* BP:
+ - [Giuseppe Passino] Added findMaximum(), which can be used after running
+ max-product BP to construct a global state with maximum probability
+* JTree:
+ - Added findMaximum(), which can be used after running
+ max-product JTree to construct a global state with maximum probability
+* MatLab interface:
+ - MEX file dai now also returns variable and factor beliefs
+ - [Sebastian Nowozin] MEX file dai now also optionally returns the MAP state
+ (only for BP and JTree)
+* README is now created automatically from doxygen documentation
* [Frederik Eaton] Added script for automatically generating properties code (used by CBP and BBP)
-* [Frederik Eaton] Updated doxygen.conf to version 1.5.9
* [Frederik Eaton] Added newInfAlgFromString to alldai.h/cpp
-* [Frederik Eaton] Added FactorGraph::clampVar and FactorGraph::clampFactor
-* [Frederik Eaton] Changed BP to be able to record order in which messages are sent (for use by BBP)
-* [Frederik Eaton] Improved documentation of BipartiteGraph::Neighbor
-* [Frederik Eaton]: Extended InfAlg interface with beliefV() and beliefF() methods;
-* [Frederik Eaton]: Improved PropertySet class:
- - Added default constructor
- - Allow construction from string
- - Added method allKeys() to produce list of keys
- - In getStringAs(), check for typeid(ValueType) before typeid(std::string)
- (this fixes a strange bug for empty string property)
-* [Frederik Eaton]: Added some utility macros (DAI_PV, DAI_DMSG, DAI_ACCMUT, DAI_IFVERB)
- and functions (concat(),rnd()) to include/dai/util.h
-* [Frederik Eaton] Added backwards compatibility layer for edge interface to
- BipartiteGraph and FactorGraph (which will be obsoleted soon)
-* [Frederik Eaton] Added BP_dual, BBP and CBP algorithms
-* [Frederik Eaton] Added Gibbs::state() accessors/mutators
-* [Frederik Eaton] Fixed Gibbs::getVarDist(size_t) to return uniform
- distribution if no state is allowed
+* [Frederik Eaton] Added some utility macros (DAI_PV, DAI_DMSG, DAI_IFVERB)
+ and functions (concat(),rnd()) to util.h
+* Changed output stream operator<< for Var and VarSet
* [Frederik Eaton] Improved parsing code in tests/testdai to allow recursive
alias substitutions
-* Interface changes:
- TProb::minVal() -> TProb::min()
- TFactor::minVal() -> TFactor::min()
- TProb::maxVal() -> TProb::max()
- TFactor::maxVal() -> TFactor::max()
- TProb::totalSum() -> TProbsum()
- TFactor::totalSum() -> TFactor::sum()
-* [Frederik Eaton] Added methods setUniform (), sumAbs(), argmax() to TProb
-* [Frederik Eaton] Added TAGS, lib targets to Makefile
-* [Frederik Eaton] Add useful aliases to aliases.conf
-* [Frederik Eaton] Removed unnecessary copy constructors and assignment
- operators
-* [Frederik Eaton] Change cout to cerr in warnings and error messages
+* [Frederik Eaton] Added useful aliases to aliases.conf
* [Giuseppe Passino] Optimised maximum-residual BP by using a reversed ordered
set instead of the linear search (which can yield enormous speedups - a
factor 500 has been measured on a binary Ising grid with 128x128 variables!)
* Added debug assertions to Var which check for inconsistent dimensions of
variables with the same labels
-* [Giuseppe Passino] Added prefix ++ operator to State (State::operator++())
-* [Giuseppe Passino] Added iterators to FactorGraph (FactorGraph::begin,
- FactorGraph::end)
-* [Giuseppe Passino] Added iterators to TFactor (TFactor::begin, TFactor::end)
-* [Giuseppe Passino] Added iterators to TProb (TProb::begin, TProb::end)
-* [Giuseppe Passino] Added BP::findMaximum(), which can be used after running
- max-product BP to construct a global state with maximum probability
-* Improved Makefile (libDAI now also builds out-of-the-box on MacOSX,
- thanks to Dan Preston; merged Makefile.win and Makefile.shared into Makefile)
-* Fixed bug in calcMarginal, calcPairBeliefs, calcPairBeliefsNew where
- states with zero probability mass were clamped, leading to NaNs or assertion
- errors (thanks to Dan Preston for reporting this)
* toc() now returns POSIX system time with maximum accuracy of microseconds
* Exception objects now remember their error code
-* Added examples/example_sprinkler.cpp
-* [Peter Gober] Made libDAI build out-of-the-box on Cygwin.
-* [Frederik Eaton] Added Gibbs sampler to algorithms
-* Improved documentation of include/dai/{bipgraph.h, prob.h, smallset.h,
- var.h, varset.h, factor.h, enum.h} and of examples/example.cpp
- Merged TODO and FILEFORMAT into doxygen documentation
-* examples/
+* Examples:
- Moved example.cpp to examples/
- Added examples/example_bipgraph.cpp
- Added examples/example_varset.cpp
-* Interface changes:
- - Replaced TProb::log0() by TProb::log(true)
- - Replaced TProb::takeLog0() by TProb::takeLog(true)
- - Replaced TFactor::log0() by TFactor::log(true)
- - Removed TProb::hasNonPositives()
- - Renamed smallSet to SmallSet
- - Removed TFactor::divided_by, use operator/ instead
- - Removed TFactor::divide, use operator/= instead
- - Removed TFactor::partSum(const VarSet&), use marginal(const VarSet&,true) instead
- - Improved constructors of TProb and TFactor to use iterators instead of pointers
-* Miscellaneous small changes and cleanups:
- - Changed regression test so that it also works under Windows
- - Changed output stream operator<< for Var and VarSet
- - Added TProb::draw() function, which draws a random index
- - Cleanup of matlab interface code
- - Small improvement of utils/fginfo
- - Small cleanup of BP code
+ - Added examples/example_sprinkler.cpp
+ - Added examples/example_permute.cpp
+ - Added python and octave ports for examples/example_sprinkler.cpp
+
+Build system:
+* Improved Makefile:
+ - Merged Makefile.win and Makefile.shared into Makefile
+ - Macros DAI_VERSION and DAI_DATE have been introduced,
+ in order to store this information in a central place
+ - Introduced CCNODEBUGFLAGS in Makefile
- Switched Makefile.win to GNU Make syntax
+ - [Frederik Eaton] Added TAGS, lib targets to Makefile
+* Compatibility:
+ - [Peter Gober] libDAI can now be built on Cygwin
+ - [Dan Preston] libDAI can now be built on Mac OS X
+ - Changed regression test so that it also works under Windows
+
+Interface changes (the old interface is marked obsolete and will be removed in the next release):
+* Var:
+ - Variable labels are now nonnegative (of type size_t)
+* VarSet:
+ - Replaced calcState() by non-member calcLinearState()
+ - Replaced calcStates() by non-member calcState()
+* Permute:
+ - Renamed convert_linear_index into convertLinearIndex
+* TProb<>:
+ - Replaced log0() by log(true)
+ - Replaced takeLog0() by takeLog(true)
+ - Removed hasNonPositives()
+ - Renamed minVal() to min()
+ - Renamed maxVal() to max()
+ - Renamed totalSum() to sum()
+* TFactor<>:
+ - Replaced log0() by TFactor::log(true)
+ - Removed divided_by, use operator/ instead
+ - Removed divide, use operator/= instead
+ - Removed partSum(const VarSet&), use marginal(const VarSet&,false) instead
+ - Renamed minVal() to min()
+ - Renamed maxVal() to max()
+ - Renamed totalSum() to sum()
+* FactorGraph:
+ - Changed clamp and clamp interfaces (the variable to be
+ clamped is now indicated by its index, not as a Var)
+* RegionGraph:
+ - Renamed Check_Counting_Numbers into checkCountingNumbers
+ - Renamed Calc_Counting_Numbers into calcCountingNumbers
+* Miscellaneous:
+ - Renamed Treewidth(const FactorGraph &) into boundTreewidth(const FactorGraph &)
+ - Replaced UEdgeVec by Graph
+ - Replaced DEdgeVec by new RootedTree class
+ - Moved functionality of GrowRootedTree() into constructor of RootedTree
+ - Merged calcPairBeliefsNew() into calcPairBeliefs()
+ - Removed calcMarginal2ndO()
+ - Renamed smallSet to SmallSet
+ - Removed class Diffs
+ - [Frederik Eaton] Added backwards compatibility layer for edge interface to
+ BipartiteGraph and FactorGraph (which will be obsoleted soon)
+
+Bug fixes:
+* Fixed reversal of min and max in
+ TFactor min( const TFactor &, const TFactor & )
+ TFactor max( const TFactor &, const TFactor & )
+* [Sebastian Nowozin] Fixed memory leak in MEX file dai
+* [Frederik Eaton] In PropertySet::getStringAs(), check for typeid(ValueType)
+ before typeid(std::string) (this fixes a strange bug for empty string property)
+* Added work-around for bug in Boost Graph Library
+* Fixed bug in MaxSpanningTree (it wrongly assumed that the tree was not empty).
+* Fixed bug in calcMarginal and calcPairBeliefs where states with zero probability
+ mass were clamped, leading to NaNs or assertion errors (thanks to Dan Preston
+ for reporting this)
libDAI-0.2.2 (2008-09-30)
@@ -582,4 +862,4 @@ description in the help).
0.1.0 (2006-02-28)
--------------------
-First version worthy a version number.
+First version worthy of a version number.
~~