[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