1 / 25
文档名称:

KMP算法.ppt

格式:ppt   大小:196KB   页数:25页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

KMP算法.ppt

上传人:慢慢老师 2022/3/19 文件大小:196 KB

下载得到文件列表

KMP算法.ppt

文档介绍

文档介绍:KMP算法
有动画,建议下载后观看
有这样一个字符串:
BBC ABCDAB ABCDABCDABDE
我想知道,里面是否包含另一个字符串
ABCDABD
BBC ABCDAB ABCDABCDABDE
ABCDKMP算法
有动画,建议下载后观看
有这样一个字符串:
BBC ABCDAB ABCDABCDABDE
我想知道,里面是否包含另一个字符串
ABCDABD
BBC ABCDAB ABCDABCDABDE
ABCDABD
首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。
BBC ABCDAB ABCDABCDABDE
ABCDABD
首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。
因为B与A不匹配,搜索词再往后移。
BBC ABCDAB ABCDABCDABDE
ABCDABD
就这样,直到字符串有一个字符,与搜索词的第一个字符相同为止。
接着比较字符串和搜索词的下一个字符.
BBC ABCDAB ABCDABCDABDE
ABCDABD
还是相同。
BBC ABCDAB ABCDABCDABDE
ABCDABD
直到字符串有一个字符,与搜索词对应的字符不相同为止。
BBC ABCDAB ABCDABCDABDE
ABCDABD
这时,最自然的反应是,将搜索词整个后移一位,再从头逐个比较。
BBC ABCDAB ABCDABCDABDE
ABCDABD
这样做虽然可行,但是效率很差,因为你要把"搜索位置"移到已经比较过的位置,重比一遍。
那么我们想什
么办法来解决这一问题呢?
BBC ABCDAB ABCDABCDABDE
ABCDABD
一个基本事实是,当空格与D不匹配时,你其实知道前面六个字符是"ABCDAB"。KMP算法的想法是,设法利用这个已知信息,不要把"搜索位置"移回已经比较过的位置,继续把它向后移,这样就提高了效率。
怎么利用这个已知信息呢?
可以针对搜索词,算出一张《NEXT值表》,即失败指针。
这张表是如何产生的,等下再介绍,这里只要会用就可以了。
已知空格与D不匹配时,前面六个字符"ABCDAB"是匹配的。查表可知,字符D对应的“NEXT值"为2,因此按照下面的公式算出向后移动的位数:
移动位数 = 已匹配的字符数 - 对应的NEXT值
BBC ABCDAB ABCDABCDABDE
ABCDABD
因为 6 - 2 等于4,所以将搜索词向后移动4位。
BBC ABCDAB ABCDABCDABDE
ABCDABD
因为空格与C不匹配,搜索词还要继续往后移。这时,已匹配的字符数为2("AB"),C对应的“NEXT值"为0。所以,移动位数 = 2 - 0,结果为 2,于是将搜索词向后移2位。
BBC ABCDAB ABCDABCDABDE
ABCDABD
因为空格与A不匹配,0-(-1)=1,所以继续后移一位。
BBC ABCDAB ABCDABCDABDE
ABCDABD
逐位比较,直到发现C与D不匹配。于是,移动位数 = 6 - 2,继续将搜索词向后移动4位。
BBC ABCDAB ABCDABCDABDE
ABCDABD
逐位比较,直到搜索词的最后一位,发现完全匹配,于是搜索完成。如果还要继续搜索(即找出全部匹配),移动位数 = 7 - 0,再将搜索词向后移动7位,这里就不再重复了。
下面介绍《NEXT值表》是如何产生的。
第一位的next值必定为-1;
计算第n个字符的NEXT值:
-1个字符对应NEXT值,设为a;
-1,将第n-1个字符与第a个字符比较
,第n个字符对应的NEXT值为a+1
,令a等于第a个字符的NEXT值,执行第第2步。
-1,若为-1,则第n个字符next值为0
KMP代码实现
作NEXT值表:
//传入模式串与NEXT的空数组
//循环给每一个字符的next赋值
KMP部分:
END

最近更新

【详解】河南省中原十校2017届高三第六次联考.. 9页

【解析】宁夏育才中学学益校区2016-2017学年高.. 27页

15争吵市公开课金奖市赛课一等奖课件 28页

【化学】福建省泉州五中2015届高三下学期5月模.. 14页

2025年呼和浩特货运从业资格证考试500题 24页

2025年吉林市下载货运从业资格证模拟考试题 25页

2025年合肥货运资格证考试题库答案 24页

2025年合肥货运从业资格证模拟考试题库答案 25页

2025年合肥年货运从业资格证考试试题 25页

2018高三语文4月联考试卷 30页

2025年博尔塔拉b2货运资格证多少道题 25页

2025年南通货运从业资格模拟考试题 24页

2025年南昌货运从业资格证考试技巧口诀 24页

2025年南昌货车从业资格证题目库 24页

2025年南宁货运从业资格证模拟考试题及答案解.. 25页

2025年南京货运从业资格证题目答案最新 25页

2017届高三语文二模试卷(济宁市有答案) 17页

2025年十堰货运从业资格证考试内容 24页

2025年北京货运从业资格证新政 24页

学生评教表格样表格 1页

农行两个办法心得体会 7页

《建筑碳排放计算标准》全文 14页

锅炉水处理水质化验 5页

混凝土外加剂标准规范:JC/T 477-2005喷射混.. 7页

浅谈会计的基本职能毕业论文 6页

《地藏菩萨现代感应录.》 83页

《GB_7718-2011_食品安全国家标准_预包装食品.. 11页

海洋里的鱼-课件(PPT·精·选) 43页