Thanks again for a reply. Excuse my confusion and lack of
understanding, but I don't yet understand what you explain below:
"You can store a copy of the color map in the edge filter predicate"
I think I get this, is this what you mean (here are the definitions for
this part):
typedef adjacency_list
<
vecS, vecS, directedS,
property< vertex_color_t, default_color_type,
property< vertex_type_t, VertexType > >
Graph;
typedef property_map::type VertexColorMap;
template
struct valid_edge {
valid_edge() { }
valid_edge(Graph& graph, VertexColorMap color_map)
: m_graph(graph), m_color_map(color_map) { }
template <typename Edge>
bool operator()(const Edge& e) const
{
return ( Color::gray() != get(m_color_map, target(e,
m_graph)) );
}
VertexColorMap m_color_map;
Graph& m_graph;
};
And the code to setup the above:
valid_edge
filter(m_graph, get(vertex_color, m_graph));
filtered_graph >
fg(m_graph, filter);
But the next part of what you write isn't clear:
"pass the same color map to depth_first_search; then you filter out any
edges whose targets are gray"
So which graph gets sorted with depth_first_search? The filter graph I
presume? But I thought the constructor for filter_graph will call the
predicate function for every edge without having to do a
depth_first_search???
Also, if the predicate has only a copy of the vertex color map then how
are the results from depth_first_search going to be reflected in the
predicate object?
Anyways, those last two steps don't make sense yet.
Thanks for a clarification.
Yours,
Elisha
What test is there to determine whether an edge is a back-edge that
can
be used inside a filter predicate of the filter_graph?
You can use the (vertex) color map to determine if an edge is a back
edge. You can store a copy of the color map in the edge filter
predicate, and pass the same color map to depth_first_search; then you
filter out any edges whose targets are gray.
Doug
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users