test.c
上传用户:gzelex
上传日期:2007-01-07
资源大小:707k
文件大小:2k
开发平台:

MultiPlatform

  1. #include <math.h>
  2. #include <LEDA/graph.h>
  3. #include <LEDA/integer.h>
  4. #include <LEDA/rat_point.h>
  5. #include <LEDA/rat_segment.h>
  6. #include <LEDA/point.h>
  7. #include <LEDA/segment.h>
  8. extern int cmp_points_count;
  9. extern int exact_cmp_points_count;
  10. extern void sweep0(list<rat_segment>&,GRAPH<rat_point,rat_segment>&,bool=true);
  11. extern void sweep(const list<rat_segment>&, GRAPH<rat_point,rat_segment>&);
  12. extern void sweep(const list<segment>&, GRAPH<point,segment>&);
  13. extern void sweep1(const list<rat_segment>&, GRAPH<rat_point,rat_segment>&);
  14. extern void sweep1(const list<segment>&, GRAPH<point,segment>&);
  15. #define TEST_SWEEP(sweep,seglist,G,cmp_count,exact_cmp_count) {
  16. cmp_count = 0;
  17. exact_cmp_count = 0;
  18. cout << string("%-10s",STRINGIZE(sweep));
  19. cout << string("k = %2d ",k) << flush;
  20. float T = used_time();
  21. sweep(seglist,G);
  22. float t = used_time(T);
  23. cout << string("|V|= %4d ",G.number_of_nodes());
  24. cout << string("|E|= %4d ",G.number_of_edges());
  25. cout << string("time = %6.2f sec  ",t);
  26. cout << string("%.2f %%",100*float(exact_cmp_count)/cmp_count);
  27. newline; }
  28. main()
  29.   int N  = read_int("N  = ");
  30.   int k  = read_int("k  = ");
  31.   int l = 0;
  32.   rand_int.set_seed(1234567*N);
  33.   //for (; k <= 300; k+=10)
  34.   {
  35.     integer size = (1<<k)/2;
  36.     list<rat_segment> seglist;
  37.     list<segment> seglist1;
  38.     GRAPH<rat_point,rat_segment> G;
  39.     GRAPH<point,segment> G1;
  40.     for(int i=0; i < N; i++)
  41.     { integer x1 = integer::random(k)-size;
  42.       integer y1 = integer::random(k)-size;
  43.       integer w1 = 1;
  44.       integer x2 = integer::random(k)-size;
  45.       integer y2 = integer::random(k)-size;
  46.       integer w2 = 1;
  47.       rat_segment s(rat_point(x1,y1,w1),rat_point(x2,y2,w2));
  48.       seglist.append(s);
  49.       segment s1(point(x1,y1,w1),point(x2,y2,w2));
  50.       seglist1.append(s1);
  51.      }
  52.   
  53. TEST_SWEEP(sweep0,seglist, G, cmp_points_count,exact_cmp_points_count)
  54. TEST_SWEEP(sweep,seglist,G,rat_point::cmp_count,rat_point::exact_cmp_count)
  55. TEST_SWEEP(sweep,seglist1,G1,point::cmp_count,point::exact_cmp_count)
  56. TEST_SWEEP(sweep1,seglist,G,rat_point::cmp_count,rat_point::exact_cmp_count)
  57. TEST_SWEEP(sweep1,seglist1,G1,point::cmp_count,point::exact_cmp_count)
  58. point::use_filter = false;
  59. segment::use_filter = false;
  60. TEST_SWEEP(sweep1,seglist1,G1,point::cmp_count,point::exact_cmp_count)
  61. newline;
  62.    }
  63.   
  64.   return 0;
  65. }