5 #include<lemon/smart_graph.h>
6 #include"bench_tools.h"
11 inline int numOfOnes(int n,int dim)
14 for(int i=0;i<dim;i++) {
21 inline int numOfZeros(int n,int dim)
24 for(int i=0;i<dim;i++) {
32 void bfsStlQueue(Graph &G,typename Graph::Node source)
34 GRAPH_TYPEDEF_FACTORY(Graph);
38 typename Graph::template NodeMap<bool> visited(G,false);
40 queue<typename Graph::Node> Q;
48 for(OutEdgeIt e(G,n);e!=INVALID;++e)
49 if(!visited[m=G.head(e)]) {
57 void bfsOwnQueue(Graph &G,typename Graph::Node source)
59 GRAPH_TYPEDEF_FACTORY(Graph);
63 typename Graph::template NodeMap<bool> visited(G,false);
66 vector<typename Graph::Node> Q(N);
72 visited.set(source,true);
76 for(OutEdgeIt e(G,n);e!=INVALID;++e)
77 if(!visited[m=G.head(e)]) {
85 void iteratorBench(Graph &G)
87 GRAPH_TYPEDEF_FACTORY(Graph);
91 for(NodeIt n(G);n!=INVALID;++n)
92 for(OutEdgeIt e(G,n);e!=INVALID;++e)
96 int main(int argc, char *argv[])
98 typedef SmartGraph Graph;
100 ///\bug GRAPH_TYPEDEF_FACTORY(Graph);
101 GRAPH_TYPEDEF_FACTORY_NOTYPENAME(Graph);
108 cout << "Usage: " << argv[0] << " dim mul\n";
112 int dim=atoi(argv[1]);
113 int mul=atoi(argv[2]);
115 // cout << "Creating Hipercube ("<< (1<<dim) << " nodes, "
116 // << dim*(1<<dim) << " edges):";
120 addBiDirHiperCube(G,dim,nodes);
122 PrintTime("GENGRAPH",T);
126 for(int i=0;i<mul;i++)
127 bfsStlQueue(G,nodes[0]);
129 PrintTime("BFS-STL",T);
132 for(int i=0;i<mul;i++)
133 bfsOwnQueue(G,nodes[0]);
135 PrintTime("BFS-OWN",T);
138 for(int i=0;i<mul;i++)
141 PrintTime("ITERATE",T);