- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
四、模式匹配与KMP算法 模式匹配 在一个源串中搜索模式串的出现位置 四、模式匹配与KMP算法 朴素模式匹配算法 四、模式匹配与KMP算法 KMP算法 问题的提出——一个极端的例子 四、模式匹配与KMP算法 KMP算法 算法思想——nextval向量 四、模式匹配与KMP算法 KMP算法 算法思想——nextval向量 四、模式匹配与KMP算法 KMP算法 nextval向量的定义 对模式串T[0…n-1],定义向量nextval[0…n-1]如下:nextval[i]表示:当T[i]匹配失败时,下一次必要的匹配比较是用T[nextval[i]]与源串的当前字符进行比较;若模式串已不可能与源串的当前位置形成匹配,则记nextval[i]为一个特殊值,如-1。 四、模式匹配与KMP算法 KMP算法 nextval向量举例 四、模式匹配与KMP算法 KMP算法 在nextval向量指导下进行模式匹配 在源串和模式串上分别设立扫描指针i和j,从串首开始; 对源串和模式串的当前字符进行比较,直到源串或模式串扫描完毕: 若相等,则两个扫描指针同步前进; 否则,模式串扫描指针前移到nextval向量指示的位置,若nextval[i]为预定特殊值,则源串扫描指针前进,模式串扫描指针回到串首; 若模式串扫描完毕,则匹配成功,否则匹配失败。 四、模式匹配与KMP算法 KMP算法 nextval向量的计算 nextval向量的性质 最大相同首真子串与尾真子串 sj-i~sj-1=t0~ti-1(ti之前已经匹配成功) sj≠ti(ti匹配失败) t0~tk-1=ti-k~ti-1(根据模式串可以确定的可匹配部分) 不存在更大的满足条件3和5的k值(以保证匹配的必要性) ti≠tk(若ti=tk,则不须比较即可推知:sj≠tk) 四、模式匹配与KMP算法 KMP算法 最大相同首真子串与尾真子串的长度的计算 将T[0…i-1]的最大相同首真子串与尾真子串的长度,记为Ki 设已知Ki-1,求Ki: 令k从Ki-1开始; 若k=-1(特殊值),则Ki=0; 若t[k]=t[i-1],则Ki=k+1; 否则,将k前推至nextval[k],重复2; 四、模式匹配与KMP算法 KMP算法 nextval向量的计算 计算nextval[i]: 先计算T[0…i-1]的最大相同首真子串与尾真子串的长度Ki; 如果T[i]≠T[Ki],则nextval[i]=Ki,否则nextval[i]=nextval[Ki] * * 4.1 串及其运算 是由零个或多个字符组成的有限序列,一般记为 s=“a1a2…an”(n?0) 其中,s是串名,用单引号(也可以是用双引号括起来的) 括起来的字符序列是串的值。ai可以是字母、数字或其他字符;串中字符的个数n成为串的长度。 第四章 串 子串:串中任意个连续的字符组成的子序列。 主串:包含子串的串相应地称为主串。 位置:字符在序列中的序号。子串在主串中的位置则以子 串的第一个字符在主串中的位置来表示。 相等:两个串的长度相等,并且对应位置的字符都相等。 注意区分空串与空格串的区别。 串的逻辑结构和线性表的区别: 1. 串的数据对象约束为字符集。 2. 线性表的基本操作大多以“单个元素”为操作对象,而 串的基本操作通常以“串的整体”作为操作对象。 对于串可以定义以下运算: 1. 置串为一个空串; 2. 判断一个串是否为空串 3. 求一个串的长度; 4. 将两个串拼接在一起构成一个新串; 5. 在一个串中,求从串的第i个字符开始连续j个字符所构成的子串; 6. 如果串S2是S1的子串,则可求串S2在串S1中第一次出现的位置。 1. 定长顺序表示 #define MAXNUM 1000 /* 串允许的最大字符个数 */ struct SeqString /* 顺序串的类型 */ { char c[MAXNUM]; int n; }SeqString, *PSeqString; 4.2串的存储表示 PSeqString subStr_seq(PSeqString s,int i,int j) /* 求从s所指的顺序串中第i(i0)个字符开始连续j个字符所构成的子串 */ { PSeqString s1; int k,m; s1 = createNullStr_seq( ); if (s1==NULL) return NULL; if ( i0 i=s-n j0 ) { if ( s-n i+j-1 ) j = s-n -i+1; for (k=0;kj;k++)
您可能关注的文档
- 北方民族大学刑法学(刑法学分论)课件 破坏社 会主义市场经济秩序罪.ppt
- 北方民族大学刑法学(刑法学分论)课件 侵犯公民人身权利罪.ppt
- 北方民族大学刑法学(刑法学分论)课件 贪污贿赂罪.ppt
- 北方民族大学刑法学(刑法学分论)课件 危害国 家安全罪.ppt
- 北方民族大学刑法学(刑法学总论)课件 刑法论(二).ppt
- 北方民族大学刑法学(刑法学总论)课件 刑法论(三).ppt
- 北方民族大学刑法学(刑法学总论)课件 刑法论(一).ppt
- 北方民族大学刑事诉讼法学课件第八章 刑事起诉程序.ppt
- 北方民族大学刑事诉讼法学课件第二章 司法机关及诉讼参与人.ppt
- 北方民族大学刑事诉讼法学课件第九章 刑事辩护程序.ppt
- 六年级数学下册教学课件《解比例》.pptx
- 8.21.5 鸟类的生殖与发育(课件)八年级生物下册课件(苏教版).pptx
- 钠离子电池项目智能制造方案(范文参考).docx
- 2023-2024学年吉林省吉林市舒兰市七年级(上)期末语文试卷.docx
- 2024年吉林省吉林市丰满区亚桥实验学校中考数学三模试卷.docx
- 2023-2024学年吉林省辽源市东辽县七年级(上)期末英语试卷.docx
- 2023-2024学年吉林四平九年级数学第一学期期末水平检测试卷.docx
- 2023-2024学年吉林市蛟河市三校联考九年级(上)期末英语试卷.docx
- 2023-2024学年吉林松原九年级英语上册考场实战试卷.docx
- 电解液新材料项目智能制造方案.docx
最近下载
- 临床社会工作:优势视角模式形考任务三.docx VIP
- 《人类学概论》马工程 电子课件 第十章 人类学的应用.pptx
- 机车运用管理讲解.ppt
- 测度论讲义习题答案--严加安.pdf VIP
- COMMAND MODERN OPERATION 用户手册中文版.pdf VIP
- Biostar映泰B550GTQ 5.0 AB55A-M4T_(EN+KR+TC)_230620说明书用户手册.pdf
- 2023年喀什大学公共课《马克思主义基本原理概论》期末试卷A(有答案).docx VIP
- 天津中医药大学2022-2023学年第1学期《生物化学》期末试卷(B卷)附参考答案.docx
- Biostar映泰B550MH 6.1 AA52A-M4S & AB55A-M4S_CN (Ver6.1)_230619说明书用户手册.pdf
- 2023年喀什大学公共课《马克思主义基本原理概论》期末试卷B(有答案).docx VIP
文档评论(0)