# HG changeset patch
# User Peter Kovacs <kpeter@inf.elte.hu>
# Date 1258311422 -3600
# Node ID c2230649a493e6fd8f19a16372e9fade832c63d5
# Parent 1a7fe3bef5144989cc90fe53f4f0a23337fc493f
Various doc improvements (#331)
- Add notes to the graph classes about the time of
item counting.
- Clarify the doc for run() in BFS and DFS.
- Other improvements.
diff --git a/lemon/adaptors.h b/lemon/adaptors.h
a
|
b
|
|
360 | 360 | /// by adding or removing nodes or arcs, unless the \c GR template |
361 | 361 | /// parameter is set to be \c const. |
362 | 362 | /// |
| 363 | /// This class provides item counting in the same time as the adapted |
| 364 | /// digraph structure. |
| 365 | /// |
363 | 366 | /// \tparam DGR The type of the adapted digraph. |
364 | 367 | /// It must conform to the \ref concepts::Digraph "Digraph" concept. |
365 | 368 | /// It can also be specified to be \c const. |
… |
… |
|
719 | 722 | /// by adding or removing nodes or arcs, unless the \c GR template |
720 | 723 | /// parameter is set to be \c const. |
721 | 724 | /// |
| 725 | /// This class provides only linear time counting for nodes and arcs. |
| 726 | /// |
722 | 727 | /// \tparam DGR The type of the adapted digraph. |
723 | 728 | /// It must conform to the \ref concepts::Digraph "Digraph" concept. |
724 | 729 | /// It can also be specified to be \c const. |
… |
… |
|
1314 | 1319 | /// by adding or removing nodes or edges, unless the \c GR template |
1315 | 1320 | /// parameter is set to be \c const. |
1316 | 1321 | /// |
| 1322 | /// This class provides only linear time counting for nodes, edges and arcs. |
| 1323 | /// |
1317 | 1324 | /// \tparam GR The type of the adapted graph. |
1318 | 1325 | /// It must conform to the \ref concepts::Graph "Graph" concept. |
1319 | 1326 | /// It can also be specified to be \c const. |
… |
… |
|
1471 | 1478 | /// by adding or removing nodes or arcs/edges, unless the \c GR template |
1472 | 1479 | /// parameter is set to be \c const. |
1473 | 1480 | /// |
| 1481 | /// This class provides only linear time item counting. |
| 1482 | /// |
1474 | 1483 | /// \tparam GR The type of the adapted digraph or graph. |
1475 | 1484 | /// It must conform to the \ref concepts::Digraph "Digraph" concept |
1476 | 1485 | /// or the \ref concepts::Graph "Graph" concept. |
… |
… |
|
1619 | 1628 | /// by adding or removing nodes or arcs, unless the \c GR template |
1620 | 1629 | /// parameter is set to be \c const. |
1621 | 1630 | /// |
| 1631 | /// This class provides only linear time counting for nodes and arcs. |
| 1632 | /// |
1622 | 1633 | /// \tparam DGR The type of the adapted digraph. |
1623 | 1634 | /// It must conform to the \ref concepts::Digraph "Digraph" concept. |
1624 | 1635 | /// It can also be specified to be \c const. |
… |
… |
|
1729 | 1740 | /// by adding or removing nodes or edges, unless the \c GR template |
1730 | 1741 | /// parameter is set to be \c const. |
1731 | 1742 | /// |
| 1743 | /// This class provides only linear time counting for nodes, edges and arcs. |
| 1744 | /// |
1732 | 1745 | /// \tparam GR The type of the adapted graph. |
1733 | 1746 | /// It must conform to the \ref concepts::Graph "Graph" concept. |
1734 | 1747 | /// It can also be specified to be \c const. |
… |
… |
|
2232 | 2245 | /// by adding or removing nodes or edges, unless the \c GR template |
2233 | 2246 | /// parameter is set to be \c const. |
2234 | 2247 | /// |
| 2248 | /// This class provides item counting in the same time as the adapted |
| 2249 | /// digraph structure. |
| 2250 | /// |
2235 | 2251 | /// \tparam DGR The type of the adapted digraph. |
2236 | 2252 | /// It must conform to the \ref concepts::Digraph "Digraph" concept. |
2237 | 2253 | /// It can also be specified to be \c const. |
… |
… |
|
2535 | 2551 | /// by adding or removing nodes or arcs, unless the \c GR template |
2536 | 2552 | /// parameter is set to be \c const. |
2537 | 2553 | /// |
| 2554 | /// This class provides item counting in the same time as the adapted |
| 2555 | /// graph structure. |
| 2556 | /// |
2538 | 2557 | /// \tparam GR The type of the adapted graph. |
2539 | 2558 | /// It must conform to the \ref concepts::Graph "Graph" concept. |
2540 | 2559 | /// It can also be specified to be \c const. |
… |
… |
|
2678 | 2697 | /// arcs). |
2679 | 2698 | /// This class conforms to the \ref concepts::Digraph "Digraph" concept. |
2680 | 2699 | /// |
| 2700 | /// This class provides only linear time counting for nodes and arcs. |
| 2701 | /// |
2681 | 2702 | /// \tparam DGR The type of the adapted digraph. |
2682 | 2703 | /// It must conform to the \ref concepts::Digraph "Digraph" concept. |
2683 | 2704 | /// It is implicitly \c const. |
… |
… |
|
3325 | 3346 | /// costs/capacities of the original digraph to the \e bind \e arcs |
3326 | 3347 | /// in the adaptor. |
3327 | 3348 | /// |
| 3349 | /// This class provides item counting in the same time as the adapted |
| 3350 | /// digraph structure. |
| 3351 | /// |
3328 | 3352 | /// \tparam DGR The type of the adapted digraph. |
3329 | 3353 | /// It must conform to the \ref concepts::Digraph "Digraph" concept. |
3330 | 3354 | /// It is implicitly \c const. |
diff --git a/lemon/bfs.h b/lemon/bfs.h
a
|
b
|
|
701 | 701 | |
702 | 702 | ///Runs the algorithm to visit all nodes in the digraph. |
703 | 703 | |
704 | | ///This method runs the %BFS algorithm in order to |
705 | | ///compute the shortest path to each node. |
706 | | /// |
707 | | ///The algorithm computes |
708 | | ///- the shortest path tree (forest), |
709 | | ///- the distance of each node from the root(s). |
| 704 | ///This method runs the %BFS algorithm in order to visit all nodes |
| 705 | ///in the digraph. |
710 | 706 | /// |
711 | 707 | ///\note <tt>b.run(s)</tt> is just a shortcut of the following code. |
712 | 708 | ///\code |
… |
… |
|
1046 | 1042 | |
1047 | 1043 | ///Runs BFS algorithm to visit all nodes in the digraph. |
1048 | 1044 | |
1049 | | ///This method runs BFS algorithm in order to compute |
1050 | | ///the shortest path to each node. |
| 1045 | ///This method runs BFS algorithm in order to visit all nodes |
| 1046 | ///in the digraph. |
1051 | 1047 | void run() |
1052 | 1048 | { |
1053 | 1049 | run(INVALID); |
… |
… |
|
1695 | 1691 | |
1696 | 1692 | /// \brief Runs the algorithm to visit all nodes in the digraph. |
1697 | 1693 | /// |
1698 | | /// This method runs the %BFS algorithm in order to |
1699 | | /// compute the shortest path to each node. |
1700 | | /// |
1701 | | /// The algorithm computes |
1702 | | /// - the shortest path tree (forest), |
1703 | | /// - the distance of each node from the root(s). |
| 1694 | /// This method runs the %BFS algorithm in order to visit all nodes |
| 1695 | /// in the digraph. |
1704 | 1696 | /// |
1705 | 1697 | /// \note <tt>b.run(s)</tt> is just a shortcut of the following code. |
1706 | 1698 | ///\code |
diff --git a/lemon/dfs.h b/lemon/dfs.h
a
|
b
|
|
633 | 633 | |
634 | 634 | ///Runs the algorithm to visit all nodes in the digraph. |
635 | 635 | |
636 | | ///This method runs the %DFS algorithm in order to compute the |
637 | | ///%DFS path to each node. |
638 | | /// |
639 | | ///The algorithm computes |
640 | | ///- the %DFS tree (forest), |
641 | | ///- the distance of each node from the root(s) in the %DFS tree. |
| 636 | ///This method runs the %DFS algorithm in order to visit all nodes |
| 637 | ///in the digraph. |
642 | 638 | /// |
643 | 639 | ///\note <tt>d.run()</tt> is just a shortcut of the following code. |
644 | 640 | ///\code |
… |
… |
|
976 | 972 | |
977 | 973 | ///Runs DFS algorithm to visit all nodes in the digraph. |
978 | 974 | |
979 | | ///This method runs DFS algorithm in order to compute |
980 | | ///the DFS path to each node. |
| 975 | ///This method runs DFS algorithm in order to visit all nodes |
| 976 | ///in the digraph. |
981 | 977 | void run() |
982 | 978 | { |
983 | 979 | run(INVALID); |
… |
… |
|
1578 | 1574 | |
1579 | 1575 | /// \brief Runs the algorithm to visit all nodes in the digraph. |
1580 | 1576 | |
1581 | | /// This method runs the %DFS algorithm in order to |
1582 | | /// compute the %DFS path to each node. |
1583 | | /// |
1584 | | /// The algorithm computes |
1585 | | /// - the %DFS tree (forest), |
1586 | | /// - the distance of each node from the root(s) in the %DFS tree. |
| 1577 | /// This method runs the %DFS algorithm in order to visit all nodes |
| 1578 | /// in the digraph. |
1587 | 1579 | /// |
1588 | 1580 | /// \note <tt>d.run()</tt> is just a shortcut of the following code. |
1589 | 1581 | ///\code |
diff --git a/lemon/dijkstra.h b/lemon/dijkstra.h
a
|
b
|
|
206 | 206 | typedef typename TR::Digraph Digraph; |
207 | 207 | |
208 | 208 | ///The type of the arc lengths. |
209 | | typedef typename TR::LengthMap::Value Value; |
| 209 | typedef typename TR::Value Value; |
210 | 210 | ///The type of the map that stores the arc lengths. |
211 | 211 | typedef typename TR::LengthMap LengthMap; |
212 | 212 | ///\brief The type of the map that stores the predecessor arcs of the |
diff --git a/lemon/edge_set.h b/lemon/edge_set.h
a
|
b
|
|
255 | 255 | /// that node can be removed from the underlying graph, in this case |
256 | 256 | /// all arcs incident to the given node is erased from the arc set. |
257 | 257 | /// |
| 258 | /// This class fully conforms to the \ref concepts::Digraph |
| 259 | /// "Digraph" concept. |
| 260 | /// It provides only linear time counting for nodes and arcs. |
| 261 | /// |
258 | 262 | /// \param GR The type of the graph which shares its node set with |
259 | 263 | /// this class. Its interface must conform to the |
260 | 264 | /// \ref concepts::Digraph "Digraph" or \ref concepts::Graph "Graph" |
261 | 265 | /// concept. |
262 | | /// |
263 | | /// This class fully conforms to the \ref concepts::Digraph |
264 | | /// "Digraph" concept. |
265 | 266 | template <typename GR> |
266 | 267 | class ListArcSet : public ArcSetExtender<ListArcSetBase<GR> > { |
267 | 268 | typedef ArcSetExtender<ListArcSetBase<GR> > Parent; |
… |
… |
|
685 | 686 | /// be removed from the underlying graph, in this case all edges |
686 | 687 | /// incident to the given node is erased from the arc set. |
687 | 688 | /// |
| 689 | /// This class fully conforms to the \ref concepts::Graph "Graph" |
| 690 | /// concept. |
| 691 | /// It provides only linear time counting for nodes, edges and arcs. |
| 692 | /// |
688 | 693 | /// \param GR The type of the graph which shares its node set |
689 | 694 | /// with this class. Its interface must conform to the |
690 | 695 | /// \ref concepts::Digraph "Digraph" or \ref concepts::Graph "Graph" |
691 | 696 | /// concept. |
692 | | /// |
693 | | /// This class fully conforms to the \ref concepts::Graph "Graph" |
694 | | /// concept. |
695 | 697 | template <typename GR> |
696 | 698 | class ListEdgeSet : public EdgeSetExtender<ListEdgeSetBase<GR> > { |
697 | 699 | typedef EdgeSetExtender<ListEdgeSetBase<GR> > Parent; |
… |
… |
|
954 | 956 | /// single-linked lists for enumerate outgoing and incoming |
955 | 957 | /// arcs. Therefore the arcs cannot be erased from the arc sets. |
956 | 958 | /// |
| 959 | /// This class fully conforms to the \ref concepts::Digraph "Digraph" |
| 960 | /// concept. |
| 961 | /// It provides only linear time counting for nodes and arcs. |
| 962 | /// |
957 | 963 | /// \warning If a node is erased from the underlying graph and this |
958 | 964 | /// node is the source or target of one arc in the arc set, then |
959 | 965 | /// the arc set is invalidated, and it cannot be used anymore. The |
960 | 966 | /// validity can be checked with the \c valid() member function. |
961 | | /// |
962 | | /// This class fully conforms to the \ref concepts::Digraph |
963 | | /// "Digraph" concept. |
964 | 967 | template <typename GR> |
965 | 968 | class SmartArcSet : public ArcSetExtender<SmartArcSetBase<GR> > { |
966 | 969 | typedef ArcSetExtender<SmartArcSetBase<GR> > Parent; |
… |
… |
|
1304 | 1307 | /// single-linked lists for enumerate incident edges. Therefore the |
1305 | 1308 | /// edges cannot be erased from the edge sets. |
1306 | 1309 | /// |
| 1310 | /// This class fully conforms to the \ref concepts::Graph "Graph" |
| 1311 | /// concept. |
| 1312 | /// It provides only linear time counting for nodes, edges and arcs. |
| 1313 | /// |
1307 | 1314 | /// \warning If a node is erased from the underlying graph and this |
1308 | 1315 | /// node is incident to one edge in the edge set, then the edge set |
1309 | 1316 | /// is invalidated, and it cannot be used anymore. The validity can |
1310 | 1317 | /// be checked with the \c valid() member function. |
1311 | | /// |
1312 | | /// This class fully conforms to the \ref concepts::Graph |
1313 | | /// "Graph" concept. |
1314 | 1318 | template <typename GR> |
1315 | 1319 | class SmartEdgeSet : public EdgeSetExtender<SmartEdgeSetBase<GR> > { |
1316 | 1320 | typedef EdgeSetExtender<SmartEdgeSetBase<GR> > Parent; |
diff --git a/lemon/full_graph.h b/lemon/full_graph.h
a
|
b
|
|
162 | 162 | /// Most of its member functions and nested classes are documented |
163 | 163 | /// only in the concept class. |
164 | 164 | /// |
| 165 | /// This class provides constant time counting for nodes and arcs. |
| 166 | /// |
165 | 167 | /// \note FullDigraph and FullGraph classes are very similar, |
166 | 168 | /// but there are two differences. While this class conforms only |
167 | 169 | /// to the \ref concepts::Digraph "Digraph" concept, FullGraph |
… |
… |
|
204 | 206 | /// Returns the node with the given index. Since this structure is |
205 | 207 | /// completely static, the nodes can be indexed with integers from |
206 | 208 | /// the range <tt>[0..nodeNum()-1]</tt>. |
| 209 | /// The index of a node is the same as its ID. |
207 | 210 | /// \sa index() |
208 | 211 | Node operator()(int ix) const { return Parent::operator()(ix); } |
209 | 212 | |
… |
… |
|
212 | 215 | /// Returns the index of the given node. Since this structure is |
213 | 216 | /// completely static, the nodes can be indexed with integers from |
214 | 217 | /// the range <tt>[0..nodeNum()-1]</tt>. |
| 218 | /// The index of a node is the same as its ID. |
215 | 219 | /// \sa operator()() |
216 | 220 | static int index(const Node& node) { return Parent::index(node); } |
217 | 221 | |
… |
… |
|
535 | 539 | /// Most of its member functions and nested classes are documented |
536 | 540 | /// only in the concept class. |
537 | 541 | /// |
| 542 | /// This class provides constant time counting for nodes, edges and arcs. |
| 543 | /// |
538 | 544 | /// \note FullDigraph and FullGraph classes are very similar, |
539 | 545 | /// but there are two differences. While FullDigraph |
540 | 546 | /// conforms only to the \ref concepts::Digraph "Digraph" concept, |
… |
… |
|
579 | 585 | /// Returns the node with the given index. Since this structure is |
580 | 586 | /// completely static, the nodes can be indexed with integers from |
581 | 587 | /// the range <tt>[0..nodeNum()-1]</tt>. |
| 588 | /// The index of a node is the same as its ID. |
582 | 589 | /// \sa index() |
583 | 590 | Node operator()(int ix) const { return Parent::operator()(ix); } |
584 | 591 | |
… |
… |
|
587 | 594 | /// Returns the index of the given node. Since this structure is |
588 | 595 | /// completely static, the nodes can be indexed with integers from |
589 | 596 | /// the range <tt>[0..nodeNum()-1]</tt>. |
| 597 | /// The index of a node is the same as its ID. |
590 | 598 | /// \sa operator()() |
591 | 599 | static int index(const Node& node) { return Parent::index(node); } |
592 | 600 | |
diff --git a/lemon/grid_graph.h b/lemon/grid_graph.h
a
|
b
|
|
503 | 503 | /// This type fully conforms to the \ref concepts::Graph "Graph concept". |
504 | 504 | /// Most of its member functions and nested classes are documented |
505 | 505 | /// only in the concept class. |
| 506 | /// |
| 507 | /// This class provides constant time counting for nodes, edges and arcs. |
506 | 508 | class GridGraph : public ExtendedGridGraphBase { |
507 | 509 | typedef ExtendedGridGraphBase Parent; |
508 | 510 | |
diff --git a/lemon/hypercube_graph.h b/lemon/hypercube_graph.h
a
|
b
|
|
294 | 294 | /// Most of its member functions and nested classes are documented |
295 | 295 | /// only in the concept class. |
296 | 296 | /// |
| 297 | /// This class provides constant time counting for nodes, edges and arcs. |
| 298 | /// |
297 | 299 | /// \note The type of the indices is chosen to \c int for efficiency |
298 | 300 | /// reasons. Thus the maximum dimension of this implementation is 26 |
299 | 301 | /// (assuming that the size of \c int is 32 bit). |
diff --git a/lemon/list_graph.h b/lemon/list_graph.h
a
|
b
|
|
324 | 324 | ///Most of its member functions and nested classes are documented |
325 | 325 | ///only in the concept class. |
326 | 326 | /// |
| 327 | ///This class provides only linear time counting for nodes and arcs. |
| 328 | /// |
327 | 329 | ///\sa concepts::Digraph |
328 | 330 | ///\sa ListGraph |
329 | 331 | class ListDigraph : public ExtendedListDigraphBase { |
… |
… |
|
360 | 362 | |
361 | 363 | ///\brief Erase a node from the digraph. |
362 | 364 | /// |
363 | | ///This function erases the given node from the digraph. |
| 365 | ///This function erases the given node along with its outgoing and |
| 366 | ///incoming arcs from the digraph. |
| 367 | /// |
| 368 | ///\note All iterators referencing the removed node or the connected |
| 369 | ///arcs are invalidated, of course. |
364 | 370 | void erase(Node n) { Parent::erase(n); } |
365 | 371 | |
366 | 372 | ///\brief Erase an arc from the digraph. |
367 | 373 | /// |
368 | 374 | ///This function erases the given arc from the digraph. |
| 375 | /// |
| 376 | ///\note All iterators referencing the removed arc are invalidated, |
| 377 | ///of course. |
369 | 378 | void erase(Arc a) { Parent::erase(a); } |
370 | 379 | |
371 | 380 | /// Node validity check |
… |
… |
|
510 | 519 | |
511 | 520 | ///This function erases all nodes and arcs from the digraph. |
512 | 521 | /// |
| 522 | ///\note All iterators of the digraph are invalidated, of course. |
513 | 523 | void clear() { |
514 | 524 | Parent::clear(); |
515 | 525 | } |
… |
… |
|
1179 | 1189 | ///Most of its member functions and nested classes are documented |
1180 | 1190 | ///only in the concept class. |
1181 | 1191 | /// |
| 1192 | ///This class provides only linear time counting for nodes, edges and arcs. |
| 1193 | /// |
1182 | 1194 | ///\sa concepts::Graph |
1183 | 1195 | ///\sa ListDigraph |
1184 | 1196 | class ListGraph : public ExtendedListGraphBase { |
… |
… |
|
1217 | 1229 | |
1218 | 1230 | ///\brief Erase a node from the graph. |
1219 | 1231 | /// |
1220 | | /// This function erases the given node from the graph. |
| 1232 | /// This function erases the given node along with its incident arcs |
| 1233 | /// from the graph. |
| 1234 | /// |
| 1235 | /// \note All iterators referencing the removed node or the incident |
| 1236 | /// edges are invalidated, of course. |
1221 | 1237 | void erase(Node n) { Parent::erase(n); } |
1222 | 1238 | |
1223 | 1239 | ///\brief Erase an edge from the graph. |
1224 | 1240 | /// |
1225 | 1241 | /// This function erases the given edge from the graph. |
| 1242 | /// |
| 1243 | /// \note All iterators referencing the removed edge are invalidated, |
| 1244 | /// of course. |
1226 | 1245 | void erase(Edge e) { Parent::erase(e); } |
1227 | 1246 | /// Node validity check |
1228 | 1247 | |
… |
… |
|
1312 | 1331 | |
1313 | 1332 | ///This function erases all nodes and arcs from the graph. |
1314 | 1333 | /// |
| 1334 | ///\note All iterators of the graph are invalidated, of course. |
1315 | 1335 | void clear() { |
1316 | 1336 | Parent::clear(); |
1317 | 1337 | } |
diff --git a/lemon/smart_graph.h b/lemon/smart_graph.h
a
|
b
|
|
194 | 194 | ///Most of its member functions and nested classes are documented |
195 | 195 | ///only in the concept class. |
196 | 196 | /// |
| 197 | ///This class provides constant time counting for nodes and arcs. |
| 198 | /// |
197 | 199 | ///\sa concepts::Digraph |
198 | 200 | ///\sa SmartGraph |
199 | 201 | class SmartDigraph : public ExtendedSmartDigraphBase { |
… |
… |
|
620 | 622 | /// Most of its member functions and nested classes are documented |
621 | 623 | /// only in the concept class. |
622 | 624 | /// |
| 625 | /// This class provides constant time counting for nodes, edges and arcs. |
| 626 | /// |
623 | 627 | /// \sa concepts::Graph |
624 | 628 | /// \sa SmartDigraph |
625 | 629 | class SmartGraph : public ExtendedSmartGraphBase { |
diff --git a/lemon/static_graph.h b/lemon/static_graph.h
a
|
b
|
|
292 | 292 | /// Most of its member functions and nested classes are documented |
293 | 293 | /// only in the concept class. |
294 | 294 | /// |
| 295 | /// This class provides constant time counting for nodes and arcs. |
| 296 | /// |
295 | 297 | /// \sa concepts::Digraph |
296 | 298 | class StaticDigraph : public ExtendedStaticDigraphBase { |
297 | 299 | public: |