首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

求教BM算法解决方案

2012-02-06 
求教BM算法求教:BM算法。具体疑问如下:首先谈谈我的理解:假定模式为P,文本为T,从左至右已经匹配了P的一个子

求教BM算法
求教:BM算法。
  具体疑问如下:
  首先谈谈我的理解:
  假定模式为P,文本为T,从左至右已经匹配了P的一个子串,假设为A,然后发现一个字符不匹配,为了利用已经匹配的信息,我们把A作为一个整体来考虑。为了重新匹配,需要把P右移。但是具体怎么右移,我不是很理解。请高手指点。麻烦讲得详细点,因为我很笨的。谢谢了。

[解决办法]
http://www.yuanma.org/data/2007/0604/article_2650.htm
[解决办法]
是在说kmp算法吧。。。
[解决办法]
这属于好后缀规则(good suffix rule);

就是在P中找一个子串B',使得B'与A的一个前缀B匹配;
假设 B=xc,B'=x'c';其中x,x'是单个字符;c,c'是字符串
匹配规则就是 c==c',x!=x';



[解决办法]
仔细看了下,发现之前说的不准确;

假设:
已匹配的字符串为A=p[i+1...i+n];
不匹配的字符为t[j+i]!=p[i]=c;

那么首先在p中查找是否有存在有子串p[k...k+n],其中p[k]!=c,p[k+1...k+n]= p[i+1...n]=A; 且k>i;

如果存在这样的子串,右移P使得p[k]与t[j+i]对齐;

如果不存在这样的子串,那么在P中查找p前缀与A的后缀相同的最大的一个,
即最大的k,使得p[1...k]=A[n-k+1...n];
右移P使得p[1]与t[j+i+n-k+1]对齐;



[解决办法]
一个很好的网址:
http://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm

热点排行