Changeset 2180:d5544c9409e4 in lemon-0.x
- Timestamp:
- 08/14/06 18:08:28 (19 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2897
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
test/arborescence_test.cc
r2025 r2180 15 15 #include <lemon/tolerance.h> 16 16 17 #include "test_tools.h" 18 17 19 using namespace lemon; 18 20 using namespace std; 19 21 20 int main(int argc, const char *argv[]) { 22 const int n = 10; 23 const int e = 22; 24 25 int sourceNode = 0; 26 27 int sources[e] = { 28 1, 0, 2, 4, 4, 3, 9, 8, 9, 8, 29 4, 2, 0, 6, 4, 1, 7, 2, 8, 6, 30 1, 0 31 }; 32 33 int targets[e] = { 34 8, 3, 1, 1, 4, 9, 8, 1, 8, 0, 35 3, 2, 1, 3, 1, 1, 2, 6, 3, 9, 36 1, 3 37 }; 38 39 double costs[e] = { 40 107.444, 70.3069, 46.0496, 28.3962, 91.4325, 41 76.9443, 61.986, 39.3754, 74.9575, 39.3153, 42 45.7094, 34.6184, 100.156, 95.726, 22.3429, 43 31.587, 51.6972, 29.6773, 115.038, 32.4137, 44 60.0038, 40.1237 45 }; 46 47 48 49 int main() { 21 50 srand(time(0)); 22 51 typedef SmartGraph Graph; … … 24 53 25 54 typedef Graph::EdgeMap<double> CostMap; 26 27 const int n = argc > 1 ? atoi(argv[1]) : 100;28 const int e = argc > 2 ? atoi(argv[2]) : (int)(n * log(n));29 55 30 56 Graph graph; … … 37 63 38 64 for (int i = 0; i < e; ++i) { 39 int s = (int)(n * (double)rand() / (RAND_MAX + 1.0)); 40 int t = (int)(n * (double)rand() / (RAND_MAX + 1.0)); 41 double c = rand() / (1.0 + RAND_MAX) * 100.0 + 20.0; 42 Edge edge = graph.addEdge(nodes[s], nodes[t]); 43 cost[edge] = c; 65 Edge edge = graph.addEdge(nodes[sources[i]], nodes[targets[i]]); 66 cost[edge] = costs[i]; 44 67 } 45 68 46 Node source = nodes[ (int)(n * (double)rand() / (RAND_MAX + 1.0))];69 Node source = nodes[sourceNode]; 47 70 48 71 MinCostArborescence<Graph, CostMap> mca(graph, cost); … … 73 96 } 74 97 if (mca.arborescence(it)) { 75 LEMON_ASSERT(!tolerance.less(sum, cost[it]), "INVALID DUAL");98 check(!tolerance.less(sum, cost[it]), "INVALID DUAL"); 76 99 } 77 LEMON_ASSERT(!tolerance.less(cost[it], sum), "INVALID DUAL");100 check(!tolerance.less(cost[it], sum), "INVALID DUAL"); 78 101 } 79 102 } 80 103 81 104 82 LEMON_ASSERT(!tolerance.different(mca.dualValue(), mca.arborescenceValue()),105 check(!tolerance.different(mca.dualValue(), mca.arborescenceValue()), 83 106 "INVALID DUAL"); 84 107 85 108 86 LEMON_ASSERT(mca.reached(source), "INVALID ARBORESCENCE");109 check(mca.reached(source), "INVALID ARBORESCENCE"); 87 110 for (EdgeIt it(graph); it != INVALID; ++it) { 88 LEMON_ASSERT(!mca.reached(graph.source(it)) ||111 check(!mca.reached(graph.source(it)) || 89 112 mca.reached(graph.target(it)), "INVALID ARBORESCENCE"); 90 113 } … … 98 121 } 99 122 } 100 LEMON_ASSERT((it == source ? cnt == 0 : cnt == 1), "INVALID ARBORESCENCE");123 check((it == source ? cnt == 0 : cnt == 1), "INVALID ARBORESCENCE"); 101 124 } 102 125
Note: See TracChangeset
for help on using the changeset viewer.