Changeset 2163:bef3457be038 in lemon-0.x for lemon/concept/ugraph.h
- Timestamp:
- 07/24/06 18:08:34 (18 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2878
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/concept/ugraph.h
r2126 r2163 36 36 37 37 38 /// Class describing the concept of Undirected Graphs.39 38 /// \brief Class describing the concept of Undirected Graphs. 39 /// 40 40 /// This class describes the common interface of all Undirected 41 41 /// Graphs. … … 44 44 /// without any sensible implementation. So any algorithm for 45 45 /// undirected graph should compile with this class, but it will not 46 /// run properly, of cou se.46 /// run properly, of course. 47 47 /// 48 /// In LEMON undirected graphs also fulfill the concept of directed 49 /// graphs (\ref lemon::concept::Graph "Graph Concept"). For 50 /// explanation of this and more see also the page \ref graphs, 51 /// a tutorial about graphs. 48 /// The LEMON undirected graphs also fulfill the concept of 49 /// directed graphs (\ref lemon::concept::Graph "Graph 50 /// Concept"). Each undirected edges can be seen as two opposite 51 /// directed edge and consequently the undirected graph can be 52 /// seen as the direceted graph of these directed edges. The 53 /// UGraph has the UEdge inner class for the undirected edges and 54 /// the Edge type for the directed edges. The Edge type is 55 /// convertible to UEdge or inherited from it so from a directed 56 /// edge we can get the represented undirected edge. 52 57 /// 53 /// You can assume that all undirected graph can be handled 54 /// as a directed graph. This way it is fully conform 55 /// to the Graph concept. 56 58 /// In the sense of the LEMON each undirected edge has a default 59 /// direction (it should be in every computer implementation, 60 /// because the order of undirected edge's nodes defines an 61 /// orientation). With the default orientation we can define that 62 /// the directed edge is forward or backward directed. With the \c 63 /// direction() and \c direct() function we can get the direction 64 /// of the directed edge and we can direct an undirected edge. 65 /// 66 /// The UEdgeIt is an iterator for the undirected edges. We can use 67 /// the UEdgeMap to map values for the undirected edges. The InEdgeIt and 68 /// OutEdgeIt iterates on the same undirected edges but with opposite 69 /// direction. The IncEdgeIt iterates also on the same undirected edges 70 /// as the OutEdgeIt and InEdgeIt but it is not convertible to Edge just 71 /// to UEdge. 57 72 class UGraph { 58 73 public: 59 ///\e 60 61 ///\todo undocumented 62 /// 74 /// \brief The undirected graph should be tagged by the 75 /// UndirectedTag. 76 /// 77 /// The undirected graph should be tagged by the UndirectedTag. This 78 /// tag helps the enable_if technics to make compile time 79 /// specializations for undirected graphs. 63 80 typedef True UndirectedTag; 64 81 … … 297 314 298 315 /// The directed edge type. It can be converted to the 299 /// undirected edge. 316 /// undirected edge or it should be inherited from the undirected 317 /// edge. 300 318 class Edge : public UEdge { 301 319 public: … … 563 581 /// 564 582 /// Direct the given undirected edge. The returned edge source 565 /// will be the given edge.583 /// will be the given node. 566 584 Edge direct(const UEdge&, const Node&) const { 567 585 return INVALID; … … 570 588 /// \brief Direct the given undirected edge. 571 589 /// 572 /// Direct the given undirected edge. The returned edge source 573 /// will be the source of the undirected edge if the given bool 574 /// is true. 590 /// Direct the given undirected edge. The returned edge 591 /// represents the given undireted edge and the direction comes 592 /// from the given bool. The source of the undirected edge and 593 /// the directed edge is the same when the given bool is true. 575 594 Edge direct(const UEdge&, bool) const { 576 595 return INVALID; … … 580 599 /// 581 600 /// Returns whether the given directed edge is same orientation as 582 /// the corresponding undirected edge .601 /// the corresponding undirected edge's default orientation. 583 602 bool direction(Edge) const { return true; } 584 603 … … 590 609 /// \brief Opposite node on an edge 591 610 /// 592 /// \return the opposite of the given Node on the given Edge611 /// \return the opposite of the given Node on the given UEdge 593 612 Node oppositeNode(Node, UEdge) const { return INVALID; } 594 613 … … 597 616 /// \return the first node of the given UEdge. 598 617 /// 599 /// Naturally u ectected edges don't have direction and thus618 /// Naturally undirected edges don't have direction and thus 600 619 /// don't have source and target node. But we use these two methods 601 /// to query the two endnodes of the edge. The direction of the edge620 /// to query the two nodes of the edge. The direction of the edge 602 621 /// which arises this way is called the inherent direction of the 603 622 /// undirected edge, and is used to define the "default" direction
Note: See TracChangeset
for help on using the changeset viewer.