字符串模式匹配KMP算法.ppt

字符串模式匹配KMP算法.ppt

ID:48192213

大小:292.00 KB

页数:11页

时间:2020-01-15

字符串模式匹配KMP算法.ppt_第1页
字符串模式匹配KMP算法.ppt_第2页
字符串模式匹配KMP算法.ppt_第3页
字符串模式匹配KMP算法.ppt_第4页
字符串模式匹配KMP算法.ppt_第5页
资源描述:

《字符串模式匹配KMP算法.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、KMP字符串模式匹配算法简单匹配算法简单匹配算法intIndex_BF(charS[],charT[],intpos){/*若串S中从第pos(S的下标0≤pos

2、-1;//串S中(第pos个字符起)不存在和串T相同的子串}还是相同的例子,在S=”abcabcabdabba”中查找T=”abcabd”,当第一次搜索到S[5]和T[5]不等后,S下标不是回溯到1,T下标也不是回溯到开始,而是根据T中T[5]==’d’的模式函数值(next[5]=2,为什么?后面讲),直接比较S[5]和T[2]是否相等,因为相等,S和T的下标同时增加;因为又相等,S和T的下标又同时增加。。。最终在S中找到了T。如图:为什么T[5]==’d’的模式函数值等于2(next[5]=2),其实这个2表示T[5]==’d’的前面有2个字符和开始的两个字符相同,且T

3、[5]==’d’不等于开始的两个字符之后的第三个字符(T[2]=’c’).如图:也就是说,如果开始的两个字符之后的第三个字符也为’d’,那么,尽管T[5]==’d’的前面有2个字符和开始的两个字符相同,T[5]==’d’的模式函数值也不为2,而是为0。前面我说:在S=”abcabcabdabba”中查找T=”abcabd”,如果使用KMP匹配算法,当第一次搜索到S[5]和T[5]不等后,S下标不是回溯到1,T下标也不是回溯到开始,而是根据T中T[5]==’d’的模式函数值,直接比较S[5]和T[2]是否相等。。。为什么可以这样?刚才我又说:“(next[5]=2),其实这个

4、2表示T[5]==’d’的前面有2个字符和开始的两个字符相同”。请看图:因为,S[4]==T[4],S[3]==T[3],根据next[5]=2,有T[3]==T[0],T[4]==T[1],所以S[3]==T[0],S[4]==T[1](两对相当于间接比较过了),因此,接下来比较S[5]和T[2]是否相等。。。那S[1]和T[0],S[2]和T[0]之间又是怎么跳过,可以不比较呢?因为S[0]=T[0],S[1]=T[1],S[2]=T[2],而T[0]!=T[1],T[1]!=T[2],==>S[0]!=S[1],S[1]!=S[2],所以S[1]!=T[0],S[2]

5、!=T[0].还是从理论上间接比较了。S假设S不变,在S中搜索T=“abaabd”。这种情况,当比较到S[2]和T[2]时,发现不等,就去看next[2]的值,next[2]=-1,意思是S[2]已经和T[0]间接比较过了,不相等,接下来去比较S[3]和T[0]吧。假设S不变,在S中搜索T=“abbabd”。这种情况当比较到S[2]和T[2]时,发现不等,就去看next[2]的值,next[2]=0,意思是S[2]已经和T[2]比较过了,不相等,接下来去比较S[2]和T[0]吧。假设S=”abaabcabdabba”在S中搜索T=“abaabd”。这种情况当比较到S[5]和

6、T[5]时,发现不等,就去看next[5]的值,next[5]=2,意思是前面的比较过了,其中,S[5]的前面有两个字符和T的开始两个相等,接下来去比较S[5]和T[2]吧。三.怎么求串的模式值next[n]定义:(1)next[0]=-1意义:任何串的第一个字符的模式值规定为-1。(2)next[j]=-1意义:模式串T中下标为j的字符,如果与首字符相同,且j的前面的1—k个字符与开头的1—k个字符不等(或者相等但T[k]==T[j])(1≤k

7、字符,如果j的前面k个字符与开头的k个字符相等,且T[j]!=T[k](1≤k

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。