Changeset 558:4cbfb435ec2b in lemon0.x for src/work/jacint/graph_gen.h
 Timestamp:
 05/06/04 19:22:11 (17 years ago)
 Branch:
 default
 Phase:
 public
 Convert:
 svn:c9d7d8f590d60310b91f818b3a526b0e/lemon/trunk@731
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

src/work/jacint/graph_gen.h
r534 r558 1 1 // * c++ * 2 //randomGraph(i,j) gives a random graph on i nodes and j edges.3 2 #include <vector> 4 3 #include <cstdlib> 5 6 //#include <list_graph.h>7 //#include <time_measure.h>8 //#include <for_each_macros.h>9 //#include <bfs_iterator.h>10 //#include <bipartite_graph_wrapper.h>11 //#include <maps.h>12 //#include <max_flow.h>13 4 14 5 namespace hugo { … … 39 30 40 31 32 /// Generates a random graph with n nodes and m edges. 33 /// Before generating the random graph, \c g.clear() is called. 41 34 template<typename Graph> 42 void randomGraph (Graph& g, int n, int m) { 43 typedef typename Graph::Node Node; 35 void randomGraph(Graph& g, int n, int m) { 44 36 g.clear(); 45 std::vector< Node> nodes;37 std::vector<typename Graph::Node> nodes; 46 38 for (int i=0; i<n; ++i) 47 39 nodes.push_back(g.addNode()); … … 50 42 } 51 43 52 } 44 /// Generates a random bipartite graph with a and b nodes 45 /// in the color classes and m edges. 46 /// According to the bipartite graph concept, the resulting 47 /// graph is directed from the first class to the second one. 48 /// Before generating the random graph, \c g.clear() is called. 49 template<typename Graph> 50 void randomBipartiteGraph(Graph& g, int a, int b, int m) { 51 g.clear(); 52 std::vector<typename Graph::Node> s_nodes; 53 std::vector<typename Graph::Node> t_nodes; 54 for (int i=0; i<a; ++i) 55 ///\bug g.addNode(g.S_CLASS) would be better. 56 s_nodes.push_back(g.addNode(false)); 57 for (int i=0; i<b; ++i) 58 ///\bug g.addNode(g.T_CLASS) would be better. 59 t_nodes.push_back(g.addNode(true)); 60 for (int i=0; i<m; ++i) 61 g.addEdge(s_nodes[random(a)], t_nodes[random(b)]); 62 } 63 64 } //namespace hugo
Note: See TracChangeset
for help on using the changeset viewer.