gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Improvements related to full graphs (#57)
0 2 0
default
2 files changed with 68 insertions and 64 deletions:
↑ Collapse diff ↑
Show white space 6 line context
... ...
@@ -21,4 +21,2 @@
21 21

	
22
#include <lemon/math.h>
23

	
24 22
#include <lemon/core.h>
... ...
@@ -28,3 +26,4 @@
28 26
///\file
29
///\brief FullDigraph and FullGraph classes.
27
///\brief FullGraph and FullDigraph classes.
28

	
30 29
namespace lemon {
... ...
@@ -69,3 +68,2 @@
69 68

	
70

	
71 69
    static int id(Node node) { return node._id; }
... ...
@@ -74,3 +72,2 @@
74 72
    static Node nodeFromId(int id) { return Node(id);}
75

	
76 73
    static Arc arcFromId(int id) { return Arc(id);}
... ...
@@ -83,3 +80,2 @@
83 80

	
84

	
85 81
    class Node {
... ...
@@ -159,10 +155,16 @@
159 155
  /// therefore the number of the arcs in the digraph is the square of
160
  /// the node number. The digraph is completely static, so you can
161
  /// neither add nor delete either arcs or nodes, and it needs just
156
  /// the node number. This digraph type is completely static, so you
157
  /// can neither add nor delete either arcs or nodes, and it needs
162 158
  /// constant space in memory.
163 159
  ///
164
  /// Thus it conforms to the \ref concepts::Digraph "Digraph" concept
160
  /// This class conforms to the \ref concepts::Digraph "Digraph" concept
165 161
  /// and it also has an important extra feature that its maps are
166 162
  /// real \ref concepts::ReferenceMap "reference map"s.
167
  /// \sa concepts::Digraph.
163
  ///
164
  /// The \c FullDigraph and \c FullGraph classes are very similar,
165
  /// but there are two differences. While this class conforms only
166
  /// to the \ref concepts::Digraph "Digraph" concept, the \c FullGraph
167
  /// class conforms to the \ref concepts::Graph "Graph" concept,
168
  /// moreover \c FullGraph does not contain a loop arc for each
169
  /// node as \c FullDigraph does.
168 170
  ///
... ...
@@ -179,2 +181,3 @@
179 181
    ///
182
    /// Constructor.
180 183
    /// \param n The number of the nodes.
... ...
@@ -182,8 +185,7 @@
182 185

	
183
    /// \brief Resize the digraph
186
    /// \brief Resizes the digraph
184 187
    ///
185
    /// Resize the digraph. The function will fully destroy and
186
    /// rebuild the digraph.  This cause that the maps of the digraph
187
    /// will reallocated automatically and the previous values will be
188
    /// lost.
188
    /// Resizes the digraph. The function will fully destroy and
189
    /// rebuild the digraph. This cause that the maps of the digraph will
190
    /// reallocated automatically and the previous values will be lost.
189 191
    void resize(int n) {
... ...
@@ -198,19 +200,19 @@
198 200
    ///
199
    /// Returns the node with the given index. Because it is a
200
    /// static size digraph the node's of the digraph can be indexed
201
    /// in the range <tt>[0..nodeNum()-1]</tt> and the index of
202
    /// the node can accessed by the \e index() member.
201
    /// Returns the node with the given index. Since it is a static
202
    /// digraph its nodes can be indexed with integers from the range
203
    /// <tt>[0..nodeNum()-1]</tt>.
204
    /// \sa index()
203 205
    Node operator()(int ix) const { return Parent::operator()(ix); }
204 206

	
205
    /// \brief Returns the index of the node.
207
    /// \brief Returns the index of the given node.
206 208
    ///
207
    /// Returns the index of the node. Because it is a
208
    /// static size digraph the node's of the digraph can be indexed
209
    /// in the range <tt>[0..nodeNum()-1]</tt> and the index of
210
    /// the node can accessed by the \e index() member.
209
    /// Returns the index of the given node. Since it is a static
210
    /// digraph its nodes can be indexed with integers from the range
211
    /// <tt>[0..nodeNum()-1]</tt>.
212
    /// \sa operator()
211 213
    int index(const Node& node) const { return Parent::index(node); }
212 214

	
213
    /// \brief Returns the arc connects the given nodes.
215
    /// \brief Returns the arc connecting the given nodes.
214 216
    ///
215
    /// Returns the arc connects the given nodes.
217
    /// Returns the arc connecting the given nodes.
216 218
    Arc arc(const Node& u, const Node& v) const {
... ...
@@ -282,3 +284,2 @@
282 284

	
283

	
284 285
    Node operator()(int ix) const { return Node(ix); }
... ...
@@ -369,2 +370,3 @@
369 370
      friend class FullGraphBase;
371
      friend class Arc;
370 372

	
... ...
@@ -520,16 +522,17 @@
520 522
  /// implementation. From each node go edge to each other node,
521
  /// therefore the number of edges in the graph is
522
  /// <tt>n(n-1)/2</tt>. It is completely static, so you can neither
523
  /// add nor delete either edges or nodes, and it needs just constant
523
  /// therefore the number of edges in the graph is \f$n(n-1)/2\f$.
524
  /// This graph type is completely static, so you can neither
525
  /// add nor delete either edges or nodes, and it needs constant
524 526
  /// space in memory.
525 527
  ///
526
  /// The \e FullDigraph and \e FullGraph classes are very similar,
527
  /// but there are two differences. While the \e FullDigraph class is
528
  /// conform just to the \ref concepts::Digraph "Digraph" concept,
529
  /// this class is conform to the \ref concepts::Graph "Graph"
530
  /// concept. In addition, the \e FullGraph class does not contain a
531
  /// loop arc from each node as the \e FullDigraph does.
528
  /// This class conforms to the \ref concepts::Graph "Graph" concept
529
  /// and it also has an important extra feature that its maps are
530
  /// real \ref concepts::ReferenceMap "reference map"s.
532 531
  ///
533
  /// It also has an important extra feature that its maps are real
534
  /// \ref concepts::ReferenceMap "reference map"s.
532
  /// The \c FullGraph and \c FullDigraph classes are very similar,
533
  /// but there are two differences. While the \c FullDigraph class
534
  /// conforms only to the \ref concepts::Digraph "Digraph" concept,
535
  /// this class conforms to the \ref concepts::Graph "Graph" concept,
536
  /// moreover \c FullGraph does not contain a loop arc for each
537
  /// node as \c FullDigraph does.
535 538
  ///
... ...
@@ -546,2 +549,3 @@
546 549
    ///
550
    /// Constructor.
547 551
    /// \param n The number of the nodes.
... ...
@@ -549,8 +553,7 @@
549 553

	
550
    /// \brief Resize the graph
554
    /// \brief Resizes the graph
551 555
    ///
552
    /// Resize the graph. The function will fully destroy and rebuild
553
    /// the graph.  This cause that the maps of the graph will
554
    /// reallocated automatically and the previous values will be
555
    /// lost.
556
    /// Resizes the graph. The function will fully destroy and
557
    /// rebuild the graph. This cause that the maps of the graph will
558
    /// reallocated automatically and the previous values will be lost.
556 559
    void resize(int n) {
... ...
@@ -567,26 +570,19 @@
567 570
    ///
568
    /// Returns the node with the given index. Because it is a static
569
    /// size graph the node's of the graph can be indexed in the range
570
    /// <tt>[0..nodeNum()-1]</tt> and the index of the node can
571
    /// accessed by the \e index() member.
571
    /// Returns the node with the given index. Since it is a static
572
    /// graph its nodes can be indexed with integers from the range
573
    /// <tt>[0..nodeNum()-1]</tt>.
574
    /// \sa index()
572 575
    Node operator()(int ix) const { return Parent::operator()(ix); }
573 576

	
574
    /// \brief Returns the index of the node.
577
    /// \brief Returns the index of the given node.
575 578
    ///
576
    /// Returns the index of the node. Because it is a static size
577
    /// graph the node's of the graph can be indexed in the range
578
    /// <tt>[0..nodeNum()-1]</tt> and the index of the node can
579
    /// accessed by the \e index() member.
579
    /// Returns the index of the given node. Since it is a static
580
    /// graph its nodes can be indexed with integers from the range
581
    /// <tt>[0..nodeNum()-1]</tt>.
582
    /// \sa operator()
580 583
    int index(const Node& node) const { return Parent::index(node); }
581 584

	
582
    /// \brief Number of nodes.
583
    int nodeNum() const { return Parent::nodeNum(); }
584
    /// \brief Number of arcs.
585
    int arcNum() const { return Parent::arcNum(); }
586
    /// \brief Number of edges.
587
    int edgeNum() const { return Parent::edgeNum(); }
588

	
589
    /// \brief Returns the arc connects the given nodes.
585
    /// \brief Returns the arc connecting the given nodes.
590 586
    ///
591
    /// Returns the arc connects the given nodes.
587
    /// Returns the arc connecting the given nodes.
592 588
    Arc arc(const Node& s, const Node& t) const {
... ...
@@ -601,2 +597,10 @@
601 597
    }
598

	
599
    /// \brief Number of nodes.
600
    int nodeNum() const { return Parent::nodeNum(); }
601
    /// \brief Number of arcs.
602
    int arcNum() const { return Parent::arcNum(); }
603
    /// \brief Number of edges.
604
    int edgeNum() const { return Parent::edgeNum(); }
605

	
602 606
  };
Ignore white space 6 line context
... ...
@@ -144,5 +144,5 @@
144 144
  }
145
//  { // Checking FullDigraph
146
//    checkConcept<Digraph, FullDigraph>();
147
//  }
145
  { // Checking FullDigraph
146
    checkConcept<Digraph, FullDigraph>();
147
  }
148 148
//  { // Checking HyperCubeDigraph
0 comments (0 inline)