Update of /cvsroot/boost/boost/boost/graph
In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv3645/boost/graph
Modified Files:
kolmogorov_max_flow.hpp
Log Message:
changed coloring to be consistent with edmunds_karp_max_flow
Index: kolmogorov_max_flow.hpp
===================================================================
RCS file: /cvsroot/boost/boost/boost/graph/kolmogorov_max_flow.hpp,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- kolmogorov_max_flow.hpp 20 Nov 2006 23:42:44 -0000 1.1
+++ kolmogorov_max_flow.hpp 11 Mar 2007 11:56:10 -0000 1.2
@@ -115,8 +115,8 @@
assert(m_rev_edge_map[m_rev_edge_map[*ei]] == *ei); //check if
the reverse edge map is build up properly
}
//init the search trees with the two terminals
- set_tree(m_source, tColorTraits::white());
- set_tree(m_sink, tColorTraits::black());
+ set_tree(m_source, tColorTraits::black());
+ set_tree(m_sink, tColorTraits::white());
m_time_map[m_source] = 1;
m_time_map[m_sink] = 1;
}
@@ -166,7 +166,7 @@
tEdgeVal cap_from_source = m_res_cap_map[from_source];
tEdgeVal cap_to_sink = m_res_cap_map[to_sink];
if(cap_from_source > cap_to_sink){
- set_tree(current_node, tColorTraits::white());
+ set_tree(current_node, tColorTraits::black());
add_active_node(current_node);
set_edge_to_parent(current_node, from_source);
m_dist_map[current_node] = 1;
@@ -177,7 +177,7 @@
m_res_cap_map[to_sink] = 0;
m_flow += cap_to_sink;
} else if(cap_to_sink > 0){
- set_tree(current_node, tColorTraits::black());
+ set_tree(current_node, tColorTraits::white());
add_active_node(current_node);
set_edge_to_parent(current_node, to_sink);
m_dist_map[current_node] = 1;
@@ -191,7 +191,7 @@
} else if(m_res_cap_map[from_source]){
//there is no sink connect, so we can't augment this path
//but to avoid adding m_source to the active nodes, we just
activate this node and set the approciate things
- set_tree(current_node, tColorTraits::white());
+ set_tree(current_node, tColorTraits::black());
set_edge_to_parent(current_node, from_source);
m_dist_map[current_node] = 1;
m_time_map[current_node] = 1;
@@ -202,7 +202,7 @@
edge_descriptor to_sink = m_rev_edge_map[*ei];
vertex_descriptor current_node = source(to_sink, m_g);
if(m_res_cap_map[to_sink]){
- set_tree(current_node, tColorTraits::black());
+ set_tree(current_node, tColorTraits::white());
set_edge_to_parent(current_node, to_sink);
m_dist_map[current_node] = 1;
m_time_map[current_node] = 1;
@@ -221,7 +221,7 @@
vertex_descriptor current_node;
while((current_node = get_next_active_node()) !=
graph_traits<Graph>::null_vertex()){ //if there is one
assert(get_tree(current_node) != tColorTraits::gray() &&
(has_parent(current_node) || current_node==m_source || current_node==m_sink));
- if(get_tree(current_node) == tColorTraits::white()){
+ if(get_tree(current_node) == tColorTraits::black()){
//source tree growing
out_edge_iterator ei, e_end;
if(current_node != m_last_grow_vertex){
@@ -233,19 +233,19 @@
if(m_res_cap_map[out_edge] > 0){ //check if we have capacity
left on this edge
vertex_descriptor other_node = target(out_edge, m_g);
if(get_tree(other_node) == tColorTraits::gray()){ //it's a
free node
- set_tree(other_node, tColorTraits::white()); //aquire
other node to our search tree
+ set_tree(other_node, tColorTraits::black()); //aquire
other node to our search tree
set_edge_to_parent(other_node, out_edge); //set us as
parent
m_dist_map[other_node] = m_dist_map[current_node] + 1;
//and update the distance-heuristic
m_time_map[other_node] = m_time_map[current_node];
add_active_node(other_node);
- } else if(get_tree(other_node) == tColorTraits::white()){
+ } else if(get_tree(other_node) == tColorTraits::black()){
if(is_closer_to_terminal(current_node, other_node)){
//we do this to get shorter paths. check if we are nearer to the source as its
parent is
set_edge_to_parent(other_node, out_edge);
m_dist_map[other_node] = m_dist_map[current_node] + 1;
m_time_map[other_node] = m_time_map[current_node];
}
} else{
- assert(get_tree(other_node)==tColorTraits::black());
+ assert(get_tree(other_node)==tColorTraits::white());
//kewl, found a path from one to the other search tree,
return the connecting edge in src->sink dir
return std::make_pair(out_edge, true);
}
@@ -253,7 +253,7 @@
} //for all out-edges
} //source-tree-growing
else{
- assert(get_tree(current_node) == tColorTraits::black());
+ assert(get_tree(current_node) == tColorTraits::white());
out_edge_iterator ei, e_end;
if(current_node != m_last_grow_vertex){
m_last_grow_vertex = current_node;
@@ -264,12 +264,12 @@
if(m_res_cap_map[in_edge] > 0){ //check if there is capacity
left
vertex_descriptor other_node = source(in_edge, m_g);
if(get_tree(other_node) == tColorTraits::gray()){ //it's a
free node
- set_tree(other_node, tColorTraits::black());
//aquire that node to our search tree
+ set_tree(other_node, tColorTraits::white());
//aquire that node to our search tree
set_edge_to_parent(other_node, in_edge); //set
us as parent
add_active_node(other_node);
//activate that node
m_dist_map[other_node] = m_dist_map[current_node] + 1;
//set its distance
m_time_map[other_node] = m_time_map[current_node];
//and time
- } else if(get_tree(other_node) == tColorTraits::black()){
+ } else if(get_tree(other_node) == tColorTraits::white()){
if(is_closer_to_terminal(current_node, other_node)){
//we are closer to the sink than its parent is, so we
"adopt" him
set_edge_to_parent(other_node, in_edge);
@@ -277,7 +277,7 @@
m_time_map[other_node] = m_time_map[current_node];
}
} else{
- assert(get_tree(other_node)==tColorTraits::white());
+ assert(get_tree(other_node)==tColorTraits::black());
//kewl, found a path from one to the other search tree,
return the connecting edge in src->sink dir
return std::make_pair(in_edge, true);
}
@@ -300,8 +300,8 @@
* verts to the terminals first
*/
void augment(edge_descriptor e){
- assert(get_tree(target(e, m_g)) == tColorTraits::black());
- assert(get_tree(source(e, m_g)) == tColorTraits::white());
+ assert(get_tree(target(e, m_g)) == tColorTraits::white());
+ assert(get_tree(source(e, m_g)) == tColorTraits::black());
assert(m_orphans.empty());
const tEdgeVal bottleneck = find_bottleneck(e);
@@ -380,7 +380,7 @@
current_node = m_child_orphans.front();
m_child_orphans.pop();
}
- if(get_tree(current_node) == tColorTraits::white()){
+ if(get_tree(current_node) == tColorTraits::black()){
//we're in the source-tree
tDistanceVal min_distance =
(std::numeric_limits<tDistanceVal>::max)();
edge_descriptor new_parent_edge;
@@ -390,7 +390,7 @@
assert(target(in_edge, m_g) == current_node); //we should be
the target of this edge
if(m_res_cap_map[in_edge] > 0){
vertex_descriptor other_node = source(in_edge, m_g);
- if(get_tree(other_node) == tColorTraits::white() &&
has_source_connect(other_node)){
+ if(get_tree(other_node) == tColorTraits::black() &&
has_source_connect(other_node)){
if(m_dist_map[other_node] < min_distance){
min_distance = m_dist_map[other_node];
new_parent_edge = in_edge;
@@ -407,7 +407,7 @@
for(tie(ei, e_end) = out_edges(current_node, m_g); ei !=
e_end; ++ei){
edge_descriptor in_edge = m_rev_edge_map[*ei];
vertex_descriptor other_node = source(in_edge, m_g);
- if(get_tree(other_node) == tColorTraits::white() &&
has_parent(other_node)){
+ if(get_tree(other_node) == tColorTraits::black() &&
has_parent(other_node)){
if(m_res_cap_map[in_edge] > 0){
add_active_node(other_node);
}
@@ -424,7 +424,7 @@
} //source-tree-adoption
else{
//now we should be in the sink-tree, check that...
- assert(get_tree(current_node) == tColorTraits::black());
+ assert(get_tree(current_node) == tColorTraits::white());
out_edge_iterator ei, e_end;
edge_descriptor new_parent_edge;
tDistanceVal min_distance =
(std::numeric_limits<tDistanceVal>::max)();
@@ -432,7 +432,7 @@
const edge_descriptor out_edge = *ei;
if(m_res_cap_map[out_edge] > 0){
const vertex_descriptor other_node = target(out_edge, m_g);
- if(get_tree(other_node) == tColorTraits::black() &&
has_sink_connect(other_node))
+ if(get_tree(other_node) == tColorTraits::white() &&
has_sink_connect(other_node))
if(m_dist_map[other_node] < min_distance){
min_distance = m_dist_map[other_node];
new_parent_edge = out_edge;
@@ -448,7 +448,7 @@
for(tie(ei, e_end) = out_edges(current_node, m_g); ei !=
e_end; ++ei){
const edge_descriptor out_edge = *ei;
const vertex_descriptor other_node = target(out_edge, m_g);
- if(get_tree(other_node) == tColorTraits::black() &&
has_parent(other_node)){
+ if(get_tree(other_node) == tColorTraits::white() &&
has_parent(other_node)){
if(m_res_cap_map[out_edge] > 0){
add_active_node(other_node);
}
@@ -478,7 +478,7 @@
m_active_nodes.pop();
m_in_active_list_map[v] = false;
} else{
- assert(get_tree(v) == tColorTraits::white() || get_tree(v) ==
tColorTraits::black());
+ assert(get_tree(v) == tColorTraits::black() || get_tree(v) ==
tColorTraits::white());
return v;
}
}
@@ -516,14 +516,14 @@
}
/**
- * returns the search tree of v; tColorValue::white() for source
tree, black() for sink tree, gray() for no tree
+ * returns the search tree of v; tColorValue::black() for source
tree, white() for sink tree, gray() for no tree
*/
inline tColorValue get_tree(vertex_descriptor v) const {
return m_tree_map[v];
}
/**
- * sets search tree of v; tColorValue::white() for source tree,
black() for sink tree, gray() for no tree
+ * sets search tree of v; tColorValue::black() for source tree,
white() for sink tree, gray() for no tree
*/
inline void set_tree(vertex_descriptor v, tColorValue t){
m_tree_map[v] = t;
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Boost-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/boost-cvs