gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Doc improvements for Bfs, Dfs, Dijkstra (#185) - More precise references to overloaded member functions. - Hide the doc of the traits class parameters. - Better doc for named groups. - More precise doc for the case of multiple sources in Dfs.
0 3 0
default
3 files changed with 276 insertions and 269 deletions:
↑ Collapse diff ↑
Show white space 6 line context
... ...
@@ -80,7 +80,8 @@
80 80

	
81 81
    ///The type of the map that indicates which nodes are reached.
82 82

	
83
    ///The type of the map that indicates which nodes are reached.///It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
83
    ///The type of the map that indicates which nodes are reached.
84
    ///It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
84 85
    typedef typename Digraph::template NodeMap<bool> ReachedMap;
85 86
    ///Instantiates a ReachedMap.
86 87

	
... ...
@@ -118,13 +119,7 @@
118 119
  ///used easier.
119 120
  ///
120 121
  ///\tparam GR The type of the digraph the algorithm runs on.
121
  ///The default value is \ref ListDigraph. The value of GR is not used
122
  ///directly by \ref Bfs, it is only passed to \ref BfsDefaultTraits.
123
  ///\tparam TR Traits class to set various data types used by the algorithm.
124
  ///The default traits class is
125
  ///\ref BfsDefaultTraits "BfsDefaultTraits<GR>".
126
  ///See \ref BfsDefaultTraits for the documentation of
127
  ///a Bfs traits class.
122
  ///The default type is \ref ListDigraph.
128 123
#ifdef DOXYGEN
129 124
  template <typename GR,
130 125
            typename TR>
... ...
@@ -150,7 +145,7 @@
150 145
    ///The type of the paths.
151 146
    typedef PredMapPath<Digraph, PredMap> Path;
152 147

	
153
    ///The traits class.
148
    ///The \ref BfsDefaultTraits "traits class" of the algorithm.
154 149
    typedef TR Traits;
155 150

	
156 151
  private:
... ...
@@ -212,7 +207,7 @@
212 207

	
213 208
    typedef Bfs Create;
214 209

	
215
    ///\name Named template parameters
210
    ///\name Named Template Parameters
216 211

	
217 212
    ///@{
218 213

	
... ...
@@ -230,6 +225,7 @@
230 225
    ///
231 226
    ///\ref named-templ-param "Named parameter" for setting
232 227
    ///PredMap type.
228
    ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
233 229
    template <class T>
234 230
    struct SetPredMap : public Bfs< Digraph, SetPredMapTraits<T> > {
235 231
      typedef Bfs< Digraph, SetPredMapTraits<T> > Create;
... ...
@@ -249,6 +245,7 @@
249 245
    ///
250 246
    ///\ref named-templ-param "Named parameter" for setting
251 247
    ///DistMap type.
248
    ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
252 249
    template <class T>
253 250
    struct SetDistMap : public Bfs< Digraph, SetDistMapTraits<T> > {
254 251
      typedef Bfs< Digraph, SetDistMapTraits<T> > Create;
... ...
@@ -268,6 +265,7 @@
268 265
    ///
269 266
    ///\ref named-templ-param "Named parameter" for setting
270 267
    ///ReachedMap type.
268
    ///It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
271 269
    template <class T>
272 270
    struct SetReachedMap : public Bfs< Digraph, SetReachedMapTraits<T> > {
273 271
      typedef Bfs< Digraph, SetReachedMapTraits<T> > Create;
... ...
@@ -287,6 +285,7 @@
287 285
    ///
288 286
    ///\ref named-templ-param "Named parameter" for setting
289 287
    ///ProcessedMap type.
288
    ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
290 289
    template <class T>
291 290
    struct SetProcessedMap : public Bfs< Digraph, SetProcessedMapTraits<T> > {
292 291
      typedef Bfs< Digraph, SetProcessedMapTraits<T> > Create;
... ...
@@ -339,9 +338,10 @@
339 338
    ///Sets the map that stores the predecessor arcs.
340 339

	
341 340
    ///Sets the map that stores the predecessor arcs.
342
    ///If you don't use this function before calling \ref run(),
343
    ///it will allocate one. The destructor deallocates this
344
    ///automatically allocated map, of course.
341
    ///If you don't use this function before calling \ref run(Node) "run()"
342
    ///or \ref init(), an instance will be allocated automatically.
343
    ///The destructor deallocates this automatically allocated map,
344
    ///of course.
345 345
    ///\return <tt> (*this) </tt>
346 346
    Bfs &predMap(PredMap &m)
347 347
    {
... ...
@@ -356,9 +356,10 @@
356 356
    ///Sets the map that indicates which nodes are reached.
357 357

	
358 358
    ///Sets the map that indicates which nodes are reached.
359
    ///If you don't use this function before calling \ref run(),
360
    ///it will allocate one. The destructor deallocates this
361
    ///automatically allocated map, of course.
359
    ///If you don't use this function before calling \ref run(Node) "run()"
360
    ///or \ref init(), an instance will be allocated automatically.
361
    ///The destructor deallocates this automatically allocated map,
362
    ///of course.
362 363
    ///\return <tt> (*this) </tt>
363 364
    Bfs &reachedMap(ReachedMap &m)
364 365
    {
... ...
@@ -373,9 +374,10 @@
373 374
    ///Sets the map that indicates which nodes are processed.
374 375

	
375 376
    ///Sets the map that indicates which nodes are processed.
376
    ///If you don't use this function before calling \ref run(),
377
    ///it will allocate one. The destructor deallocates this
378
    ///automatically allocated map, of course.
377
    ///If you don't use this function before calling \ref run(Node) "run()"
378
    ///or \ref init(), an instance will be allocated automatically.
379
    ///The destructor deallocates this automatically allocated map,
380
    ///of course.
379 381
    ///\return <tt> (*this) </tt>
380 382
    Bfs &processedMap(ProcessedMap &m)
381 383
    {
... ...
@@ -391,9 +393,10 @@
391 393

	
392 394
    ///Sets the map that stores the distances of the nodes calculated by
393 395
    ///the algorithm.
394
    ///If you don't use this function before calling \ref run(),
395
    ///it will allocate one. The destructor deallocates this
396
    ///automatically allocated map, of course.
396
    ///If you don't use this function before calling \ref run(Node) "run()"
397
    ///or \ref init(), an instance will be allocated automatically.
398
    ///The destructor deallocates this automatically allocated map,
399
    ///of course.
397 400
    ///\return <tt> (*this) </tt>
398 401
    Bfs &distMap(DistMap &m)
399 402
    {
... ...
@@ -407,22 +410,19 @@
407 410

	
408 411
  public:
409 412

	
410
    ///\name Execution control
411
    ///The simplest way to execute the algorithm is to use
412
    ///one of the member functions called \ref lemon::Bfs::run() "run()".
413
    ///\n
414
    ///If you need more control on the execution, first you must call
415
    ///\ref lemon::Bfs::init() "init()", then you can add several source
416
    ///nodes with \ref lemon::Bfs::addSource() "addSource()".
417
    ///Finally \ref lemon::Bfs::start() "start()" will perform the
418
    ///actual path computation.
413
    ///\name Execution Control
414
    ///The simplest way to execute the BFS algorithm is to use one of the
415
    ///member functions called \ref run(Node) "run()".\n
416
    ///If you need more control on the execution, first you have to call
417
    ///\ref init(), then you can add several source nodes with
418
    ///\ref addSource(). Finally the actual path computation can be
419
    ///performed with one of the \ref start() functions.
419 420

	
420 421
    ///@{
421 422

	
423
    ///\brief Initializes the internal data structures.
424
    ///
422 425
    ///Initializes the internal data structures.
423

	
424
    ///Initializes the internal data structures.
425
    ///
426 426
    void init()
427 427
    {
428 428
      create_maps();
... ...
@@ -556,16 +556,16 @@
556 556
      return _queue_tail<_queue_head?_queue[_queue_tail]:INVALID;
557 557
    }
558 558

	
559
    ///\brief Returns \c false if there are nodes
560
    ///to be processed.
561
    ///
562
    ///Returns \c false if there are nodes
563
    ///to be processed in the queue.
559
    ///Returns \c false if there are nodes to be processed.
560

	
561
    ///Returns \c false if there are nodes to be processed
562
    ///in the queue.
564 563
    bool emptyQueue() const { return _queue_tail==_queue_head; }
565 564

	
566 565
    ///Returns the number of the nodes to be processed.
567 566

	
568
    ///Returns the number of the nodes to be processed in the queue.
567
    ///Returns the number of the nodes to be processed
568
    ///in the queue.
569 569
    int queueSize() const { return _queue_head-_queue_tail; }
570 570

	
571 571
    ///Executes the algorithm.
... ...
@@ -730,10 +730,10 @@
730 730
    ///@}
731 731

	
732 732
    ///\name Query Functions
733
    ///The result of the %BFS algorithm can be obtained using these
733
    ///The results of the BFS algorithm can be obtained using these
734 734
    ///functions.\n
735
    ///Either \ref lemon::Bfs::run() "run()" or \ref lemon::Bfs::start()
736
    ///"start()" must be called before using them.
735
    ///Either \ref run(Node) "run()" or \ref start() should be called
736
    ///before using them.
737 737

	
738 738
    ///@{
739 739

	
... ...
@@ -741,49 +741,49 @@
741 741

	
742 742
    ///Returns the shortest path to a node.
743 743
    ///
744
    ///\warning \c t should be reachable from the root(s).
744
    ///\warning \c t should be reached from the root(s).
745 745
    ///
746
    ///\pre Either \ref run() or \ref start() must be called before
747
    ///using this function.
746
    ///\pre Either \ref run(Node) "run()" or \ref init()
747
    ///must be called before using this function.
748 748
    Path path(Node t) const { return Path(*G, *_pred, t); }
749 749

	
750 750
    ///The distance of a node from the root(s).
751 751

	
752 752
    ///Returns the distance of a node from the root(s).
753 753
    ///
754
    ///\warning If node \c v is not reachable from the root(s), then
754
    ///\warning If node \c v is not reached from the root(s), then
755 755
    ///the return value of this function is undefined.
756 756
    ///
757
    ///\pre Either \ref run() or \ref start() must be called before
758
    ///using this function.
757
    ///\pre Either \ref run(Node) "run()" or \ref init()
758
    ///must be called before using this function.
759 759
    int dist(Node v) const { return (*_dist)[v]; }
760 760

	
761 761
    ///Returns the 'previous arc' of the shortest path tree for a node.
762 762

	
763 763
    ///This function returns the 'previous arc' of the shortest path
764 764
    ///tree for the node \c v, i.e. it returns the last arc of a
765
    ///shortest path from the root(s) to \c v. It is \c INVALID if \c v
766
    ///is not reachable from the root(s) or if \c v is a root.
765
    ///shortest path from a root to \c v. It is \c INVALID if \c v
766
    ///is not reached from the root(s) or if \c v is a root.
767 767
    ///
768 768
    ///The shortest path tree used here is equal to the shortest path
769 769
    ///tree used in \ref predNode().
770 770
    ///
771
    ///\pre Either \ref run() or \ref start() must be called before
772
    ///using this function.
771
    ///\pre Either \ref run(Node) "run()" or \ref init()
772
    ///must be called before using this function.
773 773
    Arc predArc(Node v) const { return (*_pred)[v];}
774 774

	
775 775
    ///Returns the 'previous node' of the shortest path tree for a node.
776 776

	
777 777
    ///This function returns the 'previous node' of the shortest path
778 778
    ///tree for the node \c v, i.e. it returns the last but one node
779
    ///from a shortest path from the root(s) to \c v. It is \c INVALID
780
    ///if \c v is not reachable from the root(s) or if \c v is a root.
779
    ///from a shortest path from a root to \c v. It is \c INVALID
780
    ///if \c v is not reached from the root(s) or if \c v is a root.
781 781
    ///
782 782
    ///The shortest path tree used here is equal to the shortest path
783 783
    ///tree used in \ref predArc().
784 784
    ///
785
    ///\pre Either \ref run() or \ref start() must be called before
786
    ///using this function.
785
    ///\pre Either \ref run(Node) "run()" or \ref init()
786
    ///must be called before using this function.
787 787
    Node predNode(Node v) const { return (*_pred)[v]==INVALID ? INVALID:
788 788
                                  G->source((*_pred)[v]); }
789 789

	
... ...
@@ -793,7 +793,7 @@
793 793
    ///Returns a const reference to the node map that stores the distances
794 794
    ///of the nodes calculated by the algorithm.
795 795
    ///
796
    ///\pre Either \ref run() or \ref init()
796
    ///\pre Either \ref run(Node) "run()" or \ref init()
797 797
    ///must be called before using this function.
798 798
    const DistMap &distMap() const { return *_dist;}
799 799

	
... ...
@@ -803,14 +803,15 @@
803 803
    ///Returns a const reference to the node map that stores the predecessor
804 804
    ///arcs, which form the shortest path tree.
805 805
    ///
806
    ///\pre Either \ref run() or \ref init()
806
    ///\pre Either \ref run(Node) "run()" or \ref init()
807 807
    ///must be called before using this function.
808 808
    const PredMap &predMap() const { return *_pred;}
809 809

	
810
    ///Checks if a node is reachable from the root(s).
810
    ///Checks if a node is reached from the root(s).
811 811

	
812
    ///Returns \c true if \c v is reachable from the root(s).
813
    ///\pre Either \ref run() or \ref start()
812
    ///Returns \c true if \c v is reached from the root(s).
813
    ///
814
    ///\pre Either \ref run(Node) "run()" or \ref init()
814 815
    ///must be called before using this function.
815 816
    bool reached(Node v) const { return (*_reached)[v]; }
816 817

	
... ...
@@ -956,8 +957,8 @@
956 957

	
957 958
  /// This auxiliary class is created to implement the
958 959
  /// \ref bfs() "function-type interface" of \ref Bfs algorithm.
959
  /// It does not have own \ref run() method, it uses the functions
960
  /// and features of the plain \ref Bfs.
960
  /// It does not have own \ref run(Node) "run()" method, it uses the
961
  /// functions and features of the plain \ref Bfs.
961 962
  ///
962 963
  /// This class should only be used through the \ref bfs() function,
963 964
  /// which makes it easier to use the algorithm.
... ...
@@ -1177,7 +1178,7 @@
1177 1178
  ///  // Compute shortest path from s to t
1178 1179
  ///  bool reached = bfs(g).path(p).dist(d).run(s,t);
1179 1180
  ///\endcode
1180
  ///\warning Don't forget to put the \ref BfsWizard::run() "run()"
1181
  ///\warning Don't forget to put the \ref BfsWizard::run(Node) "run()"
1181 1182
  ///to the end of the parameter list.
1182 1183
  ///\sa BfsWizard
1183 1184
  ///\sa Bfs
... ...
@@ -1363,7 +1364,7 @@
1363 1364

	
1364 1365
    typedef BfsVisit Create;
1365 1366

	
1366
    /// \name Named template parameters
1367
    /// \name Named Template Parameters
1367 1368

	
1368 1369
    ///@{
1369 1370
    template <class T>
... ...
@@ -1405,9 +1406,10 @@
1405 1406
    /// \brief Sets the map that indicates which nodes are reached.
1406 1407
    ///
1407 1408
    /// Sets the map that indicates which nodes are reached.
1408
    /// If you don't use this function before calling \ref run(),
1409
    /// it will allocate one. The destructor deallocates this
1410
    /// automatically allocated map, of course.
1409
    /// If you don't use this function before calling \ref run(Node) "run()"
1410
    /// or \ref init(), an instance will be allocated automatically.
1411
    /// The destructor deallocates this automatically allocated map,
1412
    /// of course.
1411 1413
    /// \return <tt> (*this) </tt>
1412 1414
    BfsVisit &reachedMap(ReachedMap &m) {
1413 1415
      if(local_reached) {
... ...
@@ -1420,16 +1422,13 @@
1420 1422

	
1421 1423
  public:
1422 1424

	
1423
    /// \name Execution control
1424
    /// The simplest way to execute the algorithm is to use
1425
    /// one of the member functions called \ref lemon::BfsVisit::run()
1426
    /// "run()".
1427
    /// \n
1428
    /// If you need more control on the execution, first you must call
1429
    /// \ref lemon::BfsVisit::init() "init()", then you can add several
1430
    /// source nodes with \ref lemon::BfsVisit::addSource() "addSource()".
1431
    /// Finally \ref lemon::BfsVisit::start() "start()" will perform the
1432
    /// actual path computation.
1425
    /// \name Execution Control
1426
    /// The simplest way to execute the BFS algorithm is to use one of the
1427
    /// member functions called \ref run(Node) "run()".\n
1428
    /// If you need more control on the execution, first you have to call
1429
    /// \ref init(), then you can add several source nodes with
1430
    /// \ref addSource(). Finally the actual path computation can be
1431
    /// performed with one of the \ref start() functions.
1433 1432

	
1434 1433
    /// @{
1435 1434

	
... ...
@@ -1729,17 +1728,18 @@
1729 1728
    ///@}
1730 1729

	
1731 1730
    /// \name Query Functions
1732
    /// The result of the %BFS algorithm can be obtained using these
1731
    /// The results of the BFS algorithm can be obtained using these
1733 1732
    /// functions.\n
1734
    /// Either \ref lemon::BfsVisit::run() "run()" or
1735
    /// \ref lemon::BfsVisit::start() "start()" must be called before
1736
    /// using them.
1733
    /// Either \ref run(Node) "run()" or \ref start() should be called
1734
    /// before using them.
1735

	
1737 1736
    ///@{
1738 1737

	
1739
    /// \brief Checks if a node is reachable from the root(s).
1738
    /// \brief Checks if a node is reached from the root(s).
1740 1739
    ///
1741
    /// Returns \c true if \c v is reachable from the root(s).
1742
    /// \pre Either \ref run() or \ref start()
1740
    /// Returns \c true if \c v is reached from the root(s).
1741
    ///
1742
    /// \pre Either \ref run(Node) "run()" or \ref init()
1743 1743
    /// must be called before using this function.
1744 1744
    bool reached(Node v) { return (*_reached)[v]; }
1745 1745

	
Show white space 6 line context
... ...
@@ -119,13 +119,7 @@
119 119
  ///used easier.
120 120
  ///
121 121
  ///\tparam GR The type of the digraph the algorithm runs on.
122
  ///The default value is \ref ListDigraph. The value of GR is not used
123
  ///directly by \ref Dfs, it is only passed to \ref DfsDefaultTraits.
124
  ///\tparam TR Traits class to set various data types used by the algorithm.
125
  ///The default traits class is
126
  ///\ref DfsDefaultTraits "DfsDefaultTraits<GR>".
127
  ///See \ref DfsDefaultTraits for the documentation of
128
  ///a Dfs traits class.
122
  ///The default type is \ref ListDigraph.
129 123
#ifdef DOXYGEN
130 124
  template <typename GR,
131 125
            typename TR>
... ...
@@ -151,7 +145,7 @@
151 145
    ///The type of the paths.
152 146
    typedef PredMapPath<Digraph, PredMap> Path;
153 147

	
154
    ///The traits class.
148
    ///The \ref DfsDefaultTraits "traits class" of the algorithm.
155 149
    typedef TR Traits;
156 150

	
157 151
  private:
... ...
@@ -230,6 +224,7 @@
230 224
    ///
231 225
    ///\ref named-templ-param "Named parameter" for setting
232 226
    ///PredMap type.
227
    ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
233 228
    template <class T>
234 229
    struct SetPredMap : public Dfs<Digraph, SetPredMapTraits<T> > {
235 230
      typedef Dfs<Digraph, SetPredMapTraits<T> > Create;
... ...
@@ -249,6 +244,7 @@
249 244
    ///
250 245
    ///\ref named-templ-param "Named parameter" for setting
251 246
    ///DistMap type.
247
    ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
252 248
    template <class T>
253 249
    struct SetDistMap : public Dfs< Digraph, SetDistMapTraits<T> > {
254 250
      typedef Dfs<Digraph, SetDistMapTraits<T> > Create;
... ...
@@ -268,6 +264,7 @@
268 264
    ///
269 265
    ///\ref named-templ-param "Named parameter" for setting
270 266
    ///ReachedMap type.
267
    ///It must meet the \ref concepts::ReadWriteMap "ReadWriteMap" concept.
271 268
    template <class T>
272 269
    struct SetReachedMap : public Dfs< Digraph, SetReachedMapTraits<T> > {
273 270
      typedef Dfs< Digraph, SetReachedMapTraits<T> > Create;
... ...
@@ -287,6 +284,7 @@
287 284
    ///
288 285
    ///\ref named-templ-param "Named parameter" for setting
289 286
    ///ProcessedMap type.
287
    ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
290 288
    template <class T>
291 289
    struct SetProcessedMap : public Dfs< Digraph, SetProcessedMapTraits<T> > {
292 290
      typedef Dfs< Digraph, SetProcessedMapTraits<T> > Create;
... ...
@@ -338,9 +336,10 @@
338 336
    ///Sets the map that stores the predecessor arcs.
339 337

	
340 338
    ///Sets the map that stores the predecessor arcs.
341
    ///If you don't use this function before calling \ref run(),
342
    ///it will allocate one. The destructor deallocates this
343
    ///automatically allocated map, of course.
339
    ///If you don't use this function before calling \ref run(Node) "run()"
340
    ///or \ref init(), an instance will be allocated automatically.
341
    ///The destructor deallocates this automatically allocated map,
342
    ///of course.
344 343
    ///\return <tt> (*this) </tt>
345 344
    Dfs &predMap(PredMap &m)
346 345
    {
... ...
@@ -355,9 +354,10 @@
355 354
    ///Sets the map that indicates which nodes are reached.
356 355

	
357 356
    ///Sets the map that indicates which nodes are reached.
358
    ///If you don't use this function before calling \ref run(),
359
    ///it will allocate one. The destructor deallocates this
360
    ///automatically allocated map, of course.
357
    ///If you don't use this function before calling \ref run(Node) "run()"
358
    ///or \ref init(), an instance will be allocated automatically.
359
    ///The destructor deallocates this automatically allocated map,
360
    ///of course.
361 361
    ///\return <tt> (*this) </tt>
362 362
    Dfs &reachedMap(ReachedMap &m)
363 363
    {
... ...
@@ -372,9 +372,10 @@
372 372
    ///Sets the map that indicates which nodes are processed.
373 373

	
374 374
    ///Sets the map that indicates which nodes are processed.
375
    ///If you don't use this function before calling \ref run(),
376
    ///it will allocate one. The destructor deallocates this
377
    ///automatically allocated map, of course.
375
    ///If you don't use this function before calling \ref run(Node) "run()"
376
    ///or \ref init(), an instance will be allocated automatically.
377
    ///The destructor deallocates this automatically allocated map,
378
    ///of course.
378 379
    ///\return <tt> (*this) </tt>
379 380
    Dfs &processedMap(ProcessedMap &m)
380 381
    {
... ...
@@ -390,9 +391,10 @@
390 391

	
391 392
    ///Sets the map that stores the distances of the nodes calculated by
392 393
    ///the algorithm.
393
    ///If you don't use this function before calling \ref run(),
394
    ///it will allocate one. The destructor deallocates this
395
    ///automatically allocated map, of course.
394
    ///If you don't use this function before calling \ref run(Node) "run()"
395
    ///or \ref init(), an instance will be allocated automatically.
396
    ///The destructor deallocates this automatically allocated map,
397
    ///of course.
396 398
    ///\return <tt> (*this) </tt>
397 399
    Dfs &distMap(DistMap &m)
398 400
    {
... ...
@@ -406,22 +408,20 @@
406 408

	
407 409
  public:
408 410

	
409
    ///\name Execution control
410
    ///The simplest way to execute the algorithm is to use
411
    ///one of the member functions called \ref lemon::Dfs::run() "run()".
412
    ///\n
413
    ///If you need more control on the execution, first you must call
414
    ///\ref lemon::Dfs::init() "init()", then you can add a source node
415
    ///with \ref lemon::Dfs::addSource() "addSource()".
416
    ///Finally \ref lemon::Dfs::start() "start()" will perform the
417
    ///actual path computation.
411
    ///\name Execution Control
412
    ///The simplest way to execute the DFS algorithm is to use one of the
413
    ///member functions called \ref run(Node) "run()".\n
414
    ///If you need more control on the execution, first you have to call
415
    ///\ref init(), then you can add a source node with \ref addSource()
416
    ///and perform the actual computation with \ref start().
417
    ///This procedure can be repeated if there are nodes that have not
418
    ///been reached.
418 419

	
419 420
    ///@{
420 421

	
422
    ///\brief Initializes the internal data structures.
423
    ///
421 424
    ///Initializes the internal data structures.
422

	
423
    ///Initializes the internal data structures.
424
    ///
425 425
    void init()
426 426
    {
427 427
      create_maps();
... ...
@@ -438,11 +438,10 @@
438 438

	
439 439
    ///Adds a new source node to the set of nodes to be processed.
440 440
    ///
441
    ///\pre The stack must be empty. (Otherwise the algorithm gives
442
    ///false results.)
443
    ///
444
    ///\warning Distances will be wrong (or at least strange) in case of
445
    ///multiple sources.
441
    ///\pre The stack must be empty. Otherwise the algorithm gives
442
    ///wrong results. (One of the outgoing arcs of all the source nodes
443
    ///except for the last one will not be visited and distances will
444
    ///also be wrong.)
446 445
    void addSource(Node s)
447 446
    {
448 447
      LEMON_DEBUG(emptyQueue(), "The stack is not empty.");
... ...
@@ -506,16 +505,16 @@
506 505
      return _stack_head>=0?_stack[_stack_head]:INVALID;
507 506
    }
508 507

	
509
    ///\brief Returns \c false if there are nodes
510
    ///to be processed.
511
    ///
512
    ///Returns \c false if there are nodes
513
    ///to be processed in the queue (stack).
508
    ///Returns \c false if there are nodes to be processed.
509

	
510
    ///Returns \c false if there are nodes to be processed
511
    ///in the queue (stack).
514 512
    bool emptyQueue() const { return _stack_head<0; }
515 513

	
516 514
    ///Returns the number of the nodes to be processed.
517 515

	
518
    ///Returns the number of the nodes to be processed in the queue (stack).
516
    ///Returns the number of the nodes to be processed
517
    ///in the queue (stack).
519 518
    int queueSize() const { return _stack_head+1; }
520 519

	
521 520
    ///Executes the algorithm.
... ...
@@ -637,8 +636,8 @@
637 636
    ///%DFS path to each node.
638 637
    ///
639 638
    ///The algorithm computes
640
    ///- the %DFS tree,
641
    ///- the distance of each node from the root in the %DFS tree.
639
    ///- the %DFS tree (forest),
640
    ///- the distance of each node from the root(s) in the %DFS tree.
642 641
    ///
643 642
    ///\note <tt>d.run()</tt> is just a shortcut of the following code.
644 643
    ///\code
... ...
@@ -663,10 +662,10 @@
663 662
    ///@}
664 663

	
665 664
    ///\name Query Functions
666
    ///The result of the %DFS algorithm can be obtained using these
665
    ///The results of the DFS algorithm can be obtained using these
667 666
    ///functions.\n
668
    ///Either \ref lemon::Dfs::run() "run()" or \ref lemon::Dfs::start()
669
    ///"start()" must be called before using them.
667
    ///Either \ref run(Node) "run()" or \ref start() should be called
668
    ///before using them.
670 669

	
671 670
    ///@{
672 671

	
... ...
@@ -674,49 +673,49 @@
674 673

	
675 674
    ///Returns the DFS path to a node.
676 675
    ///
677
    ///\warning \c t should be reachable from the root.
676
    ///\warning \c t should be reached from the root(s).
678 677
    ///
679
    ///\pre Either \ref run() or \ref start() must be called before
680
    ///using this function.
678
    ///\pre Either \ref run(Node) "run()" or \ref init()
679
    ///must be called before using this function.
681 680
    Path path(Node t) const { return Path(*G, *_pred, t); }
682 681

	
683
    ///The distance of a node from the root.
682
    ///The distance of a node from the root(s).
684 683

	
685
    ///Returns the distance of a node from the root.
684
    ///Returns the distance of a node from the root(s).
686 685
    ///
687
    ///\warning If node \c v is not reachable from the root, then
686
    ///\warning If node \c v is not reached from the root(s), then
688 687
    ///the return value of this function is undefined.
689 688
    ///
690
    ///\pre Either \ref run() or \ref start() must be called before
691
    ///using this function.
689
    ///\pre Either \ref run(Node) "run()" or \ref init()
690
    ///must be called before using this function.
692 691
    int dist(Node v) const { return (*_dist)[v]; }
693 692

	
694 693
    ///Returns the 'previous arc' of the %DFS tree for a node.
695 694

	
696 695
    ///This function returns the 'previous arc' of the %DFS tree for the
697
    ///node \c v, i.e. it returns the last arc of a %DFS path from the
698
    ///root to \c v. It is \c INVALID
699
    ///if \c v is not reachable from the root(s) or if \c v is a root.
696
    ///node \c v, i.e. it returns the last arc of a %DFS path from a
697
    ///root to \c v. It is \c INVALID if \c v is not reached from the
698
    ///root(s) or if \c v is a root.
700 699
    ///
701 700
    ///The %DFS tree used here is equal to the %DFS tree used in
702 701
    ///\ref predNode().
703 702
    ///
704
    ///\pre Either \ref run() or \ref start() must be called before using
705
    ///this function.
703
    ///\pre Either \ref run(Node) "run()" or \ref init()
704
    ///must be called before using this function.
706 705
    Arc predArc(Node v) const { return (*_pred)[v];}
707 706

	
708 707
    ///Returns the 'previous node' of the %DFS tree.
709 708

	
710 709
    ///This function returns the 'previous node' of the %DFS
711 710
    ///tree for the node \c v, i.e. it returns the last but one node
712
    ///from a %DFS path from the root to \c v. It is \c INVALID
713
    ///if \c v is not reachable from the root(s) or if \c v is a root.
711
    ///from a %DFS path from a root to \c v. It is \c INVALID
712
    ///if \c v is not reached from the root(s) or if \c v is a root.
714 713
    ///
715 714
    ///The %DFS tree used here is equal to the %DFS tree used in
716 715
    ///\ref predArc().
717 716
    ///
718
    ///\pre Either \ref run() or \ref start() must be called before
719
    ///using this function.
717
    ///\pre Either \ref run(Node) "run()" or \ref init()
718
    ///must be called before using this function.
720 719
    Node predNode(Node v) const { return (*_pred)[v]==INVALID ? INVALID:
721 720
                                  G->source((*_pred)[v]); }
722 721

	
... ...
@@ -726,7 +725,7 @@
726 725
    ///Returns a const reference to the node map that stores the
727 726
    ///distances of the nodes calculated by the algorithm.
728 727
    ///
729
    ///\pre Either \ref run() or \ref init()
728
    ///\pre Either \ref run(Node) "run()" or \ref init()
730 729
    ///must be called before using this function.
731 730
    const DistMap &distMap() const { return *_dist;}
732 731

	
... ...
@@ -736,14 +735,15 @@
736 735
    ///Returns a const reference to the node map that stores the predecessor
737 736
    ///arcs, which form the DFS tree.
738 737
    ///
739
    ///\pre Either \ref run() or \ref init()
738
    ///\pre Either \ref run(Node) "run()" or \ref init()
740 739
    ///must be called before using this function.
741 740
    const PredMap &predMap() const { return *_pred;}
742 741

	
743
    ///Checks if a node is reachable from the root(s).
742
    ///Checks if a node is reached from the root(s).
744 743

	
745
    ///Returns \c true if \c v is reachable from the root(s).
746
    ///\pre Either \ref run() or \ref start()
744
    ///Returns \c true if \c v is reached from the root(s).
745
    ///
746
    ///\pre Either \ref run(Node) "run()" or \ref init()
747 747
    ///must be called before using this function.
748 748
    bool reached(Node v) const { return (*_reached)[v]; }
749 749

	
... ...
@@ -889,8 +889,8 @@
889 889

	
890 890
  /// This auxiliary class is created to implement the
891 891
  /// \ref dfs() "function-type interface" of \ref Dfs algorithm.
892
  /// It does not have own \ref run() method, it uses the functions
893
  /// and features of the plain \ref Dfs.
892
  /// It does not have own \ref run(Node) "run()" method, it uses the
893
  /// functions and features of the plain \ref Dfs.
894 894
  ///
895 895
  /// This class should only be used through the \ref dfs() function,
896 896
  /// which makes it easier to use the algorithm.
... ...
@@ -1110,8 +1110,7 @@
1110 1110
  ///  // Compute the DFS path from s to t
1111 1111
  ///  bool reached = dfs(g).path(p).dist(d).run(s,t);
1112 1112
  ///\endcode
1113

	
1114
  ///\warning Don't forget to put the \ref DfsWizard::run() "run()"
1113
  ///\warning Don't forget to put the \ref DfsWizard::run(Node) "run()"
1115 1114
  ///to the end of the parameter list.
1116 1115
  ///\sa DfsWizard
1117 1116
  ///\sa Dfs
... ...
@@ -1309,7 +1308,7 @@
1309 1308

	
1310 1309
    typedef DfsVisit Create;
1311 1310

	
1312
    /// \name Named template parameters
1311
    /// \name Named Template Parameters
1313 1312

	
1314 1313
    ///@{
1315 1314
    template <class T>
... ...
@@ -1351,9 +1350,10 @@
1351 1350
    /// \brief Sets the map that indicates which nodes are reached.
1352 1351
    ///
1353 1352
    /// Sets the map that indicates which nodes are reached.
1354
    /// If you don't use this function before calling \ref run(),
1355
    /// it will allocate one. The destructor deallocates this
1356
    /// automatically allocated map, of course.
1353
    /// If you don't use this function before calling \ref run(Node) "run()"
1354
    /// or \ref init(), an instance will be allocated automatically.
1355
    /// The destructor deallocates this automatically allocated map,
1356
    /// of course.
1357 1357
    /// \return <tt> (*this) </tt>
1358 1358
    DfsVisit &reachedMap(ReachedMap &m) {
1359 1359
      if(local_reached) {
... ...
@@ -1366,16 +1366,14 @@
1366 1366

	
1367 1367
  public:
1368 1368

	
1369
    /// \name Execution control
1370
    /// The simplest way to execute the algorithm is to use
1371
    /// one of the member functions called \ref lemon::DfsVisit::run()
1372
    /// "run()".
1373
    /// \n
1374
    /// If you need more control on the execution, first you must call
1375
    /// \ref lemon::DfsVisit::init() "init()", then you can add several
1376
    /// source nodes with \ref lemon::DfsVisit::addSource() "addSource()".
1377
    /// Finally \ref lemon::DfsVisit::start() "start()" will perform the
1378
    /// actual path computation.
1369
    /// \name Execution Control
1370
    /// The simplest way to execute the DFS algorithm is to use one of the
1371
    /// member functions called \ref run(Node) "run()".\n
1372
    /// If you need more control on the execution, first you have to call
1373
    /// \ref init(), then you can add a source node with \ref addSource()
1374
    /// and perform the actual computation with \ref start().
1375
    /// This procedure can be repeated if there are nodes that have not
1376
    /// been reached.
1379 1377

	
1380 1378
    /// @{
1381 1379

	
... ...
@@ -1391,15 +1389,14 @@
1391 1389
      }
1392 1390
    }
1393 1391

	
1394
    ///Adds a new source node.
1395

	
1392
    /// \brief Adds a new source node.
1393
    ///
1396 1394
    ///Adds a new source node to the set of nodes to be processed.
1397 1395
    ///
1398
    ///\pre The stack must be empty. (Otherwise the algorithm gives
1399
    ///false results.)
1400
    ///
1401
    ///\warning Distances will be wrong (or at least strange) in case of
1402
    ///multiple sources.
1396
    /// \pre The stack must be empty. Otherwise the algorithm gives
1397
    /// wrong results. (One of the outgoing arcs of all the source nodes
1398
    /// except for the last one will not be visited and distances will
1399
    /// also be wrong.)
1403 1400
    void addSource(Node s)
1404 1401
    {
1405 1402
      LEMON_DEBUG(emptyQueue(), "The stack is not empty.");
... ...
@@ -1589,8 +1586,8 @@
1589 1586
    /// compute the %DFS path to each node.
1590 1587
    ///
1591 1588
    /// The algorithm computes
1592
    /// - the %DFS tree,
1593
    /// - the distance of each node from the root in the %DFS tree.
1589
    /// - the %DFS tree (forest),
1590
    /// - the distance of each node from the root(s) in the %DFS tree.
1594 1591
    ///
1595 1592
    /// \note <tt>d.run()</tt> is just a shortcut of the following code.
1596 1593
    ///\code
... ...
@@ -1615,17 +1612,18 @@
1615 1612
    ///@}
1616 1613

	
1617 1614
    /// \name Query Functions
1618
    /// The result of the %DFS algorithm can be obtained using these
1615
    /// The results of the DFS algorithm can be obtained using these
1619 1616
    /// functions.\n
1620
    /// Either \ref lemon::DfsVisit::run() "run()" or
1621
    /// \ref lemon::DfsVisit::start() "start()" must be called before
1622
    /// using them.
1617
    /// Either \ref run(Node) "run()" or \ref start() should be called
1618
    /// before using them.
1619

	
1623 1620
    ///@{
1624 1621

	
1625
    /// \brief Checks if a node is reachable from the root(s).
1622
    /// \brief Checks if a node is reached from the root(s).
1626 1623
    ///
1627
    /// Returns \c true if \c v is reachable from the root(s).
1628
    /// \pre Either \ref run() or \ref start()
1624
    /// Returns \c true if \c v is reached from the root(s).
1625
    ///
1626
    /// \pre Either \ref run(Node) "run()" or \ref init()
1629 1627
    /// must be called before using this function.
1630 1628
    bool reached(Node v) { return (*_reached)[v]; }
1631 1629

	
Show white space 6 line context
... ...
@@ -202,20 +202,13 @@
202 202
  ///it can be used easier.
203 203
  ///
204 204
  ///\tparam GR The type of the digraph the algorithm runs on.
205
  ///The default value is \ref ListDigraph.
206
  ///The value of GR is not used directly by \ref Dijkstra, it is only
207
  ///passed to \ref DijkstraDefaultTraits.
208
  ///\tparam LM A readable arc map that determines the lengths of the
209
  ///arcs. It is read once for each arc, so the map may involve in
205
  ///The default type is \ref ListDigraph.
206
  ///\tparam LM A \ref concepts::ReadMap "readable" arc map that specifies
207
  ///the lengths of the arcs.
208
  ///It is read once for each arc, so the map may involve in
210 209
  ///relatively time consuming process to compute the arc lengths if
211 210
  ///it is necessary. The default map type is \ref
212
  ///concepts::Digraph::ArcMap "Digraph::ArcMap<int>".
213
  ///The value of LM is not used directly by \ref Dijkstra, it is only
214
  ///passed to \ref DijkstraDefaultTraits.
215
  ///\tparam TR Traits class to set various data types used by the algorithm.
216
  ///The default traits class is \ref DijkstraDefaultTraits
217
  ///"DijkstraDefaultTraits<GR,LM>". See \ref DijkstraDefaultTraits
218
  ///for the documentation of a Dijkstra traits class.
211
  ///concepts::Digraph::ArcMap "GR::ArcMap<int>".
219 212
#ifdef DOXYGEN
220 213
  template <typename GR, typename LM, typename TR>
221 214
#else
... ...
@@ -249,7 +242,7 @@
249 242
    ///The operation traits class.
250 243
    typedef typename TR::OperationTraits OperationTraits;
251 244

	
252
    ///The traits class.
245
    ///The \ref DijkstraDefaultTraits "traits class" of the algorithm.
253 246
    typedef TR Traits;
254 247

	
255 248
  private:
... ...
@@ -331,6 +324,7 @@
331 324
    ///
332 325
    ///\ref named-templ-param "Named parameter" for setting
333 326
    ///PredMap type.
327
    ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
334 328
    template <class T>
335 329
    struct SetPredMap
336 330
      : public Dijkstra< Digraph, LengthMap, SetPredMapTraits<T> > {
... ...
@@ -351,6 +345,7 @@
351 345
    ///
352 346
    ///\ref named-templ-param "Named parameter" for setting
353 347
    ///DistMap type.
348
    ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
354 349
    template <class T>
355 350
    struct SetDistMap
356 351
      : public Dijkstra< Digraph, LengthMap, SetDistMapTraits<T> > {
... ...
@@ -371,6 +366,7 @@
371 366
    ///
372 367
    ///\ref named-templ-param "Named parameter" for setting
373 368
    ///ProcessedMap type.
369
    ///It must meet the \ref concepts::WriteMap "WriteMap" concept.
374 370
    template <class T>
375 371
    struct SetProcessedMap
376 372
      : public Dijkstra< Digraph, LengthMap, SetProcessedMapTraits<T> > {
... ...
@@ -411,10 +407,14 @@
411 407
      }
412 408
    };
413 409
    ///\brief \ref named-templ-param "Named parameter" for setting
414
    ///heap and cross reference type
410
    ///heap and cross reference types
415 411
    ///
416 412
    ///\ref named-templ-param "Named parameter" for setting heap and cross
417
    ///reference type.
413
    ///reference types. If this named parameter is used, then external
414
    ///heap and cross reference objects must be passed to the algorithm
415
    ///using the \ref heap() function before calling \ref run(Node) "run()"
416
    ///or \ref init().
417
    ///\sa SetStandardHeap
418 418
    template <class H, class CR = typename Digraph::template NodeMap<int> >
419 419
    struct SetHeap
420 420
      : public Dijkstra< Digraph, LengthMap, SetHeapTraits<H, CR> > {
... ...
@@ -434,12 +434,18 @@
434 434
      }
435 435
    };
436 436
    ///\brief \ref named-templ-param "Named parameter" for setting
437
    ///heap and cross reference type with automatic allocation
437
    ///heap and cross reference types with automatic allocation
438 438
    ///
439 439
    ///\ref named-templ-param "Named parameter" for setting heap and cross
440
    ///reference type. It can allocate the heap and the cross reference
441
    ///object if the cross reference's constructor waits for the digraph as
442
    ///parameter and the heap's constructor waits for the cross reference.
440
    ///reference types with automatic allocation.
441
    ///They should have standard constructor interfaces to be able to
442
    ///automatically created by the algorithm (i.e. the digraph should be
443
    ///passed to the constructor of the cross reference and the cross
444
    ///reference should be passed to the constructor of the heap).
445
    ///However external heap and cross reference objects could also be
446
    ///passed to the algorithm using the \ref heap() function before
447
    ///calling \ref run(Node) "run()" or \ref init().
448
    ///\sa SetHeap
443 449
    template <class H, class CR = typename Digraph::template NodeMap<int> >
444 450
    struct SetStandardHeap
445 451
      : public Dijkstra< Digraph, LengthMap, SetStandardHeapTraits<H, CR> > {
... ...
@@ -509,9 +515,10 @@
509 515
    ///Sets the map that stores the predecessor arcs.
510 516

	
511 517
    ///Sets the map that stores the predecessor arcs.
512
    ///If you don't use this function before calling \ref run(),
513
    ///it will allocate one. The destructor deallocates this
514
    ///automatically allocated map, of course.
518
    ///If you don't use this function before calling \ref run(Node) "run()"
519
    ///or \ref init(), an instance will be allocated automatically.
520
    ///The destructor deallocates this automatically allocated map,
521
    ///of course.
515 522
    ///\return <tt> (*this) </tt>
516 523
    Dijkstra &predMap(PredMap &m)
517 524
    {
... ...
@@ -526,9 +533,10 @@
526 533
    ///Sets the map that indicates which nodes are processed.
527 534

	
528 535
    ///Sets the map that indicates which nodes are processed.
529
    ///If you don't use this function before calling \ref run(),
530
    ///it will allocate one. The destructor deallocates this
531
    ///automatically allocated map, of course.
536
    ///If you don't use this function before calling \ref run(Node) "run()"
537
    ///or \ref init(), an instance will be allocated automatically.
538
    ///The destructor deallocates this automatically allocated map,
539
    ///of course.
532 540
    ///\return <tt> (*this) </tt>
533 541
    Dijkstra &processedMap(ProcessedMap &m)
534 542
    {
... ...
@@ -544,9 +552,10 @@
544 552

	
545 553
    ///Sets the map that stores the distances of the nodes calculated by the
546 554
    ///algorithm.
547
    ///If you don't use this function before calling \ref run(),
548
    ///it will allocate one. The destructor deallocates this
549
    ///automatically allocated map, of course.
555
    ///If you don't use this function before calling \ref run(Node) "run()"
556
    ///or \ref init(), an instance will be allocated automatically.
557
    ///The destructor deallocates this automatically allocated map,
558
    ///of course.
550 559
    ///\return <tt> (*this) </tt>
551 560
    Dijkstra &distMap(DistMap &m)
552 561
    {
... ...
@@ -561,9 +570,11 @@
561 570
    ///Sets the heap and the cross reference used by algorithm.
562 571

	
563 572
    ///Sets the heap and the cross reference used by algorithm.
564
    ///If you don't use this function before calling \ref run(),
565
    ///it will allocate one. The destructor deallocates this
566
    ///automatically allocated heap and cross reference, of course.
573
    ///If you don't use this function before calling \ref run(Node) "run()"
574
    ///or \ref init(), heap and cross reference instances will be
575
    ///allocated automatically.
576
    ///The destructor deallocates these automatically allocated objects,
577
    ///of course.
567 578
    ///\return <tt> (*this) </tt>
568 579
    Dijkstra &heap(Heap& hp, HeapCrossRef &cr)
569 580
    {
... ...
@@ -590,22 +601,19 @@
590 601

	
591 602
  public:
592 603

	
593
    ///\name Execution control
594
    ///The simplest way to execute the algorithm is to use one of the
595
    ///member functions called \ref lemon::Dijkstra::run() "run()".
596
    ///\n
597
    ///If you need more control on the execution, first you must call
598
    ///\ref lemon::Dijkstra::init() "init()", then you can add several
599
    ///source nodes with \ref lemon::Dijkstra::addSource() "addSource()".
600
    ///Finally \ref lemon::Dijkstra::start() "start()" will perform the
601
    ///actual path computation.
604
    ///\name Execution Control
605
    ///The simplest way to execute the %Dijkstra algorithm is to use
606
    ///one of the member functions called \ref run(Node) "run()".\n
607
    ///If you need more control on the execution, first you have to call
608
    ///\ref init(), then you can add several source nodes with
609
    ///\ref addSource(). Finally the actual path computation can be
610
    ///performed with one of the \ref start() functions.
602 611

	
603 612
    ///@{
604 613

	
614
    ///\brief Initializes the internal data structures.
615
    ///
605 616
    ///Initializes the internal data structures.
606

	
607
    ///Initializes the internal data structures.
608
    ///
609 617
    void init()
610 618
    {
611 619
      create_maps();
... ...
@@ -681,17 +689,16 @@
681 689
      return !_heap->empty()?_heap->top():INVALID;
682 690
    }
683 691

	
684
    ///\brief Returns \c false if there are nodes
685
    ///to be processed.
686
    ///
687
    ///Returns \c false if there are nodes
688
    ///to be processed in the priority heap.
692
    ///Returns \c false if there are nodes to be processed.
693

	
694
    ///Returns \c false if there are nodes to be processed
695
    ///in the priority heap.
689 696
    bool emptyQueue() const { return _heap->empty(); }
690 697

	
691
    ///Returns the number of the nodes to be processed in the priority heap
698
    ///Returns the number of the nodes to be processed.
692 699

	
693
    ///Returns the number of the nodes to be processed in the priority heap.
694
    ///
700
    ///Returns the number of the nodes to be processed
701
    ///in the priority heap.
695 702
    int queueSize() const { return _heap->size(); }
696 703

	
697 704
    ///Executes the algorithm.
... ...
@@ -812,11 +819,10 @@
812 819
    ///@}
813 820

	
814 821
    ///\name Query Functions
815
    ///The result of the %Dijkstra algorithm can be obtained using these
822
    ///The results of the %Dijkstra algorithm can be obtained using these
816 823
    ///functions.\n
817
    ///Either \ref lemon::Dijkstra::run() "run()" or
818
    ///\ref lemon::Dijkstra::start() "start()" must be called before
819
    ///using them.
824
    ///Either \ref run(Node) "run()" or \ref start() should be called
825
    ///before using them.
820 826

	
821 827
    ///@{
822 828

	
... ...
@@ -824,49 +830,49 @@
824 830

	
825 831
    ///Returns the shortest path to a node.
826 832
    ///
827
    ///\warning \c t should be reachable from the root(s).
833
    ///\warning \c t should be reached from the root(s).
828 834
    ///
829
    ///\pre Either \ref run() or \ref start() must be called before
830
    ///using this function.
835
    ///\pre Either \ref run(Node) "run()" or \ref init()
836
    ///must be called before using this function.
831 837
    Path path(Node t) const { return Path(*G, *_pred, t); }
832 838

	
833 839
    ///The distance of a node from the root(s).
834 840

	
835 841
    ///Returns the distance of a node from the root(s).
836 842
    ///
837
    ///\warning If node \c v is not reachable from the root(s), then
843
    ///\warning If node \c v is not reached from the root(s), then
838 844
    ///the return value of this function is undefined.
839 845
    ///
840
    ///\pre Either \ref run() or \ref start() must be called before
841
    ///using this function.
846
    ///\pre Either \ref run(Node) "run()" or \ref init()
847
    ///must be called before using this function.
842 848
    Value dist(Node v) const { return (*_dist)[v]; }
843 849

	
844 850
    ///Returns the 'previous arc' of the shortest path tree for a node.
845 851

	
846 852
    ///This function returns the 'previous arc' of the shortest path
847 853
    ///tree for the node \c v, i.e. it returns the last arc of a
848
    ///shortest path from the root(s) to \c v. It is \c INVALID if \c v
849
    ///is not reachable from the root(s) or if \c v is a root.
854
    ///shortest path from a root to \c v. It is \c INVALID if \c v
855
    ///is not reached from the root(s) or if \c v is a root.
850 856
    ///
851 857
    ///The shortest path tree used here is equal to the shortest path
852 858
    ///tree used in \ref predNode().
853 859
    ///
854
    ///\pre Either \ref run() or \ref start() must be called before
855
    ///using this function.
860
    ///\pre Either \ref run(Node) "run()" or \ref init()
861
    ///must be called before using this function.
856 862
    Arc predArc(Node v) const { return (*_pred)[v]; }
857 863

	
858 864
    ///Returns the 'previous node' of the shortest path tree for a node.
859 865

	
860 866
    ///This function returns the 'previous node' of the shortest path
861 867
    ///tree for the node \c v, i.e. it returns the last but one node
862
    ///from a shortest path from the root(s) to \c v. It is \c INVALID
863
    ///if \c v is not reachable from the root(s) or if \c v is a root.
868
    ///from a shortest path from a root to \c v. It is \c INVALID
869
    ///if \c v is not reached from the root(s) or if \c v is a root.
864 870
    ///
865 871
    ///The shortest path tree used here is equal to the shortest path
866 872
    ///tree used in \ref predArc().
867 873
    ///
868
    ///\pre Either \ref run() or \ref start() must be called before
869
    ///using this function.
874
    ///\pre Either \ref run(Node) "run()" or \ref init()
875
    ///must be called before using this function.
870 876
    Node predNode(Node v) const { return (*_pred)[v]==INVALID ? INVALID:
871 877
                                  G->source((*_pred)[v]); }
872 878

	
... ...
@@ -876,7 +882,7 @@
876 882
    ///Returns a const reference to the node map that stores the distances
877 883
    ///of the nodes calculated by the algorithm.
878 884
    ///
879
    ///\pre Either \ref run() or \ref init()
885
    ///\pre Either \ref run(Node) "run()" or \ref init()
880 886
    ///must be called before using this function.
881 887
    const DistMap &distMap() const { return *_dist;}
882 888

	
... ...
@@ -886,14 +892,15 @@
886 892
    ///Returns a const reference to the node map that stores the predecessor
887 893
    ///arcs, which form the shortest path tree.
888 894
    ///
889
    ///\pre Either \ref run() or \ref init()
895
    ///\pre Either \ref run(Node) "run()" or \ref init()
890 896
    ///must be called before using this function.
891 897
    const PredMap &predMap() const { return *_pred;}
892 898

	
893
    ///Checks if a node is reachable from the root(s).
899
    ///Checks if a node is reached from the root(s).
894 900

	
895
    ///Returns \c true if \c v is reachable from the root(s).
896
    ///\pre Either \ref run() or \ref start()
901
    ///Returns \c true if \c v is reached from the root(s).
902
    ///
903
    ///\pre Either \ref run(Node) "run()" or \ref init()
897 904
    ///must be called before using this function.
898 905
    bool reached(Node v) const { return (*_heap_cross_ref)[v] !=
899 906
                                        Heap::PRE_HEAP; }
... ...
@@ -902,7 +909,8 @@
902 909

	
903 910
    ///Returns \c true if \c v is processed, i.e. the shortest
904 911
    ///path to \c v has already found.
905
    ///\pre Either \ref run() or \ref init()
912
    ///
913
    ///\pre Either \ref run(Node) "run()" or \ref init()
906 914
    ///must be called before using this function.
907 915
    bool processed(Node v) const { return (*_heap_cross_ref)[v] ==
908 916
                                          Heap::POST_HEAP; }
... ...
@@ -911,7 +919,8 @@
911 919

	
912 920
    ///Returns the current distance of a node from the root(s).
913 921
    ///It may be decreased in the following processes.
914
    ///\pre Either \ref run() or \ref init()
922
    ///
923
    ///\pre Either \ref run(Node) "run()" or \ref init()
915 924
    ///must be called before using this function and
916 925
    ///node \c v must be reached but not necessarily processed.
917 926
    Value currentDist(Node v) const {
... ...
@@ -1094,8 +1103,8 @@
1094 1103

	
1095 1104
  /// This auxiliary class is created to implement the
1096 1105
  /// \ref dijkstra() "function-type interface" of \ref Dijkstra algorithm.
1097
  /// It does not have own \ref run() method, it uses the functions
1098
  /// and features of the plain \ref Dijkstra.
1106
  /// It does not have own \ref run(Node) "run()" method, it uses the
1107
  /// functions and features of the plain \ref Dijkstra.
1099 1108
  ///
1100 1109
  /// This class should only be used through the \ref dijkstra() function,
1101 1110
  /// which makes it easier to use the algorithm.
... ...
@@ -1290,7 +1299,7 @@
1290 1299
  ///  // Compute shortest path from s to t
1291 1300
  ///  bool reached = dijkstra(g,length).path(p).dist(d).run(s,t);
1292 1301
  ///\endcode
1293
  ///\warning Don't forget to put the \ref DijkstraWizard::run() "run()"
1302
  ///\warning Don't forget to put the \ref DijkstraWizard::run(Node) "run()"
1294 1303
  ///to the end of the parameter list.
1295 1304
  ///\sa DijkstraWizard
1296 1305
  ///\sa Dijkstra
0 comments (0 inline)