gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Merge
0 7 0
merge default
0 files changed with 146 insertions and 118 deletions:
↑ Collapse diff ↑
Ignore white space 6 line context
... ...
@@ -3,3 +3,3 @@
3 3

	
4
Copyright (C) 2003-2009 Egervary Jeno Kombinatorikus Optimalizalasi
4
Copyright (C) 2003-2010 Egervary Jeno Kombinatorikus Optimalizalasi
5 5
Kutatocsoport (Egervary Combinatorial Optimization Research Group,
Ignore white space 6 line context
1
2010-03-19 Version 1.2 released
2

	
3
        This is major feature release
4

	
5
        * New algorithms
6
          * Bellman-Ford algorithm (#51)
7
          * Minimum mean cycle algorithms (#179)
8
            * Karp, Hartman-Orlin and Howard algorithms
9
          * New minimum cost flow algorithms (#180)
10
            * Cost Scaling algorithms
11
            * Capacity Scaling algorithm
12
            * Cycle-Canceling algorithms
13
          * Planarity related algorithms (#62)
14
            * Planarity checking algorithm
15
            * Planar embedding algorithm
16
            * Schnyder's planar drawing algorithm
17
            * Coloring planar graphs with five or six colors
18
          * Fractional matching algorithms (#314)
19
        * New data structures
20
          * StaticDigraph structure (#68)
21
          * Several new priority queue structures (#50, #301)
22
            * Fibonacci, Radix, Bucket, Pairing, Binomial
23
              D-ary and fourary heaps (#301)
24
          * Iterable map structures (#73)
25
        * Other new tools and functionality
26
          * Map utility functions (#320)
27
          * Reserve functions are added to ListGraph and SmartGraph (#311)
28
          * A resize() function is added to HypercubeGraph (#311)
29
          * A count() function is added to CrossRefMap (#302)
30
          * Support for multiple targets in Suurballe using fullInit() (#181)
31
          * Traits class and named parameters for Suurballe (#323)
32
          * Separate reset() and resetParams() functions in NetworkSimplex
33
            to handle graph changes (#327)
34
          * tolerance() functions are added to HaoOrlin (#306)
35
        * Implementation improvements
36
          * Improvements in weighted matching algorithms (#314)
37
            * Jumpstart initialization
38
          * ArcIt iteration is based on out-arc lists instead of in-arc lists
39
            in ListDigraph (#311)
40
          * Faster add row operation in CbcMip (#203)
41
          * Better implementation for split() in ListDigraph (#311)
42
          * ArgParser can also throw exception instead of exit(1) (#332)
43
        * Miscellaneous
44
          * A simple interactive bootstrap script
45
          * Doc improvements (#62,#180,#299,#302,#303,#304,#307,#311,#331,#315,
46
                #316,#319)
47
            * BibTeX references in the doc (#184)
48
          * Optionally use valgrind when running tests
49
          * Also check ReferenceMapTag in concept checks (#312)
50
          * dimacs-solver uses long long type by default.
51
        * Several bugfixes (compared to release 1.1):
52
          #295: Suppress MSVC warnings using pragmas
53
          ----: Various CMAKE related improvements
54
                * Remove duplications from doc/CMakeLists.txt
55
                * Rename documentation install folder from 'docs' to 'html'
56
                * Add tools/CMakeLists.txt to the tarball
57
                * Generate and install LEMONConfig.cmake
58
                * Change the label of the html project in Visual Studio
59
                * Fix the check for the 'long long' type
60
                * Put the version string into config.h
61
                * Minor CMake improvements
62
                * Set the version to 'hg-tip' if everything fails
63
          #311: Add missing 'explicit' keywords
64
          #302: Fix the implementation and doc of CrossRefMap
65
          #308: Remove duplicate list_graph.h entry from source list
66
          #307: Bugfix in Preflow and Circulation
67
          #305: Bugfix and extension in the rename script
68
          #312: Also check ReferenceMapTag in concept checks
69
          #250: Bugfix in pathSource() and pathTarget()
70
          #321: Use pathCopy(from,to) instead of copyPath(to,from)
71
          #322: Distribure LEMONConfig.cmake.in
72
          #330: Bug fix in map_extender.h
73
          #336: Fix the date field comment of graphToEps() output
74
          #323: Bug fix in Suurballe
75
          #335: Fix clear() function in ExtendFindEnum
76
          #337: Use void* as the LPX object pointer
77
          #317: Fix (and improve) error message in mip_test.cc
78
                Remove unnecessary OsiCbc dependency
79
          #356: Allow multiple executions of weighted matching algorithms (#356)
80

	
1 81
2009-05-13 Version 1.1 released
... ...
@@ -74,3 +154,3 @@
74 154
          #204: Compilation bug fixed in graph_to_eps.h with VS2005
75
          #214,#215: windows.h should never be included by lemon headers
155
          #214,#215: windows.h should never be included by LEMON headers
76 156
          #230: Build systems check the availability of 'long long' type
... ...
@@ -96,8 +176,8 @@
96 176

	
97
	This is the first stable release of LEMON. Compared to the 0.x
98
	release series, it features a considerably smaller but more
99
	matured set of tools. The API has also completely revised and
100
	changed in several places.
177
        This is the first stable release of LEMON. Compared to the 0.x
178
        release series, it features a considerably smaller but more
179
        matured set of tools. The API has also completely revised and
180
        changed in several places.
101 181

	
102
	* The major name changes compared to the 0.x series (see the
182
        * The major name changes compared to the 0.x series (see the
103 183
          Migration Guide in the doc for more details)
... ...
@@ -105,40 +185,40 @@
105 185
          * Edge -> Arc, UEdge -> Edge
106
	  * source(UEdge)/target(UEdge) -> u(Edge)/v(Edge)
107
	* Other improvements
108
	  * Better documentation
109
	  * Reviewed and cleaned up codebase
110
	  * CMake based build system (along with the autotools based one)
111
	* Contents of the library (ported from 0.x)
112
	  * Algorithms
113
       	    * breadth-first search (bfs.h)
114
       	    * depth-first search (dfs.h)
115
       	    * Dijkstra's algorithm (dijkstra.h)
116
       	    * Kruskal's algorithm (kruskal.h)
117
    	  * Data structures
118
       	    * graph data structures (list_graph.h, smart_graph.h)
119
       	    * path data structures (path.h)
120
       	    * binary heap data structure (bin_heap.h)
121
       	    * union-find data structures (unionfind.h)
122
       	    * miscellaneous property maps (maps.h)
123
       	    * two dimensional vector and bounding box (dim2.h)
186
          * source(UEdge)/target(UEdge) -> u(Edge)/v(Edge)
187
        * Other improvements
188
          * Better documentation
189
          * Reviewed and cleaned up codebase
190
          * CMake based build system (along with the autotools based one)
191
        * Contents of the library (ported from 0.x)
192
          * Algorithms
193
            * breadth-first search (bfs.h)
194
            * depth-first search (dfs.h)
195
            * Dijkstra's algorithm (dijkstra.h)
196
            * Kruskal's algorithm (kruskal.h)
197
          * Data structures
198
            * graph data structures (list_graph.h, smart_graph.h)
199
            * path data structures (path.h)
200
            * binary heap data structure (bin_heap.h)
201
            * union-find data structures (unionfind.h)
202
            * miscellaneous property maps (maps.h)
203
            * two dimensional vector and bounding box (dim2.h)
124 204
          * Concepts
125
       	    * graph structure concepts (concepts/digraph.h, concepts/graph.h,
205
            * graph structure concepts (concepts/digraph.h, concepts/graph.h,
126 206
              concepts/graph_components.h)
127
       	    * concepts for other structures (concepts/heap.h, concepts/maps.h,
128
	      concepts/path.h)
129
    	  * Tools
130
       	    * Mersenne twister random number generator (random.h)
131
       	    * tools for measuring cpu and wall clock time (time_measure.h)
132
       	    * tools for counting steps and events (counter.h)
133
       	    * tool for parsing command line arguments (arg_parser.h)
134
       	    * tool for visualizing graphs (graph_to_eps.h)
135
       	    * tools for reading and writing data in LEMON Graph Format
207
            * concepts for other structures (concepts/heap.h, concepts/maps.h,
208
              concepts/path.h)
209
          * Tools
210
            * Mersenne twister random number generator (random.h)
211
            * tools for measuring cpu and wall clock time (time_measure.h)
212
            * tools for counting steps and events (counter.h)
213
            * tool for parsing command line arguments (arg_parser.h)
214
            * tool for visualizing graphs (graph_to_eps.h)
215
            * tools for reading and writing data in LEMON Graph Format
136 216
              (lgf_reader.h, lgf_writer.h)
137 217
            * tools to handle the anomalies of calculations with
138
	      floating point numbers (tolerance.h)
218
              floating point numbers (tolerance.h)
139 219
            * tools to manage RGB colors (color.h)
140
    	  * Infrastructure
141
       	    * extended assertion handling (assert.h)
142
       	    * exception classes and error handling (error.h)
143
      	    * concept checking (concept_check.h)
144
       	    * commonly used mathematical constants (math.h)
220
          * Infrastructure
221
            * extended assertion handling (assert.h)
222
            * exception classes and error handling (error.h)
223
            * concept checking (concept_check.h)
224
            * commonly used mathematical constants (math.h)
Ignore white space 6 line context
... ...
@@ -265,10 +265,2 @@
265 265
/**
266
@defgroup matrices Matrices
267
@ingroup datas
268
\brief Two dimensional data storages implemented in LEMON.
269

	
270
This group contains two dimensional data storages implemented in LEMON.
271
*/
272

	
273
/**
274 266
@defgroup auxdat Auxiliary Data Structures
... ...
@@ -474,15 +466,15 @@
474 466
LEMON contains three algorithms for solving the minimum mean cycle problem:
475
- \ref Karp "Karp"'s original algorithm \ref amo93networkflows,
467
- \ref KarpMmc Karp's original algorithm \ref amo93networkflows,
476 468
  \ref dasdan98minmeancycle.
477
- \ref HartmannOrlin "Hartmann-Orlin"'s algorithm, which is an improved
469
- \ref HartmannOrlinMmc Hartmann-Orlin's algorithm, which is an improved
478 470
  version of Karp's algorithm \ref dasdan98minmeancycle.
479
- \ref Howard "Howard"'s policy iteration algorithm
471
- \ref HowardMmc Howard's policy iteration algorithm
480 472
  \ref dasdan98minmeancycle.
481 473

	
482
In practice, the Howard algorithm proved to be by far the most efficient
483
one, though the best known theoretical bound on its running time is
484
exponential.
485
Both Karp and HartmannOrlin algorithms run in time O(ne) and use space
486
O(n<sup>2</sup>+e), but the latter one is typically faster due to the
487
applied early termination scheme.
474
In practice, the \ref HowardMmc "Howard" algorithm proved to be by far the
475
most efficient one, though the best known theoretical bound on its running
476
time is exponential.
477
Both \ref KarpMmc "Karp" and \ref HartmannOrlinMmc "Hartmann-Orlin" algorithms
478
run in time O(ne) and use space O(n<sup>2</sup>+e), but the latter one is
479
typically faster due to the applied early termination scheme.
488 480
*/
Ignore white space 6 line context
... ...
@@ -37,8 +37,15 @@
37 37
  ///Exception used by ArgParser
38

	
39
  ///Exception used by ArgParser.
40
  ///
38 41
  class ArgParserException : public Exception {
39 42
  public:
43
    /// Reasons for failure
44

	
45
    /// Reasons for failure.
46
    ///
40 47
    enum Reason {
41
      HELP,         /// <tt>--help</tt> option was given
42
      UNKNOWN_OPT,  /// Unknown option was given
43
      INVALID_OPT   /// Invalid combination of options
48
      HELP,         ///< <tt>--help</tt> option was given.
49
      UNKNOWN_OPT,  ///< Unknown option was given.
50
      INVALID_OPT   ///< Invalid combination of options.
44 51
    };
Ignore white space 6 line context
... ...
@@ -30,3 +30,2 @@
30 30
#include <lemon/maps.h>
31
#include <lemon/tolerance.h>
32 31
#include <lemon/path.h>
... ...
@@ -37,3 +36,3 @@
37 36

	
38
  /// \brief Default operation traits for the BellmanFord algorithm class.
37
  /// \brief Default OperationTraits for the BellmanFord algorithm class.
39 38
  ///
... ...
@@ -44,4 +43,2 @@
44 43
  /// value is used as extremal infinity value.
45
  ///
46
  /// \see BellmanFordToleranceOperationTraits
47 44
  template <
... ...
@@ -50,3 +47,3 @@
50 47
  struct BellmanFordDefaultOperationTraits {
51
    /// \brief Value type for the algorithm.
48
    /// \e
52 49
    typedef V Value;
... ...
@@ -89,47 +86,2 @@
89 86

	
90
  /// \brief Operation traits for the BellmanFord algorithm class
91
  /// using tolerance.
92
  ///
93
  /// This operation traits class defines all computational operations
94
  /// and constants that are used in the Bellman-Ford algorithm.
95
  /// The only difference between this implementation and
96
  /// \ref BellmanFordDefaultOperationTraits is that this class uses
97
  /// the \ref Tolerance "tolerance technique" in its \ref less()
98
  /// function.
99
  ///
100
  /// \tparam V The value type.
101
  /// \tparam eps The epsilon value for the \ref less() function.
102
  /// By default, it is the epsilon value used by \ref Tolerance
103
  /// "Tolerance<V>".
104
  ///
105
  /// \see BellmanFordDefaultOperationTraits
106
#ifdef DOXYGEN
107
  template <typename V, V eps>
108
#else
109
  template <
110
    typename V,
111
    V eps = Tolerance<V>::def_epsilon>
112
#endif
113
  struct BellmanFordToleranceOperationTraits {
114
    /// \brief Value type for the algorithm.
115
    typedef V Value;
116
    /// \brief Gives back the zero value of the type.
117
    static Value zero() {
118
      return static_cast<Value>(0);
119
    }
120
    /// \brief Gives back the positive infinity value of the type.
121
    static Value infinity() {
122
      return std::numeric_limits<Value>::infinity();
123
    }
124
    /// \brief Gives back the sum of the given two elements.
125
    static Value plus(const Value& left, const Value& right) {
126
      return left + right;
127
    }
128
    /// \brief Gives back \c true only if the first value is less than
129
    /// the second.
130
    static bool less(const Value& left, const Value& right) {
131
      return left + eps < right;
132
    }
133
  };
134

	
135 87
  /// \brief Default traits class of BellmanFord class.
... ...
@@ -157,4 +109,3 @@
157 109
    /// given \c Value type.
158
    /// \see BellmanFordDefaultOperationTraits,
159
    /// BellmanFordToleranceOperationTraits
110
    /// \see BellmanFordDefaultOperationTraits
160 111
    typedef BellmanFordDefaultOperationTraits<Value> OperationTraits;
... ...
@@ -888,4 +839,3 @@
888 839
    /// given \c Value type.
889
    /// \see BellmanFordDefaultOperationTraits,
890
    /// BellmanFordToleranceOperationTraits
840
    /// \see BellmanFordDefaultOperationTraits
891 841
    typedef BellmanFordDefaultOperationTraits<Value> OperationTraits;
Ignore white space 6 line context
... ...
@@ -40,3 +40,3 @@
40 40
  /// \tparam CM The type of the cost map.
41
  /// It must conform to the \ref concepts::Rea_data "Rea_data" concept.
41
  /// It must conform to the \ref concepts::ReadMap "ReadMap" concept.
42 42
#ifdef DOXYGEN
... ...
@@ -101,3 +101,3 @@
101 101
  /// \ref amo93networkflows, \ref dasdan98minmeancycle.
102
  /// It is an improved version of \ref Karp "Karp"'s original algorithm,
102
  /// It is an improved version of \ref KarpMmc "Karp"'s original algorithm,
103 103
  /// it applies an efficient early termination scheme.
Show white space 6 line context
... ...
@@ -106,3 +106,2 @@
106 106
      ::SetOperationTraits<BellmanFordDefaultOperationTraits<Value> >
107
      ::SetOperationTraits<BellmanFordToleranceOperationTraits<Value, 0> >
108 107
      ::Create bf_test(gr,length);
0 comments (0 inline)