C++ Boost

Uniform Cost Visitor Concept

This concept defines the visitor interface for uniform_cost_search() and related algorithms. The user can create a class that matches this interface, and then pass objects of the class into uniform_cost_search() to augment the actions taken during the search.

Refinement of

Copy Constructible (copying a visitor should be a lightweight operation).

Notation

V A type that is a model of Uniform Cost Visitor.
vis An object of type V.
G A type that is a model of Graph.
g An object of type G.
e An object of type boost::graph_traits<G>::edge_descriptor.
s,u,v An object of type boost::graph_traits<G>::vertex_descriptor.
DistanceMap A type that is a model of ReadWritePropertyMap.
d An object of type DistanceMap.
WeightMap A type that is a model of ReadablePropertyMap.
w An object of type DistanceMap.

Associated Types

none

Valid Expressions

NameExpressionReturn TypeDescription
Initialize Vertex vis.initialize_vertex(u, g) void This is invoked one each vertex of the graph when it is initialized.
Start Vertex vis.start_vertex(u, g) void This is invoked on the source vertex at the beginning of the algorithm.
Discover Vertex vis.discover_vertex(u, g) void This is invoked when a vertex is encountered for the first time.
Examine Edge vis.examine_edge(e, g) void This is invoked on every out-edge of each vertex after it is discovered.
Edge Relaxed vis.edge_relaxed(e, g) void Upon examination, if the following condition holds then the edge is relaxed (its distance is reduced), and this method is invoked.
tie(u,v) = incident(e, g);
D d_u = get(d, u), d_v = get(d, v);
W w_e = get(w, e);
assert(compare(combine(d_u, w_e), d_v));
Edge Not Relaxed vis.edge_not_relaxed(e, g) void Upon examination, if the edge is not relaxed (see above) then this method is invoked.
Finish Vertex vis.finish_vertex(u, g) void This invoked on a vertex after all of its out edges have been added to the search tree and all of the adjacent vertices have been discovered (but before their out-edges have been examined).

Models



Copyright © 2000 Jeremy Siek, Univ.of Notre Dame (jsiek@lsc.nd.edu)
Lie-Quan Lee, Univ.of Notre Dame (llee1@lsc.nd.edu)
Andrew Lumsdaine, Univ.of Notre Dame (lums@lsc.nd.edu)