算法:KMP算法

算法分析

  KMP算法是一种快速的模式匹配算法。KMP是三位大师:D.E.Knuth、J.H.Morris和V.R.Pratt同时发现的,所以取首字母组成KMP。

   少部分图片来自孤~影的原创文章。

   next函数的求解来自唐小喵的原创文章。(http://www.cnblogs.com/tangzhengyue/p/4315393.html)

  朴素的模式匹配算法,也就是我们都比较直观接收的思路是:

  

  从主串和模式串的第一个字符开始比较

  

  直到遇到两个不一样的。然后我们拿让模式串回到第一位再和主串的下一位比较,然后知道匹配成功。这种算法,一旦匹配失败,不管已经匹配了多少,直接忽略从头再来,即i,j都归为,再让i移向下一位,重新开始匹配。

  

  朴素算法没有任何问题,但是不高效。我们今天介绍的KMP算法,做到了使i不归位,让模式串移动。

  aaarticlea/png;base64,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" alt="" />(图A)

  比如匹配到i=3,j=3的时候失败,这时,我们不让i归位,我们让模式串往右边移动至下图位置。

  aaarticlea/png;base64,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" alt="" />(图B)

  aaarticlea/png;base64,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" alt="" />(图C)

  为什么要这样跳跃式的移动呢?我们来分析一下。

  在第一张图中,a和c匹配失败,在保证i不变的清空下,i是不是应该和j前面的a和b比比看呢?

  aaarticlea/png;base64,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" alt="" />

  很显然,a只能和模式串的第一位进行比较,因为他和b对齐的话,就要保证i=2上的b和j=1上的a一样,很显然这是不可能的。所以它只能和模式串的第一位比。

  在第二次失配时,见图B.。也是在保证i位置不变的情况下,只能让i=7和j前面的字符进行比较,如下图。

  aaarticlea/png;base64,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" alt="" />

  但是此时,它不需要直接和模式串的第一位进行比较了,因为我们发现,他和第二位b比较的时候,既可以保证i=6和j=1是适配的,所以它可以跳过模式串的第一位直接和第二位比较,恰巧都是b也是适配的。

  但是因为i=7之前和j=5之前,是适配成功的,也即是说j=6的a就是j=4的a,,见上图。

  所以其实我们是发现了一个规律,但是还很模糊,也就是说。

aaarticlea/png;base64,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" alt="" />

   如果失配之前的模式串中存在前缀和后缀一样的,比如上图中模式串的前缀和后缀都有a,就说明主串A不用再和模式串中的第一位进行比较,可以直接和第二位B进行比较。

aaarticlea/png;base64,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" alt="" />

  所以我们的我们现在的重心就是计算各个位置前的模式串的最长相同前后缀的长度。比如上面长度为1,我们就可以直接和第2为比,越过第一位。

我们建立数组next就是用来存储模式串中各个位置失配时需要移动到的位置(里面存储的实际上就是最长相同前后缀的长度。)

  (来自唐小喵)

    KMP的next数组求法是很不容易搞清楚的一部分,也是最重要的一部分。我这篇文章就以我自己的感悟来慢慢推导一下吧!保证你看完过后是知其然,也知其所以然。
  下面我们就来说说KMP的next数组求法。
    KMP的next数组简单来说,就是保证i永远不回退,只回退j来使得匹配效率有所提升。它用的方法就是利用strKey在失配的j为之前的成功匹配的子串的特征来寻找j应该回退的位置。而这个子串的特征就是前后缀的相同程度。
  所以next数组其实就是查找strKey中每一位前面的子串的前后缀有多少位匹配,从而决定j失配时应该回退到哪个位置。

  我知道上面那段废话很难懂,下面我们看一个彩图:

  这个图画的就是strKey这个要查找的关键字字符串。假设我们有一个空的next数组,我们的工作就是要在这个next数组中填值。
    下面我们用数学归纳法来解决这个填值的问题。
    这里我们借鉴数学归纳法的三个步骤(或者说是动态规划?):
      1、初始状态
      2、假设第j位以及第j位之前的我们都填完了
      3、推论第j+1位该怎么填

    初始状态我们稍后再说,我们这里直接假设第j位以及第j位之前的我们都填完了。也就是说,从上图来看,我们有如下已知条件:
      next[j] == k;
      next[k] == 绿色色块所在的索引;
      next[绿色色块所在的索引] == 黄色色块所在的索引;
    这里要做一个说明:图上的色块大小是一样的(没骗我?好吧,请忽略色块大小,色块只是代表数组中的一位)。

  我们来看下面一个图,可以得到更多的信息:

  

    1.由"next[j] == k;"这个条件,我们可以得到A1子串 == A2子串(根据next数组的定义,前后缀那个)。

    2.由"next[k] == 绿色色块所在的索引;"这个条件,我们可以得到B1子串 == B2子串。

    3.由"next[绿色色块所在的索引] == 黄色色块所在的索引;"这个条件,我们可以得到C1子串 == C2子串。

    4.由1和2(A1 == A2,B1 == B2)可以得到B1 == B2 == B3。

    5.由2和3(B1 == B2, C1 == C2)可以得到C1 == C2 == C3。

    6.B2 == B3可以得到C3 == C4 == C1 == C2

  上面这个就是很简单的几何数学,仔细看看都能看懂的。我这里用相同颜色的线段表示完全相同的子数组,方便观察。

  接下来,我们开始用上面得到的条件来推导如果第j+1位失配时,我们应该填写next[j+1]为多少?

    next[j+1]即是找strKey从0到j这个子串的最大前后缀:

    #:(#:在这里是个标记,后面会用)我们已知A1 == A2,那么A1和A2分别往后增加一个字符后是否还相等呢?我们得分情况讨论:

  (1)如果str[k] == str[j],很明显,我们的next[j+1]就直接等于k+1。

      用代码来写就是next[++j] = ++k;

  (2)如果str[k] != str[j],那么我们只能从已知的,除了A1,A2之外,最长的B1,B3这个前后缀来做文章了。

  那么B1和B3分别往后增加一个字符后是否还相等呢?

  由于next[k] == 绿色色块所在的索引,我们先让k = next[k],把k挪到绿色色块的位置,这样我们就可以递归调用"#:"标记处的逻辑了。

  由于j+1位之前的next数组我们都是假设已经求出来了的,因此,上面这个递归总会结束,从而得到next[j+1]的值。

  我们唯一欠缺的就是初始条件了:

  next[0] = -1,  k = -1, j = 0

  另外有个特殊情况是k为-1时,不能继续递归了,此时next[j+1]应该等于0,即把j回退到首位。

  即 next[j+1] = 0; 也可以写成next[++j] = ++k;

代码

#include <stdio.h>
#include <string.h>
#define N 100 int kmp(char * str,int slen,char * ptr,int plen,int * next)
{
int s_i=;
int p_i=;
while(s_i<slen && p_i<plen)
{ if(str[s_i]==ptr[p_i])
{
s_i++;p_i++;
}
else
{
if(p_i==)
s_i++;
else
p_i=next[p_i-]+;
} }
return ( p_i == plen ) ? ( s_i - plen ) : -;
} void cal_next(char *str,int *next,int len)
{
int j=;
int k=-; next[]=-;
while(j<len-)
{
if(k==-||str[j]==str[k]) //如果我们 k==-1,我们直接回到第一个字符
{
++j;++k;next[j]=k;
}
else
{
k=next[k];
}
}
} int main(int argc, char **argv)
{
char str[ N ] = {};
char ptr[ N ] = {};
int slen, plen;
int next[]; scanf( "%s%s", str,ptr);
plen = strlen(ptr);
slen=strlen(str);
cal_next( ptr, next, plen );
for(int i=;i<plen;i++)
printf("%d",next[i]);
printf("[%d]",kmp(str,slen,ptr,plen,next));
return ;
}

  

  

  

  

  

算法:KMP算法的更多相关文章

  1. 数据结构与算法--KMP算法查找子字符串

    数据结构与算法--KMP算法查找子字符串 部分内容和图片来自这三篇文章: 这篇文章.这篇文章.还有这篇他们写得非常棒.结合他们的解释和自己的理解,完成了本文. 上一节介绍了暴力法查找子字符串,同时也发 ...

  2. 经典算法 KMP算法详解

    内容: 1.问题引入 2.暴力求解方法 3.优化方法 4.KMP算法 1.问题引入 原始问题: 对于一个字符串 str (长度为N)和另一个字符串 match (长度为M),如果 match 是 st ...

  3. 笔记-算法-KMP算法

    笔记-算法-KMP算法 1.      KMP算法 KMP算法是一种改进的字符串匹配算法,KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的.具体实现就是实现一 ...

  4. 值得花费一周研究的算法 -- KMP算法(indexOf)

    KMP算法是由三个科学家(kmp分别是他们名字的首字母)创造出来的一种字符串匹配算法. 所解决的问题: 求文本字符串text内寻找第一次出现字符串s的下标,若未出现返回-1. 例如 text : &q ...

  5. [C++] [算法] KMP算法

    KMP串匹配算法是一个经典的算法. 传统BF算法是传统的字符串匹配算法.很好理解.叶实现.但时间复杂度太高. 本文将从字符串模式字符串被称为.为了匹配字符串被称为主弦. KMP配时能够少移动从串的位置 ...

  6. 程序员必会算法-KMP算法

    KMP算法是一种优秀的字符串匹配算法,字符串匹配的常规算法是一步一步进行移位和比较操作,直至找到完全相匹配的字符串. 下面通过一个例子,为大家仔细说明KMP算法的使用和思路: 问题: 在字符串“DEA ...

  7. 算法 kmp算法

    kmp算法是改进后的字符匹配算法,它与bf算法的区别是,每次从串与主串匹配失败后,从串与主串匹配的位置不同. 下面具体说下这两种算法的区别: 主串:BABCDABABCDABCED 从串:ABCDAB ...

  8. BF算法 + KMP算法

    准备: 字符串比大小:比的就是字符串里每个字符的ASCII码的大小.(其实这样的比较没有多大的意义,我们关心的是字符串是否相等,即匹配等) 字符串的存储结构:同线性表(顺序存储+链式存储) 顺序存储结 ...

  9. 图解算法——KMP算法

    KMP算法 解决的是包,含问题. Str1中是否包含str2,如果包含,则返回子串开始位置.否则返回-1. 示例1: Str1:abcd123def Str2:123d 暴力法: 从str1的第一个字 ...

  10. 字符串匹配算法——KMP算法

    处理字符串的过程中,难免会遇到字符匹配的问题.常用的字符匹配方法 1. 朴素模式匹配算法(Brute-Force算法) 求子串位置的定位函数Index( S, T, pos). 模式匹配:子串的定位操 ...

随机推荐

  1. errno

    关于errno有以下需要注意: 1  A common mistake is to do if (somecall() == -1) {                printf("som ...

  2. centos6字符

    [root@back_zabbix_100 ~]# echo $LANGen_US.UTF-8[root@back_zabbix_100 ~]# cat /etc/sysconfig/i18n LAN ...

  3. Unity自动寻路Navmesh之高级

    隔离层自动生成寻路网格 (源码scene1.unity) 1.创建Plane实例P1,P2,两者之间出现一条鸿沟.直接控制角色位移是无法通过的. 2.打开Navigation窗口,分别选中P1,P2, ...

  4. nginx-nginx脚本

    #!/bin/bash #nx Startup script for the Nginx HTTP Server # it is v. version. # chkconfig: - # descri ...

  5. 多线程相关------临界区CriticalSection

    多线程一直是短板,整理相关知识方便查询 临界区(Critical Section) 临界区是一段供线程独占式访问的代码.在任意时刻,若有一个线程正在访问该代码段,如果其他所有试图访问的线程都将被挂起, ...

  6. WPF TextBox 搜索框 自定义

    更多资源:http://denghejun.github.io <Style x:Key="SearchTextBoxStyle" BasedOn="{x:Null ...

  7. Css 相关资源(本篇不定期更新)

    http://www.tuicool.com/articles/3eaINn---<终于搞懂了CSS实现三角形图标的原理>---☆☆☆☆☆.这篇讲的是css中的如何挤出一个三角形,这个讲的 ...

  8. F.I.S初探(前端工程化)

    云笔记:http://note.youdao.com/share/?id=7c4a2dcf118f0ad7bb52a36aaee46a7a&type=note   一.初识FIS 在做项目中遇 ...

  9. Redis 集群的合纵与连横

    之前一篇写了关于 Redis 的性能,这篇就写写我认为比性能更重要的扩展性方面的主题. 如果再给我一次回到好几年前的机会,对于使用 Redis 我一开始就要好好考虑将来的扩展问题.就像我们做数据库分库 ...

  10. TCP/UDP简易通信框架源码,支持轻松管理多个TCP服务端(客户端)、UDP客户端

    目录 说明 TCP/UDP通信主要结构 管理多个Socket的解决方案 框架中TCP部分的使用 框架中UDP部分的使用 框架源码结构 补充说明 源码地址 说明 之前有好几篇博客在讲TCP/UDP通信方 ...