gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Rename MinMeanCycle to Howard (#179)
1 2 1
default
4 files changed with 31 insertions and 31 deletions:
↑ Collapse diff ↑
Ignore white space 6 line context
... ...
@@ -80,12 +80,13 @@
80 80
	lemon/fib_heap.h \
81 81
	lemon/full_graph.h \
82 82
	lemon/glpk.h \
83 83
	lemon/gomory_hu.h \
84 84
	lemon/graph_to_eps.h \
85 85
	lemon/grid_graph.h \
86
	lemon/howard.h \
86 87
	lemon/hypercube_graph.h \
87 88
	lemon/kruskal.h \
88 89
	lemon/hao_orlin.h \
89 90
	lemon/lgf_reader.h \
90 91
	lemon/lgf_writer.h \
91 92
	lemon/list_graph.h \
... ...
@@ -94,13 +95,12 @@
94 95
	lemon/lp_skeleton.h \
95 96
	lemon/list_graph.h \
96 97
	lemon/maps.h \
97 98
	lemon/matching.h \
98 99
	lemon/math.h \
99 100
	lemon/min_cost_arborescence.h \
100
	lemon/min_mean_cycle.h \
101 101
	lemon/nauty_reader.h \
102 102
	lemon/network_simplex.h \
103 103
	lemon/path.h \
104 104
	lemon/preflow.h \
105 105
	lemon/radix_heap.h \
106 106
	lemon/radix_sort.h \
Ignore white space 6 line context
... ...
@@ -13,14 +13,14 @@
13 13
 * This software is provided "AS IS" with no warranty of any kind,
14 14
 * express or implied, and with no claim as to its suitability for any
15 15
 * purpose.
16 16
 *
17 17
 */
18 18

	
19
#ifndef LEMON_MIN_MEAN_CYCLE_H
20
#define LEMON_MIN_MEAN_CYCLE_H
19
#ifndef LEMON_HOWARD_H
20
#define LEMON_HOWARD_H
21 21

	
22 22
/// \ingroup shortest_path
23 23
///
24 24
/// \file
25 25
/// \brief Howard's algorithm for finding a minimum mean cycle.
26 26

	
... ...
@@ -30,25 +30,25 @@
30 30
#include <lemon/path.h>
31 31
#include <lemon/tolerance.h>
32 32
#include <lemon/connectivity.h>
33 33

	
34 34
namespace lemon {
35 35

	
36
  /// \brief Default traits class of MinMeanCycle class.
36
  /// \brief Default traits class of Howard class.
37 37
  ///
38
  /// Default traits class of MinMeanCycle class.
38
  /// Default traits class of Howard class.
39 39
  /// \tparam GR The type of the digraph.
40 40
  /// \tparam LEN The type of the length map.
41 41
  /// It must conform to the \ref concepts::ReadMap "ReadMap" concept.
42 42
#ifdef DOXYGEN
43 43
  template <typename GR, typename LEN>
44 44
#else
45 45
  template <typename GR, typename LEN,
46 46
    bool integer = std::numeric_limits<typename LEN::Value>::is_integer>
47 47
#endif
48
  struct MinMeanCycleDefaultTraits
48
  struct HowardDefaultTraits
49 49
  {
50 50
    /// The type of the digraph
51 51
    typedef GR Digraph;
52 52
    /// The type of the length map
53 53
    typedef LEN LengthMap;
54 54
    /// The type of the arc lengths
... ...
@@ -72,13 +72,13 @@
72 72
    /// and it must have an \c addBack() function.
73 73
    typedef lemon::Path<Digraph> Path;
74 74
  };
75 75

	
76 76
  // Default traits class for integer value types
77 77
  template <typename GR, typename LEN>
78
  struct MinMeanCycleDefaultTraits<GR, LEN, true>
78
  struct HowardDefaultTraits<GR, LEN, true>
79 79
  {
80 80
    typedef GR Digraph;
81 81
    typedef LEN LengthMap;
82 82
    typedef typename LengthMap::Value Value;
83 83
#ifdef LEMON_HAVE_LONG_LONG
84 84
    typedef long long LargeValue;
... ...
@@ -93,26 +93,26 @@
93 93
  /// \addtogroup shortest_path
94 94
  /// @{
95 95

	
96 96
  /// \brief Implementation of Howard's algorithm for finding a minimum
97 97
  /// mean cycle.
98 98
  ///
99
  /// \ref MinMeanCycle implements Howard's algorithm for finding a
100
  /// directed cycle of minimum mean length (cost) in a digraph.
99
  /// This class implements Howard's policy iteration algorithm for finding
100
  /// a directed cycle of minimum mean length (cost) in a digraph.
101 101
  ///
102 102
  /// \tparam GR The type of the digraph the algorithm runs on.
103 103
  /// \tparam LEN The type of the length map. The default
104 104
  /// map type is \ref concepts::Digraph::ArcMap "GR::ArcMap<int>".
105 105
#ifdef DOXYGEN
106 106
  template <typename GR, typename LEN, typename TR>
107 107
#else
108 108
  template < typename GR,
109 109
             typename LEN = typename GR::template ArcMap<int>,
110
             typename TR = MinMeanCycleDefaultTraits<GR, LEN> >
110
             typename TR = HowardDefaultTraits<GR, LEN> >
111 111
#endif
112
  class MinMeanCycle
112
  class Howard
113 113
  {
114 114
  public:
115 115
  
116 116
    /// The type of the digraph
117 117
    typedef typename TR::Digraph Digraph;
118 118
    /// The type of the length map
... ...
@@ -120,28 +120,28 @@
120 120
    /// The type of the arc lengths
121 121
    typedef typename TR::Value Value;
122 122

	
123 123
    /// \brief The large value type
124 124
    ///
125 125
    /// The large value type used for internal computations.
126
    /// Using the \ref MinMeanCycleDefaultTraits "default traits class",
126
    /// Using the \ref HowardDefaultTraits "default traits class",
127 127
    /// it is \c long \c long if the \c Value type is integer,
128 128
    /// otherwise it is \c double.
129 129
    typedef typename TR::LargeValue LargeValue;
130 130

	
131 131
    /// The tolerance type
132 132
    typedef typename TR::Tolerance Tolerance;
133 133

	
134 134
    /// \brief The path type of the found cycles
135 135
    ///
136 136
    /// The path type of the found cycles.
137
    /// Using the \ref MinMeanCycleDefaultTraits "default traits class",
137
    /// Using the \ref HowardDefaultTraits "default traits class",
138 138
    /// it is \ref lemon::Path "Path<Digraph>".
139 139
    typedef typename TR::Path Path;
140 140

	
141
    /// The \ref MinMeanCycleDefaultTraits "traits class" of the algorithm
141
    /// The \ref HowardDefaultTraits "traits class" of the algorithm
142 142
    typedef TR Traits;
143 143

	
144 144
  private:
145 145

	
146 146
    TEMPLATE_DIGRAPH_TYPEDEFS(Digraph);
147 147
  
... ...
@@ -193,14 +193,14 @@
193 193
    /// \c LargeValue type.
194 194
    ///
195 195
    /// \ref named-templ-param "Named parameter" for setting \c LargeValue
196 196
    /// type. It is used for internal computations in the algorithm.
197 197
    template <typename T>
198 198
    struct SetLargeValue
199
      : public MinMeanCycle<GR, LEN, SetLargeValueTraits<T> > {
200
      typedef MinMeanCycle<GR, LEN, SetLargeValueTraits<T> > Create;
199
      : public Howard<GR, LEN, SetLargeValueTraits<T> > {
200
      typedef Howard<GR, LEN, SetLargeValueTraits<T> > Create;
201 201
    };
202 202

	
203 203
    template <typename T>
204 204
    struct SetPathTraits : public Traits {
205 205
      typedef T Path;
206 206
    };
... ...
@@ -211,35 +211,35 @@
211 211
    /// \ref named-templ-param "Named parameter" for setting the \c %Path
212 212
    /// type of the found cycles.
213 213
    /// It must conform to the \ref lemon::concepts::Path "Path" concept
214 214
    /// and it must have an \c addBack() function.
215 215
    template <typename T>
216 216
    struct SetPath
217
      : public MinMeanCycle<GR, LEN, SetPathTraits<T> > {
218
      typedef MinMeanCycle<GR, LEN, SetPathTraits<T> > Create;
217
      : public Howard<GR, LEN, SetPathTraits<T> > {
218
      typedef Howard<GR, LEN, SetPathTraits<T> > Create;
219 219
    };
220 220
    
221 221
    /// @}
222 222

	
223 223
  public:
224 224

	
225 225
    /// \brief Constructor.
226 226
    ///
227 227
    /// The constructor of the class.
228 228
    ///
229 229
    /// \param digraph The digraph the algorithm runs on.
230 230
    /// \param length The lengths (costs) of the arcs.
231
    MinMeanCycle( const Digraph &digraph,
232
                  const LengthMap &length ) :
231
    Howard( const Digraph &digraph,
232
            const LengthMap &length ) :
233 233
      _gr(digraph), _length(length), _cycle_path(NULL), _local_path(false),
234 234
      _policy(digraph), _reached(digraph), _level(digraph), _dist(digraph),
235 235
      _comp(digraph), _in_arcs(digraph)
236 236
    {}
237 237

	
238 238
    /// Destructor.
239
    ~MinMeanCycle() {
239
    ~Howard() {
240 240
      if (_local_path) delete _cycle_path;
241 241
    }
242 242

	
243 243
    /// \brief Set the path structure for storing the found cycle.
244 244
    ///
245 245
    /// This function sets an external path structure for storing the
... ...
@@ -251,13 +251,13 @@
251 251
    /// allocated object, of course.
252 252
    ///
253 253
    /// \note The algorithm calls only the \ref lemon::Path::addBack()
254 254
    /// "addBack()" function of the given path structure.
255 255
    ///
256 256
    /// \return <tt>(*this)</tt>
257
    MinMeanCycle& cycle(Path &path) {
257
    Howard& cycle(Path &path) {
258 258
      if (_local_path) {
259 259
        delete _cycle_path;
260 260
        _local_path = false;
261 261
      }
262 262
      _cycle_path = &path;
263 263
      return *this;
... ...
@@ -556,13 +556,13 @@
556 556
          }
557 557
        }
558 558
      }
559 559
      return improved;
560 560
    }
561 561

	
562
  }; //class MinMeanCycle
562
  }; //class Howard
563 563

	
564 564
  ///@}
565 565

	
566 566
} //namespace lemon
567 567

	
568
#endif //LEMON_MIN_MEAN_CYCLE_H
568
#endif //LEMON_HOWARD_H
Ignore white space 12 line context
... ...
@@ -18,13 +18,13 @@
18 18

	
19 19
#include <iostream>
20 20
#include <sstream>
21 21

	
22 22
#include <lemon/smart_graph.h>
23 23
#include <lemon/lgf_reader.h>
24
#include <lemon/min_mean_cycle.h>
24
#include <lemon/howard.h>
25 25
#include <lemon/path.h>
26 26
#include <lemon/concepts/digraph.h>
27 27
#include <lemon/concept_check.h>
28 28

	
29 29
#include "test_tools.h"
30 30

	
... ...
@@ -138,14 +138,14 @@
138 138
    typedef long long_int;
139 139
  #endif
140 140

	
141 141
  // Check the interface
142 142
  {
143 143
    typedef concepts::Digraph GR;
144
    typedef MinMeanCycle<GR, concepts::ReadMap<GR::Arc, int> > IntMmcAlg;
145
    typedef MinMeanCycle<GR, concepts::ReadMap<GR::Arc, float> > FloatMmcAlg;
144
    typedef Howard<GR, concepts::ReadMap<GR::Arc, int> > IntMmcAlg;
145
    typedef Howard<GR, concepts::ReadMap<GR::Arc, float> > FloatMmcAlg;
146 146
    
147 147
    checkConcept<MmcClassConcept<GR, int>, IntMmcAlg>();
148 148
    checkConcept<MmcClassConcept<GR, float>, FloatMmcAlg>();
149 149
  
150 150
    if (IsSameType<IntMmcAlg::LargeValue, long_int>::result == 0)
151 151
      check(false, "Wrong LargeValue type");
... ...
@@ -171,14 +171,14 @@
171 171
      arcMap("c1", c1).
172 172
      arcMap("c2", c2).
173 173
      arcMap("c3", c3).
174 174
      arcMap("c4", c4).
175 175
      run();
176 176

	
177
    checkMmcAlg<MinMeanCycle<GR, IntArcMap> >(gr, l1, c1,  6, 3);
178
    checkMmcAlg<MinMeanCycle<GR, IntArcMap> >(gr, l2, c2,  5, 2);
179
    checkMmcAlg<MinMeanCycle<GR, IntArcMap> >(gr, l3, c3,  0, 1);
180
    checkMmcAlg<MinMeanCycle<GR, IntArcMap> >(gr, l4, c4, -1, 1);
177
    checkMmcAlg<Howard<GR, IntArcMap> >(gr, l1, c1,  6, 3);
178
    checkMmcAlg<Howard<GR, IntArcMap> >(gr, l2, c2,  5, 2);
179
    checkMmcAlg<Howard<GR, IntArcMap> >(gr, l3, c3,  0, 1);
180
    checkMmcAlg<Howard<GR, IntArcMap> >(gr, l4, c4, -1, 1);
181 181
  }
182 182

	
183 183
  return 0;
184 184
}
0 comments (0 inline)