摘要:
BPD算法是对角式位并行算法,我是真没搞懂这个算法的原理是什么。但是根据伪代码我写出来了BPD算法的c++版实现。当容错率在0.1以上的时候,用BPD算法的效率要更高一些。 1 void BPD(char *p, char *t,int k) 2 { 3 int Pstr_len,Tstr_len,j,i,pos,D,x; 4 int B[128],BB[128]; 5 Pstr_len = strlen(p); 6 Tstr_len = strlen(t); 7 8 //Preprocessing 9 for(j=0;j<128;j++)...
阅读全文
posted @ 2012-07-24 22:52
unhealthy
阅读(366)
推荐(0)
编辑
摘要:
今天有必要写篇日志来记录一下暑假c++大作业的情况。 我还是笔到临头就无语,本来挺有想法要写的,现在又不知道说啥....写写流水账吧。 首先是使劲的看算法书,华亮师兄扔了本《柔性字符串匹配》给我看,其实我没看完,我只看了单模式串匹配和近似匹配部分,多模式串、扩展模式串、正则表达式这三章我都还没看...以后补上... 把看过的算法都用c++自己实现了一遍,然后选了一个BPR近似匹配算法来试试手。发现可以用,近似匹配算法部分的框架算是有了。 接着想怎么来解决词库的问题,看了好多篇论文,谋篇论文里提到一个n-gram倒排索引的搜索方法,我就试着来建一个。利用txt文本文件的储存方式,我把...
阅读全文
posted @ 2012-07-24 12:25
unhealthy
阅读(231)
推荐(0)
编辑
摘要:
近似匹配字符串的BPR算法,其实shift-and算法就是BPR算法的一种特例,就是精确匹配版的BPR。 BPR也是用到位并行技术。 原理嘛我还是没有很彻底的搞清楚,但是我把代码给写出来了..... 我的BPR算法C++实现: 1 int BPR(const char *p, char *t, int k) 2 { 3 int Pstr_len,Tstr_len,i,pos; 4 int R[128],B[256],pR,nR; 5 Pstr_len = strlen(p); 6 Tstr_len = strlen(t); 7 8 ...
阅读全文
posted @ 2012-07-24 11:36
unhealthy
阅读(641)
推荐(0)
编辑
摘要:
BNDM算法的搜索方法与BDM算法相同,但它使用了位并行来识别子串。 与原始的BDM相比,BNDM更简单,内存用量更少,具有更好的引用局部性,并且易于扩展到更复杂的模式串的情形。 在当前搜索窗口内,设已读入的字符串为u,BNDM算法维护一个集合,记录u在prv中的所有出现位置。同shift—and算法一样,该集合可以用一个位向量D来表示。如果子串pj...pj+|u|-1等于u,那么D的第m-j+1位是1,表示p的位置j是一个活动状态。 当读入一个新的文本字符σ时,要从D更新到D'。D‘的一个活动状态j对应于σu在模式串中的一个起始位置,也就是说: * u出现在模式串的位置j+1,..
阅读全文
posted @ 2012-07-24 11:27
unhealthy
阅读(584)
推荐(0)
编辑