0
4
0
... | ... |
@@ -47,7 +47,7 @@ |
47 | 47 |
/// |
48 | 48 |
///The type of the map that stores the predecessor |
49 | 49 |
///arcs of the shortest paths. |
50 |
///It must |
|
50 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
51 | 51 |
typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap; |
52 | 52 |
///Instantiates a \c PredMap. |
53 | 53 |
|
... | ... |
@@ -62,7 +62,8 @@ |
62 | 62 |
///The type of the map that indicates which nodes are processed. |
63 | 63 |
|
64 | 64 |
///The type of the map that indicates which nodes are processed. |
65 |
///It must |
|
65 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
66 |
///By default it is a NullMap. |
|
66 | 67 |
typedef NullMap<typename Digraph::Node,bool> ProcessedMap; |
67 | 68 |
///Instantiates a \c ProcessedMap. |
68 | 69 |
|
... | ... |
@@ -81,7 +82,7 @@ |
81 | 82 |
///The type of the map that indicates which nodes are reached. |
82 | 83 |
|
83 | 84 |
///The type of the map that indicates which nodes are reached. |
84 |
///It must |
|
85 |
///It must conform to the \ref concepts::ReadWriteMap "ReadWriteMap" concept. |
|
85 | 86 |
typedef typename Digraph::template NodeMap<bool> ReachedMap; |
86 | 87 |
///Instantiates a \c ReachedMap. |
87 | 88 |
|
... | ... |
@@ -96,7 +97,7 @@ |
96 | 97 |
///The type of the map that stores the distances of the nodes. |
97 | 98 |
|
98 | 99 |
///The type of the map that stores the distances of the nodes. |
99 |
///It must |
|
100 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
100 | 101 |
typedef typename Digraph::template NodeMap<int> DistMap; |
101 | 102 |
///Instantiates a \c DistMap. |
102 | 103 |
|
... | ... |
@@ -225,7 +226,7 @@ |
225 | 226 |
/// |
226 | 227 |
///\ref named-templ-param "Named parameter" for setting |
227 | 228 |
///\c PredMap type. |
228 |
///It must |
|
229 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
229 | 230 |
template <class T> |
230 | 231 |
struct SetPredMap : public Bfs< Digraph, SetPredMapTraits<T> > { |
231 | 232 |
typedef Bfs< Digraph, SetPredMapTraits<T> > Create; |
... | ... |
@@ -245,7 +246,7 @@ |
245 | 246 |
/// |
246 | 247 |
///\ref named-templ-param "Named parameter" for setting |
247 | 248 |
///\c DistMap type. |
248 |
///It must |
|
249 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
249 | 250 |
template <class T> |
250 | 251 |
struct SetDistMap : public Bfs< Digraph, SetDistMapTraits<T> > { |
251 | 252 |
typedef Bfs< Digraph, SetDistMapTraits<T> > Create; |
... | ... |
@@ -265,7 +266,7 @@ |
265 | 266 |
/// |
266 | 267 |
///\ref named-templ-param "Named parameter" for setting |
267 | 268 |
///\c ReachedMap type. |
268 |
///It must |
|
269 |
///It must conform to the \ref concepts::ReadWriteMap "ReadWriteMap" concept. |
|
269 | 270 |
template <class T> |
270 | 271 |
struct SetReachedMap : public Bfs< Digraph, SetReachedMapTraits<T> > { |
271 | 272 |
typedef Bfs< Digraph, SetReachedMapTraits<T> > Create; |
... | ... |
@@ -285,7 +286,7 @@ |
285 | 286 |
/// |
286 | 287 |
///\ref named-templ-param "Named parameter" for setting |
287 | 288 |
///\c ProcessedMap type. |
288 |
///It must |
|
289 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
289 | 290 |
template <class T> |
290 | 291 |
struct SetProcessedMap : public Bfs< Digraph, SetProcessedMapTraits<T> > { |
291 | 292 |
typedef Bfs< Digraph, SetProcessedMapTraits<T> > Create; |
... | ... |
@@ -737,9 +738,9 @@ |
737 | 738 |
|
738 | 739 |
///@{ |
739 | 740 |
|
740 |
///The shortest path to |
|
741 |
///The shortest path to the given node. |
|
741 | 742 |
|
742 |
///Returns the shortest path to |
|
743 |
///Returns the shortest path to the given node from the root(s). |
|
743 | 744 |
/// |
744 | 745 |
///\warning \c t should be reached from the root(s). |
745 | 746 |
/// |
... | ... |
@@ -747,9 +748,9 @@ |
747 | 748 |
///must be called before using this function. |
748 | 749 |
Path path(Node t) const { return Path(*G, *_pred, t); } |
749 | 750 |
|
750 |
///The distance of |
|
751 |
///The distance of the given node from the root(s). |
|
751 | 752 |
|
752 |
///Returns the distance of |
|
753 |
///Returns the distance of the given node from the root(s). |
|
753 | 754 |
/// |
754 | 755 |
///\warning If node \c v is not reached from the root(s), then |
755 | 756 |
///the return value of this function is undefined. |
... | ... |
@@ -758,29 +759,31 @@ |
758 | 759 |
///must be called before using this function. |
759 | 760 |
int dist(Node v) const { return (*_dist)[v]; } |
760 | 761 |
|
761 |
///Returns the 'previous arc' of the shortest path tree for a node. |
|
762 |
|
|
762 |
///\brief Returns the 'previous arc' of the shortest path tree for |
|
763 |
///the given node. |
|
764 |
/// |
|
763 | 765 |
///This function returns the 'previous arc' of the shortest path |
764 | 766 |
///tree for the node \c v, i.e. it returns the last arc of a |
765 | 767 |
///shortest path from a root to \c v. It is \c INVALID if \c v |
766 | 768 |
///is not reached from the root(s) or if \c v is a root. |
767 | 769 |
/// |
768 | 770 |
///The shortest path tree used here is equal to the shortest path |
769 |
///tree used in \ref predNode(). |
|
771 |
///tree used in \ref predNode() and \ref predMap(). |
|
770 | 772 |
/// |
771 | 773 |
///\pre Either \ref run(Node) "run()" or \ref init() |
772 | 774 |
///must be called before using this function. |
773 | 775 |
Arc predArc(Node v) const { return (*_pred)[v];} |
774 | 776 |
|
775 |
///Returns the 'previous node' of the shortest path tree for a node. |
|
776 |
|
|
777 |
///\brief Returns the 'previous node' of the shortest path tree for |
|
778 |
///the given node. |
|
779 |
/// |
|
777 | 780 |
///This function returns the 'previous node' of the shortest path |
778 | 781 |
///tree for the node \c v, i.e. it returns the last but one node |
779 |
/// |
|
782 |
///of a shortest path from a root to \c v. It is \c INVALID |
|
780 | 783 |
///if \c v is not reached from the root(s) or if \c v is a root. |
781 | 784 |
/// |
782 | 785 |
///The shortest path tree used here is equal to the shortest path |
783 |
///tree used in \ref predArc(). |
|
786 |
///tree used in \ref predArc() and \ref predMap(). |
|
784 | 787 |
/// |
785 | 788 |
///\pre Either \ref run(Node) "run()" or \ref init() |
786 | 789 |
///must be called before using this function. |
... | ... |
@@ -801,13 +804,13 @@ |
801 | 804 |
///predecessor arcs. |
802 | 805 |
/// |
803 | 806 |
///Returns a const reference to the node map that stores the predecessor |
804 |
///arcs, which form the shortest path tree. |
|
807 |
///arcs, which form the shortest path tree (forest). |
|
805 | 808 |
/// |
806 | 809 |
///\pre Either \ref run(Node) "run()" or \ref init() |
807 | 810 |
///must be called before using this function. |
808 | 811 |
const PredMap &predMap() const { return *_pred;} |
809 | 812 |
|
810 |
///Checks if |
|
813 |
///Checks if the given node is reached from the root(s). |
|
811 | 814 |
|
812 | 815 |
///Returns \c true if \c v is reached from the root(s). |
813 | 816 |
/// |
... | ... |
@@ -833,7 +836,7 @@ |
833 | 836 |
/// |
834 | 837 |
///The type of the map that stores the predecessor |
835 | 838 |
///arcs of the shortest paths. |
836 |
///It must |
|
839 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
837 | 840 |
typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap; |
838 | 841 |
///Instantiates a PredMap. |
839 | 842 |
|
... | ... |
@@ -848,7 +851,7 @@ |
848 | 851 |
///The type of the map that indicates which nodes are processed. |
849 | 852 |
|
850 | 853 |
///The type of the map that indicates which nodes are processed. |
851 |
///It must |
|
854 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
852 | 855 |
///By default it is a NullMap. |
853 | 856 |
typedef NullMap<typename Digraph::Node,bool> ProcessedMap; |
854 | 857 |
///Instantiates a ProcessedMap. |
... | ... |
@@ -868,7 +871,7 @@ |
868 | 871 |
///The type of the map that indicates which nodes are reached. |
869 | 872 |
|
870 | 873 |
///The type of the map that indicates which nodes are reached. |
871 |
///It must |
|
874 |
///It must conform to the \ref concepts::ReadWriteMap "ReadWriteMap" concept. |
|
872 | 875 |
typedef typename Digraph::template NodeMap<bool> ReachedMap; |
873 | 876 |
///Instantiates a ReachedMap. |
874 | 877 |
|
... | ... |
@@ -883,7 +886,7 @@ |
883 | 886 |
///The type of the map that stores the distances of the nodes. |
884 | 887 |
|
885 | 888 |
///The type of the map that stores the distances of the nodes. |
886 |
///It must |
|
889 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
887 | 890 |
typedef typename Digraph::template NodeMap<int> DistMap; |
888 | 891 |
///Instantiates a DistMap. |
889 | 892 |
|
... | ... |
@@ -898,18 +901,14 @@ |
898 | 901 |
///The type of the shortest paths. |
899 | 902 |
|
900 | 903 |
///The type of the shortest paths. |
901 |
///It must |
|
904 |
///It must conform to the \ref concepts::Path "Path" concept. |
|
902 | 905 |
typedef lemon::Path<Digraph> Path; |
903 | 906 |
}; |
904 | 907 |
|
905 | 908 |
/// Default traits class used by BfsWizard |
906 | 909 |
|
907 |
/// To make it easier to use Bfs algorithm |
|
908 |
/// we have created a wizard class. |
|
909 |
/// This \ref BfsWizard class needs default traits, |
|
910 |
/// as well as the \ref Bfs class. |
|
911 |
/// The \ref BfsWizardBase is a class to be the default traits of the |
|
912 |
/// \ref BfsWizard class. |
|
910 |
/// Default traits class used by BfsWizard. |
|
911 |
/// \tparam GR The type of the digraph. |
|
913 | 912 |
template<class GR> |
914 | 913 |
class BfsWizardBase : public BfsWizardDefaultTraits<GR> |
915 | 914 |
{ |
... | ... |
@@ -937,7 +936,7 @@ |
937 | 936 |
public: |
938 | 937 |
/// Constructor. |
939 | 938 |
|
940 |
/// This constructor does not require parameters, |
|
939 |
/// This constructor does not require parameters, it initiates |
|
941 | 940 |
/// all of the attributes to \c 0. |
942 | 941 |
BfsWizardBase() : _g(0), _reached(0), _processed(0), _pred(0), |
943 | 942 |
_dist(0), _path(0), _di(0) {} |
... | ... |
@@ -967,7 +966,6 @@ |
967 | 966 |
{ |
968 | 967 |
typedef TR Base; |
969 | 968 |
|
970 |
///The type of the digraph the algorithm runs on. |
|
971 | 969 |
typedef typename TR::Digraph Digraph; |
972 | 970 |
|
973 | 971 |
typedef typename Digraph::Node Node; |
... | ... |
@@ -975,16 +973,10 @@ |
975 | 973 |
typedef typename Digraph::Arc Arc; |
976 | 974 |
typedef typename Digraph::OutArcIt OutArcIt; |
977 | 975 |
|
978 |
///\brief The type of the map that stores the predecessor |
|
979 |
///arcs of the shortest paths. |
|
980 | 976 |
typedef typename TR::PredMap PredMap; |
981 |
///\brief The type of the map that stores the distances of the nodes. |
|
982 | 977 |
typedef typename TR::DistMap DistMap; |
983 |
///\brief The type of the map that indicates which nodes are reached. |
|
984 | 978 |
typedef typename TR::ReachedMap ReachedMap; |
985 |
///\brief The type of the map that indicates which nodes are processed. |
|
986 | 979 |
typedef typename TR::ProcessedMap ProcessedMap; |
987 |
///The type of the shortest paths |
|
988 | 980 |
typedef typename TR::Path Path; |
989 | 981 |
|
990 | 982 |
public: |
... | ... |
@@ -1067,11 +1059,12 @@ |
1067 | 1059 |
static PredMap *createPredMap(const Digraph &) { return 0; }; |
1068 | 1060 |
SetPredMapBase(const TR &b) : TR(b) {} |
1069 | 1061 |
}; |
1070 |
///\brief \ref named-func-param "Named parameter" |
|
1071 |
///for setting PredMap object. |
|
1062 |
|
|
1063 |
///\brief \ref named-templ-param "Named parameter" for setting |
|
1064 |
///the predecessor map. |
|
1072 | 1065 |
/// |
1073 |
///\ref named-func-param "Named parameter" |
|
1074 |
///for setting PredMap object. |
|
1066 |
///\ref named-templ-param "Named parameter" function for setting |
|
1067 |
///the map that stores the predecessor arcs of the nodes. |
|
1075 | 1068 |
template<class T> |
1076 | 1069 |
BfsWizard<SetPredMapBase<T> > predMap(const T &t) |
1077 | 1070 |
{ |
... | ... |
@@ -1085,11 +1078,12 @@ |
1085 | 1078 |
static ReachedMap *createReachedMap(const Digraph &) { return 0; }; |
1086 | 1079 |
SetReachedMapBase(const TR &b) : TR(b) {} |
1087 | 1080 |
}; |
1088 |
///\brief \ref named-func-param "Named parameter" |
|
1089 |
///for setting ReachedMap object. |
|
1081 |
|
|
1082 |
///\brief \ref named-templ-param "Named parameter" for setting |
|
1083 |
///the reached map. |
|
1090 | 1084 |
/// |
1091 |
/// \ref named-func-param "Named parameter" |
|
1092 |
///for setting ReachedMap object. |
|
1085 |
///\ref named-templ-param "Named parameter" function for setting |
|
1086 |
///the map that indicates which nodes are reached. |
|
1093 | 1087 |
template<class T> |
1094 | 1088 |
BfsWizard<SetReachedMapBase<T> > reachedMap(const T &t) |
1095 | 1089 |
{ |
... | ... |
@@ -1103,11 +1097,13 @@ |
1103 | 1097 |
static DistMap *createDistMap(const Digraph &) { return 0; }; |
1104 | 1098 |
SetDistMapBase(const TR &b) : TR(b) {} |
1105 | 1099 |
}; |
1106 |
///\brief \ref named-func-param "Named parameter" |
|
1107 |
///for setting DistMap object. |
|
1100 |
|
|
1101 |
///\brief \ref named-templ-param "Named parameter" for setting |
|
1102 |
///the distance map. |
|
1108 | 1103 |
/// |
1109 |
/// \ref named-func-param "Named parameter" |
|
1110 |
///for setting DistMap object. |
|
1104 |
///\ref named-templ-param "Named parameter" function for setting |
|
1105 |
///the map that stores the distances of the nodes calculated |
|
1106 |
///by the algorithm. |
|
1111 | 1107 |
template<class T> |
1112 | 1108 |
BfsWizard<SetDistMapBase<T> > distMap(const T &t) |
1113 | 1109 |
{ |
... | ... |
@@ -1121,11 +1117,12 @@ |
1121 | 1117 |
static ProcessedMap *createProcessedMap(const Digraph &) { return 0; }; |
1122 | 1118 |
SetProcessedMapBase(const TR &b) : TR(b) {} |
1123 | 1119 |
}; |
1124 |
///\brief \ref named-func-param "Named parameter" |
|
1125 |
///for setting ProcessedMap object. |
|
1120 |
|
|
1121 |
///\brief \ref named-func-param "Named parameter" for setting |
|
1122 |
///the processed map. |
|
1126 | 1123 |
/// |
1127 |
/// \ref named-func-param "Named parameter" |
|
1128 |
///for setting ProcessedMap object. |
|
1124 |
///\ref named-templ-param "Named parameter" function for setting |
|
1125 |
///the map that indicates which nodes are processed. |
|
1129 | 1126 |
template<class T> |
1130 | 1127 |
BfsWizard<SetProcessedMapBase<T> > processedMap(const T &t) |
1131 | 1128 |
{ |
... | ... |
@@ -1264,7 +1261,7 @@ |
1264 | 1261 |
/// \brief The type of the map that indicates which nodes are reached. |
1265 | 1262 |
/// |
1266 | 1263 |
/// The type of the map that indicates which nodes are reached. |
1267 |
/// It must |
|
1264 |
/// It must conform to the \ref concepts::ReadWriteMap "ReadWriteMap" concept. |
|
1268 | 1265 |
typedef typename Digraph::template NodeMap<bool> ReachedMap; |
1269 | 1266 |
|
1270 | 1267 |
/// \brief Instantiates a ReachedMap. |
... | ... |
@@ -1735,7 +1732,7 @@ |
1735 | 1732 |
|
1736 | 1733 |
///@{ |
1737 | 1734 |
|
1738 |
/// \brief Checks if |
|
1735 |
/// \brief Checks if the given node is reached from the root(s). |
|
1739 | 1736 |
/// |
1740 | 1737 |
/// Returns \c true if \c v is reached from the root(s). |
1741 | 1738 |
/// |
... | ... |
@@ -47,7 +47,7 @@ |
47 | 47 |
/// |
48 | 48 |
///The type of the map that stores the predecessor |
49 | 49 |
///arcs of the %DFS paths. |
50 |
///It must |
|
50 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
51 | 51 |
typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap; |
52 | 52 |
///Instantiates a \c PredMap. |
53 | 53 |
|
... | ... |
@@ -62,7 +62,8 @@ |
62 | 62 |
///The type of the map that indicates which nodes are processed. |
63 | 63 |
|
64 | 64 |
///The type of the map that indicates which nodes are processed. |
65 |
///It must |
|
65 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
66 |
///By default it is a NullMap. |
|
66 | 67 |
typedef NullMap<typename Digraph::Node,bool> ProcessedMap; |
67 | 68 |
///Instantiates a \c ProcessedMap. |
68 | 69 |
|
... | ... |
@@ -81,7 +82,7 @@ |
81 | 82 |
///The type of the map that indicates which nodes are reached. |
82 | 83 |
|
83 | 84 |
///The type of the map that indicates which nodes are reached. |
84 |
///It must |
|
85 |
///It must conform to the \ref concepts::ReadWriteMap "ReadWriteMap" concept. |
|
85 | 86 |
typedef typename Digraph::template NodeMap<bool> ReachedMap; |
86 | 87 |
///Instantiates a \c ReachedMap. |
87 | 88 |
|
... | ... |
@@ -96,7 +97,7 @@ |
96 | 97 |
///The type of the map that stores the distances of the nodes. |
97 | 98 |
|
98 | 99 |
///The type of the map that stores the distances of the nodes. |
99 |
///It must |
|
100 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
100 | 101 |
typedef typename Digraph::template NodeMap<int> DistMap; |
101 | 102 |
///Instantiates a \c DistMap. |
102 | 103 |
|
... | ... |
@@ -224,7 +225,7 @@ |
224 | 225 |
/// |
225 | 226 |
///\ref named-templ-param "Named parameter" for setting |
226 | 227 |
///\c PredMap type. |
227 |
///It must |
|
228 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
228 | 229 |
template <class T> |
229 | 230 |
struct SetPredMap : public Dfs<Digraph, SetPredMapTraits<T> > { |
230 | 231 |
typedef Dfs<Digraph, SetPredMapTraits<T> > Create; |
... | ... |
@@ -244,7 +245,7 @@ |
244 | 245 |
/// |
245 | 246 |
///\ref named-templ-param "Named parameter" for setting |
246 | 247 |
///\c DistMap type. |
247 |
///It must |
|
248 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
248 | 249 |
template <class T> |
249 | 250 |
struct SetDistMap : public Dfs< Digraph, SetDistMapTraits<T> > { |
250 | 251 |
typedef Dfs<Digraph, SetDistMapTraits<T> > Create; |
... | ... |
@@ -264,7 +265,7 @@ |
264 | 265 |
/// |
265 | 266 |
///\ref named-templ-param "Named parameter" for setting |
266 | 267 |
///\c ReachedMap type. |
267 |
///It must |
|
268 |
///It must conform to the \ref concepts::ReadWriteMap "ReadWriteMap" concept. |
|
268 | 269 |
template <class T> |
269 | 270 |
struct SetReachedMap : public Dfs< Digraph, SetReachedMapTraits<T> > { |
270 | 271 |
typedef Dfs< Digraph, SetReachedMapTraits<T> > Create; |
... | ... |
@@ -284,7 +285,7 @@ |
284 | 285 |
/// |
285 | 286 |
///\ref named-templ-param "Named parameter" for setting |
286 | 287 |
///\c ProcessedMap type. |
287 |
///It must |
|
288 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
288 | 289 |
template <class T> |
289 | 290 |
struct SetProcessedMap : public Dfs< Digraph, SetProcessedMapTraits<T> > { |
290 | 291 |
typedef Dfs< Digraph, SetProcessedMapTraits<T> > Create; |
... | ... |
@@ -669,9 +670,9 @@ |
669 | 670 |
|
670 | 671 |
///@{ |
671 | 672 |
|
672 |
///The DFS path to |
|
673 |
///The DFS path to the given node. |
|
673 | 674 |
|
674 |
///Returns the DFS path to |
|
675 |
///Returns the DFS path to the given node from the root(s). |
|
675 | 676 |
/// |
676 | 677 |
///\warning \c t should be reached from the root(s). |
677 | 678 |
/// |
... | ... |
@@ -679,9 +680,9 @@ |
679 | 680 |
///must be called before using this function. |
680 | 681 |
Path path(Node t) const { return Path(*G, *_pred, t); } |
681 | 682 |
|
682 |
///The distance of |
|
683 |
///The distance of the given node from the root(s). |
|
683 | 684 |
|
684 |
///Returns the distance of |
|
685 |
///Returns the distance of the given node from the root(s). |
|
685 | 686 |
/// |
686 | 687 |
///\warning If node \c v is not reached from the root(s), then |
687 | 688 |
///the return value of this function is undefined. |
... | ... |
@@ -690,7 +691,7 @@ |
690 | 691 |
///must be called before using this function. |
691 | 692 |
int dist(Node v) const { return (*_dist)[v]; } |
692 | 693 |
|
693 |
///Returns the 'previous arc' of the %DFS tree for |
|
694 |
///Returns the 'previous arc' of the %DFS tree for the given node. |
|
694 | 695 |
|
695 | 696 |
///This function returns the 'previous arc' of the %DFS tree for the |
696 | 697 |
///node \c v, i.e. it returns the last arc of a %DFS path from a |
... | ... |
@@ -698,21 +699,21 @@ |
698 | 699 |
///root(s) or if \c v is a root. |
699 | 700 |
/// |
700 | 701 |
///The %DFS tree used here is equal to the %DFS tree used in |
701 |
///\ref predNode(). |
|
702 |
///\ref predNode() and \ref predMap(). |
|
702 | 703 |
/// |
703 | 704 |
///\pre Either \ref run(Node) "run()" or \ref init() |
704 | 705 |
///must be called before using this function. |
705 | 706 |
Arc predArc(Node v) const { return (*_pred)[v];} |
706 | 707 |
|
707 |
///Returns the 'previous node' of the %DFS tree. |
|
708 |
///Returns the 'previous node' of the %DFS tree for the given node. |
|
708 | 709 |
|
709 | 710 |
///This function returns the 'previous node' of the %DFS |
710 | 711 |
///tree for the node \c v, i.e. it returns the last but one node |
711 |
/// |
|
712 |
///of a %DFS path from a root to \c v. It is \c INVALID |
|
712 | 713 |
///if \c v is not reached from the root(s) or if \c v is a root. |
713 | 714 |
/// |
714 | 715 |
///The %DFS tree used here is equal to the %DFS tree used in |
715 |
///\ref predArc(). |
|
716 |
///\ref predArc() and \ref predMap(). |
|
716 | 717 |
/// |
717 | 718 |
///\pre Either \ref run(Node) "run()" or \ref init() |
718 | 719 |
///must be called before using this function. |
... | ... |
@@ -733,13 +734,13 @@ |
733 | 734 |
///predecessor arcs. |
734 | 735 |
/// |
735 | 736 |
///Returns a const reference to the node map that stores the predecessor |
736 |
///arcs, which form the DFS tree. |
|
737 |
///arcs, which form the DFS tree (forest). |
|
737 | 738 |
/// |
738 | 739 |
///\pre Either \ref run(Node) "run()" or \ref init() |
739 | 740 |
///must be called before using this function. |
740 | 741 |
const PredMap &predMap() const { return *_pred;} |
741 | 742 |
|
742 |
///Checks if |
|
743 |
///Checks if the given node. node is reached from the root(s). |
|
743 | 744 |
|
744 | 745 |
///Returns \c true if \c v is reached from the root(s). |
745 | 746 |
/// |
... | ... |
@@ -765,7 +766,7 @@ |
765 | 766 |
/// |
766 | 767 |
///The type of the map that stores the predecessor |
767 | 768 |
///arcs of the %DFS paths. |
768 |
///It must |
|
769 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
769 | 770 |
typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap; |
770 | 771 |
///Instantiates a PredMap. |
771 | 772 |
|
... | ... |
@@ -780,7 +781,7 @@ |
780 | 781 |
///The type of the map that indicates which nodes are processed. |
781 | 782 |
|
782 | 783 |
///The type of the map that indicates which nodes are processed. |
783 |
///It must |
|
784 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
784 | 785 |
///By default it is a NullMap. |
785 | 786 |
typedef NullMap<typename Digraph::Node,bool> ProcessedMap; |
786 | 787 |
///Instantiates a ProcessedMap. |
... | ... |
@@ -800,7 +801,7 @@ |
800 | 801 |
///The type of the map that indicates which nodes are reached. |
801 | 802 |
|
802 | 803 |
///The type of the map that indicates which nodes are reached. |
803 |
///It must |
|
804 |
///It must conform to the \ref concepts::ReadWriteMap "ReadWriteMap" concept. |
|
804 | 805 |
typedef typename Digraph::template NodeMap<bool> ReachedMap; |
805 | 806 |
///Instantiates a ReachedMap. |
806 | 807 |
|
... | ... |
@@ -815,7 +816,7 @@ |
815 | 816 |
///The type of the map that stores the distances of the nodes. |
816 | 817 |
|
817 | 818 |
///The type of the map that stores the distances of the nodes. |
818 |
///It must |
|
819 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
819 | 820 |
typedef typename Digraph::template NodeMap<int> DistMap; |
820 | 821 |
///Instantiates a DistMap. |
821 | 822 |
|
... | ... |
@@ -830,18 +831,14 @@ |
830 | 831 |
///The type of the DFS paths. |
831 | 832 |
|
832 | 833 |
///The type of the DFS paths. |
833 |
///It must |
|
834 |
///It must conform to the \ref concepts::Path "Path" concept. |
|
834 | 835 |
typedef lemon::Path<Digraph> Path; |
835 | 836 |
}; |
836 | 837 |
|
837 | 838 |
/// Default traits class used by DfsWizard |
838 | 839 |
|
839 |
/// To make it easier to use Dfs algorithm |
|
840 |
/// we have created a wizard class. |
|
841 |
/// This \ref DfsWizard class needs default traits, |
|
842 |
/// as well as the \ref Dfs class. |
|
843 |
/// The \ref DfsWizardBase is a class to be the default traits of the |
|
844 |
/// \ref DfsWizard class. |
|
840 |
/// Default traits class used by DfsWizard. |
|
841 |
/// \tparam GR The type of the digraph. |
|
845 | 842 |
template<class GR> |
846 | 843 |
class DfsWizardBase : public DfsWizardDefaultTraits<GR> |
847 | 844 |
{ |
... | ... |
@@ -869,7 +866,7 @@ |
869 | 866 |
public: |
870 | 867 |
/// Constructor. |
871 | 868 |
|
872 |
/// This constructor does not require parameters, |
|
869 |
/// This constructor does not require parameters, it initiates |
|
873 | 870 |
/// all of the attributes to \c 0. |
874 | 871 |
DfsWizardBase() : _g(0), _reached(0), _processed(0), _pred(0), |
875 | 872 |
_dist(0), _path(0), _di(0) {} |
... | ... |
@@ -899,7 +896,6 @@ |
899 | 896 |
{ |
900 | 897 |
typedef TR Base; |
901 | 898 |
|
902 |
///The type of the digraph the algorithm runs on. |
|
903 | 899 |
typedef typename TR::Digraph Digraph; |
904 | 900 |
|
905 | 901 |
typedef typename Digraph::Node Node; |
... | ... |
@@ -907,16 +903,10 @@ |
907 | 903 |
typedef typename Digraph::Arc Arc; |
908 | 904 |
typedef typename Digraph::OutArcIt OutArcIt; |
909 | 905 |
|
910 |
///\brief The type of the map that stores the predecessor |
|
911 |
///arcs of the DFS paths. |
|
912 | 906 |
typedef typename TR::PredMap PredMap; |
913 |
///\brief The type of the map that stores the distances of the nodes. |
|
914 | 907 |
typedef typename TR::DistMap DistMap; |
915 |
///\brief The type of the map that indicates which nodes are reached. |
|
916 | 908 |
typedef typename TR::ReachedMap ReachedMap; |
917 |
///\brief The type of the map that indicates which nodes are processed. |
|
918 | 909 |
typedef typename TR::ProcessedMap ProcessedMap; |
919 |
///The type of the DFS paths |
|
920 | 910 |
typedef typename TR::Path Path; |
921 | 911 |
|
922 | 912 |
public: |
... | ... |
@@ -999,11 +989,12 @@ |
999 | 989 |
static PredMap *createPredMap(const Digraph &) { return 0; }; |
1000 | 990 |
SetPredMapBase(const TR &b) : TR(b) {} |
1001 | 991 |
}; |
1002 |
///\brief \ref named-func-param "Named parameter" |
|
1003 |
///for setting PredMap object. |
|
992 |
|
|
993 |
///\brief \ref named-templ-param "Named parameter" for setting |
|
994 |
///the predecessor map. |
|
1004 | 995 |
/// |
1005 |
///\ref named-func-param "Named parameter" |
|
1006 |
///for setting PredMap object. |
|
996 |
///\ref named-templ-param "Named parameter" function for setting |
|
997 |
///the map that stores the predecessor arcs of the nodes. |
|
1007 | 998 |
template<class T> |
1008 | 999 |
DfsWizard<SetPredMapBase<T> > predMap(const T &t) |
1009 | 1000 |
{ |
... | ... |
@@ -1017,11 +1008,12 @@ |
1017 | 1008 |
static ReachedMap *createReachedMap(const Digraph &) { return 0; }; |
1018 | 1009 |
SetReachedMapBase(const TR &b) : TR(b) {} |
1019 | 1010 |
}; |
1020 |
///\brief \ref named-func-param "Named parameter" |
|
1021 |
///for setting ReachedMap object. |
|
1011 |
|
|
1012 |
///\brief \ref named-templ-param "Named parameter" for setting |
|
1013 |
///the reached map. |
|
1022 | 1014 |
/// |
1023 |
/// \ref named-func-param "Named parameter" |
|
1024 |
///for setting ReachedMap object. |
|
1015 |
///\ref named-templ-param "Named parameter" function for setting |
|
1016 |
///the map that indicates which nodes are reached. |
|
1025 | 1017 |
template<class T> |
1026 | 1018 |
DfsWizard<SetReachedMapBase<T> > reachedMap(const T &t) |
1027 | 1019 |
{ |
... | ... |
@@ -1035,11 +1027,13 @@ |
1035 | 1027 |
static DistMap *createDistMap(const Digraph &) { return 0; }; |
1036 | 1028 |
SetDistMapBase(const TR &b) : TR(b) {} |
1037 | 1029 |
}; |
1038 |
///\brief \ref named-func-param "Named parameter" |
|
1039 |
///for setting DistMap object. |
|
1030 |
|
|
1031 |
///\brief \ref named-templ-param "Named parameter" for setting |
|
1032 |
///the distance map. |
|
1040 | 1033 |
/// |
1041 |
/// \ref named-func-param "Named parameter" |
|
1042 |
///for setting DistMap object. |
|
1034 |
///\ref named-templ-param "Named parameter" function for setting |
|
1035 |
///the map that stores the distances of the nodes calculated |
|
1036 |
///by the algorithm. |
|
1043 | 1037 |
template<class T> |
1044 | 1038 |
DfsWizard<SetDistMapBase<T> > distMap(const T &t) |
1045 | 1039 |
{ |
... | ... |
@@ -1053,11 +1047,12 @@ |
1053 | 1047 |
static ProcessedMap *createProcessedMap(const Digraph &) { return 0; }; |
1054 | 1048 |
SetProcessedMapBase(const TR &b) : TR(b) {} |
1055 | 1049 |
}; |
1056 |
///\brief \ref named-func-param "Named parameter" |
|
1057 |
///for setting ProcessedMap object. |
|
1050 |
|
|
1051 |
///\brief \ref named-func-param "Named parameter" for setting |
|
1052 |
///the processed map. |
|
1058 | 1053 |
/// |
1059 |
/// \ref named-func-param "Named parameter" |
|
1060 |
///for setting ProcessedMap object. |
|
1054 |
///\ref named-templ-param "Named parameter" function for setting |
|
1055 |
///the map that indicates which nodes are processed. |
|
1061 | 1056 |
template<class T> |
1062 | 1057 |
DfsWizard<SetProcessedMapBase<T> > processedMap(const T &t) |
1063 | 1058 |
{ |
... | ... |
@@ -1208,7 +1203,7 @@ |
1208 | 1203 |
/// \brief The type of the map that indicates which nodes are reached. |
1209 | 1204 |
/// |
1210 | 1205 |
/// The type of the map that indicates which nodes are reached. |
1211 |
/// It must |
|
1206 |
/// It must conform to the \ref concepts::ReadWriteMap "ReadWriteMap" concept. |
|
1212 | 1207 |
typedef typename Digraph::template NodeMap<bool> ReachedMap; |
1213 | 1208 |
|
1214 | 1209 |
/// \brief Instantiates a ReachedMap. |
... | ... |
@@ -1620,7 +1615,7 @@ |
1620 | 1615 |
|
1621 | 1616 |
///@{ |
1622 | 1617 |
|
1623 |
/// \brief Checks if |
|
1618 |
/// \brief Checks if the given node is reached from the root(s). |
|
1624 | 1619 |
/// |
1625 | 1620 |
/// Returns \c true if \c v is reached from the root(s). |
1626 | 1621 |
/// |
... | ... |
@@ -70,9 +70,9 @@ |
70 | 70 |
///The type of the map that stores the arc lengths. |
71 | 71 |
|
72 | 72 |
///The type of the map that stores the arc lengths. |
73 |
///It must |
|
73 |
///It must conform to the \ref concepts::ReadMap "ReadMap" concept. |
|
74 | 74 |
typedef LEN LengthMap; |
75 |
///The type of the |
|
75 |
///The type of the arc lengths. |
|
76 | 76 |
typedef typename LEN::Value Value; |
77 | 77 |
|
78 | 78 |
/// Operation traits for %Dijkstra algorithm. |
... | ... |
@@ -116,7 +116,7 @@ |
116 | 116 |
/// |
117 | 117 |
///The type of the map that stores the predecessor |
118 | 118 |
///arcs of the shortest paths. |
119 |
///It must |
|
119 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
120 | 120 |
typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap; |
121 | 121 |
///Instantiates a \c PredMap. |
122 | 122 |
|
... | ... |
@@ -131,7 +131,7 @@ |
131 | 131 |
///The type of the map that indicates which nodes are processed. |
132 | 132 |
|
133 | 133 |
///The type of the map that indicates which nodes are processed. |
134 |
///It must |
|
134 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
135 | 135 |
///By default it is a NullMap. |
136 | 136 |
typedef NullMap<typename Digraph::Node,bool> ProcessedMap; |
137 | 137 |
///Instantiates a \c ProcessedMap. |
... | ... |
@@ -151,7 +151,7 @@ |
151 | 151 |
///The type of the map that stores the distances of the nodes. |
152 | 152 |
|
153 | 153 |
///The type of the map that stores the distances of the nodes. |
154 |
///It must |
|
154 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
155 | 155 |
typedef typename Digraph::template NodeMap<typename LEN::Value> DistMap; |
156 | 156 |
///Instantiates a \c DistMap. |
157 | 157 |
|
... | ... |
@@ -169,6 +169,10 @@ |
169 | 169 |
/// \ingroup shortest_path |
170 | 170 |
///This class provides an efficient implementation of the %Dijkstra algorithm. |
171 | 171 |
/// |
172 |
///The %Dijkstra algorithm solves the single-source shortest path problem |
|
173 |
///when all arc lengths are non-negative. If there are negative lengths, |
|
174 |
///the BellmanFord algorithm should be used instead. |
|
175 |
/// |
|
172 | 176 |
///The arc lengths are passed to the algorithm using a |
173 | 177 |
///\ref concepts::ReadMap "ReadMap", |
174 | 178 |
///so it is easy to change it to any kind of length. |
... | ... |
@@ -201,7 +205,7 @@ |
201 | 205 |
///The type of the digraph the algorithm runs on. |
202 | 206 |
typedef typename TR::Digraph Digraph; |
203 | 207 |
|
204 |
///The type of the |
|
208 |
///The type of the arc lengths. |
|
205 | 209 |
typedef typename TR::LengthMap::Value Value; |
206 | 210 |
///The type of the map that stores the arc lengths. |
207 | 211 |
typedef typename TR::LengthMap LengthMap; |
... | ... |
@@ -304,7 +308,7 @@ |
304 | 308 |
/// |
305 | 309 |
///\ref named-templ-param "Named parameter" for setting |
306 | 310 |
///\c PredMap type. |
307 |
///It must |
|
311 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
308 | 312 |
template <class T> |
309 | 313 |
struct SetPredMap |
310 | 314 |
: public Dijkstra< Digraph, LengthMap, SetPredMapTraits<T> > { |
... | ... |
@@ -325,7 +329,7 @@ |
325 | 329 |
/// |
326 | 330 |
///\ref named-templ-param "Named parameter" for setting |
327 | 331 |
///\c DistMap type. |
328 |
///It must |
|
332 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
329 | 333 |
template <class T> |
330 | 334 |
struct SetDistMap |
331 | 335 |
: public Dijkstra< Digraph, LengthMap, SetDistMapTraits<T> > { |
... | ... |
@@ -346,7 +350,7 @@ |
346 | 350 |
/// |
347 | 351 |
///\ref named-templ-param "Named parameter" for setting |
348 | 352 |
///\c ProcessedMap type. |
349 |
///It must |
|
353 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
350 | 354 |
template <class T> |
351 | 355 |
struct SetProcessedMap |
352 | 356 |
: public Dijkstra< Digraph, LengthMap, SetProcessedMapTraits<T> > { |
... | ... |
@@ -443,6 +447,7 @@ |
443 | 447 |
/// |
444 | 448 |
///\ref named-templ-param "Named parameter" for setting |
445 | 449 |
///\c OperationTraits type. |
450 |
/// For more information see \ref DijkstraDefaultOperationTraits. |
|
446 | 451 |
template <class T> |
447 | 452 |
struct SetOperationTraits |
448 | 453 |
: public Dijkstra<Digraph, LengthMap, SetOperationTraitsTraits<T> > { |
... | ... |
@@ -801,14 +806,14 @@ |
801 | 806 |
///\name Query Functions |
802 | 807 |
///The results of the %Dijkstra algorithm can be obtained using these |
803 | 808 |
///functions.\n |
804 |
///Either \ref run(Node) "run()" or \ref |
|
809 |
///Either \ref run(Node) "run()" or \ref init() should be called |
|
805 | 810 |
///before using them. |
806 | 811 |
|
807 | 812 |
///@{ |
808 | 813 |
|
809 |
///The shortest path to |
|
814 |
///The shortest path to the given node. |
|
810 | 815 |
|
811 |
///Returns the shortest path to |
|
816 |
///Returns the shortest path to the given node from the root(s). |
|
812 | 817 |
/// |
813 | 818 |
///\warning \c t should be reached from the root(s). |
814 | 819 |
/// |
... | ... |
@@ -816,9 +821,9 @@ |
816 | 821 |
///must be called before using this function. |
817 | 822 |
Path path(Node t) const { return Path(*G, *_pred, t); } |
818 | 823 |
|
819 |
///The distance of |
|
824 |
///The distance of the given node from the root(s). |
|
820 | 825 |
|
821 |
///Returns the distance of |
|
826 |
///Returns the distance of the given node from the root(s). |
|
822 | 827 |
/// |
823 | 828 |
///\warning If node \c v is not reached from the root(s), then |
824 | 829 |
///the return value of this function is undefined. |
... | ... |
@@ -827,29 +832,31 @@ |
827 | 832 |
///must be called before using this function. |
828 | 833 |
Value dist(Node v) const { return (*_dist)[v]; } |
829 | 834 |
|
830 |
///Returns the 'previous arc' of the shortest path tree for a node. |
|
831 |
|
|
835 |
///\brief Returns the 'previous arc' of the shortest path tree for |
|
836 |
///the given node. |
|
837 |
/// |
|
832 | 838 |
///This function returns the 'previous arc' of the shortest path |
833 | 839 |
///tree for the node \c v, i.e. it returns the last arc of a |
834 | 840 |
///shortest path from a root to \c v. It is \c INVALID if \c v |
835 | 841 |
///is not reached from the root(s) or if \c v is a root. |
836 | 842 |
/// |
837 | 843 |
///The shortest path tree used here is equal to the shortest path |
838 |
///tree used in \ref predNode(). |
|
844 |
///tree used in \ref predNode() and \ref predMap(). |
|
839 | 845 |
/// |
840 | 846 |
///\pre Either \ref run(Node) "run()" or \ref init() |
841 | 847 |
///must be called before using this function. |
842 | 848 |
Arc predArc(Node v) const { return (*_pred)[v]; } |
843 | 849 |
|
844 |
///Returns the 'previous node' of the shortest path tree for a node. |
|
845 |
|
|
850 |
///\brief Returns the 'previous node' of the shortest path tree for |
|
851 |
///the given node. |
|
852 |
/// |
|
846 | 853 |
///This function returns the 'previous node' of the shortest path |
847 | 854 |
///tree for the node \c v, i.e. it returns the last but one node |
848 |
/// |
|
855 |
///of a shortest path from a root to \c v. It is \c INVALID |
|
849 | 856 |
///if \c v is not reached from the root(s) or if \c v is a root. |
850 | 857 |
/// |
851 | 858 |
///The shortest path tree used here is equal to the shortest path |
852 |
///tree used in \ref predArc(). |
|
859 |
///tree used in \ref predArc() and \ref predMap(). |
|
853 | 860 |
/// |
854 | 861 |
///\pre Either \ref run(Node) "run()" or \ref init() |
855 | 862 |
///must be called before using this function. |
... | ... |
@@ -870,13 +877,13 @@ |
870 | 877 |
///predecessor arcs. |
871 | 878 |
/// |
872 | 879 |
///Returns a const reference to the node map that stores the predecessor |
873 |
///arcs, which form the shortest path tree. |
|
880 |
///arcs, which form the shortest path tree (forest). |
|
874 | 881 |
/// |
875 | 882 |
///\pre Either \ref run(Node) "run()" or \ref init() |
876 | 883 |
///must be called before using this function. |
877 | 884 |
const PredMap &predMap() const { return *_pred;} |
878 | 885 |
|
879 |
///Checks if |
|
886 |
///Checks if the given node is reached from the root(s). |
|
880 | 887 |
|
881 | 888 |
///Returns \c true if \c v is reached from the root(s). |
882 | 889 |
/// |
... | ... |
@@ -895,9 +902,9 @@ |
895 | 902 |
bool processed(Node v) const { return (*_heap_cross_ref)[v] == |
896 | 903 |
Heap::POST_HEAP; } |
897 | 904 |
|
898 |
///The current distance of |
|
905 |
///The current distance of the given node from the root(s). |
|
899 | 906 |
|
900 |
///Returns the current distance of |
|
907 |
///Returns the current distance of the given node from the root(s). |
|
901 | 908 |
///It may be decreased in the following processes. |
902 | 909 |
/// |
903 | 910 |
///\pre Either \ref run(Node) "run()" or \ref init() |
... | ... |
@@ -924,9 +931,9 @@ |
924 | 931 |
///The type of the map that stores the arc lengths. |
925 | 932 |
|
926 | 933 |
///The type of the map that stores the arc lengths. |
927 |
///It must |
|
934 |
///It must conform to the \ref concepts::ReadMap "ReadMap" concept. |
|
928 | 935 |
typedef LEN LengthMap; |
929 |
///The type of the |
|
936 |
///The type of the arc lengths. |
|
930 | 937 |
typedef typename LEN::Value Value; |
931 | 938 |
|
932 | 939 |
/// Operation traits for Dijkstra algorithm. |
... | ... |
@@ -973,7 +980,7 @@ |
973 | 980 |
/// |
974 | 981 |
///The type of the map that stores the predecessor |
975 | 982 |
///arcs of the shortest paths. |
976 |
///It must |
|
983 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
977 | 984 |
typedef typename Digraph::template NodeMap<typename Digraph::Arc> PredMap; |
978 | 985 |
///Instantiates a PredMap. |
979 | 986 |
|
... | ... |
@@ -988,7 +995,7 @@ |
988 | 995 |
///The type of the map that indicates which nodes are processed. |
989 | 996 |
|
990 | 997 |
///The type of the map that indicates which nodes are processed. |
991 |
///It must |
|
998 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
992 | 999 |
///By default it is a NullMap. |
993 | 1000 |
typedef NullMap<typename Digraph::Node,bool> ProcessedMap; |
994 | 1001 |
///Instantiates a ProcessedMap. |
... | ... |
@@ -1008,7 +1015,7 @@ |
1008 | 1015 |
///The type of the map that stores the distances of the nodes. |
1009 | 1016 |
|
1010 | 1017 |
///The type of the map that stores the distances of the nodes. |
1011 |
///It must |
|
1018 |
///It must conform to the \ref concepts::WriteMap "WriteMap" concept. |
|
1012 | 1019 |
typedef typename Digraph::template NodeMap<typename LEN::Value> DistMap; |
1013 | 1020 |
///Instantiates a DistMap. |
1014 | 1021 |
|
... | ... |
@@ -1023,18 +1030,15 @@ |
1023 | 1030 |
///The type of the shortest paths. |
1024 | 1031 |
|
1025 | 1032 |
///The type of the shortest paths. |
1026 |
///It must |
|
1033 |
///It must conform to the \ref concepts::Path "Path" concept. |
|
1027 | 1034 |
typedef lemon::Path<Digraph> Path; |
1028 | 1035 |
}; |
1029 | 1036 |
|
1030 | 1037 |
/// Default traits class used by DijkstraWizard |
1031 | 1038 |
|
1032 |
/// To make it easier to use Dijkstra algorithm |
|
1033 |
/// we have created a wizard class. |
|
1034 |
/// This \ref DijkstraWizard class needs default traits, |
|
1035 |
/// as well as the \ref Dijkstra class. |
|
1036 |
/// The \ref DijkstraWizardBase is a class to be the default traits of the |
|
1037 |
/// \ref DijkstraWizard class. |
|
1039 |
/// Default traits class used by DijkstraWizard. |
|
1040 |
/// \tparam GR The type of the digraph. |
|
1041 |
/// \tparam LEN The type of the length map. |
|
1038 | 1042 |
template<typename GR, typename LEN> |
1039 | 1043 |
class DijkstraWizardBase : public DijkstraWizardDefaultTraits<GR,LEN> |
1040 | 1044 |
{ |
... | ... |
@@ -1093,7 +1097,6 @@ |
1093 | 1097 |
{ |
1094 | 1098 |
typedef TR Base; |
1095 | 1099 |
|
1096 |
///The type of the digraph the algorithm runs on. |
|
1097 | 1100 |
typedef typename TR::Digraph Digraph; |
1098 | 1101 |
|
1099 | 1102 |
typedef typename Digraph::Node Node; |
... | ... |
@@ -1101,20 +1104,12 @@ |
1101 | 1104 |
typedef typename Digraph::Arc Arc; |
1102 | 1105 |
typedef typename Digraph::OutArcIt OutArcIt; |
1103 | 1106 |
|
1104 |
///The type of the map that stores the arc lengths. |
|
1105 | 1107 |
typedef typename TR::LengthMap LengthMap; |
1106 |
///The type of the length of the arcs. |
|
1107 | 1108 |
typedef typename LengthMap::Value Value; |
1108 |
///\brief The type of the map that stores the predecessor |
|
1109 |
///arcs of the shortest paths. |
|
1110 | 1109 |
typedef typename TR::PredMap PredMap; |
1111 |
///The type of the map that stores the distances of the nodes. |
|
1112 | 1110 |
typedef typename TR::DistMap DistMap; |
1113 |
///The type of the map that indicates which nodes are processed. |
|
1114 | 1111 |
typedef typename TR::ProcessedMap ProcessedMap; |
1115 |
///The type of the shortest paths |
|
1116 | 1112 |
typedef typename TR::Path Path; |
1117 |
///The heap type used by the dijkstra algorithm. |
|
1118 | 1113 |
typedef typename TR::Heap Heap; |
1119 | 1114 |
|
1120 | 1115 |
public: |
... | ... |
@@ -1186,11 +1181,12 @@ |
1186 | 1181 |
static PredMap *createPredMap(const Digraph &) { return 0; }; |
1187 | 1182 |
SetPredMapBase(const TR &b) : TR(b) {} |
1188 | 1183 |
}; |
1189 |
///\brief \ref named-func-param "Named parameter" |
|
1190 |
///for setting PredMap object. |
|
1184 |
|
|
1185 |
///\brief \ref named-templ-param "Named parameter" for setting |
|
1186 |
///the predecessor map. |
|
1191 | 1187 |
/// |
1192 |
///\ref named-func-param "Named parameter" |
|
1193 |
///for setting PredMap object. |
|
1188 |
///\ref named-templ-param "Named parameter" function for setting |
|
1189 |
///the map that stores the predecessor arcs of the nodes. |
|
1194 | 1190 |
template<class T> |
1195 | 1191 |
DijkstraWizard<SetPredMapBase<T> > predMap(const T &t) |
1196 | 1192 |
{ |
... | ... |
@@ -1204,11 +1200,13 @@ |
1204 | 1200 |
static DistMap *createDistMap(const Digraph &) { return 0; }; |
1205 | 1201 |
SetDistMapBase(const TR &b) : TR(b) {} |
1206 | 1202 |
}; |
1207 |
///\brief \ref named-func-param "Named parameter" |
|
1208 |
///for setting DistMap object. |
|
1203 |
|
|
1204 |
///\brief \ref named-templ-param "Named parameter" for setting |
|
1205 |
///the distance map. |
|
1209 | 1206 |
/// |
1210 |
///\ref named-func-param "Named parameter" |
|
1211 |
///for setting DistMap object. |
|
1207 |
///\ref named-templ-param "Named parameter" function for setting |
|
1208 |
///the map that stores the distances of the nodes calculated |
|
1209 |
///by the algorithm. |
|
1212 | 1210 |
template<class T> |
1213 | 1211 |
DijkstraWizard<SetDistMapBase<T> > distMap(const T &t) |
1214 | 1212 |
{ |
... | ... |
@@ -1222,11 +1220,12 @@ |
1222 | 1220 |
static ProcessedMap *createProcessedMap(const Digraph &) { return 0; }; |
1223 | 1221 |
SetProcessedMapBase(const TR &b) : TR(b) {} |
1224 | 1222 |
}; |
1225 |
///\brief \ref named-func-param "Named parameter" |
|
1226 |
///for setting ProcessedMap object. |
|
1223 |
|
|
1224 |
///\brief \ref named-func-param "Named parameter" for setting |
|
1225 |
///the processed map. |
|
1227 | 1226 |
/// |
1228 |
/// \ref named-func-param "Named parameter" |
|
1229 |
///for setting ProcessedMap object. |
|
1227 |
///\ref named-templ-param "Named parameter" function for setting |
|
1228 |
///the map that indicates which nodes are processed. |
|
1230 | 1229 |
template<class T> |
1231 | 1230 |
DijkstraWizard<SetProcessedMapBase<T> > processedMap(const T &t) |
1232 | 1231 |
{ |
... | ... |
@@ -1239,6 +1238,7 @@ |
1239 | 1238 |
typedef T Path; |
1240 | 1239 |
SetPathBase(const TR &b) : TR(b) {} |
1241 | 1240 |
}; |
1241 |
|
|
1242 | 1242 |
///\brief \ref named-func-param "Named parameter" |
1243 | 1243 |
///for getting the shortest path to the target node. |
1244 | 1244 |
/// |
... | ... |
@@ -1790,11 +1790,11 @@ |
1790 | 1790 |
/// order of Dfs algorithm, as the following examples show. |
1791 | 1791 |
/// \code |
1792 | 1792 |
/// std::vector<Node> v; |
1793 |
/// dfs(g |
|
1793 |
/// dfs(g).processedMap(loggerBoolMap(std::back_inserter(v))).run(s); |
|
1794 | 1794 |
/// \endcode |
1795 | 1795 |
/// \code |
1796 | 1796 |
/// std::vector<Node> v(countNodes(g)); |
1797 |
/// dfs(g |
|
1797 |
/// dfs(g).processedMap(loggerBoolMap(v.begin())).run(s); |
|
1798 | 1798 |
/// \endcode |
1799 | 1799 |
/// |
1800 | 1800 |
/// \note The container of the iterator must contain enough space |
0 comments (0 inline)