|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Yuri Burger 2:5020/400 27 May 2003 09:34:19 To : All Subject : Hечеткое сравнение строк -------------------------------------------------------------------------------- Hello, All! // programmed by Burger J.A. (aka Kruger) #ifndef __FUZZYCOMPARE_H__ #define __FUZZYCOMPARE_H__ #include <minmax.h> namespace fuzzy { namespace { template<typename T> int compare(T fb,T fe,T sb,T se,int d,int maxD,int f,int best) { int of; int lf; int _f=f; T _fb=fb; T _sb=sb; int _d=d; while(true) { if(_d==maxD||_fb==fe||_sb==se||(_f+min(fe-_fb,se-_sb))<=best){break;} of=_f; if(*_fb==*_sb) { _f++; if(best<_f){best=_f;} } lf=compare(_fb,fe,_sb+1,se,_d+1,maxD,of,best); if(best<lf){best=lf;} lf=compare(_fb+1,fe,_sb,se,_d+1,maxD,of,best); if(best<lf){best=lf;} ++_fb; ++_sb; _d=0; } return best; } } template<typename T> double compare(const T& first,const T& second,int maxD=3) { unsigned int s1=first.size(); unsigned int s2=second.size(); return(static_cast<double>(compare(first.begin(),first.end(),second.begin(),sec ond.end(),0,maxD,0,0))/(max(s1,s2))); } } #endif With best regards, Yuri Burger aka J.O. Kruger. E-mail: jo_kruger@mail.ru --- ifmail v.2.15dev5 * Origin: Unknown (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/91381c3df710.html, оценка из 5, голосов 10
|