Changeset 764:1fac515a59c1 in lemon-main
- Timestamp:
- 08/10/09 14:50:57 (15 years ago)
- Branch:
- default
- Phase:
- public
- Files:
-
- 2 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
lemon/Makefile.am
r758 r764 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 \ … … 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 \ -
lemon/howard.h
r763 r764 17 17 */ 18 18 19 #ifndef LEMON_ MIN_MEAN_CYCLE_H20 #define LEMON_ MIN_MEAN_CYCLE_H19 #ifndef LEMON_HOWARD_H 20 #define LEMON_HOWARD_H 21 21 22 22 /// \ingroup shortest_path … … 34 34 namespace lemon { 35 35 36 /// \brief Default traits class of MinMeanCycleclass.36 /// \brief Default traits class of Howard class. 37 37 /// 38 /// Default traits class of MinMeanCycleclass.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. … … 46 46 bool integer = std::numeric_limits<typename LEN::Value>::is_integer> 47 47 #endif 48 struct MinMeanCycleDefaultTraits48 struct HowardDefaultTraits 49 49 { 50 50 /// The type of the digraph … … 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; … … 97 97 /// mean cycle. 98 98 /// 99 /// \ref MinMeanCycle implements Howard's algorithm for finding a100 /// 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. … … 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 MinMeanCycle112 class Howard 113 113 { 114 114 public: … … 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. … … 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 algorithm141 /// The \ref HowardDefaultTraits "traits class" of the algorithm 142 142 typedef TR Traits; 143 143 … … 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 … … 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 … … 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 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), … … 237 237 238 238 /// Destructor. 239 ~ MinMeanCycle() {239 ~Howard() { 240 240 if (_local_path) delete _cycle_path; 241 241 } … … 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; … … 560 560 } 561 561 562 }; //class MinMeanCycle562 }; //class Howard 563 563 564 564 ///@} … … 566 566 } //namespace lemon 567 567 568 #endif //LEMON_ MIN_MEAN_CYCLE_H568 #endif //LEMON_HOWARD_H -
test/min_mean_cycle_test.cc
r763 r764 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> … … 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>(); … … 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
Note: See TracChangeset
for help on using the changeset viewer.