- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                Brute-Force简称为BF算法,亦称简单匹配算法,其基本思路是:             从目标串s=“s1s2…sn的第一个字符开始和模式串t=“t1t2…tm中的第一个字符比较,若相等,则继续逐个比较后续字符;否则从目标串s的第二个字符开始重新与模式串t的第一个字符进行比较。依次类推,若从模式串s的第i个字符开始,每个字符依次和目标串t中的对应字符相等,则匹配成功,该算法返回i;否则,匹配失败,函数返回0。 子串定位int Index( SString S, SString T, int pos) {      i= pos;  j = 1;      while( i=S[0]  j=T[0]){             if(S[i] == T[j]){ ++i;  ++j; }            else{ i = i-j+2;   j =1; }       }       if(jT[0]) return i-T[0];       else return 0; } 朴素模式匹配算法的时间复杂度     主串长n; 子串长m。可能匹配成功的位置(1 ~ n-m+1)。 ①最好的情况下,     第i个位置匹配成功,比较了(i-1+m)次,平均比较次数:     最好情况下算法的平均时间复杂度O(n+m)。 ②最坏的情况下,     第i个位置匹配成功,比较了(i*m)次,平均比较次数:     设nm,最坏情况下的平均时间复杂度为O(n*m)。 2. 模式匹配的改进算法-KMP算法          KMP算法是D.E.Knuth、J.H.Morris和V.R.Pratt共同提出的,简称KMP算法。该算法较BF算法有较大改进,主要是消除了主串指针的回溯,从而使算法效率有了某种程度的提高。 s1 s2 s3…si-j+1 si-j+2…si-2 si-1 si si+1              ‖       ‖       ‖    ‖   ≠              p1    p2 … pj-2 pj-1 pj pj+1                            ‖        ‖                            p1 …  pk-1 pk pk+1 如何求next函数值 1. next[1] = 0;表明主串从下一字符si+1起和模式串重新开始匹配。i = i+1; j = 1; 2. 设next[j] = k,则next[j+1] = ? ①若pk=pj,则有“p1…pk-1pk”=“pj-k+1…pj-1pj” ,如果在     j+1发生不匹配,说明next[j+1] = k+1 = next[j]+1。 ②若pk≠pj,可把求next值问题看成是一个模式匹配问     题,整个模式串既是主串,又是子串。    p1 p2…pj-k+1…pj-1 pj pj+1   next[j]=k          ‖     ‖  ≠          p1 …  pk-1 pk  pk+1   next[k]=k’             p1……  pk’ pk’+1  next[k’]=k”                                              p1… pk’’ pk’’+1 next[k’’’]=k’’’     j              1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 模式串     a  b  c  a  a  b  b  c  a  b   c   a   a   b   d   a   b    void get_next(SString T, int next[]) {      i= 1; next[1] = 0; j = 0;         while( iT[0]){           if(j==0 || T[i] == T[j]){                 ++i; ++j;                  next[i] = j;           }           else                 j = next[j];      } }                              next函数的改进  j              1  2  3  4  5  6  7  8  9  10 11 12 13 14 15 16 17 模式串    a  b  c  a  a  b  b  c  a   b   c   a   a   b   d   a   b  next[j]
                您可能关注的文档
最近下载
- HG/T 2431-2018- 水处理剂_阻垢缓蚀剂Ⅲ.pdf VIP
- 上海市青浦XX中学高三下学期期中考试历史试卷.docx VIP
- 关于进一步加强“安全生产基础台账”管理工作的通知.pdf VIP
- 2024-2025学年湖南机电职业技术学院单招《职业适应性测试》复习提分资料(培优)附答案详解.docx VIP
- 2025下半年浙江绍兴市公安局警务辅助人员招聘55人笔试备考题库及答案解析.docx VIP
- 山宇SY8000变频器说明书用户手册.pdf
- 贝加莱(B&R)PLC_CF卡烧写说明PVI.docx VIP
- 电子信息工程应届生工作简历模板PPT.pptx VIP
- 上海市进才中学2024-2025学年高三上英语9月月考(含答案).docx VIP
- 年处理2000吨桑叶提取车间布置设计常晓利.docx VIP
 原创力文档
原创力文档 
                         
                                    

文档评论(0)