src/hugo/graph_wrapper.h
changeset 879 5e284075b193
parent 878 86b42ec55f3e
child 888 cc3590763f7f
equal deleted inserted replaced
38:6d535bf531d2 39:04831eacf037
    78   /// \addtogroup gwrappers
    78   /// \addtogroup gwrappers
    79   /// @{
    79   /// @{
    80 
    80 
    81   ///Base type for the Graph Wrappers
    81   ///Base type for the Graph Wrappers
    82 
    82 
       
    83   ///\warning Graph wrappers are in even more experimental state than the other
       
    84   ///parts of the lib. Use them at you own risk.
       
    85   ///
    83   ///This is the base type for the Graph Wrappers.
    86   ///This is the base type for the Graph Wrappers.
    84   ///\todo Some more docs... 
    87   ///\todo Some more docs... 
    85   ///
    88   ///
    86   ///\author Marton Makai 
    89   ///\author Marton Makai 
    87   template<typename Graph>
    90   template<typename Graph>
   212 
   215 
   213 
   216 
   214 
   217 
   215   /// A graph wrapper which reverses the orientation of the edges.
   218   /// A graph wrapper which reverses the orientation of the edges.
   216 
   219 
       
   220   ///\warning Graph wrappers are in even more experimental state than the other
       
   221   ///parts of the lib. Use them at you own risk.
       
   222   ///
   217   /// A graph wrapper which reverses the orientation of the edges.
   223   /// A graph wrapper which reverses the orientation of the edges.
   218   /// Thus \c Graph have to be a directed graph type.
   224   /// Thus \c Graph have to be a directed graph type.
   219   ///
   225   ///
   220   ///\author Marton Makai
   226   ///\author Marton Makai
   221   template<typename Graph>
   227   template<typename Graph>
   286 
   292 
   287 
   293 
   288 
   294 
   289   /// A graph wrapper for hiding nodes and edges from a graph.
   295   /// A graph wrapper for hiding nodes and edges from a graph.
   290   
   296   
       
   297   ///\warning Graph wrappers are in even more experimental state than the other
       
   298   ///parts of the lib. Use them at you own risk.
       
   299   ///
   291   /// This wrapper shows a graph with filtered node-set and 
   300   /// This wrapper shows a graph with filtered node-set and 
   292   /// edge-set. Given a bool-valued map on the node-set and one on 
   301   /// edge-set. Given a bool-valued map on the node-set and one on 
   293   /// the edge-set of the graphs, the iterators shows only the objects 
   302   /// the edge-set of the graphs, the iterators shows only the objects 
   294   /// having true value. 
   303   /// having true value. 
   295   /// The quick brown fox iterators jump over 
   304   /// The quick brown fox iterators jump over 
   553 
   562 
   554   };
   563   };
   555   
   564   
   556   /// \brief An undirected graph template.
   565   /// \brief An undirected graph template.
   557   ///
   566   ///
       
   567   ///\warning Graph wrappers are in even more experimental state than the other
       
   568   ///parts of the lib. Use them at you own risk.
       
   569   ///
   558   /// An undirected graph template.
   570   /// An undirected graph template.
   559   /// This class works as an undirected graph and a directed graph of 
   571   /// This class works as an undirected graph and a directed graph of 
   560   /// class \c Graph is used for the physical storage.
   572   /// class \c Graph is used for the physical storage.
   561   /// \ingroup graphs
   573   /// \ingroup graphs
   562   template<typename Graph>
   574   template<typename Graph>
   574 
   586 
   575 
   587 
   576 
   588 
   577   ///\brief A wrapper for composing a subgraph of a 
   589   ///\brief A wrapper for composing a subgraph of a 
   578   /// bidirected graph made from a directed one. 
   590   /// bidirected graph made from a directed one. 
       
   591   ///
       
   592   ///\warning Graph wrappers are in even more experimental state than the other
       
   593   ///parts of the lib. Use them at you own risk.
   579   ///
   594   ///
   580   /// Suppose that for a directed graph $G=(V, A)$, 
   595   /// Suppose that for a directed graph $G=(V, A)$, 
   581   /// two predicates on the edge-set, $forward_filter$, and $backward_filter$ 
   596   /// two predicates on the edge-set, $forward_filter$, and $backward_filter$ 
   582   /// is given, and we are dealing with the directed graph
   597   /// is given, and we are dealing with the directed graph
   583   /// a $G'=(V, \{uv : uv\in A \mbox{ and } forward_filter(uv) \mbox{ is true}\}+\{vu : uv\in A \mbox{ and } backward_filter(uv) \mbox{ is true}\})$. 
   598   /// a $G'=(V, \{uv : uv\in A \mbox{ and } forward_filter(uv) \mbox{ is true}\}+\{vu : uv\in A \mbox{ and } backward_filter(uv) \mbox{ is true}\})$. 
   913   };
   928   };
   914 
   929 
   915 
   930 
   916   ///\brief A wrapper for composing bidirected graph from a directed one. 
   931   ///\brief A wrapper for composing bidirected graph from a directed one. 
   917   ///
   932   ///
       
   933   ///\warning Graph wrappers are in even more experimental state than the other
       
   934   ///parts of the lib. Use them at you own risk.
       
   935   ///
   918   /// A wrapper for composing bidirected graph from a directed one. 
   936   /// A wrapper for composing bidirected graph from a directed one. 
   919   /// A bidirected graph is composed over the directed one without physical 
   937   /// A bidirected graph is composed over the directed one without physical 
   920   /// storage. As the oppositely directed edges are logically different ones 
   938   /// storage. As the oppositely directed edges are logically different ones 
   921   /// the maps are able to attach different values for them.
   939   /// the maps are able to attach different values for them.
   922   template<typename Graph>
   940   template<typename Graph>
   951   };
   969   };
   952 
   970 
   953 
   971 
   954   /// \brief A bidirected graph template.
   972   /// \brief A bidirected graph template.
   955   ///
   973   ///
       
   974   ///\warning Graph wrappers are in even more experimental state than the other
       
   975   ///parts of the lib. Use them at you own risk.
       
   976   ///
   956   /// A bidirected graph template.
   977   /// A bidirected graph template.
   957   /// Such a bidirected graph stores each pair of oppositely directed edges 
   978   /// Such a bidirected graph stores each pair of oppositely directed edges 
   958   /// ones in the memory, i.e. a directed graph of type 
   979   /// ones in the memory, i.e. a directed graph of type 
   959   /// \c Graph is used for that.
   980   /// \c Graph is used for that.
   960   /// As the oppositely directed edges are logically different ones 
   981   /// As the oppositely directed edges are logically different ones 
  1011   };
  1032   };
  1012 
  1033 
  1013   
  1034   
  1014   /// A wrapper for composing the residual graph for directed flow and circulation problems.
  1035   /// A wrapper for composing the residual graph for directed flow and circulation problems.
  1015 
  1036 
       
  1037   ///\warning Graph wrappers are in even more experimental state than the other
       
  1038   ///parts of the lib. Use them at you own risk.
       
  1039   ///
  1016   /// A wrapper for composing the residual graph for directed flow and circulation problems.
  1040   /// A wrapper for composing the residual graph for directed flow and circulation problems.
  1017   template<typename Graph, typename Number, 
  1041   template<typename Graph, typename Number, 
  1018 	   typename CapacityMap, typename FlowMap>
  1042 	   typename CapacityMap, typename FlowMap>
  1019   class ResGraphWrapper : 
  1043   class ResGraphWrapper : 
  1020     public SubBidirGraphWrapper< 
  1044     public SubBidirGraphWrapper< 
  1086   };
  1110   };
  1087 
  1111 
  1088 
  1112 
  1089   /// For blocking flows.
  1113   /// For blocking flows.
  1090 
  1114 
       
  1115   ///\warning Graph wrappers are in even more experimental state than the other
       
  1116   ///parts of the lib. Use them at you own risk.
       
  1117   ///
  1091   /// This graph wrapper is used for on-the-fly 
  1118   /// This graph wrapper is used for on-the-fly 
  1092   /// Dinits blocking flow computations.
  1119   /// Dinits blocking flow computations.
  1093   /// For each node, an out-edge is stored which is used when the 
  1120   /// For each node, an out-edge is stored which is used when the 
  1094   /// \code 
  1121   /// \code 
  1095   /// OutEdgeIt& first(OutEdgeIt&, const Node&)
  1122   /// OutEdgeIt& first(OutEdgeIt&, const Node&)