
The Boost Graph Library User Guide and Reference Manual
by Siek, Jeremy G.; Lee, Lie-Quan; Lumsdaine, Andrew-
This Item Qualifies for Free Shipping!*
*Excludes marketplace orders.
Rent Book
New Book
We're Sorry
Sold Out
Used Book
We're Sorry
Sold Out
eBook
We're Sorry
Not Available
How Marketplace Works:
- This item is offered by an independent seller and not shipped from our warehouse
- Item details like edition and cover design may differ from our description; see seller's comments before ordering.
- Sellers much confirm and ship within two business days; otherwise, the order will be cancelled and refunded.
- Marketplace purchases cannot be returned to eCampus.com. Contact the seller directly for inquiries; if no response within two days, contact customer service.
- Additional shipping costs apply to Marketplace purchases. Review shipping costs at checkout.
Summary
Author Biography
Jeremy G. Siek is a leading expert in C++ and generic programming and is currently pursuing his doctoral degree at Indiana University. He is interested in the design of programming languages that support generic programming and in high performance libraries. Jeremy is a member of the ISO C++ Standards Committee and is an active member of the Boost C++ Library Group, where he has contributed several libraries in addition to the BGL.
Lie-Quan (Rich) Lee developed the first version of the BGL. A doctoral candidate at the University of Notre Dame, his research interests include generic programming, scientific component libraries, and high performance computing. Rich is an active member of the Boost C++ Library Group.
Andrew Lumsdaine is an Associate Professor in the Computer Science Department and Associate Director of the Open Systems Laboratory at Indiana University. In addition to generic programming and software engineering, his research program includes projects in computational science and engineering, parallel and distributed computing, mathematical software, and numerical analysis. Andrew is a member of the ISO C++ Standards Committee and the Boost C++ Library Group.
0201729148AB11212001
Table of Contents
Foreword | p. xiii |
Preface | p. xvii |
User Guide | p. 1 |
Introduction | p. 3 |
Some Graph Terminology | p. 3 |
Graph Concepts | p. 5 |
Vertex and Edge Descriptors | p. 5 |
Property Maps | p. 6 |
Graph Traversal | p. 7 |
Graph Construction and Modification | p. 9 |
Algorithm Visitors | p. 10 |
Graph Classes and Adaptors | p. 11 |
Graph Classes | p. 11 |
Graph Adaptors | p. 13 |
Generic Graph Algorithms | p. 13 |
The Topological Sort Generic Algorithm | p. 14 |
The Depth-First Search Generic Algorithm | p. 18 |
Generic Programming in C++ | p. 19 |
Introduction | p. 19 |
Polymorphism in Object-Oriented Programming | p. 20 |
Polymorphism in Generic Programming | p. 21 |
Comparison of GP and OOP | p. 22 |
Generic Programming and the STL | p. 25 |
Concepts and Models | p. 27 |
Sets of Requirements | p. 28 |
Example: InputIterator | p. 28 |
Associated Types and Traits Classes | p. 30 |
Associated Types Needed in Function Template | p. 30 |
Typedefs Nested in Classes | p. 30 |
Definition of a Traits Class | p. 31 |
Partial Specialization | p. 32 |
Tag Dispatching | p. 33 |
Concept Checking | p. 34 |
Concept-Checking Classes | p. 35 |
Concept Archetypes | p. 36 |
The Boost Namespace | p. 37 |
Classes | p. 37 |
Koenig Lookup | p. 38 |
Named Function Parameters | p. 39 |
A BGL Tutorial | p. 41 |
File Dependencies | p. 41 |
Graph Setup | p. 42 |
Compilation Order | p. 44 |
Topological Sort via DFS | p. 44 |
Marking Vertices Using External Properties | p. 46 |
Accessing Adjacent Vertices | p. 46 |
Traversing All the Vertices | p. 47 |
Cyclic Dependencies | p. 48 |
Toward a Generic DFS: Visitors | p. 49 |
Graph Setup: Internal Properties | p. 52 |
Compilation Time | p. 54 |
A Generic Topological Sort and DFS | p. 55 |
Parallel Compilation Time | p. 57 |
Summary | p. 59 |
Basic Graph Algorithms | p. 61 |
Breadth-First Search | p. 61 |
Definitions | p. 61 |
Six Degrees of Kevin Bacon | p. 62 |
Depth-First Search | p. 67 |
Definitions | p. 67 |
Finding Loops in Program-Control-Flow Graphs | p. 69 |
Shortest-Paths Problems | p. 75 |
Definitions | p. 75 |
Internet Routing | p. 76 |
Bellman-Ford and Distance Vector Routing | p. 77 |
Dijkstra and Link-State Routing | p. 81 |
Minimum-Spanning-Tree Problem | p. 89 |
Definitions | p. 89 |
Telephone Network Planning | p. 89 |
Kruskal's Algorithm | p. 91 |
Prim's Algorithm | p. 94 |
Connected Components | p. 97 |
Definitions | p. 97 |
Connected Components and Internet Connectivity | p. 98 |
Strongly Connected Components and Web Page Links | p. 102 |
Maximum Flow | p. 105 |
Definitions | p. 105 |
Edge Connectivity | p. 106 |
Implicit Graphs: A Knight's Tour | p. 113 |
Knight's Jumps as a Graph | p. 114 |
Backtracking Graph Search | p. 116 |
Warnsdorff's Heuristic | p. 117 |
Interfacing with Other Graph Libraries | p. 119 |
Using BGL Topological Sort with a LEDA Graph | p. 120 |
Using BGL Topological Sort with a SGB Graph | p. 122 |
Implementing Graph Adaptors | p. 123 |
Performance Guidelines | p. 127 |
Graph Class Comparisons | p. 127 |
The Results and Discussion | p. 128 |
Conclusion | p. 132 |
Reference Manual | p. 135 |
BGL Concepts | p. 137 |
Graph Traversal Concepts | p. 137 |
Undirected Graphs | p. 138 |
Graph | p. 142 |
IncidenceGraph | p. 143 |
BidirectionalGraph | p. 145 |
AdjacencyGraph | p. 146 |
VertexListGraph | p. 147 |
EdgeListGraph | p. 148 |
AdjacencyMatrix | p. 149 |
Graph Modification Concepts | p. 150 |
VertexMutableGraph | p. 152 |
EdgeMutableGraph | p. 152 |
MutableIncidenceGraph | p. 154 |
MutableBidirectionalGraph | p. 154 |
MutableEdgeListGraph | p. 155 |
PropertyGraph | p. 155 |
VertexMutablePropertyGraph | p. 156 |
EdgeMutablePropertyGraph | p. 157 |
Visitor Concepts | p. 158 |
BFSVisitor | p. 158 |
DFSVisitor | p. 160 |
DijkstraVisitor | p. 161 |
BellmanFordvisitor | p. 162 |
BGL Algorithms | p. 163 |
Overview | p. 163 |
Basic Algorithms | p. 165 |
Breadth_first_search | p. 165 |
Breadth_first_visit | p. 169 |
Depth_first_search | p. 170 |
Depth_first_visit | p. 175 |
Topological_sort | p. 176 |
Shortest-Path Algorithms | p. 177 |
Dijkstra_shortest_paths | p. 177 |
Bellman_ford_shortest_paths | p. 182 |
Johnson_all_pairs_shortest_paths | p. 186 |
Minimum-Spanning-Tree Algorithms | p. 189 |
Kruskal_minimum_spanning_tree | p. 189 |
Prim_minimum_spanning_tree | p. 192 |
Static Connected Components | p. 195 |
Connected_components | p. 195 |
Strong_components | p. 198 |
Incremental Connected Components | p. 201 |
Initialize_incremental_components | p. 203 |
Incremental_components | p. 203 |
same_component | p. 204 |
component_index | p. 204 |
Maximum-Flow Algorithms | p. 206 |
edmunds_karp_max_flow | p. 206 |
push_relabel_max_flow | p. 209 |
BGL Classes | p. 213 |
Graph Classes | p. 213 |
adjacency_list | p. 213 |
adjacency_matrix | p. 235 |
Auxiliary Classes | p. 242 |
graph_traits | p. 242 |
adjacency_list_traits | p. 245 |
adjacency_matrix_traits | p. 247 |
property_map | p. 248 |
property | p. 249 |
Graph Adaptors | p. 251 |
edge_list | p. 251 |
reverse_graph | p. 252 |
filtered_graph | p. 257 |
SGB Graph Pointer | p. 262 |
LEDA GRAPH[left angle bracket]V,E[right angle bracket] | p. 267 |
std::vector[left angle bracket]EdgeList[right angle bracket] | p. 272 |
Property Map Library | p. 277 |
Property Map Concepts | p. 278 |
ReadablePropertyMap | p. 279 |
WritablePropertyMap | p. 280 |
ReadWritePropertyMap | p. 281 |
LvaluePropertyMap | p. 281 |
Property Map Classes | p. 281 |
property_traits | p. 281 |
iterator_property_map | p. 283 |
Property Tags | p. 285 |
Creating Your Own Property Maps | p. 285 |
Property Maps for Stanford GraphBase | p. 286 |
A Property Map Implemented with std::map | p. 287 |
Auxiliary Concepts, Classes, and Functions | p. 289 |
Buffer | p. 289 |
ColorValue | p. 290 |
MultiPassInputlterator | p. 291 |
Monoid | p. 291 |
mutable_queue | p. 292 |
Disjoint Sets | p. 293 |
disjoint_sets | p. 293 |
find_with_path_halving | p. 295 |
find_with_full_path_compression | p. 295 |
tie | p. 295 |
graph_property_iter_range | p. 297 |
Bibliography | p. 299 |
Index | p. 303 |
Table of Contents provided by Syndetics. All Rights Reserved. |
Excerpts
An electronic version of this book is available through VitalSource.
This book is viewable on PC, Mac, iPhone, iPad, iPod Touch, and most smartphones.
By purchasing, you will be able to view this book online, as well as download it, for the chosen number of days.
Digital License
You are licensing a digital product for a set duration. Durations are set forth in the product description, with "Lifetime" typically meaning five (5) years of online access and permanent download to a supported device. All licenses are non-transferable.
More details can be found here.
A downloadable version of this book is available through the eCampus Reader or compatible Adobe readers.
Applications are available on iOS, Android, PC, Mac, and Windows Mobile platforms.
Please view the compatibility matrix prior to purchase.