Author: alai04 Date: Mon Mar 30 07:58:04 2009 New Revision: 228 Added: trunk/libs/graph/doc/TSPTourVisitor.html trunk/libs/graph/doc/edmonds_karp_max_flow.html trunk/libs/graph/doc/metric_tsp_approx.html trunk/libs/graph/doc/r_c_shortest_paths.html trunk/libs/graph/doc/tsp_tour_len_visitor.html trunk/libs/graph/doc/tsp_tour_visitor.html Removed: trunk/libs/graph/doc/edmunds_karp_max_flow.html Modified: trunk/libs/filesystem/doc/portability_guide.htm trunk/libs/graph/doc/AStarHeuristic.html trunk/libs/graph/doc/AStarVisitor.html trunk/libs/graph/doc/AddEdgeVisitor.html trunk/libs/graph/doc/AdjacencyGraph.html trunk/libs/graph/doc/AdjacencyMatrix.html trunk/libs/graph/doc/BFSVisitor.html trunk/libs/graph/doc/BasicMatrix.html trunk/libs/graph/doc/BellmanFordVisitor.html trunk/libs/graph/doc/BidirectionalGraph.html trunk/libs/graph/doc/Buffer.html trunk/libs/graph/doc/ColorValue.html trunk/libs/graph/doc/DFSVisitor.html trunk/libs/graph/doc/DijkstraVisitor.html trunk/libs/graph/doc/EdgeListGraph.html trunk/libs/graph/doc/EdgeMutableGraph.html trunk/libs/graph/doc/EventVisitor.html trunk/libs/graph/doc/EventVisitorList.html trunk/libs/graph/doc/Graph.html trunk/libs/graph/doc/IncidenceGraph.html trunk/libs/graph/doc/IteratorConstructibleGraph.html trunk/libs/graph/doc/Monoid.html trunk/libs/graph/doc/MutableGraph.html trunk/libs/graph/doc/MutablePropertyGraph.html trunk/libs/graph/doc/PlanarEmbedding.html trunk/libs/graph/doc/PlanarFaceVisitor.html trunk/libs/graph/doc/PropertyGraph.html trunk/libs/graph/doc/PropertyTag.html trunk/libs/graph/doc/VertexAndEdgeListGraph.html trunk/libs/graph/doc/VertexListGraph.html trunk/libs/graph/doc/VertexMutableGraph.html trunk/libs/graph/doc/acknowledgements.html trunk/libs/graph/doc/adjacency_iterator.html trunk/libs/graph/doc/adjacency_list.html trunk/libs/graph/doc/adjacency_list_traits.html trunk/libs/graph/doc/adjacency_matrix.html trunk/libs/graph/doc/astar_heuristic.html trunk/libs/graph/doc/astar_search.html trunk/libs/graph/doc/astar_visitor.html trunk/libs/graph/doc/bandwidth.html trunk/libs/graph/doc/bc_clustering.html trunk/libs/graph/doc/bellman_ford_shortest.html trunk/libs/graph/doc/bellman_visitor.html trunk/libs/graph/doc/betweenness_centrality.html trunk/libs/graph/doc/bfs_visitor.html trunk/libs/graph/doc/bgl_named_params.html trunk/libs/graph/doc/bibliography.html trunk/libs/graph/doc/biconnected_components.html trunk/libs/graph/doc/boyer_myrvold.html trunk/libs/graph/doc/breadth_first_search.html trunk/libs/graph/doc/breadth_first_visit.html trunk/libs/graph/doc/bundles.html trunk/libs/graph/doc/challenge.html trunk/libs/graph/doc/circle_layout.html trunk/libs/graph/doc/compressed_sparse_row.html trunk/libs/graph/doc/connected_components.html trunk/libs/graph/doc/constructing_algorithms.html trunk/libs/graph/doc/copy_graph.html trunk/libs/graph/doc/cuthill_mckee_ordering.html trunk/libs/graph/doc/dag_shortest_paths.html trunk/libs/graph/doc/depth_first_search.html trunk/libs/graph/doc/depth_first_visit.html trunk/libs/graph/doc/dfs_visitor.html trunk/libs/graph/doc/dijkstra_shortest_paths.html trunk/libs/graph/doc/dijkstra_visitor.html trunk/libs/graph/doc/distance_recorder.html trunk/libs/graph/doc/edge_list.html trunk/libs/graph/doc/erdos_renyi_generator.html trunk/libs/graph/doc/exception.html trunk/libs/graph/doc/faq.html trunk/libs/graph/doc/file_dependency_example.html trunk/libs/graph/doc/filtered_graph.html trunk/libs/graph/doc/floyd_warshall_shortest.html trunk/libs/graph/doc/fruchterman_reingold.html trunk/libs/graph/doc/graph_coloring.html trunk/libs/graph/doc/graph_concepts.html trunk/libs/graph/doc/graph_traits.html trunk/libs/graph/doc/gursoy_atun_layout.html trunk/libs/graph/doc/howard_cycle_ratio.html trunk/libs/graph/doc/incident.html trunk/libs/graph/doc/incremental_components.html trunk/libs/graph/doc/inv_adjacency_iterator.html trunk/libs/graph/doc/is_kuratowski_subgraph.html trunk/libs/graph/doc/is_straight_line_drawing.html trunk/libs/graph/doc/isomorphism.html trunk/libs/graph/doc/johnson_all_pairs_shortest.html trunk/libs/graph/doc/kamada_kawai_spring_layout.html trunk/libs/graph/doc/kevin_bacon.html trunk/libs/graph/doc/king_ordering.html trunk/libs/graph/doc/known_problems.html trunk/libs/graph/doc/kolmogorov_max_flow.html trunk/libs/graph/doc/kruskal_min_spanning_tree.html trunk/libs/graph/doc/layout_tolerance.html trunk/libs/graph/doc/leda_conversion.html trunk/libs/graph/doc/lengauer_tarjan_dominator.htm trunk/libs/graph/doc/make_biconnected_planar.html trunk/libs/graph/doc/make_connected.html trunk/libs/graph/doc/make_maximal_planar.html trunk/libs/graph/doc/maximum_matching.html trunk/libs/graph/doc/minimum_degree_ordering.html trunk/libs/graph/doc/null_visitor.html trunk/libs/graph/doc/opposite.html trunk/libs/graph/doc/planar_canonical_ordering.html trunk/libs/graph/doc/planar_face_traversal.html trunk/libs/graph/doc/planar_graphs.html trunk/libs/graph/doc/plod_generator.html trunk/libs/graph/doc/predecessor_recorder.html trunk/libs/graph/doc/prim_minimum_spanning_tree.html trunk/libs/graph/doc/profile.htm trunk/libs/graph/doc/property.html trunk/libs/graph/doc/property_map.html trunk/libs/graph/doc/property_writer.html trunk/libs/graph/doc/publications.html trunk/libs/graph/doc/push_relabel_max_flow.html trunk/libs/graph/doc/python.html trunk/libs/graph/doc/random.html trunk/libs/graph/doc/random_layout.html trunk/libs/graph/doc/read_dimacs.html trunk/libs/graph/doc/read_graphml.html trunk/libs/graph/doc/read_graphviz.html trunk/libs/graph/doc/reverse_graph.html trunk/libs/graph/doc/sequential_vertex_coloring.html trunk/libs/graph/doc/sloan_ordering.htm trunk/libs/graph/doc/sloan_start_end_vertices.htm trunk/libs/graph/doc/small_world_generator.html trunk/libs/graph/doc/sorted_erdos_renyi_gen.html trunk/libs/graph/doc/sparse_matrix_ordering.html trunk/libs/graph/doc/stanford_graph.html trunk/libs/graph/doc/straight_line_drawing.html trunk/libs/graph/doc/strong_components.html trunk/libs/graph/doc/subgraph.html trunk/libs/graph/doc/table_of_contents.html trunk/libs/graph/doc/time_stamper.html trunk/libs/graph/doc/topological_sort.html trunk/libs/graph/doc/transitive_closure.html trunk/libs/graph/doc/transpose_graph.html trunk/libs/graph/doc/trouble_shooting.html trunk/libs/graph/doc/undirected_dfs.html trunk/libs/graph/doc/users.html trunk/libs/graph/doc/using_adjacency_list.html trunk/libs/graph/doc/using_property_maps.html trunk/libs/graph/doc/visitor_concepts.html trunk/libs/graph/doc/wavefront.htm trunk/libs/graph/doc/write-graphviz.html trunk/libs/graph/doc/write_dimacs.html trunk/libs/graph/doc/write_graphml.html Log: 转换至1.38.0,第10次,包含以下库: filesystem format function_types functional fusion gil graph Modified: trunk/libs/filesystem/doc/portability_guide.htm ============================================================================== --- trunk/libs/filesystem/doc/portability_guide.htm (original) +++ trunk/libs/filesystem/doc/portability_guide.htm Mon Mar 30 07:58:04 2009 @@ -5,7 +5,6 @@ <meta name="ProgId" content="FrontPage.Editor.Document"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Portability Guide</title></head> - <body bgcolor="#ffffff"> <h1> @@ -44,35 +43,38 @@ <td align="center"><b>说明</b></td> </tr> <tr>- <td align="left" valign="top"><code><a name="portable_posix_name">portable_posix_name</a></code></td> - <td>对于只含有在 POSIX 中定义的<i> Portable Filename Character Set</i> 规则中指定的字符的名字,返回 <i>true</i> (<a href="http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap03.html";>www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap03.html</a>).<br>只 允许字符 0-9, a-z, A-Z, '.', '_', 和 '-'.<p><b>用于:</b> + <td align="left" valign="top"><code></code><code><a name="portable_posix_name">portable_posix_name</a>(const
+std::string&<i> name</i>)</code><code></code></td>+ <td><b>返回:</b> 对于只含有在 POSIX 中定义的<i> Portable Filename Character Set</i> 规则中指定的字符的名字,返回 <i>true</i> (<a href="http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap03.html";>www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap03.html</a>).<br>只 允许字符 0-9, a-z, A-Z, '.', '_', 和 '-'.<p><b>用于:</b>
必须可以移植到任何 POSIX 系统上的应用程序。</p></td> </tr> <tr>- <td align="left" valign="top"><code><a name="windows_name">windows_name</a></code></td> - <td>对于只含有由 Windows 平台 SDK 认为有效的字符的,返回 <i>true</i>,不管何种文件系统。允许除了 0x0-0x1F, '<', '>', ':', '"', '/', '\', 和 '|' 以外的任意字符。此 外,名字必须不以空格或句点结束。<p> + <td align="left" valign="top"><code></code><code><a name="windows_name">windows_name</a>(const std::string&<i>
+name</i>)</code><code></code></td>+ <td><b>返回:</b> 对于只含有由 Windows 平台 SDK 认为有效的字符的,返回 <i>true</i>,不管何种文件系统。允许除了 0x0-0x1F, '<', '>', ':', '"', '/', '\', 和 '|' 以外的任意字符。此 外,名字必须不以空格或句点结束。<p>
<b>用于:</b> 必须可以移植到 Windows 的应用程序。</p><p><b>注:</b> 保留的设备名不能作为文件名,但不能被检测出来,因为它们仍 是有效的路径。即:CON, PRN, AUX, CLOCK$, NUL, COM[1-9], LPT[1-9], 及上述名字 加扩展名(如 NUL.tx7)。</p></td>
</tr> <tr>- <td align="left" valign="top"><code><a name="portable_name">portable_name</a></code></td> - <td><code>windows_name(name) && portable_posix_name(name)</code>, - 且第一个字符不是句点或连字符。<p><b>用于:</b> 必须移植到多个现代操作系 统,大的和小的,以及一些旧有O/S的应用程序。</p></td> + <td align="left" valign="top"><code></code><code><a name="portable_name">portable_name</a>(const std::string&<i>
+name</i>)</code><code></code></td>+ <td><b>返回: </b><code>windows_name(name) && portable_posix_name(name)</code><code> && (name</code> 为 <code>"."</code> 或 <code>".."</code>, + 且第一个字符不是句点或连字符)。<p><b>用于:</b> 必须移植到多个现代操作系 统,大的和小的,以及一些旧有O/S的应用程序。</p></td>
</tr> <tr> - <td align="left" valign="top"><code><a name="portable_directory_name"> - portable_directory_name</a></code></td>- <td><code>portable_name(name)</code>, 且没有句点。<p><b>用于:</b> 必须 移植到多个平台,包括 OpenVMS 的应用程序。</p></td> + <td align="left" valign="top"><code></code><code><a name="portable_directory_name">portable_directory_name</a>(const
+std::string&<i> name</i>)</code><code></code></td>+ <td><b>返回: </b><code>portable_name(name)</code><code> && (name</code> 为 <code>"."</code> 或 <code>".."</code> 或 不包含句点 <code>)</code>。<p><b>用于:</b> 必须移植到多个平台,包括 OpenVMS 的应用程 序。</p></td>
</tr> <tr> - <td align="left" valign="top"><code><a name="portable_file_name"> - portable_file_name</a></code></td>- <td><code>portable_name(name)</code>, 除了允许单个句点并后跟1-3个字符。 <p><b>用于:</b> + <td align="left" valign="top"><code></code><code><a name="portable_file_name">portable_file_name</a>(const
+std::string&<i> name</i>)</code><code></code></td>+ <td><b>返回:</b><code> portable_name(name)</code>, 除了允许单个句 点并后跟1-3个字符。<p><b>用于:</b> 必须移植到多个平台,包括 OpenVMS 和其它具有"文件扩展名"概念但长度有限的 系统的应用程序。</p></td>
</tr> <tr>- <td align="left" valign="top"><code><a name="native">native</a></code></td>
- <td>实现定义的 name_check. 对于操作系统视为有效的所有名字,返回 <i>+ <td align="left" valign="top"><code><a name="native">native</a>(const std::string&<i> name</i>)</code></td> + <td><b>返回: </b>实现定义的 name_check. 对于操作系统视为有效的所有名 字,返回 <i> true</i>.<p><b>注:</b> 可能会对于在所有情形下都被操作系统视为无效的名字 返回 <i>true</i> (特别是在那些支持多种文件系统的操作系统上)。</p></td>
</tr> </tbody></table> @@ -135,8 +137,8 @@ </tbody></table> <hr> -<p>Revised-<!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->03 June, 2007<!--webbot bot="Timestamp" endspan i-checksum="19946" --></p> +<p>Revised <!--webbot bot="Timestamp" S-Type="EDITED" S-Format="%d %B, %Y" startspan -->11
+January, 2009</p> <p>(c) Copyright Beman Dawes, 2002, 2003</p> <p> Use, modification, and distribution are subject to the Boost Software Modified: trunk/libs/graph/doc/AStarHeuristic.html ============================================================================== --- trunk/libs/graph/doc/AStarHeuristic.html (original) +++ trunk/libs/graph/doc/AStarHeuristic.html Mon Mar 30 07:58:04 2009 @@ -1,138 +1,138 @@ -<HTML> -<!-- - -- Copyright (c) 2004 Kris Beevers - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Boost Graph Library: AStarHeuristic</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H1>AStar Heuristic Concept</H1> - -This concept defines the interface for the heuristic function of an A* -search, which is responsible for estimating the remaining cost from -some vertex to a goal. The user can create a class that matches this -interface, and then pass objects of the class into <a -href="./astar_search.html"><tt>astar_search()</tt></a> to guide the -order of vertex examination of the search. The heuristic instance -must incorporate any necessary information about goal vertices in the -graph. - -For further discussion of the use of heuristics in an A* search, see -the documentation of <a -href="./astar_search.html">astar_search()</a>. - -<h3>Refinement of</h3> - -<a href="http://www.sgi.com/tech/stl/UnaryFunction.html";>Unary -Function</a> (must take a single argument -- a graph vertex -- and -return a cost value) and <a -href="../../utility/CopyConstructible.html">Copy Constructible</a> -(copying a heuristic should be a lightweight operation). - - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>H</tt></TD> -<TD>A type that is a model of AStar Heuristic.</TD> -</TR> - -<TR> -<TD><tt>h</tt></TD> -<TD>An object of type <tt>H</tt>.</TD> -</TR> - -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of Graph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>u</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>CostType</tt></TD> -<TD>A type that can be used with the <tt>compare</tt> and -<tt>combine</tt> functions passed to A*.</TD> -</TR> - -<TR> -<TD><tt>c</tt></TD> -<TD>An object of type <tt>CostType</tt>.</TD> -</TR> - -</table> - -<h3>Associated Types</h3> - -none -<p> - -<h3>Valid Expressions</h3> - -<table border> -<tr> -<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> -</tr> - -<tr> -<td>Call Heuristic</td> -<td><tt>CostType c = h(u)</tt></td> -<td><tt>CostType</tt></td> -<td> -Called for the target of every out edge of a vertex being examined. -</td> -</tr> - -</table> - -<h3>Models</h3> - -<ul> - <li><a href="./astar_heuristic.html"><tt>astar_heuristic</tt></a> -</ul> - -<h3>Concept Checking Class</h3> - -<pre> - template <class Heuristic, class Graph> - struct AStarHeuristicConcept { - void constraints() - {- function_requires< CopyConstructibleConcept<Heuristic> >();
- h(u); - } - Heuristic h; - typename graph_traits<Graph>::vertex_descriptor u; - }; -</pre> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2004</TD><TD> -<A HREF="http://www.cs.rpi.edu/~beevek/";>Kristopher Beevers</A>, -Rensselaer Polytechnic Institute (<A -HREF="mailto:beevek@xxxxxxxxxx";>beevek@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) 2004 Kris Beevers + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Boost Graph Library: AStarHeuristic</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H1>AStar Heuristic Concept</H1> + +This concept defines the interface for the heuristic function of an A* +search, which is responsible for estimating the remaining cost from +some vertex to a goal. The user can create a class that matches this +interface, and then pass objects of the class into <a +href="./astar_search.html"><tt>astar_search()</tt></a> to guide the +order of vertex examination of the search. The heuristic instance +must incorporate any necessary information about goal vertices in the +graph. + +For further discussion of the use of heuristics in an A* search, see +the documentation of <a +href="./astar_search.html">astar_search()</a>. + +<h3>Refinement of</h3> + +<a href="http://www.sgi.com/tech/stl/UnaryFunction.html";>Unary +Function</a> (must take a single argument -- a graph vertex -- and +return a cost value) and <a +href="../../utility/CopyConstructible.html">Copy Constructible</a> +(copying a heuristic should be a lightweight operation). + + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>H</tt></TD> +<TD>A type that is a model of AStar Heuristic.</TD> +</TR> + +<TR> +<TD><tt>h</tt></TD> +<TD>An object of type <tt>H</tt>.</TD> +</TR> + +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of Graph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>u</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
+</TR> + +<TR> +<TD><tt>CostType</tt></TD> +<TD>A type that can be used with the <tt>compare</tt> and +<tt>combine</tt> functions passed to A*.</TD> +</TR> + +<TR> +<TD><tt>c</tt></TD> +<TD>An object of type <tt>CostType</tt>.</TD> +</TR> + +</table> + +<h3>Associated Types</h3> + +none +<p> + +<h3>Valid Expressions</h3> + +<table border> +<tr> +<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> +</tr> + +<tr> +<td>Call Heuristic</td> +<td><tt>CostType c = h(u)</tt></td> +<td><tt>CostType</tt></td> +<td> +Called for the target of every out edge of a vertex being examined. +</td> +</tr> + +</table> + +<h3>Models</h3> + +<ul> + <li><a href="./astar_heuristic.html"><tt>astar_heuristic</tt></a> +</ul> + +<h3>Concept Checking Class</h3> + +<pre> + template <class Heuristic, class Graph> + struct AStarHeuristicConcept { + void constraints() + {+ function_requires< CopyConstructibleConcept<Heuristic> >();
+ h(u); + } + Heuristic h; + typename graph_traits<Graph>::vertex_descriptor u; + }; +</pre> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2004</TD><TD> +<A HREF="http://www.cs.rpi.edu/~beevek/";>Kristopher Beevers</A>, +Rensselaer Polytechnic Institute (<A +HREF="mailto:beevek@xxxxxxxxxx";>beevek@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/AStarVisitor.html ============================================================================== --- trunk/libs/graph/doc/AStarVisitor.html (original) +++ trunk/libs/graph/doc/AStarVisitor.html Mon Mar 30 07:58:04 2009 @@ -1,213 +1,213 @@ -<HTML> -<!-- - -- Copyright (c) 2004 Kris Beevers - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Boost Graph Library: AStarVisitor</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H1>AStar Visitor Concept</H1> - -This concept defines the visitor interface for <a -href="./astar_search.html"><tt>astar_search()</tt></a>. Users can -define a class with the AStar Visitor interface and pass an object of -the class to <tt>astar_search()</tt>, thereby augmenting the actions -taken during the graph search. - -<h3>Refinement of</h3> - -<a href="../../utility/CopyConstructible.html">Copy Constructible</a> -(copying a visitor should be a lightweight operation). - - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>V</tt></TD> -<TD>A type that is a model of AStar Visitor.</TD> -</TR> - -<TR> -<TD><tt>vis</tt></TD> -<TD>An object of type <tt>V</tt>.</TD> -</TR> - -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of Graph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>e</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>s,u,v</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>d</tt></TD> -<TD>An object of type <tt>DistanceMap</tt>.</TD> -</TR> - -<TR> -<TD><tt>WeightMap</tt></TD> -<TD>A type that is a model of <a -href="../../property_map/ReadablePropertyMap.html">Readable Property -Map</a>.</TD> -</TR> - -<TR> -<TD><tt>w</tt></TD> -<TD>An object of type <tt>WeightMap</tt>.</TD> -</TR> - -</table> - -<h3>Associated Types</h3> - -none -<p> - -<h3>Valid Expressions</h3> - -<table border> -<tr> -<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> -</tr> - -<tr> -<td>Initialize Vertex</td> -<td><tt>vis.initialize_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on each vertex of the graph when it is first -initialized (i.e., when its property maps are initialized). -</td> -</tr> - -<tr> -<td>Discover Vertex</td> -<td><tt>vis.discover_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked when a vertex is first discovered and is added to the -OPEN list. -</td> -</tr> - -<tr> -<td>Examine Vertex</td> -<td><tt>vis.examine_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on a vertex as it is popped from the queue (i.e. it -has the lowest cost on the OPEN list). This happens immediately before -<tt>examine_edge()</tt> is invoked on each of the out-edges of vertex -<tt>u</tt>. -</td> -</tr> - -<tr> -<td>Examine Edge</td> -<td><tt>vis.examine_edge(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on every out-edge of each vertex after it is -examined. -</td> -</tr> - - -<tr> -<td>Edge Relaxed</td> -<td><tt>vis.edge_relaxed(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -Upon examination, if the following condition holds then the edge is -relaxed (the distance of its target vertex is reduced) and this method -is invoked: -<blockquote> -<pre> -tie(u, s) = incident(e, g); -D d_u = get(d, u), d_v = get(d, s); -W w_e = get(w, e); -assert(compare(combine(d_u, w_e), d_s)); -</pre> -</blockquote> -</td> -</tr> - -<tr> -<td>Edge Not Relaxed</td> -<td><tt>vis.edge_not_relaxed(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -Upon examination, if an edge is not relaxed (see above), then this -method is invoked. -</td> -</tr> - -<tr> -<td>Black Target</td> -<td><tt>vis.black_target(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked when a vertex that is on the CLOSED list is -``rediscovered'' via a more efficient path, and is re-added to the -OPEN list. -</td> -</tr> - -<tr> -<td>Finish Vertex</td> -<td><tt>vis.finish_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on a vertex when it is added to the CLOSED list, which -happens after all of its out edges have been examined. -</td> -</tr> - -</table> - -<h3>Models</h3> - -<ul> - <li><a href="./astar_visitor.html"><tt>astar_visitor</tt></a> -</ul> - - -<h3>See also</h3> - -<a href="./visitor_concepts.html">Visitor concepts</a> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2004</TD><TD> -<A HREF="http://www.cs.rpi.edu/~beevek/";>Kristopher Beevers</A>, -Rensselaer Polytechnic Institute (<A -HREF="mailto:beevek@xxxxxxxxxx";>beevek@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) 2004 Kris Beevers + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Boost Graph Library: AStarVisitor</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H1>AStar Visitor Concept</H1> + +This concept defines the visitor interface for <a +href="./astar_search.html"><tt>astar_search()</tt></a>. Users can +define a class with the AStar Visitor interface and pass an object of +the class to <tt>astar_search()</tt>, thereby augmenting the actions +taken during the graph search. + +<h3>Refinement of</h3> + +<a href="../../utility/CopyConstructible.html">Copy Constructible</a> +(copying a visitor should be a lightweight operation). + + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>V</tt></TD> +<TD>A type that is a model of AStar Visitor.</TD> +</TR> + +<TR> +<TD><tt>vis</tt></TD> +<TD>An object of type <tt>V</tt>.</TD> +</TR> + +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of Graph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>e</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
+</TR> + +<TR> +<TD><tt>s,u,v</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
+</TR> + +<TR> +<TD><tt>d</tt></TD> +<TD>An object of type <tt>DistanceMap</tt>.</TD> +</TR> + +<TR> +<TD><tt>WeightMap</tt></TD> +<TD>A type that is a model of <a +href="../../property_map/ReadablePropertyMap.html">Readable Property +Map</a>.</TD> +</TR> + +<TR> +<TD><tt>w</tt></TD> +<TD>An object of type <tt>WeightMap</tt>.</TD> +</TR> + +</table> + +<h3>Associated Types</h3> + +none +<p> + +<h3>Valid Expressions</h3> + +<table border> +<tr> +<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> +</tr> + +<tr> +<td>Initialize Vertex</td> +<td><tt>vis.initialize_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on each vertex of the graph when it is first +initialized (i.e., when its property maps are initialized). +</td> +</tr> + +<tr> +<td>Discover Vertex</td> +<td><tt>vis.discover_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked when a vertex is first discovered and is added to the +OPEN list. +</td> +</tr> + +<tr> +<td>Examine Vertex</td> +<td><tt>vis.examine_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on a vertex as it is popped from the queue (i.e. it +has the lowest cost on the OPEN list). This happens immediately before +<tt>examine_edge()</tt> is invoked on each of the out-edges of vertex +<tt>u</tt>. +</td> +</tr> + +<tr> +<td>Examine Edge</td> +<td><tt>vis.examine_edge(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on every out-edge of each vertex after it is +examined. +</td> +</tr> + + +<tr> +<td>Edge Relaxed</td> +<td><tt>vis.edge_relaxed(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +Upon examination, if the following condition holds then the edge is +relaxed (the distance of its target vertex is reduced) and this method +is invoked: +<blockquote> +<pre> +tie(u, s) = incident(e, g); +D d_u = get(d, u), d_v = get(d, s); +W w_e = get(w, e); +assert(compare(combine(d_u, w_e), d_s)); +</pre> +</blockquote> +</td> +</tr> + +<tr> +<td>Edge Not Relaxed</td> +<td><tt>vis.edge_not_relaxed(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +Upon examination, if an edge is not relaxed (see above), then this +method is invoked. +</td> +</tr> + +<tr> +<td>Black Target</td> +<td><tt>vis.black_target(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked when a vertex that is on the CLOSED list is +``rediscovered'' via a more efficient path, and is re-added to the +OPEN list. +</td> +</tr> + +<tr> +<td>Finish Vertex</td> +<td><tt>vis.finish_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on a vertex when it is added to the CLOSED list, which +happens after all of its out edges have been examined. +</td> +</tr> + +</table> + +<h3>Models</h3> + +<ul> + <li><a href="./astar_visitor.html"><tt>astar_visitor</tt></a> +</ul> + + +<h3>See also</h3> + +<a href="./visitor_concepts.html">Visitor concepts</a> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2004</TD><TD> +<A HREF="http://www.cs.rpi.edu/~beevek/";>Kristopher Beevers</A>, +Rensselaer Polytechnic Institute (<A +HREF="mailto:beevek@xxxxxxxxxx";>beevek@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/AddEdgeVisitor.html ============================================================================== --- trunk/libs/graph/doc/AddEdgeVisitor.html (original) +++ trunk/libs/graph/doc/AddEdgeVisitor.html Mon Mar 30 07:58:04 2009 @@ -1,130 +1,130 @@ -<html> -<head> -<!-- Copyright 2007 Aaron Windsor - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - -- - --> -<title>AddEdgeVisitor Concept</title> -</head> -<body alink="#ff0000" - bgcolor="#ffffff" - link="#0000ee" - text="#000000" - vlink="#551a8b"> - -<img src="../../../boost.png" alt="C++ Boost" height="86" width="277"> - -<br clear=""> - -<h1>AddEdgeVisitor Concept</h1> --The AddEdgeVisitor concept exists to allow for some indirection in algorithms -that modify graphs by adding edges. In such algorithms, it may be convenient
-to perform additional operations (such as updating an edge index map) at -points in the algorithm where an edge addition occurs. Replacing calls to-to <tt>add_edge</tt> with calls to <tt>AddEdgeVisitor::visit_vertex_pair</tt>
-allows for such operations to be defined independently from the algorithm. - -<h3>Notation</h3> - -<table> -<tbody> - -<tr> -<td> <tt>Visitor</tt> </td> -<td> is a type that models the AddEdgeVisitor concept </td> -</tr> - -<tr> -<td> <tt>vis</tt> </td> -<td> is an object of type Visitor </td> -</tr> - -<tr> -<td> <tt>Graph</tt> </td> -<td> is the type of a graph </td> -</tr> - -<tr> -<td> <tt>u,v</tt> </td>-<td> are objects of type <tt>graph_traits<Graph>::vertex_descriptor</tt>
-</td> -</tr> - -<tr> -<td> <tt>e</tt> </td>-<td> is an object of type <tt>graph_traits<Graph>::edge_descriptor</tt>
-</td> -</tr> - -<tr> -<td> <tt>v</tt> </td>-<td> is an object of type <tt>graph_traits<Graph>::vertex_descriptor</tt>
-</td> - -</tr><tr> -<td> - -</td></tr></tbody></table> - - -<h3>Associated Types</h3> - -None - -<h3>Valid Expressions</h3> - -<p> - -<table border="1"> - -<tbody><tr><th>Name</th><th>Expression</th><th>Return Type</th> -<th>Description</th> - -</tr><tr> -<td> Add an Edge </td> -<td> <tt>vis.visit_vertex_pair(u, v, g)</tt> </td> -<td> <tt>void</tt></td> -<td> Invoked every time an edge between vertices <tt>u</tt> and <tt>v</tt> - should be added to the graph <tt>g</tt>. -</td></tr> - -</tbody></table> - -</p><h3>Models</h3> - -Two models of this concept are defined in the file -<a href="../../../boost/graph/planar_detail/add_edge_visitors.hpp"> -<tt>add_edge_visitors.hpp</tt></a>: - -<ul> -<li><tt>default_add_edge_visitor</tt>: The constructor of this class takes -no arguments.<tt>visit_vertex_pair(u, v, g)</tt> is just a dispatch to -<tt>add_edge(u, v, g)</tt>. -<li><tt>edge_index_update_visitor</tt>: The constructor of this class takes -two arguments: the first, an EdgeIndexMap, -is a <a href="../../property_map/ReadWritePropertyMap.html"> -ReadWritePropertyMap</a> that maps each edge in the associated graph -<tt>g</tt> to a distinct integer in the range <tt>[0, num_edges(g))</tt>. -The second argument is the number of edges in the underlying graph, which -serves as the "next available index" counter within the visitor. -For example, in the case the graph used has an initialized interior -edge index, the <tt>edge_index_update_visitor</tt> constructor should be -called with <tt>get(edge_index, g)</tt> as the edge index and -<tt>num_edges(g)</tt> as the next available index. When -<tt>visit_vertex_pair(u, v, g)</tt> is called, the-<tt>edge_index_update_visitor</tt> will add the edge <i>(u,v)</i> to the graph
-and update the edge index for the newly created edge. -</ul> - -<p> - -<br> -</p><hr> -Copyright 2007 Aaron Windsor (<a href="mailto:aaron.windsor@xxxxxxxxx";> -aaron.windsor@xxxxxxxxx</a>) - +<html> +<head> +<!-- Copyright 2007 Aaron Windsor + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + -- + --> +<title>AddEdgeVisitor Concept</title> +</head> +<body alink="#ff0000" + bgcolor="#ffffff" + link="#0000ee" + text="#000000" + vlink="#551a8b"> + +<img src="../../../boost.png" alt="C++ Boost" height="86" width="277"> + +<br clear=""> + +<h1>AddEdgeVisitor Concept</h1> ++The AddEdgeVisitor concept exists to allow for some indirection in algorithms +that modify graphs by adding edges. In such algorithms, it may be convenient
+to perform additional operations (such as updating an edge index map) at +points in the algorithm where an edge addition occurs. Replacing calls to+to <tt>add_edge</tt> with calls to <tt>AddEdgeVisitor::visit_vertex_pair</tt>
+allows for such operations to be defined independently from the algorithm. + +<h3>Notation</h3> + +<table> +<tbody> + +<tr> +<td> <tt>Visitor</tt> </td> +<td> is a type that models the AddEdgeVisitor concept </td> +</tr> + +<tr> +<td> <tt>vis</tt> </td> +<td> is an object of type Visitor </td> +</tr> + +<tr> +<td> <tt>Graph</tt> </td> +<td> is the type of a graph </td> +</tr> + +<tr> +<td> <tt>u,v</tt> </td>+<td> are objects of type <tt>graph_traits<Graph>::vertex_descriptor</tt>
+</td> +</tr> + +<tr> +<td> <tt>e</tt> </td>+<td> is an object of type <tt>graph_traits<Graph>::edge_descriptor</tt>
+</td> +</tr> + +<tr> +<td> <tt>v</tt> </td>+<td> is an object of type <tt>graph_traits<Graph>::vertex_descriptor</tt>
+</td> + +</tr><tr> +<td> + +</td></tr></tbody></table> + + +<h3>Associated Types</h3> + +None + +<h3>Valid Expressions</h3> + +<p> + +<table border="1"> + +<tbody><tr><th>Name</th><th>Expression</th><th>Return Type</th> +<th>Description</th> + +</tr><tr> +<td> Add an Edge </td> +<td> <tt>vis.visit_vertex_pair(u, v, g)</tt> </td> +<td> <tt>void</tt></td> +<td> Invoked every time an edge between vertices <tt>u</tt> and <tt>v</tt> + should be added to the graph <tt>g</tt>. +</td></tr> + +</tbody></table> + +</p><h3>Models</h3> + +Two models of this concept are defined in the file +<a href="../../../boost/graph/planar_detail/add_edge_visitors.hpp"> +<tt>add_edge_visitors.hpp</tt></a>: + +<ul> +<li><tt>default_add_edge_visitor</tt>: The constructor of this class takes +no arguments.<tt>visit_vertex_pair(u, v, g)</tt> is just a dispatch to +<tt>add_edge(u, v, g)</tt>. +<li><tt>edge_index_update_visitor</tt>: The constructor of this class takes +two arguments: the first, an EdgeIndexMap, +is a <a href="../../property_map/ReadWritePropertyMap.html"> +ReadWritePropertyMap</a> that maps each edge in the associated graph +<tt>g</tt> to a distinct integer in the range <tt>[0, num_edges(g))</tt>. +The second argument is the number of edges in the underlying graph, which +serves as the "next available index" counter within the visitor. +For example, in the case the graph used has an initialized interior +edge index, the <tt>edge_index_update_visitor</tt> constructor should be +called with <tt>get(edge_index, g)</tt> as the edge index and +<tt>num_edges(g)</tt> as the next available index. When +<tt>visit_vertex_pair(u, v, g)</tt> is called, the+<tt>edge_index_update_visitor</tt> will add the edge <i>(u,v)</i> to the graph
+and update the edge index for the newly created edge. +</ul> + +<p> + +<br> +</p><hr> +Copyright 2007 Aaron Windsor (<a href="mailto:aaron.windsor@xxxxxxxxx";> +aaron.windsor@xxxxxxxxx</a>) + </body></html> Modified: trunk/libs/graph/doc/AdjacencyGraph.html ============================================================================== --- trunk/libs/graph/doc/AdjacencyGraph.html (original) +++ trunk/libs/graph/doc/AdjacencyGraph.html Mon Mar 30 07:58:04 2009 @@ -1,168 +1,168 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>AdjacencyGraph</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - - - -<H2><A NAME="concept:AdjacencyGraph"></A> -AdjacencyGraph -</H2> - -The AdjacencyGraph concept provides and interface for efficient access -of the adjacent vertices to a vertex in a graph. This is quite similar -to the <a href="./IncidenceGraph.html">IncidenceGraph</a> concept (the -target of an out-edge is an adjacent vertex). Both concepts are -provided because in some contexts there is only concern for the -vertices, whereas in other contexts the edges are also important. - -<H3>Refinement of</H3> - -<a href="Graph.html">Graph</a> - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of Graph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>v</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
-</TR> - -</table> - - -<H3>Associated Types</H3> - -<Table border> - -<tr> -<td><tt>boost::graph_traits<G>::traversal_category</tt><br><br> - This tag type must be convertible to <tt>adjacency_graph_tag</tt>. -</td> -</tr> - -<TR> -<TD><pre>boost::graph_traits<G>::adjacency_iterator</pre> -An adjacency iterator for a vertex <i>v</i> provides access to the -vertices adjacent to <i>v</i>. As such, the value type of an -adjacency iterator is the vertex descriptor type of its graph. An -adjacency iterator must meet the requirements of <a -href="../../utility/MultiPassInputIterator.html">MultiPassInputIterator</a>. -</TD> -</TR> - -</table> - -<h3>Valid Expressions</h3> - - -<table border> - -<tr>-<td><a name="sec:adjacent-vertices"><TT>adjacent_vertices(v, g)</TT></a></TD>
-<TD> -Returns an iterator-range providing access to the vertices adjacent to -vertex <TT>v</TT> in graph <TT>g</TT>.<a -href="#1">[1]</a> - -<br> Return type: -<TT>std::pair<adjacency_iterator, adjacency_iterator></TT> -</TD> -</TR> - -</table> - -<H3>Complexity guarantees</H3> - -The <TT>adjacent_vertices()</TT> function must return in constant time. - -<H3>See Also</H3> - -<a href="./graph_concepts.html">Graph concepts</a>, -<a href="./adjacency_iterator.html"><tt>adjacency_iterator</tt></a> - -<H3>Concept Checking Class</H3> - -<PRE> - template <class G> - struct AdjacencyGraphConcept - { - typedef typename boost::graph_traits<G>::adjacency_iterator - adjacency_iterator; - void constraints() { - function_requires< IncidenceGraphConcept<G> >();- function_requires< MultiPassInputIteratorConcept<adjacency_iterator> >();
- - p = adjacent_vertices(v, g); - v = *p.first; - const_constraints(g); - } - void const_constraints(const G& g) { - p = adjacent_vertices(v, g); - } - std::pair<adjacency_iterator,adjacency_iterator> p; - typename boost::graph_traits<G>::vertex_descriptor v; - G g; - }; -</PRE> - -<h3>Design Rationale</h3> - -The AdjacencyGraph concept is somewhat frivolous since <a -href="./IncidenceGraph.html">IncidenceGraph</a> really covers the same -functionality (and more). The AdjacencyGraph concept exists because -there are situations when <tt>adjacent_vertices()</tt> is more -convenient to use than <tt>out_edges()</tt>. If you are constructing a -graph class and do not want to put in the extra work of creating an -adjacency iterator, have no fear. There is an adaptor class named <a -href="./adjacency_iterator.html"> <tt>adjacency_iterator</tt></a> that -you can use to create an adjacency iterator out of an out-edge -iterator. - -<h3>Notes</h3> - -<a name="1">[1]</a> The case of a -<I>multigraph</I> (where multiple edges can connect the same two -vertices) brings up an issue as to whether the iterators returned by -the <TT>adjacent_vertices()</TT> function access a range that -includes each adjacent vertex once, or whether it should match the -behavior of the <TT>out_edges()</TT> function, and access a -range that may include an adjacent vertex more than once. For now the -behavior is defined to match that of <TT>out_edges()</TT>, -though this decision may need to be reviewed in light of more -experience with graph algorithm implementations. - - - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD>-<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
-</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>AdjacencyGraph</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + + + +<H2><A NAME="concept:AdjacencyGraph"></A> +AdjacencyGraph +</H2> + +The AdjacencyGraph concept provides and interface for efficient access +of the adjacent vertices to a vertex in a graph. This is quite similar +to the <a href="./IncidenceGraph.html">IncidenceGraph</a> concept (the +target of an out-edge is an adjacent vertex). Both concepts are +provided because in some contexts there is only concern for the +vertices, whereas in other contexts the edges are also important. + +<H3>Refinement of</H3> + +<a href="Graph.html">Graph</a> + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of Graph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>v</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
+</TR> + +</table> + + +<H3>Associated Types</H3> + +<Table border> + +<tr> +<td><tt>boost::graph_traits<G>::traversal_category</tt><br><br> + This tag type must be convertible to <tt>adjacency_graph_tag</tt>. +</td> +</tr> + +<TR> +<TD><pre>boost::graph_traits<G>::adjacency_iterator</pre> +An adjacency iterator for a vertex <i>v</i> provides access to the +vertices adjacent to <i>v</i>. As such, the value type of an +adjacency iterator is the vertex descriptor type of its graph. An +adjacency iterator must meet the requirements of <a +href="../../utility/MultiPassInputIterator.html">MultiPassInputIterator</a>. +</TD> +</TR> + +</table> + +<h3>Valid Expressions</h3> + + +<table border> + +<tr>+<td><a name="sec:adjacent-vertices"><TT>adjacent_vertices(v, g)</TT></a></TD>
+<TD> +Returns an iterator-range providing access to the vertices adjacent to +vertex <TT>v</TT> in graph <TT>g</TT>.<a +href="#1">[1]</a> + +<br> Return type: +<TT>std::pair<adjacency_iterator, adjacency_iterator></TT> +</TD> +</TR> + +</table> + +<H3>Complexity guarantees</H3> + +The <TT>adjacent_vertices()</TT> function must return in constant time. + +<H3>See Also</H3> + +<a href="./graph_concepts.html">Graph concepts</a>, +<a href="./adjacency_iterator.html"><tt>adjacency_iterator</tt></a> + +<H3>Concept Checking Class</H3> + +<PRE> + template <class G> + struct AdjacencyGraphConcept + { + typedef typename boost::graph_traits<G>::adjacency_iterator + adjacency_iterator; + void constraints() { + function_requires< IncidenceGraphConcept<G> >();+ function_requires< MultiPassInputIteratorConcept<adjacency_iterator> >();
+ + p = adjacent_vertices(v, g); + v = *p.first; + const_constraints(g); + } + void const_constraints(const G& g) { + p = adjacent_vertices(v, g); + } + std::pair<adjacency_iterator,adjacency_iterator> p; + typename boost::graph_traits<G>::vertex_descriptor v; + G g; + }; +</PRE> + +<h3>Design Rationale</h3> + +The AdjacencyGraph concept is somewhat frivolous since <a +href="./IncidenceGraph.html">IncidenceGraph</a> really covers the same +functionality (and more). The AdjacencyGraph concept exists because +there are situations when <tt>adjacent_vertices()</tt> is more +convenient to use than <tt>out_edges()</tt>. If you are constructing a +graph class and do not want to put in the extra work of creating an +adjacency iterator, have no fear. There is an adaptor class named <a +href="./adjacency_iterator.html"> <tt>adjacency_iterator</tt></a> that +you can use to create an adjacency iterator out of an out-edge +iterator. + +<h3>Notes</h3> + +<a name="1">[1]</a> The case of a +<I>multigraph</I> (where multiple edges can connect the same two +vertices) brings up an issue as to whether the iterators returned by +the <TT>adjacent_vertices()</TT> function access a range that +includes each adjacent vertex once, or whether it should match the +behavior of the <TT>out_edges()</TT> function, and access a +range that may include an adjacent vertex more than once. For now the +behavior is defined to match that of <TT>out_edges()</TT>, +though this decision may need to be reviewed in light of more +experience with graph algorithm implementations. + + + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD>+<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
+</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/AdjacencyMatrix.html ============================================================================== --- trunk/libs/graph/doc/AdjacencyMatrix.html (original) +++ trunk/libs/graph/doc/AdjacencyMatrix.html Mon Mar 30 07:58:04 2009 @@ -1,103 +1,103 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>AdjacencyMatrix</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - - - -<H2><A NAME="concept:AdjacencyMatrix"></A> -AdjacencyMatrix -</H2> - -<P> -The AdjacencyMatrix concept refines <a href="./Graph.html">Graph</a> -concept and adds the requirement for efficient access to any edge in -the graph given the source and target vertices. No Boost Graph Library -algorithms currently use this concept. However there are algorithms -not yet implemented such as Floyd-Warshall that would require this -concept. - -<H3>Refinement of</H3> - -<a href="./Graph.html">Graph</a> - -<H3>Associated Types</H3> - -<Table border> - -<tr> -<td><tt>boost::graph_traits<G>::traversal_category</tt><br><br> - This tag type must be convertible to <tt>adjacency_matrix_tag</tt>. -</td> -</tr> - -</table> - -<H3>Valid Expressions</H3> - -<table border> - -<tr> -<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> -</tr> - -<tr> -<td>Direct Edge Access</td> -<TD><TT>edge(u,v,g)</TT></TD> -<TD><TT>std::pair<edge_descriptor, bool></TT></TD> -<TD> -Returns a pair consisting of a flag saying whether there exists an -edge between <TT>u</TT> and <TT>v</TT> in graph <TT>g</TT>, and -consisting of the edge descriptor if the edge was found. -</TD> -</TR> -</TABLE> - -<H3>Complexity guarantees</H3> - -The <TT>edge()</TT> function must return in constant time. - - -<H3>Models</H3> - -<a href="./adjacency_matrix.html"><tt>adjacency_matrix</tt></a> - -<H3>Concept Checking Class</H3> - -<PRE> - template <class G> - struct AdjacencyMatrix - {- typedef typename boost::graph_traits<G>::edge_descriptor edge_descriptor;
- void constraints() { - p = edge(u, v, g); - } - typename boost::graph_traits<G>::vertex_descriptor u, v; - std::pair<bool, edge_descriptor> p; - G g; - }; -</PRE> - - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD>-<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
-</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>AdjacencyMatrix</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + + + +<H2><A NAME="concept:AdjacencyMatrix"></A> +AdjacencyMatrix +</H2> + +<P> +The AdjacencyMatrix concept refines <a href="./Graph.html">Graph</a> +concept and adds the requirement for efficient access to any edge in +the graph given the source and target vertices. No Boost Graph Library +algorithms currently use this concept. However there are algorithms +not yet implemented such as Floyd-Warshall that would require this +concept. + +<H3>Refinement of</H3> + +<a href="./Graph.html">Graph</a> + +<H3>Associated Types</H3> + +<Table border> + +<tr> +<td><tt>boost::graph_traits<G>::traversal_category</tt><br><br> + This tag type must be convertible to <tt>adjacency_matrix_tag</tt>. +</td> +</tr> + +</table> + +<H3>Valid Expressions</H3> + +<table border> + +<tr> +<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> +</tr> + +<tr> +<td>Direct Edge Access</td> +<TD><TT>edge(u,v,g)</TT></TD> +<TD><TT>std::pair<edge_descriptor, bool></TT></TD> +<TD> +Returns a pair consisting of a flag saying whether there exists an +edge between <TT>u</TT> and <TT>v</TT> in graph <TT>g</TT>, and +consisting of the edge descriptor if the edge was found. +</TD> +</TR> +</TABLE> + +<H3>Complexity guarantees</H3> + +The <TT>edge()</TT> function must return in constant time. + + +<H3>Models</H3> + +<a href="./adjacency_matrix.html"><tt>adjacency_matrix</tt></a> + +<H3>Concept Checking Class</H3> + +<PRE> + template <class G> + struct AdjacencyMatrix + {+ typedef typename boost::graph_traits<G>::edge_descriptor edge_descriptor;
+ void constraints() { + p = edge(u, v, g); + } + typename boost::graph_traits<G>::vertex_descriptor u, v; + std::pair<bool, edge_descriptor> p; + G g; + }; +</PRE> + + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD>+<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
+</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/BFSVisitor.html ============================================================================== --- trunk/libs/graph/doc/BFSVisitor.html (original) +++ trunk/libs/graph/doc/BFSVisitor.html Mon Mar 30 07:58:04 2009 @@ -1,220 +1,220 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Boost Graph Library: BFSVisitor</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H1><img src="figs/python.gif" alt="(Python)"/>BFS Visitor Concept</H1> - -This concept defines the visitor interface for <a -href="./breadth_first_search.html"><tt>breadth_first_search()</tt></a>. -Users can define a class with the BFS Visitor interface and pass and -object of the class to <tt>breadth_first_search()</tt>, thereby -augmenting the actions taken during the graph search. - -<h3>Refinement of</h3> - -<a href="../../utility/CopyConstructible.html">Copy Constructible</a> -(copying a visitor should be a lightweight operation). - - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>V</tt></TD> -<TD>A type that is a model of BFS Visitor.</TD> -</TR> - -<TR> -<TD><tt>vis</tt></TD> -<TD>An object of type <tt>V</tt>.</TD> -</TR> - -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of Graph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>e</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>s,u</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
-</TR> - -</table> - -<h3>Associated Types</h3> - -none -<p> - -<h3>Valid Expressions</h3> - -<table border> -<tr> -<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> -</tr> - -<tr> -<td>Initialize Vertex</td> -<td><tt>vis.initialize_vertex(s, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on every vertex of the graph before the start of the -graph search. -</td> -</tr> - -<tr> -<td>Discover Vertex</td> -<td><tt>vis.discover_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked when a vertex is encountered for the first time. -</td> -</tr> - -<tr> -<td>Examine Vertex</td> -<td><tt>vis.examine_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on a vertex as it is popped from the queue. This -happens immediately before <tt>examine_edge()</tt> is invoked -on each of the out-edges of vertex <tt>u</tt>. -</td> -</tr> - -<tr> -<td>Examine Edge</td> -<td><tt>vis.examine_edge(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on every out-edge of each vertex after it is discovered. -</td> -</tr> - - -<tr> -<td>Tree Edge</td> -<td><tt>vis.tree_edge(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on each edge as it becomes a member of the edges that -form the search tree.</td> -</tr> - -<tr> -<td>Non-Tree Edge</td> -<td><tt>vis.non_tree_edge(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on back or cross edges for directed graphs and cross -edges for undirected graphs. -</td> -</tr> - -<tr> -<td>Gray Target</td> -<td><tt>vis.gray_target(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on the subset of non-tree edges who's target vertex is -colored gray at the time of examination. The color gray indicates -that the vertex is currently in the queue. -</td> -</tr> - -<tr> -<td>Black Target</td> -<td><tt>vis.black_target(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on the subset of non-tree edges who's target vertex is -colored black at the time of examination. The color black indicates -that the vertex has been removed from the queue. -</td> -</tr> - -<tr> -<td>Finish Vertex</td> -<td><tt>vis.finish_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This invoked on a vertex after all of its out edges have been added to the -search tree and all of the adjacent vertices have been discovered -(but before the out-edges of the adjacent vertices have been examined). -</td> -</tr> - -</table> - -<h3>Models</h3> - -<ul> - <li><a href="./bfs_visitor.html"><tt>bfs_visitor</tt></a> -</ul> - -<a name="python"></a><h3>Python</h3> -To implement a model of the <tt>BFSVisitor</tt> concept in Python, -create a new class that derives from the <tt>BFSVisitor</tt> type of -the graph, which will be -named <tt><i>GraphType</i>.BFSVisitor</tt>. The events and syntax are -the same as with visitors in C++. Here is an example for the -Python <tt>bgl.Graph</tt> graph type: - -<pre> -class count_tree_edges_bfs_visitor(bgl.Graph.BFSVisitor): - def __init__(self, name_map): - bgl.Graph.BFSVisitor.__init__(self) - self.name_map = name_map - - def tree_edge(self, e, g): - (u, v) = (g.source(e), g.target(e)) - print "Tree edge ", - print self.name_map[u], - print " -> ", - print self.name_map[v] -</pre> - -<h3>See also</h3> - -<a href="./visitor_concepts.html">Visitor concepts</a> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>-<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
-<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, -Indiana University (<A -HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Boost Graph Library: BFSVisitor</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H1><img src="figs/python.gif" alt="(Python)"/>BFS Visitor Concept</H1> + +This concept defines the visitor interface for <a +href="./breadth_first_search.html"><tt>breadth_first_search()</tt></a>. +Users can define a class with the BFS Visitor interface and pass and +object of the class to <tt>breadth_first_search()</tt>, thereby +augmenting the actions taken during the graph search. + +<h3>Refinement of</h3> + +<a href="../../utility/CopyConstructible.html">Copy Constructible</a> +(copying a visitor should be a lightweight operation). + + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>V</tt></TD> +<TD>A type that is a model of BFS Visitor.</TD> +</TR> + +<TR> +<TD><tt>vis</tt></TD> +<TD>An object of type <tt>V</tt>.</TD> +</TR> + +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of Graph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>e</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
+</TR> + +<TR> +<TD><tt>s,u</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
+</TR> + +</table> + +<h3>Associated Types</h3> + +none +<p> + +<h3>Valid Expressions</h3> + +<table border> +<tr> +<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> +</tr> + +<tr> +<td>Initialize Vertex</td> +<td><tt>vis.initialize_vertex(s, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on every vertex of the graph before the start of the +graph search. +</td> +</tr> + +<tr> +<td>Discover Vertex</td> +<td><tt>vis.discover_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked when a vertex is encountered for the first time. +</td> +</tr> + +<tr> +<td>Examine Vertex</td> +<td><tt>vis.examine_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on a vertex as it is popped from the queue. This +happens immediately before <tt>examine_edge()</tt> is invoked +on each of the out-edges of vertex <tt>u</tt>. +</td> +</tr> + +<tr> +<td>Examine Edge</td> +<td><tt>vis.examine_edge(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on every out-edge of each vertex after it is discovered. +</td> +</tr> + + +<tr> +<td>Tree Edge</td> +<td><tt>vis.tree_edge(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on each edge as it becomes a member of the edges that +form the search tree.</td> +</tr> + +<tr> +<td>Non-Tree Edge</td> +<td><tt>vis.non_tree_edge(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on back or cross edges for directed graphs and cross +edges for undirected graphs. +</td> +</tr> + +<tr> +<td>Gray Target</td> +<td><tt>vis.gray_target(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on the subset of non-tree edges who's target vertex is +colored gray at the time of examination. The color gray indicates +that the vertex is currently in the queue. +</td> +</tr> + +<tr> +<td>Black Target</td> +<td><tt>vis.black_target(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on the subset of non-tree edges who's target vertex is +colored black at the time of examination. The color black indicates +that the vertex has been removed from the queue. +</td> +</tr> + +<tr> +<td>Finish Vertex</td> +<td><tt>vis.finish_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This invoked on a vertex after all of its out edges have been added to the +search tree and all of the adjacent vertices have been discovered +(but before the out-edges of the adjacent vertices have been examined). +</td> +</tr> + +</table> + +<h3>Models</h3> + +<ul> + <li><a href="./bfs_visitor.html"><tt>bfs_visitor</tt></a> +</ul> + +<a name="python"></a><h3>Python</h3> +To implement a model of the <tt>BFSVisitor</tt> concept in Python, +create a new class that derives from the <tt>BFSVisitor</tt> type of +the graph, which will be +named <tt><i>GraphType</i>.BFSVisitor</tt>. The events and syntax are +the same as with visitors in C++. Here is an example for the +Python <tt>bgl.Graph</tt> graph type: + +<pre> +class count_tree_edges_bfs_visitor(bgl.Graph.BFSVisitor): + def __init__(self, name_map): + bgl.Graph.BFSVisitor.__init__(self) + self.name_map = name_map + + def tree_edge(self, e, g): + (u, v) = (g.source(e), g.target(e)) + print "Tree edge ", + print self.name_map[u], + print " -> ", + print self.name_map[v] +</pre> + +<h3>See also</h3> + +<a href="./visitor_concepts.html">Visitor concepts</a> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>+<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
+<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, +Indiana University (<A +HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/BasicMatrix.html ============================================================================== --- trunk/libs/graph/doc/BasicMatrix.html (original) +++ trunk/libs/graph/doc/BasicMatrix.html Mon Mar 30 07:58:04 2009 @@ -1,103 +1,103 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>BasicMatrix</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H1><A NAME="concept:BasicMatrix"></A> -BasicMatrix -</H1> - -The BasicMatrix concept provides a minimalist interface for -accessing elements from a 2 dimensional table of values. - - -<H3>Refinement of</H3> - -none - -<h3>Notation</h3> - -<Table> -<TR> -<TD>{<tt>M,I,V</tt>}</TD>-<TD>The matrix, index, and values types that together model the BasicMatrix concept.</TD>
-</TR> - -<TR> -<TD><tt>A</tt></TD> -<TD>An object of type <tt>M</tt>.</TD> -</TR> - -<TR> -<TD><tt>i, j</tt></TD> -<TD>Objects of type <tt>I</tt>.</TD> -</TR> - -</table> - -<H3>Associated Types</H3> - -none - -<h3>Valid Expressions</h3> - -<Table border> - -<tr> -<td><a name="sec:elt-access"><TT>A[i][j]</TT></a></TD>-<TD>Returns a reference to the element object stored at index <tt>(i,j)</tt><br> -Return type: <TT>V&</TT> for mutable <tt>A</tt> or <TT>const V&</TT>
-for constant <tt>A</tt>. -</TD> -</TR> - -</table> - -<H3>Complexity guarantees</H3> - -Element access is constant time. - -<H3>Concept Checking Class</H3> - -<pre> - template <class M, class I, class V> - struct BasicMatrixConcept - { - void constraints() { - V& elt = A[i][j]; - const_constraints(A); - ignore_unused_variable_warning(elt); - } - void const_constraints(const M& A) { - const V& elt = A[i][j]; - ignore_unused_variable_warning(elt); - } - M A; - I i, j; - }; -</pre> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>BasicMatrix</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H1><A NAME="concept:BasicMatrix"></A> +BasicMatrix +</H1> + +The BasicMatrix concept provides a minimalist interface for +accessing elements from a 2 dimensional table of values. + + +<H3>Refinement of</H3> + +none + +<h3>Notation</h3> + +<Table> +<TR> +<TD>{<tt>M,I,V</tt>}</TD>+<TD>The matrix, index, and values types that together model the BasicMatrix concept.</TD>
+</TR> + +<TR> +<TD><tt>A</tt></TD> +<TD>An object of type <tt>M</tt>.</TD> +</TR> + +<TR> +<TD><tt>i, j</tt></TD> +<TD>Objects of type <tt>I</tt>.</TD> +</TR> + +</table> + +<H3>Associated Types</H3> + +none + +<h3>Valid Expressions</h3> + +<Table border> + +<tr> +<td><a name="sec:elt-access"><TT>A[i][j]</TT></a></TD>+<TD>Returns a reference to the element object stored at index <tt>(i,j)</tt><br> +Return type: <TT>V&</TT> for mutable <tt>A</tt> or <TT>const V&</TT>
+for constant <tt>A</tt>. +</TD> +</TR> + +</table> + +<H3>Complexity guarantees</H3> + +Element access is constant time. + +<H3>Concept Checking Class</H3> + +<pre> + template <class M, class I, class V> + struct BasicMatrixConcept + { + void constraints() { + V& elt = A[i][j]; + const_constraints(A); + ignore_unused_variable_warning(elt); + } + void const_constraints(const M& A) { + const V& elt = A[i][j]; + ignore_unused_variable_warning(elt); + } + M A; + I i, j; + }; +</pre> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/BellmanFordVisitor.html ============================================================================== --- trunk/libs/graph/doc/BellmanFordVisitor.html (original) +++ trunk/libs/graph/doc/BellmanFordVisitor.html Mon Mar 30 07:58:04 2009 @@ -1,184 +1,184 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Boost Graph Library: Bellman Ford Visitor</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> --<H1><img src="figs/python.gif" alt="(Python)"/>Bellman Ford Visitor Concept</H1>
- -This concept defines the visitor interface for <a -href="./bellman_ford_shortest.html"><tt>bellman_ford_shortest_paths()</tt></a>. -Users can define a class with the Bellman Ford Visitor interface and -pass and object of the class to <tt>bellman_ford_shortest_paths()</tt>, -thereby augmenting the actions taken during the graph search. - -<h3>Refinement of</h3> - -<a href="../../utility/CopyConstructible.html">Copy Constructible</a> -(copying a visitor should be a lightweight operation). - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>V</tt></TD> -<TD>A type that is a model of Bellman Ford Visitor.</TD> -</TR> - -<TR> -<TD><tt>vis</tt></TD> -<TD>An object of type <tt>V</tt>.</TD> -</TR> - -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of Graph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>e</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>s,u</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
-</TR> - -</table> - -<h3>Associated Types</h3> - -none -<p> - -<h3>Valid Expressions</h3> - -<table border> -<tr> -<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> -</tr> - -<tr> -<td>Examine Edge</td> -<td><tt>vis.examine_edge(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on every edge in the graph <tt>num_vertices(g)</tt> times. -</td> -</tr> - - -<tr> -<td>Edge Relaxed</td> -<td><tt>vis.edge_relaxed(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -Upon examination, if the following condition holds then the edge -is relaxed (its distance is reduced), and this method is invoked.<br> -<tt> -tie(u,v) = incident(e, g);<br> -D d_u = get(d, u), d_v = get(d, v);<br> -W w_e = get(w, e);<br> -assert(compare(combine(d_u, w_e), d_v));<br> -</tt> -</td> -</tr> - -<tr> -<td>Edge Not Relaxed</td> -<td><tt>edge_not_relaxed(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -Upon examination, if the edge is not relaxed (see above) then -this method is invoked. -</td> -</tr> - -<tr> -<td>Edge Minimized</td> -<td><tt>vis.edge_minimized(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -After the <tt>num_vertices(g)</tt> iterations through the edge set -of the graph is complete, one last iteration is made to test whether -each edge was minimized. If the edge is minimized then this function -is invoked. -</td> -</tr> - -<tr> -<td>Edge Not Minimized</td> -<td><tt>edge_not_minimized(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -If the edge is not minimized, this function is invoked. This happens -when there is a negative cycle in the graph. -</td> -</tr> - -</table> - - -<h3>Models</h3> - -<ul> - <li><a href="./bellman_visitor.html"><tt>bellman_visitor</tt></a> -</ul> - -<a name="python"></a> -<h3>Python</h3> - -To implement a model of the <tt>BellmanFordVisitor</tt> concept in Python,-create a new class that derives from the <tt>BellmanFordVisitor</tt> type of
-the graph, which will be-named <tt><i>GraphType</i>.BellmanFordVisitor</tt>. The events and syntax are
-the same as with visitors in C++. Here is an example for the -Python <tt>bgl.Graph</tt> graph type: - -<pre> -class count_tree_edges_bellman_ford_visitor(bgl.Graph.BellmanFordVisitor): - def __init__(self, name_map): - bgl.Graph.BellmanFordVisitor.__init__(self) - self.name_map = name_map - - def edge_relaxed(self, e, g): - (u, v) = (g.source(e), g.target(e)) - print "Relaxed edge ", - print self.name_map[u], - print " -> ", - print self.name_map[v] -</pre> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>-<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
-<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, -Indiana University (<A -HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Boost Graph Library: Bellman Ford Visitor</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> ++<H1><img src="figs/python.gif" alt="(Python)"/>Bellman Ford Visitor Concept</H1>
+ +This concept defines the visitor interface for <a +href="./bellman_ford_shortest.html"><tt>bellman_ford_shortest_paths()</tt></a>. +Users can define a class with the Bellman Ford Visitor interface and +pass and object of the class to <tt>bellman_ford_shortest_paths()</tt>, +thereby augmenting the actions taken during the graph search. + +<h3>Refinement of</h3> + +<a href="../../utility/CopyConstructible.html">Copy Constructible</a> +(copying a visitor should be a lightweight operation). + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>V</tt></TD> +<TD>A type that is a model of Bellman Ford Visitor.</TD> +</TR> + +<TR> +<TD><tt>vis</tt></TD> +<TD>An object of type <tt>V</tt>.</TD> +</TR> + +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of Graph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>e</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
+</TR> + +<TR> +<TD><tt>s,u</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
+</TR> + +</table> + +<h3>Associated Types</h3> + +none +<p> + +<h3>Valid Expressions</h3> + +<table border> +<tr> +<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> +</tr> + +<tr> +<td>Examine Edge</td> +<td><tt>vis.examine_edge(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on every edge in the graph <tt>num_vertices(g)</tt> times. +</td> +</tr> + + +<tr> +<td>Edge Relaxed</td> +<td><tt>vis.edge_relaxed(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +Upon examination, if the following condition holds then the edge +is relaxed (its distance is reduced), and this method is invoked.<br> +<tt> +tie(u,v) = incident(e, g);<br> +D d_u = get(d, u), d_v = get(d, v);<br> +W w_e = get(w, e);<br> +assert(compare(combine(d_u, w_e), d_v));<br> +</tt> +</td> +</tr> + +<tr> +<td>Edge Not Relaxed</td> +<td><tt>edge_not_relaxed(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +Upon examination, if the edge is not relaxed (see above) then +this method is invoked. +</td> +</tr> + +<tr> +<td>Edge Minimized</td> +<td><tt>vis.edge_minimized(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +After the <tt>num_vertices(g)</tt> iterations through the edge set +of the graph is complete, one last iteration is made to test whether +each edge was minimized. If the edge is minimized then this function +is invoked. +</td> +</tr> + +<tr> +<td>Edge Not Minimized</td> +<td><tt>edge_not_minimized(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +If the edge is not minimized, this function is invoked. This happens +when there is a negative cycle in the graph. +</td> +</tr> + +</table> + + +<h3>Models</h3> + +<ul> + <li><a href="./bellman_visitor.html"><tt>bellman_visitor</tt></a> +</ul> + +<a name="python"></a> +<h3>Python</h3> + +To implement a model of the <tt>BellmanFordVisitor</tt> concept in Python,+create a new class that derives from the <tt>BellmanFordVisitor</tt> type of
+the graph, which will be+named <tt><i>GraphType</i>.BellmanFordVisitor</tt>. The events and syntax are
+the same as with visitors in C++. Here is an example for the +Python <tt>bgl.Graph</tt> graph type: + +<pre> +class count_tree_edges_bellman_ford_visitor(bgl.Graph.BellmanFordVisitor): + def __init__(self, name_map): + bgl.Graph.BellmanFordVisitor.__init__(self) + self.name_map = name_map + + def edge_relaxed(self, e, g): + (u, v) = (g.source(e), g.target(e)) + print "Relaxed edge ", + print self.name_map[u], + print " -> ", + print self.name_map[v] +</pre> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>+<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
+<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, +Indiana University (<A +HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/BidirectionalGraph.html ============================================================================== --- trunk/libs/graph/doc/BidirectionalGraph.html (original) +++ trunk/libs/graph/doc/BidirectionalGraph.html Mon Mar 30 07:58:04 2009 @@ -1,175 +1,175 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Bidirectional</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - - -<H2> -<A NAME="concept:BidirectionalGraph"></A> -BidirectionalGraph -</H2> - -<P> -The BidirectionalGraph concept refines <a -href="./IncidenceGraph.html">IncidenceGraph</a> and adds the -requirement for efficient access to the in-edges of each vertex. This -concept is separated from <a -href="./IncidenceGraph.html">IncidenceGraph</a> because for directed -graphs efficient access to in-edges typically requires more storage -space, and many algorithms do not require access to in-edges. For -undirected graphs this is not an issue, since the <TT>in_edges()</TT> -and <TT>out_edges()</TT> functions are the same, they both return the -edges incident to the vertex. - -<H3>Refinement of</H3> - -<a href="./IncidenceGraph.html">IncidenceGraph</a> - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of Graph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>v</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
-</TR> - -</table> - -<H3>Associated Types</H3> - -<Table border> - -<tr> -<td><tt>boost::graph_traits<G>::traversal_category</tt><br><br> - This tag type must be convertible to <tt>bidirectional_graph_tag</tt>. -</td> -</tr> - -<TR> -<TD><pre>boost::graph_traits<G>::in_edge_iterator</pre> -An in-edge iterator for a vertex <i>v</i> provides access to the -in-edges of <i>v</i>. As such, the value type of an in-edge iterator -is the edge descriptor type of its graph. An in-edge iterator must-meet the requirements of <a href="../../utility/MultiPassInputIterator.html">MultiPassInputIterator</a>.
-</TD> -</TR> - -</Table> - -<h3>Valid Expressions</h3> - -<Table border> - -<tr> -<td><a name="sec:in-edges"><TT>in_edges(v, g)</TT></a></TD> -<TD> -Returns an iterator-range providing access to the -in-edges (for directed graphs) or incident edges (for -undirected graphs) of vertex <TT>v</TT> in graph <TT>g</TT>. -For both directed and undirected graphs, the target of -an out-edge is required to be vertex <tt>v</tt> and the -source is required to be a vertex that is adjacent to <tt>v</tt>. -<br> -Return type: <TT>std::pair<in_edge_iterator, in_edge_iterator></TT> -</TD> -</TR> - -<tr> -<TD><TT>in_degree(v, g)</TT></TD> -<TD> -Returns the number of in-edges (for directed graphs) or the -number of incident edges (for undirected graphs) of vertex <TT>v</TT> -in graph <TT>g</TT>.<br> -Return type: <TT>degree_size_type</TT> -</TD> -</TR> - -<tr> -<TD><TT>degree(v, g)</TT></TD>-<TD>Returns the number of in-edges plus out-edges (for directed graphs) or the
-number of incident edges (for undirected graphs) of vertex <TT>v</TT> -in graph <TT>g</TT>.<br> -Return type: <TT>degree_size_type</TT> -</TD> -</TR> - -</Table> - -<H3>Models</H3> - -<ul>-<li><a href="./adjacency_list.html"><tt>adjacency_list</tt></a> with <tt>Directed=bidirectionalS</tt></li> -<li><a href="./adjacency_list.html"><tt>adjacency_list</tt></a> with <tt>Directed=undirectedS</tt></li>
-</ul> - - -<H3>Complexity guarantees</H3> - -The <TT>in_edges()</TT> function is required to be constant time. The -<tt>in_degree()</tt> and <tt>degree()</tt> functions must be linear in -the number of in-edges (for directed graphs) or incident edges (for -undirected graphs). - -<H3>See Also</H3> - -<a href="./graph_concepts.html">Graph concepts</a> - -<H3>Concept Checking Class</H3> - -<PRE> - template <class G> - struct BidirectionalGraphConcept - { - typedef typename boost::graph_traits<G>::in_edge_iterator - in_edge_iterator; - void constraints() { - function_requires< IncidenceGraphConcept<G> >();- function_requires< MultiPassInputIteratorConcept<in_edge_iterator> >();
- - p = in_edges(v, g); - e = *p.first; - const_constraints(g); - } - void const_constraints(const G& g) { - p = in_edges(v, g); - e = *p.first; - } - std::pair<in_edge_iterator, in_edge_iterator> p; - typename boost::graph_traits<G>::vertex_descriptor v; - typename boost::graph_traits<G>::edge_descriptor e; - G g; - }; -</PRE> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD>-<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
-</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Bidirectional</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + + +<H2> +<A NAME="concept:BidirectionalGraph"></A> +BidirectionalGraph +</H2> + +<P> +The BidirectionalGraph concept refines <a +href="./IncidenceGraph.html">IncidenceGraph</a> and adds the +requirement for efficient access to the in-edges of each vertex. This +concept is separated from <a +href="./IncidenceGraph.html">IncidenceGraph</a> because for directed +graphs efficient access to in-edges typically requires more storage +space, and many algorithms do not require access to in-edges. For +undirected graphs this is not an issue, since the <TT>in_edges()</TT> +and <TT>out_edges()</TT> functions are the same, they both return the +edges incident to the vertex. + +<H3>Refinement of</H3> + +<a href="./IncidenceGraph.html">IncidenceGraph</a> + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of Graph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>v</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
+</TR> + +</table> + +<H3>Associated Types</H3> + +<Table border> + +<tr> +<td><tt>boost::graph_traits<G>::traversal_category</tt><br><br> + This tag type must be convertible to <tt>bidirectional_graph_tag</tt>. +</td> +</tr> + +<TR> +<TD><pre>boost::graph_traits<G>::in_edge_iterator</pre> +An in-edge iterator for a vertex <i>v</i> provides access to the +in-edges of <i>v</i>. As such, the value type of an in-edge iterator +is the edge descriptor type of its graph. An in-edge iterator must+meet the requirements of <a href="../../utility/MultiPassInputIterator.html">MultiPassInputIterator</a>.
+</TD> +</TR> + +</Table> + +<h3>Valid Expressions</h3> + +<Table border> + +<tr> +<td><a name="sec:in-edges"><TT>in_edges(v, g)</TT></a></TD> +<TD> +Returns an iterator-range providing access to the +in-edges (for directed graphs) or incident edges (for +undirected graphs) of vertex <TT>v</TT> in graph <TT>g</TT>. +For both directed and undirected graphs, the target of +an out-edge is required to be vertex <tt>v</tt> and the +source is required to be a vertex that is adjacent to <tt>v</tt>. +<br> +Return type: <TT>std::pair<in_edge_iterator, in_edge_iterator></TT> +</TD> +</TR> + +<tr> +<TD><TT>in_degree(v, g)</TT></TD> +<TD> +Returns the number of in-edges (for directed graphs) or the +number of incident edges (for undirected graphs) of vertex <TT>v</TT> +in graph <TT>g</TT>.<br> +Return type: <TT>degree_size_type</TT> +</TD> +</TR> + +<tr> +<TD><TT>degree(v, g)</TT></TD>+<TD>Returns the number of in-edges plus out-edges (for directed graphs) or the
+number of incident edges (for undirected graphs) of vertex <TT>v</TT> +in graph <TT>g</TT>.<br> +Return type: <TT>degree_size_type</TT> +</TD> +</TR> + +</Table> + +<H3>Models</H3> + +<ul>+<li><a href="./adjacency_list.html"><tt>adjacency_list</tt></a> with <tt>Directed=bidirectionalS</tt></li> +<li><a href="./adjacency_list.html"><tt>adjacency_list</tt></a> with <tt>Directed=undirectedS</tt></li>
+</ul> + + +<H3>Complexity guarantees</H3> + +The <TT>in_edges()</TT> function is required to be constant time. The +<tt>in_degree()</tt> and <tt>degree()</tt> functions must be linear in +the number of in-edges (for directed graphs) or incident edges (for +undirected graphs). + +<H3>See Also</H3> + +<a href="./graph_concepts.html">Graph concepts</a> + +<H3>Concept Checking Class</H3> + +<PRE> + template <class G> + struct BidirectionalGraphConcept + { + typedef typename boost::graph_traits<G>::in_edge_iterator + in_edge_iterator; + void constraints() { + function_requires< IncidenceGraphConcept<G> >();+ function_requires< MultiPassInputIteratorConcept<in_edge_iterator> >();
+ + p = in_edges(v, g); + e = *p.first; + const_constraints(g); + } + void const_constraints(const G& g) { + p = in_edges(v, g); + e = *p.first; + } + std::pair<in_edge_iterator, in_edge_iterator> p; + typename boost::graph_traits<G>::vertex_descriptor v; + typename boost::graph_traits<G>::edge_descriptor e; + G g; + }; +</PRE> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD>+<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
+</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/Buffer.html ============================================================================== --- trunk/libs/graph/doc/Buffer.html (original) +++ trunk/libs/graph/doc/Buffer.html Mon Mar 30 07:58:04 2009 @@ -1,118 +1,118 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Buffer</Title> -</HEAD> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<h3>Buffer Concept</h3> - -A Buffer is something in which items can be put and removed. -The Buffer <i>concept</i> has very few requirements. It does -not require any particular ordering of how the items are stored or in -what order they will appear when removed, however, there is typically -some sort of ordering policy. - -<h3>Notation</h3> - -<table>-<tr> <td> <tt>B</tt> </td> <td> is a type that models Buffer. </td></tr> -<tr> <td> <tt>T</tt> </td> <td> is the value type of <tt>B</tt>. </td></tr> -<tr> <td> <tt>t</tt> </td> <td> is an object of type <tt>T</tt>. </td></tr>
-</table> - - -<h3>Members</h3> - -For a type to model the Buffer concept it must have the following members. - -<p> - -<table border="1"> - -<tr> <td><b>Member</b></td> <td><b>Description</b></td> </tr> - -<tr> <td> <tt>value_type</tt> </td> - <td> The type of object stored in the Buffer. The value type- must be <A href="http://www.sgi.com/tech/stl/Assignable.html";>Assignable</a>.</td>
- </tr> - -<tr> <td> <tt>size_type</tt> </td> - <td> An unsigned integral type for representing the number of - objects in the Buffer.</td> - </tr> - -<tr> <td> <tt>void push(const T& t)</tt> </td> - <td> Inserts <tt>t</tt> into the Buffer. <tt>size()</tt> will be - incremented by one.</td> - </tr> - -<tr> <td> <tt>void pop()</tt> </td> - <td> Removes an object from the Buffer. <tt>size()</tt> will be - decremented by one. Precondition: <tt>empty()</tt> - is <tt>false</tt>. </td> - </tr> - -<tr> <td> <tt>T& top()</tt> </td> - <td> Returns a mutable reference to some object in the Buffer. - Precondition: <tt>empty()</tt> is <tt>false</tt>.</td> - </tr> - -<tr> <td> <tt>const T& top() const</tt> </td> - <td> Returns a const reference to some object in the Buffer. - Precondition: <tt>empty()</tt> is <tt>false</tt>.</td> - </tr> - -<tr> <td> <tt>size_type size() const</tt> </td> - <td> Returns the number of objects in the Buffer. - Invariant: <tt>size() >= 0</tt>. </td> - </tr> - -<tr> <td> <tt>bool empty() const</tt> </td> - <td> Equivalent to <tt>b.size() == 0</tt>.</td> - </tr> - -</table> - -<h3>Complexity Guarantees</h3> - -<UL> - -<LI> <tt>push()</tt>, <tt>pop()</tt>, and <tt>size()</tt> must be at -most linear time complexity in the size of the Generalized Queue. - -<LI> <tt>top()</tt> and <tt>empty()</tt> must be amortized constant time. - -</UL> - -<h3>Models</h3> - -<UL>-<LI><a href="http://www.sgi.com/tech/stl/stack.html";><tt>std::stack</tt></a> -<LI><a href="../../../boost/pending/mutable_queue.hpp"><tt>boost::mutable_queue</tt></a>
-</UL> - -<p> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD>-<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University and C++ Library & Compiler Group/SGI (<A HREF="mailto:jsiek@xxxxxxxxxxxx";>jsiek@xxxxxxxxxxxx</A>)
-</TD></TR></TABLE> - -</BODY> -</HTML> - +<HTML> +<!-- + -- Copyright (c) Jeremy Siek 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Buffer</Title> +</HEAD> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<h3>Buffer Concept</h3> + +A Buffer is something in which items can be put and removed. +The Buffer <i>concept</i> has very few requirements. It does +not require any particular ordering of how the items are stored or in +what order they will appear when removed, however, there is typically +some sort of ordering policy. + +<h3>Notation</h3> + +<table>+<tr> <td> <tt>B</tt> </td> <td> is a type that models Buffer. </td></tr> +<tr> <td> <tt>T</tt> </td> <td> is the value type of <tt>B</tt>. </td></tr> +<tr> <td> <tt>t</tt> </td> <td> is an object of type <tt>T</tt>. </td></tr>
+</table> + + +<h3>Members</h3> + +For a type to model the Buffer concept it must have the following members. + +<p> + +<table border="1"> + +<tr> <td><b>Member</b></td> <td><b>Description</b></td> </tr> + +<tr> <td> <tt>value_type</tt> </td> + <td> The type of object stored in the Buffer. The value type+ must be <A href="http://www.sgi.com/tech/stl/Assignable.html";>Assignable</a>.</td>
+ </tr> + +<tr> <td> <tt>size_type</tt> </td> + <td> An unsigned integral type for representing the number of + objects in the Buffer.</td> + </tr> + +<tr> <td> <tt>void push(const T& t)</tt> </td> + <td> Inserts <tt>t</tt> into the Buffer. <tt>size()</tt> will be + incremented by one.</td> + </tr> + +<tr> <td> <tt>void pop()</tt> </td> + <td> Removes an object from the Buffer. <tt>size()</tt> will be + decremented by one. Precondition: <tt>empty()</tt> + is <tt>false</tt>. </td> + </tr> + +<tr> <td> <tt>T& top()</tt> </td> + <td> Returns a mutable reference to some object in the Buffer. + Precondition: <tt>empty()</tt> is <tt>false</tt>.</td> + </tr> + +<tr> <td> <tt>const T& top() const</tt> </td> + <td> Returns a const reference to some object in the Buffer. + Precondition: <tt>empty()</tt> is <tt>false</tt>.</td> + </tr> + +<tr> <td> <tt>size_type size() const</tt> </td> + <td> Returns the number of objects in the Buffer. + Invariant: <tt>size() >= 0</tt>. </td> + </tr> + +<tr> <td> <tt>bool empty() const</tt> </td> + <td> Equivalent to <tt>b.size() == 0</tt>.</td> + </tr> + +</table> + +<h3>Complexity Guarantees</h3> + +<UL> + +<LI> <tt>push()</tt>, <tt>pop()</tt>, and <tt>size()</tt> must be at +most linear time complexity in the size of the Generalized Queue. + +<LI> <tt>top()</tt> and <tt>empty()</tt> must be amortized constant time. + +</UL> + +<h3>Models</h3> + +<UL>+<LI><a href="http://www.sgi.com/tech/stl/stack.html";><tt>std::stack</tt></a> +<LI><a href="../../../boost/pending/mutable_queue.hpp"><tt>boost::mutable_queue</tt></a>
+</UL> + +<p> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD>+<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University and C++ Library & Compiler Group/SGI (<A HREF="mailto:jsiek@xxxxxxxxxxxx";>jsiek@xxxxxxxxxxxx</A>)
+</TD></TR></TABLE> + +</BODY> +</HTML> + Modified: trunk/libs/graph/doc/ColorValue.html ============================================================================== --- trunk/libs/graph/doc/ColorValue.html (original) +++ trunk/libs/graph/doc/ColorValue.html Mon Mar 30 07:58:04 2009 @@ -1,108 +1,108 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Boost Graph Library: ColorValue Concept</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - - -<H1><A NAME="concept:ColorValue"></A> -ColorValue -</H1> - -<P> -This concept describes the requirements for the type used for color -values, as in for coloring a graph during a breath-first search to -mark which vertices have been visited. - -<P> - -<h3>Refinement of</h3> <a -href="http://www.sgi.com/tech/stl/EqualityComparable.html";>EqualityComparable</a> -and <a -href="http://www.sgi.com/tech/stl/DefaultConstructible.html";>DefaultConstructible</a> - - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>T</tt></TD> -<TD>A type that is a model of ColorValue.</TD> -</TR> - -<TR> -<TD><tt>cv</tt></TD> -<TD>An object of type <tt>T</tt>.</TD> -</TR> - -</table> - -<h3>Valid Expressions</h3> - -<Table border> - -<tr> -<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> -</tr> - -<tr> -<td>Get Color White </td> -<TD><TT>color_traits<T>::white()</TT></TD> -<TD><TT>T</TT></TD> -<TD>Returns an object that represents the color white.</TD> -</TR> - -<tr> -<td>Get Color Gray </td> -<TD><TT>color_traits<T>::gray()</TT></TD> -<TD><TT>T</TT></TD> -<TD>Returns an object that represents the color gray.</TD> -</TR> - -<tr> -<td>Get Color Black </td> -<TD><TT>color_traits<T>::black()</TT></TD> -<TD><TT>T</TT></TD> -<TD>Returns an object that represents the color black.</TD> -</TR> - -</TABLE> - -<P> -</LI> -</UL> - -<h3>Models</h3> - -<ul>- <li><tt>default_color_type</tt> (in <a href="../../../boost/graph/properties.hpp"><tt>boost/graph/properties.hpp</tt>)
-</ul> - - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>-<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
-<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, -Indiana University (<A -HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Boost Graph Library: ColorValue Concept</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + + +<H1><A NAME="concept:ColorValue"></A> +ColorValue +</H1> + +<P> +This concept describes the requirements for the type used for color +values, as in for coloring a graph during a breath-first search to +mark which vertices have been visited. + +<P> + +<h3>Refinement of</h3> <a +href="http://www.sgi.com/tech/stl/EqualityComparable.html";>EqualityComparable</a> +and <a +href="http://www.sgi.com/tech/stl/DefaultConstructible.html";>DefaultConstructible</a> + + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>T</tt></TD> +<TD>A type that is a model of ColorValue.</TD> +</TR> + +<TR> +<TD><tt>cv</tt></TD> +<TD>An object of type <tt>T</tt>.</TD> +</TR> + +</table> + +<h3>Valid Expressions</h3> + +<Table border> + +<tr> +<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> +</tr> + +<tr> +<td>Get Color White </td> +<TD><TT>color_traits<T>::white()</TT></TD> +<TD><TT>T</TT></TD> +<TD>Returns an object that represents the color white.</TD> +</TR> + +<tr> +<td>Get Color Gray </td> +<TD><TT>color_traits<T>::gray()</TT></TD> +<TD><TT>T</TT></TD> +<TD>Returns an object that represents the color gray.</TD> +</TR> + +<tr> +<td>Get Color Black </td> +<TD><TT>color_traits<T>::black()</TT></TD> +<TD><TT>T</TT></TD> +<TD>Returns an object that represents the color black.</TD> +</TR> + +</TABLE> + +<P> +</LI> +</UL> + +<h3>Models</h3> + +<ul>+ <li><tt>default_color_type</tt> (in <a href="../../../boost/graph/properties.hpp"><tt>boost/graph/properties.hpp</tt>)
+</ul> + + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>+<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
+<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, +Indiana University (<A +HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/DFSVisitor.html ============================================================================== --- trunk/libs/graph/doc/DFSVisitor.html (original) +++ trunk/libs/graph/doc/DFSVisitor.html Mon Mar 30 07:58:04 2009 @@ -1,212 +1,212 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>DFS Visitor</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H1><img src="figs/python.gif" alt="(Python)"/>DFS Visitor Concept</H1> - -This concept defines the visitor interface for <a -href="./depth_first_search.html"><tt>depth_first_search()</tt></a>. -Users can define a class with the DFS Visitor interface and pass an -object of the class to <tt>depth_first_search()</tt>, thereby -augmenting the actions taken during the graph search. - -<h3>Refinement of</h3> - -<a href="../../utility/CopyConstructible.html">Copy Constructible</a> -(copying a visitor should be a lightweight operation). - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>V</tt></TD> -<TD>A type that is a model of DFS Visitor.</TD> -</TR> - -<TR> -<TD><tt>vis</tt></TD> -<TD>An object of type <tt>V</tt>.</TD> -</TR> - -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of Graph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>e</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>s,u</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
-</TR> - -</table> - -<h3>Associated Types</h3> - -none -<p> - -<h3>Valid Expressions</h3> - -<table border> -<tr> -<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> -</tr> - -<tr> -<td>Initialize Vertex</td> -<td><tt>vis.initialize_vertex(s, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on every vertex of the graph before the start of the -graph search. -</td> -</tr> - -<tr> -<td>Start Vertex</td> -<td><tt>vis.start_vertex(s, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on the source vertex once before the start of the -search. -</td> -</tr> - -<tr> -<td>Discover Vertex</td> -<td><tt>vis.discover_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked when a vertex is encountered for the first time. -</td> -</tr> - -<tr> -<td>Examine Edge</td> -<td><tt>vis.examine_edge(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on every out-edge of each vertex after it is discovered. -</td> -</tr> - - -<tr> -<td>Tree Edge</td> -<td><tt>vis.tree_edge(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on each edge as it becomes a member of the edges that -form the search tree.</td> -</tr> - -<tr> -<td>Back Edge</td> -<td><tt>vis.back_edge(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on the back edges in the graph. For an undirected -graph there is some ambiguity between tree edges and back edges since -the edge <i>(u,v)</i> and <i>(v,u)</i> are the same edge, but both the -<tt>tree_edge()</tt> and <tt>back_edge()</tt> functions will be -invoked. One way to resolve this ambiguity is to record the tree -edges, and then disregard the back-edges that are already marked as -tree edges. An easy way to record tree edges is to record -predecessors at the <tt>tree_edge</tt> event point. -</td> -</tr> - -<tr> -<td>Forward or Cross Edge</td> -<td><tt>vis.forward_or_cross_edge(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on forward or cross edges in the graph. In an -undirected graph this method is never called. -</td> -</tr> - -<tr> -<td>Finish Vertex</td> -<td><tt>vis.finish_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on vertex <tt>u</tt> after <tt>finish_vertex</tt> has -been called for all the vertices in the DFS-tree rooted at vertex -<tt>u</tt>. If vertex <tt>u</tt> is a leaf in the DFS-tree, then -the <tt>finish_vertex</tt> function is call on <tt>u</tt> after -all the out-edges of <tt>u</tt> have been examined. -</td> -</tr> - -</table> - -<h3>Models</h3> - -<ul> - <li><a href="./dfs_visitor.html"><tt>dfs_visitor</tt></a> -</ul> - -<a name="python"></a> -<h3>Python</h3> - -To implement a model of the <tt>DFSVisitor</tt> concept in Python, -create a new class that derives from the <tt>DFSVisitor</tt> type of -the graph, which will be -named <tt><i>GraphType</i>.DFSVisitor</tt>. The events and syntax are -the same as with visitors in C++. Here is an example for the -Python <tt>bgl.Graph</tt> graph type: - -<pre> -class count_tree_edges_dfs_visitor(bgl.Graph.DFSVisitor): - def __init__(self, name_map): - bgl.Graph.DFSVisitor.__init__(self) - self.name_map = name_map - - def tree_edge(self, e, g): - (u, v) = (g.source(e), g.target(e)) - print "Tree edge ", - print self.name_map[u], - print " -> ", - print self.name_map[v] -</pre> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>-<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
-<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, -Indiana University (<A -HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>DFS Visitor</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H1><img src="figs/python.gif" alt="(Python)"/>DFS Visitor Concept</H1> + +This concept defines the visitor interface for <a +href="./depth_first_search.html"><tt>depth_first_search()</tt></a>. +Users can define a class with the DFS Visitor interface and pass an +object of the class to <tt>depth_first_search()</tt>, thereby +augmenting the actions taken during the graph search. + +<h3>Refinement of</h3> + +<a href="../../utility/CopyConstructible.html">Copy Constructible</a> +(copying a visitor should be a lightweight operation). + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>V</tt></TD> +<TD>A type that is a model of DFS Visitor.</TD> +</TR> + +<TR> +<TD><tt>vis</tt></TD> +<TD>An object of type <tt>V</tt>.</TD> +</TR> + +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of Graph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>e</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
+</TR> + +<TR> +<TD><tt>s,u</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
+</TR> + +</table> + +<h3>Associated Types</h3> + +none +<p> + +<h3>Valid Expressions</h3> + +<table border> +<tr> +<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> +</tr> + +<tr> +<td>Initialize Vertex</td> +<td><tt>vis.initialize_vertex(s, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on every vertex of the graph before the start of the +graph search. +</td> +</tr> + +<tr> +<td>Start Vertex</td> +<td><tt>vis.start_vertex(s, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on the source vertex once before the start of the +search. +</td> +</tr> + +<tr> +<td>Discover Vertex</td> +<td><tt>vis.discover_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked when a vertex is encountered for the first time. +</td> +</tr> + +<tr> +<td>Examine Edge</td> +<td><tt>vis.examine_edge(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on every out-edge of each vertex after it is discovered. +</td> +</tr> + + +<tr> +<td>Tree Edge</td> +<td><tt>vis.tree_edge(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on each edge as it becomes a member of the edges that +form the search tree.</td> +</tr> + +<tr> +<td>Back Edge</td> +<td><tt>vis.back_edge(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on the back edges in the graph. For an undirected +graph there is some ambiguity between tree edges and back edges since +the edge <i>(u,v)</i> and <i>(v,u)</i> are the same edge, but both the +<tt>tree_edge()</tt> and <tt>back_edge()</tt> functions will be +invoked. One way to resolve this ambiguity is to record the tree +edges, and then disregard the back-edges that are already marked as +tree edges. An easy way to record tree edges is to record +predecessors at the <tt>tree_edge</tt> event point. +</td> +</tr> + +<tr> +<td>Forward or Cross Edge</td> +<td><tt>vis.forward_or_cross_edge(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on forward or cross edges in the graph. In an +undirected graph this method is never called. +</td> +</tr> + +<tr> +<td>Finish Vertex</td> +<td><tt>vis.finish_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on vertex <tt>u</tt> after <tt>finish_vertex</tt> has +been called for all the vertices in the DFS-tree rooted at vertex +<tt>u</tt>. If vertex <tt>u</tt> is a leaf in the DFS-tree, then +the <tt>finish_vertex</tt> function is call on <tt>u</tt> after +all the out-edges of <tt>u</tt> have been examined. +</td> +</tr> + +</table> + +<h3>Models</h3> + +<ul> + <li><a href="./dfs_visitor.html"><tt>dfs_visitor</tt></a> +</ul> + +<a name="python"></a> +<h3>Python</h3> + +To implement a model of the <tt>DFSVisitor</tt> concept in Python, +create a new class that derives from the <tt>DFSVisitor</tt> type of +the graph, which will be +named <tt><i>GraphType</i>.DFSVisitor</tt>. The events and syntax are +the same as with visitors in C++. Here is an example for the +Python <tt>bgl.Graph</tt> graph type: + +<pre> +class count_tree_edges_dfs_visitor(bgl.Graph.DFSVisitor): + def __init__(self, name_map): + bgl.Graph.DFSVisitor.__init__(self) + self.name_map = name_map + + def tree_edge(self, e, g): + (u, v) = (g.source(e), g.target(e)) + print "Tree edge ", + print self.name_map[u], + print " -> ", + print self.name_map[v] +</pre> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>+<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
+<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, +Indiana University (<A +HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/DijkstraVisitor.html ============================================================================== --- trunk/libs/graph/doc/DijkstraVisitor.html (original) +++ trunk/libs/graph/doc/DijkstraVisitor.html Mon Mar 30 07:58:04 2009 @@ -1,222 +1,222 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Boost Graph Library: Dijkstra Visitor</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> --<H1><img src="figs/python.gif" alt="(Python)"/>Dijkstra Visitor Concept</H1>
- -This concept defines the visitor interface for <a -href="./dijkstra_shortest_paths.html"><tt>dijkstra_shortest_paths()</tt></a> -and related algorithms. The user can create a class that matches this -interface, and then pass objects of the class into -<tt>dijkstra_shortest_paths()</tt> to augment the actions taken during -the search. - -<h3>Refinement of</h3> - -<a href="../../utility/CopyConstructible.html">Copy Constructible</a> -(copying a visitor should be a lightweight operation). - - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>V</tt></TD> -<TD>A type that is a model of Dijkstra Visitor.</TD> -</TR> - -<TR> -<TD><tt>vis</tt></TD> -<TD>An object of type <tt>V</tt>.</TD> -</TR> - -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of Graph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>e</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>s,u,v</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>DistanceMap</tt></TD>-<TD>A type that is a model of <a href="../../property_map/ReadWritePropertyMap.html">Read/Write Property Map</a>.</TD>
-</TR> - -<TR> -<TD><tt>d</tt></TD> -<TD>An object of type <tt>DistanceMap</tt>.</TD> -</TR> - -<TR> -<TD><tt>WeightMap</tt></TD>-<TD>A type that is a model of <a href="../../property_map/ReadWritePropertyMap.html">Readable Property Map</a>.</TD>
-</TR> - -<TR> -<TD><tt>w</tt></TD> -<TD>An object of type <tt>DistanceMap</tt>.</TD> -</TR> - -</table> - -<h3>Associated Types</h3> - -none -<p> - -<h3>Valid Expressions</h3> - -<table border> -<tr> -<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> -</tr> - -<tr> -<td>Initialize Vertex</td> -<td><tt>vis.initialize_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked one each vertex of the graph when it is initialized. -</td> -</tr> - -<tr> -<td>Examine Vertex</td> -<td><tt>vis.examine_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on a vertex as it is popped from the queue. This -happens immediately before <tt>examine_edge()</tt> is invoked -on each of the out-edges of vertex <tt>u</tt>. -</td> -</tr> - -<tr> -<td>Examine Edge</td> -<td><tt>vis.examine_edge(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked on every out-edge of each vertex after it is discovered. -</td> -</tr> - -<tr> -<td>Discover Vertex</td> -<td><tt>vis.discover_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This is invoked when a vertex is encountered for the first time. -</td> -</tr> - -<tr> -<td>Edge Relaxed</td> -<td><tt>vis.edge_relaxed(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -Upon examination, if the following condition holds then the edge -is relaxed (its distance is reduced), and this method is invoked.<br> -<tt> -tie(u,v) = incident(e, g);<br> -D d_u = get(d, u), d_v = get(d, v);<br> -W w_e = get(w, e);<br> -assert(compare(combine(d_u, w_e), d_v));<br> -</tt> -</td> -</tr> - -<tr> -<td>Edge Not Relaxed</td> -<td><tt>vis.edge_not_relaxed(e, g)</tt></td> -<td><tt>void</tt></td> -<td> -Upon examination, if the edge is not relaxed (see above) then -this method is invoked. -</td> -</tr> - -<tr> -<td>Finish Vertex</td> -<td><tt>vis.finish_vertex(u, g)</tt></td> -<td><tt>void</tt></td> -<td> -This invoked on a vertex after all of its out edges have been added to the -search tree and all of the adjacent vertices have been discovered -(but before their out-edges have been examined). -</td> -</tr> - -</table> - -<h3>Models</h3> - -<ul> - <li><a href="./dijkstra_visitor.html"><tt>dijkstra_visitor</tt></a> -</ul> - -<a name="python"></a> -<h3>Python</h3> - -To implement a model of the <tt>DijkstraVisitor</tt> concept in Python, -create a new class that derives from the <tt>DijkstraVisitor</tt> type of -the graph, which will be -named <tt><i>GraphType</i>.DijkstraVisitor</tt>. The events and syntax are -the same as with visitors in C++. Here is an example for the -Python <tt>bgl.Graph</tt> graph type: - -<pre> -class count_tree_edges_dijkstra_visitor(bgl.Graph.DijkstraVisitor): - def __init__(self, name_map): - bgl.Graph.DijkstraVisitor.__init__(self) - self.name_map = name_map - - def edge_relaxed(self, e, g): - (u, v) = (g.source(e), g.target(e)) - print "Relaxed edge ", - print self.name_map[u], - print " -> ", - print self.name_map[v] -</pre> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>-<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
-<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, -Indiana University (<A -HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Boost Graph Library: Dijkstra Visitor</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> ++<H1><img src="figs/python.gif" alt="(Python)"/>Dijkstra Visitor Concept</H1>
+ +This concept defines the visitor interface for <a +href="./dijkstra_shortest_paths.html"><tt>dijkstra_shortest_paths()</tt></a> +and related algorithms. The user can create a class that matches this +interface, and then pass objects of the class into +<tt>dijkstra_shortest_paths()</tt> to augment the actions taken during +the search. + +<h3>Refinement of</h3> + +<a href="../../utility/CopyConstructible.html">Copy Constructible</a> +(copying a visitor should be a lightweight operation). + + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>V</tt></TD> +<TD>A type that is a model of Dijkstra Visitor.</TD> +</TR> + +<TR> +<TD><tt>vis</tt></TD> +<TD>An object of type <tt>V</tt>.</TD> +</TR> + +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of Graph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>e</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
+</TR> + +<TR> +<TD><tt>s,u,v</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
+</TR> + +<TR> +<TD><tt>DistanceMap</tt></TD>+<TD>A type that is a model of <a href="../../property_map/ReadWritePropertyMap.html">Read/Write Property Map</a>.</TD>
+</TR> + +<TR> +<TD><tt>d</tt></TD> +<TD>An object of type <tt>DistanceMap</tt>.</TD> +</TR> + +<TR> +<TD><tt>WeightMap</tt></TD>+<TD>A type that is a model of <a href="../../property_map/ReadWritePropertyMap.html">Readable Property Map</a>.</TD>
+</TR> + +<TR> +<TD><tt>w</tt></TD> +<TD>An object of type <tt>DistanceMap</tt>.</TD> +</TR> + +</table> + +<h3>Associated Types</h3> + +none +<p> + +<h3>Valid Expressions</h3> + +<table border> +<tr> +<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> +</tr> + +<tr> +<td>Initialize Vertex</td> +<td><tt>vis.initialize_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked one each vertex of the graph when it is initialized. +</td> +</tr> + +<tr> +<td>Examine Vertex</td> +<td><tt>vis.examine_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on a vertex as it is popped from the queue. This +happens immediately before <tt>examine_edge()</tt> is invoked +on each of the out-edges of vertex <tt>u</tt>. +</td> +</tr> + +<tr> +<td>Examine Edge</td> +<td><tt>vis.examine_edge(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked on every out-edge of each vertex after it is discovered. +</td> +</tr> + +<tr> +<td>Discover Vertex</td> +<td><tt>vis.discover_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This is invoked when a vertex is encountered for the first time. +</td> +</tr> + +<tr> +<td>Edge Relaxed</td> +<td><tt>vis.edge_relaxed(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +Upon examination, if the following condition holds then the edge +is relaxed (its distance is reduced), and this method is invoked.<br> +<tt> +tie(u,v) = incident(e, g);<br> +D d_u = get(d, u), d_v = get(d, v);<br> +W w_e = get(w, e);<br> +assert(compare(combine(d_u, w_e), d_v));<br> +</tt> +</td> +</tr> + +<tr> +<td>Edge Not Relaxed</td> +<td><tt>vis.edge_not_relaxed(e, g)</tt></td> +<td><tt>void</tt></td> +<td> +Upon examination, if the edge is not relaxed (see above) then +this method is invoked. +</td> +</tr> + +<tr> +<td>Finish Vertex</td> +<td><tt>vis.finish_vertex(u, g)</tt></td> +<td><tt>void</tt></td> +<td> +This invoked on a vertex after all of its out edges have been added to the +search tree and all of the adjacent vertices have been discovered +(but before their out-edges have been examined). +</td> +</tr> + +</table> + +<h3>Models</h3> + +<ul> + <li><a href="./dijkstra_visitor.html"><tt>dijkstra_visitor</tt></a> +</ul> + +<a name="python"></a> +<h3>Python</h3> + +To implement a model of the <tt>DijkstraVisitor</tt> concept in Python, +create a new class that derives from the <tt>DijkstraVisitor</tt> type of +the graph, which will be +named <tt><i>GraphType</i>.DijkstraVisitor</tt>. The events and syntax are +the same as with visitors in C++. Here is an example for the +Python <tt>bgl.Graph</tt> graph type: + +<pre> +class count_tree_edges_dijkstra_visitor(bgl.Graph.DijkstraVisitor): + def __init__(self, name_map): + bgl.Graph.DijkstraVisitor.__init__(self) + self.name_map = name_map + + def edge_relaxed(self, e, g): + (u, v) = (g.source(e), g.target(e)) + print "Relaxed edge ", + print self.name_map[u], + print " -> ", + print self.name_map[v] +</pre> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>+<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
+<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, +Indiana University (<A +HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/EdgeListGraph.html ============================================================================== --- trunk/libs/graph/doc/EdgeListGraph.html (original) +++ trunk/libs/graph/doc/EdgeListGraph.html Mon Mar 30 07:58:04 2009 @@ -1,184 +1,184 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>EdgeListGraph</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - - -<H2><A NAME="concept:EdgeListGraph"></A> -EdgeListGraph -</H2> - -The EdgeListGraph concept refines the <a href="./Graph.html">Graph</a> -concept, and adds the requirement for efficient access to all the -edges in the graph. - - -<H3>Refinement of</H3> - -<a href="./Graph.html">Graph</a> - - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of EdgeListGraph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>e</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
-</TR> - -</table> - -<H3>Associated Types</H3> - -<table border> - -<tr> -<td><tt>boost::graph_traits<G>::traversal_category</tt><br><br> - This tag type must be convertible to <tt>edge_list_graph_tag</tt>. -</td> -</tr> - -<tr> -<td><pre>boost::graph_traits<G>::edge_iterator</pre> -An edge iterator (obtained via <TT>edges(g)</TT>) provides access to -all of the edges in a graph. An edge iterator type must meet the -requirements of <a-href="../../utility/MultiPassInputIterator.html">MultiPassInputIterator</a>. The
-value type of the edge iterator must be the same as the edge -descriptor of the graph. - -<tr> -<td><pre>boost::graph_traits<G>::edges_size_type</pre> -The unsigned integer type used to represent the number of edges in the -graph. -</td> -</tr> - -</table> - -<h3>Valid Expressions</h3> - -<table border> - -<tr> -<TD><a name="sec:edges"><TT>edges(g)</TT></a></TD> -<TD>Returns an iterator-range providing access to all - the edges in the graph <TT>g</TT>.<br> -Return type: <TT>std::pair<edge_iterator, edge_iterator></TT> -</td> -</TR> - -<tr> -<TD><TT>num_edges(g)</TT></TD> -<TD>Returns the number of edges in the graph <TT>g</TT>.<br> -Return type: <TT>edges_size_type</TT> -</td> -</TR> - -<tr> -<TD><TT>source(e, g)</TT></TD> -<TD> -Returns the vertex descriptor for <i>u</i> of the edge <i>(u,v)</i> -represented by <TT>e</TT>.<br> -Return type: <TT>vertex_descriptor</TT> -</td> -</tr> - -<tr> -<TD><TT>target(e, g)</TT></TD> -<TD> -Returns the vertex descriptor for -<i>v</i> of the edge <i>(u,v)</i> represented by <TT>e</TT>.<br> -Return type: <TT>vertex_descriptor</TT> -</TD> -</TR> - -</TABLE> - - -<H3>Models</H3> - -<UL> -<LI><a href="./adjacency_list.html"><TT>adjacency_list</TT></a></LI> -<LI><a href="./edge_list.html"><TT>edge_list</TT></a></LI> -</UL> - - -<H3>Complexity guarantees</H3> - -The <TT>edges()</TT>, <TT>source()</TT>, and <TT>target()</TT> functions -must all return in constant time. - - -<H3>See Also</H3> - -<a href="./graph_concepts.html">Graph concepts</a> - -<H3>Concept Checking Class</H3> - -<P> -<PRE> - template <class G> - struct EdgeListGraphConcept - { - typedef typename boost::graph_traits<G>::edge_iterator - edge_iterator; - void constraints() { - function_requires< GraphConcept<G> >();- function_requires< MultiPassInputIteratorConcept<edge_iterator> >();
- - p = edges(g); - E = num_edges(g); - e = *p.first; - u = source(e, g); - v = target(e, g); - const_constraints(g); - } - void const_constraints(const G& g) { - p = edges(g); - E = num_edges(g); - e = *p.first; - u = source(e, g); - v = target(e, g); - } - std::pair<edge_iterator,edge_iterator> p; - typename boost::graph_traits<G>::vertex_descriptor u, v; - typename boost::graph_traits<G>::edge_descriptor e; - typename boost::graph_traits<G>::edges_size_type E; - G g; - }; -</PRE> - - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD>-<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
-</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>EdgeListGraph</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + + +<H2><A NAME="concept:EdgeListGraph"></A> +EdgeListGraph +</H2> + +The EdgeListGraph concept refines the <a href="./Graph.html">Graph</a> +concept, and adds the requirement for efficient access to all the +edges in the graph. + + +<H3>Refinement of</H3> + +<a href="./Graph.html">Graph</a> + + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of EdgeListGraph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>e</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
+</TR> + +</table> + +<H3>Associated Types</H3> + +<table border> + +<tr> +<td><tt>boost::graph_traits<G>::traversal_category</tt><br><br> + This tag type must be convertible to <tt>edge_list_graph_tag</tt>. +</td> +</tr> + +<tr> +<td><pre>boost::graph_traits<G>::edge_iterator</pre> +An edge iterator (obtained via <TT>edges(g)</TT>) provides access to +all of the edges in a graph. An edge iterator type must meet the +requirements of <a+href="../../utility/MultiPassInputIterator.html">MultiPassInputIterator</a>. The
+value type of the edge iterator must be the same as the edge +descriptor of the graph. + +<tr> +<td><pre>boost::graph_traits<G>::edges_size_type</pre> +The unsigned integer type used to represent the number of edges in the +graph. +</td> +</tr> + +</table> + +<h3>Valid Expressions</h3> + +<table border> + +<tr> +<TD><a name="sec:edges"><TT>edges(g)</TT></a></TD> +<TD>Returns an iterator-range providing access to all + the edges in the graph <TT>g</TT>.<br> +Return type: <TT>std::pair<edge_iterator, edge_iterator></TT> +</td> +</TR> + +<tr> +<TD><TT>num_edges(g)</TT></TD> +<TD>Returns the number of edges in the graph <TT>g</TT>.<br> +Return type: <TT>edges_size_type</TT> +</td> +</TR> + +<tr> +<TD><TT>source(e, g)</TT></TD> +<TD> +Returns the vertex descriptor for <i>u</i> of the edge <i>(u,v)</i> +represented by <TT>e</TT>.<br> +Return type: <TT>vertex_descriptor</TT> +</td> +</tr> + +<tr> +<TD><TT>target(e, g)</TT></TD> +<TD> +Returns the vertex descriptor for +<i>v</i> of the edge <i>(u,v)</i> represented by <TT>e</TT>.<br> +Return type: <TT>vertex_descriptor</TT> +</TD> +</TR> + +</TABLE> + + +<H3>Models</H3> + +<UL> +<LI><a href="./adjacency_list.html"><TT>adjacency_list</TT></a></LI> +<LI><a href="./edge_list.html"><TT>edge_list</TT></a></LI> +</UL> + + +<H3>Complexity guarantees</H3> + +The <TT>edges()</TT>, <TT>source()</TT>, and <TT>target()</TT> functions +must all return in constant time. + + +<H3>See Also</H3> + +<a href="./graph_concepts.html">Graph concepts</a> + +<H3>Concept Checking Class</H3> + +<P> +<PRE> + template <class G> + struct EdgeListGraphConcept + { + typedef typename boost::graph_traits<G>::edge_iterator + edge_iterator; + void constraints() { + function_requires< GraphConcept<G> >();+ function_requires< MultiPassInputIteratorConcept<edge_iterator> >();
+ + p = edges(g); + E = num_edges(g); + e = *p.first; + u = source(e, g); + v = target(e, g); + const_constraints(g); + } + void const_constraints(const G& g) { + p = edges(g); + E = num_edges(g); + e = *p.first; + u = source(e, g); + v = target(e, g); + } + std::pair<edge_iterator,edge_iterator> p; + typename boost::graph_traits<G>::vertex_descriptor u, v; + typename boost::graph_traits<G>::edge_descriptor e; + typename boost::graph_traits<G>::edges_size_type E; + G g; + }; +</PRE> + + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD>+<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
+</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/EdgeMutableGraph.html ============================================================================== --- trunk/libs/graph/doc/EdgeMutableGraph.html (original) +++ trunk/libs/graph/doc/EdgeMutableGraph.html Mon Mar 30 07:58:04 2009 @@ -1,108 +1,108 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek 2001 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Edge Mutable Graph</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - - -<H2><A NAME="concept:EdgeMutableGraph"> -Edge Mutable Graph -</H2> - -The <I>Edge Mutable Graph</I> concept defines the interface for a -graph that supports the addition and removal of edges. - -<H3>Refinement of</H3> - -<a href="./Graph.html">Graph</a> - -<H3>Associated Types</H3> - -No additional associated types. - -<h3>Valid Expressions</h3> - -<ul> - -<li><a name="sec:add_edge"><TT>add_edge(u, v, g)</TT></a> -<b>returns</b> <TT>std::pair<edge_descriptor, bool></TT> -<br><br> - -<b>Semantics:</b> Try to insert the edge <i>(u,v)</i> into the graph, -returning the inserted edge or a parallel edge and a flag that -specifies whether an edge was inserted. This operation must not -invalidate vertex descriptors or vertex iterators of the graph, though -it may invalidate edge descriptors or edge iterators.<br> - -<b>Preconditions:</b> <i>u</i> and <i>v</i> are vertices in the -graph. <br> - -<b>Postconditions:</b> <i>(u,v)</i> is in the edge set of -the graph. The returned edge descriptor will have <i>u</i> in the -source position and <i>v</i> in the target position. If the graph -allows parallel edges, then the returned flag is always -<tt>true</tt>. If the graph does not allow parallel edges, if -<i>(u,v)</i> was already in the graph then the returned flag is -<tt>false</tt>. If <i>(u,v)</i> was not in the graph then the returned -flag is <tt>true</tt>.<br> -</li><br> - -<li><a name="sec:remove_edge_by_pair"><tt>remove_edge(u, v, g)</tt></a> -<b>returns</b> <tt>void</tt><br><br> -<b>Semantics:</b> Remove the edge <i>(u,v)</i> from the graph. If the-graph allows parallel edges this removes all occurrences of <i>(u,v)</i>. <br>
-<b>Precondition:</b> <i>(u,v)</i> is in the edge set of the graph. <br>-<b>Postcondition:</b> <i>(u,v)</i> is no longer in the edge set of the graph. <br>
-</li><br> - -<li> -<a name="sec:remove_edge"><tt>remove_edge(e, g)</tt></a> -<b>returns</b> <tt>void</tt><br><br> -<b>Semantics:</b> Remove the edge <i>e</i> from the graph.<br> -<b>Precondition:</b> <i>e</i> is an edge in the graph. <br>-<b>Postcondition:</b> <i>e</i> is no longer in the edge set for <tt>g</tt>. <br>
-</li><br> - -<li> -<a name="sec:clear_vertex"><tt>clear_vertex(u, g)</tt></a> -<b>returns</b> <tt>void</tt><br><br>-<b>Semantics:</b> Remove all edges to and from vertex <i>u</i> from the graph. <br>
-<b>Precondition:</b> <i>u</i> is a valid vertex descriptor of -<tt>g</tt>. <br> <b>Postconditions:</b> <i>u</i> does not appear as a -source or target of any edge in <tt>g</tt>. -</li> - -</ul> - - -<H3>Complexity guarantees</H3> - -<P> -UNDER CONSTRUCTION - -<H3>See Also</H3> - -<a href="./graph_concepts.html">Graph concepts</a> - - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD>-<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
-</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek 2001 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Edge Mutable Graph</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + + +<H2><A NAME="concept:EdgeMutableGraph"> +Edge Mutable Graph +</H2> + +The <I>Edge Mutable Graph</I> concept defines the interface for a +graph that supports the addition and removal of edges. + +<H3>Refinement of</H3> + +<a href="./Graph.html">Graph</a> + +<H3>Associated Types</H3> + +No additional associated types. + +<h3>Valid Expressions</h3> + +<ul> + +<li><a name="sec:add_edge"><TT>add_edge(u, v, g)</TT></a> +<b>returns</b> <TT>std::pair<edge_descriptor, bool></TT> +<br><br> + +<b>Semantics:</b> Try to insert the edge <i>(u,v)</i> into the graph, +returning the inserted edge or a parallel edge and a flag that +specifies whether an edge was inserted. This operation must not +invalidate vertex descriptors or vertex iterators of the graph, though +it may invalidate edge descriptors or edge iterators.<br> + +<b>Preconditions:</b> <i>u</i> and <i>v</i> are vertices in the +graph. <br> + +<b>Postconditions:</b> <i>(u,v)</i> is in the edge set of +the graph. The returned edge descriptor will have <i>u</i> in the +source position and <i>v</i> in the target position. If the graph +allows parallel edges, then the returned flag is always +<tt>true</tt>. If the graph does not allow parallel edges, if +<i>(u,v)</i> was already in the graph then the returned flag is +<tt>false</tt>. If <i>(u,v)</i> was not in the graph then the returned +flag is <tt>true</tt>.<br> +</li><br> + +<li><a name="sec:remove_edge_by_pair"><tt>remove_edge(u, v, g)</tt></a> +<b>returns</b> <tt>void</tt><br><br> +<b>Semantics:</b> Remove the edge <i>(u,v)</i> from the graph. If the+graph allows parallel edges this removes all occurrences of <i>(u,v)</i>. <br>
+<b>Precondition:</b> <i>(u,v)</i> is in the edge set of the graph. <br>+<b>Postcondition:</b> <i>(u,v)</i> is no longer in the edge set of the graph. <br>
+</li><br> + +<li> +<a name="sec:remove_edge"><tt>remove_edge(e, g)</tt></a> +<b>returns</b> <tt>void</tt><br><br> +<b>Semantics:</b> Remove the edge <i>e</i> from the graph.<br> +<b>Precondition:</b> <i>e</i> is an edge in the graph. <br>+<b>Postcondition:</b> <i>e</i> is no longer in the edge set for <tt>g</tt>. <br>
+</li><br> + +<li> +<a name="sec:clear_vertex"><tt>clear_vertex(u, g)</tt></a> +<b>returns</b> <tt>void</tt><br><br>+<b>Semantics:</b> Remove all edges to and from vertex <i>u</i> from the graph. <br>
+<b>Precondition:</b> <i>u</i> is a valid vertex descriptor of +<tt>g</tt>. <br> <b>Postconditions:</b> <i>u</i> does not appear as a +source or target of any edge in <tt>g</tt>. +</li> + +</ul> + + +<H3>Complexity guarantees</H3> + +<P> +UNDER CONSTRUCTION + +<H3>See Also</H3> + +<a href="./graph_concepts.html">Graph concepts</a> + + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD>+<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
+</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/EventVisitor.html ============================================================================== --- trunk/libs/graph/doc/EventVisitor.html (original) +++ trunk/libs/graph/doc/EventVisitor.html Mon Mar 30 07:58:04 2009 @@ -1,161 +1,161 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Boost Graph Library: EventVisitor</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H1>EventVisitor Concept</H1> - -This concept defines the interface for single-event visitors. An -EventVisitor has an apply member function (<tt>operator()</tt>) which -is invoked within the graph algorithm at the event-point specified by -the <tt>event_filter</tt> typedef within the -EventVisitor. EventVisitor's can be combined into an <a -href="./EventVisitorList.html">EventVistorList</a>. - -<p> -The following is the list of event tags that can be invoked in BGL -algorithms. Each tag corresponds to a member function of the visitor -for an algorithm. For example, the <a -href="./BFSVisitor.html">BFSVisitor</a> of <a -href="./breadth_first_search.html"><tt>breadth_first_search()</tt></a> -has a <tt>cycle_edge()</tt> member function. The corresponding tag is -<tt>on_cycle_edge</tt>. The first argument is the event visitor's -<tt>operator()</tt> must be either an edge or vertex descriptor -depending on the event tag. - -<pre> -namespace boost { - struct on_initialize_vertex { }; - struct on_start_vertex { }; - struct on_discover_vertex { }; - struct on_examine_edge { }; - struct on_tree_edge { }; - struct on_cycle_edge { }; - struct on_finish_vertex { }; - struct on_forward_or_cross_edge { }; - struct on_back_edge { }; - struct on_edge_relaxed { }; - struct on_edge_not_relaxed { }; - struct on_edge_minimized { }; - struct on_edge_not_minimized { }; -} // namespace boost -</pre> - - -<h3>Refinement of</h3> - -<a href="../../utility/CopyConstructible.html">Copy Constructible</a> -(copying a visitor should be a lightweight operation). - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of <a href="./Graph.html">Graph</a>.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>V</tt></TD> -<TD>A type that is a model of EventVisitor.</TD> -</TR> - -<TR> -<TD><tt>vis</tt></TD> -<TD>An object of type <tt>V</tt>.</TD> -</TR> - -<TR> -<TD><tt>x</tt></TD> -<TD>An object of type -<tt>boost::graph_traits<G>::vertex_descriptor</tt> -or <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD> -</TR> - -</table> - -<h3>Associated Types</h3> - -<Table border> - -<TR> -<TD>Event Filter </TD> -<TD><TT>V::event_filter</TT></TD> -<TD> -A tag struct to specify on which event the visitor should be invoked. -</TD> -</TR> - -</table> - -<h3>Valid Expressions</h3> - -<Table border> - -<tr> -<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> -</tr> - -<tr> -<td>Apply Visitor</td> -<td><TT>vis(x, g)</TT></TD> -<TD><TT>void</TT></TD> -<TD> -Invokes the visitor operation on object <tt>x</tt>, which is -either a vertex or edge descriptor of the graph. -</TD> -</TR> - - -</table> - - -<h3>Models</h3> - -<ul> - <li><a - href="./predecessor_recorder.html"><tt>predecessor_recorder</tt></a> - <li><a href="./distance_recorder.html"><tt>distance_recorder</tt></a> - <li><a href="./time_stamper.html"><tt>time_stamper</tt></a> - <li><a href="./property_writer.html"><tt>property_writer</tt></a> - <li><a href="./null_visitor.html"><tt>null_visitor</tt></a> -</ul> - -<h3>See Also</h3> - -<a href="./EventVisitorList.html">EventVisitorList</a>, -<a href="./visitor_concepts.html">Visitor concepts</a> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>-<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
-<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, -Indiana University (<A -HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Boost Graph Library: EventVisitor</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H1>EventVisitor Concept</H1> + +This concept defines the interface for single-event visitors. An +EventVisitor has an apply member function (<tt>operator()</tt>) which +is invoked within the graph algorithm at the event-point specified by +the <tt>event_filter</tt> typedef within the +EventVisitor. EventVisitor's can be combined into an <a +href="./EventVisitorList.html">EventVistorList</a>. + +<p> +The following is the list of event tags that can be invoked in BGL +algorithms. Each tag corresponds to a member function of the visitor +for an algorithm. For example, the <a +href="./BFSVisitor.html">BFSVisitor</a> of <a +href="./breadth_first_search.html"><tt>breadth_first_search()</tt></a> +has a <tt>cycle_edge()</tt> member function. The corresponding tag is +<tt>on_cycle_edge</tt>. The first argument is the event visitor's +<tt>operator()</tt> must be either an edge or vertex descriptor +depending on the event tag. + +<pre> +namespace boost { + struct on_initialize_vertex { }; + struct on_start_vertex { }; + struct on_discover_vertex { }; + struct on_examine_edge { }; + struct on_tree_edge { }; + struct on_cycle_edge { }; + struct on_finish_vertex { }; + struct on_forward_or_cross_edge { }; + struct on_back_edge { }; + struct on_edge_relaxed { }; + struct on_edge_not_relaxed { }; + struct on_edge_minimized { }; + struct on_edge_not_minimized { }; +} // namespace boost +</pre> + + +<h3>Refinement of</h3> + +<a href="../../utility/CopyConstructible.html">Copy Constructible</a> +(copying a visitor should be a lightweight operation). + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of <a href="./Graph.html">Graph</a>.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>V</tt></TD> +<TD>A type that is a model of EventVisitor.</TD> +</TR> + +<TR> +<TD><tt>vis</tt></TD> +<TD>An object of type <tt>V</tt>.</TD> +</TR> + +<TR> +<TD><tt>x</tt></TD> +<TD>An object of type +<tt>boost::graph_traits<G>::vertex_descriptor</tt> +or <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD> +</TR> + +</table> + +<h3>Associated Types</h3> + +<Table border> + +<TR> +<TD>Event Filter </TD> +<TD><TT>V::event_filter</TT></TD> +<TD> +A tag struct to specify on which event the visitor should be invoked. +</TD> +</TR> + +</table> + +<h3>Valid Expressions</h3> + +<Table border> + +<tr> +<th>Name</th><th>Expression</th><th>Return Type</th><th>Description</th> +</tr> + +<tr> +<td>Apply Visitor</td> +<td><TT>vis(x, g)</TT></TD> +<TD><TT>void</TT></TD> +<TD> +Invokes the visitor operation on object <tt>x</tt>, which is +either a vertex or edge descriptor of the graph. +</TD> +</TR> + + +</table> + + +<h3>Models</h3> + +<ul> + <li><a + href="./predecessor_recorder.html"><tt>predecessor_recorder</tt></a> + <li><a href="./distance_recorder.html"><tt>distance_recorder</tt></a> + <li><a href="./time_stamper.html"><tt>time_stamper</tt></a> + <li><a href="./property_writer.html"><tt>property_writer</tt></a> + <li><a href="./null_visitor.html"><tt>null_visitor</tt></a> +</ul> + +<h3>See Also</h3> + +<a href="./EventVisitorList.html">EventVisitorList</a>, +<a href="./visitor_concepts.html">Visitor concepts</a> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>+<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
+<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, +Indiana University (<A +HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/EventVisitorList.html ============================================================================== --- trunk/libs/graph/doc/EventVisitorList.html (original) +++ trunk/libs/graph/doc/EventVisitorList.html Mon Mar 30 07:58:04 2009 @@ -1,127 +1,127 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Boost Graph Library: EventVisitorList</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H1>EventVisitorList Concept</H1> - -An EventVisitorList is either an <a -href="./EventVisitor.html">EventVisitor</a>, or a list of -EventVisitor's combined using <tt>std::pair</tt>. Each graph algorithm -defines visitor adaptors that convert an EventVisitorList into the -particular kind of visitor needed by the algorithm. - -In the following example we will show how to combine event visitors -into a list using <tt>std::pair</tt> and how to use an algorithm's -visitor adaptor class. - -<p> -Suppose we would like to print out the parenthesis -structure of the discover/finish times of vertices in a <a -href="./graph_theory_review.html#sec:dfs-algorithm">depth-first -search</a>. We can use the BGL algorithm <a -href="./depth_first_search.html"><tt>depth_first_search()</tt></a> and -two event visitors to accomplish this. The complete source code for -the following example is in <a href="../example/dfs_parenthesis.cpp"> -<tt>examples/dfs_parenthesis.cpp</tt></a>. First we define the two -event visitors. We use <tt>on_discover_vertex</tt> and -<tt>on_finish_vertex</tt> as the event points, selected from the list -of event points specified in <a -href="./DFSVisitor.html">DFSVisitor</a>. - -<pre> -struct open_paren : public base_visitor<open_paren> { - typedef on_discover_vertex event_filter; - template <class Vertex, class Graph> - void operator()(Vertex v, Graph& G) { - std::cout << "(" << v; - } -}; -struct close_paren : public base_visitor<close_paren> { - typedef on_finish_vertex event_filter; - template <class Vertex, class Graph> - void operator()(Vertex v, Graph& G) { - std::cout << v << ")"; - } -}; -</pre> - -Next we create two event visitor objects and make an EventVisitorList -out of them using a <tt>std::pair</tt> which created by -<tt>std::make_pair</tt>. - -<pre> -std::make_pair(open_paren(), close_paren()) -</pre> - -Next we want to pass this list into <tt>depth_first_search()</tt>, but -<tt>depth_first_search()</tt> is expecting a <a -href="./DFSVisitor.html">DFSVisitor</a>, not a EventVisitorList. We -therefore use the <a -href="./dfs_visitor.html"><tt>dfs_visitor</tt></a> adaptor which turns -an EventVisitor list into a DFSVisitor. Like all of the visitor -adaptors, <tt>dfs_visitor</tt> has a creation function called -<tt>make_dfs_visitor()</tt>. - -<pre> -make_dfs_visitor(std::make_pair(open_paren(), close_paren())) -</pre> - -Now we can pass the resulting visitor object into -<tt>depth_first_search()</tt> as follows. - -<pre> - // graph object G is created ... - - std::vector<default_color_type> color(num_vertices(G)); -- depth_first_search(G, make_dfs_visitor(std::make_pair(open_paren(), close_paren())),
- color.begin()); -</pre> - -For creating a list of more than two event visitors, nest calls to -<tt>std::make_pair</tt> in the following way: - -<pre> -std::make_pair(<i>visitor1</i>, - std::make_pair(<i>visitor2</i>, - ... - std::make_pair(<i>visitorN-1</i>, <i>visitorN</i>)...)); -</pre> - - - -<h3>See Also</h3> - -<a href="./EventVisitor.html">EventVisitor</a>, -<a href="./visitor_concepts.html">Visitor concepts</a> - - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>-<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
-<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, -Indiana University (<A -HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Boost Graph Library: EventVisitorList</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H1>EventVisitorList Concept</H1> + +An EventVisitorList is either an <a +href="./EventVisitor.html">EventVisitor</a>, or a list of +EventVisitor's combined using <tt>std::pair</tt>. Each graph algorithm +defines visitor adaptors that convert an EventVisitorList into the +particular kind of visitor needed by the algorithm. + +In the following example we will show how to combine event visitors +into a list using <tt>std::pair</tt> and how to use an algorithm's +visitor adaptor class. + +<p> +Suppose we would like to print out the parenthesis +structure of the discover/finish times of vertices in a <a +href="./graph_theory_review.html#sec:dfs-algorithm">depth-first +search</a>. We can use the BGL algorithm <a +href="./depth_first_search.html"><tt>depth_first_search()</tt></a> and +two event visitors to accomplish this. The complete source code for +the following example is in <a href="../example/dfs_parenthesis.cpp"> +<tt>examples/dfs_parenthesis.cpp</tt></a>. First we define the two +event visitors. We use <tt>on_discover_vertex</tt> and +<tt>on_finish_vertex</tt> as the event points, selected from the list +of event points specified in <a +href="./DFSVisitor.html">DFSVisitor</a>. + +<pre> +struct open_paren : public base_visitor<open_paren> { + typedef on_discover_vertex event_filter; + template <class Vertex, class Graph> + void operator()(Vertex v, Graph& G) { + std::cout << "(" << v; + } +}; +struct close_paren : public base_visitor<close_paren> { + typedef on_finish_vertex event_filter; + template <class Vertex, class Graph> + void operator()(Vertex v, Graph& G) { + std::cout << v << ")"; + } +}; +</pre> + +Next we create two event visitor objects and make an EventVisitorList +out of them using a <tt>std::pair</tt> which created by +<tt>std::make_pair</tt>. + +<pre> +std::make_pair(open_paren(), close_paren()) +</pre> + +Next we want to pass this list into <tt>depth_first_search()</tt>, but +<tt>depth_first_search()</tt> is expecting a <a +href="./DFSVisitor.html">DFSVisitor</a>, not a EventVisitorList. We +therefore use the <a +href="./dfs_visitor.html"><tt>dfs_visitor</tt></a> adaptor which turns +an EventVisitor list into a DFSVisitor. Like all of the visitor +adaptors, <tt>dfs_visitor</tt> has a creation function called +<tt>make_dfs_visitor()</tt>. + +<pre> +make_dfs_visitor(std::make_pair(open_paren(), close_paren())) +</pre> + +Now we can pass the resulting visitor object into +<tt>depth_first_search()</tt> as follows. + +<pre> + // graph object G is created ... + + std::vector<default_color_type> color(num_vertices(G)); ++ depth_first_search(G, make_dfs_visitor(std::make_pair(open_paren(), close_paren())),
+ color.begin()); +</pre> + +For creating a list of more than two event visitors, nest calls to +<tt>std::make_pair</tt> in the following way: + +<pre> +std::make_pair(<i>visitor1</i>, + std::make_pair(<i>visitor2</i>, + ... + std::make_pair(<i>visitorN-1</i>, <i>visitorN</i>)...)); +</pre> + + + +<h3>See Also</h3> + +<a href="./EventVisitor.html">EventVisitor</a>, +<a href="./visitor_concepts.html">Visitor concepts</a> + + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>+<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
+<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, +Indiana University (<A +HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/Graph.html ============================================================================== --- trunk/libs/graph/doc/Graph.html (original) +++ trunk/libs/graph/doc/Graph.html Mon Mar 30 07:58:04 2009 @@ -1,149 +1,149 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Graph</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H2><A NAME="concept:Graph"></A> -Graph -</H2> - -<P> -The Graph concept contains a few requirements that are common to all -the graph concepts. These include some associated types for -<tt>vertex_descriptor</tt>, <tt>edge_descriptor</tt>, etc. One should -note that a model of Graph is <B>not</B> required to be a model of <a -href="http://www.sgi.com/tech/stl/Assignable.html";>Assignable</a>, -so algorithms should pass graph objects by reference. - -<P> - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of Graph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> -</table> - -<H3>Associated Types</H3> - -<table border> -<tr> -<td><pre>boost::graph_traits<G>::vertex_descriptor</pre> -A vertex descriptor corresponds to a unique vertex in an abstract -graph instance. A vertex descriptor must be -<a-href="http://www.sgi.com/tech/stl/DefaultConstructible.html";>Default Constructible</a>,
-<a href="http://www.sgi.com/tech/stl/Assignable.html";>Assignable</a>, and-<a href="http://www.sgi.com/tech/stl/EqualityComparable.html";>Equality Comparable</a>.
-</td> -</tr> - -<tr> -<td><pre>boost::graph_traits<G>::edge_descriptor</pre> -An edge descriptor corresponds to a unique edge <i>(u,v)</i> in a -graph. An edge descriptor must be <a-href="http://www.sgi.com/tech/stl/DefaultConstructible.html";>Default Constructible</I>,
-<a -href="http://www.sgi.com/tech/stl/Assignable.html";>Assignable</a>,-and <a href="http://www.sgi.com/tech/stl/EqualityComparable.html";>Equality Comparable</a>.
-</td> -</tr> - -<tr> -<td><pre>boost::graph_traits<G>::directed_category</pre>-This type shall be convertible to <TT>directed_tag</TT> or <TT>undirected_tag</TT>.
-</td> -</tr> - -<tr> -<td><pre>boost::graph_traits<G>::edge_parallel_category</pre> -This describes whether the graph class allows the insertion of -parallel edges (edges with the same source and target). The two tags-are <TT>allow_parallel_edge_tag</TT> and <TT>disallow_parallel_edge_tag</TT>.
-</td> -</tr> - -<tr> -<td><pre>boost::graph_traits<G>::traversal_category</pre> -This describes the ways in which the vertices and edges of the -graph can be visited. The choices are <TT>incidence_graph_tag</TT>, -<TT>adjacency_graph_tag</TT>, <TT>bidirectional_graph_tag</TT>, -<TT>vertex_list_graph_tag</TT>, <TT>edge_list_graph_tag</TT>, and -<TT>adjacency_matrix_tag</TT>. -</td> -</tr> - -</table> - -<H3>Valid Expressions</H3> - -<table border> - -<tr> -<td><pre>boost::graph_traits<G>::null_vertex()</pre></td></TD> -<td>-Returns a special <tt>boost::graph_traits<G>::vertex_descriptor</tt> object which does not refer to
-any vertex of graph object which type is <tt>G</tt>. -<td> -</tr> -</table> - - - -<H3>Concept Checking Class</H3> - -<PRE> - template <class G> - struct GraphConcept - {- typedef typename boost::graph_traits<G>::vertex_descriptor vertex_descriptor; - typedef typename boost::graph_traits<G>::edge_descriptor edge_descriptor; - typedef typename boost::graph_traits<G>::directed_category directed_category; - typedef typename boost::graph_traits<G>::edge_parallel_category edge_parallel_category; - typedef typename boost::graph_traits<G>::traversal_category traversal_category;
- - void constraints() {- function_requires< DefaultConstructibleConcept<vertex_descriptor> >(); - function_requires< EqualityComparableConcept<vertex_descriptor> >(); - function_requires< AssignableConcept<vertex_descriptor> >(); - function_requires< DefaultConstructibleConcept<edge_descriptor> >(); - function_requires< EqualityComparableConcept<edge_descriptor> >(); - function_requires< AssignableConcept<edge_descriptor> >();
- } - G g; - }; -</PRE> - -<H3>See Also</H3> - -<a href="./graph_concepts.html">Graph concepts</a> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD>-<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
-</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Graph</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H2><A NAME="concept:Graph"></A> +Graph +</H2> + +<P> +The Graph concept contains a few requirements that are common to all +the graph concepts. These include some associated types for +<tt>vertex_descriptor</tt>, <tt>edge_descriptor</tt>, etc. One should +note that a model of Graph is <B>not</B> required to be a model of <a +href="http://www.sgi.com/tech/stl/Assignable.html";>Assignable</a>, +so algorithms should pass graph objects by reference. + +<P> + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of Graph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> +</table> + +<H3>Associated Types</H3> + +<table border> +<tr> +<td><pre>boost::graph_traits<G>::vertex_descriptor</pre> +A vertex descriptor corresponds to a unique vertex in an abstract +graph instance. A vertex descriptor must be +<a+href="http://www.sgi.com/tech/stl/DefaultConstructible.html";>Default Constructible</a>,
+<a href="http://www.sgi.com/tech/stl/Assignable.html";>Assignable</a>, and+<a href="http://www.sgi.com/tech/stl/EqualityComparable.html";>Equality Comparable</a>.
+</td> +</tr> + +<tr> +<td><pre>boost::graph_traits<G>::edge_descriptor</pre> +An edge descriptor corresponds to a unique edge <i>(u,v)</i> in a +graph. An edge descriptor must be <a+href="http://www.sgi.com/tech/stl/DefaultConstructible.html";>Default Constructible</I>,
+<a +href="http://www.sgi.com/tech/stl/Assignable.html";>Assignable</a>,+and <a href="http://www.sgi.com/tech/stl/EqualityComparable.html";>Equality Comparable</a>.
+</td> +</tr> + +<tr> +<td><pre>boost::graph_traits<G>::directed_category</pre>+This type shall be convertible to <TT>directed_tag</TT> or <TT>undirected_tag</TT>.
+</td> +</tr> + +<tr> +<td><pre>boost::graph_traits<G>::edge_parallel_category</pre> +This describes whether the graph class allows the insertion of +parallel edges (edges with the same source and target). The two tags+are <TT>allow_parallel_edge_tag</TT> and <TT>disallow_parallel_edge_tag</TT>.
+</td> +</tr> + +<tr> +<td><pre>boost::graph_traits<G>::traversal_category</pre> +This describes the ways in which the vertices and edges of the +graph can be visited. The choices are <TT>incidence_graph_tag</TT>, +<TT>adjacency_graph_tag</TT>, <TT>bidirectional_graph_tag</TT>, +<TT>vertex_list_graph_tag</TT>, <TT>edge_list_graph_tag</TT>, and +<TT>adjacency_matrix_tag</TT>. +</td> +</tr> + +</table> + +<H3>Valid Expressions</H3> + +<table border> + +<tr> +<td><pre>boost::graph_traits<G>::null_vertex()</pre></td></TD> +<td>+Returns a special <tt>boost::graph_traits<G>::vertex_descriptor</tt> object which does not refer to
+any vertex of graph object which type is <tt>G</tt>. +<td> +</tr> +</table> + + + +<H3>Concept Checking Class</H3> + +<PRE> + template <class G> + struct GraphConcept + {+ typedef typename boost::graph_traits<G>::vertex_descriptor vertex_descriptor; + typedef typename boost::graph_traits<G>::edge_descriptor edge_descriptor; + typedef typename boost::graph_traits<G>::directed_category directed_category; + typedef typename boost::graph_traits<G>::edge_parallel_category edge_parallel_category; + typedef typename boost::graph_traits<G>::traversal_category traversal_category;
+ + void constraints() {+ function_requires< DefaultConstructibleConcept<vertex_descriptor> >(); + function_requires< EqualityComparableConcept<vertex_descriptor> >(); + function_requires< AssignableConcept<vertex_descriptor> >(); + function_requires< DefaultConstructibleConcept<edge_descriptor> >(); + function_requires< EqualityComparableConcept<edge_descriptor> >(); + function_requires< AssignableConcept<edge_descriptor> >();
+ } + G g; + }; +</PRE> + +<H3>See Also</H3> + +<a href="./graph_concepts.html">Graph concepts</a> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD>+<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, Indiana University (<A HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)
+</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/IncidenceGraph.html ============================================================================== --- trunk/libs/graph/doc/IncidenceGraph.html (original) +++ trunk/libs/graph/doc/IncidenceGraph.html Mon Mar 30 07:58:04 2009 @@ -1,202 +1,202 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>IncidenceGraph</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H1><A NAME="concept:IncidenceGraph"></A> -IncidenceGraph -</H1> - -The IncidenceGraph concept provides an interface for -efficient access to the out-edges of each vertex in the graph. - - -<H3>Refinement of</H3> - -<a href="./Graph.html">Graph</a> - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of IncidenceGraph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>e</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>u, v</tt></TD>-<TD>Are objects of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
-</TR> - -</table> - -<H3>Associated Types</H3> - -<Table border> - -<tr> -<td><tt>boost::graph_traits<G>::traversal_category</tt><br><br> - This tag type must be convertible to <tt>incidence_graph_tag</tt>. -</td> -</tr> - - -<TR> -<TD> -<pre>boost::graph_traits<G>::out_edge_iterator</pre> -An out-edge iterator for a vertex <i>v</i> provides access to the -out-edges of the vertex. As such, the value type of an out-edge -iterator is the edge descriptor type of its graph. An out-edge -iterator must meet the requirements of <a -href="../../utility/MultiPassInputIterator.html">MultiPassInputIterator</a>. -</TD> -</TR> - -<TR> -<TD><pre>boost::graph_traits<G>::degree_size_type</pre> -The unsigned intergral type used for representing the number -out-edges or incident edges of a vertex. -</TD> -</TR> - -</table> - -<h3>Valid Expressions</h3> - -<Table border> - -<tr> -<td><a name="sec:source"><TT>source(e, g)</TT></a></TD>-<TD>Returns the vertex descriptor for <i>u</i> of the edge <i>(u,v)</i> represented by <TT>e</TT>.<br>
-Return type: <TT>vertex_descriptor</TT> -</TD> -</TR> - - -<tr> -<td><a name="sec:target"><TT>target(e, g)</TT></a></TD>-<TD>Returns the vertex descriptor for <i>v</i> of the edge <i>(u,v)</i> represented by <TT>e</TT>.<br>
-Return type: <TT>vertex_descriptor</TT> -</td></tr> - -<tr> -<td><a name="sec:out-edges"><TT>out_edges(u, g)</TT></a></TD> -<TD>Returns an iterator-range providing access to the out-edges (for -directed graphs) or incident edges (for undirected graphs) of vertex -<TT>u</TT> in graph <TT>g</TT>. The source vertex of an edge obtained -via an out edge iterator is guaranteed (for both directed and -undirected graphs) to be the vertex <tt>u</tt> used in the call to -<tt>out_edges(u, g)</tt> and the target vertex must the a vertex -adjacent to <tt>u</tt>.<a href="#1">[1]</a> -<br> -Return type: <TT>std::pair<out_edge_iterator, out_edge_iterator></TT> -</TD> -</tr> - -<tr> -<TD><TT>out_degree(u, g)</TT></TD> -<TD>Returns the number of out-edges (for directed graphs) or the -number of incident edges (for undirected graphs) of vertex <TT>u</TT> -in graph <TT>g</TT>.<br> -Return type: <TT>degree_size_type</TT> -</TD> -</TR> - -</TABLE> - -<P> - -<H3>Complexity guarantees</H3> - -<P> -The <TT>source()</TT>, <TT>target()</TT>, and <TT>out_edges()</TT> -functions must all be constant time. The <tt>out_degree()</tt> -function must be linear in the number of out-edges. - -<P> - -<H3>See Also</H3> - -<a href="./graph_concepts.html">Graph concepts</a> - -<H3>Notes</H3> - -<a name="1">[1]</a> For undirected graphs, the edge <tt>(u,v)</tt> is -the same as edge <tt>(v,u)</tt>, so without some extra guarantee an -implementation would be free use any ordering for the pair of vertices -in an out-edge. For example, if you call <tt>out_edges(u, g)</tt>, and -<tt>v</tt> is one of the vertices adjacent to <tt>u</tt>, then the -implementation would be free to return <tt>(v,u)</tt> as an out-edge -which would be non-intuitive and cause trouble for algorithms. -Therefore, the extra requirement is added that the out-edge connecting -<tt>u</tt> and <tt>v</tt> must be given as <tt>(u,v)</tt> and not -<tt>(v,u)</tt>. - -<H3>Concept Checking Class</H3> - -<PRE> - template <class G> - struct IncidenceGraphConcept - {- typedef typename boost::graph_traits<G>::out_edge_iterator out_edge_iterator;
- void constraints() { - function_requires< GraphConcept<G> >();- function_requires< MultiPassInputIteratorConcept<out_edge_iterator> >();
- - p = out_edges(u, g); - e = *p.first; - u = source(e, g); - v = target(e, g); - } - void const_constraints(const G& g) { - p = out_edges(u, g); - e = *p.first; - u = source(e, g); - v = target(e, g); - } - std::pair<out_edge_iterator, out_edge_iterator> p; - typename boost::graph_traits<G>::vertex_descriptor u, v; - typename boost::graph_traits<G>::edge_descriptor e; - G g; - }; -</PRE> - - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>-<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
-<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, -Indiana University (<A -HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>IncidenceGraph</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H1><A NAME="concept:IncidenceGraph"></A> +IncidenceGraph +</H1> + +The IncidenceGraph concept provides an interface for +efficient access to the out-edges of each vertex in the graph. + + +<H3>Refinement of</H3> + +<a href="./Graph.html">Graph</a> + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>G</tt></TD> +<TD>A type that is a model of IncidenceGraph.</TD> +</TR> + +<TR> +<TD><tt>g</tt></TD> +<TD>An object of type <tt>G</tt>.</TD> +</TR> + +<TR> +<TD><tt>e</tt></TD>+<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
+</TR> + +<TR> +<TD><tt>u, v</tt></TD>+<TD>Are objects of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
+</TR> + +</table> + +<H3>Associated Types</H3> + +<Table border> + +<tr> +<td><tt>boost::graph_traits<G>::traversal_category</tt><br><br> + This tag type must be convertible to <tt>incidence_graph_tag</tt>. +</td> +</tr> + + +<TR> +<TD> +<pre>boost::graph_traits<G>::out_edge_iterator</pre> +An out-edge iterator for a vertex <i>v</i> provides access to the +out-edges of the vertex. As such, the value type of an out-edge +iterator is the edge descriptor type of its graph. An out-edge +iterator must meet the requirements of <a +href="../../utility/MultiPassInputIterator.html">MultiPassInputIterator</a>. +</TD> +</TR> + +<TR> +<TD><pre>boost::graph_traits<G>::degree_size_type</pre> +The unsigned intergral type used for representing the number +out-edges or incident edges of a vertex. +</TD> +</TR> + +</table> + +<h3>Valid Expressions</h3> + +<Table border> + +<tr> +<td><a name="sec:source"><TT>source(e, g)</TT></a></TD>+<TD>Returns the vertex descriptor for <i>u</i> of the edge <i>(u,v)</i> represented by <TT>e</TT>.<br>
+Return type: <TT>vertex_descriptor</TT> +</TD> +</TR> + + +<tr> +<td><a name="sec:target"><TT>target(e, g)</TT></a></TD>+<TD>Returns the vertex descriptor for <i>v</i> of the edge <i>(u,v)</i> represented by <TT>e</TT>.<br>
+Return type: <TT>vertex_descriptor</TT> +</td></tr> + +<tr> +<td><a name="sec:out-edges"><TT>out_edges(u, g)</TT></a></TD> +<TD>Returns an iterator-range providing access to the out-edges (for +directed graphs) or incident edges (for undirected graphs) of vertex +<TT>u</TT> in graph <TT>g</TT>. The source vertex of an edge obtained +via an out edge iterator is guaranteed (for both directed and +undirected graphs) to be the vertex <tt>u</tt> used in the call to +<tt>out_edges(u, g)</tt> and the target vertex must the a vertex +adjacent to <tt>u</tt>.<a href="#1">[1]</a> +<br> +Return type: <TT>std::pair<out_edge_iterator, out_edge_iterator></TT> +</TD> +</tr> + +<tr> +<TD><TT>out_degree(u, g)</TT></TD> +<TD>Returns the number of out-edges (for directed graphs) or the +number of incident edges (for undirected graphs) of vertex <TT>u</TT> +in graph <TT>g</TT>.<br> +Return type: <TT>degree_size_type</TT> +</TD> +</TR> + +</TABLE> + +<P> + +<H3>Complexity guarantees</H3> + +<P> +The <TT>source()</TT>, <TT>target()</TT>, and <TT>out_edges()</TT> +functions must all be constant time. The <tt>out_degree()</tt> +function must be linear in the number of out-edges. + +<P> + +<H3>See Also</H3> + +<a href="./graph_concepts.html">Graph concepts</a> + +<H3>Notes</H3> + +<a name="1">[1]</a> For undirected graphs, the edge <tt>(u,v)</tt> is +the same as edge <tt>(v,u)</tt>, so without some extra guarantee an +implementation would be free use any ordering for the pair of vertices +in an out-edge. For example, if you call <tt>out_edges(u, g)</tt>, and +<tt>v</tt> is one of the vertices adjacent to <tt>u</tt>, then the +implementation would be free to return <tt>(v,u)</tt> as an out-edge +which would be non-intuitive and cause trouble for algorithms. +Therefore, the extra requirement is added that the out-edge connecting +<tt>u</tt> and <tt>v</tt> must be given as <tt>(u,v)</tt> and not +<tt>(v,u)</tt>. + +<H3>Concept Checking Class</H3> + +<PRE> + template <class G> + struct IncidenceGraphConcept + {+ typedef typename boost::graph_traits<G>::out_edge_iterator out_edge_iterator;
+ void constraints() { + function_requires< GraphConcept<G> >();+ function_requires< MultiPassInputIteratorConcept<out_edge_iterator> >();
+ + p = out_edges(u, g); + e = *p.first; + u = source(e, g); + v = target(e, g); + } + void const_constraints(const G& g) { + p = out_edges(u, g); + e = *p.first; + u = source(e, g); + v = target(e, g); + } + std::pair<out_edge_iterator, out_edge_iterator> p; + typename boost::graph_traits<G>::vertex_descriptor u, v; + typename boost::graph_traits<G>::edge_descriptor e; + G g; + }; +</PRE> + + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>+<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
+<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, +Indiana University (<A +HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/IteratorConstructibleGraph.html ============================================================================== --- trunk/libs/graph/doc/IteratorConstructibleGraph.html (original)+++ trunk/libs/graph/doc/IteratorConstructibleGraph.html Mon Mar 30 07:58:04 2009
@@ -1,161 +1,161 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>IteratorConstructibleGraph</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H1><A NAME="concept:IteratorConstructibleGraph"></A> -IteratorConstructibleGraph -</H1> - -The IteratorConstructibleGraph concept describes the interface for -graph types that can be constructed using a kind of edge iterator. The -edge iterator can be any <a -href="http://www.sgi.com/tech/stl/InputIterator.html";>InputIterator</a> -that dereferences to a pair of integers <i>(i,j)</i>, which represent -an edge that should be in the graph. The two integers <i>i</i> and -<i>j</i> represent vertices where <i>0 <= i < |V|</i> and <i>0 <= j < -|V|</i>. The edge iterator's value type should be -<tt>std::pair<T,T></tt> (or at least be a structure that has -members <tt>first</tt> and <tt>second</tt>) and the value type -<tt>T</tt> of the pair must be convertible to the -<tt>vertices_size_type</tt> of the graph (an integer). - -There are two valid expressions required by this concept, both of -which are constructors. The first creates a graph object from a -first/last iterator range. The second constructor also takes a -first/last iterator range and in addition requires the number of -vertices and number of edges. For some graph and edge iterator types -the second constructor can be more efficient than the first. - -<h3>Example</h3> - -The following exampe creates two graph objects from an array of edges -(vertex pairs). The type <tt>Edge*</tt> satisfies the requirements for -an <a -href="http://www.sgi.com/tech/stl/InputIterator.html";>InputIterator</a> -and can therefore be used to construct a graph. - -<pre> - typedef ... IteratorConstructibleGraph; - typedef boost::graph_traits<IteratorConstructibleGraph> Traits; - - typedef std::pair<Traits::vertices_size_type, - Traits::vertices_size_type> Edge; - Edge edge_array[] = - { Edge(0,1), Edge(0,2), Edge(0,3), Edge(0,4), Edge(0,5), - Edge(1, 2), Edge(1,5), Edge(1,3), - Edge(2, 4), Edge(2,5), - Edge(3, 2), - Edge(4, 3), Edge(4,1), - Edge(5, 4) }; - Edge* first = edge_array, - last = edge_array + sizeof(edge_array)/sizeof(Edge); - - IteratorConstructibleGraph G1(first, last); - // do something with G1 ... - - Traits::vertices_size_type size_V = 6; - Traits::edges_size_type size_E = sizeof(edge_array)/sizeof(Edge); - IteratorConstructibleGraph G2(first, last, size_V, size_E); - // do something with G2 ... -</pre> - -<h3>Refinement of</h3> - -<a href="Graph.html">Graph</a> - -<h3>Notation</h3> - -<Table> -<tr> -<td><tt>G</tt></td> -<td>is a graph type that models IteratorConstructibleGraph.</td> -<tr> - -<tr> -<td><tt>g</tt></td> -<td>is an object of type <tt>G</tt>.</td> -</tr> - -<tr> -<td><tt>first, last</tt></td> -<td>are edge iterators (see above).</td> -</tr> - -<tr> -<td><tt>Tr</tt></td> -<td>is an object of type <tt>graph_traits<G></tt>.</td> -</tr> - -<tr> -<td><tt>n_vertices</tt></td> -<td>is an object of type <tt>Tr::vertices_size_type</tt>.</td> -</tr> - -<tr> -<td><tt>n_edges</tt></td> -<td>is an object of type <tt>Tr::edges_size_type</tt>.</td> -</tr> - -</Table> - - -<h3>Valid Expressions</h3> - -<Table border> - -<tr> -<td> -<pre>G g(first, last);</pre>-Construct graph object <tt>g</tt> given an edge range <tt>[first,last)</tt>.
-</td> -<tr> - -<tr> -<td> -<pre>G g(first, last, n_vertices, n_edges);</pre> -Construct graph object <tt>g</tt> given an edge range -<tt>[first,last)</tt>, the number of vertices, and the number of -edges. Sometimes this constructor is more efficient than the -constructor lacking the graph size information. -</td> -</tr> - -</Table> - - -<!-- -<H3>Concept Checking Class</H3> - -<PRE> -</PRE> ---> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>-<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
-<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, -Indiana University (<A -HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2000 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>IteratorConstructibleGraph</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H1><A NAME="concept:IteratorConstructibleGraph"></A> +IteratorConstructibleGraph +</H1> + +The IteratorConstructibleGraph concept describes the interface for +graph types that can be constructed using a kind of edge iterator. The +edge iterator can be any <a +href="http://www.sgi.com/tech/stl/InputIterator.html";>InputIterator</a> +that dereferences to a pair of integers <i>(i,j)</i>, which represent +an edge that should be in the graph. The two integers <i>i</i> and +<i>j</i> represent vertices where <i>0 <= i < |V|</i> and <i>0 <= j < +|V|</i>. The edge iterator's value type should be +<tt>std::pair<T,T></tt> (or at least be a structure that has +members <tt>first</tt> and <tt>second</tt>) and the value type +<tt>T</tt> of the pair must be convertible to the +<tt>vertices_size_type</tt> of the graph (an integer). + +There are two valid expressions required by this concept, both of +which are constructors. The first creates a graph object from a +first/last iterator range. The second constructor also takes a +first/last iterator range and in addition requires the number of +vertices and number of edges. For some graph and edge iterator types +the second constructor can be more efficient than the first. + +<h3>Example</h3> + +The following exampe creates two graph objects from an array of edges +(vertex pairs). The type <tt>Edge*</tt> satisfies the requirements for +an <a +href="http://www.sgi.com/tech/stl/InputIterator.html";>InputIterator</a> +and can therefore be used to construct a graph. + +<pre> + typedef ... IteratorConstructibleGraph; + typedef boost::graph_traits<IteratorConstructibleGraph> Traits; + + typedef std::pair<Traits::vertices_size_type, + Traits::vertices_size_type> Edge; + Edge edge_array[] = + { Edge(0,1), Edge(0,2), Edge(0,3), Edge(0,4), Edge(0,5), + Edge(1, 2), Edge(1,5), Edge(1,3), + Edge(2, 4), Edge(2,5), + Edge(3, 2), + Edge(4, 3), Edge(4,1), + Edge(5, 4) }; + Edge* first = edge_array, + last = edge_array + sizeof(edge_array)/sizeof(Edge); + + IteratorConstructibleGraph G1(first, last); + // do something with G1 ... + + Traits::vertices_size_type size_V = 6; + Traits::edges_size_type size_E = sizeof(edge_array)/sizeof(Edge); + IteratorConstructibleGraph G2(first, last, size_V, size_E); + // do something with G2 ... +</pre> + +<h3>Refinement of</h3> + +<a href="Graph.html">Graph</a> + +<h3>Notation</h3> + +<Table> +<tr> +<td><tt>G</tt></td> +<td>is a graph type that models IteratorConstructibleGraph.</td> +<tr> + +<tr> +<td><tt>g</tt></td> +<td>is an object of type <tt>G</tt>.</td> +</tr> + +<tr> +<td><tt>first, last</tt></td> +<td>are edge iterators (see above).</td> +</tr> + +<tr> +<td><tt>Tr</tt></td> +<td>is an object of type <tt>graph_traits<G></tt>.</td> +</tr> + +<tr> +<td><tt>n_vertices</tt></td> +<td>is an object of type <tt>Tr::vertices_size_type</tt>.</td> +</tr> + +<tr> +<td><tt>n_edges</tt></td> +<td>is an object of type <tt>Tr::edges_size_type</tt>.</td> +</tr> + +</Table> + + +<h3>Valid Expressions</h3> + +<Table border> + +<tr> +<td> +<pre>G g(first, last);</pre>+Construct graph object <tt>g</tt> given an edge range <tt>[first,last)</tt>.
+</td> +<tr> + +<tr> +<td> +<pre>G g(first, last, n_vertices, n_edges);</pre> +Construct graph object <tt>g</tt> given an edge range +<tt>[first,last)</tt>, the number of vertices, and the number of +edges. Sometimes this constructor is more efficient than the +constructor lacking the graph size information. +</td> +</tr> + +</Table> + + +<!-- +<H3>Concept Checking Class</H3> + +<PRE> +</PRE> +--> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>+<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
+<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, +Indiana University (<A +HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/Monoid.html ============================================================================== --- trunk/libs/graph/doc/Monoid.html (original) +++ trunk/libs/graph/doc/Monoid.html Mon Mar 30 07:58:04 2009 @@ -1,122 +1,122 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2001 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>Monoid</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - -<H1><A NAME="concept:Monoid"></A> -Monoid -</H1> - -A <i>Monoid</i> is a concept that describes a simple kind of algebraic -system. A <b>monoid</b> consists of a set of elements <i>S</i>, a -binary operation, and an identity element. The C++ representation of a -monoid consists of a function object that implements the binary -operation, a set of objects that represent the elements of <i>S</i>, -and an object that represents the identity element. - - -<H3>Refinement of</H3> - -The element type must be a model of <a -href="../../utility/Assignable.html">Assignable</a> and <a -href="../../utility/CopyConstructible.html">CopyConstructible</a>. -The function object type must be a model of <a -href="http://www.sgi.com/tech/stl/BinaryFunction.html";>BinaryFunction</a>. - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>X</tt></TD> -<TD>Is the element type of the Monoid.</TD> -</TR> - -<TR> -<TD><tt>a, b</tt></TD> -<TD>are objects of type <tt>X</tt>.</TD> -</TR> - -<TR> -<TD><tt>op</tt></TD> -<TD>Is the function object implementing the Monoid operation.</TD> -</TR> - -<TR> -<TD><tt>i</tt></TD> -<TD>is an object of type <tt>X</tt> and is the identity element -for the Monoid.</TD> -</TR> - - -</table> - -<h3>Valid Expressions</h3> - -<Table border> - -<tr> -<td><a name="sec:source"><TT>op(a, b)</TT></a></TD> -<TD>See below for semantics.<br> -Return type: <TT>X</TT> -</TD> -</TR> - -<tr> -<TD><TT>a == b</TT></TD> -<TD>Returns true if <tt>a</tt> and <tt>b</tt> represent - the same element of <i>S</i>.<br> -Return type: <TT>bool</TT> -</TD> -</TR> - -<tr> -<TD><TT>a != b</TT></TD> -<TD>Returns true if <tt>a</tt> and <tt>b</tt> represent - different elements of <i>S</i>.<br> -Return type: <TT>bool</TT> -</TD> -</TR> - -</TABLE> - -<P> - -<H3>Invariants</H3> - -<UL> - <li>Closure<br> - The result of <tt>op(a, b)</tt> is also an element of <i>S</i>. - <li>Associativity<br> - <tt>op(op(a, b), c) == op(a, op(b, c))</tt> - <li>Definition of Identity Element<br> - <tt>op(a, i) == a</tt> -</UL> - -<br> -<HR> -<TABLE> -<TR valign=top> -<TD nowrap>Copyright © 2000-2001</TD><TD> -<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, -Indiana University (<A -HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>-<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
-<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, -Indiana University (<A -HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) -</TD></TR></TABLE> - -</BODY> -</HTML> +<HTML> +<!-- + -- Copyright (c) Jeremy Siek, Lie-Quan Lee, and Andrew Lumsdaine 2001 + -- + -- Distributed under the Boost Software License, Version 1.0. + -- (See accompanying file LICENSE_1_0.txt or copy at + -- http://www.boost.org/LICENSE_1_0.txt) + --> +<Head> +<Title>Monoid</Title> +<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" + ALINK="#ff0000"> +<IMG SRC="../../../boost.png" + ALT="C++ Boost" width="277" height="86"> + +<BR Clear> + +<H1><A NAME="concept:Monoid"></A> +Monoid +</H1> + +A <i>Monoid</i> is a concept that describes a simple kind of algebraic +system. A <b>monoid</b> consists of a set of elements <i>S</i>, a +binary operation, and an identity element. The C++ representation of a +monoid consists of a function object that implements the binary +operation, a set of objects that represent the elements of <i>S</i>, +and an object that represents the identity element. + + +<H3>Refinement of</H3> + +The element type must be a model of <a +href="../../utility/Assignable.html">Assignable</a> and <a +href="../../utility/CopyConstructible.html">CopyConstructible</a>. +The function object type must be a model of <a +href="http://www.sgi.com/tech/stl/BinaryFunction.html";>BinaryFunction</a>. + +<h3>Notation</h3> + +<Table> +<TR> +<TD><tt>X</tt></TD> +<TD>Is the element type of the Monoid.</TD> +</TR> + +<TR> +<TD><tt>a, b</tt></TD> +<TD>are objects of type <tt>X</tt>.</TD> +</TR> + +<TR> +<TD><tt>op</tt></TD> +<TD>Is the function object implementing the Monoid operation.</TD> +</TR> + +<TR> +<TD><tt>i</tt></TD> +<TD>is an object of type <tt>X</tt> and is the identity element +for the Monoid.</TD> +</TR> + + +</table> + +<h3>Valid Expressions</h3> + +<Table border> + +<tr> +<td><a name="sec:source"><TT>op(a, b)</TT></a></TD> +<TD>See below for semantics.<br> +Return type: <TT>X</TT> +</TD> +</TR> + +<tr> +<TD><TT>a == b</TT></TD> +<TD>Returns true if <tt>a</tt> and <tt>b</tt> represent + the same element of <i>S</i>.<br> +Return type: <TT>bool</TT> +</TD> +</TR> + +<tr> +<TD><TT>a != b</TT></TD> +<TD>Returns true if <tt>a</tt> and <tt>b</tt> represent + different elements of <i>S</i>.<br> +Return type: <TT>bool</TT> +</TD> +</TR> + +</TABLE> + +<P> + +<H3>Invariants</H3> + +<UL> + <li>Closure<br> + The result of <tt>op(a, b)</tt> is also an element of <i>S</i>. + <li>Associativity<br> + <tt>op(op(a, b), c) == op(a, op(b, c))</tt> + <li>Definition of Identity Element<br> + <tt>op(a, i) == a</tt> +</UL> + +<br> +<HR> +<TABLE> +<TR valign=top> +<TD nowrap>Copyright © 2000-2001</TD><TD> +<A HREF="http://www.boost.org/people/jeremy_siek.htm";>Jeremy Siek</A>, +Indiana University (<A +HREF="mailto:jsiek@xxxxxxxxxx";>jsiek@xxxxxxxxxx</A>)<br>+<A HREF="http://www.boost.org/people/liequan_lee.htm";>Lie-Quan Lee</A>, Indiana University (<A HREF="mailto:llee@xxxxxxxxxxxxxx";>llee@xxxxxxxxxxxxxx</A>)<br>
+<A HREF=http://www.osl.iu.edu/~lums>Andrew Lumsdaine</A>, +Indiana University (<A +HREF="mailto:lums@xxxxxxxxxx";>lums@xxxxxxxxxx</A>) +</TD></TR></TABLE> + +</BODY> +</HTML> Modified: trunk/libs/graph/doc/MutableGraph.html ============================================================================== --- trunk/libs/graph/doc/MutableGraph.html (original) +++ trunk/libs/graph/doc/MutableGraph.html Mon Mar 30 07:58:04 2009 @@ -1,299 +1,299 @@ -<HTML> -<!-- - -- Copyright (c) Jeremy Siek 2000 - -- - -- Distributed under the Boost Software License, Version 1.0. - -- (See accompanying file LICENSE_1_0.txt or copy at - -- http://www.boost.org/LICENSE_1_0.txt) - --> -<Head> -<Title>MutableGraph</Title> -<BODY BGCOLOR="#ffffff" LINK="#0000ee" TEXT="#000000" VLINK="#551a8b" - ALINK="#ff0000"> -<IMG SRC="../../../boost.png" - ALT="C++ Boost" width="277" height="86"> - -<BR Clear> - - -<H2><A NAME="sec:MutableGraph"></A> -MutableGraph -</H2> - -A MutableGraph can be changed via the addition or removal of -edges and vertices. - -<H3>Refinement of</H3> - -<a href="./Graph.html">Graph</a> - -<h3>Notation</h3> - -<Table> -<TR> -<TD><tt>G</tt></TD> -<TD>A type that is a model of Graph.</TD> -</TR> - -<TR> -<TD><tt>g</tt></TD> -<TD>An object of type <tt>G</tt>.</TD> -</TR> - -<TR> -<TD><tt>e</tt></TD>-<TD>An object of type <tt>boost::graph_traits<G>::edge_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>u,v</tt></TD>-<TD>are objects of type <tt>boost::graph_traits<G>::vertex_descriptor</tt>.</TD>
-</TR> - -<TR> -<TD><tt>iter</tt></TD>-<TD>is an object of type <tt>boost::graph_traits<G>::out_edge_iterator</tt>.</TD>
-</TR> - -<TR> -<TD><tt>p</tt></TD> -<TD>is an object of a type that models <a -href="http://www.sgi.com/tech/stl/Predicate.html";>Predicate</a> -and whose argument type matches the <tt>edge_descriptor</tt> type. -</TR> - -</table> - -<H3>Valid Expressions</H3> - -<table border> - -<tr> -<TD><a name="sec:add-edge"><TT>add_edge(u, v, g)</TT></a></TD> -<TD> -Inserts the edge <i>(u,v)</i> into the graph, and returns an edge -descriptor pointing to the new edge. If the graph disallows parallel -edges, and the edge <i>(u,v)</i> is already in the graph, then the -<tt>bool</tt> flag returned is <tt>false</tt> and the returned edge -descriptor points to the already existing edge. Note that for -undirected graphs, <i>(u,v)</i> is the same edge as <i>(v,u)</i>, so -after a call to the function <tt>add_edge()</tt>, this implies that -edge <i>(u,v)</i> will appear in the out-edges of <i>u</i> and -<i>(u,v)</i> (or equivalently <i>(v,u)</i>) will appear in the -out-edges of <i>v</i>. Put another way, <i>v</i> will be adjacent to -<i>u</i> and <i>u</i> will be adjacent to <i>v</i>. -<br> -Return type: <TT>std::pair<edge_descriptor, bool></TT> -</TD> -</tr> - -<tr>-<TD><a name="sec:remove_edge"><TT>remove_edge(u, v, g)</TT></a></TD>
-<TD> -Remove the edge <i>(u,v)</i> from the graph. If the -graph allows parallel edges this remove all occurrences of -<i>(u,v)</i>.<br> -Return type: <TT>void</TT><br> -Precondition: <i>u</i> and <i>v</i> are vertices in the graph.<br> -Postcondition: <i>(u,v)</i> is no longer in the edge set for -<TT>g</TT>.<br> -</TD> -</TR> - - -<tr> -<TD><TT>remove_edge(e, g)</TT></TD> -<TD>Remove the edge <i>e</i> from the graph.<br> -Return type: <TT>void</TT><br> -Precondition: <i>e</i> is an edge in the graph.<br> -Postcondition: <i>e</i> is no longer in the edge set for <TT>g</TT>. -</TD> -</TR> - -<tr> -<TD><TT>remove_edge(iter, g)</TT></TD> -<TD>Remove the edge pointed to be <tt>iter</tt> from the graph. This -expression is only required when the graph also models <a -href="./IncidenceGraph.html">IncidenceGraph</a>.<br> -Return type: <TT>void</TT><br> -Precondition: <tt>*iter</tt> is an edge in the graph.<br> -Postcondition: <tt>*iter</tt> is no longer in the edge set for <TT>g</TT>. -</TD> -</TR> - -<tr> -<TD><TT>remove_edge_if(p, g)</TT></TD> -<TD>Remove all the edges from graph <tt>g</tt> for which -the predicate <tt>p</tt> returns true.<br> -Return type: <TT>void</TT> -</TD> -</TR> - -<tr> -<TD><TT>remove_out_edge_if(u, p, g)</TT></TD> -<TD>Remove all the out-edges of vertex <tt>u</tt> for which the -predicate <tt>p</tt> returns true. This expression is only required -when the graph also models <a -href="./IncidenceGraph.html">IncidenceGraph</a>.<br> -Return type: <TT>void</TT> -</TD> -</TR> - -<tr> -<TD><TT>remove_in_edge_if(u, p, g)</TT></TD> -<TD>Remove all the in-edges of vertex <tt>u</tt> for which the-predicate <tt>p</tt> returns true. This expression is only required when the
-graph also models <a -href="./BidirectionalGraph.html">BidirectionalGraph</a>.<br> -Return type: <TT>void</TT> -</TD> -</TR> - - -<tr> -<TD><a name="sec:add-vertex"><TT>add_vertex(g)</TT></a></TD> -<TD> -Add a new vertex to the graph. The <TT>vertex_descriptor</TT> for the -new vertex is returned.<br> -Return type: <TT>vertex_descriptor</TT> -</TD> -</TR> - - -<tr> -<TD><TT>clear_vertex(u, g)</TT></TD> -<TD> -Remove all edges to and from vertex <tt>u</tt> from the graph.<br> -Return type: <TT>void</TT><br> -Precondition: <tt ============================================================================== Diff truncated at 200k characters