[Lemon-commits] [lemon_svn] marci: r859 - in hugo/trunk/src: hugo work/jacint
Lemon SVN
svn at lemon.cs.elte.hu
Mon Nov 6 20:41:54 CET 2006
Author: marci
Date: Fri May 21 14:40:39 2004
New Revision: 859
Modified:
hugo/trunk/src/hugo/graph_wrapper.h
hugo/trunk/src/work/jacint/max_flow.h
Log:
max_flow.h bug correction
Modified: hugo/trunk/src/hugo/graph_wrapper.h
==============================================================================
--- hugo/trunk/src/hugo/graph_wrapper.h (original)
+++ hugo/trunk/src/hugo/graph_wrapper.h Fri May 21 14:40:39 2004
@@ -1380,6 +1380,9 @@
const CapacityMap* capacity;
const FlowMap* flow;
public:
+ void setGraph(const Graph& _graph) { graph=&_graph; }
+ void setCapacity(const CapacityMap& _capacity) { capacity=&_capacity; }
+ void setFlow(const FlowMap& _flow) { flow=&_flow; }
ForwardFilter(const Graph& _graph,
const CapacityMap& _capacity, const FlowMap& _flow) :
graph(&_graph), capacity(&_capacity), flow(&_flow) { }
@@ -1395,6 +1398,9 @@
const CapacityMap* capacity;
const FlowMap* flow;
public:
+ void setGraph(const Graph& _graph) { graph=&_graph; }
+ void setCapacity(const CapacityMap& _capacity) { capacity=&_capacity; }
+ void setFlow(const FlowMap& _flow) { flow=&_flow; }
BackwardFilter(const Graph& _graph,
const CapacityMap& _capacity, const FlowMap& _flow) :
graph(&_graph), capacity(&_capacity), flow(&_flow) { }
@@ -1424,6 +1430,14 @@
FlowMap* flow;
ForwardFilter<Graph, Number, CapacityMap, FlowMap> forward_filter;
BackwardFilter<Graph, Number, CapacityMap, FlowMap> backward_filter;
+// ResGraphWrapper() : Parent(),
+// capacity(0), flow(0) { }
+// void setCapacityMap(const CapacityMap& _capacity) {
+// capacity=&_capacity;
+// }
+// void setFlowMap(FlowMap& _flow) {
+// flow=&_flow;
+// }
public:
ResGraphWrapper(Graph& _graph, const CapacityMap& _capacity,
FlowMap& _flow) :
Modified: hugo/trunk/src/work/jacint/max_flow.h
==============================================================================
--- hugo/trunk/src/work/jacint/max_flow.h (original)
+++ hugo/trunk/src/work/jacint/max_flow.h Fri May 21 14:40:39 2004
@@ -122,6 +122,7 @@
enum StatusEnum {
AFTER_NOTHING,
AFTER_AUGMENTING,
+ AFTER_FAST_AUGMENTING,
AFTER_PRE_FLOW_PHASE_1,
AFTER_PRE_FLOW_PHASE_2
};
@@ -265,7 +266,7 @@
void actMinCut(_CutMap& M) const {
NodeIt v;
switch (status) {
- case AFTER_PRE_FLOW_PHASE_1:
+ case AFTER_PRE_FLOW_PHASE_1:
for(g->first(v); g->valid(v); g->next(v)) {
if (level[v] < n) {
M.set(v, false);
@@ -274,11 +275,11 @@
}
}
break;
- case AFTER_PRE_FLOW_PHASE_2:
- case AFTER_NOTHING:
+ case AFTER_PRE_FLOW_PHASE_2:
+ case AFTER_NOTHING:
minMinCut(M);
break;
- case AFTER_AUGMENTING:
+ case AFTER_AUGMENTING:
for(g->first(v); g->valid(v); g->next(v)) {
if (level[v]) {
M.set(v, true);
@@ -287,6 +288,15 @@
}
}
break;
+ case AFTER_FAST_AUGMENTING:
+ for(g->first(v); g->valid(v); g->next(v)) {
+ if (level[v]==number_of_augmentations) {
+ M.set(v, true);
+ } else {
+ M.set(v, false);
+ }
+ }
+ break;
}
}
@@ -944,9 +954,9 @@
ResGW res_graph(*g, *capacity, *flow);
bool _augment=false;
- if (status!=AFTER_AUGMENTING) {
- FOR_EACH_LOC(typename Graph::NodeIt, e, *g) level.set(e, 3*n);
- number_of_augmentations=3*n+1;
+ if (status!=AFTER_FAST_AUGMENTING) {
+ FOR_EACH_LOC(typename Graph::NodeIt, e, *g) level.set(e, 0);
+ number_of_augmentations=1;
} else {
++number_of_augmentations;
}
@@ -991,7 +1001,7 @@
}
}
- status=AFTER_AUGMENTING;
+ status=AFTER_FAST_AUGMENTING;
return _augment;
}
More information about the Lemon-commits
mailing list