437 /// other parts of the lib. Use them at you own risk. |
437 /// other parts of the lib. Use them at you own risk. |
438 /// |
438 /// |
439 /// SubGraphAdaptor shows the graph with filtered node-set and |
439 /// SubGraphAdaptor shows the graph with filtered node-set and |
440 /// edge-set. If the \c checked parameter is true then it filters the edgeset |
440 /// edge-set. If the \c checked parameter is true then it filters the edgeset |
441 /// to do not get invalid edges without source or target. |
441 /// to do not get invalid edges without source or target. |
442 /// Let \f$ G=(V, A) \f$ be a directed graph |
442 /// Let \f$ G=(V, A) \f$ be a directed graph |
443 /// and suppose that the graph instance \c g of type ListGraph |
443 /// and suppose that the graph instance \c g of type ListGraph |
444 /// implements \f$ G \f$ . |
444 /// implements \f$ G \f$. |
445 /// Let moreover \f$ b_V \f$ and \f$ b_A \f$ be bool-valued functions resp. |
445 /// Let moreover \f$ b_V \f$ and \f$ b_A \f$ be bool-valued functions resp. |
446 /// on the node-set and edge-set. |
446 /// on the node-set and edge-set. |
447 /// SubGraphAdaptor<...>::NodeIt iterates |
447 /// SubGraphAdaptor<...>::NodeIt iterates |
448 /// on the node-set \f$ \{v\in V : b_V(v)=true\} \f$ and |
448 /// on the node-set \f$ \{v\in V : b_V(v)=true\} \f$ and |
449 /// SubGraphAdaptor<...>::EdgeIt iterates |
449 /// SubGraphAdaptor<...>::EdgeIt iterates |
450 /// on the edge-set \f$ \{e\in A : b_A(e)=true\} \f$ . Similarly, |
450 /// on the edge-set \f$ \{e\in A : b_A(e)=true\} \f$. Similarly, |
451 /// SubGraphAdaptor<...>::OutEdgeIt and |
451 /// SubGraphAdaptor<...>::OutEdgeIt and |
452 /// SubGraphAdaptor<...>::InEdgeIt iterates |
452 /// SubGraphAdaptor<...>::InEdgeIt iterates |
453 /// only on edges leaving and entering a specific node which have true value. |
453 /// only on edges leaving and entering a specific node which have true value. |
454 /// |
454 /// |
455 /// If the \c checked template parameter is false then we have to note that |
455 /// If the \c checked template parameter is false then we have to note that |
1047 /// |
1047 /// |
1048 ///\warning Graph adaptors are in even more experimental state |
1048 ///\warning Graph adaptors are in even more experimental state |
1049 ///than the other |
1049 ///than the other |
1050 ///parts of the lib. Use them at you own risk. |
1050 ///parts of the lib. Use them at you own risk. |
1051 /// |
1051 /// |
1052 /// Let \f$ G=(V, A) \f$ be a directed graph and for each directed edge |
1052 /// Let \f$ G=(V, A) \f$ be a directed graph and for each directed edge |
1053 /// \f$ e\in A \f$ , let \f$ \bar e \f$ denote the edge obtained by |
1053 ///\f$ e\in A \f$, let \f$ \bar e \f$ denote the edge obtained by |
1054 /// reversing its orientation. We are given moreover two bool valued |
1054 /// reversing its orientation. We are given moreover two bool valued |
1055 /// maps on the edge-set, |
1055 /// maps on the edge-set, |
1056 /// \f$ forward\_filter \f$ , and \f$ backward\_filter \f$ . |
1056 ///\f$ forward\_filter \f$, and \f$ backward\_filter \f$. |
1057 /// SubBidirGraphAdaptor implements the graph structure with node-set |
1057 /// SubBidirGraphAdaptor implements the graph structure with node-set |
1058 /// \f$ V \f$ and edge-set |
1058 ///\f$ V \f$ and edge-set |
1059 /// \f$ \{e : e\in A \mbox{ and } forward\_filter(e) \mbox{ is true}\}+\{\bar e : e\in A \mbox{ and } backward\_filter(e) \mbox{ is true}\} \f$ . |
1059 ///\f$ \{e : e\in A \mbox{ and } forward\_filter(e) \mbox{ is true}\}+\{\bar e : e\in A \mbox{ and } backward\_filter(e) \mbox{ is true}\} \f$. |
1060 /// The purpose of writing + instead of union is because parallel |
1060 /// The purpose of writing + instead of union is because parallel |
1061 /// edges can arise. (Similarly, antiparallel edges also can arise). |
1061 /// edges can arise. (Similarly, antiparallel edges also can arise). |
1062 /// In other words, a subgraph of the bidirected graph obtained, which |
1062 /// In other words, a subgraph of the bidirected graph obtained, which |
1063 /// is given by orienting the edges of the original graph in both directions. |
1063 /// is given by orienting the edges of the original graph in both directions. |
1064 /// As the oppositely directed edges are logically different, |
1064 /// As the oppositely directed edges are logically different, |
1183 ///graph for directed flow and circulation problems. |
1183 ///graph for directed flow and circulation problems. |
1184 ///\ingroup graph_adaptors |
1184 ///\ingroup graph_adaptors |
1185 /// |
1185 /// |
1186 ///An adaptor for composing the residual graph for |
1186 ///An adaptor for composing the residual graph for |
1187 ///directed flow and circulation problems. |
1187 ///directed flow and circulation problems. |
1188 ///Let \f$ G=(V, A) \f$ be a directed graph and let \f$ F \f$ be a |
1188 ///Let \f$ G=(V, A) \f$ be a directed graph and let \f$ F \f$ be a |
1189 ///number type. Let moreover |
1189 ///number type. Let moreover |
1190 /// \f$ f,c:A\to F \f$ , be functions on the edge-set. |
1190 ///\f$ f,c:A\to F \f$, be functions on the edge-set. |
1191 ///In the appications of ResGraphAdaptor, \f$ f \f$ usually stands for a flow |
1191 ///In the appications of ResGraphAdaptor, \f$ f \f$ usually stands for a flow |
1192 ///and \f$ c \f$ for a capacity function. |
1192 ///and \f$ c \f$ for a capacity function. |
1193 ///Suppose that a graph instange \c g of type |
1193 ///Suppose that a graph instange \c g of type |
1194 ///\c ListGraph implements \f$ G \f$ . |
1194 ///\c ListGraph implements \f$ G \f$. |
1195 ///\code |
1195 ///\code |
1196 /// ListGraph g; |
1196 /// ListGraph g; |
1197 ///\endcode |
1197 ///\endcode |
1198 ///Then RevGraphAdaptor implements the graph structure with node-set |
1198 ///Then RevGraphAdaptor implements the graph structure with node-set |
1199 /// \f$ V \f$ and edge-set \f$ A_{forward}\cup A_{backward} \f$ , where |
1199 ///\f$ V \f$ and edge-set \f$ A_{forward}\cup A_{backward} \f$, where |
1200 /// \f$ A_{forward}=\{uv : uv\in A, f(uv)<c(uv)\} \f$ and |
1200 ///\f$ A_{forward}=\{uv : uv\in A, f(uv)<c(uv)\} \f$ and |
1201 /// \f$ A_{backward}=\{vu : uv\in A, f(uv)>0\} \f$ , |
1201 ///\f$ A_{backward}=\{vu : uv\in A, f(uv)>0\} \f$, |
1202 ///i.e. the so called residual graph. |
1202 ///i.e. the so called residual graph. |
1203 ///When we take the union \f$ A_{forward}\cup A_{backward} \f$ , |
1203 ///When we take the union \f$ A_{forward}\cup A_{backward} \f$, |
1204 ///multilicities are counted, i.e. if an edge is in both |
1204 ///multilicities are counted, i.e. if an edge is in both |
1205 /// \f$ A_{forward} \f$ and \f$ A_{backward} \f$ , then in the adaptor it |
1205 ///\f$ A_{forward} \f$ and \f$ A_{backward} \f$, then in the adaptor it |
1206 ///appears twice. |
1206 ///appears twice. |
1207 ///The following code shows how |
1207 ///The following code shows how |
1208 ///such an instance can be constructed. |
1208 ///such an instance can be constructed. |
1209 ///\code |
1209 ///\code |
1210 ///typedef ListGraph Graph; |
1210 ///typedef ListGraph Graph; |