1.1 --- a/test/min_mean_cycle_test.cc Mon Mar 08 08:33:41 2010 +0100
1.2 +++ b/test/min_mean_cycle_test.cc Sat Mar 13 22:01:38 2010 +0100
1.3 @@ -25,9 +25,9 @@
1.4 #include <lemon/concepts/digraph.h>
1.5 #include <lemon/concept_check.h>
1.6
1.7 -#include <lemon/karp.h>
1.8 -#include <lemon/hartmann_orlin.h>
1.9 -#include <lemon/howard.h>
1.10 +#include <lemon/karp_mmc.h>
1.11 +#include <lemon/hartmann_orlin_mmc.h>
1.12 +#include <lemon/howard_mmc.h>
1.13
1.14 #include "test_tools.h"
1.15
1.16 @@ -63,7 +63,7 @@
1.17
1.18
1.19 // Check the interface of an MMC algorithm
1.20 -template <typename GR, typename Value>
1.21 +template <typename GR, typename Cost>
1.22 struct MmcClassConcept
1.23 {
1.24 template <typename MMC>
1.25 @@ -73,30 +73,30 @@
1.26
1.27 typedef typename MMC
1.28 ::template SetPath<ListPath<GR> >
1.29 - ::template SetLargeValue<Value>
1.30 + ::template SetLargeCost<Cost>
1.31 ::Create MmcAlg;
1.32 - MmcAlg mmc(me.g, me.length);
1.33 + MmcAlg mmc(me.g, me.cost);
1.34 const MmcAlg& const_mmc = mmc;
1.35
1.36 typename MmcAlg::Tolerance tol = const_mmc.tolerance();
1.37 mmc.tolerance(tol);
1.38
1.39 b = mmc.cycle(p).run();
1.40 - b = mmc.findMinMean();
1.41 + b = mmc.findCycleMean();
1.42 b = mmc.findCycle();
1.43
1.44 - v = const_mmc.cycleLength();
1.45 - i = const_mmc.cycleArcNum();
1.46 + v = const_mmc.cycleCost();
1.47 + i = const_mmc.cycleSize();
1.48 d = const_mmc.cycleMean();
1.49 p = const_mmc.cycle();
1.50 }
1.51
1.52 - typedef concepts::ReadMap<typename GR::Arc, Value> LM;
1.53 + typedef concepts::ReadMap<typename GR::Arc, Cost> CM;
1.54
1.55 GR g;
1.56 - LM length;
1.57 + CM cost;
1.58 ListPath<GR> p;
1.59 - Value v;
1.60 + Cost v;
1.61 int i;
1.62 double d;
1.63 bool b;
1.64 @@ -108,13 +108,13 @@
1.65 void checkMmcAlg(const SmartDigraph& gr,
1.66 const SmartDigraph::ArcMap<int>& lm,
1.67 const SmartDigraph::ArcMap<int>& cm,
1.68 - int length, int size) {
1.69 + int cost, int size) {
1.70 MMC alg(gr, lm);
1.71 - alg.findMinMean();
1.72 - check(alg.cycleMean() == static_cast<double>(length) / size,
1.73 + alg.findCycleMean();
1.74 + check(alg.cycleMean() == static_cast<double>(cost) / size,
1.75 "Wrong cycle mean");
1.76 alg.findCycle();
1.77 - check(alg.cycleLength() == length && alg.cycleArcNum() == size,
1.78 + check(alg.cycleCost() == cost && alg.cycleSize() == size,
1.79 "Wrong path");
1.80 SmartDigraph::ArcMap<int> cycle(gr, 0);
1.81 for (typename MMC::Path::ArcIt a(alg.cycle()); a != INVALID; ++a) {
1.82 @@ -148,28 +148,28 @@
1.83 {
1.84 typedef concepts::Digraph GR;
1.85
1.86 - // Karp
1.87 + // KarpMmc
1.88 checkConcept< MmcClassConcept<GR, int>,
1.89 - Karp<GR, concepts::ReadMap<GR::Arc, int> > >();
1.90 + KarpMmc<GR, concepts::ReadMap<GR::Arc, int> > >();
1.91 checkConcept< MmcClassConcept<GR, float>,
1.92 - Karp<GR, concepts::ReadMap<GR::Arc, float> > >();
1.93 + KarpMmc<GR, concepts::ReadMap<GR::Arc, float> > >();
1.94
1.95 - // HartmannOrlin
1.96 + // HartmannOrlinMmc
1.97 checkConcept< MmcClassConcept<GR, int>,
1.98 - HartmannOrlin<GR, concepts::ReadMap<GR::Arc, int> > >();
1.99 + HartmannOrlinMmc<GR, concepts::ReadMap<GR::Arc, int> > >();
1.100 checkConcept< MmcClassConcept<GR, float>,
1.101 - HartmannOrlin<GR, concepts::ReadMap<GR::Arc, float> > >();
1.102 + HartmannOrlinMmc<GR, concepts::ReadMap<GR::Arc, float> > >();
1.103
1.104 - // Howard
1.105 + // HowardMmc
1.106 checkConcept< MmcClassConcept<GR, int>,
1.107 - Howard<GR, concepts::ReadMap<GR::Arc, int> > >();
1.108 + HowardMmc<GR, concepts::ReadMap<GR::Arc, int> > >();
1.109 checkConcept< MmcClassConcept<GR, float>,
1.110 - Howard<GR, concepts::ReadMap<GR::Arc, float> > >();
1.111 + HowardMmc<GR, concepts::ReadMap<GR::Arc, float> > >();
1.112
1.113 - if (IsSameType<Howard<GR, concepts::ReadMap<GR::Arc, int> >::LargeValue,
1.114 - long_int>::result == 0) check(false, "Wrong LargeValue type");
1.115 - if (IsSameType<Howard<GR, concepts::ReadMap<GR::Arc, float> >::LargeValue,
1.116 - double>::result == 0) check(false, "Wrong LargeValue type");
1.117 + check((IsSameType<HowardMmc<GR, concepts::ReadMap<GR::Arc, int> >
1.118 + ::LargeCost, long_int>::result == 1), "Wrong LargeCost type");
1.119 + check((IsSameType<HowardMmc<GR, concepts::ReadMap<GR::Arc, float> >
1.120 + ::LargeCost, double>::result == 1), "Wrong LargeCost type");
1.121 }
1.122
1.123 // Run various tests
1.124 @@ -194,22 +194,22 @@
1.125 run();
1.126
1.127 // Karp
1.128 - checkMmcAlg<Karp<GR, IntArcMap> >(gr, l1, c1, 6, 3);
1.129 - checkMmcAlg<Karp<GR, IntArcMap> >(gr, l2, c2, 5, 2);
1.130 - checkMmcAlg<Karp<GR, IntArcMap> >(gr, l3, c3, 0, 1);
1.131 - checkMmcAlg<Karp<GR, IntArcMap> >(gr, l4, c4, -1, 1);
1.132 + checkMmcAlg<KarpMmc<GR, IntArcMap> >(gr, l1, c1, 6, 3);
1.133 + checkMmcAlg<KarpMmc<GR, IntArcMap> >(gr, l2, c2, 5, 2);
1.134 + checkMmcAlg<KarpMmc<GR, IntArcMap> >(gr, l3, c3, 0, 1);
1.135 + checkMmcAlg<KarpMmc<GR, IntArcMap> >(gr, l4, c4, -1, 1);
1.136
1.137 // HartmannOrlin
1.138 - checkMmcAlg<HartmannOrlin<GR, IntArcMap> >(gr, l1, c1, 6, 3);
1.139 - checkMmcAlg<HartmannOrlin<GR, IntArcMap> >(gr, l2, c2, 5, 2);
1.140 - checkMmcAlg<HartmannOrlin<GR, IntArcMap> >(gr, l3, c3, 0, 1);
1.141 - checkMmcAlg<HartmannOrlin<GR, IntArcMap> >(gr, l4, c4, -1, 1);
1.142 + checkMmcAlg<HartmannOrlinMmc<GR, IntArcMap> >(gr, l1, c1, 6, 3);
1.143 + checkMmcAlg<HartmannOrlinMmc<GR, IntArcMap> >(gr, l2, c2, 5, 2);
1.144 + checkMmcAlg<HartmannOrlinMmc<GR, IntArcMap> >(gr, l3, c3, 0, 1);
1.145 + checkMmcAlg<HartmannOrlinMmc<GR, IntArcMap> >(gr, l4, c4, -1, 1);
1.146
1.147 // Howard
1.148 - checkMmcAlg<Howard<GR, IntArcMap> >(gr, l1, c1, 6, 3);
1.149 - checkMmcAlg<Howard<GR, IntArcMap> >(gr, l2, c2, 5, 2);
1.150 - checkMmcAlg<Howard<GR, IntArcMap> >(gr, l3, c3, 0, 1);
1.151 - checkMmcAlg<Howard<GR, IntArcMap> >(gr, l4, c4, -1, 1);
1.152 + checkMmcAlg<HowardMmc<GR, IntArcMap> >(gr, l1, c1, 6, 3);
1.153 + checkMmcAlg<HowardMmc<GR, IntArcMap> >(gr, l2, c2, 5, 2);
1.154 + checkMmcAlg<HowardMmc<GR, IntArcMap> >(gr, l3, c3, 0, 1);
1.155 + checkMmcAlg<HowardMmc<GR, IntArcMap> >(gr, l4, c4, -1, 1);
1.156 }
1.157
1.158 return 0;