PairDistanceTest.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "Word.h"
00013 #include "RanlibCPP.h"
00014
00015
00016 #ifndef PAIR_DIST_TEST_H
00017 #define PAIR_DIST_TEST_H
00018
00019 #include "errormsgs.h"
00020 #include "SimilarityMeasures.h"
00021
00022 #include <strstream>
00023 #include <vector>
00024 #include <algorithm>
00025 #include <sstream>
00026
00028
00029
00030
00031
00032
00034
00036 class PairGenerator
00037 {
00038 public:
00040 virtual pair<Word,Word> getTruePair() = 0;
00042 virtual pair<Word,Word> getFalsePair() = 0;
00043 };
00044
00045
00046
00048 class RandomPairGenerator : public PairGenerator
00049 {
00050 public:
00052
00056 RandomPairGenerator(int N, int len ):
00057 nGens( N ),
00058 Len( len ) {}
00059
00061 pair<Word,Word> getTruePair(){
00062 pair <Word,Word> p;
00063 p.first = Word::randomWord( nGens,Len );
00064 p.second = Word::randomWord( nGens,Len );
00065
00066 return p;
00067 }
00068
00070
00075 pair<Word,Word> getFalsePair(){
00076 pair <Word,Word> p;
00077 p.first = Word::randomWord( nGens,Len );
00078 p.second = p.first;
00079
00080 return p;
00081
00082 }
00083 private:
00084 int nGens;
00085 int Len;
00086 };
00087
00089
00090
00091
00092
00093
00095
00097 class PairDistanceSimilarityTest
00098 {
00099 public:
00101 PairDistanceSimilarityTest( int n,PairGenerator* g, StringSimilarityMeasure* sm) :
00102 sampleSize( n ),
00103 measureDistr( n ),
00104 theGenerator( g ),
00105 theSimilarity( sm ){}
00106
00107 void estimateTrueDistribution();
00108 double testTruePair();
00109 double testFalsePair();
00110
00111 double testPair(const pair<Word,Word>& p);
00112
00113 private:
00114
00115 vector<double> measureDistr;
00116 StringSimilarityMeasure* theSimilarity;
00117
00118 int sampleSize;
00119 PairGenerator* theGenerator;
00120 };
00121
00122 #endif