Changeset 1401:9588dcef6793 in lemon0.x for doc/graphadaptors.dox
 Timestamp:
 05/04/05 15:07:10 (15 years ago)
 Branch:
 default
 Phase:
 public
 Convert:
 svn:c9d7d8f590d60310b91f818b3a526b0e/lemon/trunk@1863
 File:

 1 moved
Legend:
 Unmodified
 Added
 Removed

doc/graphadaptors.dox
r1252 r1401 1 1 /** 2 @defgroup g wrappers Wrapper Classes for Graphs3 \brief This group contains several wrapper classes for graphs2 @defgroup graph_adaptors Adaptor Classes for Graphs 3 \brief This group contains several adaptor classes for graphs 4 4 @ingroup graphs 5 5 6 6 The main parts of LEMON are the different graph structures, 7 7 generic graph algorithms, graph concepts which couple these, and 8 graph wrappers. While the previous notions are more or less clear, the8 graph adaptors. While the previous notions are more or less clear, the 9 9 latter one needs further explanation. 10 Graph wrappers are graph classes which serve for considering graph10 Graph adaptors are graph classes which serve for considering graph 11 11 structures in different ways. 12 12 … … 19 19 It may be expensive (in time or in memory usage) to copy 20 20 \c g with the reversed orientation. 21 In this case, a wrapper class is used, which21 In this case, an adaptor class is used, which 22 22 (according to LEMON graph concepts) works as a graph. 23 The wrapper uses23 The adaptor uses 24 24 the original graph structure and graph operations when methods of the 25 25 reversed oriented graph are called. 26 This means that the wrapper have minor memory usage,26 This means that the adaptor have minor memory usage, 27 27 and do not perform sophisticated algorithmic actions. 28 28 The purpose of it is to give a tool for the cases when … … 30 30 If this alteration is obtained by a usual construction 31 31 like filtering the edgeset or considering a new orientation, then 32 a wrapper is worthwhile to use.32 an adaptor is worthwhile to use. 33 33 To come back to the reversed oriented graph, in this situation 34 \code template<typename Graph> class RevGraph Wrapper; \endcode34 \code template<typename Graph> class RevGraphAdaptor; \endcode 35 35 template class can be used. 36 36 The code looks as follows 37 37 \code 38 38 ListGraph g; 39 RevGraph Wrapper<ListGraph> rgw(g);39 RevGraphAdaptor<ListGraph> rgw(g); 40 40 int result=algorithm(rgw); 41 41 \endcode … … 43 43 is untouched. 44 44 This techniques gives rise to an elegant code, and 45 based on stable graph wrappers, complex algorithms can be45 based on stable graph adaptors, complex algorithms can be 46 46 implemented easily. 47 47 48 48 In flow, circulation and bipartite matching problems, the residual 49 graph is of particular importance. Combining a wrapper implementing49 graph is of particular importance. Combining an adaptor implementing 50 50 this, shortest path algorithms and minimum mean cycle algorithms, 51 51 a range of weighted and cardinality optimization algorithms can be … … 53 53 For other examples, 54 54 the interested user is referred to the detailed documentation of 55 particular wrappers.55 particular adaptors. 56 56 57 The behavior of graph wrappers can be very different. Some of them keep57 The behavior of graph adaptors can be very different. Some of them keep 58 58 capabilities of the original graph while in other cases this would be 59 59 meaningless. This means that the concepts that they are models of depend 60 on the graph wrapper, and the wrapped graph(s).60 on the graph adaptor, and the wrapped graph(s). 61 61 If an edge of \c rgw is deleted, this is carried out by 62 deleting the corresponding edge of \c g, thus the wrapper modifies the62 deleting the corresponding edge of \c g, thus the adaptor modifies the 63 63 original graph. 64 64 But for a residual 65 65 graph, this operation has no sense. 66 66 Let us stand one more example here to simplify your work. 67 RevGraph Wrapper has constructor67 RevGraphAdaptor has constructor 68 68 \code 69 RevGraph Wrapper(Graph& _g);69 RevGraphAdaptor(Graph& _g); 70 70 \endcode 71 71 This means that in a situation, … … 74 74 \code 75 75 int algorithm1(const ListGraph& g) { 76 RevGraph Wrapper<const ListGraph> rgw(g);76 RevGraphAdaptor<const ListGraph> rgw(g); 77 77 return algorithm2(rgw); 78 78 }
Note: See TracChangeset
for help on using the changeset viewer.