- 1、本文档共140页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
串、数组和广义表;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;4.1串;Brute-Force算法的思想是:从主串S=”s0s1…sn-1”的第pos个字符开始与模式串T=”t0t1…tm-1”的第一个字符比较,如果相等则继续逐个比较后续字符;否则从主串的下一个字符开始重新与模式串T的第一个字符比较,依次类推。如果在主串S中存在与模式串T相等的连续字符序列,则匹配成功,函数返回模式串T中第一个字符在主串S中的位置;否则,函数返回-1表示匹配失败。;4.1串;4.1串;4.1.4KMP算法
KMP算法是由D.E.Knuth、J.H.Morris、V.R.Pratt共同提出的,因此被称为KMP算法(Knuth-Morris-Pratt算法)。KMP算法在Brute-Force算法的基础上有较大改进,可在O(n+m)时间数量级上完成串的模式匹配,主要是消除了主串指针的回退,使算法效率有了很大程度的提高。
1.KMP算法思想
KMP算法的基本思想是:在每一趟匹配过程中出现字符不等时,不需要回退主串的指针,而是利用已经得到前面“部分匹配”的结果,将模式串向右滑动若干个字符后,继续与主串中的当前字符进行比较。;到底向右滑动多少个字符呢?我们先来看一个例子。例如,假设主串S=”abaababaddecab”,子串T=”abad”。KMP算法匹配过程如图所示。KMP算法匹配过程如图所示。;从图中可以看出,KMP算法的匹配次数由原来的6次减少为4次。在第一次匹配的过程中,当i=3、j=3,主串中的字符与子串中的字符不相等,Brute-Force算法从i=1、j=0开始比较。而这种将主串的指针回退的比较是没有必要的,在第一次比较遇到主串与子串中的字符不相等时,有S0=T0=’a’,S1=T1=’b’,S2=T2=’a’,S3≠T3。因为S1=T1且T0≠T1,所以S1≠T0,S1与T0不必比较。又因为S2=T0且T0=T2,有S2=T0,所以从S3与T1开始比较。
。;假设主串S=”s0s1…sn-1”,T=”t0t1…tm-1”。在模式匹配过程中,如果出现字符不匹配的情况,即当Si≠Tj(0≤in,0≤jm)时,有
”si-jsi-j+1…si-1”=”t0t1…tj-1”
??设子串即模式串存在可重叠的真子串,即
”t0t1…tk-1”=”tj-ktj-k+1…tj-1”
也就是说,子串中存在从t0开始到tk-1与从tj-k到tj-1的重叠子串。根据上面两个等式,可以得出:
”si-ksi-k+1…si-1”=”t0t1…tk-1”
如图6.10所示。;如果令next[j]=k,则next[j]表示当模式串中的第j个字符与主串中的对应的字符不相等时,在模式串中需要重新与主串中与该字符进行比较的字符的位置。模式串中的next函数定义如下:;利用next函数值的一个模式匹配例子如图所示。;利用模式串T的next函数值求T在主串S中的第pos个字符之后的位置的KMP算法描述如下。
intKMP_Index(SeqStringS,intpos,SeqStringT,intnext[])
{
inti,j;
i=pos-1;
j=0;
while(iS.lengthjT.length)
{
if(j==-1||S.str[i]==T.str[j])/*如果j=-1或当前字符相等,则继续比较后面的字符*/
{
i++;
j++;
}
else /*如果当前字符不相等,则将模式串向右移动*/
j=next[j]; /*数组next保存next函数值*/
}
if(j=T.length) /*匹配成功,返回子串在主串中的位置*/
returni-T.l
您可能关注的文档
- 数据恢复实用技术课件:数据恢复入门知识.pptx
- 数据恢复实用技术课件:修复常见文件.pptx
- 数据结构(第2版)(C语言实现)课件:排序.pptx
- 数据结构(第2版)(C语言实现)课件:树和二叉树.pptx
- 数据结构(第2版)(C语言实现)课件:线性表.pptx
- 数据结构(第2版)(C语言实现)课件:栈和队列.pptx
- 数据结构(第2版)(C语言实现)绪论.pptx
- 人教版九年级化学下册全套新测试卷(配2025年春改版教材).pdf
- 记叙文阅读 1 分析标题的含义与作用(课件)小升初语文 2024-2025学年第二学期 (统编版).pptx
- 五年级语文下册 第4单元基础复习(知识梳理+检测)教师版+学生版 2024-2025学年 统编版.docx
- 云南省昭通市第一中学等三校2025届高三下学期2月高考备考实用性联考卷(六) 数学 PDF版含解析 .pdf
- 云南省昭通市第一中学等三校2025届高三下学期2月高考备考实用性联考卷(六) 语文 PDF版含解析 .pdf
- 河南省漯河市20242025学年高一上学期期末考试 政治 含答案.docx
- 四川省内江市2024-2025学年高一上学期期末检测试题 政治 含答案.docx
- 河南省许昌市2024-2025学年高二上学期1月期末考试 政治 含答案.docx
- 2024年安全生产月宣传安全教育--简版.pptx
- 关于安徽省安全生产条例解读.pptx
- 安全管理——2024年安全月+“人人讲安全个个会应急—畅通生命通道”主题宣贯课件-重大事故隐患项判定标准.pptx
- 《烹饪实用英语(第四版)》教学课件.pptx
- 《数智化技术应用与创新》教学课件.pptx
最近下载
- JGJ276-2012建筑施工起重吊装安全技术规范.docx VIP
- 15K502供热计量系统设计与安装(4.43MB)420bd347fab8abf7.pdf VIP
- 基于单片机的多路温度测控系统设计毕业论文.docx
- 四级人力资源:人力资源规划.ppt VIP
- 2024年高三《不做45青年》主题班会PPT课件.pptx
- 上海市六年级(上)数学同步讲义 第15讲 比例的应用培优(学生版).doc VIP
- 2024年南通科技职业学院单招职业技能测试题库及答案(历年真题).docx VIP
- 上海市六年级(上)数学同步讲义 第14讲(培优)比例及其性质(解析版).doc VIP
- 家族办公室商业计划书.docx VIP
- 服务方案及服务承诺.pdf VIP
文档评论(0)