Several changes. \n If new map is added to mapstorage it emits signal with the name of the new map. This was important, because from now on not only tha mapwin should be updated. \n Furthermore algobox gets a pointer to mapstorage instead of only the mapnames from it. This is important because without it it would be complicated to pass all of the required maps to algobox.
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_TYPEDEFS(typename 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.target(e)]) {
57 void bfsOwnQueue(Graph &G,typename Graph::Node source)
59 GRAPH_TYPEDEFS(typename 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.target(e)]) {
85 void iteratorBench(Graph &G)
87 GRAPH_TYPEDEFS(typename 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 GRAPH_TYPEDEFS(Graph);
107 cout << "Usage: " << argv[0] << " dim mul\n";
111 int dim=atoi(argv[1]);
112 int mul=atoi(argv[2]);
114 // cout << "Creating Hipercube ("<< (1<<dim) << " nodes, "
115 // << dim*(1<<dim) << " edges):";
119 addBiDirHyperCube(G,dim,nodes);
121 PrintTime("GENGRAPH",T);
125 for(int i=0;i<mul;i++)
126 bfsStlQueue(G,nodes[0]);
128 PrintTime("BFS-STL",T);
131 for(int i=0;i<mul;i++)
132 bfsOwnQueue(G,nodes[0]);
134 PrintTime("BFS-OWN",T);
137 for(int i=0;i<mul;i++)
140 PrintTime("ITERATE",T);