00001 // bbq - Copyright (C) 2005, Axel Mosig, University of Leipzig. See 00002 // main.cpp for details. 00003 00004 #ifndef FOOTPRINT_DETECTOR_H 00005 #define FOOTPRINT_DETECTOR_H 00006 00007 #include <set> 00008 #include "bitsets.h" 00009 00010 00011 namespace bbq { 00012 00013 //typedef uint_bitset bit_set; 00014 //typedef uint64_bitset bit_set; 00015 typedef variable_bitset bit_set; 00016 00028 class footprint_detector 00029 { 00030 00031 public: 00032 00033 00034 private: 00035 00037 int k; 00038 00040 int K; 00041 00043 char** s; 00044 00046 char** T; 00047 00049 int* n; 00050 00052 int* N; 00053 00054 int *** p; 00055 int ** lambda; 00056 int * Lambda; 00057 bit_set ** C; 00058 int ** P; 00059 00060 int L; 00061 00064 int overall_best_length; 00065 00066 int* best_nu; 00067 00068 bit_set best_intersection; 00069 00070 00071 public: 00072 00073 footprint_detector(); 00074 00075 footprint_detector(int,int,char**,char**,int*,int*); 00076 00077 ~footprint_detector(); 00078 00079 void init_arrangement_cells(); 00080 00081 void compute_intersections(); 00082 00083 void get_occurences(int i, int j); 00084 00085 void run(int); 00086 00087 int get_result(); 00088 00089 int print_result(); 00090 00091 int intersection_cardinality(unsigned int); 00092 00093 bool increase(int*,int); 00094 00095 }; 00096 00097 } // end namespace bbq 00098 00099 00100 #endif