- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 利用next特征向量进行匹配处理 若设若在进行某一趟匹配比较时在模式 P 的第 j 位失配: 如果 j 0,那么在下一趟比较时模式串 P的起始比较位置是 pnext(j),目标串 T 的指针不回溯,仍指向上一趟失配的字符; 如果 j = 0,则目标串指针 T 进一,模式串指针 P 回到 p0,继续进行下一趟匹配比较。 * 运用KMP算法的匹配过程 第1趟 目标 a c a b a a b a a b c a c a a b c 模式 a b a a b c a c ? j=1 ? next(1) = 0,下次p0 第2趟 目标 a c a b a a b a a b c a c a a b c 模式 a b a a b c a c ? j=0 ? 下次p0, 目标指针进 1 第3趟 目标 a c a b a a b a a b c a c a a b c 模式 a b a a b c a c ? j=5 ? next(5) = 2, 下次p2 第4趟 目标 a c a b a a b a a b c a c a a b c 模式 (a b) a a b c a c ? * 用KMP算法实现的快速匹配算法 int AString::fastFind(AString pat, int k, int next[]) const { //从 k 开始寻找 pat 在 this 串中匹配的位置。若找 //到,函数返回 pat 在 this 串中开始位置,否则函 //数返回-1。数组next[ ] 存放 pat 的next[j] 值。 int posP = 0, posT = k; //两个串的扫描指针 int lengthP = pat.curLength; //模式串长度 int lengthT = curLength; //目标串长度 while (posP lengthP posT lengthT) if (posP == -1 || pat.ch[posP] == ch[posT]) { posP++; posT++; } //对应字符匹配 * else posP = next[posP]; //求pat下趟比较位置 if (posP lengthP) return -1; //匹配失败 else return posT-lengthP; //匹配成功 }; 此算法的时间复杂度取决于 while 循环。由于是无回溯的算法,执行循环时,目标串字符比较有进无退,要么执行 posT 和 posP 进 1,要么查找next[ ] 数组进行模式位置的右移,然后继续向后比较。字符的比较次数最多为 O(lengthT),不超过目标的长度。 * next特征向量的计算 设模式 P = p0 p1 p2 …pm-1由 m 个字符组成,而next特征向量为next = n0 n1 n2 … nm-1,表示了模式的字符分布特征。 next特征向量从0, 1, 2, …, m-1逐项递推计算: 当 j = 0时,n0 = -1。设 j 0 时 nj-1 = k: 当 k = -1或 j 0且 pj-1 = pk,则 nj = k+1。 当 pj-1 ? pk 且 k ? -1,令 k = nk,并让?循环直到条件不满足。 当 pj-1 ? pk 且 k = -1,则 nj = 0。 * 以前面的例子说明: j 0 1 2 3 4 5 6 7 P a b a a b c a c next [j] -1 0 0 1 1 2 0 1 j=4 k=1 p3?p1 k=nk=0 p3=p0 n4= =k+1 =1 j=3 k=0 n3= =k+1 =1 j=2 k=0 p1?p0 k=nk= =-1 n2= =k+1 =0 j=1 k=-1 n1= =k+1 =0 j=0 n0=-1 j=5 k=1 p4=p1 n5= =k+1 =2 j=6 k=2 p5?p2 k=nk=0 p5?p
您可能关注的文档
最近下载
- 学堂在线 海上求生与救生 章节测试答案.docx VIP
- 智能无人船在水下地形测量中的应用.pptx VIP
- 超星尔雅2018《形象管理》章节测试答案满分答案.pdf VIP
- 学堂在线 生活英语读写 期末考试复习题答案.docx VIP
- 某沿海城市低空产业赋能城市管理可行性研究报告-简版v1.0.pdf
- 中国石油大学远程教育,压裂井返排优化设计研究.doc VIP
- 学堂在线 战场侦察监视技术与装备 章节测试答案.docx VIP
- 学堂在线 工程伦理2.0 章节测试答案.docx VIP
- 2024年四川省雅安市中考数学试卷(含答案).doc VIP
- 微电子本科毕业论文题目(热门选题100个)最新.pdf VIP
文档评论(0)