diff --git a/.travis.yml b/.travis.yml index e1cab861..30ae1cdc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -177,7 +177,7 @@ matrix: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.7 - + # Fails to compile std lib headers (toolset issue): #- os: linux # env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z diff --git a/README.md b/README.md index 7a4dc735..d63f5f40 100644 --- a/README.md +++ b/README.md @@ -18,24 +18,24 @@ There is no mailing-list specific to Boost Graph, although you can use the gener ## Development ## -Clone the whole boost project, which includes the individual Boost projects as submodules ([see boost+git doc](https://github.com/boostorg/boost/wiki/Getting-Started)): +Clone the whole boost project, which includes the individual Boost projects as submodules ([see boost+git doc](https://github.com/boostorg/boost/wiki/Getting-Started)): git clone https://github.com/boostorg/boost cd boost git submodule update --init -The Boost Graph Library is located in `libs/graph/`. +The Boost Graph Library is located in `libs/graph/`. Boost Graph Library is mostly made of headers but also contains some compiled components. Here are the build commands: - - ./bootstrap.sh <- compile b2 + + ./bootstrap.sh <- compile b2 ./b2 headers <- just installs headers ./b2 <- build compiled components **Note:** The Boost Graph Library cannot currently be built outside of Boost itself. ### Running tests ### -First, make sure you are in `libs/graph/test`. +First, make sure you are in `libs/graph/test`. You can either run all the 300+ tests listed in `Jamfile.v2` or run a single test: ../../../b2 <- run all tests diff --git a/doc/AStarHeuristic.html b/doc/AStarHeuristic.html index dbe2132d..b035a282 100644 --- a/doc/AStarHeuristic.html +++ b/doc/AStarHeuristic.html @@ -1,17 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
boost::graph_traits<G>::traversal_categoryThis describes the ways in which the vertices and edges of the graph can be visited. The choices are incidence_graph_tag, -adjacency_graph_tag, bidirectional_graph_tag, -vertex_list_graph_tag, edge_list_graph_tag, and +adjacency_graph_tag, bidirectional_graph_tag, +vertex_list_graph_tag, edge_list_graph_tag, and adjacency_matrix_tag.
+
+
+
+
@@ -61,17 +61,17 @@ in addition to the members that are required of types that model
-
+
+
@@ -119,4 +119,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/MutableGraph.html b/doc/MutableGraph.html
index 5c10b5e7..4d958f2c 100644
--- a/doc/MutableGraph.html
+++ b/doc/MutableGraph.html
@@ -1,17 +1,17 @@
+
+
+
+
+
+
-A planar embedding is a refinement of +A planar embedding is a refinement of LValuePropertyMap that places additional restrictions the value_type used in the property map. @@ -36,24 +36,24 @@ map.
| Embedding | +|
| Embedding | is a type that models the Planar Embedding concept. |
| embedding | is an object of type Embedding. |
| Graph | +|
| Graph | is the type of the underlying graph. |
| e | -is an object of type graph_traits<Graph>::edge_descriptor. + |
| e | +is an object of type graph_traits<Graph>::edge_descriptor. |
| + |
| Const Iterator | boost::property_traits<Embedding>::value_type::const_iterator | -The iterator type used to iterate over the ordering of the edges in the + | The iterator type used to iterate over the ordering of the edges in the planar embedding of a particular vertex |
| Expression | Return Type | Description | -|
|---|---|---|---|
| embedding[v].begin() | boost::property_traits<Embedding>::value_type::const_iterator | -Returns an iterator to the beginning of the range of edges in the + | Returns an iterator to the beginning of the range of edges in the embedding around vertex v |
| embedding[v].end() | boost::property_traits<Embedding>::value_type::const_iterator | -Returns an iterator to the end of the range of edges in the + | Returns an iterator to the end of the range of edges in the embedding around vertex v |
| embedding[v].clear() | void | Clears all edges in the embedding around a vertex v | |
| embedding[v].push_back(e) | void | -Adds an edge e to the end of the sequence of embedded edges + | Adds an edge e to the end of the sequence of embedded edges around the vertex v | vis.begin_face() | void | -This is invoked once for each face, before any vertices or edges on the face -are visited. +This is invoked once for each face, before any vertices or edges on the face +are visited. | @@ -108,7 +108,7 @@ This is invoked when an edge is encountered while traversing a face.vis.end_face() | void | -This is invoked once for each face, after all vertices and edges on the face +This is invoked once for each face, after all vertices and edges on the face are visited. | @@ -129,13 +129,13 @@ This is invoked once per traversal, after the traversal ends.boost::property_map<G, PropertyTag>::typeThe type of the property map for the property specified by PropertyTag. This type must be a model of ReadWritePropertyMap +href="../../property_map/doc/ReadWritePropertyMap.html">ReadWritePropertyMap with a key type the same as the graph's vertex or edge descriptor type. |
@@ -207,4 +207,4 @@ The get() property map function must be constant time.
+
+
@@ -59,14 +59,14 @@ in addition to the members that are required of types that model
-
+
+
@@ -27,7 +27,7 @@ requirements are added.
Refinement of
-VertexListGraph,
+VertexListGraph,
EdgeListGraph
@@ -67,4 +67,4 @@ requirements are added.
-
+
diff --git a/doc/VertexListGraph.html b/doc/VertexListGraph.html
index b108353a..b0cb41b0 100644
--- a/doc/VertexListGraph.html
+++ b/doc/VertexListGraph.html
@@ -1,17 +1,17 @@
+
+
+
+
+
+
+
+
+
+
-adjacency_matrix<Directed, VertexProperty,
+adjacency_matrix<Directed, VertexProperty,
EdgeProperty, GraphProperty,
Allocator>
@@ -61,7 +61,7 @@ href="adjacency_list.html">adjacency_list. These may be
interior
properties. The types of all property values must be
-Copy Constructible, Assignable and Default Constructible.
+Copy Constructible, Assignable and Default Constructible.
In the case of an undirected graph, the
adjacency_matrix. class does not use a full V x V
@@ -83,11 +83,11 @@ matrix representation of an undirected graph.
enum { A, B, C, D, E, F, N };
const char* name = "ABCDEF";
-
+
typedef boost::adjacency_matrix<boost::directedS> Graph;
Graph g(N);
add_edge(B, C, g);
@@ -112,17 +112,17 @@ Creating the graph of Figure 1.
The output is:
- vertex set: A B C D E F + vertex set: A B C D E F - edge set: (B,C) (B,F) (C,A) (C,C) (D,E) (E,D) (F,A) + edge set: (B,C) (B,F) (C,A) (C,C) (D,E) (E,D) (F,A) - out-edges: - A --> - B --> C F - C --> A C - D --> E - E --> D - F --> A + out-edges: + A --> + B --> C F + C --> A C + D --> E + E --> D + F --> ACreating the graph of Figure 2. @@ -152,17 +152,17 @@ Creating the graph of Figure 2. The output is:
- vertex set: A B C D E F + vertex set: A B C D E F - edge set: (C,A) (C,B) (E,D) (F,A) (F,B) + edge set: (C,A) (C,B) (E,D) (F,A) (F,B) - incident edges: - A <--> C F - B <--> C F - C <--> A B - D <--> E - E <--> D - F <--> A B + incident edges: + A <--> C F + B <--> C F + C <--> A B + D <--> E + E <--> D + F <--> A B@@ -205,7 +205,7 @@ The output is:
+
+
+
+
The graph object on which the algorithm will be applied for astar_search_no_init(). The type - IncidenceGraph must be a model of the + IncidenceGraph must be a model of the Incidence Graph concept.@@ -586,4 +586,4 @@ HREF="mailto:beevek@cs.rpi.edu">beevek@cs.rpi.edu) - + diff --git a/doc/astar_visitor.html b/doc/astar_visitor.html index d2229a95..27a164fc 100644 --- a/doc/astar_visitor.html +++ b/doc/astar_visitor.html @@ -1,17 +1,17 @@
+
+
+
+
+
+
// named paramter version template <class EdgeListGraph, class Size, class P, class T, class R> -bool bellman_ford_shortest_paths(const EdgeListGraph& g, Size N, +bool bellman_ford_shortest_paths(const EdgeListGraph& g, Size N, const bgl_named_params<P, T, R>& params = all defaults); template <class VertexAndEdgeListGraph, class P, class T, class R> @@ -36,8 +36,8 @@ template <class EdgeListGraph, class Size, class PredecessorMap, class DistanceMap, class BinaryFunction, class BinaryPredicate, class BellmanFordVisitor> -bool bellman_ford_shortest_paths(EdgeListGraph& g, Size N, - WeightMap weight, PredecessorMap pred, DistanceMap distance, +bool bellman_ford_shortest_paths(EdgeListGraph& g, Size N, + WeightMap weight, PredecessorMap pred, DistanceMap distance, BinaryFunction combine, BinaryPredicate compare, BellmanFordVisitor v)@@ -51,7 +51,7 @@ shortest paths problem for a graph with both positive and negative edge weights. For the definition of the shortest paths problem see Section Shortest-Paths -Algorithms. +Algorithms. If you only need to solve the shortest paths problem for positive edge weights, Dijkstra's algorithm provides a more efficient alternative. If all the edge weights are all equal to one then breadth-first @@ -77,7 +77,7 @@ ultimately be the parent in the shortest paths tree
RELAX(u, v, w, d, p)
- if (w(u,v) + d[u] < d[v])
+ if (w(u,v) + d[u] < d[v])
d[v] := w(u,v) + d[u]
p[v] := u
else
@@ -91,7 +91,7 @@ RELAX(u, v, w, d, p)
relax edge (u,v)
-edge (u,v) is not relaxed
+edge (u,v) is not relaxed
BELLMAN-FORD(G)
// Optional initialization
- for each vertex u in V
+ for each vertex u in V
d[u] := infinity
- p[u] := u
+ p[u] := u
end for
- for i := 1 to |V|-1
- for each edge (u,v) in E
+ for i := 1 to |V|-1
+ for each edge (u,v) in E
RELAX(u, v, w, d, p)
end for
end for
- for each edge (u,v) in E
+ for each edge (u,v) in E
if (w(u,v) + d[u] < d[v])
return (false, , )
- else
+ else
...
end for
return (true, p, d)
@@ -148,9 +148,9 @@ examine edge (u,v)
-edge (u,v) was not minimized
+edge (u,v) was not minimized
-edge (u,v) was minimized
+edge (u,v) was minimized
@@ -175,7 +175,7 @@ algorithm's event points.
A directed or undirected graph whose type must be a model of Edge List Graph. If a root vertex is @@ -211,7 +211,7 @@ IN: weight_map(WeightMap w) Python default: graph.get_edge_double_map("weight")-OUT: predecessor_map(PredecessorMap p_map) +OUT: predecessor_map(PredecessorMap p_map)
The predecessor map records the edges in the minimum spanning tree. Upon completion of the algorithm, the edges (p[u],u) @@ -227,7 +227,7 @@ OUT: predecessor_map(PredecessorMap p_map) Python: Must be a vertex_vertex_map for the graph.-IN/OUT: distance_map(DistanceMap d) +IN/OUT: distance_map(DistanceMap d)
The shortest path weight from the source vertex to each vertex in the graph g is recorded in this property map. The type @@ -307,11 +307,11 @@ The time complexity is O(V E).- vis.examine_edge(e, g) is invoked on every edge in the graph |V| times.
- vis.edge_relaxed(e, g) is invoked when the distance - label for the target vertex is decreased. The edge (u,v) that + label for the target vertex is decreased. The edge (u,v) that participated in the last relaxation for vertex v is an edge in the - shortest paths tree. + shortest paths tree.
- vis.edge_not_relaxed(e, g) is invoked if the distance label - for the target vertex is not decreased. + for the target vertex is not decreased.
- vis.edge_minimized(e, g) is invoked during the second stage of the algorithm, during the test of whether each edge was minimized. If the edge is minimized then this function @@ -330,7 +330,7 @@ href="../example/bellman-example.cpp">examples/bellman-example.cpp.
Notes
-[1] +
[1] Since the visitor parameter is passed by value, if your visitor contains state then any changes to the state during the algorithm will be made to a copy of the visitor object, not the visitor object @@ -346,4 +346,4 @@ href="../example/bellman-example.cpp">examples/bellman-example.cpp. - + diff --git a/doc/bellman_visitor.html b/doc/bellman_visitor.html index 6fea8425..5912b1ff 100644 --- a/doc/bellman_visitor.html +++ b/doc/bellman_visitor.html @@ -1,17 +1,17 @@
Boost Graph Library: bellman_visitor - -+ +
![]()
@@ -108,4 +108,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu) - + diff --git a/doc/betweenness_centrality.html b/doc/betweenness_centrality.html index efa1095e..0932eb21 100644 --- a/doc/betweenness_centrality.html +++ b/doc/betweenness_centrality.html @@ -2,7 +2,7 @@Boost Graph Library: bfs_visitor - -+ +
![]()
@@ -38,10 +38,10 @@ visitor.// Construct graph G and obtain the source vertex s ... - boost::breadth_first_search(G, s, + boost::breadth_first_search(G, s, boost::make_bfs_visitor( std::make_pair(boost::record_distances(d, boost::on_tree_edge()), - std::make_pair(boost::record_predecessors(p.begin(), + std::make_pair(boost::record_predecessors(p.begin(), boost::on_tree_edge()), copy_graph(G_copy, boost::on_examine_edge())))) );@@ -125,4 +125,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu) - + diff --git a/doc/bgl_named_params.html b/doc/bgl_named_params.html index 58d8459b..e0da1169 100644 --- a/doc/bgl_named_params.html +++ b/doc/bgl_named_params.html @@ -1,17 +1,17 @@Boost Graph Library: Named Parameters - -+ +
![]()
@@ -38,7 +38,7 @@ reasons: he or she has to resort to providing all the parameters.- Since the list of parameters is long, it is easy to forget - the ordering. + the ordering.
@@ -54,7 +54,7 @@ indicates which parameter the argument is for. Each of the named parameters is separated by a period, not a comma.
- bool r = boost::bellman_ford_shortest_paths(g, int(N),
+ bool r = boost::bellman_ford_shortest_paths(g, int(N),
boost::weight_map(weight).
distance_map(&distance[0]).
predecessor_map(&parent[0]));
@@ -66,7 +66,7 @@ an call to bellman_ford_shortest_paths that is equivalent to
the one above.
- bool r = boost::bellman_ford_shortest_paths(g, int(N),
+ bool r = boost::bellman_ford_shortest_paths(g, int(N),
boost::predecessor_map(&parent[0]).
distance_map(&distance[0]).
weight_map(weight));
diff --git a/doc/bibliography.html b/doc/bibliography.html
index 4e59de85..b541abf6 100644
--- a/doc/bibliography.html
+++ b/doc/bibliography.html
@@ -1,17 +1,17 @@
Boost Graph Library: Bibliography
-
-
+
+
@@ -264,7 +264,7 @@ SIAM Journal on Computing, 1(2):146-160, 1972
+
+
This maps each vertex to an integer in the range [0, - num_vertices(g)). The type + num_vertices(g)). The type VertexIndexMap must be a model of Readable Property Map. The value type of the map must be an integer type. The vertex descriptor type of the graph needs to be @@ -192,9 +192,9 @@ UTIL/OUT: lowpoint_map(LowPointMap lowpt) Python: Unsupported parameter.-UTIL/OUT: predecessor_map(PredecessorMap p_map) +UTIL/OUT: predecessor_map(PredecessorMap p_map)
- The predecessor map records the depth first search tree. + The predecessor map records the depth first search tree. The PredecessorMap type must be a Read/Write @@ -241,7 +241,7 @@ articulation points of an undirected graph.Notes
-[1] +
[1] Since the visitor parameter is passed by value, if your visitor contains state then any changes to the state during the algorithm will be made to a copy of the visitor object, not the visitor object @@ -260,4 +260,4 @@ HREF="mailto:jsiek@osl.iu.edu">jsiek@osl.iu.edu
)
- + diff --git a/doc/biconnected_components.w b/doc/biconnected_components.w index d2eb21ff..df6c3c2b 100644 --- a/doc/biconnected_components.w +++ b/doc/biconnected_components.w @@ -5,7 +5,7 @@ \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsthm} -\usepackage{latexsym} +\usepackage{latexsym} \usepackage{jweb} \usepackage{times} \usepackage{graphicx} @@ -358,7 +358,7 @@ int main() -% \paragraph{Definition.} A \emph{palm tree} $P$ is a directed graph that +% \paragraph{Definition.} A \emph{palm tree} $P$ is a directed graph that % consists of two disjoint sets of edges, denoted by $v \rightarrow w$ % and $v \backedge w$ respectively, with the following properties: diff --git a/doc/boyer_myrvold.html b/doc/boyer_myrvold.html index a2792a30..df4574f7 100644 --- a/doc/boyer_myrvold.html +++ b/doc/boyer_myrvold.html @@ -1,39 +1,39 @@Boost Graph Library: Boyer-Myrvold Planarity Testing/Embedding - -+ +
![]()
Boyer-Myrvold Planarity Testing/Embedding
-A graph is planar if it can -be drawn in two-dimensional space without any of its edges crossing. Such a -drawing of a planar graph is called a -plane drawing. Each +A graph is planar if it can +be drawn in two-dimensional space without any of its edges crossing. Such a +drawing of a planar graph is called a +plane drawing. Each plane drawing belongs to an equivalence class called a planar embedding -[1] that is defined by the clockwise ordering of adjacent -edges around each vertex in the graph. A planar embedding is a convenient -intermediate representation of an actual drawing of a planar graph, and many -planar graph drawing algorithms are formulated as functions mapping a planar +[1] that is defined by the clockwise ordering of adjacent +edges around each vertex in the graph. A planar embedding is a convenient +intermediate representation of an actual drawing of a planar graph, and many +planar graph drawing algorithms are formulated as functions mapping a planar embedding to a plane drawing.
-
A planar graph (top left), along with a planar -embedding of that graph (bottom left) can be used to create a plane drawing -(right) by embedding edges around each vertex in the order in which they +
A planar graph (top left), along with a planar +embedding of that graph (bottom left) can be used to create a plane drawing +(right) by embedding edges around each vertex in the order in which they appear in the planar embedding.
@@ -44,16 +44,16 @@ appear in the planar embedding.
-The function boyer_myrvold_planarity_test implements the planarity -testing/embedding algorithm of Boyer and Myrvold +The function boyer_myrvold_planarity_test implements the planarity +testing/embedding algorithm of Boyer and Myrvold [70]. -boyer_myrvold_planarity_test returns true if the input graph +boyer_myrvold_planarity_test returns true if the input graph is planar and false otherwise. As a side-effect of this test, a planar -embedding can be constructed if the graph is planar or a minimal set of edges -that form a Kuratowski +embedding can be constructed if the graph is planar or a minimal set of edges +that form a Kuratowski subgraph can be found if the graph is not planar. -boyer_myrvold_planarity_test uses named parameter arguments (courtesy -of the Boost.Parameter +boyer_myrvold_planarity_test uses named parameter arguments (courtesy +of the Boost.Parameter library) to specify what the function actually does. Some examples are:
@@ -65,8 +65,8 @@ bool is_planar = boyer_myrvold_planarity_test(g);
- Computing a planar embedding for a graph if it is planar, otherwise finding a set of edges that forms an obstructing Kuratowski subgraph:
-if (boyer_myrvold_planarity_test(boyer_myrvold_params::graph = g, - boyer_myrvold_params::embedding = embedding_pmap, +if (boyer_myrvold_planarity_test(boyer_myrvold_params::graph = g, + boyer_myrvold_params::embedding = embedding_pmap, boyer_myrvold_params::kuratowski_subgraph = out_itr ) ) @@ -81,81 +81,81 @@ else-The parameters passed to boyer_myrvold_planarity_test in the examples -above do more than just carry the data structures used for input and output - -the algorithm is optimized at compile time based on which parameters are -present. A complete list of parameters accepted and their interactions are -described below. +The parameters passed to boyer_myrvold_planarity_test in the examples +above do more than just carry the data structures used for input and output - +the algorithm is optimized at compile time based on which parameters are +present. A complete list of parameters accepted and their interactions are +described below.
boyer_myrvold_planarity_test accepts as input any undirected graph, even those with self-loops and multiple edges. -However, many planar graph drawing algorithms make additional restrictions -on the structure of the input graph - for example, requiring that the input +However, many planar graph drawing algorithms make additional restrictions +on the structure of the input graph - for example, requiring that the input graph is connected, biconnected, or even maximal planar (triangulated.) -Fortunately, any planar graph on n vertices that lacks one of these -properties can be augmented with additional edges so that it satisfies that -property in O(n) time - the functions +Fortunately, any planar graph on n vertices that lacks one of these +properties can be augmented with additional edges so that it satisfies that +property in O(n) time - the functions make_connected, -make_biconnected_planar, -and make_maximal_planar -exist for this purpose. If the graph drawing algorithm you're using requires, -say, a biconnected graph, then you must make your input graph biconnected +make_biconnected_planar, +and make_maximal_planar +exist for this purpose. If the graph drawing algorithm you're using requires, +say, a biconnected graph, then you must make your input graph biconnected before passing it into boyer_myrvold_planarity_test so that the -computed planar embedding includes these additional edges. This may require -more than one call to boyer_myrvold_planarity_test depending on the -structure of the graph you begin with, since both -make_biconnected_planar and make_maximal_planar require a +computed planar embedding includes these additional edges. This may require +more than one call to boyer_myrvold_planarity_test depending on the +structure of the graph you begin with, since both +make_biconnected_planar and make_maximal_planar require a planar embedding of the existing graph as an input parameter.
The named parameters accepted by boyer_myrvold_planarity_test are:
-
-These named parameters all belong to the namespace -boyer_myrvold_params. See below for more information on the concepts -required for these arguments. +These named parameters all belong to the namespace +boyer_myrvold_params. See below for more information on the concepts +required for these arguments.- graph : The input graph - this is the only required +
- graph : The input graph - this is the only required parameter. -
- vertex_index_map : A mapping from vertices of the input -graph to indexes in the range [0..num_vertices(g)). If this parameter +
- vertex_index_map : A mapping from vertices of the input +graph to indexes in the range [0..num_vertices(g)). If this parameter is not provided, the vertex index map is assumed to be available as an interior property of the graph, accessible by calling get(vertex_index, g).
- edge_index_map: A mapping from the edges of the input graph -to indexes in the range [0..num_edges(g)). This parameter is only -needed if the kuratowski_subgraph argument is provided. If the +to indexes in the range [0..num_edges(g)). This parameter is only +needed if the kuratowski_subgraph argument is provided. If the kuratowski_subgraph argument is provided and this parameter is not -provided, the EdgeIndexMap is assumed to be available as an interior property +provided, the EdgeIndexMap is assumed to be available as an interior property accessible by calling get(edge_index, g). -
- embedding : If the graph is planar, this will be populated -with a mapping from vertices to the clockwise order of neighbors in the planar +
- embedding : If the graph is planar, this will be populated +with a mapping from vertices to the clockwise order of neighbors in the planar embedding.
- kuratowski_subgraph : If the graph is not planar, a minimal -set of edges that form the obstructing Kuratowski subgraph will be written to +set of edges that form the obstructing Kuratowski subgraph will be written to this iterator.
Verifying the output
Whether or not the input graph is planar, boyer_myrvold_planarity_test -can produce a certificate that can be automatically checked to verify that the -function is working properly. +can produce a certificate that can be automatically checked to verify that the +function is working properly.If the graph is planar, a planar embedding can be produced. The -planar embedding can be verified by passing it to a plane drawing routine +planar embedding can be verified by passing it to a plane drawing routine (such as -chrobak_payne_straight_line_drawing) and using the function -is_straight_line_drawing +chrobak_payne_straight_line_drawing
-If the graph is not planar, a set of edges that forms a Kuratowski subgraph in -the original graph can be produced. This set of edges can be passed to the +If the graph is not planar, a set of edges that forms a Kuratowski subgraph in +the original graph can be produced. This set of edges can be passed to the function is_kuratowski_subgraph - to verify that they can be contracted into a K5 or -K3,3. boyer_myrvold_planarity_test chooses the set -of edges forming the Kuratowski subgraph in such a way that the contraction to -a K5 or K3,3 can be done by a simple -deterministic process which is described in the documentation to + to verify that they can be contracted into a K5 or +K3,3. boyer_myrvold_planarity_test chooses the set +of edges forming the Kuratowski subgraph in such a way that the contraction to +a K5 or K3,3 can be done by a simple +deterministic process which is described in the documentation to is_kuratowski_subgraph.
-Any undirected graph. The graph type must be a model of -VertexAndEdgeListGraph and +Any undirected graph. The graph type must be a model of +VertexAndEdgeListGraph and IncidenceGraph.@@ -184,7 +184,7 @@ Must model the PlanarEmbedding concept. IN OutputIterator kuratowski_subgraph
-An OutputIterator which accepts values of the type +An OutputIterator which accepts values of the type graph_traits<Graph>::edge_descriptor@@ -192,7 +192,7 @@ IN VertexIndexMap vm
A Readable Property Map - that maps vertices from g to distinct integers in the range + that maps vertices from g to distinct integers in the range [0, num_vertices(g) )@@ -201,21 +201,21 @@ IN EdgeIndexMap em
Default: get(vertex_index,g)
A Readable Property Map - that maps edges from g to distinct integers in the range + that maps edges from g to distinct integers in the range [0, num_edges(g) )
-Default: get(edge_index,g), but this parameter is only used if +Default: get(edge_index,g), but this parameter is only used if the kuratowski_subgraph_iterator is provided.
[1] A planar embedding is also called a combinatorial
+ [1] A planar embedding is also called a combinatorial
embedding.
- [2] The algorithm can still be made to run in time O(n)
-for this case, if needed. Euler's
+ [2] The algorithm can still be made to run in time O(n)
+for this case, if needed. Euler's
formula implies that a planar graph with n vertices can have no more
-than 3n - 6 edges, which means that any non-planar graph on n
-vertices has a subgraph of only 3n - 5 edges that contains a Kuratowski
-subgraph. So, if you need to find a Kuratowski subgraph of a graph with more
-than 3n - 5 edges in time O(n), you can create a subgraph of the
-original graph consisting of any arbitrary 3n - 5 edges and pass that
+than 3n - 6 edges, which means that any non-planar graph on n
+vertices has a subgraph of only 3n - 5 edges that contains a Kuratowski
+subgraph. So, if you need to find a Kuratowski subgraph of a graph with more
+than 3n - 5 edges in time O(n), you can create a subgraph of the
+original graph consisting of any arbitrary 3n - 5 edges and pass that
graph to boyer_myrvold_planarity_test.
@@ -256,4 +256,4 @@ graph to boyer_myrvold_planarity_test.
Copyright © 2007 Aaron Windsor (
aaron.windsor@gmail.com)
-
+
diff --git a/doc/breadth_first_search.html b/doc/breadth_first_search.html
index 000c13a5..0608fc9b 100644
--- a/doc/breadth_first_search.html
+++ b/doc/breadth_first_search.html
@@ -1,17 +1,17 @@
-The time complexity is O(E + V).
+The time complexity is O(E + V).
@@ -260,13 +260,13 @@ The time complexity is O(E + V).
[1]
+ [1]
Since the visitor parameter is passed by value, if your visitor
contains state then any changes to the state during the algorithm
will be made to a copy of the visitor object, not the visitor object
@@ -335,4 +335,4 @@ to listS.
-The time complexity is O(E).
+The time complexity is O(E).
@@ -129,7 +129,7 @@ The time complexity is O(E).
vertex as it is removed from the queue.
[1]
+ [1]
Since the visitor parameter is passed by value, if your visitor
contains state then any changes to the state during the algorithm
will be made to a copy of the visitor object, not the visitor object
@@ -183,4 +183,4 @@ The time complexity is O(E).
-
+
diff --git a/doc/challenge.html b/doc/challenge.html
index 89a34dec..ba43bf65 100644
--- a/doc/challenge.html
+++ b/doc/challenge.html
@@ -1,17 +1,17 @@
boost::circle_graph_layout — Layout the graph with the vertices at the points of a regular n-polygon. The distance from the center of the polygon to each point is determined by the radius parameter. The position parameter must be an Lvalue Property Map whose value type is a class type containing x and y members that will be set to the x and y coordinates.
+template<typename VertexListGraph, typename PositionMap, typename Radius>
+ void circle_graph_layout(const VertexListGraph & g, PositionMap position,
+ Radius radius); The distance from the center of the polygon to each point is determined by the radius parameter. The position parameter must be an Lvalue Property Map whose value type is a class type containing x and y members that will be set to the x and y coordinates.
Version 1 of the algorithm lets the user choose the ``starting
vertex'', version 2 finds a good starting vertex using the
-pseudo-peripheral pair heuristic (among each component), while version 3
-contains the starting nodes for each vertex in the deque. The choice of the
-``starting vertex'' can have a significant effect on the quality of the
-ordering. For versions 2 and 3, find_starting_vertex will be called
+pseudo-peripheral pair heuristic (among each component), while version 3
+contains the starting nodes for each vertex in the deque. The choice of the
+``starting vertex'' can have a significant effect on the quality of the
+ordering. For versions 2 and 3, find_starting_vertex will be called
for each component in the graph, increasing run time significantly.
The cycle_canceling() function calculates the minimum cost flow of a network with given flow. See Section Network
-Flow Algorithms for a description of maximum flow.
+Flow Algorithms for a description of maximum flow.
For given flow values f(u,v) function minimizes flow cost in such a way, that for each v in V the
sum u in V f(v,u) is preserved. Particularly if the input flow was the maximum flow, the function produces min cost max flow.
-
+
The function calculates the flow values f(u,v) for all (u,v) in
E, which are returned in the form of the residual capacity
-r(u,v) = c(u,v) - f(u,v).
+r(u,v) = c(u,v) - f(u,v).
There are several special requirements on the input graph and property
@@ -51,12 +51,12 @@ include the reverse edge for every edge in E. That is, the
input graph should be Gin = (V,{E U
ET}). The ReverseEdgeMap argument rev
must map each edge in the original graph to its reverse edge, that is
-(u,v) -> (v,u) for all (u,v) in E.
+(u,v) -> (v,u) for all (u,v) in E.
The WeightMap has to map each edge from ET to -weight of its reversed edge.
-Note that edges from E can have negative weights.
+Note that edges from E can have negative weights.
-If weights in the graph are nonnegative, the
-successive_shortest_path_nonnegative_weights()
+If weights in the graph are nonnegative, the
+successive_shortest_path_nonnegative_weights()
might be better choice for min cost max flow.
@@ -70,7 +70,7 @@ If there is no negative cycle in the network, the cost is optimized.
Note that, although we mention capacity in the problem description, the actual algorithm doesn't have to now it.
-
+
In order to find the cost of the result flow use:
find_flow_cost().
@@ -92,10 +92,10 @@ IN: Graph& g
(u,v) in the graph, the reverse edge (v,u) must also
be in the graph.
-
+
This algorithm [8] solves
-the single-source shortest-paths problem on a weighted, directed
+the single-source shortest-paths problem on a weighted, directed
acyclic graph (DAG). This algorithm is more efficient for DAG's
than either the Dijkstra or Bellman-Ford algorithm.
Use breadth-first search instead of this algorithm
@@ -74,7 +74,7 @@ algorithm's event points. [1]
+ [1]
Since the visitor parameter is passed by value, if your visitor
contains state then any changes to the state during the algorithm
will be made to a copy of the visitor object, not the visitor object
@@ -322,5 +322,5 @@ algorithm.
-
+
diff --git a/doc/depth_first_search.html b/doc/depth_first_search.html
index 547b94e3..a376de3f 100644
--- a/doc/depth_first_search.html
+++ b/doc/depth_first_search.html
@@ -1,17 +1,17 @@
[1]
+ [1]
Since the visitor parameter is passed by value, if your visitor
contains state then any changes to the state during the algorithm
will be made to a copy of the visitor object, not the visitor object
@@ -317,4 +317,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu
The DFSVisitor supplied by the user determines what
@@ -124,7 +124,7 @@ Time complexity is O(E).
[1]
+ [1]
Since the visitor parameter is passed by value, if your visitor
contains state then any changes to the state during the algorithm
will be made to a copy of the visitor object, not the visitor object
@@ -141,4 +141,4 @@ Time complexity is O(E).
-
+
diff --git a/doc/dfs_visitor.html b/doc/dfs_visitor.html
index c9ee5114..840acd33 100644
--- a/doc/dfs_visitor.html
+++ b/doc/dfs_visitor.html
@@ -1,17 +1,17 @@
[2]
+ [2]
Since the visitor parameter is passed by value, if your visitor
contains state then any changes to the state during the algorithm
will be made to a copy of the visitor object, not the visitor object
@@ -461,4 +461,4 @@ distance less than infinity.
-
+
diff --git a/doc/dijkstra_shortest_paths_no_color_map.html b/doc/dijkstra_shortest_paths_no_color_map.html
index 05c3aec5..07432082 100644
--- a/doc/dijkstra_shortest_paths_no_color_map.html
+++ b/doc/dijkstra_shortest_paths_no_color_map.html
@@ -1,17 +1,17 @@
[2]
+ [2]
Since the visitor parameter is passed by value, if your visitor
contains state then any changes to the state during the algorithm
will be made to a copy of the visitor object, not the visitor object
passed in. Therefore you may want the visitor to hold this state by
pointer or reference.
-
- [3]
+
+ [3]
The algorithm will not work correctly if any of the edge weights are equal to infinity since the infinite distance value is used to determine if a vertex has been discovered.
-
- [4]
+
+ [4]
Calls to the visitor events occur in the same order as dijkstra_shortest_paths (i.e. discover_vertex(u) will always be called after examine_vertex(u) for an undiscovered vertex u). However, the vertices of the graph given to dijkstra_shortest_paths_no_color_map will not necessarily be visited in the same order as dijkstra_shortest_paths.
Revised
+ Revised
01
December, 2006 Revised
+ Revised
01
December, 2006
There are several special requirements on the input graph and property
@@ -112,12 +112,12 @@ IN: vertex_descriptor src
+
+
Our religious reason for choosing free functions is to send the message
that BGL is a generic library, and not a traditional object-oriented
library. OO was hip in the 80s and 90s, but its time we moved beyond!
@@ -124,13 +124,13 @@ library. OO was hip in the 80s and 90s, but its time we moved beyond!
not being found, such as:
@@ -274,7 +274,7 @@ in the graph.
and
The find_flow_cost() function calculates the minimum cost maximum flow value of a network and given flow. See Section Network
-Flow Algorithms for a description of maximum flow.
+Flow Algorithms for a description of maximum flow.
The function calculates the cost from the flow values f(u,v) for (u,v) in
E, which are passed in the form of the residual capacity
-r(u,v) = c(u,v) - f(u,v).
+r(u,v) = c(u,v) - f(u,v).
-In order to compute the min cost max flow use :
+In order to compute the min cost max flow use :
successive_shortest_path_nonnegative_weights() or
cycle_canceling().
@@ -73,7 +73,7 @@ IN: capacity_map(CapacityEdgeMap cap)
key type of the map must be the graph's edge descriptor type. This algorithm should be used to compute shortest paths between
every pair of vertices for dense graphs. For sparse graphs, use
This is Prim's algorithm [preflow introduced by
A grid_graph represents a multi-dimensional,
rectangular grid of vertices with user-defined dimension lengths
@@ -130,7 +130,7 @@
-
+
-is_kuratowski_subgraph(g, begin, end) returns true exactly
-when the sequence of edges defined by the range [begin, end) forms a
- Kuratowski subgraph in
-the graph g. If you need to verify that an arbitrary graph has a
-K5 or K3,3 minor, you should use the
+is_kuratowski_subgraph(g, begin, end) returns true exactly
+when the sequence of edges defined by the range [begin, end) forms a
+ Kuratowski subgraph in
+the graph g. If you need to verify that an arbitrary graph has a
+K5 or K3,3 minor, you should use the
function boyer_myrvold_planarity_test
to isolate such a minor instead of this function. is_kuratowski_subgraph
- exists to aid in testing and verification of the function
-boyer_myrvold_planarity_test, and for that reason, it expects its
-input to be a restricted set of edges forming a Kuratowski subgraph, as
+
-is_kuratowski_subgraph creates a temporary graph out of the sequence
-of edges given and repeatedly contracts edges until it ends up with a graph
-with either all edges of degree 3 or all edges of degree 4. The final
+is_kuratowski_subgraph creates a temporary graph out of the sequence
+of edges given and repeatedly contracts edges until it ends up with a graph
+with either all edges of degree 3 or all edges of degree 4. The final
contracted graph is then checked against K5 or
-K3,3 using the Boost Graph Library's
+K3,3 using the Boost Graph Library's
isomorphism
function. The contraction process starts by choosing edges adjacent to a vertex
-of degree 1 and contracting those. When none are left, it moves on to edges
+of degree 1 and contracting those. When none are left, it moves on to edges
adjacent to a vertex of degree 2. If only degree 3 vertices are left after this
-stage, the graph is checked against K3,3. Otherwise, if
-there's at least one degree 4 vertex, edges adjacent to degree 3 vertices are
+stage, the graph is checked against K3,3. Otherwise, if
+there's at least one degree 4 vertex, edges adjacent to degree 3 vertices are
contracted as neeeded and the final graph is compared to K5.
-In order for this process to be deterministic, we make the following two
+In order for this process to be deterministic, we make the following two
restrictions on the input graph given to is_kuratowski_subgraph:
-If drawing is a property map modeling the PositionMap
-concept, is_straight_line_drawing returns true exactly when no two of
+If drawing is a property map modeling the PositionMap
+concept, is_straight_line_drawing returns true exactly when no two of
the line segments induced by edges in the graph under drawing
intersect. This function works correctly in the presence of self-loops and
-parallel edges, and can be used to verify the output of the function
+parallel edges, and can be used to verify the output of the function
chrobak_payne_straight_line_embedding.
@@ -53,15 +53,15 @@ An undirected graph. The graph type must be a model of Edge List Graph
-IN: PositionMap
+IN: PositionMap
& params)
{
@@ -977,9 +977,9 @@ bool isomorphism_impl(const Graph1& G1, const Graph2& G2,
choose_param(get_param(params, vertex_invariant2_t()), invariant2),
choose_param(get_param(params, vertex_max_invariant_t()), invariant2.max()),
index_map1, index_map2
- );
-}
-
+ );
+}
+
} // namespace detail
@@ -993,7 +993,7 @@ bool isomorphism(const Graph1& g1,
typename std::vector & params)
{
std::vector & params)
{
@@ -1073,22 +1073,22 @@ namespace boost {
// Compute the in-degrees
std::vector
The final step is to add an edge connecting the two actors, and record
-the name of the connecting movie.
+the name of the connecting movie.
Version 1 of the algorithm lets the user choose the ``starting
vertex'', version 2 finds a good starting vertex using the
-pseudo-peripheral pair heuristic (among each component), while version 3
+pseudo-peripheral pair heuristic (among each component), while version 3
contains the starting nodes for each vertex in the deque. The choice of the ``starting
vertex'' can have a significant effect on the quality of the ordering.
boost::layout_tolerance — Determines when to terminate layout of a particular graph based on a given relative tolerance. boost::layout_tolerance — Determines when to terminate layout of a particular graph based on a given relative tolerance.
Though the main goal of BGL is to aid the development of new
applications and graph algorithms, there are quite a few existing codes
-that could benefit from using BGL algorithms. One way to use the BGL
+that could benefit from using BGL algorithms. One way to use the BGL
algorithms with existing graph data structures is to copy data from
the older graph format into a BGL graph which could then be used in
the BGL algorithms. The problem with this approach is that it can be
@@ -179,7 +179,7 @@ category and value type.
struct graph_traits< GRAPH<vtype,etype> > {
// ...
typedef iterator_adaptor<edge,
- out_edge_iterator_policies,
+ out_edge_iterator_policies,
iterator<std::bidirectional_iterator_tag,edge>
> out_edge_iterator;
// ...
@@ -205,9 +205,9 @@ namespace boost {
template <class vtype, class etype>
inline std::pair<
typename graph_traits< GRAPH<vtype,etype> >::out_edge_iterator,
- typename graph_traits< GRAPH<vtype,etype> >::out_edge_iterator >
+ typename graph_traits< GRAPH<vtype,etype> >::out_edge_iterator >
out_edges(
- typename graph_traits< GRAPH<vtype,etype> >::vertex_descriptor u,
+ typename graph_traits< GRAPH<vtype,etype> >::vertex_descriptor u,
const GRAPH<vtype,etype>& g)
{
typedef typename graph_traits< GRAPH<vtype,etype> >
@@ -260,4 +260,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/lengauer_tarjan_dominator.htm b/doc/lengauer_tarjan_dominator.htm
index 23a00963..2f1e61b5 100644
--- a/doc/lengauer_tarjan_dominator.htm
+++ b/doc/lengauer_tarjan_dominator.htm
@@ -1,17 +1,17 @@
-A graph G is biconnected if, for every pair of vertices u,v in
-G, there is a cycle containing both u and v.
-Alternatively, a graph is biconnected if it is connected and cannot be made
-disconnected by removing any single vertex. make_biconnected_planar
-takes a connected
+A graph G is biconnected if, for every pair of vertices u,v in
+G, there is a cycle containing both u and v.
+Alternatively, a graph is biconnected if it is connected and cannot be made
+disconnected by removing any single vertex. make_biconnected_planar
+takes a connected
planar graph g as input and adds zero
or more edges to make g biconnected while preserving planarity.
-The default behavior of make_biconnected_planar is to modify the
-graph g by calling add_edge(u,v,g) for every pair of
-vertices (u,v) where an edge needs to be added to make g
-biconnected. This behavior can be overriden by providing a vistor as the
-AddEdgeVisitor parameter. The only requirement for an
-AddEdgeVisitor is that it define a member function with the
+The default behavior of make_biconnected_planar is to modify the
+graph g by calling add_edge(u,v,g) for every pair of
+vertices (u,v) where an edge needs to be added to make g
+biconnected. This behavior can be overriden by providing a vistor as the
+AddEdgeVisitor parameter. The only requirement for an
+AddEdgeVisitor is that it define a member function with the
following signature:
-A undirected graph G is connected if, for every pair of vertices
-u,v in G, there is a path from u to v.
-make_connected adds the minimum number of edges needed to make the
-input graph connected. The algorithm first identifies all of the
+A undirected graph G is connected if, for every pair of vertices
+u,v in G, there is a path from u to v.
+make_connected adds the minimum number of edges needed to make the
+input graph connected. The algorithm first identifies all of the
connected components in the graph,
then adds edges to connect those components together in a path. For example, if
-a graph contains three connected components A, B, and C,
-make_connected will add two edges. The two edges added might consist
-of one connecting a vertex in A with a vertex in B and one
+a graph contains three connected components A, B, and C,
+make_connected will add two edges. The two edges added might consist
+of one connecting a vertex in A with a vertex in B and one
connecting a vertex in B with a vertex in C.
-The default behavior of make_connected is to modify the graph
-g by calling add_edge(u,v,g) for every pair of vertices
-(u,v) where an edge needs to be added to connect g. This
-behavior can be overriden by providing a vistor as the AddEdgeVisitor
-parameter. The only requirement for an AddEdgeVisitor is that it
+The default behavior of make_connected is to modify the graph
+g by calling add_edge(u,v,g) for every pair of vertices
+(u,v) where an edge needs to be added to connect g. This
+behavior can be overriden by providing a vistor as the AddEdgeVisitor
+parameter. The only requirement for an AddEdgeVisitor is that it
define a member function with the following signature:
-A planar graph G is
-maximal planar if no additional edges (except parallel edges and
-self-loops) can be added to G without creating a non-planar graph. By
+A planar graph G is
+maximal planar if no additional edges (except parallel edges and
+self-loops) can be added to G without creating a non-planar graph. By
Euler's formula, a maximal
planar graph on n vertices (n > 2) always has 3n - 6 edges
- and
-2n - 4 faces. The input graph to make_maximal_planar must be a
-biconnected planar graph with at
+ and
+2n - 4 faces. The input graph to make_maximal_planar must be a
+biconnected planar graph with at
least 3 vertices.
-The default behavior of make_maximal_planar is to modify the graph
-g by calling add_edge(u,v,g) for every pair of vertices
+The default behavior of make_maximal_planar is to modify the graph
+g by calling add_edge(u,v,g) for every pair of vertices
(u,v) where an edge needs to be added to make g maximal planar.
-This behavior can be overriden by providing a vistor as the
-AddEdgeVisitor parameter. The only requirement for an
-AddEdgeVisitor is that it define a member function with the following
+This behavior can be overriden by providing a vistor as the
+AddEdgeVisitor parameter. The only requirement for an
+AddEdgeVisitor is that it define a member function with the following
signature:
[1]
+ [1]
Since the visitor parameter is passed by value, if your visitor
contains state then any changes to the state during the algorithm
will be made to a copy of the visitor object, not the visitor object
@@ -281,4 +281,4 @@ Fernando Vilas
-Both edmonds_maximum_cardinality_matching and
+Both edmonds_maximum_cardinality_matching and
checked_edmonds_maximum_cardinality_matching find the
maximum cardinality matching in any undirected graph. The matching is returned in a
-MateMap, which is a
-ReadWritePropertyMap
+MateMap, which is a
+ReadWritePropertyMap
that maps vertices to vertices. In the mapping returned, each vertex is either mapped
to the vertex it's matched to, or to graph_traits<Graph>::null_vertex() if it
doesn't participate in the matching. If no VertexIndexMap is provided, both functions
assume that the VertexIndexMap is provided as an internal graph property accessible
-by calling get(vertex_index,g). The only difference between
-edmonds_maximum_cardinality_matching and
-checked_edmonds_maximum_cardinality_matching is that as a final step,
-the latter algorithm runs a simple verification on the matching computed and
+by calling get(vertex_index,g). The only difference between
+edmonds_maximum_cardinality_matching and
+checked_edmonds_maximum_cardinality_matching is that as a final step,
+the latter algorithm runs a simple verification on the matching computed and
returns true if and only if the matching is indeed
a maximum cardinality matching.
Given a matching M, any vertex that isn't covered by an edge in M is called free. Any
-simple path containing exactly 2n + 1 edges that starts and ends at free vertices and contains
-n edges from M is called an alternating path. Given an alternating path p, all matching and
+simple path containing exactly 2n + 1 edges that starts and ends at free vertices and contains
+n edges from M is called an alternating path. Given an alternating path p, all matching and
non-matching edges on p can be swapped, resulting in a new matching that's larger than the
-original matching by exactly one edge. This method of incrementally increasing the size of matching, along
+original matching by exactly one edge. This method of incrementally increasing the size of matching, along
with the following fact, forms the basis of Edmonds' matching algorithm:
-When quoting time bounds for algorithms, we assume that VertexIndexMap is a property map
-that allows for constant-time mapping between vertices and indices (which is easily achieved if,
-for instance, the vertices are stored in contiguous memory.) We use n and m to represent the size
+When quoting time bounds for algorithms, we assume that VertexIndexMap is a property map
+that allows for constant-time mapping between vertices and indices (which is easily achieved if,
+for instance, the vertices are stored in contiguous memory.) We use n and m to represent the size
of the vertex and edge sets, respectively, of the input graph.
These aren't necessarily the best choices for any situation - for example, it's been claimed in the literature
-that for sparse graphs, Edmonds' algorithm converges to the maximum cardinality matching more quickly if it
+that for sparse graphs, Edmonds' algorithm converges to the maximum cardinality matching more quickly if it
isn't supplied with an intitial matching. Such an algorithm can be easily assembled by calling matching with
-Suppose instead that you want a relatively large matching quickly, but are not exactly interested in a maximum matching.
-Both extra_greedy_matching and greedy_matching find maximal matchings, which means they're guaranteed to be at
+Suppose instead that you want a relatively large matching quickly, but are not exactly interested in a maximum matching.
+Both extra_greedy_matching and greedy_matching find maximal matchings, which means they're guaranteed to be at
least half the size of a maximum cardinality matching, so you could call matching with
-Let m and n be the number of edges and vertices in the input graph, respectively. Assuming the
-VertexIndexMap supplied allows constant-time lookups, the time complexity for both
-edmonds_matching and checked_edmonds_matching is O(mn alpha(m,n)).
+Let m and n be the number of edges and vertices in the input graph, respectively. Assuming the
+VertexIndexMap supplied allows constant-time lookups, the time complexity for both
+edmonds_matching and checked_edmonds_matching is O(mn alpha(m,n)).
alpha(m,n) is a slow growing function that is at most 4 for any feasible input.
diff --git a/doc/maximum_weighted_matching.html b/doc/maximum_weighted_matching.html
index e617faa9..ab40f1f4 100644
--- a/doc/maximum_weighted_matching.html
+++ b/doc/maximum_weighted_matching.html
@@ -1,10 +1,10 @@
Before you continue, it is recommended to read
-about maximal cardinality matching first.
+about maximal cardinality matching first.
A maximum weighted matching of an edge-weighted graph is a matching
-for which the sum of the weights of the edges is maximum.
-Two different matchings (edges in the matching are colored blue) in the same graph are illustrated below.
+for which the sum of the weights of the edges is maximum.
+Two different matchings (edges in the matching are colored blue) in the same graph are illustrated below.
The matching on the left is a maximum cardinality matching of size 8 and a maximal
weighted matching of weight sum 30, meaning that is has maximum size over all matchings in the graph
and its weight sum can't be increased by adding edges.
@@ -49,26 +49,26 @@ weight sum over all matchings in the graph.
-Both maximum_weighted_matching and
+Both maximum_weighted_matching and
brute_force_maximum_weighted_matching find a
maximum weighted matching in any undirected graph. The matching is returned in a
-MateMap, which is a
-ReadWritePropertyMap
+MateMap, which is a
+ReadWritePropertyMap
that maps vertices to vertices. In the mapping returned, each vertex is either mapped
to the vertex it's matched to, or to graph_traits<Graph>::null_vertex() if it
doesn't participate in the matching. If no VertexIndexMap is provided, both functions
assume that the VertexIndexMap is provided as an internal graph property accessible
-by calling get(vertex_index, g).
+by calling get(vertex_index, g).
The maximum weighted matching problem was solved by Edmonds in [74].
The implementation of maximum_weighted_matching followed Chapter 6, Section 10 of [20] and
-was written in a consistent style with edmonds_maximum_cardinality_matching because of their algorithmic similarity.
+was written in a consistent style with edmonds_maximum_cardinality_matching because of their algorithmic similarity.
In addition, a brute-force verifier brute_force_maximum_weighted_matching simply searches all possible matchings in any graph and selects one with the maximum weight sum.
-Let m and n be the number of edges and vertices in the input graph, respectively. Assuming the
-VertexIndexMap supplied allows constant-time lookup, the time complexity for
+Let m and n be the number of edges and vertices in the input graph, respectively. Assuming the
+VertexIndexMap supplied allows constant-time lookup, the time complexity for
maximum_weighted_matching is O(n3). For brute_force_maximum_weighted_matching, the time complexity is exponential of m.
Note that the best known time complexity for maximum weighted matching in general graph
is O(nm+n2log(n)) by [76], but relies on an
diff --git a/doc/mcgregor_common_subgraphs.html b/doc/mcgregor_common_subgraphs.html
index e545fca2..a3822854 100644
--- a/doc/mcgregor_common_subgraphs.html
+++ b/doc/mcgregor_common_subgraphs.html
@@ -1,7 +1,7 @@
The minimum degree ordering algorithm [
inverse_perm[new_index[u]] == old_index[u]
- and the permutation from the old index to the new index.
+ and the permutation from the old index to the new index.
-A planar canonical ordering is an ordering v1,
-v2, ..., vn of the vertices of a
-maximal
-planar graph having the property that, for
-each k, 3 <= k < n, the graph induced by
+A planar canonical ordering is an ordering v1,
+v2, ..., vn of the vertices of a
+maximal
+planar graph having the property that, for
+each k, 3 <= k < n, the graph induced by
v1, v2, ..., vk
-The planar canonical ordering is used as an input in some planar graph drawing
-algorithms, particularly those that create a straight line embedding.
-de Fraysseix, Pach, and Pollack
-[72]
-first proved the
-existence of such an ordering and showed how to compute one in time
+The planar canonical ordering is used as an input in some planar graph drawing
+algorithms, particularly those that create a straight line embedding.
+de Fraysseix, Pach, and Pollack
+[72]
+first proved the
+existence of such an ordering and showed how to compute one in time
O(n) on a maximal planar graph with n vertices.
-A graph is planar if it can be drawn in two-dimensional space with no
-two of its edges crossing. Any embedding of a planar graph separates the plane
-into distinct regions that are bounded by sequences of edges in the graph.
-These regions are called faces.
+A graph is planar if it can be drawn in two-dimensional space with no
+two of its edges crossing. Any embedding of a planar graph separates the plane
+into distinct regions that are bounded by sequences of edges in the graph.
+These regions are called faces.
The goal of the Sloan ordering algorithm[1, 2] is to reduce the profile and
- the wavefront of a graph by reordering the indices assigned to each vertex.
- The Sloan algorithm needs a start and an end vertex. These vertices can be asigned
- manually. But there is also an algorithm sloan_starting_nodes that provides
- usually quite good start and end vertices. Each vertex is asigned with a priority.
- This priority is a weighted sum of the distance of the vector to the end vertex
- (a global criterion) and is called the current degree of vertex. This current
- degree basically reflects the status of the renumbering in the neighborhood
- of a vertex (a local criterion). Therefore the Sloan algorithm (in contrast
- to-McKee) takes into account local as well as global criteria for the renumbering
- sequence. One can play around with the relative weights, but the default values
- proposed by Sloan (weight1/weight2=1/2) turn out to be pretty good in most cases.
+ The goal of the Sloan ordering algorithm[1, 2] is to reduce the profile and
+ the wavefront of a graph by reordering the indices assigned to each vertex.
+ The Sloan algorithm needs a start and an end vertex. These vertices can be asigned
+ manually. But there is also an algorithm sloan_starting_nodes that provides
+ usually quite good start and end vertices. Each vertex is asigned with a priority.
+ This priority is a weighted sum of the distance of the vector to the end vertex
+ (a global criterion) and is called the current degree of vertex. This current
+ degree basically reflects the status of the renumbering in the neighborhood
+ of a vertex (a local criterion). Therefore the Sloan algorithm (in contrast
+ to-McKee) takes into account local as well as global criteria for the renumbering
+ sequence. One can play around with the relative weights, but the default values
+ proposed by Sloan (weight1/weight2=1/2) turn out to be pretty good in most cases.
Version 1 of the algorithm lets the user choose the start- and end-vertex whereas
- version 2 finds a good starting vertex using the already mentioned sloan_starting_node
- algorithm. The choice of these vertices can have a significant effect on the
- quality of the ordering. Version 3 and 4 are identical to version 1 and 2 respectively,
- except that for the weights the standard weights W1=1 and W2=2 are used.
- The output of the algorithm are the vertices in the new ordering. Depending
- on what kind of output iterator you use, you can get either the Sloan ordering
- or the reverse Sloan ordering. For example, if you store the output into a vector
- using the vector's reverse iterator, then you get the reverse Sloan ordering.
+ Version 1 of the algorithm lets the user choose the start- and end-vertex whereas
+ version 2 finds a good starting vertex using the already mentioned sloan_starting_node
+ algorithm. The choice of these vertices can have a significant effect on the
+ quality of the ordering. Version 3 and 4 are identical to version 1 and 2 respectively,
+ except that for the weights the standard weights W1=1 and W2=2 are used.
+ The output of the algorithm are the vertices in the new ordering. Depending
+ on what kind of output iterator you use, you can get either the Sloan ordering
+ or the reverse Sloan ordering. For example, if you store the output into a vector
+ using the vector's reverse iterator, then you get the reverse Sloan ordering.
Either way, storing the output into a vector gives you the permutation from
+ Either way, storing the output into a vector gives you the permutation from
the new ordering to the old ordering. Sometimes, it is the opposite permutation that you want, the permutation from
- the old index to the new index. This can easily be computed in the following
- way.
+ Sometimes, it is the opposite permutation that you want, the permutation from
+ the old index to the new index. This can easily be computed in the following
+ way.
Usually you need the reversed ordering with the Cuthill-McKee algorithm and
+ Usually you need the reversed ordering with the Cuthill-McKee algorithm and
the direct ordering with the Sloan algorithm. For version 2: For version 3: For version 4: sloan_start_end_vertices,
- bandwidth, profile, wavefront
+ sloan_start_end_vertices,
+ bandwidth, profile, wavefront
and degree_property_map in boost/graph/properties.hpp. [1] S. W. Sloan, An algorithm for profile and wavefront reduction of sparse
+ [1] S. W. Sloan, An algorithm for profile and wavefront reduction of sparse
matrices, Int. j. numer. methods eng., 23, 239 - 251 (1986) [2] S. W. Sloan, A fortran program for profile and wavefront reduction,
+ [2] S. W. Sloan, A fortran program for profile and wavefront reduction,
Int. j. numer. methods eng., 28, 2651 - 2679 (1989)
@@ -34,53 +34,53 @@ src="../../../boost.png" width=277>
typename graph_traits<Graph>::vertex_descriptor
sloan_start_end_vertices(Graph& G,
typename graph_traits<Graph>::vertex_descriptor &s,
- ColorMap color,
+ ColorMap color,
DegreeMap degree )
- The goal of the sloan_start_end_vertices algorithm[1, 2] is to find good start-
- and end-vertices for the profile and wavefront reduction algorithm sloan_ordering.
- The algorithm is similar to pseudo_peripheral_pair and also based on breadth_first_search.
- With this breadth_first_search function a so-called rooted level structure (RLS)
- is formed, where the vertices with the same distance to the starting vertex
- are grouped together. The maximum number of vertices in one group is called
- the width of the RLS. Sloan_start_end_vertices tries to find a pseudoperipheral
+ The goal of the sloan_start_end_vertices algorithm[1, 2] is to find good start-
+ and end-vertices for the profile and wavefront reduction algorithm sloan_ordering.
+ The algorithm is similar to pseudo_peripheral_pair and also based on breadth_first_search.
+ With this breadth_first_search function a so-called rooted level structure (RLS)
+ is formed, where the vertices with the same distance to the starting vertex
+ are grouped together. The maximum number of vertices in one group is called
+ the width of the RLS. Sloan_start_end_vertices tries to find a pseudoperipheral
pair with a minimum RLS-width. sloan_start_end_vertices,
- bandwidth, profile,
- wavefront and
+ sloan_start_end_vertices,
+ bandwidth, profile,
+ wavefront and
degree_property_map in boost/graph/properties.hpp. [1] S. W. Sloan, An algorithm for profile and wavefront reduction of sparse
+ [1] S. W. Sloan, An algorithm for profile and wavefront reduction of sparse
matrices, Int. j. numer. methods eng., 23, 239 - 251 (1986) [2] S. W. Sloan, A fortran program for profile and wavefront reduction,
+ [2] S. W. Sloan, A fortran program for profile and wavefront reduction,
Int. j. numer. methods eng., 28, 2651 - 2679 (1989) This class template implements a generator for small-world graphs,
@@ -106,7 +106,7 @@ typedef boost::small_world_iterator<boost::minstd_rand, Graph> SWGen;
int main()
{
boost::minstd_rand gen;
- // Create graph with 100 nodes
+ // Create graph with 100 nodes
Graph g(SWGen(gen, 100, 6, 0.03), SWGen(), 100);
return 0;
}
@@ -123,4 +123,4 @@ Indiana University (
- This class template implements a generator for Erdös-Renyi
@@ -123,11 +123,11 @@ int main()
IN: vertex_index_map(VertexIndexMap vertexIndices)
+ IN: vertex_index_map(VertexIndexMap vertexIndices)
A straight line drawing of a
-planar graph is a plane
-drawing where each edge is drawn using a straight line segment. Since all
-edges are line segments, the drawing is completely determined by the placement
-of vertices in the plane. chrobak_payne_straight_line_drawing uses an
-algorithm of Chrobak and Payne
-[71]
-to form a straight
-line drawing of a planar graph by mapping all n vertices in a planar
+planar graph is a plane
+drawing where each edge is drawn using a straight line segment. Since all
+edges are line segments, the drawing is completely determined by the placement
+of vertices in the plane. chrobak_payne_straight_line_drawing uses an
+algorithm of Chrobak and Payne
+[71]
+to form a straight
+line drawing of a planar graph by mapping all n vertices in a planar
graph to integer coordinates in a (2n - 4) x (n - 2) grid.
-The input graph passed to chrobak_payne_straight_line_drawing must
-be a maximal planar graph with at least
-3 vertices. Self-loops and parallel edges are ignored by this function. Note
+The input graph passed to chrobak_payne_straight_line_drawing must
+be a maximal planar graph with at least
+3 vertices. Self-loops and parallel edges are ignored by this function. Note
that the restriction that the graph be maximal planar does not
mean that this function can only draw maximal planar graphs (the graph pictured
-above is not maximal planar, for example). If you want to
-draw a graph g, you can create a copy g' of g, store a
-mapping m of vertices in g' to vertices in g,
-triangulate g', and then send
-g' in as the input to chrobak_payne_straight_line_drawing. The
-drawing returned can then be applied to g using m to translate
-vertices from one graph to another, since g contains a subset of the
+above is not maximal planar, for example). If you want to
+draw a graph g, you can create a copy g' of g, store a
+mapping m of vertices in g' to vertices in g,
+triangulate g', and then send
+g' in as the input to chrobak_payne_straight_line_drawing. The
+drawing returned can then be applied to g using m to translate
+vertices from one graph to another, since g contains a subset of the
edges in g'.
@@ -70,10 +70,10 @@ edges in g'.
The successive_shortest_path_nonnegative_weights() function calculates the minimum cost maximum flow of a network. See Section Network
-Flow Algorithms for a description of maximum flow.
+Flow Algorithms for a description of maximum flow.
The function calculates the flow values f(u,v) for all (u,v) in
E, which are returned in the form of the residual capacity
-r(u,v) = c(u,v) - f(u,v).
+r(u,v) = c(u,v) - f(u,v).
There are several special requirements on the input graph and property
@@ -72,7 +72,7 @@ href="./bibliography.html#ahuja93:_network_flows">Network Flows.
This algorithm starts with empty flow and in each round augments the shortest path (in terms of weight) in the residual graph.
-
+
In order to find the cost of the result flow use:
find_flow_cost().
@@ -98,12 +98,12 @@ IN: vertex_descriptor s
& params)
{
if (num_vertices(g) == 0) return;
- detail::transitive_closure_dispatch(g, tc,
+ detail::transitive_closure_dispatch(g, tc,
get_param(params, orig_to_copy),
choose_const_pmap(get_param(params, vertex_index), g, vertex_index)
);
@@ -132,7 +132,7 @@ mapping or to use the default, a vector, to map between the two.
@d Construct Default G to TC Vertex Mapping
@{
namespace detail {
- template [1]
+ [1]
Since the visitor parameter is passed by value, if your visitor
contains state then any changes to the state during the algorithm
will be made to a copy of the visitor object, not the visitor object
@@ -339,4 +339,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu
-
+
-
+
NOTE: The Boost Graph Library supports two interchangeable methods for
-specifying interior properties: bundled properties
-and property lists. The former is easier to use and requires less effort,
-whereas the latter is compatible with older, broken compilers and is
+ NOTE: The Boost Graph Library supports two interchangeable methods for
+specifying interior properties: bundled properties
+and property lists. The former is easier to use and requires less effort,
+whereas the latter is compatible with older, broken compilers and is
backward-compatible with Boost versions prior to 1.32.0. If you absolutely
-require these compatibility features, read on to learn about property lists.
+require these compatibility features, read on to learn about property lists.
Otherwise, we strongly suggest that you read about the bundled
properties mechanism.
- One may specify internal properties via property lists, which are build from instances of the
+ One may specify internal properties via property lists, which are build from instances of the
property class declared as follows.
@@ -427,11 +427,11 @@ the edges of the graph.
-There are two kinds of graph properties: interior and exterior.
+There are two kinds of graph properties: interior and exterior.
This method writes a BGL graph object as an max-flow problem into an output stream in extended dimacs format (see Goldbergs site for more information).
-The output can be read in again using the boost/graph/read_dimacs.hpp method.
+The output can be read in again using the boost/graph/read_dimacs.hpp method.
+
+
@@ -24,15 +24,15 @@
// named parameter version
template <class Graph, class P, class T, class R>
-void breadth_first_search(Graph& G,
- typename graph_traits<Graph>::vertex_descriptor s,
+void breadth_first_search(Graph& G,
+ typename graph_traits<Graph>::vertex_descriptor s,
const bgl_named_params<P, T, R>& params);
// non-named parameter version
-template <class Graph, class Buffer, class BFSVisitor,
+template <class Graph, class Buffer, class BFSVisitor,
class ColorMap>
-void breadth_first_search(const Graph& g,
- typename graph_traits<Graph>::vertex_descriptor s,
+void breadth_first_search(const Graph& g,
+ typename graph_traits<Graph>::vertex_descriptor s,
Buffer& Q, BFSVisitor vis, ColorMap color);
@@ -70,25 +70,25 @@ BFS algorithm is a listed below.
BFS(G, s)
for each vertex u in V[G]
- color[u] := WHITE
- d[u] := infinity
- p[u] := u
+ color[u] := WHITE
+ d[u] := infinity
+ p[u] := u
end for
- color[s] := GRAY
- d[s] := 0
+ color[s] := GRAY
+ d[s] := 0
ENQUEUE(Q, s)
- while (Q != Ø)
+ while (Q != Ø)
u := DEQUEUE(Q)
for each vertex v in Adj[u]
if (color[v] = WHITE)
- color[v] := GRAY
- d[v] := d[u] + 1
- p[v] := u
+ color[v] := GRAY
+ d[v] := d[u] + 1
+ p[v] := u
ENQUEUE(Q, v)
else
- if (color[v] = GRAY)
+ if (color[v] = GRAY)
...
- else
+ else
...
end for
color[u] := BLACK
@@ -99,29 +99,29 @@ BFS(G, s)
-
+
diff --git a/doc/breadth_first_visit.html b/doc/breadth_first_visit.html
index 96bfc3a3..e3feaa92 100644
--- a/doc/breadth_first_visit.html
+++ b/doc/breadth_first_visit.html
@@ -1,17 +1,17 @@
-initialize vertex u
+initialize vertex u
-discover vertex s
+discover vertex s
-examine vertex u
+examine vertex u
examine edge (u,v)
-(u,v) is a tree edge
+(u,v) is a tree edge
-discover vertex v
+discover vertex v
(u,v) is a non-tree edge
-(u,v) has a gray target
+(u,v) has a gray target
-(u,v) has a black target
+(u,v) has a black target
-finish vertex u
+finish vertex u
@@ -244,7 +244,7 @@ UTIL: buffer(Buffer& Q)
Python: The buffer must derive from the Buffer type for the graph.
-
+
@@ -252,7 +252,7 @@ Complexity
Notes
-
+
+
@@ -22,14 +22,14 @@
template <class IncidenceGraph, class P, class T, class R>
- void breadth_first_visit(IncidenceGraph& G,
- typename graph_traits<IncidenceGraph>::vertex_descriptor s,
+ void breadth_first_visit(IncidenceGraph& G,
+ typename graph_traits<IncidenceGraph>::vertex_descriptor s,
const bgl_named_params<P, T, R>& params);
template <class IncidenceGraph, class Buffer, class BFSVisitor, class ColorMap>
void breadth_first_visit
- (const IncidenceGraph& g,
- typename graph_traits<IncidenceGraph>::vertex_descriptor s,
+ (const IncidenceGraph& g,
+ typename graph_traits<IncidenceGraph>::vertex_descriptor s,
Buffer& Q, BFSVisitor vis, ColorMap color)
@@ -110,7 +110,7 @@ UTIL: buffer(Buffer& Q)
Python: The buffer must derive from the Buffer type for the graph.
-
+
@@ -118,7 +118,7 @@ Complexity
Notes
-
+
+
@@ -43,12 +43,12 @@ review. The pending items are:

Home Libraries People FAQ More
Function template circle_graph_layoutSynopsis
-template<typename VertexListGraph, typename PositionMap, typename Radius>
- void circle_graph_layout(const VertexListGraph & g, PositionMap position,
- Radius radius);
Where Defined
boost/graph/circle_layout.hppDescription
Where Defined
boost/graph/circle_layout.hppDescription
Parameters
IN: const VertexListGraph& g
diff --git a/doc/cochet-terrasson98numerical.pdf b/doc/cochet-terrasson98numerical.pdf
index c0ec550a..8925e8f7 100644
Binary files a/doc/cochet-terrasson98numerical.pdf and b/doc/cochet-terrasson98numerical.pdf differ
diff --git a/doc/compressed_sparse_row.html b/doc/compressed_sparse_row.html
index 9519f9b0..37ff8493 100644
--- a/doc/compressed_sparse_row.html
+++ b/doc/compressed_sparse_row.html
@@ -2,7 +2,7 @@
+
+
@@ -154,4 +154,4 @@ undirected graph.
-
+
diff --git a/doc/constructing_algorithms.html b/doc/constructing_algorithms.html
index a7b7f4ca..d173ae19 100644
--- a/doc/constructing_algorithms.html
+++ b/doc/constructing_algorithms.html
@@ -1,17 +1,17 @@
+
+
@@ -113,7 +113,7 @@ color of all the vertices to "uncolored."
namespace boost {
template <class VertexListGraph, class Order, class Color>
typename graph_traits<VertexListGraph>::vertices_size_type
- sequential_vertex_color_ting(const VertexListGraph& G,
+ sequential_vertex_color_ting(const VertexListGraph& G,
Order order, Color color)
{
typedef graph_traits<VertexListGraph> GraphTraits;
@@ -127,27 +127,27 @@ namespace boost {
BOOST_CONCEPT_ASSERT(( IntegerConcept<ColorType> ));
BOOST_CONCEPT_ASSERT(( ReadablePropertyMapConcept<Order, size_type> ));
BOOST_STATIC_ASSERT((is_same<OrderType, vertex_descriptor>::value));
-
+
size_type max_color = 0;
const size_type V = num_vertices(G);
- std::vector<size_type>
+ std::vector<size_type>
mark(V, numeric_limits_max(max_color));
-
+
typename GraphTraits::vertex_iterator v, vend;
for (boost::tie(v, vend) = vertices(G); v != vend; ++v)
color[*v] = V - 1; // which means "not colored"
-
+
for (size_type i = 0; i < V; i++) {
vertex_descriptor current = order[i];
// mark all the colors of the adjacent vertices
typename GraphTraits::adjacency_iterator ai, aend;
for (boost::tie(ai, aend) = adjacent_vertices(current, G); ai != aend; ++ai)
- mark[color[*ai]] = i;
+ mark[color[*ai]] = i;
// find the smallest color unused by the adjacent vertices
size_type smallest_color = 0;
- while (smallest_color < max_color && mark[smallest_color] == i)
+ while (smallest_color < max_color && mark[smallest_color] == i)
++smallest_color;
// if all the colors are used up, increase the number of colors
@@ -180,4 +180,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/copy_graph.html b/doc/copy_graph.html
index 590429a0..76483bb4 100644
--- a/doc/copy_graph.html
+++ b/doc/copy_graph.html
@@ -1,24 +1,24 @@
+
+
copy_graph
-template <class VertexListGraph, class MutableGraph>
+template <class VertexListGraph, class MutableGraph>
void copy_graph(const VertexListGraph& G, MutableGraph& G_copy,
const bgl_named_params<P, T, R>& params = all defaults)
@@ -113,4 +113,4 @@ The time complexity is O(V + E).
-
+
diff --git a/doc/cuthill_mckee_ordering.html b/doc/cuthill_mckee_ordering.html
index 5765c31c..41c0c734 100644
--- a/doc/cuthill_mckee_ordering.html
+++ b/doc/cuthill_mckee_ordering.html
@@ -1,19 +1,19 @@
-
+
+
+
@@ -46,25 +46,25 @@
OutputIterator
cuthill_mckee_ordering(const IncidenceGraph& g,
typename graph_traits<IncidenceGraph>::vertex_descriptor s,
- OutputIterator inverse_permutation,
+ OutputIterator inverse_permutation,
ColorMap color, DegreeMap degree)
(2)
template <class VertexListGraph, class OutputIterator>
OutputIterator
- cuthill_mckee_ordering(const VertexListGraph& g, OutputIterator inverse_permutation);
+ cuthill_mckee_ordering(const VertexListGraph& g, OutputIterator inverse_permutation);
template <class VertexListGraph, class OutputIterator, class VertexIndexMap>
OutputIterator
- cuthill_mckee_ordering(const VertexListGraph& g, OutputIterator inverse_permutation,
- VertexIndexMap index_map);
-
- template <class VertexListGraph, class OutputIterator,
+ cuthill_mckee_ordering(const VertexListGraph& g, OutputIterator inverse_permutation,
+ VertexIndexMap index_map);
+
+ template <class VertexListGraph, class OutputIterator,
class ColorMap, class DegreeMap>
OutputIterator
- cuthill_mckee_ordering(const VertexListGraph& g, OutputIterator inverse_permutation,
+ cuthill_mckee_ordering(const VertexListGraph& g, OutputIterator inverse_permutation,
ColorMap color, DegreeMap degree)
-
+
(3)
template <class IncidenceGraph, class OutputIterator,
class ColorMap, class DegreeMap>
@@ -72,7 +72,7 @@
cuthill_mckee_ordering(const IncidenceGraph& g,
std::deque< typename
graph_traits<IncidenceGraph>::vertex_descriptor > vertex_queue,
- OutputIterator inverse_permutation,
+ OutputIterator inverse_permutation,
ColorMap color, DegreeMap degree)
@@ -92,10 +92,10 @@ increasing degree.
-
+
An undirected graph. The graph's type must be a model of IncidenceGraph.
Python: The parameter is named graph.
@@ -149,13 +149,13 @@ For version 1:
The starting vertex.
Python: Unsupported parameter.
-
+
The new vertex ordering. The vertices are written to the output
iterator in their new order.
Python: This parameter is unused in Python. The new vertex
ordering is returned as a Python list.
-
+
Used internally to keep track of the progress of the algorithm
(to avoid visiting the same vertex twice).
@@ -171,13 +171,13 @@ For version 2:
-
+
An undirected graph. The graph's type must be a model of VertexListGraph and IncidenceGraph.
Python: The parameter is named graph.
+ OutputIterator inverse_permutation  (OUT)
The new vertex ordering. The vertices are written to the
output iterator in their new order.
Python: This parameter is unused in Python. The new vertex
@@ -198,7 +198,7 @@ For version 3:
-
-
+
An undirected graph. The graph's type must be a model of IncidenceGraph.
Python: The parameter is named graph.
@@ -207,13 +207,13 @@ For version 3:
The deque containing the starting vertices for each component.
Python: Unsupported parameter.
-
+
The new vertex ordering. The vertices are written to the output
iterator in their new order.
Python: This parameter is unused in Python. The new vertex
ordering is returned as a Python list.
-
+
Used internally to keep track of the progress of the algorithm
(to avoid visiting the same vertex twice).
@@ -245,4 +245,4 @@ and degree_property_map in boost/graph/properties.hpp.
-
+
diff --git a/doc/cycle_canceling.html b/doc/cycle_canceling.html
index 25a97dc8..cd7f0433 100644
--- a/doc/cycle_canceling.html
+++ b/doc/cycle_canceling.html
@@ -1,17 +1,17 @@
+
+
@@ -23,25 +23,25 @@
// named parameter version
template <class Graph, class P, class T, class R>
void cycle_canceling(
- Graph &g,
+ Graph &g,
const bgl_named_params<P, T, R> & params = all defaults)
// non-named parameter version
template <class Graph, class Pred, class Distance, class Reversed, class ResidualCapacity, class Weight>
-void cycle_canceling(const Graph & g, Weight weight, Reversed rev, ResidualCapacity residual_capacity, Pred pred, Distance distance)
+void cycle_canceling(const Graph & g, Weight weight, Reversed rev, ResidualCapacity residual_capacity, Pred pred, Distance distance)
Named Parameters
-
+
IN/OUT: residual_capacity_map(ResidualCapacityEdgeMap res)
This maps edges to their residual capacity. The type must be a model
@@ -142,7 +142,7 @@ UTIL: predecessor_map(PredEdgeMap pred)
using the i_map for the index map.
-UTIL: distance_map(DistanceMap d_map)
+UTIL: distance_map(DistanceMap d_map)
The shortest path weight from the source vertex s to each
vertex in the graph g is recorded in this property map. The
@@ -150,7 +150,7 @@ UTIL: distance_map(DistanceMap d_map)
shortest path. The type DistanceMap must be a model of Read/Write
Property Map. The vertex descriptor type of the graph needs to
- be usable as the key type of the distance map.
+ be usable as the key type of the distance map.
Default:
@@ -178,8 +178,8 @@ IN: vertex_index_map(VertexIndexMap i_map)
Complexity
-In the integer capacity and weight case, if C is the initial cost of the flow, then the complexity is O(C * |V| * |E|),
-where O(|E|* |V|) is the complexity of the bellman ford shortest paths algorithm and C is upper bound on number of iteration.
+In the integer capacity and weight case, if C is the initial cost of the flow, then the complexity is O(C * |V| * |E|),
+where O(|E|* |V|) is the complexity of the bellman ford shortest paths algorithm and C is upper bound on number of iteration.
In many real world cases number of iterations is much smaller than C.
@@ -203,7 +203,7 @@ Piotr Wygocki, University of Warsaw (wygos a
-
+
+
+
@@ -30,21 +30,21 @@ void dag_shortest_paths(const VertexListGraph& g,
const bgl_named_params<Param,Tag,Rest>& params)
// non-named parameter version
-template <class VertexListGraph, class DijkstraVisitor,
- class DistanceMap, class WeightMap, class ColorMap,
+template <class VertexListGraph, class DijkstraVisitor,
+ class DistanceMap, class WeightMap, class ColorMap,
class PredecessorMap,
- class Compare, class Combine,
+ class Compare, class Combine,
class DistInf, class DistZero>
void dag_shortest_paths(const VertexListGraph& g,
- typename graph_traits<VertexListGraph>::vertex_descriptor s,
+ typename graph_traits<VertexListGraph>::vertex_descriptor s,
DistanceMap distance, WeightMap weight, ColorMap color,
- PredecessorMap pred, DijkstraVisitor vis,
+ PredecessorMap pred, DijkstraVisitor vis,
Compare compare, Combine combine, DistInf inf, DistZero zero)
Parameters
-IN: const VertexListGraph& g
+IN: const VertexListGraph& g
The graph object on which the algorithm will be applied.
The type VertexListGraph must be a model of \concept{VertexListGraph}.
-IN: vertex_descriptor s
+IN: vertex_descriptor s
@@ -82,7 +82,7 @@ IN: const VertexListGraph& g
Python: The parameter is named graph.
The source vertex. All distance will be calculated from this vertex,
and the shortest paths tree will be rooted at this vertex.
)
-
+
diff --git a/doc/dijkstra_shortest_paths.html b/doc/dijkstra_shortest_paths.html
index 2f312f8b..2cd3978f 100644
--- a/doc/dijkstra_shortest_paths.html
+++ b/doc/dijkstra_shortest_paths.html
@@ -1,17 +1,17 @@
@@ -92,7 +92,7 @@ IN: vertex_descriptor s
Named Parameters
-IN: weight_map(WeightMap w_map)
+IN: weight_map(WeightMap w_map)
The weight or ``length'' of each edge in the graph.
The type WeightMap must be a model of
@@ -106,7 +106,7 @@ IN: weight_map(WeightMap w_map)
-IN: vertex_index_map(VertexIndexMap i_map)
+IN: vertex_index_map(VertexIndexMap i_map)
This maps each vertex to an integer in the range [0,
num_vertices(g)). This is necessary for efficient updates of the
@@ -124,7 +124,7 @@ IN: vertex_index_map(VertexIndexMap i_map)
Python: Unsupported parameter.
-OUT: predecessor_map(PredecessorMap p_map)
+OUT: predecessor_map(PredecessorMap p_map)
The predecessor map records the edges in the minimum spanning
tree. Upon completion of the algorithm, the edges (p[u],u)
@@ -139,7 +139,7 @@ OUT: predecessor_map(PredecessorMap p_map)
Python: Must be a vertex_vertex_map for the graph.
-UTIL/OUT: distance_map(DistanceMap d_map)
+UTIL/OUT: distance_map(DistanceMap d_map)
The shortest path weight from the source vertex s to each
vertex in the graph g is recorded in this property map. The
@@ -147,7 +147,7 @@ UTIL/OUT: distance_map(DistanceMap d_map)
shortest path. The type DistanceMap must be a model of Read/Write
Property Map. The vertex descriptor type of the graph needs to
- be usable as the key type of the distance map.
+ be usable as the key type of the distance map.
The value type of the distance map is the element type of a Monoid formed with the combine
@@ -166,7 +166,7 @@ UTIL/OUT: distance_map(DistanceMap d_map)
Python: Must be a vertex_double_map for the graph.
-IN: distance_compare(CompareFunction cmp)
+IN: distance_compare(CompareFunction cmp)
This function is use to compare distances to determine which vertex
is closer to the source vertex. The CompareFunction type
@@ -182,7 +182,7 @@ IN: distance_compare(CompareFunction cmp)
Python: Unsupported parameter.
-IN: distance_combine(CombineFunction cmb)
+IN: distance_combine(CombineFunction cmb)
This function is used to combine distances to compute the distance
of a path. The CombineFunction type must be a model of distance_combine(CombineFunction cmb)
Python: Unsupported parameter.
-IN: distance_inf(D inf)
+IN: distance_inf(D inf)
The inf object must be the greatest value of any D object.
That is, compare(d, inf) == true for any d != inf.
@@ -209,7 +209,7 @@ IN: distance_inf(D inf)
Python: Unsupported parameter.
-IN: distance_zero(D zero)
+IN: distance_zero(D zero)
The zero value must be the identity element for the
Monoid formed by the distance values
@@ -220,7 +220,7 @@ IN: distance_zero(D zero)
Python: Unsupported parameter.
-UTIL/OUT: color_map(ColorMap c_map)
+UTIL/OUT: color_map(ColorMap c_map)
This is used during the execution of the algorithm to mark the
vertices. The vertices start out white and become gray when they are
@@ -242,13 +242,13 @@ UTIL/OUT: color_map(ColorMap c_map)
the graph.
-
-OUT: visitor(DijkstraVisitor v)
+
+OUT: visitor(DijkstraVisitor v)
Use this to specify actions that you would like to happen
during certain event points within the algorithm.
The type DijkstraVisitor must be a model of the
- Dijkstra Visitor concept.
+ Dijkstra Visitor concept.
The visitor object is passed by value [1].
Default: dijkstra_visitor<null_visitor>
@@ -272,21 +272,21 @@ The time complexity is O(V + E).
is invoked on each vertex in the graph before the start of the
algorithm.
Notes
-
+
+
@@ -31,7 +31,7 @@ template <class Graph, class DFSVisitor, class
void depth_first_search(const Graph& g, DFSVisitor vis, ColorMap color)
template <class Graph, class DFSVisitor, class ColorMap>
-void depth_first_search(const Graph& g, DFSVisitor vis, ColorMap color,
+void depth_first_search(const Graph& g, DFSVisitor vis, ColorMap color,
typename graph_traits<Graph>::vertex_descriptor start)
@@ -84,33 +84,33 @@ be used to do this.
DFS(G)
- for each vertex u in V
+ for each vertex u in V
color[u] := WHITE
- p[u] = u
+ p[u] = u
end for
time := 0
if there is a starting vertex s
call DFS-VISIT(G, s)
- for each vertex u in V
+ for each vertex u in V
if color[u] = WHITE
call DFS-VISIT(G, u)
end for
return (p,d_time,f_time)
-DFS-VISIT(G, u)
+DFS-VISIT(G, u)
color[u] := GRAY
- d_time[u] := time := time + 1
- for each v in Adj[u]
+ d_time[u] := time := time + 1
+ for each v in Adj[u]
if (color[v] = WHITE)
- p[v] = u
+ p[v] = u
call DFS-VISIT(G, v)
- else if (color[v] = GRAY)
+ else if (color[v] = GRAY)
...
- else if (color[v] = BLACK)
+ else if (color[v] = BLACK)
...
...
end for
color[u] := BLACK
- f_time[u] := time := time + 1
+ f_time[u] := time := time + 1
@@ -252,27 +252,27 @@ The time complexity is O(E + V).
-
+
diff --git a/doc/depth_first_visit.html b/doc/depth_first_visit.html
index 95514e08..81f73ba9 100644
--- a/doc/depth_first_visit.html
+++ b/doc/depth_first_visit.html
@@ -1,17 +1,17 @@
Notes
-
+
+
@@ -25,13 +25,13 @@
template <class IncidenceGraph, class DFSVisitor, class ColorMap>
void depth_first_visit(IncidenceGraph& g,
- typename graph_traits<IncidenceGraph>::vertex_descriptor s,
+ typename graph_traits<IncidenceGraph>::vertex_descriptor s,
DFSVisitor& vis, ColorMap color)
-template <class IncidenceGraph, class DFSVisitor, class ColorMap,
+template <class IncidenceGraph, class DFSVisitor, class ColorMap,
class TerminatorFunc>
void depth_first_visit(IncidenceGraph& g,
- typename graph_traits<IncidenceGraph>::vertex_descriptor s,
+ typename graph_traits<IncidenceGraph>::vertex_descriptor s,
DFSVisitor& vis, ColorMap color, TerminatorFunc func = TerminatorFunc())
@@ -41,7 +41,7 @@ component as the source vertex s, using the depth-first
pattern. The main purpose of the function is for the
implementation of depth_first_search() though sometimes it is
-useful on its own.
+useful on its own.
Notes
-
+
+
@@ -108,4 +108,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu
+
+
@@ -29,14 +29,14 @@ dijkstra_shortest_paths(Graph& g,
const bgl_named_params<P, T, R>& params);
// non-named parameter version
-template <typename Graph, typename DijkstraVisitor,
+template <typename Graph, typename DijkstraVisitor,
typename PredecessorMap, typename DistanceMap,
- typename WeightMap, typename VertexIndexMap, typename CompareFunction, typename CombineFunction,
+ typename WeightMap, typename VertexIndexMap, typename CompareFunction, typename CombineFunction,
typename DistInf, typename DistZero, typename ColorMap = default>
void dijkstra_shortest_paths
(const Graph& g,
- typename graph_traits<Graph>::vertex_descriptor s,
- PredecessorMap predecessor, DistanceMap distance, WeightMap weight,
+ typename graph_traits<Graph>::vertex_descriptor s,
+ PredecessorMap predecessor, DistanceMap distance, WeightMap weight,
VertexIndexMap index_map,
CompareFunction compare, CombineFunction combine, DistInf inf, DistZero zero,
DijkstraVisitor vis, ColorMap color = default)
@@ -123,12 +123,12 @@ indicated by the labels on the right.
DIJKSTRA(G, s, w)
for each vertex u in V (This loop is not run in dijkstra_shortest_paths_no_init)
- d[u] := infinity
- p[u] := u
+ d[u] := infinity
+ p[u] := u
color[u] := WHITE
end for
- color[s] := GRAY
- d[s] := 0
+ color[s] := GRAY
+ d[s] := 0
INSERT(Q, s)
while (Q != Ø)
u := EXTRACT-MIN(Q)
@@ -136,10 +136,10 @@ DIJKSTRA(G, s, w)
for each vertex v in Adj[u]
if (w(u,v) + d[u] < d[v])
d[v] := w(u,v) + d[u]
- p[v] := u
- if (color[v] = WHITE)
+ p[v] := u
+ if (color[v] = WHITE)
color[v] := GRAY
- INSERT(Q, v)
+ INSERT(Q, v)
else if (color[v] = GRAY)
DECREASE-KEY(Q, v)
else
@@ -188,17 +188,17 @@ finish vertex u
Parameters
-IN: const Graph& g
+IN: const Graph& g
The graph object on which the algorithm will be applied.
- The type Graph must be a model of
+ The type Graph must be a model of
Vertex List Graph
and Incidence Graph.
-IN: vertex_descriptor s
+IN: vertex_descriptor s
Python: The parameter is named graph.
The source vertex. All distance will be calculated from this vertex,
and the shortest paths tree will be rooted at this vertex.
@@ -208,11 +208,11 @@ IN: vertex_descriptor s
Named Parameters
-IN: weight_map(WeightMap w_map)
+IN: weight_map(WeightMap w_map)
The weight or ``length'' of each edge in the graph. The weights
must all be non-negative, and the algorithm will throw a
- negative_edge
+ negative_edge
exception is one of the edges is negative.
The type WeightMap must be a model of
Readable Property Map. The edge descriptor type of
@@ -225,13 +225,13 @@ IN: weight_map(WeightMap w_map)
Python default: graph.get_edge_double_map("weight")
-IN: vertex_index_map(VertexIndexMap i_map)
+IN: vertex_index_map(VertexIndexMap i_map)
This maps each vertex to an integer in the range [0,
num_vertices(g)). This is necessary for efficient updates of the
heap data structure [61] when an edge is relaxed.
- The type
+ The type
VertexIndexMap must be a model of
Readable Property Map. The value type of the map must be an
integer type. The vertex descriptor type of the graph needs to be
@@ -246,10 +246,10 @@ IN: vertex_index_map(VertexIndexMap i_map)
Python: Unsupported parameter.
-OUT: predecessor_map(PredecessorMap p_map)
+OUT: predecessor_map(PredecessorMap p_map)
The predecessor map records the edges in the shortest path tree, the tree computed
- by the traversal of the graph. Upon completion of the algorithm, the edges
+ by the traversal of the graph. Upon completion of the algorithm, the edges
(p[u],u) for all u in V are in the tree. The shortest path
from vertex s to each vertex v in the graph consists of the
vertices v, p[v], p[p[v]], and so on until s is
@@ -266,7 +266,7 @@ OUT: predecessor_map(PredecessorMap p_map)
Python: Must be a vertex_vertex_map for the graph.
-UTIL/OUT: distance_map(DistanceMap d_map)
+UTIL/OUT: distance_map(DistanceMap d_map)
The shortest path weight from the source vertex s to each
vertex in the graph g is recorded in this property map. The
@@ -274,7 +274,7 @@ UTIL/OUT: distance_map(DistanceMap d_map)
shortest path. The type DistanceMap must be a model of Read/Write
Property Map. The vertex descriptor type of the graph needs to
- be usable as the key type of the distance map.
+ be usable as the key type of the distance map.
The value type of the distance map is the element type of a Monoid formed with the combine
@@ -293,7 +293,7 @@ UTIL/OUT: distance_map(DistanceMap d_map)
Python: Must be a vertex_double_map for the graph.
-IN: distance_compare(CompareFunction cmp)
+IN: distance_compare(CompareFunction cmp)
This function is use to compare distances to determine which vertex
is closer to the source vertex. The CompareFunction type
@@ -309,7 +309,7 @@ IN: distance_compare(CompareFunction cmp)
Python: Unsupported parameter.
-IN: distance_combine(CombineFunction cmb)
+IN: distance_combine(CombineFunction cmb)
This function is used to combine distances to compute the distance
of a path. The CombineFunction type must be a model of distance_combine(CombineFunction cmb)
Python: Unsupported parameter.
-IN: distance_inf(D inf)
+IN: distance_inf(D inf)
The inf object must be the greatest value of any D object.
That is, compare(d, inf) == true for any d != inf.
@@ -338,7 +338,7 @@ IN: distance_inf(D inf)
Python: Unsupported parameter.
-IN: distance_zero(D zero)
+IN: distance_zero(D zero)
The zero value must be the identity element for the
Monoid formed by the distance values
@@ -350,7 +350,7 @@ IN: distance_zero(D zero)
Python: Unsupported parameter.
-UTIL/OUT: color_map(ColorMap c_map)
+UTIL/OUT: color_map(ColorMap c_map)
This is used during the execution of the algorithm to mark the
vertices. The vertices start out white and become gray when they are
@@ -371,13 +371,13 @@ UTIL/OUT: color_map(ColorMap c_map)
Python: The color map must be a vertex_color_map for
the graph.
-
-OUT: visitor(DijkstraVisitor v)
+
+OUT: visitor(DijkstraVisitor v)
Use this to specify actions that you would like to happen
during certain event points within the algorithm.
The type DijkstraVisitor must be a model of the
- Dijkstra Visitor concept.
+ Dijkstra Visitor concept.
The visitor object is passed by value [2].
-
+
OUT: residual_capacity_map(ResidualCapacityEdgeMap res)
Default: dijkstra_visitor<null_visitor>
@@ -404,19 +404,19 @@ The time complexity is O(V log V + E).
+
+
@@ -27,29 +27,29 @@ void dijkstra_shortest_paths_no_color_map
(const Graph& graph,
typename graph_traits<Graph>::vertex_descriptor start_vertex,
const bgl_named_params& params);
-
+
// non-named parameter version
-template <typename Graph, typename DijkstraVisitor,
+template <typename Graph, typename DijkstraVisitor,
typename PredecessorMap, typename DistanceMap,
- typename WeightMap, typename VertexIndexMap, typename DistanceCompare, typename DistanceWeightCombine,
+ typename WeightMap, typename VertexIndexMap, typename DistanceCompare, typename DistanceWeightCombine,
typename DistanceInfinity, typename DistanceZero>
void dijkstra_shortest_paths_no_color_map
(const Graph& graph,
- typename graph_traits<Graph>::vertex_descriptor start_vertex,
- PredecessorMap predecessor_map, DistanceMap distance_map, WeightMap weight_map,
+ typename graph_traits<Graph>::vertex_descriptor start_vertex,
+ PredecessorMap predecessor_map, DistanceMap distance_map, WeightMap weight_map,
VertexIndexMap index_map,
DistanceCompare distance_compare, DistanceWeightCombine distance_weight_combine,
DistanceInfinity distance_infinity, DistanceZero distance_zero);
// version that does not initialize the property maps
-template <typename Graph, typename DijkstraVisitor,
+template <typename Graph, typename DijkstraVisitor,
typename PredecessorMap, typename DistanceMap,
- typename WeightMap, typename VertexIndexMap, typename DistanceCompare, typename DistanceWeightCombine,
+ typename WeightMap, typename VertexIndexMap, typename DistanceCompare, typename DistanceWeightCombine,
typename DistanceInfinity, typename DistanceZero>
void dijkstra_shortest_paths_no_color_map_no_init
(const Graph& graph,
- typename graph_traits<Graph>::vertex_descriptor start_vertex,
- PredecessorMap predecessor_map, DistanceMap distance_map, WeightMap weight_map,
+ typename graph_traits<Graph>::vertex_descriptor start_vertex,
+ PredecessorMap predecessor_map, DistanceMap distance_map, WeightMap weight_map,
VertexIndexMap index_map,
DistanceCompare distance_compare, DistanceWeightCombine distance_weight_combine,
DistanceInfinity distance_infinity, DistanceZero distance_zero);
@@ -116,16 +116,16 @@ indicated by the labels on the right.
-
+
diff --git a/doc/dijkstra_visitor.html b/doc/dijkstra_visitor.html
index 5ad9db1d..ac4b3cb3 100644
--- a/doc/dijkstra_visitor.html
+++ b/doc/dijkstra_visitor.html
@@ -1,17 +1,17 @@
DIJKSTRA(G, s, w)
- d[s] := 0
+ d[s] := 0
INSERT(Q, s)
while (Q != Ø)
u := EXTRACT-MIN(Q)
for each vertex v in Adj[u]
if (w(u,v) + d[u] < d[v])
d[v] := w(u,v) + d[u]
- p[v] := u
- if (d[v] was originally infinity)
- INSERT(Q, v)
+ p[v] := u
+ if (d[v] was originally infinity)
+ INSERT(Q, v)
else
DECREASE-KEY(Q, v)
else
@@ -164,15 +164,15 @@ finish vertex u
Parameters
-IN: const Graph& graph
+IN: const Graph& graph
The graph object on which the algorithm will be applied.
- The type Graph must be a model of
+ The type Graph must be a model of
Vertex List Graph
and Incidence Graph.
-IN: vertex_descriptor start_vertex
+IN: vertex_descriptor start_vertex
The source vertex. All distance will be calculated from this vertex,
and the shortest paths tree will be rooted at this vertex.
@@ -180,11 +180,11 @@ IN: vertex_descriptor start_vertex
Named Parameters
-IN: weight_map(WeightMap weight_map)
+IN: weight_map(WeightMap weight_map)
The weight or ``length'' of each edge in the graph. The weights
must all be non-negative and non-infinite [3]. The algorithm will throw a
- negative_edge
+ negative_edge
exception is one of the edges is negative.
The type WeightMap must be a model of
Readable Property Map. The edge descriptor type of
@@ -194,13 +194,13 @@ IN: weight_map(WeightMap weight_map)
Default: get(edge_weight, graph)
-IN: index_map(VertexIndexMap index_map)
+IN: index_map(VertexIndexMap index_map)
This maps each vertex to an integer in the range [0,
num_vertices(graph)). This is necessary for efficient updates of the
heap data structure [61] when an edge is relaxed.
- The type
+ The type
VertexIndexMap must be a model of
Readable Property Map. The value type of the map must be an
integer type. The vertex descriptor type of the graph needs to be
@@ -213,7 +213,7 @@ IN: index_map(VertexIndexMap index_map)
-OUT: predecessor_map(PredecessorMap predecessor_map)
+OUT: predecessor_map(PredecessorMap predecessor_map)
The predecessor map records the edges in the minimum spanning
tree. Upon completion of the algorithm, the edges (p[u],u)
@@ -229,7 +229,7 @@ OUT: predecessor_map(PredecessorMap predecessor_map)
Python: Must be a vertex_vertex_map for the graph.
-UTIL/OUT: distance_map(DistanceMap distance_map)
+UTIL/OUT: distance_map(DistanceMap distance_map)
The shortest path weight from the source vertex start_vertex to each
vertex in the graph graph is recorded in this property map. The
@@ -237,7 +237,7 @@ UTIL/OUT: distance_map(DistanceMap distance_map)
shortest path. The type DistanceMap must be a model of Read/Write
Property Map. The vertex descriptor type of the graph needs to
- be usable as the key type of the distance map.
+ be usable as the key type of the distance map.
The value type of the distance map is the element type of a Monoid formed with the distance_weight_combine
@@ -254,7 +254,7 @@ UTIL/OUT: distance_map(DistanceMap distance_map)
map.
-IN: distance_compare(CompareFunction distance_compare)
+IN: distance_compare(CompareFunction distance_compare)
This function is use to compare distances to determine which vertex
is closer to the source vertex. The DistanceCompareFunction type
@@ -268,7 +268,7 @@ IN: distance_compare(CompareFunction distance_compare)
property_traits<DistanceMap>::value_type
-IN: distance_combine(CombineFunction distance_weight_combine)
+IN: distance_combine(CombineFunction distance_weight_combine)
This function is used to combine distances to compute the distance
of a path. The DistanceWeightCombineFunction type must be a model of distance_combine(CombineFunction distance_weight_combine)
D=typename property_traits<DistanceMap>::value_type
-IN: distance_inf(D distance_infinity)
+IN: distance_inf(D distance_infinity)
The distance_infinity object must be the greatest value of any D object.
That is, distance_compare(d, distance_infinity) == true for any d != distance_infinity.
@@ -293,7 +293,7 @@ IN: distance_inf(D distance_infinity)
Default: std::numeric_limits<D>::max()
-IN: distance_zero(D distance_zero)
+IN: distance_zero(D distance_zero)
The distance_zero value must be the identity element for the
Monoid formed by the distance values
@@ -302,13 +302,13 @@ IN: distance_zero(D distance_zero)
Default: D()with
D=typename property_traits<DistanceMap>::value_type
-
-OUT: visitor(DijkstraVisitor v)
+
+OUT: visitor(DijkstraVisitor v)
Use this to specify actions that you would like to happen
during certain event points within the algorithm.
The type DijkstraVisitor must be a model of the
- Dijkstra Visitor concept.
+ Dijkstra Visitor concept.
The visitor object is passed by value [2].
Default: dijkstra_visitor<null_visitor>
@@ -330,19 +330,19 @@ The time complexity is O(V log V + E).
@@ -391,4 +391,4 @@ distance less than infinity.
Trustees of Indiana University
+
+
@@ -37,7 +37,7 @@ by Dijkstra's algorithm.
boost::dijkstra_shortest_paths
- (G, vertex(a, G),
+ (G, vertex(a, G),
distance_map(make_iterator_property_map(distance.begin(), vertex_id, distance[0])).
predecessor_map(make_iterator_property_map(parent.begin(), vertex_id, parent[0])).
visitor(make_dijkstra_visitor(copy_graph(G_copy, on_examine_edge()))));
@@ -122,4 +122,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/directed_graph.html b/doc/directed_graph.html
index c20b2383..a410153e 100644
--- a/doc/directed_graph.html
+++ b/doc/directed_graph.html
@@ -1,17 +1,17 @@
+
+
@@ -93,4 +93,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/disjoint_sets.html b/doc/disjoint_sets.html
index 34cce558..eaebe45a 100644
--- a/doc/disjoint_sets.html
+++ b/doc/disjoint_sets.html
@@ -73,7 +73,7 @@ disjoint_sets<Rank, Parent, FindCompress>
...
disjoint_sets<Rank, Parent, FindCompress> dsets(rank, p);
-
+
for (ui = vertices(G).first; ui != vertices(G).second; ++ui)
dsets.make_set(*ui);
...
@@ -282,7 +282,7 @@ Element operator()(Parent p, Element x)
"../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
height="31" width="88">
-
@@ -48,7 +48,7 @@ Flow Algorithms for a description of maximum flow. The calculated
maximum flow will be the return value of the function. The function
also calculates the flow values f(u,v) for all (u,v) in
E, which are returned in the form of the residual capacity
-r(u,v) = c(u,v) - f(u,v).
+r(u,v) = c(u,v) - f(u,v).
+
+
@@ -124,7 +124,7 @@ template <class Edge, class Graph>
void operator()(Edge e, const Graph& g);
-Given edge e = (u,v), this records the distance of v as
+Given edge e = (u,v), this records the distance of v as
one plus the distance of u.
@@ -173,7 +173,7 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
+
+
@@ -52,7 +52,7 @@ Applying the Bellman-Ford shortest paths algorithm to an
E(x,y), E(x,v),
E(y,v), E(y,z),
E(z,u), E(z,x) };
-
+
int weight[] = { -4, 8, 5,
-2,
9, -3,
@@ -61,16 +61,16 @@ Applying the Bellman-Ford shortest paths algorithm to an
typedef boost::edge_list<E*> Graph;
Graph g(edges, edges + sizeof(edges) / sizeof(E));
-
+
std::vector<int> distance(N, std::numeric_limits<short>::max());
std::vector<int> parent(N,-1);
-
+
distance[z] = 0;
parent[z] = z;
bool r = boost::bellman_ford_shortest_paths(g, int(N), weight,
distance.begin(),
parent.begin());
- if (r)
+ if (r)
for (int i = 0; i < N; ++i)
std::cout << name[i] << ": " << distance[i]
<< " " << name[parent[i]] << std::endl;
@@ -145,7 +145,7 @@ boost::graph_traits<edge_list>::edge_descriptor
The type for the edge descriptors associated with the
-edge_list.
+edge_list.
@@ -218,4 +218,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/edge_predecessor_recorder.html b/doc/edge_predecessor_recorder.html
index e9bee01d..f4b0be76 100644
--- a/doc/edge_predecessor_recorder.html
+++ b/doc/edge_predecessor_recorder.html
@@ -1,17 +1,17 @@
+
+
@@ -188,7 +188,7 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
+
+
@@ -23,20 +23,20 @@
// named parameter version
template <class Graph, class P, class T, class R>
typename detail::edge_capacity_value<Graph, P, T, R>::value_type
-edmonds_karp_max_flow(Graph& g,
+edmonds_karp_max_flow(Graph& g,
typename graph_traits<Graph>::vertex_descriptor src,
typename graph_traits<Graph>::vertex_descriptor sink,
const bgl_named_params<P, T, R>& params = all defaults)
// non-named parameter version
-template <class Graph,
+template <class Graph,
class CapacityEdgeMap, class ResidualCapacityEdgeMap,
class ReverseEdgeMap, class ColorMap, class PredEdgeMap>
typename property_traits<CapacityEdgeMap>::value_type
-edmonds_karp_max_flow(Graph& g,
+edmonds_karp_max_flow(Graph& g,
typename graph_traits<Graph>::vertex_descriptor src,
typename graph_traits<Graph>::vertex_descriptor sink,
- CapacityEdgeMap cap, ResidualCapacityEdgeMap res, ReverseEdgeMap rev,
+ CapacityEdgeMap cap, ResidualCapacityEdgeMap res, ReverseEdgeMap rev,
ColorMap color, PredEdgeMap pred)
The source vertex for the flow network graph.
-
+
IN: vertex_descriptor sink
The sink vertex for the flow network graph.
-
+
Named Parameters
@@ -129,7 +129,7 @@ IN: capacity_map(CapacityEdgeMap cap)
key type of the map must be the graph's edge descriptor type.
Default: get(edge_capacity, g)
This maps edges to their residual capacity. The type must be a model
@@ -228,7 +228,7 @@ from a file in the DIMACS format and computes the maximum flow.
-
+
+
+
diff --git a/doc/faq.html b/doc/faq.html
index c77fca5d..53c9c38f 100644
--- a/doc/faq.html
+++ b/doc/faq.html
@@ -1,17 +1,17 @@
+
+
@@ -76,8 +76,8 @@ convenient. Granted, this is not a huge difference, but since there
weren't other strong reasons, it was enough for us to choose free
functions.
-
-
../../../boost/concept_check.hpp:209: no match for
-`boost::detail::error_property_not_found & ==
+`boost::detail::error_property_not_found & ==
boost::detail::error_property_not_found &'
or a message such as:
../../..\boost/graph/depth_first_search.hpp(78) : error C2664: 'white'
-: cannot convert parameter 1 from
+: cannot convert parameter 1 from
'struct boost::detail::error_property_not_found'
to 'enum boost::default_color_type'
diff --git a/doc/figs/adj_list.fig b/doc/figs/adj_list.fig
index ebe19a3b..82bd57e4 100644
--- a/doc/figs/adj_list.fig
+++ b/doc/figs/adj_list.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/adj_matrix.fig b/doc/figs/adj_matrix.fig
index a0664312..5f8985e1 100644
--- a/doc/figs/adj_matrix.fig
+++ b/doc/figs/adj_matrix.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/analogy.fig b/doc/figs/analogy.fig
index 079ad97b..dfc0e95f 100644
--- a/doc/figs/analogy.fig
+++ b/doc/figs/analogy.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/back_edges.fig b/doc/figs/back_edges.fig
index f36892e8..84243510 100644
--- a/doc/figs/back_edges.fig
+++ b/doc/figs/back_edges.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/bfs_example.fig b/doc/figs/bfs_example.fig
index 4adf2a91..ad1dec96 100644
--- a/doc/figs/bfs_example.fig
+++ b/doc/figs/bfs_example.fig
@@ -2,7 +2,7 @@
Portrait
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/bfs_family.fig b/doc/figs/bfs_family.fig
index f3de67c6..ad40d897 100644
--- a/doc/figs/bfs_family.fig
+++ b/doc/figs/bfs_family.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/bfs_visitor.fig b/doc/figs/bfs_visitor.fig
index cb85d86b..0996cf83 100644
--- a/doc/figs/bfs_visitor.fig
+++ b/doc/figs/bfs_visitor.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/concepts.fig b/doc/figs/concepts.fig
index d976f733..97b2f9bd 100644
--- a/doc/figs/concepts.fig
+++ b/doc/figs/concepts.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/dfs.fig b/doc/figs/dfs.fig
index aff4b2b8..45feb4e9 100644
--- a/doc/figs/dfs.fig
+++ b/doc/figs/dfs.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/dfs_example.fig b/doc/figs/dfs_example.fig
index ebd3cdfc..021adae9 100644
--- a/doc/figs/dfs_example.fig
+++ b/doc/figs/dfs_example.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/dfs_family.fig b/doc/figs/dfs_family.fig
index aa3958ac..851eb868 100644
--- a/doc/figs/dfs_family.fig
+++ b/doc/figs/dfs_family.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/dfs_visitor.fig b/doc/figs/dfs_visitor.fig
index d4d351a6..0d2a284c 100644
--- a/doc/figs/dfs_visitor.fig
+++ b/doc/figs/dfs_visitor.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/digraph.fig b/doc/figs/digraph.fig
index d6fc204a..a56b4cca 100644
--- a/doc/figs/digraph.fig
+++ b/doc/figs/digraph.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/disjoint_set_family.fig b/doc/figs/disjoint_set_family.fig
index 30990428..0a71d001 100644
--- a/doc/figs/disjoint_set_family.fig
+++ b/doc/figs/disjoint_set_family.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/edge_list.fig b/doc/figs/edge_list.fig
index dc375975..cce549ce 100644
--- a/doc/figs/edge_list.fig
+++ b/doc/figs/edge_list.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/file_dep.fig b/doc/figs/file_dep.fig
index 1259102a..edd41f1f 100644
--- a/doc/figs/file_dep.fig
+++ b/doc/figs/file_dep.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/forward_or_cross_edges.fig b/doc/figs/forward_or_cross_edges.fig
index d88245a7..b7dc619e 100644
--- a/doc/figs/forward_or_cross_edges.fig
+++ b/doc/figs/forward_or_cross_edges.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/graph_search.fig b/doc/figs/graph_search.fig
index ef66e059..ffc67b99 100644
--- a/doc/figs/graph_search.fig
+++ b/doc/figs/graph_search.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/knights_tour.fig b/doc/figs/knights_tour.fig
index 5035bcf4..d9a4e121 100644
--- a/doc/figs/knights_tour.fig
+++ b/doc/figs/knights_tour.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/quick_start.fig b/doc/figs/quick_start.fig
index 23226637..e71c7aed 100644
--- a/doc/figs/quick_start.fig
+++ b/doc/figs/quick_start.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/search_states.fig b/doc/figs/search_states.fig
index f44776f5..b3109807 100644
--- a/doc/figs/search_states.fig
+++ b/doc/figs/search_states.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/tree_edges.fig b/doc/figs/tree_edges.fig
index 6143bc8b..747c9133 100644
--- a/doc/figs/tree_edges.fig
+++ b/doc/figs/tree_edges.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/undigraph.fig b/doc/figs/undigraph.fig
index 77603761..d2e0d691 100644
--- a/doc/figs/undigraph.fig
+++ b/doc/figs/undigraph.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/figs/visitor.fig b/doc/figs/visitor.fig
index d4d351a6..0d2a284c 100644
--- a/doc/figs/visitor.fig
+++ b/doc/figs/visitor.fig
@@ -2,7 +2,7 @@
Landscape
Center
Inches
-Letter
+Letter
100.00
Single
-2
diff --git a/doc/file_dependency_example.html b/doc/file_dependency_example.html
index f5def38c..bbf1d03e 100644
--- a/doc/file_dependency_example.html
+++ b/doc/file_dependency_example.html
@@ -1,17 +1,17 @@
+
+
@@ -108,9 +108,9 @@ the following sections.
- enum files_e { dax_h, yow_h, boz_h, zow_h, foo_cpp,
+ enum files_e { dax_h, yow_h, boz_h, zow_h, foo_cpp,
foo_o, bar_cpp, bar_o, libfoobar_a,
- zig_cpp, zig_o, zag_cpp, zag_o,
+ zig_cpp, zig_o, zag_cpp, zag_o,
libzigzag_a, killerapp, N };
const char* name[] = { "dax.h", "yow.h", "boz.h", "zow.h", "foo.cpp",
"foo.o", "bar.cpp", "bar.o", "libfoobar.a",
@@ -122,7 +122,7 @@ the following sections.
Edge(dax_h, foo_cpp), Edge(dax_h, bar_cpp), Edge(dax_h, yow_h),
Edge(yow_h, bar_cpp), Edge(yow_h, zag_cpp),
Edge(boz_h, bar_cpp), Edge(boz_h, zig_cpp), Edge(boz_h, zag_cpp),
- Edge(zow_h, foo_cpp),
+ Edge(zow_h, foo_cpp),
Edge(foo_cpp, foo_o),
Edge(foo_o, libfoobar_a),
Edge(bar_cpp, bar_o),
@@ -136,7 +136,7 @@ the following sections.
};
using namespace boost;
- typedef adjacency_list<vecS, vecS, bidirectionalS,
+ typedef adjacency_list<vecS, vecS, bidirectionalS,
property<vertex_color_t, default_color_type>
> Graph;
Graph g(used_by, used_by + sizeof(used_by) / sizeof(Edge), N);
@@ -175,7 +175,7 @@ STL or custom-made container.
typedef std::list<Vertex> MakeOrder;
MakeOrder make_order;
boost::topological_sort(g, std::front_inserter(make_order));
-
+
std::cout << "make ordering: ";
for (MakeOrder::iterator i = make_order.begin();
i != make_order.end(); ++i)
@@ -229,7 +229,7 @@ it depends on.
zero.
-Returns the number of vertices in the underlying graph [2].
+Returns the number of vertices in the underlying graph [2].
- for (i = make_order.begin(); i != make_order.end(); ++i) {
+ for (i = make_order.begin(); i != make_order.end(); ++i) {
if (in_degree (*i, g) > 0) {
Graph::in_edge_iterator j, j_end;
int maxdist = 0;
@@ -253,8 +253,8 @@ Last, we output the time-slot that we've calculated for each vertex.
The output is:
- parallel make ordering,
- vertices with same group number
+ parallel make ordering,
+ vertices with same group number
can be made in parallel
time_slot[dax.h] = 0
time_slot[yow.h] = 1
@@ -289,7 +289,7 @@ can be removed. One easy way to detect a cycle is to run a depth-first search, and if the
search runs into an already discovered vertex (of the current search
tree), then there is a cycle. The BGL graph search algorithms (which
-includes
+includes
depth_first_search()) are all extensible via the
visitor mechanism. A visitor is similar to a function object,
but it has several methods instead of just the one
@@ -304,7 +304,7 @@ We will create a visitor class and fill in the back_edge()
method, which is the DFSVisitor method
that is called when DFS explores an edge to an already discovered
vertex. A call to this method indicates the existence of a
-cycle. Inheriting from dfs_visitor<>
+cycle. Inheriting from dfs_visitor<>
provides the visitor with empty versions of the other visitor methods.
Once our visitor is created, we can construct and object and pass it
to the BGL algorithm. Visitor objects are passed by value inside of
@@ -315,7 +315,7 @@ reference in this visitor.
-Returns the number of edges entering vertex u.
+Returns the number of edges entering vertex u.
struct cycle_detector : public dfs_visitor<>
{
- cycle_detector( bool& has_cycle)
+ cycle_detector( bool& has_cycle)
: _has_cycle(has_cycle) { }
template <class Edge, class Graph>
@@ -360,4 +360,4 @@ dependency would be flagged as a user error.
-
+
diff --git a/doc/filtered_graph.html b/doc/filtered_graph.html
index 2b4b9675..66527b0e 100644
--- a/doc/filtered_graph.html
+++ b/doc/filtered_graph.html
@@ -1,17 +1,17 @@
The output is:
+
+
@@ -71,7 +71,7 @@ Now we create a graph and print out the filtered graph.
int main()
{
using namespace boost;
-
+
typedef adjacency_list<vecS, vecS, directedS,
no_property, property<edge_weight_t, int> > Graph;
typedef property_map<Graph, edge_weight_t>::type EdgeWeightMap;
@@ -85,7 +85,7 @@ int main()
add_edge(C, E, 0, g);
add_edge(D, B, 3, g);
add_edge(E, C, 0, g);
-
+
positive_edge_weight<EdgeWeightMap> filter(get(edge_weight, g));
filtered_graph<Graph, positive_edge_weight<EdgeWeightMap> >
fg(g, filter);
@@ -95,19 +95,19 @@ int main()
std::cout << "filtered out-edges:" << std::endl;
print_graph(fg, name);
-
+
return 0;
}
-filtered edge set: (A,B) (C,D) (D,B)
+filtered edge set: (A,B) (C,D) (D,B)
filtered out-edges:
-A --> B
-B -->
-C --> D
-D --> B
-E -->
+A --> B
+B -->
+C --> D
+D --> B
+E -->
property_map<filtered_graph, Property>::const_type
-The property map type for vertex or edge properties in the graph.
+The property map type for vertex or edge properties in the graph.
The same property maps from the adapted graph are available
in the filtered graph.
@@ -405,7 +405,7 @@ Returns the number of edges leaving vertex u.
degree_size_type
in_degree(vertex_descriptor u, const filtered_graph& g)
@@ -413,7 +413,7 @@ Returns the number of edges entering vertex u.
vertices_size_type
num_vertices(const filtered_graph& g)
@@ -514,7 +514,7 @@ this has two problems. The first is that it would take longer to
calculate, and the second is that it would interact badly with the
underlying vertex/edge index mappings. The index mapping would no
longer fall in the range [0,num_vertices(g)) (resp. [0,
-num_edges(g))) which is assumed in many of the algorithms.
+num_edges(g))) which is assumed in many of the algorithms.
@@ -532,4 +532,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/find_flow_cost.html b/doc/find_flow_cost.html
index 7f839cf9..63c0274b 100644
--- a/doc/find_flow_cost.html
+++ b/doc/find_flow_cost.html
@@ -1,17 +1,17 @@
+
+
@@ -29,19 +29,19 @@ find_flow_cost(const Graph & g,
// non-named parameter version
template<class Graph, class Capacity, class ResidualCapacity, class Weight>
typename property_traits<typename property_map < Graph, edge_capacity_t >::type>::value_type
-find_flow_cost(const Graph & g, Capacity capacity, ResidualCapacity residual_capacity, Weight weight)
+find_flow_cost(const Graph & g, Capacity capacity, ResidualCapacity residual_capacity, Weight weight)
Default: get(edge_capacity, g)
-
+
IN: residual_capacity_map(ResidualCapacityEdgeMap res)
This maps edges to their residual capacity. The type must be a model
@@ -85,7 +85,7 @@ IN: residual_capacity_map(ResidualCapacityEdgeMap res)
-IN: weight_map(WeightMap w_map)
+IN: weight_map(WeightMap w_map)
The weight or ``cost'' of each edge in the graph.
The type WeightMap must be a model of
@@ -98,7 +98,7 @@ IN: weight_map(WeightMap w_map)
Complexity
-The complexity is O(|E|),
+The complexity is O(|E|),
Example
@@ -119,7 +119,7 @@ Piotr Wygocki, University of Warsaw (wygos a
-
+
+
+
@@ -62,7 +62,7 @@ discussed below under the OUT parameter description.
johnson_all_pairs_shortest_paths.
+href="johnson_all_pairs_shortest.html">johnson_all_pairs_shortest_pathsWhere Defined
@@ -81,14 +81,14 @@ A directed or undirected graph. The graph must be a model of BasicMatrix, with the exceptions that
-it isn't required to
+it isn't required to
run in constant time, and it must be mutable. The matrix must be
properly initialized when it is passed to the function
floyd_warshall_initialized_all_pairs_shortest_paths. If the
@@ -102,7 +102,7 @@ IN: weight_map(WeightMap w)
The weight of length of each edge in the graph. The
WeightMap
must be a model of Readable Property
-Map. The edge descriptor
+Map. The edge descriptor
type of the graph needs to be usable as the key type for the weight
map. The value_type of the weight map must be the type of the
DistanceMatrix, and must always either be part of the
@@ -164,4 +164,4 @@ The time complexity is O(V3).
-
+
diff --git a/doc/fruchterman_reingold.html b/doc/fruchterman_reingold.html
index 738d253f..a47f35cd 100644
--- a/doc/fruchterman_reingold.html
+++ b/doc/fruchterman_reingold.html
@@ -1,7 +1,7 @@
+
+
@@ -112,11 +112,11 @@ ordering is stored in the order. The algorithm is as follows:
namespace boost {
- template <class VertexListGraph, class Order, class Degree,
+ template <class VertexListGraph, class Order, class Degree,
class Marker, class BucketSorter>
- void
- smallest_last_ordering(const VertexListGraph& G, Order order,
- Degree degree, Marker marker,
+ void
+ smallest_last_ordering(const VertexListGraph& G, Order order,
+ Degree degree, Marker marker,
BucketSorter& degree_buckets) {
typedef typename graph_traits<VertexListGraph> GraphTraits;
@@ -125,43 +125,43 @@ namespace boost {
typedef size_t size_type;
const size_type num = num_vertices(G);
-
+
typename GraphTraits::vertex_iterator v, vend;
for (boost::tie(v, vend) = vertices(G); v != vend; ++v) {
put(marker, *v, num);
put(degree, *v, out_degree(*v, G));
degree_buckets.push(*v);
}
-
+
size_type minimum_degree = 1;
size_type current_order = num - 1;
-
+
while ( 1 ) {
typedef typename BucketSorter::stack MDStack;
MDStack minimum_degree_stack = degree_buckets[minimum_degree];
while (minimum_degree_stack.empty())
minimum_degree_stack = degree_buckets[++minimum_degree];
-
+
Vertex node = minimum_degree_stack.top();
put(order, current_order, node);
-
+
if ( current_order == 0 ) //find all vertices
break;
-
+
minimum_degree_stack.pop();
put(marker, node, 0); //node has been ordered.
-
+
typename GraphTraits::adjacency_iterator v, vend;
for (boost::tie(v,vend) = adjacent_vertices(node, G); v != vend; ++v)
-
+
if ( get(marker, *v) > current_order ) { //*v is unordered vertex
put(marker, *v, current_order); //mark the columns adjacent to node
-
+
//It is possible minimum degree goes down
//Here we keep tracking it.
- put(degree, *v, get(degree, *v) - 1);
- minimum_degree = std::min(minimum_degree, get(degree, *v));
-
+ put(degree, *v, get(degree, *v) - 1);
+ minimum_degree = std::min(minimum_degree, get(degree, *v));
+
//update the position of *v in the bucket sorter
degree_buckets.update(*v);
}
@@ -188,4 +188,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/graph_concepts.html b/doc/graph_concepts.html
index 64898b24..413ab529 100644
--- a/doc/graph_concepts.html
+++ b/doc/graph_concepts.html
@@ -1,17 +1,17 @@
+
+
@@ -130,30 +130,30 @@ each of the concepts. The notation used in the table is as follows.
+
-
+
diff --git a/doc/graph_traits.html b/doc/graph_traits.html
index 4c336e3a..ab3fa12d 100644
--- a/doc/graph_traits.html
+++ b/doc/graph_traits.html
@@ -1,17 +1,17 @@
-
+
diff --git a/doc/graph_theory_review.html b/doc/graph_theory_review.html
index 6fec7b73..d4895727 100644
--- a/doc/graph_theory_review.html
+++ b/doc/graph_theory_review.html
@@ -2,17 +2,17 @@
-
Expression
Return Type or Description
+
-
Graph
+
-
boost::graph_traits<G>::vertex_descriptor
The type for
vertex representative objects.
+
-
boost::graph_traits<G>::edge_descriptor
The type for
edge representative objects.
+
-
boost::graph_traits<G>::directed_category
Directed or undirected?
+
@@ -163,201 +163,201 @@ ALIGN="LEFT" VALIGN="TOP">The ways in which the vertices and edges of
the graph can be visited.
-
boost::graph_traits<G>::edge_parallel_category
Allow parallel edges?
+
-
IncidenceGraph refines Graph
+
-
boost::graph_traits<G>::out_edge_iterator
Iterate through
the out-edges.
+
-
boost::graph_traits<G>::degree_size_type
The integer type for
vertex degree.
+
-
out_edges(v, g)
std::pair<out_edge_iterator, out_edge_iterator>
+
-
source(e, g)
vertex_descriptor
+
-
target(e, g)
vertex_descriptor
+
-
out_degree(v, g)
degree_size_type
+
-
BidirectionalGraph refines
IncidenceGraph
+
-
boost::graph_traits<G>::in_edge_iterator
Iterate through the in-edges.
+
-
in_edges(v, g)
std::pair<in_edge_iterator, in_edge_iterator>
+
-
in_degree(v, g)
degree_size_type
+
-
degree(e, g)
degree_size_type
+
-
AdjacencyGraph refines Graph
+
-
boost::graph_traits<G>::adjacency_iterator
Iterate through
adjacent vertices.
+
-
adjacent_vertices(v, g)
std::pair<adjacency_iterator, adjacency_iterator>
+
-
VertexListGraph refines
Graph
+
-
boost::graph_traits<G>::vertex_iterator
Iterate through the
graph's vertex set.
+
-
boost::graph_traits<G>::vertices_size_type
The unsigned integer type for
number of vertices in the graph.
+
-
vertices(g)
std::pair<vertex_iterator, vertex_iterator>
+
-
num_vertices(g)
vertices_size_type
+
-
EdgeListGraph refines Graph
+
-
boost::graph_traits<G>::edge_iterator
Iterate through the graph's
edge set.
+
-
boost::graph_traits<G>::edges_size_type
The unsigned integer type for
number of edges in the graph.
+
-
edges(g)
std::pair<edge_iterator, edge_iterator>
+
-
num_edges(g)
edges_size_type
+
-
source(e, g)
vertex_descriptor
+
-
target(e, g)
vertex_descriptor
+
-
AdjacencyMatrix refines Graph
+
-
edge(u, v, g)
std::pair<edge_descriptor, bool>
+
-
MutableGraph refines
Graph
+
-
add_vertex(g)
vertex_descriptor
+
-
clear_vertex(v, g)
void
+
-
remove_vertex(v, g)
void
+
-
add_edge(u, v, g)
std::pair<edge_descriptor, bool>
+
-
remove_edge(u, v, g)
void
+
-
remove_edge(e, g)
void
+
-
remove_edge(e_iter, g)
void
+
-
MutablePropertyGraph refines
Graph
+
-
add_vertex(vp, g)
vertex_descriptor
+
add_edge(u, v, ep, g)
std::pair<edge_descriptor,
bool>
-
-
+
PropertyGraph refines Graph
+
-
boost::property_map<G, Property>::type
Type for a mutable property map.
+
-
boost::property_map<G, Property>::const_type
Type for a non-mutable property map.
+
-
get(property, g)
Function to get a property map.
+
-
get(property, g, x)
Get property value for vertex or edge x.
+
put(property, g, x, v)
Set property value for vertex or edge
@@ -406,10 +406,10 @@ href="../example/undirected_adjacency_list.cpp">example/undirected_adjacency
std::cout << "the edges incident to v: ";
boost::graph_traits<UndirectedGraph>::out_edge_iterator e, e_end;
- boost::graph_traits<UndirectedGraph>::vertex_descriptor
+ boost::graph_traits<UndirectedGraph>::vertex_descriptor
s = vertex(0, undigraph);
for (boost::tie(e, e_end) = out_edges(s, undigraph); e != e_end; ++e)
- std::cout << "(" << source(*e, undigraph)
+ std::cout << "(" << source(*e, undigraph)
<< "," << target(*e, undigraph) << ")" << endl;
@@ -495,4 +495,4 @@ weight[(v,u)] = 3.1
+
+
@@ -352,7 +352,7 @@ Breadth-first search spreading through a graph.
- order of discovery: s r w v t x u y
+ order of discovery: s r w v t x u y
order of finish: s r w v t x u y
@@ -452,7 +452,7 @@ Kruskal's algorithm [18]
for solving the minimum spanning tree problem. This is a greedy
algorithm to calculate the minimum spanning tree for an undirected
-graph with weighted edges.
+graph with weighted edges.
+
+
@@ -197,12 +197,12 @@ traversal_category
The ways in which the vertices in the graph can be traversed.
-The traversal category tags are:
+The traversal category tags are:
incidence_graph_tag, adjacency_graph_tag,
bidirectional_graph_tag, vertex_list_graph_tag,
edge_list_graph_tag, vertex_and_edge_list_graph_tag,
adjacency_matrix_tag. You can also create your own
-tag which should inherit from one of the above.
+tag which should inherit from one of the above.
@@ -253,4 +253,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/grid_graph.html b/doc/grid_graph.html
index 2a7b509d..261dd57c 100644
--- a/doc/grid_graph.html
+++ b/doc/grid_graph.html
@@ -1,7 +1,7 @@
@@ -48,7 +48,7 @@
Overview
+ Overview
Figure 2: A 3x3 two-dimensional, wrapped grid graph
-
Indexing
@@ -243,7 +243,7 @@ in_edge_at(Traits::vertex_descripto
// dimension is unwrapped, previous will stop at the beginning vertex in the dimension.
Traits::vertex_descriptor previous(Traits::vertex_descriptor vertex,
std::size_t dimension,
- Traits::vertices_size_type distance = 1);
+ Traits::vertices_size_type distance = 1);
Example
@@ -301,4 +301,4 @@ print_vertex(graph.previous(first_vertex, 2,
-
+
diff --git a/doc/gursoy_atun_layout.html b/doc/gursoy_atun_layout.html
index f65cf5ef..1c180a35 100644
--- a/doc/gursoy_atun_layout.html
+++ b/doc/gursoy_atun_layout.html
@@ -1,7 +1,7 @@
+
+
@@ -121,7 +121,7 @@ September 27, 2000.
read_graphviz now has a new, Spirit-based parser that works for all graph types and supports arbitrary properties on the graph, from Ron Garcia. The old, Bison-based GraphViz reader has been deprecated and will be removed in a future Boost release.write_graphviz now
supports output of dynamic properties (as read in through the
@@ -164,7 +164,7 @@ September 27, 2000.
has been recast as an invocation of
breadth_first_search and now supports graphs with
multiple components.get_property now refers to the
@@ -205,7 +205,7 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
+
+
@@ -76,4 +76,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/incremental_components.html b/doc/incremental_components.html
index a6be2b07..181791be 100644
--- a/doc/incremental_components.html
+++ b/doc/incremental_components.html
@@ -1,7 +1,7 @@
-
-
+
+
@@ -54,22 +54,22 @@ and vertices u and v.
-
Basic initialization of the disjoint-sets structure. Each
vertex in the graph g is in its own set.
The connected components are calculated based on the edges in the graph
g and the information is embedded in ds.
Extracts the component information for vertex v from the
disjoint-sets.
Update the disjoint-sets structure when edge (u,v) is added to the graph.
using namespace boost;
-int main(int argc, char* argv[])
+int main(int argc, char* argv[])
{
typedef adjacency_list exists to aid in testing and verification of the function
+boyer_myrvold_planarity_test, and for that reason, it expects its
+input to be a restricted set of edges forming a Kuratowski subgraph, as
described in detail below.
-template <class VertexListGraph, class DisjointSets>
+template <class VertexListGraph, class DisjointSets>
void initialize_incremental_components(VertexListGraph& G, DisjointSets& ds)
@@ -350,7 +350,7 @@ vertex -> index property map is passed in
Members
+
@@ -392,7 +392,7 @@ Returns an iterator at the start of the component indices (0).
Returns an iterator past the end of the component indices (size()).
-
+
-std::pair<component_iterator, component_iterator> operator[size_type index] const
@@ -400,7 +400,7 @@ Returns a pair of iterators for the component at index where index<
@@ -417,4 +417,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/index.html b/doc/index.html
index 61bc71b1..3a7b9d89 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -3,7 +3,7 @@
+
+
@@ -24,47 +24,47 @@ bool is_kuratowski_subgraph(const Graph& g, ForwardIterator begin, ForwardIt
-
-The second restriction is needed both to discriminate between targeting a
-K5 or a K3,3 and to determinstically
-contract the vertices of degree 4 once the K5 has been
+The second restriction is needed both to discriminate between targeting a
+K5 or a K3,3 and to determinstically
+contract the vertices of degree 4 once the K5 has been
targeted. The Kuratowski subgraph output by the function
-boyer_myrvold_planarity_test is
+boyer_myrvold_planarity_test is
guaranteed to meet both of the above requirements.
@@ -84,14 +84,14 @@ On a graph with n vertices, this function runs in time O(n).
IN: Graph& g
-An undirected graph with no self-loops or parallel edges. The graph type must
+An undirected graph with no self-loops or parallel edges. The graph type must
be a model of Vertex List Graph.
-IN: ForwardIterator
+IN: ForwardIterator
-A ForwardIterator with value_type
+A ForwardIterator with value_type
graph_traits<Graph>::edge_descriptor.
@@ -99,7 +99,7 @@ IN: VertexIndexMap vm
A Readable Property Map
- that maps vertices from g to distinct integers in the range
+ that maps vertices from g to distinct integers in the range
[0, num_vertices(g) )
@@ -122,5 +122,5 @@ A Readable Property Ma
Default: get(vertex_index,g)
Copyright © 2007 Aaron Windsor (
aaron.windsor@gmail.com)
-
+
diff --git a/doc/is_straight_line_drawing.html b/doc/is_straight_line_drawing.html
index 8e8321b1..0df33ac7 100644
--- a/doc/is_straight_line_drawing.html
+++ b/doc/is_straight_line_drawing.html
@@ -1,17 +1,17 @@
+
+
@@ -24,11 +24,11 @@ bool is_straight_line_drawing(const Graph& g, GridPositionMap drawing, VertexInd
-A Readable LValue Property
+A Readable LValue Property
Map that models the Position Map concept. The Position Map concept requires
that the value mapped to be an object that has members x and
y. For example, if p models PositionMap and v
is a vertex in the graph, p[v].x and p[v].y are valid
-expressions. The type of x and y must be implicitly
+expressions. The type of x and y must be implicitly
convertable to std::size_t.
@@ -90,4 +90,4 @@ A Readable Property Ma
Copyright © 2007 Aaron Windsor (aaron.windsor@gmail.com)
-
+
diff --git a/doc/iscope99.pdf b/doc/iscope99.pdf
index afed76cd..38efd4cd 100644
Binary files a/doc/iscope99.pdf and b/doc/iscope99.pdf differ
diff --git a/doc/isomorphism-impl-v2.w b/doc/isomorphism-impl-v2.w
index 3cf60878..1fd53b8d 100644
--- a/doc/isomorphism-impl-v2.w
+++ b/doc/isomorphism-impl-v2.w
@@ -172,7 +172,7 @@ if (iter != ordered_edges.end()) {
} else {
@
+
+
@@ -28,8 +28,8 @@ bool isomorphism(const Graph1& g1, const Graph2& g2,
const bgl_named_params<P,T,R>& params = all defaults)
// non-named parameter version
-template <typename Graph1, typename Graph2, typename IsoMap,
- typename VertexInvariant1, typename VertexInvariant2,
+template <typename Graph1, typename Graph2, typename IsoMap,
+ typename VertexInvariant1, typename VertexInvariant2,
typename V1Map, typename V2Map>
bool isomorphism(const Graph1& g1, const Graph2& g2,
IsoMap f, VertexInvariant1 invariant2, VertexInvariant2 invariant2,
@@ -124,13 +124,13 @@ result types. The values returned by these two functions must be in the range
IN: vertex_max_invariant(std::size_t max_invariant)
-An upper bound on the possible values returned from either
+An upper bound on the possible values returned from either
vertex_invariant1 or vertex_invariant2.
@@ -190,4 +190,4 @@ See libs/graph/example/isomorphism.cpp<
-
+
diff --git a/doc/johnson_all_pairs_shortest.html b/doc/johnson_all_pairs_shortest.html
index 7303915c..b78f0f62 100644
--- a/doc/johnson_all_pairs_shortest.html
+++ b/doc/johnson_all_pairs_shortest.html
@@ -1,17 +1,17 @@
Default: vertex_invariant2.max(). The default
-vertex_invariant2 parameter, an instance of
+vertex_invariant2 parameter, an instance of
degree_vertex_invariant, defines this function to
-return num_vertices(g2) * (num_vertices(g2)+1).
+return num_vertices(g2) * (num_vertices(g2)+1).
Python: Unsupported parameter.
+
+
@@ -22,12 +22,12 @@
// named parameter version
template <class VertexAndEdgeListGraph, class DistanceMatrix,
- class VertexID, class Weight, class BinaryPredicate,
+ class VertexID, class Weight, class BinaryPredicate,
class BinaryFunction, class Infinity, class DistanceZero>
bool
- johnson_all_pairs_shortest_paths(VertexAndEdgeListGraph& g1,
+ johnson_all_pairs_shortest_paths(VertexAndEdgeListGraph& g1,
DistanceMatrix& D,
- VertexID id1, Weight w1, const BinaryPredicate& compare,
+ VertexID id1, Weight w1, const BinaryPredicate& compare,
const BinaryFunction& combine, const Infinity& inf,
DistanceZero zero);
@@ -39,7 +39,7 @@ bool johnson_all_pairs_shortest_paths(Graph& g, DistanceMatrix& D,
template <typename Graph, typename DistanceMatrix,
typename VertexIndex, typename WeightMap, typename DT>
bool
-johnson_all_pairs_shortest_paths(VertexAndEdgeListGraph& g1,
+johnson_all_pairs_shortest_paths(VertexAndEdgeListGraph& g1,
DistanceMatrix& D,
VertexIndex i_map, WeightMap w_map, DT zero)
@@ -86,7 +86,7 @@ map.
Named Parameters
-IN: weight_map(WeightMap w_map)
+IN: weight_map(WeightMap w_map)
The weight or "length" of each edge in the graph.
The type WeightMap must be a model of
@@ -96,12 +96,12 @@ IN: weight_map(WeightMap w_map)
Default: get(edge_weight, g)
-UTIL: weight_map2(WeightMap2 w2_map)
+UTIL: weight_map2(WeightMap2 w2_map)
This parameter is no longer needed, and will be ignored.
-IN: vertex_index_map(VertexIndexMap i_map)
+IN: vertex_index_map(VertexIndexMap i_map)
This maps each vertex to an integer in the range [0,
num_vertices(g)). This is necessary for efficient updates of the
@@ -119,12 +119,12 @@ IN: vertex_index_map(VertexIndexMap i_map)
-UTIL: distance_map(DistanceMap d_map)
+UTIL: distance_map(DistanceMap d_map)
This parameter is no longer needed, and will be ignored.
-IN: distance_compare(CompareFunction cmp)
+IN: distance_compare(CompareFunction cmp)
This function is use to compare distances to determine
which vertex is closer to the source vertex.
@@ -136,7 +136,7 @@ IN: distance_compare(CompareFunction cmp)
DT=typename property_traits<WeightMap>::value_type
-IN: distance_combine(CombineFunction cmb)
+IN: distance_combine(CombineFunction cmb)
This function is used to combine distances to compute the distance
of a path. The CombineFunction type must be a model of distance_combine(CombineFunction cmb)
DT=typename property_traits<WeightMap>::value_type
-IN: distance_inf(DT inf)
+IN: distance_inf(DT inf)
This value is used to initialize the distance for each
- vertex before the start of the algorithm.
+ vertex before the start of the algorithm.
The type DT must be the value type of the WeightMap.
-IN: distance_zero(DT zero)
+IN: distance_zero(DT zero)
Default: std::numeric_limits::max()
This value is used to initialize the distance for the source
vertex before the start of the algorithm. The type DT
@@ -163,7 +163,7 @@ IN: distance_zero(DT zero)
Default: 0
-UTIL/OUT: color_map(ColorMap c_map)
+UTIL/OUT: color_map(ColorMap c_map)
This is used during the execution of the algorithm to mark the
vertices. The vertices start out white and become gray when they are
@@ -208,4 +208,4 @@ HREF="bibliography.html#clr90">8
].
-
+
diff --git a/doc/jwebfrob.pl b/doc/jwebfrob.pl
index 81006b33..0ad4d262 100644
--- a/doc/jwebfrob.pl
+++ b/doc/jwebfrob.pl
@@ -38,7 +38,7 @@ while(<>) {
$thispage = $4;
if ($thispage ne $lastpage) {
-
+
$counter = 1;
print $saved_empty;
diff --git a/doc/kamada_kawai_spring_layout.html b/doc/kamada_kawai_spring_layout.html
index 60e4ce06..abc3ce66 100644
--- a/doc/kamada_kawai_spring_layout.html
+++ b/doc/kamada_kawai_spring_layout.html
@@ -2,7 +2,7 @@
+
+
@@ -91,7 +91,7 @@ actors appearing together in a movie is symmetric.
using namespace boost;
- typedef adjacency_list<vecS, vecS, undirectedS,
+ typedef adjacency_list<vecS, vecS, undirectedS,
property<vertex_name_t, string>,
property<edge_name_t, string > >
> Graph;
@@ -149,7 +149,7 @@ descriptor from the map's pos iterator.
- NameVertexMap::iterator pos;
+ NameVertexMap::iterator pos;
bool inserted;
Vertex u, v;
@@ -173,7 +173,7 @@ actor into the graph.
std::string movie_name = *i++;
-
+
boost::tie(pos, inserted) = actors.insert(std::make_pair(*i, Vertex()));
if (inserted) {
v = add_vertex(g);
@@ -185,7 +185,7 @@ actor into the graph.
@@ -85,13 +85,13 @@ indices assigned to each vertex. The King ordering algorithm
works by a local minimization of the i-th bandwidths. The vertices are
basically assigned a breadth-first search order, except that at each
step, the adjacent vertices are placed in the queue in order of
-increasing pseudo-degree, where pseudo-degree is defined as the number of
+increasing pseudo-degree, where pseudo-degree is defined as the number of
outgoing edges with white endpoints (vertices yet to be examined).
@@ -270,7 +270,7 @@ through all the vertices in the graph and use them to index into the
@@ -306,7 +306,7 @@ Steve Martin's bacon number is 1
-
+
-
-
-
+
+
+
graph_traits<Graph>::vertex_iterator i, end;
for (boost::tie(i, end) = vertices(g); i != end; ++i)
- std::cout << actor_name[*i] << "'s bacon number is "
+ std::cout << actor_name[*i] << "'s bacon number is "
<< bacon_number[*i] << std::endl;
@@ -290,7 +290,7 @@ William Shatner's bacon number is 2
Denise Richards's bacon number is 1
Kevin Bacon's bacon number is 0
Patrick Stewart's bacon number is 2
-Steve Martin's bacon number is 1
+Steve Martin's bacon number is 1
...
+
+
@@ -46,7 +46,7 @@
OutputIterator
king_ordering(const IncidenceGraph& g,
typename graph_traits<Graph>::vertex_descriptor s,
- OutputIterator inverse_permutation,
+ OutputIterator inverse_permutation,
ColorMap color, DegreeMap degree, VertexIndexMap index_map);
(2)
@@ -59,12 +59,12 @@
king_ordering(const IncidenceGraph& g, OutputIterator inverse_permutation,
VertexIndexMap index_map);
- template <class VertexListGraph, class OutputIterator,
+ template <class VertexListGraph, class OutputIterator,
class ColorMap, class DegreeMap, class VertexIndexMap>
OutputIterator
- king_ordering(const VertexListGraph& G, OutputIterator inverse_permutation,
+ king_ordering(const VertexListGraph& G, OutputIterator inverse_permutation,
ColorMap color, DegreeMap degree, VertexIndexMap index_map);
-
+
(3)
template <class IncidenceGraph, class OutputIterator,
class ColorMap, class DegreeMap, class VertexIndexMap>
@@ -72,7 +72,7 @@
king_ordering(const IncidenceGraph& g,
std::deque< typename
graph_traits<Graph>::vertex_descriptor > vertex_queue,
- OutputIterator permutation,
+ OutputIterator permutation,
ColorMap color, DegreeMap degree, VertexIndexMap index_map);
-
+
An undirected graph. The graph's type must be a model of IncidenceGraph.
Python: The parameter is named graph.
@@ -133,14 +133,14 @@ For version 1:
The starting vertex.
Python: Unsupported parameter.
-
+
The new vertex ordering. The vertices are written to the output
iterator in their new order.
Python: This parameter is unused in Python. The new vertex
ordering is returned as a Python list.
-
+
Used internally to keep track of the progress of the algorithm
(to avoid visiting the same vertex twice).
@@ -157,13 +157,13 @@ For version 2:
-
+
An undirected graph. The graph's type must be a model of VertexListGraph.
Python: The name of this parameter is graph.
+ OutputIterator permutation  (OUT)
The new vertex ordering. The vertices are written to the
output iterator in their new order.
Python: This parameter is unused in Python. The new vertex
@@ -184,7 +184,7 @@ For version 3:
-
+
An undirected graph. The graph's type must be a model of IncidenceGraph.
Python: The parameter is named graph.
@@ -194,10 +194,10 @@ For version 3:
Python: This parameter is unused in Python. The new vertex
ordering is returned as a Python list.
-
+
The new vertex ordering. The vertices are written to the output
- iterator in their new order.
+ iterator in their new order.
Python: This parameter is unused in Python. The new vertex
ordering is returned as a Python list.
@@ -232,4 +232,4 @@ and degree_property_map in boost/graph/properties.hpp.
-
+
diff --git a/doc/known_problems.html b/doc/known_problems.html
index 9684e510..c236af6e 100644
--- a/doc/known_problems.html
+++ b/doc/known_problems.html
@@ -1,7 +1,7 @@
+
+
@@ -24,7 +24,7 @@
template <class Graph, class OutputIterator, class P, class T, class R>
OutputIterator
-kruskal_minimum_spanning_tree(Graph& g, OutputIterator tree_edges,
+kruskal_minimum_spanning_tree(Graph& g, OutputIterator tree_edges,
const bgl_named_params<P, T, R>& params = all defaults);
@@ -56,15 +56,15 @@ operations (MAKE-SET, FIND-SET, and
-KRUSKAL-MST(G, w)
- T := Ø
- for each vertex u in V
- MAKE-SET(DS, u)
+KRUSKAL-MST(G, w)
+ T := Ø
+ for each vertex u in V
+ MAKE-SET(DS, u)
end for
- for each edge (u,v) in E in order of nondecreasing weight
- if FIND-SET(DS, u) != FIND-SET(DS, v)
- UNION-SET(DS, u, v)
- T := T U {(u,v)}
+ for each edge (u,v) in E in order of nondecreasing weight
+ if FIND-SET(DS, u) != FIND-SET(DS, v)
+ UNION-SET(DS, u, v)
+ T := T U {(u,v)}
end for
return T
@@ -79,7 +79,7 @@ KRUSKAL-MST(G, w)
Parameters
-IN: const Graph& g
+IN: const Graph& g
An undirected graph. The graph type must be a model of
Vertex List Graph
@@ -102,7 +102,7 @@ IN: OutputIterator spanning_tree_edges
Named Parameters
-IN: weight_map(WeightMap w_map)
+IN: weight_map(WeightMap w_map)
The weight or ``length'' of
each edge in the graph. The WeightMap type must be a model
@@ -116,7 +116,7 @@ The weight or ``length'' of
Python default: graph.get_edge_double_map("weight")
-UTIL: rank_map(RankMap r_map)
+UTIL: rank_map(RankMap r_map)
This is used by the disjoint sets data structure.
The type RankMap must be a model of rank_map(RankMap r_map)
Python: Unsupported parameter.
-UTIL: predecessor_map(PredecessorMap p_map)
+UTIL: predecessor_map(PredecessorMap p_map)
This is used by the disjoint sets data structure, and is not
used for storing predecessors in the spanning tree. The predecessors
@@ -153,7 +153,7 @@ UTIL: predecessor_map(PredecessorMap p_map)
Python: Unsupported parameter.
-IN: vertex_index_map(VertexIndexMap i_map)
+IN: vertex_index_map(VertexIndexMap i_map)
This maps each vertex to an integer in the range [0,
num_vertices(g)). This is only necessary if the default is used
@@ -196,4 +196,4 @@ contains an example of using Kruskal's algorithm.
-
+
diff --git a/doc/layout_tolerance.html b/doc/layout_tolerance.html
index e0613ab8..5aa5512f 100644
--- a/doc/layout_tolerance.html
+++ b/doc/layout_tolerance.html
@@ -1,21 +1,21 @@
-

Home Libraries People FAQ More Struct template layout_tolerance
Synopsis
template<typename T = double>
+

Home Libraries People FAQ More Struct template layout_tolerance
Synopsis
template<typename T = double>
struct layout_tolerance {
// construct/copy/destruct
layout_tolerance(const T & = T(0.001));
// public member functions
- template<typename Graph>
- bool operator()(T,
- typename boost::graph_traits< Graph >::vertex_descriptor,
+ template<typename Graph>
+ bool operator()(T,
+ typename boost::graph_traits< Graph >::vertex_descriptor,
const Graph &, bool) ;
-};
Where Defined
boost/graph/kamada_kawai_spring_layout.hpp
diff --git a/doc/leda_conversion.html b/doc/leda_conversion.html
index 58526082..c9e0e325 100644
--- a/doc/leda_conversion.html
+++ b/doc/leda_conversion.html
@@ -1,17 +1,17 @@
+
+
@@ -21,7 +21,7 @@
+
+
@@ -131,7 +131,7 @@ IN: vertex_descriptor entry
IN: IndexMap indexMap
This maps each vertex to an integer in the range [0, num_vertices(g)).
- The type
+ The type
VertexIndexMap must be a model of
Readable Property Map. The value type of the map must be an
integer type. The vertex descriptor type of the graph needs to be
@@ -179,5 +179,5 @@ JongSoo Park, Stanford University
-
+
diff --git a/doc/lgrind.sty b/doc/lgrind.sty
index b5129527..3257be4d 100644
--- a/doc/lgrind.sty
+++ b/doc/lgrind.sty
@@ -5,14 +5,14 @@
%% The original source files were:
%%
%% lgrind.dtx (with options: `package')
-%%
+%%
%% LGrind is used to format source code of different programming
%% languages for LaTeX.
-%%
+%%
%% LGrind is a major adaptation of Jerry Leichter's tgrind for LaTeX,
%% which was a notable improvement upon Van Jacobsen's tgrind for
%% plain TeX, which was adapted from vgrind, a troff prettyprinter.
-%%
+%%
%% Author: Michael Piefel, piefel@cs.tu-berlin.de
%% Based on Van Jacobson's ``tgrindmac'', a macro package for TeX.
%% Modified, 1987 by Jerry Leichter. Put '@' in all internal names.
diff --git a/doc/make_biconnected_planar.html b/doc/make_biconnected_planar.html
index 99195555..f86c06be 100644
--- a/doc/make_biconnected_planar.html
+++ b/doc/make_biconnected_planar.html
@@ -1,17 +1,17 @@
+
+
@@ -26,28 +26,28 @@ void make_biconnected_planar(Graph& g, PlanarEmbedding embedding, EdgeIndexMap e
template <typename Graph, typename Vertex>
void visit_vertex_pair(Vertex u, Vertex v, Graph& g);
This event point can also be used as a hook to update the underlying edge
-index map automatically as edges are added. See the
-documentation for the AddEdgeVisitor
+index map automatically as edges are added. See the
+documentation for the AddEdgeVisitor
concept for more information.
Where Defined
@@ -78,7 +78,7 @@ IN: EdgeIndexMap vm
A Readable Property Map
- that maps edges from g to distinct integers in the range
+ that maps edges from g to distinct integers in the range
[0, num_edges(g) )
@@ -88,14 +88,14 @@ IN: AddEdgeVisitor
Default: get(edge_index,g)
A model of AddEdgeVisitor
.
-Default: default_add_edge_visitor, a class defines
+Default: default_add_edge_visitor, a class defines
visit_vertex_pair to dispatch its calls to add_edge.
Complexity
-On a planar graph with n vertices, make_biconnected_planar
+On a planar graph with n vertices, make_biconnected_planar
runs in time O(n)
Example
@@ -114,4 +114,4 @@ runs in time O(n)
Copyright © 2007 Aaron Windsor (
aaron.windsor@gmail.com)
-
+
diff --git a/doc/make_connected.html b/doc/make_connected.html
index 24d6f524..0f18e10e 100644
--- a/doc/make_connected.html
+++ b/doc/make_connected.html
@@ -1,17 +1,17 @@
+
+
@@ -26,30 +26,30 @@ make_connected(Graph& g, VertexIndexMap vm, AddEdgeVisitor& vis);
template <typename Graph, typename Vertex>
void visit_vertex_pair(Vertex u, Vertex v, Graph& g);
This event point can also be used as a hook to update the underlying edge
-index map automatically as edges are added. See the
-documentation for the AddEdgeVisitor
+index map automatically as edges are added. See the
+documentation for the AddEdgeVisitor
concept for more information.
@@ -75,7 +75,7 @@ IN: VertexIndexMap vm
A Readable Property Map
- that maps vertices from g to distinct integers in the range
+ that maps vertices from g to distinct integers in the range
[0, num_vertices(g) )
@@ -85,7 +85,7 @@ IN: AddEdgeVisitor
Default: get(vertex_index,g)
A model of AddEdgeVisitor
.
@@ -94,7 +94,7 @@ its calls to add_edge.
-Default: default_add_edge_visitor, a class defines
+Default: default_add_edge_visitor, a class defines
visit_vertex_pair to dispatch
its calls to add_edge.
Complexity
-On a graph with n vertices and m edges, make_connected
+On a graph with n vertices and m edges, make_connected
runs in time O(n + m)
Example
@@ -113,4 +113,4 @@ runs in time O(n + m)
Copyright © 2007 Aaron Windsor (
aaron.windsor@gmail.com)
-
+
diff --git a/doc/make_maximal_planar.html b/doc/make_maximal_planar.html
index 523ce721..e635e583 100644
--- a/doc/make_maximal_planar.html
+++ b/doc/make_maximal_planar.html
@@ -1,17 +1,17 @@
+
+
@@ -25,30 +25,30 @@ void make_maximal_planar(Graph& g, PlanarEmbedding embedding, VertexIndexMap vm,
template <typename Graph, typename Vertex>
void visit_vertex_pair(Vertex u, Vertex v, Graph& g);
This event point can also be used as a hook to update the underlying edge
-index map automatically as edges are added. See the
-documentation for the AddEdgeVisitor
+index map automatically as edges are added. See the
+documentation for the AddEdgeVisitor
concept for more information.
Where Defined
@@ -73,7 +73,7 @@ IN: PlanarEmbedding embedding
A Readable Property Map
- that models the PlanarEmbedding
+ that models the PlanarEmbedding
concept.
@@ -81,7 +81,7 @@ IN: VertexIndexMap vm
A Readable Property Map
- that maps vertices from g to distinct integers in the range
+ that maps vertices from g to distinct integers in the range
[0, num_vertices(g) )
@@ -90,7 +90,7 @@ IN: EdgeIndexMap vm
Default: get(vertex_index,g)
A Readable Property Map
- that maps edges from g to distinct integers in the range
+ that maps edges from g to distinct integers in the range
[0, num_edges(g) )
@@ -99,14 +99,14 @@ IN: AddEdgeVisitor vis
Default: get(edge_index,g)
A model of AddEdgeVisitor.
-Default: default_add_edge_visitor, a class defines
+Default: default_add_edge_visitor, a class defines
visit_vertex_pair to dispatch its calls to add_edge.
Complexity
-On a graph with n vertices and m edges,
+On a graph with n vertices and m edges,
make_maximal_planar runs in time O(n + m)
Example
@@ -125,4 +125,4 @@ On a graph with n vertices and m edges,
Copyright © 2007 Aaron Windsor (
aaron.windsor@gmail.com)
-
+
diff --git a/doc/math.sty b/doc/math.sty
index f09b29e7..b5c8c3eb 100644
--- a/doc/math.sty
+++ b/doc/math.sty
@@ -49,7 +49,7 @@
\newcommand{\onlyif}{\Rightarrow}
\newcommand{\thus}{\Longrightarrow}
\newcommand{\contradicts}{\rightarrow\leftarrow}
-\newcommand{\Union}{\bigcup}
+\newcommand{\Union}{\bigcup}
\newcommand{\union}{\cup}
\newcommand{\Intersect}{\bigcap}
\newcommand{\intersect}{\cap}
diff --git a/doc/maximum_adjacency_search.html b/doc/maximum_adjacency_search.html
index 4d3d410b..74aedc62 100644
--- a/doc/maximum_adjacency_search.html
+++ b/doc/maximum_adjacency_search.html
@@ -61,7 +61,7 @@ meets the requirements for a MAS Visitor.
-
+
diff --git a/doc/maximum_matching.html b/doc/maximum_matching.html
index fa54cb04..d0d3adf4 100644
--- a/doc/maximum_matching.html
+++ b/doc/maximum_matching.html
@@ -1,10 +1,10 @@
MAS(G)
- for each vertex u in V
+ for each vertex u in V
reach_count[u] := 0
end for
// for the starting vertex s
@@ -240,9 +240,9 @@ The time complexity is O(E + V).
@@ -266,7 +266,7 @@ Vol 19. Page 55. 1995. Amer Mathematical Society
A linear time 2 + epsilon approximation algorightm for edge connectivity
Notes
-
@@ -82,16 +82,16 @@ The algorithm we use for finding a maximum cardinality matching consists of thre
Algorithms for Creating an Initial Matching
@@ -103,21 +103,21 @@ if it doesn't conflict with the edges already in the matching. This matching is
guaranteed to contain at least half of the edges that a maximum matching has. Takes time O(m log n).
Algorithms for Finding an Augmenting Path
-
@@ -125,34 +125,34 @@ description of the algorithm from [filtered_graph
@@ -175,7 +175,7 @@ in this graph and store the result in num_odd_connected_components.
Assuming these steps are implemented correctly, the verifier will never return a false positive,
and will only return a false negative if edmonds_augmenting_path_finder doesn't compute the
vertex_state map correctly, in which case the edmonds_augmenting_path_finder
-isn't working correctly.
+isn't working correctly.
Creating Your Own Matching Algorithms
@@ -183,24 +183,24 @@ isn't working correctly.
Creating a matching algorithm is as simple as plugging the algorithms described above into a generic
matching function, which has the following signature:
-template <typename Graph,
+template <typename Graph,
typename MateMap,
typename VertexIndexMap,
- template <typename, typename, typename> class AugmentingPathFinder,
+ template <typename, typename, typename> class AugmentingPathFinder,
template <typename, typename> class InitialMatchingFinder,
template <typename, typename, typename> class MatchingVerifier>
bool matching(const Graph& g, MateMap mate, VertexIndexMap vm)
The matching functions provided for you are just inlined specializations of this function:
-edmonds_maximum_cardinality_matching uses edmonds_augmenting_path_finder
-as the AugmentingPathFinder, extra_greedy_matching as the InitialMatchingFinder,
-and no_matching_verifier as the MatchingVerifier.
+edmonds_maximum_cardinality_matching uses edmonds_augmenting_path_finder
+as the AugmentingPathFinder, extra_greedy_matching as the InitialMatchingFinder,
+and no_matching_verifier as the MatchingVerifier.
checked_edmonds_maximum_cardinality_matching uses the same parameters except that
maximum_cardinality_matching_verifier is used for the MatchingVerifier.
-The resulting algorithm will find an extra greedy matching in time O(m log n) without looking for
-augmenting paths. As a bonus, the return value of this function is true if and only if the extra greedy
+The resulting algorithm will find an extra greedy matching in time O(m log n) without looking for
+augmenting paths. As a bonus, the return value of this function is true if and only if the extra greedy
matching happens to be a maximum cardinality matching.
Where Defined
@@ -231,7 +231,7 @@ matching happens to be a maximum cardinality matching.
IN: const Graph& g
-An undirected graph. The graph type must be a model of
+An undirected graph. The graph type must be a model of
Vertex and Edge List Graph and
Incidence Graph.
@@ -251,9 +251,9 @@ vertices to vertices. For any vertex v in the graph, get(mate,v) will b
Complexity
Algorithm Description
-Primal-dual method in linear programming is introduced to solve weighted matching problems. Edmonds proved that for any graph,
+Primal-dual method in linear programming is introduced to solve weighted matching problems. Edmonds proved that for any graph,
the maximum number of edges in a matching is equal to the minimum capacity of an odd-set cover; this further enable us to prove a max-min duality theorem for weighted matching.
Let Hk-1 denote any graph obtained from G by contracting odd sets of three or more nodes and deleting single nodes,
where the capacity of the family of odd sets (not necessarily a cover of G) is k-1. Let Xk denote any matching containing k edges.
@@ -76,7 +76,7 @@ Each edge (i, j) has a weight wij. We have:
-This matching duality theorem gives an indication of how the matching problem should be formulated as a linear programming problem. That is,
+This matching duality theorem gives an indication of how the matching problem should be formulated as a linear programming problem. That is,
the theorem suggests a set of linear inequalities which are satisfied by any matching, and it is anticipated that these inequalities describe a convex polyhedron
with integer vertices corresponding to feasible matchings.
@@ -95,7 +95,7 @@ The outline of the algorithm is as follow:
If an augmenting path is found, go to step 2. If a blossom is formed, go to step 3. Otherwise, go to step 4.
-An undirected graph. The graph type must be a model of
+An undirected graph. The graph type must be a model of
Vertex and Edge List Graph and
Incidence Graph.
The edge property of the graph property_map<Graph, edge_weight_t> must exist and have numeric value type.
@@ -139,8 +139,8 @@ vertices to vertices. For any vertex v in the graph, get(mate,v) will b
Complexity
+
+
@@ -23,14 +23,14 @@
template <class AdjacencyGraph, class OutDegreeMap,
- class InversePermutationMap,
+ class InversePermutationMap,
class PermutationMap, class SuperNodeSizeMap, class VertexIndexMap>
void minimum_degree_ordering
(AdjacencyGraph& G,
OutDegreeMap outdegree,
InversePermutationMap inverse_perm,
- PermutationMap perm,
- SuperNodeSizeMap supernode_size, int delta, VertexIndexMap id)
+ PermutationMap perm,
+ SuperNodeSizeMap supernode_size, int delta, VertexIndexMap id)
perm[old_index[u]] == new_index[u]
@@ -80,7 +80,7 @@ The output of the algorithm are the vertices in the new ordering.
-
with a value type and key type a signed integer.
-
+
A directed graph. The graph's type must be a model of Adjacency Graph,
InversePermutationMap inverse_perm  (OUT)
+
The new vertex ordering, given as the mapping from the
new indices to the old indices (an inverse permutation).
This must be an
- LvaluePropertyMap with a value type and key type a signed integer.
+ LvaluePropertyMap
+
The new vertex ordering, given as the mapping from the
old indices to the new indices (a permutation).
This must be an
- LvaluePropertyMap with a value type and key type a signed integer.
+ LvaluePropertyMap
+
This is used internally to record the size of supernodes and is also
useful information to have. This is a
LvaluePropertyMap with an unsigned integer value type and key
type of vertex descriptor.
-
+
Multiple elimination control variable. If it is larger than or equal
to zero then multiple elimination is enabled. The value of
delta specifies the difference between the minimum degree
and the degree of vertices that are to be eliminated.
-
-
+
+
Used internally to map vertices to their indices. This must be a Readable
Property Map with key type the same as the vertex descriptor of
@@ -155,7 +155,7 @@ An elimination graph Gv is obtained from the
graph G by removing vertex v and all of its incident
edges and by then adding edges to make all of the vertices adjacent to
v into a clique (that is, add an edge between each pair of
-adjacent vertices if an edge doesn't already exist).
+adjacent vertices if an edge doesn't already exist).
Suppose that graph G is the graph representing the nonzero
structure of a matrix A. Then performing a step of Guassian
@@ -175,4 +175,4 @@ elimination on row i of matrix A is equivalent to
-
+
diff --git a/doc/minimum_degree_ordering.w b/doc/minimum_degree_ordering.w
index d231799f..9de5b11d 100644
--- a/doc/minimum_degree_ordering.w
+++ b/doc/minimum_degree_ordering.w
@@ -53,7 +53,7 @@ complete subgraph. That is, it is a subgraph where each vertex is
adjacent to every other vertex in the subgraph}.
-quotient graph
+quotient graph
set of cliques in the graph
@@ -81,7 +81,7 @@ external degree
@d MMD Algorithm Overview @{
@
+
+
@@ -91,4 +91,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/opposite.html b/doc/opposite.html
index cfe10200..e77bbe37 100644
--- a/doc/opposite.html
+++ b/doc/opposite.html
@@ -1,17 +1,17 @@
+
+
@@ -76,4 +76,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/planar_canonical_ordering.html b/doc/planar_canonical_ordering.html
index f79c39e3..1eabba8f 100644
--- a/doc/planar_canonical_ordering.html
+++ b/doc/planar_canonical_ordering.html
@@ -1,17 +1,17 @@
+
+
@@ -22,25 +22,25 @@ void planar_canonical_ordering(const Graph& g, PlanarEmbedding embedding, Ou
-
Let Gk be the graph induced by the first k vertices in
-the canonical ordering, along with all edges between any of the first k
-vertices. After Gk has been drawn, the (k+1)st vertex
-can be drawn easily without edge crossings, since it's adjacent only to a
-consecutive sequence of vertices on the outer face of Gk.
+the canonical ordering, along with all edges between any of the first k
+vertices. After Gk has been drawn, the (k+1)st vertex
+can be drawn easily without edge crossings, since it's adjacent only to a
+consecutive sequence of vertices on the outer face of Gk.
Complexity
If the vertex index map provides constant-time access to indices, this
-function takes time O(n + m) for a planar graph with n vertices
-and m edges. Note that
-in a simple planar graph with f faces, m edges, and n
-vertices, both f and m are O(n).
+function takes time O(n + m) for a planar graph with n vertices
+and m edges. Note that
+in a simple planar graph with f faces, m edges, and n
+vertices, both f and m are O(n).
Where Defined
@@ -80,7 +80,7 @@ vertices, both f and m are O(n).
IN: Graph& g
-An undirected graph. The graph type must be a model of
+An undirected graph. The graph type must be a model of
VertexAndEdgeListGraph.
The graph must:
-IN: PlanarEmbedding
+IN: PlanarEmbedding
@@ -89,7 +89,7 @@ The graph must:
A model of PlanarEmbedding.
@@ -98,7 +98,7 @@ A model of PlanarEmbedding.
IN: OutputIterator
-An OutputIterator with value_type equal to
+An OutputIterator with value_type equal to
graph_traits<Graph>::vertex_descriptor. The canonical ordering
will be written to this iterator.
@@ -107,7 +107,7 @@ IN: VertexIndexMap vm
A Readable Property Map
- that maps vertices from g to distinct integers in the range
+ that maps vertices from g to distinct integers in the range
[0, num_vertices(g) )
@@ -127,5 +127,5 @@ A Readable Property Ma
Default: get(vertex_index,g)
Copyright © 2007 Aaron Windsor (
aaron.windsor@gmail.com)
-
+
diff --git a/doc/planar_face_traversal.html b/doc/planar_face_traversal.html
index 9a93799d..24214c36 100644
--- a/doc/planar_face_traversal.html
+++ b/doc/planar_face_traversal.html
@@ -1,17 +1,17 @@
+
+
@@ -23,17 +23,17 @@ void planar_face_traversal(const Graph& g, PlanarEmbedding embedding, PlanarFace
(1)
template <class Graph, class OutputIterator,
- class ColorMap, class DegreeMap,
+ class ColorMap, class DegreeMap,
class PriorityMap, class Weight>
OutputIterator
sloan_ordering(Graph& g,
typename graph_traits<Graph>::vertex_descriptor s,
typename graph_traits<Graph>::vertex_descriptor e,
- OutputIterator permutation,
- ColorMap color,
- DegreeMap degree,
- PriorityMap priority,
- Weight W1,
+ OutputIterator permutation,
+ ColorMap color,
+ DegreeMap degree,
+ PriorityMap priority,
+ Weight W1,
Weight W2 )
(2)
template <class Graph, class OutputIterator,
- class ColorMap, class DegreeMap,
+ class ColorMap, class DegreeMap,
class PriorityMap, class Weight>
OutputIterator
sloan_ordering(Graph& g,
- OutputIterator permutation,
- ColorMap color,
- DegreeMap degree,
- PriorityMap priority,
- Weight W1,
+ OutputIterator permutation,
+ ColorMap color,
+ DegreeMap degree,
+ PriorityMap priority,
+ Weight W1,
Weight W2 )
(3)
template <class Graph, class OutputIterator,
- class ColorMap, class DegreeMap,
+ class ColorMap, class DegreeMap,
class PriorityMap>
OutputIterator
sloan_ordering(Graph& g,
typename graph_traits<Graph>::vertex_descriptor s,
typename graph_traits<Graph>::vertex_descriptor e,
- OutputIterator permutation,
- ColorMap color,
- DegreeMap degree,
+ OutputIterator permutation,
+ ColorMap color,
+ DegreeMap degree,
PriorityMap priority )
(4)
template <class Graph, class OutputIterator,
- class ColorMap, class DegreeMap,
+ class ColorMap, class DegreeMap,
class PriorityMap>
OutputIterator
sloan_ordering(Graph& g,
- OutputIterator permutation,
- ColorMap color,
- DegreeMap degree,
+ OutputIterator permutation,
+ ColorMap color,
+ DegreeMap degree,
PriorityMap priority )
- std::vector<vertex_descriptor> inv_perm(num_vertices(G));
sloan_ordering(G, inv_perm.rbegin());
- inv_perm[new_index[u]] == u
- for (size_type i = 0; i != inv_perm.size(); ++i)
perm[old_index[inv_perm[i]]] = i;
-Parameters
-For version 1:
+For version 1:
- An undirected graph. The graph's type must be a model of IncidenceGraph.
+ An undirected graph. The graph's type must be a model of IncidenceGraph.
- The starting vertex.
+ The starting vertex.
The ending vertex
The new vertex ordering. The vertices are written to the output iterator in
- their new order.
+ href="http://www.boost.org/sgi/stl/OutputIterator.html">output iterator in
+ their new order.
- Used internally to keep track of the progress of the algorithm (to avoid visiting
- the same vertex twice).
+ Used internally to keep track of the progress of the algorithm (to avoid visiting
+ the same vertex twice).
Used internally to store the priority for renumbering of each vertex.
@@ -144,15 +144,15 @@ For version 1:
- An undirected graph. The graph's type must be a model of IncidenceGraph.
- The new vertex ordering. The vertices are written to the output iterator in
- their new order.
+ The new vertex ordering. The vertices are written to the output iterator in
+ their new order.
- Used internally to keep track of the progress of the algorithm (to avoid visiting
- the same vertex twice).
+ Used internally to keep track of the progress of the algorithm (to avoid visiting
+ the same vertex twice).
Used internally to store the priority for renumbering of each vertex.
@@ -163,19 +163,19 @@ For version 1:
- An undirected graph. The graph's type must be a model of IncidenceGraph.
+ An undirected graph. The graph's type must be a model of IncidenceGraph.
- The starting vertex.
+ The starting vertex.
The ending vertex
- The new vertex ordering. The vertices are written to the output iterator in
- their new order.
+ The new vertex ordering. The vertices are written to the output iterator in
+ their new order.
- Used internally to keep track of the progress of the algorithm (to avoid visiting
- the same vertex twice).
+ Used internally to keep track of the progress of the algorithm (to avoid visiting
+ the same vertex twice).
Used internally to store the priority for renumbering of each vertex.
@@ -184,15 +184,15 @@ For version 1:
- An undirected graph. The graph's type must be a model of IncidenceGraph.
- The new vertex ordering. The vertices are written to the output iterator in
- their new order.
+ The new vertex ordering. The vertices are written to the output iterator in
+ their new order.
- Used internally to keep track of the progress of the algorithm (to avoid visiting
- the same vertex twice).
+ Used internally to keep track of the progress of the algorithm (to avoid visiting
+ the same vertex twice).
Used internally to store the priority for renumbering of each vertex.
@@ -200,25 +200,25 @@ For version 1:
Example
-See example/sloan_ordering.cpp.
+See example/sloan_ordering.cpp.
See Also
-
-
+
diff --git a/doc/sloan_start_end_vertices.htm b/doc/sloan_start_end_vertices.htm
index 1f5ea48f..6561d5cc 100644
--- a/doc/sloan_start_end_vertices.htm
+++ b/doc/sloan_start_end_vertices.htm
@@ -9,9 +9,9 @@
-- http://www.boost.org/LICENSE_1_0.txt)
-->
-
Copyright © 2001-2002
- Marc Wintermantel, ETH Zurich (wintermantel@imes.mavt.ethz.ch)
+ Marc Wintermantel, ETH Zurich (wintermantel@imes.mavt.ethz.ch)
+
sloan_start_end_vertices
Parameters
-For version 1:
+For version 1:
- An undirected graph. The graph's type must be a model of IncidenceGraph.
+ An undirected graph. The graph's type must be a model of IncidenceGraph.
- The starting vertex.
+ The starting vertex.
- Used internally to keep track of the progress of the algorithm (to avoid visiting
- the same vertex twice).
+ Used internally to keep track of the progress of the algorithm (to avoid visiting
+ the same vertex twice).
This must map vertices to their degree. Example
-See example/sloan_ordering.cpp.
+See example/sloan_ordering.cpp.
See Also
-
-
+
diff --git a/doc/small_world_generator.html b/doc/small_world_generator.html
index ed6f1033..e67fd102 100644
--- a/doc/small_world_generator.html
+++ b/doc/small_world_generator.html
@@ -1,11 +1,11 @@
@@ -23,10 +23,10 @@ function address(host, user) {
-
-
Copyright © 2001-2002
- Marc Wintermantel, ETH Zurich(wintermantel@imes.mavt.ethz.ch)
+ Marc Wintermantel, ETH Zurich(wintermantel@imes.mavt.ethz.ch)
+
+
small_world_iterator
@@ -54,7 +54,7 @@ public:
small_world_iterator operator++(int);
bool operator==(const small_world_iterator& other) const;
bool operator!=(const small_world_iterator& other) const;
-};
+};
+
+
sorted_erdos_renyi_iterator
@@ -55,7 +55,7 @@ public:
sorted_erdos_renyi_iterator operator++(int);
bool operator==(const sorted_erdos_renyi_iterator& other) const;
bool operator!=(const sorted_erdos_renyi_iterator& other) const;
-};
+};
-
+
diff --git a/doc/sparse_matrix_ordering.html b/doc/sparse_matrix_ordering.html
index 44a6a1bc..ac157616 100644
--- a/doc/sparse_matrix_ordering.html
+++ b/doc/sparse_matrix_ordering.html
@@ -1,17 +1,17 @@
Copyright © 2005
Jeremiah Willcock, Indiana University ()
-
+
Doug Gregor, Indiana University ()
Andrew Lumsdaine,
Indiana University ()
+
+
@@ -134,24 +134,24 @@ HREF="#fig:ggcl_find_starting_vertex">Figure
namespace boost {
template <class Graph, class Vertex, class Color, class Degree>
- Vertex
+ Vertex
pseudo_peripheral_pair(Graph& G, const Vertex& u, int& ecc,
Color color, Degree degree)
{
typename property_traits<Color>::value_type c = get(color, u);
rcm_queue<Vertex, Degree> Q(degree);
-
+
typename boost::graph_traits<Graph>::vertex_iterator ui, ui_end;
for (boost::tie(ui, ui_end) = vertices(G); ui != ui_end; ++ui)
put(color, *ui, white(c));
breadth_first_search(G, u, Q, bfs_visitor<>(), color);
- ecc = Q.eccentricity();
+ ecc = Q.eccentricity();
return Q.spouse();
}
-
- template <class Graph, class Vertex, class Color, class Degree>
+
+ template <class Graph, class Vertex, class Color, class Degree>
Vertex find_starting_node(Graph& G, Vertex r, Color c, Degree d) {
int eccen_r, eccen_x;
Vertex x = pseudo_peripheral_pair(G, r, eccen_r, c, d);
@@ -196,12 +196,12 @@ from BGL can be reused.
- template < class Graph, class Vertex, class OutputIterator,
+ template < class Graph, class Vertex, class OutputIterator,
class Color, class Degree >
- inline void
- cuthill_mckee_ordering(Graph& G,
+ inline void
+ cuthill_mckee_ordering(Graph& G,
Vertex s,
- OutputIterator inverse_permutation,
+ OutputIterator inverse_permutation,
Color color, Degree degree)
{
typedef typename property_traits<Degree>::value_type DS;
@@ -212,12 +212,12 @@ from BGL can be reused.
typedef cuthill_mckee_visitor<OutputIterator> CMVisitor;
CMVisitor cm_visitor(inverse_permutation);
-
+
typename boost::graph_traits<Graph>::vertex_iterator ui, ui_end;
for (boost::tie(ui, ui_end) = vertices(G); ui != ui_end; ++ui)
put(color, *ui, white(c));
breadth_first_search(G, s, Q, cm_visitor, color);
- }
+ }
+
+
@@ -455,4 +455,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/stoer_wagner_min_cut.html b/doc/stoer_wagner_min_cut.html
index ddd86278..344f488d 100644
--- a/doc/stoer_wagner_min_cut.html
+++ b/doc/stoer_wagner_min_cut.html
@@ -10,7 +10,7 @@
+
stoer_wagner_min_cut
@@ -67,7 +67,7 @@ stoer_wagner_min_cut(const UndirectedGraph& g, WeightMap weights,
-
+
diff --git a/doc/strong_components.w b/doc/strong_components.w
index 503f4fed..bc96bb02 100644
--- a/doc/strong_components.w
+++ b/doc/strong_components.w
@@ -40,7 +40,7 @@ have a common ancestor in $F$. Also, if $u$ is the common ancestor of
$u$ and $v$ with the latest discover time then $w$ is also in the same
SCC as $u$ and $v$.
-Proof.
+Proof.
If there is a path from $v$ to $w$ and if they are in different DFS
trees, then the discover time for $w$ must be earlier than for $v$.
@@ -76,13 +76,13 @@ following cases:
$u$ in the DFS tree and therefore we have a cycle and $u$ must be in
a SCC with $a$. We then set $root[u] = a$ and continue our way back up
the DFS.
-
+
\item If $a = u$ then we know that $u$ must be the topmost vertex of a
subtree that defines a SCC. All of the vertices in this subtree are
further down on the stack than vertex $u$ so we pop the vertices off
of the stack until we reach $u$ and mark each one as being in the
same component.
-
+
\item If $d[a] > d[u]$ then the adjacent vertices are in different
strongly connected components. We continue our way back up the
DFS.
diff --git a/doc/successive_shortest_path_nonnegative_weights.html b/doc/successive_shortest_path_nonnegative_weights.html
index 434eabbb..b895018e 100644
--- a/doc/successive_shortest_path_nonnegative_weights.html
+++ b/doc/successive_shortest_path_nonnegative_weights.html
@@ -1,17 +1,17 @@
Expert Parameters
-
This maps each vertex to an integer in the range [0, num_vertices(g)). This
is only necessary if the default is used for the assignment, index-in-heap, or distance maps.
@@ -92,7 +92,7 @@ stoer_wagner_min_cut(const UndirectedGraph& g, WeightMap weights,
MaxPriorityQueue must be a model of Keyed Updatable Queue
and a max-Updatable Priority Queue.
- The value type must be the graph's vertex descriptor and the key type must be
+ The value type must be the graph's vertex descriptor and the key type must be
the weight type.
Default: A boost::d_ary_heap_indirect using a default index-in-heap
and distance map.
diff --git a/doc/straight_line_drawing.html b/doc/straight_line_drawing.html
index d54e6e71..66c87a29 100644
--- a/doc/straight_line_drawing.html
+++ b/doc/straight_line_drawing.html
@@ -1,17 +1,17 @@
+
+
@@ -19,13 +19,13 @@
-template<typename Graph,
- typename PlanarEmbedding,
- typename ForwardIterator,
+template<typename Graph,
+ typename PlanarEmbedding,
+ typename ForwardIterator,
typename PositionMap,
typename VertexIndexMap>
-void chrobak_payne_straight_line_drawing(const Graph& g,
- PlanarEmbedding perm,
+void chrobak_payne_straight_line_drawing(const Graph& g,
+ PlanarEmbedding perm,
ForwardIterator ordering_begin,
ForwardIterator ordering_end,
PositionMap drawing,
@@ -36,14 +36,14 @@ void chrobak_payne_straight_line_drawing(const Graph& g,
Complexity
If the vertex index map provides constant-time access to indices, this
-function takes time O(n + m) for a planar graph with n vertices
-and m edges. Note that
-in a simple planar graph with f faces, m edges, and n
-vertices, both f and m are O(n).
+function takes time O(n + m) for a planar graph with n vertices
+and m edges. Note that
+in a simple planar graph with f faces, m edges, and n
+vertices, both f and m are O(n).
Where Defined
@@ -96,26 +96,26 @@ IN PlanarEmbedding embedding
A Readable Property Map
- that models the PlanarEmbedding
+ that models the PlanarEmbedding
concept.
IN ForwardIterator
-A ForwardIterator that has value_type equal to
+A ForwardIterator that has value_type equal to
graph_traits<Graph>::vertex_descriptor.
-OUT: PositionMap
+OUT: PositionMap
-A Writable LValue Property
+A Writable LValue Property
Map that models the Position Map concept. The Position Map concept requires
that the value mapped to be an object that has members x and
y. For example, if p models PositionMap and v
is a vertex in the graph, p[v].x and p[v].y are valid
-expressions. The type of x and y must be implicitly
+expressions. The type of x and y must be implicitly
convertable to std::size_t.
@@ -123,7 +123,7 @@ IN: VertexIndexMap vm
A Readable Property Map
- that maps vertices from g to distinct integers in the range
+ that maps vertices from g to distinct integers in the range
[0, num_vertices(g) )
@@ -151,4 +151,4 @@ A Readable Property Ma
Copyright © 2007 Aaron Windsor (
aaron.windsor@gmail.com)
-
+
diff --git a/doc/strong_components.html b/doc/strong_components.html
index 39c0cc52..b97b7830 100644
--- a/doc/strong_components.html
+++ b/doc/strong_components.html
@@ -1,17 +1,17 @@
Default: get(vertex_index,g)
+
+
@@ -198,4 +198,4 @@ href="../example/strong_components.cpp">examples/strong_components.cpp<
+
+
@@ -23,34 +23,34 @@
// named parameter version
template <class Graph, class P, class T, class R>
void successive_shortest_path_nonnegative_weights(
- Graph &g,
- typename graph_traits<Graph>::vertex_descriptor s,
+ Graph &g,
+ typename graph_traits<Graph>::vertex_descriptor s,
typename graph_traits<Graph>::vertex_descriptor t,
const bgl_named_params<P, T, R> & params = all defaults)
// non-named parameter version
template <class Graph, class Capacity, class ResidualCapacity, class Reversed, class Pred, class Weight, class Distance, class Distance2, class VertexIndex>
void successive_shortest_path_nonnegative_weights(
- const Graph & g,
- typename graph_traits<Graph>::vertex_descriptor s,
+ const Graph & g,
+ typename graph_traits<Graph>::vertex_descriptor s,
typename graph_traits<Graph>::vertex_descriptor t,
Capacity capacity,
ResidualCapacity residual_capacity,
- Weight weight,
+ Weight weight,
Reversed rev,
VertexIndex index,
- Pred pred,
+ Pred pred,
Distance distance,
- Distance2 distance_prev)
+ Distance2 distance_prev)
The source vertex for the flow network graph.
-
+
IN: vertex_descriptor t
The sink vertex for the flow network graph.
-
+
Named Parameters
@@ -115,7 +115,7 @@ IN: capacity_map(CapacityEdgeMap cap)
key type of the map must be the graph's edge descriptor type.
Default: get(edge_capacity, g)
-
+
OUT: residual_capacity_map(ResidualCapacityEdgeMap res)
This maps edges to their residual capacity. The type must be a model
@@ -136,11 +136,11 @@ IN: reverse_edge_map(ReverseEdgeMap rev)
Default: get(edge_reverse, g)
-IN: weight_map(WeightMap w_map)
+IN: weight_map(WeightMap w_map)
The weight or ``cost'' of each edge in the graph. The weights
must all be non-negative, and the algorithm will throw a
- negative_edge
+ negative_edge
exception if one of the edges is negative.
The type WeightMap must be a model of
Readable Property Map. The edge descriptor type of
@@ -166,7 +166,7 @@ UTIL: predecessor_map(PredEdgeMap pred)
using the i_map for the index map.
-UTIL: distance_map(DistanceMap d_map)
+UTIL: distance_map(DistanceMap d_map)
The shortest path weight from the source vertex s to each
vertex in the graph g is recorded in this property map. The
@@ -174,7 +174,7 @@ UTIL: distance_map(DistanceMap d_map)
shortest path. The type DistanceMap must be a model of Read/Write
Property Map. The vertex descriptor type of the graph needs to
- be usable as the key type of the distance map.
+ be usable as the key type of the distance map.
Default:
@@ -185,13 +185,13 @@ UTIL: distance_map(DistanceMap d_map)
-UTIL: distance_map2(DistanceMap2 d_map2)
+UTIL: distance_map2(DistanceMap2 d_map2)
The shortest path computation in iteration nr k uses distances computed in iteration k.
The type DistanceMap2 must be a model of Read/Write
Property Map. The vertex descriptor type of the graph needs to
- be usable as the key type of the distance map.
+ be usable as the key type of the distance map.
Default:
@@ -220,7 +220,7 @@ IN: vertex_index_map(VertexIndexMap i_map)
IN: CapacityMap capacity
Complexity
-In the integer capacity case, if U is the value of the max flow, then the complexity is O(U * (|E| + |V|*log|V|)),
+In the integer capacity case, if U is the value of the max flow, then the complexity is O(U * (|E| + |V|*log|V|)),
where O(|E| + |V|*log|V|) is the complexity of the dijkstra algorithm and U is upper bound on number of iteration.
In many real world cases number of iterations is much smaller than U.
@@ -244,7 +244,7 @@ Piotr Wygocki, University of Warsaw (wygos a
-
+
+
+
@@ -193,7 +193,7 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
+
+
@@ -153,4 +153,4 @@ The output is:
-
+
diff --git a/doc/topology.html b/doc/topology.html
index 2eefd237..a2abbd29 100644
--- a/doc/topology.html
+++ b/doc/topology.html
@@ -1,7 +1,7 @@
+
+
@@ -66,7 +66,7 @@ IN: const Graph& g
OUT: GraphTC& tc
A directed graph, where the GraphTC type must model the
- Vertex Mutable Graph
+ Vertex Mutable Graph
and Edge Mutable Graph concepts.
+
Python: This parameter is not used in Python. Instead, a new
@@ -221,4 +221,4 @@ component of u to any of the vertices in the component of
-
+
diff --git a/doc/transitive_closure.w b/doc/transitive_closure.w
index 136eab68..9e214b3e 100644
--- a/doc/transitive_closure.w
+++ b/doc/transitive_closure.w
@@ -97,7 +97,7 @@ void transitive_closure(const Graph& g, GraphTC& tc)
typedef typename graph_traits
+
+
transpose_graph
-template <class VertexListGraph, class MutableGraph>
+template <class VertexListGraph, class MutableGraph>
void transpose_graph(const VertexListGraph& G, MutableGraph& G_T,
const bgl_named_params<P, T, R>& params = all defaults)
@@ -124,4 +124,4 @@ The time complexity is O(V + E).
-
+
diff --git a/doc/trouble_shooting.html b/doc/trouble_shooting.html
index fe20679c..b9108ff7 100644
--- a/doc/trouble_shooting.html
+++ b/doc/trouble_shooting.html
@@ -1,17 +1,17 @@
+
+
@@ -31,7 +31,7 @@ template instantiation depth. Passing the flag
-error C2784: 'T __cdecl source(struct std::pair
@@ -44,7 +44,7 @@ using the boost:: prefix, i.e., boost::source(e, g) instead of
../../..\boost/property_map.hpp(283) : error C2678: binary '[' : no operator defined
which takes a left-hand operand of type 'const struct boost::adj_list_edge_property_map
@@ -126,4 +126,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/undirected_dfs.html b/doc/undirected_dfs.html
index fe81aced..5bbda9de 100644
--- a/doc/undirected_dfs.html
+++ b/doc/undirected_dfs.html
@@ -1,17 +1,17 @@
+
+
@@ -90,36 +90,36 @@ be used to do this.
DFS(G)
- for each vertex u in V
+ for each vertex u in V
vcolor[u] := WHITE
- p[u] := u
+ p[u] := u
end for
- for each edge e in E
+ for each edge e in E
ecolor[u] := WHITE
end for
time := 0
if there is a starting vertex s
call DFS-VISIT(G, s)
- for each vertex u in V
+ for each vertex u in V
if vcolor[u] = WHITE
call DFS-VISIT(G, u)
end for
return (p,d_time,f_time)
-DFS-VISIT(G, u)
+DFS-VISIT(G, u)
vcolor[u] := GRAY
- d_time[u] := time := time + 1
- for each e in Out[u]
+ d_time[u] := time := time + 1
+ for each e in Out[u]
var ec := ecolor[e]
ecolor[e] := BLACK
if (vcolor[v] = WHITE)
- p[v] := u
+ p[v] := u
call DFS-VISIT(G, v)
else if (vcolor[v] = GRAY and ec = WHITE)
...
...
end for
vcolor[u] := BLACK
- f_time[u] := time := time + 1
+ f_time[u] := time := time + 1
@@ -178,7 +178,7 @@ IN: Graph& g
Vertex List Graph,
and Edge List Graph.
-
+
diff --git a/doc/users.html b/doc/users.html
index 5c154f28..7cbdda97 100644
--- a/doc/users.html
+++ b/doc/users.html
@@ -1,16 +1,16 @@
- Python: The parameter is named graph.
+ Python: The parameter is named graph.
@@ -280,22 +280,22 @@ The time complexity is O(E + V).
Notes
-
+
+
Boost Graph Library Users
diff --git a/doc/using_adjacency_list.html b/doc/using_adjacency_list.html
index 1d3de094..45772144 100644
--- a/doc/using_adjacency_list.html
+++ b/doc/using_adjacency_list.html
@@ -1,17 +1,17 @@
+
+
@@ -134,11 +134,11 @@ out-edges for the whole graph.
vertex()
This operation is constant time for vecS and for
-listS.
+listS.
-
+
@@ -163,7 +163,7 @@ then use the setS or hash_setS selectors. If you
want to represent a multi-graph, or know that you will not be
inserting parallel edges into the graph, then choose one of the Sequence
-types: vecS, listS, or slistS.
+types: vecS, listS, or slistS.
You will also want to take into account the differences in time and space
complexity for the various graph operations. Below we use V for
the total number of vertices in the graph and E for the total
@@ -194,7 +194,7 @@ vertex is V (unless it is a multi-graph). For sparse graphs
considered a constant.
Directed and Undirected Adjacency Lists
@@ -344,16 +344,16 @@ parameters VertexProperty and EdgeProperty of the
adjacency_list class are meant to be filled by these interior
properties.
-
- typedef property<vertex_distance_t, float,
+ typedef property<vertex_distance_t, float,
property<vertex_name_t, std::string> > VertexProperty;
typedef property<edge_weight_t, float> EdgeProperty;
- typedef adjacency_list<mapS, vecS, undirectedS,
+ typedef adjacency_list<mapS, vecS, undirectedS,
VertexProperty, EdgeProperty> Graph;
Graph g(num_vertices); // construct a graph object
@@ -464,7 +464,7 @@ struct flow_t {
typedef edge_property_tag kind;
};
-struct capacity_t {
+struct capacity_t {
typedef edge_property_tag kind;
};
@@ -545,28 +545,28 @@ owes who''.
typedef property<first_name_t, std::string> FirstNameProperty;
- typedef adjacency_list<vecS, vecS, directedS,
+ typedef adjacency_list<vecS, vecS, directedS,
FirstNameProperty> MyGraphType;
typedef pair<int,int> Pair;
- Pair edge_array[11] = { Pair(0,1), Pair(0,2), Pair(0,3),
- Pair(0,4), Pair(2,0), Pair(3,0),
- Pair(2,4), Pair(3,1), Pair(3,4),
+ Pair edge_array[11] = { Pair(0,1), Pair(0,2), Pair(0,3),
+ Pair(0,4), Pair(2,0), Pair(3,0),
+ Pair(2,4), Pair(3,1), Pair(3,4),
Pair(4,0), Pair(4,1) };
-
+
MyGraphType G(5);
for (int i = 0; i < 11; ++i)
add_edge(edge_array[i].first, edge_array[i].second, G);
property_map<MyGraphType, first_name_t>::type
name = get(first_name_t(), G);
-
+
boost::put(name, 0, "Jeremy");
boost::put(name, 1, "Rich");
boost::put(name, 2, "Andrew");
boost::put(name, 3, "Jeff");
name[4] = "Kinis"; // you can use operator[] too
-
+
who_owes_who(edges(G).first, edges(G).second, G);
@@ -589,7 +589,7 @@ other property value types.
void who_owes_who(EdgeIter first, EdgeIter last, const Graph& G)
{
// Access the propety acessor type for this graph
- typedef typename property_map<Graph,
+ typedef typename property_map<Graph,
first_name_t>::const_type NameMap;
NameMap name = get(first_name, G);
@@ -601,7 +601,7 @@ other property value types.
while (first != last) {
src_name = boost::get(name, source(*first, G));
targ_name = boost::get(name, target(*first, G));
- cout << src_name << " owes "
+ cout << src_name << " owes "
<< targ_name << " some money" << endl;
++first;
}
@@ -712,8 +712,8 @@ to be used with the std::list.
};
}
- // now you can define a graph using std::list
- // and a specific allocator
+ // now you can define a graph using std::list
+ // and a specific allocator
typedef adjacency_list< list_with_allocatorS< std::allocator<int> >, vecS, directedS> MyGraph;
@@ -769,7 +769,7 @@ href="http://www.boost.org/sgi/stl/AssociativeContainer.html">AssociativeContain
template <>
- struct parallel_edge_traits<custom_containerS> {
+ struct parallel_edge_traits<custom_containerS> {
typedef allow_parallel_edge_tag type;
};
@@ -784,4 +784,4 @@ href="http://www.boost.org/sgi/stl/AssociativeContainer.html">AssociativeContain
-
+
diff --git a/doc/using_property_maps.html b/doc/using_property_maps.html
index 661e66e0..80da3e62 100644
--- a/doc/using_property_maps.html
+++ b/doc/using_property_maps.html
@@ -1,17 +1,17 @@
+
+
@@ -59,10 +59,10 @@ function then returns the property value for the vertex.
template <class Edge, class Graph,
- class WeightPropertyMap,
+ class WeightPropertyMap,
class DistancePropertyMap>
- bool relax(Edge e, const Graph& g,
- WeightPropertyMap weight,
+ bool relax(Edge e, const Graph& g,
+ WeightPropertyMap weight,
DistancePropertyMap distance)
{
typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
@@ -107,14 +107,14 @@ variables of the distance property type.
- dijkstra_shortest_paths(g, src,
+ dijkstra_shortest_paths(g, src,
distance_map(get(vertex_distance, g)).
weight_map(get(edge_weight, g)).
color_map(get(vertex_color, g)).
@@ -240,7 +240,7 @@ the flow and capacity values.
- typedef adjacency_list<vecS, vecS, bidirectionalS,
+ typedef adjacency_list<vecS, vecS, bidirectionalS,
no_property, property<edge_index_t, std::size_t> > Graph;
const int num_vertices = 9;
@@ -258,8 +258,8 @@ the flow and capacity values.
EdgeID_Map edge_id = get(edge_index, G);
iterator_property_map
- <int*, int, int&, EdgeID_Map>
- capacity(capacity_array, edge_id),
+ <int*, int, int&, EdgeID_Map>
+ capacity(capacity_array, edge_id),
flow(flow_array, edge_id);
print_network(G, capacity, flow);
@@ -337,7 +337,7 @@ int main(int,char*[])
// An array of vertex name properties
std::string names[] = { "San Jose", "San Francisco", "San Jose",
- "San Francisco", "Los Angeles", "San Diego",
+ "San Francisco", "Los Angeles", "San Diego",
"Fresno", "Los Vegas", "Reno", "Sacramento",
"Salt Lake City", "Pheonix" };
@@ -359,7 +359,7 @@ int main(int,char*[])
cout << endl;
// Get the source vertex
- boost::graph_traits<Graph>::vertex_descriptor
+ boost::graph_traits<Graph>::vertex_descriptor
s = vertex(SanJose, G);
cout << "*** Breadth First ***" << endl;
@@ -414,12 +414,12 @@ since we plan on implementing the at() function.
class iterator_map
{
public:
- typedef typename boost::property_traits<IDMap>::key_type key_type;
+ typedef typename boost::property_traits<IDMap>::key_type key_type;
typedef typename std::iterator_traits<Iterator>::value_type value_type;
typedef boost::lvalue_property_map_tag category;
- iterator_map(Iterator i = Iterator(),
- const IDMap& id = IDMap())
+ iterator_map(Iterator i = Iterator(),
+ const IDMap& id = IDMap())
: m_iter(i), m_id(id) { }
Iterator m_iter;
IDMap m_id;
@@ -477,4 +477,4 @@ previous section.
-
+
diff --git a/doc/vf2_sub_graph_iso.html b/doc/vf2_sub_graph_iso.html
index 41b32e16..66fc766c 100644
--- a/doc/vf2_sub_graph_iso.html
+++ b/doc/vf2_sub_graph_iso.html
@@ -1,8 +1,8 @@
+
+
@@ -60,4 +60,4 @@ HREF="mailto:lums@osl.iu.edu">lums@osl.iu.edu)
-
+
diff --git a/doc/wavefront.htm b/doc/wavefront.htm
index bfc0928e..f6a3b651 100644
--- a/doc/wavefront.htm
+++ b/doc/wavefront.htm
@@ -10,7 +10,7 @@
-->
-
ith_wavefront
(1)
@@ -23,8 +23,8 @@
Defined in
-boost/graph/wavefront.hpp
+boost/graph/wavefront.hpp
max_wavefront
@@ -36,8 +36,8 @@ href="http://www.boost.org/boost/graph/wavefront.hpp">boost/graph/wavefront.
Calculates the maximum wavefront a graph.
Defined in
-
aver_wavefront
@@ -46,12 +46,12 @@ href="http://www.boost.org/boost/graph/wavefront.hpp">boost/graph/wavefront.
(2)
template <typename Graph, typename VertexIndexMap>
typename graph_traits<Graph>::vertices_size_type
aver_wavefront(const Graph& g, VertexIndexMap index)
-Calculates the average wavefront of a graph (sum of all wavefronts devided by
+Calculates the average wavefront of a graph (sum of all wavefronts devided by
the number ob vertices).
Defined in
-boost/graph/wavefront.hpp
+boost/graph/wavefront.hpp
@@ -64,15 +64,15 @@ href="http://www.boost.org/boost/graph/wavefront.hpp">boost/graph/wavefront.
Calculates the root mean square of all wavefronts.
Defined in
-boost/graph/wavefront.hpp
+boost/graph/wavefront.hpp
diff --git a/doc/write_dimacs.html b/doc/write_dimacs.html
index 9a6e8066..f10af48a 100644
--- a/doc/write_dimacs.html
+++ b/doc/write_dimacs.html
@@ -35,10 +35,10 @@
Copyright © 2001-2002
- Marc Wintermantel, ETH Zurich(wintermantel@imes.mavt.ethz.ch)
+ Marc Wintermantel, ETH Zurich(wintermantel@imes.mavt.ethz.ch)
+
+
@@ -50,7 +50,7 @@
//outputs a graph with including edge_capacity properties to an std::ostream
template < typename Graph, typename CapacityMap, typename IndexMap >
void write_dimacs_max_flow(Graph& g,
- CapacityMap capacity,
+ CapacityMap capacity,
IndexMap idx,
typename graph_traits
Where Defined
@@ -72,25 +72,25 @@ The output can be read in again using the VertexListGraph and EdgeListGraph, as num_vertices(Graph) and num_edges(Graph) is used inside. [1]
-
A property map that models Readable Property Map whose key type is the edge descriptor of the graph and whose value type can be written to a stream.
+
IN: IndexMap epw
-
A property map that models Readable Property Map whose key type is the vertex descriptor of the graph and whose value type can be written to a stream.
-
+
OUT: std::ostream& out
A standard std::ostream object.
-
+
-Example
+Example
A short example which uses read_dimacs and write_dimacs is located in the examples directory.
@@ -101,4 +101,4 @@ A short example which uses rea
Notes
[1] As num_edges() and num_vertices() is used inside which returns values for the unfiltered graph (instead of the filtered), this method cannot be used with a filtered_graphSee filtered_graph Note [2] for the reason.
-
+
diff --git a/doc/write_graphml.rst b/doc/write_graphml.rst
index 00e68b7d..ec229ae0 100644
--- a/doc/write_graphml.rst
+++ b/doc/write_graphml.rst
@@ -3,11 +3,11 @@
============================
.. Copyright (C) 2006 Tiago de Paula Peixoto
#include